Merge commit '3d8d22e' into merge2
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 97ed1ce..764afe7 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -59,6 +59,7 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.STATUS_BAR" />
+ <uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
@@ -103,6 +104,11 @@
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+ <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+ <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
+ <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL" />
+ <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
+
<!-- This tells the activity manager to not delay any of our activity
start requests, even if they happen immediately after the user
@@ -274,6 +280,18 @@
</intent-filter>
</activity>
+ <!-- Trampoline activity that handles the SIM_ACTIVATION_REQUEST intent. -->
+ <activity android:name="com.android.services.telephony.activation.SimActivationActivity"
+ android:permission="android.permission.PERFORM_SIM_ACTIVATION"
+ android:label="@string/phoneIconLabel"
+ android:theme="@android:style/Theme.NoDisplay"
+ android:excludeFromRecents="true">
+ <intent-filter>
+ <action android:name="android.intent.action.SIM_ACTIVATION_REQUEST" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
<!-- "Mobile network settings" screen, used on both
non-voice-capable tablets and regular phone devices. -->
<activity android:name="MobileNetworkSettings"
@@ -393,7 +411,7 @@
<activity android:name="com.android.phone.settings.fdn.GetPin2Screen"
android:label="@string/get_pin2"
- android:theme="@style/SettingsLight"
+ android:theme="@style/DialerSettingsLight"
android:windowSoftInputMode="stateVisible">
</activity>
@@ -432,7 +450,6 @@
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.MAIN" />
<action android:name="android.telecom.action.SHOW_CALL_SETTINGS" />
- <action android:name="com.android.phone.CallFeaturesSetting.ADD_VOICEMAIL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
@@ -445,6 +462,17 @@
</intent-filter>
</receiver>
+ <!-- "Accessibility" settings UI. Referenced by Dialer application. -->
+ <activity android:name="com.android.phone.settings.AccessibilitySettingsActivity"
+ android:label="@string/accessibility_settings_activity_title"
+ android:theme="@style/DialerSettingsLight">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.telecom.action.SHOW_CALL_ACCESSIBILITY_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
<!-- CDMA Emergency Callback Mode -->
<service android:name="EmergencyCallbackModeService">
</service>
@@ -547,6 +575,10 @@
<activity android:name="com.android.phone.settings.VoicemailSettingsActivity"
android:label="@string/voicemail"
android:theme="@style/DialerSettingsLight">
+ <intent-filter >
+ <!-- DO NOT RENAME. There are existing apps which use this string. -->
+ <action android:name="com.android.phone.CallFeaturesSetting.ADD_VOICEMAIL" />
+ </intent-filter>
</activity>
<!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
@@ -596,9 +628,9 @@
</intent-filter>
</receiver>
<service
- android:name="com.android.phone.vvm.omtp.OmtpVvmSyncService"
- android:exported="true"
- android:process=":sync">
+ android:name="com.android.phone.vvm.omtp.OmtpVvmSyncService"
+ android:exported="true"
+ android:process=":sync">
<intent-filter>
<action android:name="android.content.SyncAdapter"/>
</intent-filter>
@@ -607,12 +639,30 @@
</service>
<service
android:name="android.telecom.AuthenticatorService">
- <intent-filter>
- <action android:name="android.accounts.AccountAuthenticator"/>
- </intent-filter>
- <meta-data
- android:name="android.accounts.AccountAuthenticator"
- android:resource="@xml/authenticator" />
+ <intent-filter>
+ <action android:name="android.accounts.AccountAuthenticator"/>
+ </intent-filter>
+ <meta-data
+ android:name="android.accounts.AccountAuthenticator"
+ android:resource="@xml/authenticator" />
</service>
+ <receiver android:name="com.android.phone.vvm.omtp.SimChangeReceiver"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
+ <action android:name="android.intent.action.SIM_STATE_CHANGED" />
+ </intent-filter>
+ </receiver>
+ <receiver
+ android:name="com.android.phone.vvm.omtp.sync.FetchVoicemailReceiver"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.FETCH_VOICEMAIL" />
+ <data
+ android:scheme="content"
+ android:host="com.android.voicemail"
+ android:mimeType="vnd.android.cursor.item/voicemail" />
+ </intent-filter>
+ </receiver>
</application>
</manifest>
diff --git a/res/drawable-hdpi/ic_text_holo_dark.png b/res/drawable-hdpi/ic_text_holo_dark.png
deleted file mode 100644
index 6d21e42..0000000
--- a/res/drawable-hdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_text_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_text_holo_dark.png
deleted file mode 100644
index b99073e..0000000
--- a/res/drawable-ldrtl-hdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_text_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_text_holo_dark.png
deleted file mode 100644
index 4106c32..0000000
--- a/res/drawable-ldrtl-mdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_text_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_text_holo_dark.png
deleted file mode 100644
index 99e7e38..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_text_holo_dark.png b/res/drawable-mdpi/ic_text_holo_dark.png
deleted file mode 100644
index 80b95ee..0000000
--- a/res/drawable-mdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_text_holo_dark.png b/res/drawable-xhdpi/ic_text_holo_dark.png
deleted file mode 100644
index e80a042..0000000
--- a/res/drawable-xhdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/edit_fdn_contact_screen.xml b/res/layout/edit_fdn_contact_screen.xml
index 0a99152..24e0c6b 100644
--- a/res/layout/edit_fdn_contact_screen.xml
+++ b/res/layout/edit_fdn_contact_screen.xml
@@ -4,9 +4,9 @@
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.
@@ -14,78 +14,40 @@
limitations under the License.
-->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/pinc"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:orientation="vertical"
+ android:gravity="center">
- <!-- Keyboard Version -->
- <!-- Modified for greater consistency with the rest of settings. -->
- <LinearLayout android:id="@+id/pinc"
- android:orientation="vertical"
+ <EditText android:id="@+id/fdn_name"
+ android:hint="@string/name"
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:inputType="textPersonName"
+ android:imeOptions="actionNext"
+ android:singleLine="true"
+ android:scrollHorizontally="true"
+ android:autoText="false"
+ android:capitalize="words" />
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="15dip"
- android:paddingBottom="5dip">
+ <EditText android:id="@+id/fdn_number"
+ android:hint="@string/number"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inputType="phone"
+ android:imeOptions="actionDone"
+ android:singleLine="true"
+ android:scrollHorizontally="true"
+ android:autoText="false"
+ android:capitalize="none" />
- <TextView
- android:layout_width="100dip"
- android:layout_height="wrap_content"
- android:paddingStart="10dip"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/name" />
+ <Button android:id="@+id/button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/save" />
- <EditText android:id="@+id/fdn_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginEnd="10dip"
- android:inputType="textPersonName"
- android:imeOptions="actionNext"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:autoText="false"
- android:capitalize="words" />
-
- </LinearLayout>
-
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="5dip"
- android:paddingBottom="5dip">
-
- <TextView
- android:layout_width="100dip"
- android:layout_height="wrap_content"
- android:paddingStart="10dip"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/number" />
-
- <EditText android:id="@+id/fdn_number"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginEnd="10dip"
- android:inputType="phone"
- android:imeOptions="actionDone"
- android:singleLine="true"
- android:scrollHorizontally="true"
- android:autoText="false"
- android:capitalize="none" />
-
- </LinearLayout>
-
- <Button android:id="@+id/button"
- android:layout_marginTop="8dip"
- android:layout_marginStart="10dip"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/save" />
-
- </LinearLayout>
-
-</RelativeLayout>
+</LinearLayout>
diff --git a/res/layout/emergency_dialer.xml b/res/layout/emergency_dialer.xml
index 5c721c5..acb7033 100644
--- a/res/layout/emergency_dialer.xml
+++ b/res/layout/emergency_dialer.xml
@@ -16,10 +16,102 @@
<!-- Layout for the emergency dialer; see EmergencyDialer.java. -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/top"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <include layout="@layout/dialpad_view" />
+ android:id="@+id/top"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="bottom"
+ android:orientation="vertical">
+
+ <!-- FrameLayout -->
+ <com.android.phone.EmergencyActionGroup
+ android:id="@+id/emergency_action_group"
+ android:layout_height="64dp"
+ android:layout_width="match_parent"
+ android:layout_marginTop="16dp"
+ android:layout_marginBottom="24dp">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <Button android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:id="@+id/action1"
+ />
+ <Button android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:id="@+id/action2"
+ />
+ <Button android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:id="@+id/action3"
+ />
+ </LinearLayout>
+
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/selected_container"
+ android:visibility="invisible"
+ android:focusable="true"
+ android:clickable="true">
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:backgroundTint="#ffe53935"
+ android:focusable="false"
+ android:clickable="false"
+ style="?android:attr/buttonStyle"/>
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/ripple_view"
+ android:backgroundTint="#22000000"
+ android:visibility="invisible"
+ android:focusable="false"
+ android:clickable="false"
+ style="?android:attr/buttonStyle"/>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:focusable="false"
+ android:clickable="false"
+ android:backgroundTint="#00000000"
+ style="?android:attr/buttonStyle">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/selected_label"
+ android:textAppearance="?android:attr/textAppearanceButton" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/launch_hint"
+ android:text="@string/emergency_action_launch_hint"
+ android:textStyle="italic" />
+ </LinearLayout>
+
+ </FrameLayout>
+
+ </com.android.phone.EmergencyActionGroup>
+
+ <include layout="@layout/dialpad_view_unthemed"
+ android:theme="@style/Dialpad_Dark" />
+
+ </LinearLayout>
+
<FrameLayout
android:id="@+id/floating_action_button_container"
android:layout_width="@dimen/floating_action_button_width"
@@ -35,4 +127,5 @@
android:contentDescription="@string/description_dial_button"
android:src="@drawable/fab_ic_call"/>
</FrameLayout>
+
</FrameLayout>
diff --git a/res/layout/get_pin2_screen.xml b/res/layout/get_pin2_screen.xml
index 6268335..eecf736 100644
--- a/res/layout/get_pin2_screen.xml
+++ b/res/layout/get_pin2_screen.xml
@@ -4,9 +4,9 @@
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.
@@ -14,47 +14,29 @@
limitations under the License.
-->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/pinc"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:orientation="vertical"
+ android:gravity="center">
- <!-- Keyboard Version -->
- <!-- Modified for greater consistency with the rest of settings. -->
- <LinearLayout android:id="@+id/pinc"
- android:orientation="vertical"
+ <EditText android:id="@+id/pin"
+ android:hint="@string/enter_pin2_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="15dip"
- android:layout_marginStart="15dip">
+ android:maxLines="1"
+ android:scrollHorizontally="true"
+ android:autoText="false"
+ android:capitalize="none"
+ android:password="true"
+ android:imeOptions="actionDone" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingBottom="5dip"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:text="@string/enter_pin2_text" />
+ <Button android:id="@+id/ok"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@android:string/ok" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
- <EditText
- android:id="@+id/pin"
- android:layout_width="200dip"
- android:layout_height="wrap_content"
- android:maxLines="1"
- android:scrollHorizontally="true"
- android:autoText="false"
- android:capitalize="none"
- android:password="true"
- android:imeOptions="actionDone" />
-
- <Button
- android:id="@+id/ok"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@android:string/ok"/>
- </LinearLayout>
- </LinearLayout>
-
-</RelativeLayout>
+</LinearLayout>
diff --git a/res/layout/otacall_card.xml b/res/layout/otacall_card.xml
index 74b31e8..fea2077 100644
--- a/res/layout/otacall_card.xml
+++ b/res/layout/otacall_card.xml
@@ -115,7 +115,8 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="1dip"
- android:visibility="gone" >
+ android:visibility="gone"
+ android:theme="@style/Dialpad_Light">
<!-- Note there's no "dtmfDialerField" EditText here;
in the OTA UI there's no visible "digits" display
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 69d775a..5cc9fa2 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Foonrekeninge"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Voeg SIP-rekening by"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Stel rekeninginstellings op"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi-oproepe"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi-oproepe"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Moenie Wi-Fi vir oproepe gebruik nie"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Moenie belassistent gebruik nie"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Geen"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Stel op"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Ingeboude verbindingsdiens"</string>
<string name="voicemail" msgid="8693759337917898954">"Stemboodskap"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Stemboodskapdiens (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Netwerkoperateurs"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Nooduitsendings"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Verbind met datadienste tydens swerwing"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Verbind met datadienste tydens swerwing"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Jy het dataverbinding verloor omdat jy wegbeweeg het van jou tuisnetwerk af sonder om dataswerwing weer aan te skakel."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Laat datagebruik toe terwyl jy swerf? Daar kan beduidende kostes wees."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Dit kan baie duur wees."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Laat dataswerwing toe?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM//UMTS-opsies"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-opsies"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Datagebruik"</string>
@@ -354,6 +356,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Stel TTY-modus"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Outoherprobeer"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Aktiveer outoherprobeer-modus"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY-modusverandering word nie tydens \'n video-oproep toegelaat nie"</string>
<string name="menu_add" msgid="1882023737425114762">"Voeg kontak by"</string>
<string name="menu_edit" msgid="7143003705504672374">"Verander kontak"</string>
<string name="menu_delete" msgid="3977150783449642851">"Vee kontak uit"</string>
@@ -377,7 +380,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lees tans van SIM-kaart af…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Geen kontakte op jou SIM-kaart nie."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Kies kontakte om in te voer"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Skakel vliegtuigmodus af om kontakte in te voer vanaf die SIM-kaart."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Skakel vliegtuigmodus af om kontakte van die SIM-kaart af in te voer."</string>
<string name="enable_pin" msgid="5422767284133234860">"Aktiveer/deaktiveer SIM-PIN"</string>
<string name="change_pin" msgid="9174186126330785343">"Verander SIM-PIN"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -438,9 +441,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Lui af"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Bel terug"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Boodskap"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Om \'n oproep te maak, skakel eers vliegtuigmodus af."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Skakel vliegtuigmodus af om \'n oproep te maak."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Skakel vliegtuigmodus af of koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Nie geregistreer op netwerk nie."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Sellulêre netwerk nie beskikbaar nie."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Sellulêre netwerk is nie beskikbaar nie. Koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Voer \'n geldige nommer in om \'n oproep te maak."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Kan nie bel nie."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Begin MMI-volgorde…"</string>
@@ -451,6 +456,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Kan nie konferensie-oproepe doen nie."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan nie oproep verwerp nie."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan nie oproep(e) vrystel nie."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Noodoproep"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Skakel tans radio aan…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Geen sein nie. Probeer tans weer …"</string>
@@ -512,18 +518,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Noodterugbel-modus betree"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Noodterugbel-modus"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dataverbinding gedeaktiveer"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Geen dataverbinding vir <xliff:g id="COUNT">%s</xliff:g> minuut nie"</item>
- <item quantity="other" msgid="3122217344579273583">"Geen dataverbinding vir <xliff:g id="COUNT">%s</xliff:g> minute nie"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Die telefoon sal in Noodterugbel-modus wees vir <xliff:g id="COUNT">%s</xliff:g> minuut. Terwyl in hierdie modus kan geen programme wat \'n dataverbinding nodig het, gebruik word nie. Wil jy nou uitgaan?"</item>
- <item quantity="other" msgid="8617116564023933114">"Die telefoon sal in Noodterugbel-modus wees vir <xliff:g id="COUNT">%s</xliff:g> minute. Terwyl in hierdie modus kan geen programme wat \'n dataverbinding nodig het, gebruik word nie. Wil jy nou uitgaan?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Die geselekteerde aksie is nie beskikbaar terwyl in die Noodterugbelmodus is nie. Die foon sal in hierdie modus vir <xliff:g id="COUNT">%s</xliff:g> minuut wees. Wil jy nou uitgaan?"</item>
- <item quantity="other" msgid="6115622137771382224">"Die geselekteerde aksie is nie beskikbaar terwyl in die Noodterugbelmodus is nie. Die foon sal in hierdie modus vir <xliff:g id="COUNT">%s</xliff:g> minuut wees. Wil jy nou uitgaan?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Geen dataverbinding vir <xliff:g id="COUNT_1">%s</xliff:g> minute nie</item>
+ <item quantity="one">Geen dataverbinding vir <xliff:g id="COUNT_0">%s</xliff:g> minuut nie</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Die foon sal <xliff:g id="COUNT_1">%s</xliff:g> minute lank in noodterugbelmodus wees. Terwyl dit in hierdie modus is, kan geen programme gebruik word wat \'n dataverbinding gebruik nie. Wil jy nou uitgaan?</item>
+ <item quantity="one">Die foon sal <xliff:g id="COUNT_0">%s</xliff:g> minuut lank in noodterugbelmodus wees. Terwyl dit in hierdie modus is, kan geen programme gebruik word wat \'n dataverbinding gebruik nie. Wil jy nou uitgaan?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Die gekose handeling is nie beskikbaar terwyl die foon in die noodterugbelmodus is nie. Die foon sal <xliff:g id="COUNT_1">%s</xliff:g> minute lank in hierdie modus wees. Wil jy nou uitgaan?</item>
+ <item quantity="one">Die gekose handeling is nie beskikbaar terwyl die foon in die noodterugbelmodus is nie. Die foon sal <xliff:g id="COUNT_0">%s</xliff:g> minuut lank in hierdie modus wees. Wil jy nou uitgaan?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Die gekose handeling is nie beskikbaar tydens \'n noodoproep nie."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Verlaat noodterugbel-modus"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ja"</string>
@@ -552,4 +558,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Noodoproepe"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Net noodoproepe"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-kaart, gleuf: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Toeganklikheid"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Inkomende Wi-Fi-oproep"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-oproep"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Raak weer om oop te maak"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Kon nie die boodskap dekodeer nie."</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 77fe6a7..27f8d8c 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -48,7 +48,7 @@
<string name="puk_unlocked" msgid="2284912838477558454">"የSIM ካርድዎ አልታገደም። ስልክዎ በመከፈት ላይነው..."</string>
<string name="label_ndp" msgid="780479633159517250">"የSIM አውታረመረብ መክፈቻ ፒን"</string>
<string name="sim_ndp_unlock_text" msgid="683628237760543009">"ክፈት"</string>
- <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"አጥፋ"</string>
+ <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"አሰናብት"</string>
<string name="requesting_unlock" msgid="6412629401033249351">"አውታረመረብ ለማስከፈት በመጠየቅ ላይ..."</string>
<string name="unlock_failed" msgid="6490531697031504225">"የአውታረ መረብ ክፈትጥየቃአል ተሳካም።"</string>
<string name="unlock_success" msgid="6770085622238180152">"የአውታረ መረብክፈት ተሳክቷል።"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"የስልክ መለያዎች"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"የSIP መለያ ያክሉ"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"የመለያ ቅንብሮችን ይውቀሩ"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"የWi-Fi ጥሪ"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"የWi-Fi ጥሪ ማድረጊያ"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"የWi-Fi መደወያን አትጠቀም"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"የጥሪ ረዳትን አትጠቀም"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ምንም"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"አዋቅር"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"አብሮ የተገነባ የግንኙነት አገልግሎት"</string>
<string name="voicemail" msgid="8693759337917898954">"የድምፅ መልዕክት"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"የድምጽ መልዕክት (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"የአውታረ መረብ ትእምርተ ከዋኝ"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"የአስቸኳይ አደጋ ስርጭቶች"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"በእንቅስቃሴ ላይ ሲሆን ወደ ውሂብ አገልግሎቶች ተያያዝ"</string>
<string name="roaming_disable" msgid="1843417228755568110">"በእንቅስቃሴ ላይ ሲሆን ወደ ውሂብ አገልግሎቶች ተያያዝ"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"የውሂብ ተያያዥነት የጠፋበት ምክንያት የቤትህን አውታረ መረብ እንቅስቃሴ ውሂብ በማጥፋትህ ነው።"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"ከአገልግሎት መስጫ ክልል ውጭ ሲኮን የውሂብ አጠቃቀም ክፍያ ይፈቀድ? ቀላል የማይባል የክፍያ ጥያቄ ሊያስከትል ይችላል።"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"ከፍተኛ ክፍያዎችን ሊያስከትልብዎት ይችላል።"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"የውሂብ ዝውውር ፍቀድ?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS አማራጮች"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA አማራጮች"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"የውሂብ አጠቃቀም"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY ሁነት አዘጋጅ"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ራስ ዳግም ሞክር"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"ራስ ድጋሚ አስጀምር ሁናቴ አስችል"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"የTTY ሁነታ ለውጥ በቪዲዮ ጥሪ ጊዜ አይፈቀድም"</string>
<string name="menu_add" msgid="1882023737425114762">"እውቅያዎች አክል"</string>
<string name="menu_edit" msgid="7143003705504672374">"እውቅያ አርትዕ"</string>
<string name="menu_delete" msgid="3977150783449642851">"እውቅያ ሰርዝ"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"ከSIM ካርድ ላይ በማንበብ ላይ..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"በ SIM ካርድዎ ላይ ዕውቂያዎች የሉም።"</string>
<string name="simContacts_title" msgid="1861472842524839921">"ለማስገባት ዕውቂያዎች ምረጥ"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ከሲም ካርድ ላይ ዕውቂያዎችን ለማስመጣት፣ የአይሮፕላን ሁኔታን መጀመሪያ አጥፋ፡፡"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"ከሲም ካርድ ላይ እውቂያዎችን ለማስመጣት የአውሮፕላን ሁኔታን ያጥፉ።"</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM ፒን አንቃ/አቦዝን"</string>
<string name="change_pin" msgid="9174186126330785343">"የSIM ፒን ለውጥ"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM ፒን :"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"ዝጋ"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"መልሰህ ደውል"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"መልዕክት"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ለመደወል፣ መጀመሪያየአውሮፕላኑን ሁነታ አጥፋ።"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ጥሪ ለማድረግ የአውሮፕላን ሁነታን ያጥፉ።"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ጥሪ ለማድረግ የአውሮፕላን ሁኔታን ያጥፉ ወይም ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"በአውታረ መረቡ ላይ አልተመዘገበም።"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም። ጥሪ ለማድረግ ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"አንድ ጥሪ ለማድረግ የሚሰራ ቁጥር ያስገቡ።"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"መደወል አልተቻለም።"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"የMMI sequence…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ለስብሰባ ጥሪዎች አልተቻለም።"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ጥሪውን መዝጋት አልተቻለም።"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ጥሪ(ዎች)ን መልቀቅ አልተቻለም።"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ጥሪ ለማድረግ ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"የአደጋ ጊዜ ጥሪ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ሬዲዮ ክፈት"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ምንም አገልግሎት የለም። ዳግም በመሞከር ላይ…"</string>
@@ -508,23 +514,23 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"የአደጋጊዜ ተዘዋዋሪ ጥሪ ሁነታ ገብቷል"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"የአደጋጊዜ ተዘዋዋሪጥሪ ሁነታ"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"የውሂብ ተያያዥነት አልነቃም"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">" ለ<xliff:g id="COUNT">%s</xliff:g> ደቂቃ ምንም የውሂብ ተያያዥነት የለም"</item>
- <item quantity="other" msgid="3122217344579273583">"ለ <xliff:g id="COUNT">%s</xliff:g> ደቂቃ ምንም የውሂብ ተያያዥነት የለም"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ለ<xliff:g id="COUNT">%s</xliff:g> ደቂቃ ስልኩ በየአደጋ ጥሪ ሁናቴ ውስጥ ይሆናል። በዚህ ሁናቴ ውስጥ ምንም መተግበሪያዎች የውሂብ ግንኙነት በመጠቀም መጠቀም አይቻልም። አሁን መውጣት ይፈልጋሉ?"</item>
- <item quantity="other" msgid="8617116564023933114">"ለ<xliff:g id="COUNT">%s</xliff:g>ደቂቃዎች ስልኩ በየአደጋ ጥሪ ሁናቴ ውስጥ ይሆናል። በዚህ ሁናቴ ውስጥ ምንም መተግበሪያዎች የውሂብ ግንኙነት በመጠቀም መጠቀም አይቻልም። አሁን መውጣት ይፈልጋሉ?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"የአደጋ ጥሪ ሁናቴ በሚሆንበት ጊዜ የተመረጠው እርምጃ አይገኝም። ስልኩ ለ<xliff:g id="COUNT">%s</xliff:g> ደቂቃ በዚህ ሁናቴ ውስጥ ይሆናል። አሁን መውጣት ይፈልጋሉ?"</item>
- <item quantity="other" msgid="6115622137771382224">"የአደጋ ጥሪ ሁናቴ በሚሆንበት ጊዜ የተመረጠው እርምጃ አይገኝም። ስልኩ ለ<xliff:g id="COUNT">%s</xliff:g> ደቂቃዎች በዚህ ሁናቴ ውስጥ ይሆናል። አሁን መውጣት ይፈልጋሉ?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ምንም የውሂብ ተያያዥነት የለም</item>
+ <item quantity="other">ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ምንም የውሂብ ተያያዥነት የለም</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">ስልኩ በድንገተኛ ጥሪ መልሶ መደወያ ሁነታ ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ይቆያል። በዚህ ሁነታ ላይ በሚሆንበት ጊዜ የውሂብ ግንኙነትን የሚጠቀሙ ማናቸውም መተግበሪያዎች ጥቅም ላይ ሊውሉ አይችሉም። አሁን መውጣት ይፈልጋሉ?</item>
+ <item quantity="other">ስልኩ በድንገተኛ ጥሪ መልሶ መደወያ ሁነታ ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ይቆያል። በዚህ ሁነታ ላይ በሚሆንበት ጊዜ የውሂብ ግንኙነትን የሚጠቀሙ ማናቸውም መተግበሪያዎች ጥቅም ላይ ሊውሉ አይችሉም። አሁን መውጣት ይፈልጋሉ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">የተመረጠው እርምጃ በአደጋ ጥሪ መልሶ መደወያ ሁነታ ላይ ባለበት ጊዜ ሊገኝ አይችልም። ስልኩ በድንገተኛ ጥሪ መልሶ መደወያ ሁነታ ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ይቆያል። አሁን መውጣት ይፈልጋሉ?</item>
+ <item quantity="other">የተመረጠው እርምጃ በአደጋ ጥሪ መልሶ መደወያ ሁነታ ላይ ባለበት ጊዜ ሊገኝ አይችልም። ስልኩ በድንገተኛ ጥሪ መልሶ መደወያ ሁነታ ለ<xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ይቆያል። አሁን መውጣት ይፈልጋሉ?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"የተመረጠው እርምጃ በአደጋ ጥሪ ጊዜ ለክንውን ሊገኝ አይችልም።"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"የአደጋ ጊዜ ተዘዋዋሪ ጥሪ ሁኔታ ወጥቷል"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"አዎ"</string>
<string name="alert_dialog_no" msgid="1476091437797628703">"አይ"</string>
- <string name="alert_dialog_dismiss" msgid="2491494287075907171">"እንቢበል"</string>
+ <string name="alert_dialog_dismiss" msgid="2491494287075907171">"አሰናብት"</string>
<string name="voicemail_provider" msgid="5135942703327136909">"አገልግሎት"</string>
<string name="voicemail_settings" msgid="72448049107749316">"አዋቅር"</string>
<string name="voicemail_number_not_set" msgid="6724904736891087856">"<አልተዘጋጀም >"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"የአደጋ ጥሪዎች"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"የአደጋ ጥሪዎችን ብቻ ለማድረግ"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM ካርድ፣ ማስገቢያ ቀዳዳ፦ <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ተደራሽነት"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ገቢ የWi-Fi ጥሪ"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"የWi-Fi ጥሪ"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ለመክፈት ዳግም ይንኩ"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"መልዕክቱን በማመሳጠር ላይ ስህተት ነበር።"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 0317c65..0b7f9a3 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -43,9 +43,9 @@
<string name="pause_prompt_no" msgid="6686238803236884877">"لا"</string>
<string name="wild_prompt_str" msgid="5543521676355533577">"استبدال حرف البدل بـ"</string>
<string name="no_vm_number" msgid="4164780423805688336">"رقم البريد الصوتي مفقود"</string>
- <string name="no_vm_number_msg" msgid="1300729501030053828">"لم يتم تخزين رقم بريد صوتي على بطاقة SIM."</string>
+ <string name="no_vm_number_msg" msgid="1300729501030053828">"لم يتم تخزين رقم بريد صوتي على شريحة SIM."</string>
<string name="add_vm_number_str" msgid="4676479471644687453">"إضافة رقم"</string>
- <string name="puk_unlocked" msgid="2284912838477558454">"تم إلغاء حظر بطاقة SIM. جارٍ إلغاء تأمين الهاتف..."</string>
+ <string name="puk_unlocked" msgid="2284912838477558454">"تم إلغاء حظر شريحة SIM. جارٍ إلغاء تأمين الهاتف..."</string>
<string name="label_ndp" msgid="780479633159517250">"رمز PIN لإلغاء تأمين شبكة SIM"</string>
<string name="sim_ndp_unlock_text" msgid="683628237760543009">"إلغاء تأمين"</string>
<string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"استبعاد"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"حسابات الهاتف"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"إضافة حساب SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"تهيئة إعدادات الحساب"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"الاتصال عبر Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"الاتصال عبر Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"عدم استخدام الاتصال عبر Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"عدم استخدام مساعد الاتصال"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"بدون"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"تهيئة"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"خدمة اتصال مدمجة"</string>
<string name="voicemail" msgid="8693759337917898954">"البريد الصوتي"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"البريد الصوتي (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"مشغلو الشبكة"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"عمليات البث في حالات الطوارئ"</string>
@@ -106,17 +107,17 @@
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"الرقم غير متاح"</string>
<string name="sum_cfu_disabled" msgid="8384177689501334080">"تم الإيقاف"</string>
<string name="labelCFB" msgid="6139853033106283172">"عند الانشغال"</string>
- <string name="messageCFB" msgid="3711089705936187129">"الرقم عندما يكون مشغولاً"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"الرقم عند الانشغال"</string>
<string name="sum_cfb_enabled" msgid="5984198104833116690">"إعادة التوجيه إلى <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"تم الإيقاف"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"لا يتيح مشغل شبكة الجوال تعطيل اعادة توجيه المكالمة عندما يكون هاتفك مشغولاً."</string>
<string name="labelCFNRy" msgid="1736067178393744351">"عند عدم الرد"</string>
- <string name="messageCFNRy" msgid="672317899884380374">"الرقم عندما لا يتم الرد"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"الرقم عند عدم الرد"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"إعادة التوجيه إلى <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"تم الإيقاف"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"لا يتيح مشغل شبكة الجوال تعطيل اعادة توجيه المكالمة عند عدم رد هاتفك."</string>
- <string name="labelCFNRc" msgid="2614827454402079766">"عندما لا يمكن الوصول"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"الرقم عندما لا يمكن الوصول"</string>
+ <string name="labelCFNRc" msgid="2614827454402079766">"عند عدم الوصول"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"الرقم عند عدم الوصول"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"إعادة التوجيه إلى <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"معطّل"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"لا يتيح مشغل شبكة الجوال تعطيل اعادة توجيه المكالمة عند عدم التمكن من الوصول إلى هاتفك."</string>
@@ -128,7 +129,7 @@
<string name="updating_settings" msgid="8171225533884883252">"جارٍ تحديث الإعدادات..."</string>
<string name="reverting_settings" msgid="4752151682666912828">"جارٍ إعادة الإعدادات..."</string>
<string name="response_error" msgid="6674110501330139405">"رد غير متوقع من الشبكة."</string>
- <string name="exception_error" msgid="7027667130619518211">"خطأ في الشبكة أو في بطاقة SIM"</string>
+ <string name="exception_error" msgid="7027667130619518211">"خطأ في الشبكة أو في شريحة SIM"</string>
<string name="fdn_check_failure" msgid="18200614306525434">"تم تشغيل إعداد أرقام الاتصال الثابتة بالتطبيق المثبت على هاتفك. ونتيجة لذلك، لن تعمل بعض الميزات المرتبطة بالمكالمات."</string>
<string name="radio_off_error" msgid="2304459933248513376">"شغّل اللاسلكي قبل عرض هذه الإعدادات."</string>
<string name="close_dialog" msgid="2365884406356986917">"موافق"</string>
@@ -154,7 +155,7 @@
<string name="search_networks" msgid="1601136049300882441">"بحث في الشبكات"</string>
<string name="network_query_error" msgid="6828516148953325006">"حدث خطأ أثناء البحث عن شبكات."</string>
<string name="register_on_network" msgid="9055203954040805084">"جارٍ التسجيل على <xliff:g id="NETWORK">%s</xliff:g>..."</string>
- <string name="not_allowed" msgid="5613353860205691579">"لا تسمح بطاقة SIM بالاتصال بهذه الشبكة."</string>
+ <string name="not_allowed" msgid="5613353860205691579">"لا تسمح شريحة SIM بالاتصال بهذه الشبكة."</string>
<string name="connect_later" msgid="2308119155752343975">"يتعذر الاتصال بهذه الشبكة في الوقت الحالي. حاول مرة أخرى لاحقًا."</string>
<string name="registration_done" msgid="495135664535876612">"مسجل على الشبكة."</string>
<string name="sum_carrier_select" msgid="3494252551249882718">"اختر مشغل شبكة جوال"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"اتصال بخدمات البيانات عند التجوال"</string>
<string name="roaming_disable" msgid="1843417228755568110">"اتصال بخدمات البيانات عند التجوال"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"لقد فقدت اتصال البيانات نظرًا لأنك أوقفت تشغيل تجوال البيانات بشبكتك الرئيسية."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"هل تريد السماح باستخدام البيانات أثناء التجوال؟ قد يتم تطبيق رسوم كبيرة."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"قد يكلف ذلك رسومًا مرتفعة."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"السماح بتجوال البيانات؟"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"خيارات نظام GSM/النظام العالمي لاتصالات الجوال عن بعد (UMTS)"</string>
<string name="cdma_options" msgid="4016822858172249884">"خيارات CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"استخدام البيانات"</string>
@@ -338,7 +340,7 @@
<string name="fdn_disabled" msgid="4700049736675368279">"تم تعطيل أرقام الاتصال الثابتة"</string>
<string name="enable_fdn" msgid="3740191529180493851">"تمكين FDN"</string>
<string name="disable_fdn" msgid="7944020890722540616">"تعطيل FDN"</string>
- <string name="change_pin2" msgid="2153563695382176676">"تغيير رمز PIN PIN2"</string>
+ <string name="change_pin2" msgid="2153563695382176676">"تغيير PIN2"</string>
<string name="enable_fdn_ok" msgid="7215588870329688132">"تعطيل FDN"</string>
<string name="disable_fdn_ok" msgid="5727046928930740173">"تمكين FDN"</string>
<string name="sum_fdn" msgid="1959399454900272878">"إدارة أرقام الاتصال الثابتة"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"تعيين وضع TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"إعادة المحاولة تلقائيًا"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"تمكين وضع إعادة المحاولة التلقائي"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"لا يُسمح بتغيير وضع TTY أثناء مكالمة فيديو"</string>
<string name="menu_add" msgid="1882023737425114762">"إضافة جهة اتصال"</string>
<string name="menu_edit" msgid="7143003705504672374">"تعديل جهة الاتصال"</string>
<string name="menu_delete" msgid="3977150783449642851">"حذف جهة الاتصال"</string>
@@ -370,10 +373,10 @@
<string name="fdn_invalid_number" msgid="1494755047900009147">"لم يتم تحديث FDN لأن العدد لا يمكن أن يتجاوز 20 رقمًا."</string>
<string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"لم يتم تحديث FDN. رقم PIN2 غير صحيح، أو تم رفض رقم الهاتف."</string>
<string name="fdn_failed" msgid="540018079008319747">"أخفقت عملية FDN!"</string>
- <string name="simContacts_emptyLoading" msgid="2203331234764498011">"جارٍ القراءة من بطاقة SIM..."</string>
- <string name="simContacts_empty" msgid="5270660846489561932">"ليس هناك جهات اتصال على بطاقة SIM."</string>
+ <string name="simContacts_emptyLoading" msgid="2203331234764498011">"جارٍ القراءة من شريحة SIM..."</string>
+ <string name="simContacts_empty" msgid="5270660846489561932">"ليس هناك جهات اتصال على شريحة SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"حدد جهات اتصال لاستيرادها"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"لاستيراد جهات اتصال من بطاقة SIM، الرجاء إيقاف وضع الطائرة أولاً."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"عليك إيقاف وضع الطائرة لاستيراد جهات الاتصال من شريحة SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"تمكين/تعطيل رمز PIN لبطاقة SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"تغيير رمز PIN لبطاقة SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"رمز PIN لبطاقة SIM:"</string>
@@ -392,7 +395,7 @@
<string name="pin_changed" msgid="4455736268023261662">"تم تحديث رقم التعريف الشخصي"</string>
<string name="puk_requested" msgid="5921393215789090200">"كلمة المرور غير صحيحة. تم قفل رقم التعريف الشخصي الآن. رمز PUK مطلوب."</string>
<string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
- <string name="oldPin2Label" msgid="8559146795026261502">"رمز PIN PIN2 القديم"</string>
+ <string name="oldPin2Label" msgid="8559146795026261502">"PIN2القديم"</string>
<string name="newPin2Label" msgid="4573956902204349054">"رقم تعريف شخصي PIN2 جديد"</string>
<string name="confirmPin2Label" msgid="8100319484454787708">"تأكيد رمز PIN PIN2 الجديد"</string>
<string name="badPuk2" msgid="7910064009531541708">"رمز PUK2 غير صحيح. أعد المحاولة."</string>
@@ -403,7 +406,7 @@
<string name="pin2_changed" msgid="3724522579945610956">"تم تحديث رمز PIN2"</string>
<string name="label_puk2_code" msgid="4688069961795341948">"أدخل رمز PUK2"</string>
<string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"كلمة المرور غير صحيحة. أصبح PIN2 محظور الآن. لإعادة المحاولة، عليك تغيير PIN2."</string>
- <string name="puk2_requested" msgid="5831015200030161434">"كلمة المرور غير صحيحة. تم قفل بطاقة SIM الآن. أدخل رمز PUK2."</string>
+ <string name="puk2_requested" msgid="5831015200030161434">"كلمة المرور غير صحيحة. تم قفل شريحة SIM الآن. أدخل رمز PUK2."</string>
<string name="puk2_blocked" msgid="3150263853077280049">"تم حظر PUK2 بشكل دائم."</string>
<string name="pin2_attempts" msgid="720736232885011507">\n"يتبقى لديك <xliff:g id="NUMBER">%d</xliff:g> من المحاولات."</string>
<string name="pin2_unblocked" msgid="7791600368153469078">"لم يعد رمز PIN2 محظورًا"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"قطع الاتصال"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"معاودة الاتصال"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"رسالة"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"لإجراء مكالمة، أوقف تشغيل وضع الطائرة أولاً."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"عليك إيقاف وضع الطائرة لإجراء مكالمة."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"عليك إيقاف وضع الطائرة أو الاتصال بشبكة لاسلكية لإجراء مكالمة."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"غير مسجل على الشبكة."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"شبكة الجوّال غير متاحة."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"شبكة الجوّال ليست متوفرة. اتصل بشبكة لاسلكية لإجراء مكالمة."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"لإجراء مكالمة، أدخل رقمًا صالحًا."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"يتعذر الاتصال."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"جارٍ بدء تسلسل MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"يتعذر إجراء مكالمات جماعية."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"يتعذر رفض المكالمة."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"يتعذر تحرير المكالمات."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"اتصل بشبكة لاسلكية لإجراء مكالمة."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"مكالمة الطوارئ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"جارٍ تشغيل اللاسلكي..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"لا تتوفر خدمة. جارٍ إعادة المحاولة…"</string>
@@ -466,7 +472,7 @@
<string name="onscreenVideoCallText" msgid="4800924186056115442">"مكالمة فيديو"</string>
<string name="importSimEntry" msgid="6614358325359736031">"استيراد"</string>
<string name="importAllSimEntries" msgid="1503181169636198673">"استيراد الكل"</string>
- <string name="importingSimContacts" msgid="7374056215462575769">"استيراد جهات اتصال بطاقة SIM"</string>
+ <string name="importingSimContacts" msgid="7374056215462575769">"استيراد جهات اتصال شريحة SIM"</string>
<string name="importToFDNfromContacts" msgid="2130620207013368580">"استيراد من جهات الاتصال"</string>
<string name="hac_mode_title" msgid="8740268574688743289">"أدوات السمع المساعدة"</string>
<string name="hac_mode_summary" msgid="6833851160514929341">"تشغيل التوافق مع أداة السمع"</string>
@@ -508,18 +514,30 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"تم الدخول إلى وضع هاتف معاودة الاتصال بالطوارئ"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"وضع هاتف معاودة الاتصال بالطوارئ"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"تم تعطيل اتصال البيانات"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"لا اتصال بيانات لمدة <xliff:g id="COUNT">%s</xliff:g> دقيقة"</item>
- <item quantity="other" msgid="3122217344579273583">"لا اتصال بيانات لمدة <xliff:g id="COUNT">%s</xliff:g> دقيقة"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"سيكون الهاتف في وضع معاودة الاتصال بالطوارئ لمدة <xliff:g id="COUNT">%s</xliff:g> دقائق. لا يمكن استخدام تطبيقات أثناء استخدام هذا الوضع. هل تريد الخروج الآن؟"</item>
- <item quantity="other" msgid="8617116564023933114">"سيكون الهاتف في وضع معاودة الاتصال بالطوارئ لمدة <xliff:g id="COUNT">%s</xliff:g> دقائق. لا يمكن استخدام تطبيقات تستخدم اتصال البيانات أثناء استخدام هذا الوضع. هل تريد الخروج الآن؟"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"الإجراء المحدد ليس متاحًا أثناء استخدام وضع معاودة الاتصال بالطوارئ. سيظل الهاتف في هذا الوضع لمدة <xliff:g id="COUNT">%s</xliff:g> دقائق. هل تريد الخروج الآن؟"</item>
- <item quantity="other" msgid="6115622137771382224">"الإجراء المحدد ليس متاحًا أثناء استخدام وضع معاودة الاتصال بالطوارئ. سيظل الهاتف في هذا الوضع لمدة <xliff:g id="COUNT">%s</xliff:g> دقائق. هل تريد الخروج الآن؟"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="zero">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق</item>
+ <item quantity="two">لن يتوفر اتصال بالبيانات لمدة دقيقتين (<xliff:g id="COUNT_1">%s</xliff:g>)</item>
+ <item quantity="few">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقائق</item>
+ <item quantity="many">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقيقة</item>
+ <item quantity="other">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق</item>
+ <item quantity="one">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_0">%s</xliff:g> دقيقة</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="zero">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق. وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
+ <item quantity="two">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة دقيقتين (<xliff:g id="COUNT_1">%s</xliff:g>). وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
+ <item quantity="few">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقائق. وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
+ <item quantity="many">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقيقة. وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
+ <item quantity="other">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق. وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
+ <item quantity="one">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة <xliff:g id="COUNT_0">%s</xliff:g> دقيقة. وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="zero">الإجراء المحدد ليس متاحًا أثناء تشغيل وضع الرد على مكالمة الطوارئ. وسيكون الهاتف في هذا الوضع لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق. هل تريد الخروج الآن؟</item>
+ <item quantity="two">الإجراء المحدد ليس متاحًا أثناء تشغيل وضع الرد على مكالمة الطوارئ. وسيكون الهاتف في هذا الوضع لمدة دقيقتين (<xliff:g id="COUNT_1">%s</xliff:g>). هل تريد الخروج الآن؟</item>
+ <item quantity="few">الإجراء المحدد ليس متاحًا أثناء تشغيل وضع الرد على مكالمة الطوارئ. وسيكون الهاتف في هذا الوضع لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقائق. هل تريد الخروج الآن؟</item>
+ <item quantity="many">الإجراء المحدد ليس متاحًا أثناء تشغيل وضع الرد على مكالمة الطوارئ. وسيكون الهاتف في هذا الوضع لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقيقة. هل تريد الخروج الآن؟</item>
+ <item quantity="other">الإجراء المحدد ليس متاحًا أثناء تشغيل وضع الرد على مكالمة الطوارئ. وسيكون الهاتف في هذا الوضع لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق. هل تريد الخروج الآن؟</item>
+ <item quantity="one">الإجراء المحدد ليس متاحًا أثناء تشغيل وضع الرد على مكالمة الطوارئ. وسيكون الهاتف في هذا الوضع لمدة <xliff:g id="COUNT_0">%s</xliff:g> دقيقة. هل تريد الخروج الآن؟</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"الإجراء المحدد ليس متاحًا أثناء إجراء اتصال بالطوارئ."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"الخروج من وضع معاودة الاتصال بالطوارئ"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"نعم"</string>
@@ -547,5 +565,10 @@
<string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"إغلاق"</string>
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"مكالمات الطوارئ"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"مكالمات الطوارئ فقط"</string>
- <string name="sim_description_default" msgid="4778679519938775515">"بطاقة SIM، المنفذ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="sim_description_default" msgid="4778679519938775515">"شريحة SIM، المنفذ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"إمكانية الوصول"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"مكالمة واردة عبر Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"مكالمة عبر Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"المس مرة أخرى للفتح"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"حدث خطأ أثناء فك ترميز الرسالة."</string>
</resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 015a27d..1b146b9 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -547,7 +547,6 @@
<string name="domain_address_title" msgid="9071787581316160480">"Server"</string>
<string name="username_title" msgid="2479375923477682328">"İstifadəçi adı"</string>
<string name="password_title" msgid="3323555249068171531">"Parol"</string>
- <string name="display_name_title" msgid="2459768196312249937">"Ad göstərin"</string>
<string name="proxy_address_title" msgid="4828301345351614273">"Gedən proksi ünvan"</string>
<string name="port_title" msgid="5952939408078626657">"Port nömrəsi"</string>
<string name="transport_title" msgid="8253139511847746640">"Nəqliyyat növü"</string>
@@ -572,34 +571,13 @@
<string name="sip_system_decide" msgid="368030746310423471">"Avtomatik"</string>
<string name="sip_always_send_keepalive" msgid="8192080724632877132">"Həmişə göndərin"</string>
<string name="not_voice_capable" msgid="2739898841461577811">"Səsli zəng dəstəklənmir"</string>
- <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"İndi danışmaq olmur. Nə olub?"</string>
- <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Özüm zəng edəcəm."</string>
- <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Özüm sonra zəng edəcəm."</string>
- <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"İndi danışa bilmirəm. Sonra zəng edin."</string>
<string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Özünüzünkünü yazın"</string>
<string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Tez cavablar"</string>
- <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Tez cavablara düzəliş edin"</string>
- <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
- <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"Tez cavab"</string>
<!-- no translation found for respond_via_sms_menu_reset_default_activity (4029277930090150223) -->
<skip />
<string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"Mesaj <xliff:g id="PHONE_NUMBER">%s</xliff:g> nömrəsinə göndərildi."</string>
- <string name="description_image_button_one" msgid="5502718871331943463">"bir"</string>
- <string name="description_image_button_two" msgid="4903738528222924522">"iki"</string>
- <string name="description_image_button_three" msgid="5570985408463782329">"üç"</string>
- <string name="description_image_button_four" msgid="1697520001239289074">"dörd"</string>
- <string name="description_image_button_five" msgid="3450276493026943454">"beş"</string>
- <string name="description_image_button_six" msgid="2070376172268675300">"altı"</string>
- <string name="description_image_button_seven" msgid="1757351311199993371">"yeddi"</string>
- <string name="description_image_button_eight" msgid="4734693919020613227">"səkkiz"</string>
- <string name="description_image_button_nine" msgid="5568534122590597040">"doqquz"</string>
- <string name="description_image_button_star" msgid="1976280813017254462">"ulduz"</string>
- <string name="description_image_button_zero" msgid="4211255756866893605">"sıfır"</string>
- <string name="description_image_button_pound" msgid="1716041284529917866">"funt"</string>
<string name="description_dial_button" msgid="7459705245418435351">"Yığ"</string>
<string name="description_delete_button" msgid="4015842181592283903">"geri düyməsi"</string>
- <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"Spikerfon aktivdir."</string>
- <string name="accessibility_call_muted" msgid="2776111226185342220">"Səssiz zəng edin."</string>
<string name="description_target_answer" msgid="7205604197797472471">"Cavab"</string>
<string name="description_target_send_sms" msgid="2098326025587950144">"SMS göndər"</string>
<string name="description_target_decline" msgid="4789834364389731957">"Rədd et"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 1d66c03..15a893b 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Профили за телефонни услуги"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Добавяне на профил за SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Конфигуриране на настройките на профила"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Обаждания през Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Обаждания през Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Без използване на услуга за обаждане през Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Без използване на помощник за обаждания"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Без"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Конфигуриране"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Вградена услуга за свързване"</string>
<string name="voicemail" msgid="8693759337917898954">"Гласова поща"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Гласова поща (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Мрежови оператори"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Спешни излъчвания"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Свързване с услуги за данни при роуминг"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Свързване с услуги за данни при роуминг"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Изгубихте връзката за данни, защото сте излезли от домашната си мрежа при изключен роуминг."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Да се разреши ли преносът на данни при роуминг? Може да бъдат начислени високи такси."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Това може да доведе до високи такси."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Да се разреши ли роуминг на данни?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Опции за GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Опции на CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Използване на данни"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Задаване на режим TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Автоматичен нов опит"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Активиране на режим „Автоматичен нов опит“"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Промяната на режима на TTY не е разрешена по време на видеообаждане"</string>
<string name="menu_add" msgid="1882023737425114762">"Добавяне на контакт"</string>
<string name="menu_edit" msgid="7143003705504672374">"Редактиране на контакт"</string>
<string name="menu_delete" msgid="3977150783449642851">"Изтриване на контакта"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Извършва се четене на данни от SIM картата…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Няма контакти в SIM картата ви."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Избиране на контакти за импортиране"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"За да импортирате контакти от SIM картата, първо изключете самолетния режим."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Изключете самолетния режим, за да импортирате контактите от SIM картата."</string>
<string name="enable_pin" msgid="5422767284133234860">"Активиране/деактивиране на PIN за SIM карта"</string>
<string name="change_pin" msgid="9174186126330785343">"Промяна на PIN за SIM карта"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN код за SIM карта:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Затваряне"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Обратно обаждане"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Съобщение"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Първо изключете самолетния режим, за да може да осъществите обаждане."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Изключете самолетния режим, за да осъществите обаждане."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Изключете самолетния режим или се свържете с безжична мрежа, за да осъществите обаждане."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Няма регистрация в мрежата."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Няма достъп до клетъчната мрежа."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Не е налице клетъчна мрежа. Свържете се с безжична, за да осъществите обаждане."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"За да извършите обаждане, въведете валиден номер."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Не може да се извърши обаждане."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Стартира се последователността MMI…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Не могат да се правят конферентни обаждания."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Обаждането не може да се отхвърли."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Обаждането или съответно обажданията не могат да се освободят."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Свържете се с безжична мрежа, за да осъществите обаждане."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Спешно обаждане"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радиото се включва…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Няма услуга. Извършва се нов опит…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Влизане в режим на обратно обаждане при спешност"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим на обратно обаждане при спешност"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Връзката с данни е деактивирана"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Няма връзка за данни в продължение на <xliff:g id="COUNT">%s</xliff:g> минута"</item>
- <item quantity="other" msgid="3122217344579273583">"Няма връзка за данни в продължение на <xliff:g id="COUNT">%s</xliff:g> минути"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Телефонът ще бъде в режим на спешно обратно обаждане в продължение на <xliff:g id="COUNT">%s</xliff:g> минута. През това време не може да се използват приложения за връзка с данни. Искате ли да излезете сега?"</item>
- <item quantity="other" msgid="8617116564023933114">"Телефонът ще бъде в режим на спешно обратно обаждане в продължение на <xliff:g id="COUNT">%s</xliff:g> минути. През това време не може да се използват приложения за връзка с данни. Искате ли да излезете сега?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Избраното действие не е налично в режим на обратно спешно обаждане. Телефонът ще бъде в този режим в продължение на <xliff:g id="COUNT">%s</xliff:g> минута. Искате ли да излезете сега?"</item>
- <item quantity="other" msgid="6115622137771382224">"Избраното действие не е налично в режим на спешно обратно обаждане. Телефонът ще бъде в този режим в продължение на <xliff:g id="COUNT">%s</xliff:g> минути. Искате ли да излезете сега?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Няма връзка за данни в продължение на <xliff:g id="COUNT_1">%s</xliff:g> минути</item>
+ <item quantity="one">Няма връзка за данни в продължение на <xliff:g id="COUNT_0">%s</xliff:g> минута</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Телефонът ще бъде в режим за обратно обаждане при спешност в продължение на <xliff:g id="COUNT_1">%s</xliff:g> минути. В този режим не могат да се използват приложения, работещи с връзка за данни. Искате ли да излезете сега?</item>
+ <item quantity="one">Телефонът ще бъде в режим за обратно обаждане при спешност в продължение на <xliff:g id="COUNT_0">%s</xliff:g> минута. В този режим не могат да се използват приложения, работещи с връзка за данни. Искате ли да излезете сега?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Избраното действие не е налице в режима за обратно обаждане при спешност. Телефонът ще бъде в този режим в продължение на <xliff:g id="COUNT_1">%s</xliff:g> минути. Искате ли да излезете сега?</item>
+ <item quantity="one">Избраното действие не е налице в режима за обратно обаждане при спешност. Телефонът ще бъде в този режим в продължение на <xliff:g id="COUNT_0">%s</xliff:g> минута. Искате ли да излезете сега?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Избраното действие не е налично по време на спешно обаждане."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Излиза се от режим на спешно обратно обаждане"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Да"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Спешни обаждания"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Само спешни обаждания"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM карта, слот: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Достъпност"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Вход. обаждане през Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Обаждане през Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Докоснете отново за отваряне"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"При декодирането на съобщението възникна грешка."</string>
</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 829ccbf..a403b2b 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ফোন অ্যাকাউন্টগুলি"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP অ্যাকাউন্ট যোগ করুন"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"অ্যাকাউন্ট সেটিংস কনফিগার করুন"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi কলিং"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi কলিং"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi কলিং ব্যবহার করবেন না"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"কল সহায়ক ব্যবহার করবেন না"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"একবারও না"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"কনফিগার করুন"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"বিল্ট-ইন সংযোগ পরিষেবা"</string>
<string name="voicemail" msgid="8693759337917898954">"ভয়েসমেল"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"ভয়েসমেল (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"নেটওয়ার্ক অপারেটর"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"জরুরী সম্প্রচার"</string>
@@ -111,7 +112,7 @@
<string name="sum_cfb_disabled" msgid="4913145177320506827">"বন্ধ আছে"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"আপনার অপারেটর আপনার ফোন ব্যস্ত থাকাকালীন কল ফরওয়ার্ডিংকে অক্ষম করা সমর্থন করে না৷"</string>
<string name="labelCFNRy" msgid="1736067178393744351">"যখন উত্তর দেয় না"</string>
- <string name="messageCFNRy" msgid="672317899884380374">"যখন উত্তর করছে না তখনকার নম্বর"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"যখন নম্বর থেকে উত্তর আসছে না তখন"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> এ ফরওয়ার্ড করা হচ্ছে"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"বন্ধ আছে"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"আপনার অপারেটর আপনার ফোনে যখন উত্তর করা যাচ্ছে না তখন কল ফরওয়ার্ডিংকে অক্ষম করা সমর্থন করে না৷"</string>
@@ -200,11 +201,12 @@
<string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ভয়েস এবং অন্যান্য যোগাযোগব্যবস্থা উন্নত করতে LTE পরিষেবা ব্যবহার করুন (প্রস্তাবিত)"</string>
<string name="data_enabled" msgid="5972538663568715366">"ডেটা সক্ষম করা হয়েছে"</string>
<string name="data_enable_summary" msgid="2382798156640007971">"ডেটা ব্যবহারের অনুমতি দিন"</string>
- <string name="roaming" msgid="8871412572928323707">"ডেটা রোমিং"</string>
+ <string name="roaming" msgid="8871412572928323707">"রোমিং ডেটা"</string>
<string name="roaming_enable" msgid="7331106985174381987">"রোমিংয়ে থাকাকালীন ডেটা পরিষেবাগুলির সাথে সংযোগ স্থাপন করুন"</string>
<string name="roaming_disable" msgid="1843417228755568110">"রোমিংয়ে থাকাকালীন ডেটা পরিষেবাগুলির সাথে সংযোগ স্থাপন করুন"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"আপনি ডেটা রোমিং বন্ধ করে আপনার হোম নেটওয়ার্কের বাইরে চলে আসায় আপনার ডেটা সংযোগ হারিয়ে ফেলেছেন৷"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"রোমিং-এ থাকাকালীন ডেটা ব্যবহারের অনুমতি দিতে চান? উল্লেখযোগ্য চার্জ প্রযোজ্য হতে পারে৷"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"আপনাকে উল্লেখযোগ্য পরিমাণে চার্জ করা হতে পারে৷"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ডেটা রোমিংয়ের অনুমতি দেবেন?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS বিকল্পগুলি"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA বিকল্পগুলি"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"ডেটা ব্যবহার"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY মোড সেট করুন"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"স্বয়ংক্রিয় পুনরায় প্রচেষ্টা"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করার মোড সক্ষম করুন"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"একটি ভিডিও কল করার সময় TTY মোড পরিবর্তন করার অনুমতি দেওয়া হয় না"</string>
<string name="menu_add" msgid="1882023737425114762">"পরিচিতি যোগ করুন"</string>
<string name="menu_edit" msgid="7143003705504672374">"পরিচিতি সম্পাদনা করুন"</string>
<string name="menu_delete" msgid="3977150783449642851">"পরিচিতি মুছুন"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"সিম কার্ড থেকে পড়া হচ্ছে…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"আপনার সিম কার্ডে কোনো পরিচিত নেই৷"</string>
<string name="simContacts_title" msgid="1861472842524839921">"আমদানি করার জন্য পরিচিতগুলি নির্বাচন করুন"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"সিম কার্ড থেকে পরিচিতিগুলি আমদানি করতে, প্রথমে বিমান মোড বন্ধ করুন৷"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM কার্ডটি থেকে পরিচিতিগুলি আমদানি করতে বিমান মোড বন্ধ করুন৷"</string>
<string name="enable_pin" msgid="5422767284133234860">"সিম PIN সক্ষম/অক্ষম করুন"</string>
<string name="change_pin" msgid="9174186126330785343">"সিম PIN পরিবর্তন করুন"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"সিম PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"কল নামিয়ে রাখুন"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"কল ব্যাক করুন"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"বার্তা"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"একটি কল করতে, প্রথমে বিমান মোড বন্ধ করুন৷"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"কল করতে বিমান মোড বন্ধ করুন৷"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"বিমান মোড বন্ধ করুন বা কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"নেটওয়ার্কে নিবন্ধিত নয়৷"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"সেলুলার নেটওয়ার্ক উপলব্ধ নয়।"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"মোবাইল নেটওয়ার্ক উপলব্ধ নেই৷ একটি কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"কোনো কল স্থাপন করতে, একটি বৈধ নম্বর লিখুন৷"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"কল করা যাবে না৷"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ক্রম চালু হচ্ছে…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"কনফারেন্স কলগুলি করা যায়নি৷"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"কল প্রত্যাখ্যান কলা যাবে না৷"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"কল(গুলি) কাটা যাবে না৷"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"একটি কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"জরুরি কল"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"রেডিও চালু করা হচ্ছে…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"কোন পরিষেবা নেই৷ আবার চেষ্টা করা হচ্ছে..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"জরুরি কলব্যাক মোডে প্রবেশ করা হয়েছে"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"জরুরি কলব্যাক মোড"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ডেটা সংযোগ অক্ষম করা হয়েছে"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> মিনিট পর্যন্ত কোনো ডেটা সংযোগ থাকবে না"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> মিনিট পর্যন্ত কোনো ডেটা সংযোগ থাকবে না"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ফোনটি <xliff:g id="COUNT">%s</xliff:g> মিনিট পর্যন্ত জরুরি কলব্যাক মোডে থাকবে৷ এই মোডে থাকাকালীন ডেটা সংযোগ ব্যবহার করে এমন কোনো অ্যাপ্লিকেশান ব্যবহার করা যাবে না৷ আপনি কি এখুনি এর থেকে বেরিয়ে যেতে চান?"</item>
- <item quantity="other" msgid="8617116564023933114">"ফোনটি <xliff:g id="COUNT">%s</xliff:g> মিনিট পর্যন্ত জরুরি কলব্যাক মোডে থাকবে৷ এই মোডে থাকাকালীন ডেটা সংযোগ ব্যবহার করে এমন কোনো অ্যাপ্লিকেশান ব্যবহার করা যাবে না৷ আপনি কি এখুনি এর থেকে বেরিয়ে যেতে চান?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"জরুরি কলব্যাক মোডে থাকাকালীন নির্বাচিত কার্যটি উপলব্ধ থাকবে না৷ ফোনটি <xliff:g id="COUNT">%s</xliff:g> মিনিট পর্যন্ত এই মোডে থাকবে৷ আপনি কি এখুনি এর থেকে বেরিয়ে যেতে চান?"</item>
- <item quantity="other" msgid="6115622137771382224">"জরুরি কলব্যাক মোডে থাকাকালীন নির্বাচিত কার্যটি উপলব্ধ থাকবে না৷ ফোনটি <xliff:g id="COUNT">%s</xliff:g> মিনিট পর্যন্ত এই মোডে থাকবে৷ আপনি কি এখুনি এর থেকে বেরিয়ে যেতে চান?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> মিনিট পর্যন্ত কোনো ডেটা সংযোগ থাকবে না</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> মিনিট পর্যন্ত কোনো ডেটা সংযোগ থাকবে না</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">ফোনটি <xliff:g id="COUNT_1">%s</xliff:g> মিনিটের জন্য জরুরী কলব্যাক মোডে থাকবে৷ এই মোডে থাকাকালীন একটি ডেটা সংযোগ ব্যবহার করে কোনো অ্যাপ্লিকেশান ব্যবহার করা যাবে না৷ আপনি কি এখনই প্রস্থান করতে চান?</item>
+ <item quantity="other">ফোনটি <xliff:g id="COUNT_1">%s</xliff:g> মিনিটের জন্য জরুরী কলব্যাক মোডে থাকবে৷ এই মোডে থাকাকালীন একটি ডেটা সংযোগ ব্যবহার করে কোনো অ্যাপ্লিকেশান ব্যবহার করা যাবে না৷ আপনি কি এখনই প্রস্থান করতে চান?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">জরুরী কলব্যাক মোডে থাকাকালীন নির্বাচিত অ্যাকশন উপলব্ধ থাকবে না৷ ফোনটি <xliff:g id="COUNT_1">%s</xliff:g> মিনিটের জন্য এই মোডে থাকবে৷ আপনি কি এখনই প্রস্থান করতে চান?</item>
+ <item quantity="other">জরুরী কলব্যাক মোডে থাকাকালীন নির্বাচিত অ্যাকশন উপলব্ধ থাকবে না৷ ফোনটি <xliff:g id="COUNT_1">%s</xliff:g> মিনিটের জন্য এই মোডে থাকবে৷ আপনি কি এখনই প্রস্থান করতে চান?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"কোনো জরুরি কলে থাকাকালীন নির্বাচিত ক্রিয়া উপলব্ধ নয়৷"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"জরুরি কলব্যাক মোড থেকে প্রস্থান করা হচ্ছে"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"হ্যাঁ"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"জরুরি কলগুলি"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"শুধুমাত্র জরুরী কলিং"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM কার্ড, স্লট: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"অ্যাক্সেসযোগ্যতা"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"আগত Wi-Fi কল"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi কল"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"খোলার জন্য আবার স্পর্শ করুন"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"বার্তাটি ডিকোড করার সময় একটি ত্রুটি ঘটেছে৷"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index ddb3d20..8f6eaea 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Comptes del telèfon"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Afegeix un compte SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configura les opcions del compte"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Trucades per Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Trucades per Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"No facis servir les trucades per Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"No facis servir l\'assistent de trucades"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Cap"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configura"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Servei de connexió incorporat"</string>
<string name="voicemail" msgid="8693759337917898954">"Correu de veu"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Bústia de veu (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"CV:"</string>
<string name="networks" msgid="8873030692174541976">"Operadors de xarxa"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Missatges d\'emergència"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Estableix connexió amb serveis de dades en itinerància"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Estableix connexió amb serveis de dades en itinerància"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Has perdut la connectivitat de dades, perquè has abandonat la xarxa domèstica i la itinerància de dades està desactivada."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Vols permetre l\'ús de dades en itinerància? És possible que hi hagi càrrecs importants."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"És possible que se\'t facturin càrrecs elevats."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Vols permetre la itinerància de dades?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opcions de GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opcions de CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Ús de dades"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Defineix el mode TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Reintent automàtic"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Activa el mode de reintent automàtic"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"No es pot canviar al mode de TTY durant una videotrucada"</string>
<string name="menu_add" msgid="1882023737425114762">"Afegeix un contacte"</string>
<string name="menu_edit" msgid="7143003705504672374">"Edita el contacte"</string>
<string name="menu_delete" msgid="3977150783449642851">"Suprimeix el contacte"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"S\'està llegint de la targeta SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"No hi ha cap contacte a la targeta SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Seleccioneu contactes per importar-los"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Per importar contactes des de la targeta SIM, primer has de desactivar el mode d\'avió."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Per importar contactes de la targeta SIM, desactiva el mode d\'avió."</string>
<string name="enable_pin" msgid="5422767284133234860">"Activa/Desactiva el PIN de la SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Canvia el PIN de la SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN de la SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Penja"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Torna la trucada"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Missatge"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Per fer una trucada, primer apagueu el mode d\'avió."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Per fer una trucada, desactiva el mode d\'avió."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Per fer una trucada, desactiva el mode d\'avió o connecta amb una xarxa sense fil."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"No registrat a la xarxa."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"La xarxa mòbil no està disponible."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La xarxa mòbil no està disponible. Per fer una trucada, connecta amb una xarxa sense fil."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Per realitzar una trucada, introdueix un número vàlid."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"No es pot trucar."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"S\'està iniciant la seqüència MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"No es poden fer trucades de conferència."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"No es pot rebutjar la trucada."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No es poden alliberar trucades."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Per fer una trucada, connecta amb una xarxa sense fil."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Trucada d\'emergència"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"S\'està activant el senyal mòbil..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No hi ha servei. S\'està tornant a provar..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"S\'ha entrat al mode de crida de retorn d\'emergència"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode de crida de retorn d\'emergència"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connexió de dades desactivada"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"No hi ha hagut connexió de dades durant <xliff:g id="COUNT">%s</xliff:g> minut"</item>
- <item quantity="other" msgid="3122217344579273583">"No hi ha hagut connexió de dades durant <xliff:g id="COUNT">%s</xliff:g> minuts"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"El telèfon estarà en mode de devolució de trucades d\'emergència durant <xliff:g id="COUNT">%s</xliff:g> minut. Mentre estigui en aquest mode, no es podran utilitzar aplicacions que utilitzin una connexió de dades. En vols sortir ara?"</item>
- <item quantity="other" msgid="8617116564023933114">"El telèfon estarà en mode de devolució de trucades d\'emergència durant <xliff:g id="COUNT">%s</xliff:g> minuts. Mentre estigui en aquest mode, no es podran utilitzar aplicacions que utilitzin una connexió de dades. En vols sortir ara?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"L\'acció seleccionada no està disponible mentre estiguis en mode de devolució de trucades d\'emergència. El telèfon estarà en aquest mode durant <xliff:g id="COUNT">%s</xliff:g> minuts. En vols sortir ara?"</item>
- <item quantity="other" msgid="6115622137771382224">"L\'acció seleccionada no està disponible mentre estiguis en mode de devolució de trucades d\'emergència. El telèfon estarà en aquest mode durant <xliff:g id="COUNT">%s</xliff:g> minuts. En vols sortir ara?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">No hi ha hagut connexió de dades durant <xliff:g id="COUNT_1">%s</xliff:g> minuts</item>
+ <item quantity="one">No hi ha hagut connexió de dades durant <xliff:g id="COUNT_0">%s</xliff:g> minut</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">El telèfon estarà en mode de devolució de trucades d\'emergència durant <xliff:g id="COUNT_1">%s</xliff:g> minuts. Durant aquest temps, no es podrà utilitzar cap aplicació que faci servir una connexió de dades. Vols sortir ara?</item>
+ <item quantity="one">El telèfon estarà en mode de devolució de trucades d\'emergència durant <xliff:g id="COUNT_0">%s</xliff:g> minut. Durant aquest temps, no es podrà utilitzar cap aplicació que faci servir una connexió de dades. Vols sortir ara?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">L\'acció seleccionada no està disponible amb el mode de devolució de trucades d\'emergència. El telèfon tindrà aquest mode activat durant <xliff:g id="COUNT_1">%s</xliff:g> minuts. Vols sortir ara?</item>
+ <item quantity="one">L\'acció seleccionada no està disponible amb el mode de devolució de trucades d\'emergència. El telèfon tindrà aquest mode activat durant <xliff:g id="COUNT_0">%s</xliff:g> minut. Vols sortir ara?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"L\'acció seleccionada no està disponible en una trucada d\'emergència."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"S\'està sortint del mode de devolució de trucades d\'emergència"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Sí"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Trucades d\'emergència"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Només trucades d\'emergència"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Targeta SIM, ranura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilitat"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Trucada per Wi-Fi entrant"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Trucada per Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Toca-ho de nou per obrir"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"S\'ha produït un error en descodificar el missatge."</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c0183d1..fd20da9 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonní účty"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Přidat účet SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurace nastavení účtu"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Volání Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Volání přes Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Nepoužívat volání pomocí Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Nepoužívat asistenta pro volání"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Žádný"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurovat"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Integrovaná služba připojení"</string>
<string name="voicemail" msgid="8693759337917898954">"Hlasová schránka"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Hlasová schránka (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"HS:"</string>
<string name="networks" msgid="8873030692174541976">"Síťoví operátoři"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Výstražné zprávy o výjimečné situaci"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Používat datové služby při roamingu"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Používat datové služby při roamingu"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Datové připojení bylo přerušeno, protože jste opustili domovskou síť a máte vypnutý datový roaming."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Povolit data při roamingu? Za službu mohou být účtovány vysoké poplatky."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Mohou vám být účtovány vysoké poplatky."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Povolit datový roaming?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Možnosti GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Možnosti CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Využití dat"</string>
@@ -329,18 +331,18 @@
<string name="cdma_activate_device" msgid="3793805892364814518">"Aktivovat zařízení"</string>
<string name="cdma_lte_data_service" msgid="4255018217292548962">"Nastavit datovou službu"</string>
<string name="carrier_settings_title" msgid="9028166176523012300">"Nastavení operátora"</string>
- <string name="fdn" msgid="7878832555095183202">"Povolená telefonní čísla"</string>
- <string name="fdn_with_label" msgid="187084204115493366">"Povolená telefonní čísla (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn" msgid="7878832555095183202">"Povolená tel. čísla"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Povolená tel. čísla (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="manage_fdn_list" msgid="8777755791892122369">"Seznam povolených telefonních čísel"</string>
<string name="fdn_list_with_label" msgid="7437232552210469217">"Seznam povolených telefonních čísel (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="fdn_activation" msgid="2156479741307463576">"Aktivace povolených telefonních čísel"</string>
- <string name="fdn_enabled" msgid="5238109009915521240">"Funkce Povolená telefonní čísla je zapnuta"</string>
- <string name="fdn_disabled" msgid="4700049736675368279">"Funkce Povolená telefonní čísla je vypnuta"</string>
- <string name="enable_fdn" msgid="3740191529180493851">"Zapnout funkci Povolená telefonní čísla"</string>
- <string name="disable_fdn" msgid="7944020890722540616">"Vypnout funkci Povolená telefonní čísla"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"Funkce Povolená tel. čísla je zapnuta"</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"Funkce Povolená tel. čísla je vypnuta"</string>
+ <string name="enable_fdn" msgid="3740191529180493851">"Zapnout funkci Povolená tel. čísla"</string>
+ <string name="disable_fdn" msgid="7944020890722540616">"Vypnout funkci Povolená tel. čísla"</string>
<string name="change_pin2" msgid="2153563695382176676">"Změna kódu PIN2"</string>
- <string name="enable_fdn_ok" msgid="7215588870329688132">"Vypnout funkci Povolená telefonní čísla"</string>
- <string name="disable_fdn_ok" msgid="5727046928930740173">"Zapnout funkci Povolená telefonní čísla"</string>
+ <string name="enable_fdn_ok" msgid="7215588870329688132">"Vypnout funkci Povolená tel. čísla"</string>
+ <string name="disable_fdn_ok" msgid="5727046928930740173">"Zapnout funkci Povolená tel. čísla"</string>
<string name="sum_fdn" msgid="1959399454900272878">"Umožňuje spravovat povolená telefonní čísla"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"Umožňuje změnit kód PIN pro přístup k povoleným telefonním číslům"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Správa telefonního seznamu"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Nastavit režim TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automaticky zkusit znovu"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Aktivovat režim Automaticky zkusit znovu"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Během videohovoru změna režimu TTY není povolena"</string>
<string name="menu_add" msgid="1882023737425114762">"Přidat kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Upravit kontakt"</string>
<string name="menu_delete" msgid="3977150783449642851">"Smazat kontakt"</string>
@@ -366,14 +369,14 @@
<string name="delete_fdn_contact" msgid="6668958073074151717">"Smazat povolené telefonní číslo"</string>
<string name="deleting_fdn_contact" msgid="5669163206349319969">"Mazání povoleného telefonního čísla..."</string>
<string name="fdn_contact_deleted" msgid="7154162327112259569">"Povolené telefonní číslo bylo smazáno."</string>
- <string name="pin2_invalid" msgid="5470854099230755944">"Funkce Povolená telefonní čísla nebyla aktualizována, protože jste zadali chybný kód PIN."</string>
- <string name="fdn_invalid_number" msgid="1494755047900009147">"Funkce Povolená telefonní čísla nebyla aktualizována, protože číslo nesmí obsahovat více než 20 číslic."</string>
- <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Povolená telefonní čísla (FDN) nebyla aktualizována. Kód PIN2 byl nesprávný nebo bylo telefonní číslo odmítnuto."</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"Funkce Povolená tel. čísla nebyla aktualizována, protože jste zadali chybný kód PIN."</string>
+ <string name="fdn_invalid_number" msgid="1494755047900009147">"Funkce Povolená tel. čísla nebyla aktualizována, protože číslo nesmí obsahovat více než 20 číslic."</string>
+ <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Povolená tel. čísla (FDN) nebyla aktualizována. Kód PIN2 byl nesprávný nebo bylo telefonní číslo odmítnuto."</string>
<string name="fdn_failed" msgid="540018079008319747">"Operace s čísly FDN se nezdařila."</string>
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Čtení ze SIM karty..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Na SIM kartě nejsou žádné kontakty."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Vybrat kontakty pro import"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Chcete-li importovat kontakty ze SIM karty, vypněte nejprve režim Letadlo."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Chcete-li importovat kontakty ze SIM karty, vypněte režim Letadlo."</string>
<string name="enable_pin" msgid="5422767284133234860">"Povolit nebo zakázat PIN SIM karty"</string>
<string name="change_pin" msgid="9174186126330785343">"Změnit PIN SIM karty"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN SIM karty:"</string>
@@ -415,7 +418,7 @@
<string name="card_title_incoming_call" msgid="7364539451234646909">"Příchozí hovor"</string>
<string name="card_title_call_ended" msgid="5544730338889702298">"Hovor ukončen"</string>
<string name="card_title_on_hold" msgid="821463117892339942">"Přidržený hovor"</string>
- <string name="card_title_hanging_up" msgid="3999101620995182450">"Zavěšování"</string>
+ <string name="card_title_hanging_up" msgid="3999101620995182450">"Ukončování hovoru"</string>
<string name="card_title_in_call" msgid="6346543933068225205">"Probíhá hovor"</string>
<string name="notification_dialing" msgid="2107666444937350731">"Vytáčení"</string>
<string name="notification_missedCallTitle" msgid="7554385905572364535">"Zmeškaný hovor"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Zavěsit"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zavolat zpět"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Zpráva"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Chcete-li telefonovat, vypněte nejprve režim Letadlo."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Chcete-li provést hovor, vypněte režim Letadlo."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Chcete-li se připojit k bezdrátové síti a provést hovor, vypněte režim Letadlo."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Přihlášení k síti nebylo úspěšné."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilní síť je nedostupná."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilní síť není k dispozici. Chcete-li provést hovor, připojte se k bezdrátové síti."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Chcete-li uskutečnit hovor, zadejte platné telefonní číslo."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Hovor nelze uskutečnit."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Spouštění sekvence MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Hovory nelze spojit do konferenčního hovoru."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Hovor nelze odmítnout."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Hovor nelze ukončit."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Chcete-li provést hovor, připojte se k bezdrátové síti."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Tísňové volání"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Zapínání rádia..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Služba je nedostupná. Probíhá další pokus…"</string>
@@ -508,18 +514,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Byl aktivován režim tísňového zpětného volání"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Režim tísňového zpětného volání"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datové spojení zakázáno"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Žádné datové připojení po dobu <xliff:g id="COUNT">%s</xliff:g> min"</item>
- <item quantity="other" msgid="3122217344579273583">"Žádné datové připojení po dobu <xliff:g id="COUNT">%s</xliff:g> min"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon bude v režimu tísňového zpětného volání po dobu <xliff:g id="COUNT">%s</xliff:g> minuty. Dokud je telefon v tomto režimu, nelze použít žádnou aplikaci, která využívá datové připojení. Chcete tento režim ukončit?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon bude v režimu tísňového zpětného volání po dobu <xliff:g id="COUNT">%s</xliff:g> minut. Dokud je telefon v tomto režimu, nelze použít žádnou aplikaci, která využívá datové připojení. Chcete tento režim ukončit?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Vybraná akce není v režimu tísňového zpětného volání dostupná. Telefon bude v tomto režimu po dobu <xliff:g id="COUNT">%s</xliff:g> minuty. Chcete aplikaci nyní ukončit?"</item>
- <item quantity="other" msgid="6115622137771382224">"Vybraná akce není v režimu tísňového zpětného volání dostupná. Telefon bude v tomto režimu po dobu <xliff:g id="COUNT">%s</xliff:g> minut. Chcete tento režim nyní ukončit?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="few"><xliff:g id="COUNT_1">%s</xliff:g> minuty nebude k dispozici datové připojení</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%s</xliff:g> minuty nebude k dispozici datové připojení</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> minut nebude k dispozici datové připojení</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> minutu nebude k dispozici datové připojení</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="few">]Telefon bude <xliff:g id="COUNT_1">%s</xliff:g> minuty v režimu zpětného tísňového volání. V tomto režimu nelze používat aplikace, které používají datové připojení. Chcete akci nyní ukončit?</item>
+ <item quantity="many">]Telefon bude <xliff:g id="COUNT_1">%s</xliff:g> minuty v režimu zpětného tísňového volání. V tomto režimu nelze používat aplikace, které používají datové připojení. Chcete akci nyní ukončit?</item>
+ <item quantity="other">]Telefon bude <xliff:g id="COUNT_1">%s</xliff:g> minut v režimu zpětného tísňového volání. V tomto režimu nelze používat aplikace, které používají datové připojení. Chcete akci nyní ukončit?</item>
+ <item quantity="one">Telefon bude <xliff:g id="COUNT_0">%s</xliff:g> minutu v režimu zpětného tísňového volání. V tomto režimu nelze používat aplikace, které používají datové připojení. Chcete akci nyní ukončit?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="few">V režimu zpětného tísňového volání vybraná akce není k dispozici. Telefon v tomto režimu bude <xliff:g id="COUNT_1">%s</xliff:g> minuty. Chcete akci nyní ukončit?</item>
+ <item quantity="many">V režimu zpětného tísňového volání vybraná akce není k dispozici. Telefon v tomto režimu bude <xliff:g id="COUNT_1">%s</xliff:g> minuty. Chcete akci nyní ukončit?</item>
+ <item quantity="other">V režimu zpětného tísňového volání vybraná akce není k dispozici. Telefon v tomto režimu bude <xliff:g id="COUNT_1">%s</xliff:g> minut. Chcete akci nyní ukončit?</item>
+ <item quantity="one">V režimu zpětného tísňového volání vybraná akce není k dispozici. Telefon v tomto režimu bude <xliff:g id="COUNT_0">%s</xliff:g> minutu. Chcete akci nyní ukončit?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Během tísňového volání není vybraná akce k dispozici."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Ukončení režimu tísňového zpětného volání"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ano"</string>
@@ -548,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Tísňová volání"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Pouze tísňová volání"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM karta, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Usnadnění"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Příchozí hovor přes Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Volání přes Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Otevřete opětovným klepnutím"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Při dekódování zprávy došlo k chybě."</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 1b8894f..72127b7 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonkonti"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Tilføj en SIP-konto"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurer kontoindstillinger"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi-opkald"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Opkald via Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Undlad at bruge Wi-Fi-opkald"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Undlad at bruge opkaldsassistent"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ingen"</string>
@@ -78,15 +78,16 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurer"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Indbygget forbindelsestjeneste"</string>
<string name="voicemail" msgid="8693759337917898954">"Telefonsvarer"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Talebesked (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Netværksudbydere"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Nødudsendelser"</string>
<string name="call_settings" msgid="6112441768261754562">"Indstillinger for opkald"</string>
<string name="additional_gsm_call_settings" msgid="1391795981938800617">"Yderligere indstillinger"</string>
<string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Yderligere indstillinger (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Yderligere indstillinger for opkald er for kun GSM"</string>
+ <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Yderligere indstillinger for GSM-opkald"</string>
<string name="additional_cdma_call_settings" msgid="8628958775721886909">"Yderligere CDMA-opkaldsindstillinger"</string>
- <string name="sum_cdma_call_settings" msgid="284753265979035549">"Yderligere indstillinger for opkald er for kun CDMA"</string>
+ <string name="sum_cdma_call_settings" msgid="284753265979035549">"Yderligere indstillinger for CDMA-opkald"</string>
<string name="labelNwService" msgid="4699970172021870983">"Indstillinger for netværkstjeneste"</string>
<string name="labelCallerId" msgid="3888899447379069198">"Opkalds-id"</string>
<string name="sum_loading_settings" msgid="1826692909391168620">"Indlæser indstillinger…"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Opret forbindelse til datatjenester under roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Opret forbindelse til datatjenester under roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Du har mistet dataforbindelsen, fordi du har forladt dit hjemmenetværk, og dataroaming er slået fra."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Vil du tillade dataforbrug under roaming? Dette kan medføre væsentlige gebyrer."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Du kan risikere at skulle betale høje gebyrer."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Vil du tillade dataroaming?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Indstillinger for GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Indstillinger for CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Databrug"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Angiv TTY-tilstand"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Prøv automatisk igen"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Aktivér automatisk gentagelsestilstand"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Det er ikke tilladt at ændre TTY-tilstanden under et videoopkald"</string>
<string name="menu_add" msgid="1882023737425114762">"Tilføj kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Rediger kontakt"</string>
<string name="menu_delete" msgid="3977150783449642851">"Slet kontakt"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Læser fra SIM-kort ..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Der er ingen kontakter på dit SIM-kort."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Vælg kontakter, der skal importeres"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Du skal først slukke Flytilstand for at importere kontaktpersoner fra SIM-kortet."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Slå flytilstand fra for at importere kontaktpersoner fra SIM-kortet."</string>
<string name="enable_pin" msgid="5422767284133234860">"Aktiver/deaktiver pinkode til SIM-kort"</string>
<string name="change_pin" msgid="9174186126330785343">"Skift pinkode til SIM-kort"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"Pinkode til SIM-kort:"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Læg på"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ring tilbage"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Besked"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Slå Flytilstand fra først for at foretage et opkald."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Slå flytilstand fra for at foretage et opkald."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Slå flytilstand fra, eller opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ikke registreret på netværk."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilnetværket er ikke tilgængeligt."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilnetværk er ikke tilgængeligt. Opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Indtast et gyldigt nummer for at foretage et opkald."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Kan ikke ringe op."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starter MMI-sekvens ..."</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Der kunne ikke oprettes mødeopkald."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan ikke afvise opkaldet."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan ikke frigive et eller flere opkald."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nødopkald"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Tænder for radio ..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjeneste. Prøver igen..."</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Gik i nødtilbagekaldstilstand"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Nødtilbagekaldstilstand"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dataforbindelsen er deaktiveret"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Ingen dataforbindelse i <xliff:g id="COUNT">%s</xliff:g> minut"</item>
- <item quantity="other" msgid="3122217344579273583">"Ingen dataforbindelse i <xliff:g id="COUNT">%s</xliff:g> minutter"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefonen vil være i nødtilbagekaldstilstand i <xliff:g id="COUNT">%s</xliff:g> minut. Mens du er i denne tilstand kan ingen apps, der bruger en dataforbindelse, anvendes. Vil du afslutte nu?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefonen vil være i nødtilbagekaldstilstand i <xliff:g id="COUNT">%s</xliff:g> minutter. Mens du er i denne tilstand kan ingen applikationer, der bruger en dataforbindelse, anvendes. Vil du afslutte nu?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Den valgte handling er ikke tilgængelig i nødtilbagekaldstilstand. Telefonen vil være i denne tilstand i <xliff:g id="COUNT">%s</xliff:g> minut. Vil du afslutte nu?"</item>
- <item quantity="other" msgid="6115622137771382224">"Den valgte handling er ikke tilgængelig i nødtilbagekaldstilstand. Telefonen vil være i denne tilstand i <xliff:g id="COUNT">%s</xliff:g> minutter. Vil du afslutte nu?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Ingen dataforbindelse i <xliff:g id="COUNT_1">%s</xliff:g> minutter</item>
+ <item quantity="other">Ingen dataforbindelse i <xliff:g id="COUNT_1">%s</xliff:g> minutter</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Telefonen vil være i tilstanden Nødopkald i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Mens denne tilstand er aktiveret, kan du ikke bruge nogen applikationer, der kræver dataforbindelse. Vil du afslutte denne tilstand nu?</item>
+ <item quantity="other">Telefonen vil være i tilstanden Nødopkald i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Mens denne tilstand er aktiveret, kan du ikke bruge nogen applikationer, der kræver dataforbindelse. Vil du afslutte denne tilstand nu?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Den valgte handling er ikke tilgængelig i tilstanden Nødopkald. Telefonen vil være i denne tilstand i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Vil du afslutte denne tilstand nu?</item>
+ <item quantity="other">Den valgte handling er ikke tilgængelig i tilstanden Nødopkald. Telefonen vil være i denne tilstand i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Vil du afslutte denne tilstand nu?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Den valgte handling er ikke tilgængelig ved nødopkald"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Eksisterende nødtilbagekaldstilstand"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ja"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Nødopkald"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Kun nødopkald"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-kortholder: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Hjælpefunktioner"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Indgående Wi-Fi-opkald"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-opkald"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tryk igen for at åbne"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Der opstod en fejl under afkodning af beskeden."</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index bb91d76..797e0ce 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonkonten"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP-Konto hinzufügen"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Kontoeinstellungen konfigurieren"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"WLAN-Telefonie"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"WLAN-Telefonie"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Keine WLAN-Anrufe nutzen"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Keinen Anrufassistenten nutzen"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ohne"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurieren"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Integrierter Verbindungsdienst"</string>
<string name="voicemail" msgid="8693759337917898954">"Mailbox"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Mailbox (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"MB:"</string>
<string name="networks" msgid="8873030692174541976">"Mobilfunkanbieter"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Notfallbenachrichtigungen"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Bei Roaming mit Datendienst verbinden"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Bei Roaming mit Datendienst verbinden"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Die Datenverbindung wurde unterbrochen, weil Sie Ihr privates Netzwerk verlassen haben und Daten-Roaming nicht aktiviert ist."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Datennutzung bei Roaming zulassen? Es können hohe Gebühren anfallen."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Es können hohe Gebühren anfallen."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Daten-Roaming zulassen?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM-/UMTS-Optionen"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-Optionen"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Datenverbrauch"</string>
@@ -354,6 +356,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY-Modus einstellen"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatische Wiederholung"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Modus für automatische Wiederholung aktivieren"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Die Änderung des TTY-Modus ist während eines Videoanrufs nicht zulässig."</string>
<string name="menu_add" msgid="1882023737425114762">"Kontakt hinzufügen"</string>
<string name="menu_edit" msgid="7143003705504672374">"Kontakt bearbeiten"</string>
<string name="menu_delete" msgid="3977150783449642851">"Kontakt löschen"</string>
@@ -377,7 +380,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM-Karte wird ausgelesen..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Keine Kontakte auf SIM-Karte"</string>
<string name="simContacts_title" msgid="1861472842524839921">"Kontakte für Import auswählen"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Deaktivieren Sie zum Importieren der Kontakte von der SIM-Karte zunächst den Flugmodus."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Deaktivieren Sie den Flugmodus, um Kontakte von der SIM-Karte zu importieren."</string>
<string name="enable_pin" msgid="5422767284133234860">"PIN-Abfrage für SIM-Karte aktivieren/deaktivieren"</string>
<string name="change_pin" msgid="9174186126330785343">"PIN ändern"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN der SIM-Karte:"</string>
@@ -438,9 +441,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Beenden"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zurückrufen"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Nachricht"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Deaktivieren Sie zunächst den Flugmodus, um einen Anruf zu tätigen."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Deaktivieren Sie zum Telefonieren den Flugmodus."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Deaktivieren Sie zum Telefonieren den Flugmodus oder stellen Sie eine WLAN-Verbindung her."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Nicht in Netzwerk registriert."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilfunknetz nicht verfügbar"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Es ist kein Mobilfunknetz verfügbar. Stellen Sie zum Telefonieren eine WLAN-Verbindung her."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Geben Sie eine gültige Nummer ein."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Anruf nicht möglich."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-Sequenz wird gestartet..."</string>
@@ -451,6 +456,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Keine Telefonkonferenz möglich."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Anruf kann nicht abgelehnt werden."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Anrufe können nicht freigegeben werden."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Stellen Sie zum Telefonieren eine WLAN-Verbindung her."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Notruf"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Mobilfunkverbindung wird aktiviert..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Kein Service. Erneuter Versuch..."</string>
@@ -512,18 +518,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Notfallrückrufmodus aktiviert"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Notfallrückrufmodus"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datenverbindung deaktiviert"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> Minute lang keine Datenverbindung"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> Minuten lang keine Datenverbindung"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Das Telefon bleibt <xliff:g id="COUNT">%s</xliff:g> Minuten im Notfallrückrufmodus. In diesem Modus können keine Apps verwendet werden, die eine Datenverbindung erfordern. Möchten Sie den Vorgang jetzt beenden?"</item>
- <item quantity="other" msgid="8617116564023933114">"Das Telefon bleibt <xliff:g id="COUNT">%s</xliff:g> Minuten im Notfallrückrufmodus. In diesem Modus können keine Apps verwendet werden, die eine Datenverbindung erfordern. Möchten Sie den Vorgang jetzt beenden?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Die ausgewählte Aktion ist im Notfallrückrufmodus nicht verfügbar. Das Telefon bleibt <xliff:g id="COUNT">%s</xliff:g> Minuten in diesem Modus. Möchten Sie den Vorgang jetzt beenden?"</item>
- <item quantity="other" msgid="6115622137771382224">"Die ausgewählte Aktion ist im Notfallrückrufmodus nicht verfügbar. Das Telefon bleibt <xliff:g id="COUNT">%s</xliff:g> Minuten in diesem Modus. Möchten Sie den Vorgang jetzt beenden?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> Minuten lang keine Datenverbindung</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> Minute lang keine Datenverbindung</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Das Smartphone wird <xliff:g id="COUNT_1">%s</xliff:g> Minuten lang in den Notfallrückrufmodus versetzt. In dieser Zeit können Apps mit Datenverbindung nicht genutzt werden. Möchten Sie den Vorgang jetzt abbrechen?</item>
+ <item quantity="one">Das Smartphone wird <xliff:g id="COUNT_0">%s</xliff:g> Minute lang in den Notfallrückrufmodus versetzt. In dieser Zeit können Apps mit Datenverbindung nicht genutzt werden. Möchten Sie den Vorgang jetzt abbrechen?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Die ausgewählte Aktion ist im Notfallrückrufmodus nicht verfügbar. Das Smartphone ist <xliff:g id="COUNT_1">%s</xliff:g> Minuten lang in diesem Modus. Möchten Sie den Vorgang jetzt abbrechen?</item>
+ <item quantity="one">Die ausgewählte Aktion ist im Notfallrückrufmodus nicht verfügbar. Das Smartphone ist <xliff:g id="COUNT_0">%s</xliff:g> Minute lang in diesem Modus. Möchten Sie den Vorgang jetzt abbrechen?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Die ausgewählte Aktion ist während eines Notrufs nicht verfügbar."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Notfallrückrufmodus wird beendet..."</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ja"</string>
@@ -552,4 +558,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Notrufe"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Nur Notrufe"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-Karte, Schacht: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Bedienungshilfen"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Eingehender WLAN-Anruf"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"WLAN-Anruf"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Zum Öffnen erneut berühren"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Beim Entschlüsseln der Nachricht ist ein Fehler aufgetreten."</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index ce4790e..9e1ad97 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Λογαριασμοί τηλεφώνου"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Προσθήκη λογαριασμού SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Διαμόρφωση ρυθμίσεων λογαριασμού"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Κλήση Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Κλήση Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Να μη χρησιμοποιηθεί η κλήση μέσω Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Να μη χρησιμοποιηθεί βοηθός κλήσης"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Κανένας"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Διαμόρφωση"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Ενσωματωμένη υπηρεσία σύνδεσης"</string>
<string name="voicemail" msgid="8693759337917898954">"Αυτόματος τηλεφωνητής"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Αυτόματος τηλεφωνητής (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ΑΤ:"</string>
<string name="networks" msgid="8873030692174541976">"Εταιρείες δικτύου"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Εκπομπές έκτακτης ανάγκης"</string>
@@ -97,7 +98,7 @@
<string name="sum_cw_enabled" msgid="8083061901633671397">"Κατά τη διάρκεια μιας κλήσης, να ειδοποιούμαι για τις εισερχόμενες κλήσεις"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"Κατά τη διάρκεια μιας κλήσης, να ειδοποιούμαι για τις εισερχόμενες κλήσεις"</string>
<string name="call_forwarding_settings" msgid="3378927671091537173">"Ρυθμίσεις προώθησης κλήσης"</string>
- <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Ρυθμίσεις προώθησης κλήσης (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Ρυθ. προώθ. κλήσης (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="labelCF" msgid="2574386948026924737">"Προώθηση κλήσης"</string>
<string name="labelCFU" msgid="8147177368148660600">"Προώθηση πάντα"</string>
<string name="messageCFU" msgid="3560082430662923687">"Να γίνεται πάντα χρήση αυτού του αριθμού"</string>
@@ -122,14 +123,14 @@
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Η εταιρεία κινητής τηλεφωνίας δεν υποστηρίζει την απενεργοποίηση της προώθησης κλήσεων όταν το τηλέφωνό σας δεν έχει σήμα."</string>
<string name="updating_title" msgid="6146755386174019046">"Ρυθμίσεις κλήσης"</string>
<string name="call_settings_primary_user_only" msgid="5679923943740900965">"Οι ρυθμίσεις κλήσεων μπορούν να αλλάξουν μόνο από τον κύριο χρήστη."</string>
- <string name="call_settings_with_label" msgid="89359812614544532">"Ρυθμίσεις κλήσεων (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"Ρυθ/σεις (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="error_updating_title" msgid="7970259216988931777">"Σφάλμα ρυθμίσεων κλήσης"</string>
<string name="reading_settings" msgid="1920291699287055284">"Ανάγνωση ρυθμίσεων…"</string>
<string name="updating_settings" msgid="8171225533884883252">"Ενημέρωση ρυθμίσεων..."</string>
<string name="reverting_settings" msgid="4752151682666912828">"Επαναφορά ρυθμίσεων…"</string>
<string name="response_error" msgid="6674110501330139405">"Μη αναμενόμενη απάντηση από το δίκτυο."</string>
<string name="exception_error" msgid="7027667130619518211">"Σφάλμα δικτύου ή κάρτας SIM."</string>
- <string name="fdn_check_failure" msgid="18200614306525434">"Έχει ενεργοποιηθεί η ρύθμιση αριθμών κλήσης καθορισμένων αριθμών της εφαρμογής του τηλεφώνου σας. Γι αυτόν τον λόγο δεν λειτουργούν ορισμένες λειτουργίες που σχετίζονται με τις κλήσεις."</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"Έχει ενεργοποιηθεί η προκαθορισμένων αριθμών κλήσης της εφαρμογής του τηλεφώνου σας. Γι αυτόν τον λόγο δεν λειτουργούν ορισμένες λειτουργίες που σχετίζονται με τις κλήσεις."</string>
<string name="radio_off_error" msgid="2304459933248513376">"Πριν προβάλετε αυτές τις ρυθμίσεις, ενεργοποιήστε τον πομπό."</string>
<string name="close_dialog" msgid="2365884406356986917">"OK"</string>
<string name="enable" msgid="7248657275000173526">"Ενεργοποίηση"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Σύνδεση στις υπηρεσίες δεδομένων κατά την περιαγωγή"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Σύνδεση στις υπηρεσίες δεδομένων κατά την περιαγωγή"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Χάσατε τη σύνδεση δεδομένων επειδή φύγατε από το οικείο δίκτυο έχοντας την περιαγωγή δεδομένων απενεργοποιημένη."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Να επιτρέπεται η χρήση δεδομένων κατά την περιαγωγή; Ενδέχεται να ισχύουν υψηλές χρεώσεις."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Ενδέχεται να επιβαρυνθείτε με σημαντικές χρεώσεις."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Να επιτρέπεται η περιαγωγή δεδομένων;"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Επιλογές GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Επιλογές CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Χρήση δεδομένων"</string>
@@ -329,19 +331,19 @@
<string name="cdma_activate_device" msgid="3793805892364814518">"Ενεργοποίηση συσκευής"</string>
<string name="cdma_lte_data_service" msgid="4255018217292548962">"Ρύθμιση υπηρεσίας δεδομένων"</string>
<string name="carrier_settings_title" msgid="9028166176523012300">"Ρυθμ. εταιρ. κιν. τηλεφ."</string>
- <string name="fdn" msgid="7878832555095183202">"Αριθμοί κλήσης καθορισμένων αριθμών"</string>
- <string name="fdn_with_label" msgid="187084204115493366">"Προκαθορισμένοι αριθμοί κλήσης (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn" msgid="7878832555095183202">"Προκ/νοι αριθμοί κλήσης"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Προκ/νοι αριθμοί κλήσης (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="manage_fdn_list" msgid="8777755791892122369">"Λίστα FDN"</string>
<string name="fdn_list_with_label" msgid="7437232552210469217">"Λίστα προκαθορισμένων αριθμών κλήσης (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="fdn_activation" msgid="2156479741307463576">"Ενεργοποίηση FDN"</string>
- <string name="fdn_enabled" msgid="5238109009915521240">"Οι αριθμοί κλήσης καθορισμένων αριθμών είναι ενεργοποιημένοι"</string>
- <string name="fdn_disabled" msgid="4700049736675368279">"Οι αριθμοί κλήσης καθορισμένων αριθμών είναι απενεργοποιημένοι"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"Οι αριθμοί προκαθορισμένων κλήσεων είναι ενεργοποιημένοι"</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"Οι αριθμοί προκαθορισμένων κλήσεων είναι απενεργοποιημένοι"</string>
<string name="enable_fdn" msgid="3740191529180493851">"Ενεργοποίηση FDN"</string>
<string name="disable_fdn" msgid="7944020890722540616">"Απενεργοποίηση του FDN"</string>
<string name="change_pin2" msgid="2153563695382176676">"Αλλαγή του αριθμού PIN2"</string>
<string name="enable_fdn_ok" msgid="7215588870329688132">"Απενεργοποίηση του FDN"</string>
<string name="disable_fdn_ok" msgid="5727046928930740173">"Ενεργοποίηση FDN"</string>
- <string name="sum_fdn" msgid="1959399454900272878">"Διαχείριση αριθμών κλήσης καθορισμένων αριθμών"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"Διαχείριση προκαθορισμένων αριθμών κλήσης"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"Αλλαγή αριθμού PIN για πρόσβαση FDN"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Διαχείριση λίστας αριθμών τηλεφώνου"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Απόρρητο φωνής"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Ορισμός λειτουργίας TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Αυτόματη επανάληψη"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Ενεργοποίηση λειτουργίας αυτόματης επανάληψης"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Δεν επιτρέπεται αλλαγή της λειτουργίας TTY κατά τη διάρκεια μιας βιντεοκλήσης"</string>
<string name="menu_add" msgid="1882023737425114762">"Προσθήκη επαφής"</string>
<string name="menu_edit" msgid="7143003705504672374">"Επεξεργασία επαφής"</string>
<string name="menu_delete" msgid="3977150783449642851">"Διαγραφή επαφής"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Ανάγνωση από κάρτα SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Δεν υπάρχουν επαφές στην κάρτα SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Επιλέξτε επαφές για εισαγωγή"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Για την εισαγωγή επαφών από την κάρτα SIM, απενεργοποιήστε πρώτα τη λειτουργία πτήσης."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Απενεργοποιήστε τη λειτουργία πτήσης για να εισαγάγετε επαφές από την κάρτα SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Ενεργοποίηση/απενεργοποίηση αριθμού PIN της κάρτας SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Αλλαγή αριθμού PIN της κάρτας SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"Αριθμός PIN της κάρτας SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Τερματισμός κλήσης"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Επανάκληση"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Μήνυμα"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Για να πραγματοποιήσετε μια κλήση, απενεργοποιήστε πρώτα τη λειτουργία πτήσης."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Απενεργοποιήστε τη λειτουργία κλήσης για να πραγματοποιήσετε μια κλήση."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Απενεργοποιήστε τη λειτουργία πτήσης ή συνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Δεν έχετε εγγραφεί στο δίκτυο."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο. Συνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Για να πραγματοποιήσετε κλήση, εισαγάγετε έναν έγκυρο αριθμό."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Δεν είναι δυνατή η κλήση."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Έναρξη ακολουθίας MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Αδύνατη η πραγματοποίηση κλήσεων συνδιάσκεψης."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Δεν είναι δυνατή η απόρριψη της κλήσης."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Δεν είναι δυνατή η πραγματοποίηση κλήσεων."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Συνδεθείτε σε ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Κλήσεις επείγουσας ανάγκης"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ενεργοποίηση πομπού..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Δεν υπάρχει υπηρεσία. Νέα προσπάθεια…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Είσοδος σε λειτουργία επιστροφής κλήσης έκτακτης ανάγκης"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Λειτουργία επιστροφής κλήσης έκτακτης ανάγκης"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Απενεργοποιήθηκε η σύνδεση δεδομένων"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Δεν θα υπάρχει σύνδεση δεδομένων για <xliff:g id="COUNT">%s</xliff:g> λεπτό"</item>
- <item quantity="other" msgid="3122217344579273583">"Δεν θα υπάρχει σύνδεση δεδομένων για <xliff:g id="COUNT">%s</xliff:g> λεπτά"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Το τηλέφωνο θα βρίσκεται στη λειτουργία επιστροφής κλήσης έκτακτης ανάγκης για <xliff:g id="COUNT">%s</xliff:g> λεπτό. Όσο βρίσκεται σε αυτήν τη λειτουργία, δεν θα μπορούν να χρησιμοποιηθούν εφαρμογές με σύνδεση δεδομένων. Θέλετε να εξέλθετε τώρα;"</item>
- <item quantity="other" msgid="8617116564023933114">"Το τηλέφωνο βρίσκεται στη λειτουργία επιστροφής κλήσης έκτακτης ανάγκης για <xliff:g id="COUNT">%s</xliff:g> λεπτά. Όσο βρίσκεται σε αυτήν τη λειτουργία, δεν θα μπορούν να χρησιμοποιηθούν εφαρμογές με σύνδεση δεδομένων. Θέλετε να εξέλθετε τώρα;"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Η επιλεγμένη ενέργεια δεν είναι διαθέσιμη σε λειτουργία επιστροφής κλήσης έκτακτης ανάγκης. Το τηλέφωνο θα βρίσκεται σε αυτήν τη λειτουργία για <xliff:g id="COUNT">%s</xliff:g> λεπτό. Θέλετε να εξέλθετε τώρα;"</item>
- <item quantity="other" msgid="6115622137771382224">"Η επιλεγμένη ενέργεια δεν είναι διαθέσιμη στη λειτουργία επιστροφής κλήσης έκτακτης ανάγκης. Το τηλέφωνο θα βρίσκεται σε αυτήν τη λειτουργία για <xliff:g id="COUNT">%s</xliff:g> λεπτά. Θέλετε να εξέλθετε τώρα;"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Δεν θα υπάρχει σύνδεση δεδομένων για <xliff:g id="COUNT_1">%s</xliff:g> λεπτά</item>
+ <item quantity="one">Δεν θα υπάρχει σύνδεση δεδομένων για <xliff:g id="COUNT_0">%s</xliff:g> λεπτό</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Το τηλέφωνο θα βρίσκεται σε κατάσταση \"Επείγουσας επιστροφής κλήσης\" για <xliff:g id="COUNT_1">%s</xliff:g> λεπτά. Σε αυτήν την κατάσταση, δεν είναι δυνατή η χρήση εφαρμογών που χρησιμοποιούν σύνδεση δεδομένων. Θέλετε να εξέλθετε τώρα;</item>
+ <item quantity="one">Το τηλέφωνο θα βρίσκεται σε κατάσταση \"Επείγουσας επιστροφής κλήσης\" για <xliff:g id="COUNT_0">%s</xliff:g> λεπτό. Σε αυτήν την κατάσταση, δεν είναι δυνατή η χρήση εφαρμογών που χρησιμοποιούν σύνδεση δεδομένων. Θέλετε να εξέλθετε τώρα;</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Η επιλεγμένη ενέργεια δεν είναι διαθέσιμη όταν η συσκευή βρίσκεται σε κατάσταση \"Επείγουσας επιστροφής κλήσης\". Το τηλέφωνο θα βρίσκεται σε αυτήν την κατάσταση για <xliff:g id="COUNT_1">%s</xliff:g> λεπτά. Θέλετε να εξέλθετε τώρα;</item>
+ <item quantity="one">Η επιλεγμένη ενέργεια δεν είναι διαθέσιμη όταν η συσκευή βρίσκεται σε κατάσταση \"Επείγουσας επιστροφής κλήσης\". Το τηλέφωνο θα βρίσκεται σε αυτήν την κατάσταση για <xliff:g id="COUNT_0">%s</xliff:g> λεπτό. Θέλετε να εξέλθετε τώρα;</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Η επιλεγμένη ενέργεια δεν είναι διαθέσιμη κατά τη διάρκεια κλήσης επείγουσας ανάγκης."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Έξοδος από τη λειτουργία επιστροφής κλήσης έκτακτης ανάγκης"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ναι"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Κλήσεις έκτακτης ανάγκης"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Μόνο κλήσεις έκτακτης ανάγκης"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Κάρτα SIM, υποδοχή: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Προσβασιμότητα"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Εισερχ. κλήση μέσω Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Κλήση μέσω Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Αγγίξτε ξανά για άνοιγμα"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Παρουσιάστηκε κάποιο σφάλμα κατά την αποκωδικοποίηση του μηνύματος."</string>
</resources>
diff --git a/res/values-en-rAU/arrays.xml b/res/values-en-rAU/arrays.xml
new file mode 100644
index 0000000..807c757
--- /dev/null
+++ b/res/values-en-rAU/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="preferred_network_mode_choices_world_mode">
+ <item msgid="3391522821603584785">"Global"</item>
+ <item msgid="6753774959494729275">"LTE/CDMA"</item>
+ <item msgid="8658695584186942227">"LTE/GSM/UMTS"</item>
+ </string-array>
+ <string-array name="preferred_network_mode_values_world_mode">
+ <item msgid="8390941159766263625">"10"</item>
+ <item msgid="6103348346295810336">"8"</item>
+ <item msgid="3494519853214024879">"9"</item>
+ </string-array>
+</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..24dc3ba
--- /dev/null
+++ b/res/values-en-rAU/strings.xml
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobile Data"</string>
+ <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Phone"</string>
+ <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Emergency Dialler"</string>
+ <string name="phoneIconLabel" msgid="2331230813161304895">"Phone"</string>
+ <string name="fdnListLabel" msgid="8630418672279521003">"FDN list"</string>
+ <string name="unknown" msgid="6878797917991465859">"Unknown"</string>
+ <string name="private_num" msgid="6713286113000232309">"Private number"</string>
+ <string name="payphone" msgid="4793877574636445118">"Payphone"</string>
+ <string name="onHold" msgid="9035493194749959955">"On hold"</string>
+ <string name="mmiStarted" msgid="6347869857061147003">"MMI code started"</string>
+ <string name="ussdRunning" msgid="485588686340541690">"USSD code running…"</string>
+ <string name="mmiCancelled" msgid="2771923949751842276">"MMI code cancelled"</string>
+ <string name="cancel" msgid="5044513931633602634">"Cancel"</string>
+ <string name="enter_input" msgid="1810529547726803893">"USSD message must be between <xliff:g id="MIN_LEN">%d</xliff:g> and <xliff:g id="MAX_LEN">%d</xliff:g> characters. Please try again."</string>
+ <string name="manageConferenceLabel" msgid="4691922394301969053">"Manage conference call"</string>
+ <string name="ok" msgid="3811371167865772377">"OK"</string>
+ <string name="audio_mode_speaker" msgid="27649582100085266">"Speaker"</string>
+ <string name="audio_mode_earpiece" msgid="4156527186373869107">"Handset earpiece"</string>
+ <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Wired headset"</string>
+ <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+ <string name="wait_prompt_str" msgid="7601815427707856238">"Send the following tones?\n"</string>
+ <string name="pause_prompt_str" msgid="1789964702154314806">"Sending tones\n"</string>
+ <string name="send_button" msgid="4106860097497818751">"Send"</string>
+ <string name="pause_prompt_yes" msgid="3564467212025151797">"Yes"</string>
+ <string name="pause_prompt_no" msgid="6686238803236884877">"No"</string>
+ <string name="wild_prompt_str" msgid="5543521676355533577">"Replace wild character with"</string>
+ <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
+ <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
+ <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
+ <string name="puk_unlocked" msgid="2284912838477558454">"Your SIM card has been unblocked. Your phone is unlocking…"</string>
+ <string name="label_ndp" msgid="780479633159517250">"SIM network unlock PIN"</string>
+ <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Unlock"</string>
+ <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Dismiss"</string>
+ <string name="requesting_unlock" msgid="6412629401033249351">"Requesting network unlock…"</string>
+ <string name="unlock_failed" msgid="6490531697031504225">"Network unlock request unsuccessful."</string>
+ <string name="unlock_success" msgid="6770085622238180152">"Network unlock successful."</string>
+ <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobile network settings are not available for this user"</string>
+ <string name="labelGSMMore" msgid="5930842194056092106">"GSM call settings"</string>
+ <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA call settings"</string>
+ <string name="apn_settings" msgid="9043423184895642077">"Access point names"</string>
+ <string name="settings_label" msgid="3876743539816984008">"Network settings"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"Calling accounts"</string>
+ <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Make calls with"</string>
+ <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Make SIP calls with"</string>
+ <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Ask first"</string>
+ <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Settings"</string>
+ <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Choose accounts"</string>
+ <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Phone accounts"</string>
+ <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Add SIP account"</string>
+ <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configure account settings"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi Calling"</string>
+ <string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Do not use Wi-Fi calling"</string>
+ <string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Do not use call assistant"</string>
+ <string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"None"</string>
+ <string name="wifi_calling_call_assistant" msgid="229102032881680320">"Call assistant"</string>
+ <string name="wifi_calling_use_call_assistant" msgid="8460024827012666199">"Use call assistant"</string>
+ <string name="wifi_calling_select_call_assistant" msgid="9296558058772293">"Choose call assistant"</string>
+ <string name="wifi_calling_select_call_assistant_summary" msgid="164985727137156474">"Manage the networks used for calls with"</string>
+ <string name="wifi_calling_use_call_assistant_summary" msgid="6599987137133339698">"Let apps or services manage networks used for calls"</string>
+ <string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configure"</string>
+ <string name="connection_service_default_label" msgid="1498481943805913754">"Built-in connection service"</string>
+ <string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+ <string name="networks" msgid="8873030692174541976">"Network operators"</string>
+ <string name="cell_broadcast_settings" msgid="8740238216690502563">"Emergency broadcasts"</string>
+ <string name="call_settings" msgid="6112441768261754562">"Call settings"</string>
+ <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Additional settings"</string>
+ <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Additional settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Additional GSM-only call settings"</string>
+ <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Additional CDMA call settings"</string>
+ <string name="sum_cdma_call_settings" msgid="284753265979035549">"Additional CDMA-only call settings"</string>
+ <string name="labelNwService" msgid="4699970172021870983">"Network service settings"</string>
+ <string name="labelCallerId" msgid="3888899447379069198">"Caller ID"</string>
+ <string name="sum_loading_settings" msgid="1826692909391168620">"Loading settings…"</string>
+ <string name="sum_hide_caller_id" msgid="1071407020290873782">"Number hidden in outgoing calls"</string>
+ <string name="sum_show_caller_id" msgid="6768534125447290401">"Number displayed in outgoing calls"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"Use default operator settings to display my number in outgoing calls"</string>
+ <string name="labelCW" msgid="6120513814915920200">"Call waiting"</string>
+ <string name="sum_cw_enabled" msgid="8083061901633671397">"During a call, notify me of incoming calls"</string>
+ <string name="sum_cw_disabled" msgid="3648693907300104575">"During a call, notify me of incoming calls"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"Call-forwarding settings"</string>
+ <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Call forwarding settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="labelCF" msgid="2574386948026924737">"Call forwarding"</string>
+ <string name="labelCFU" msgid="8147177368148660600">"Always forward"</string>
+ <string name="messageCFU" msgid="3560082430662923687">"Always use this number"</string>
+ <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Forwarding all calls"</string>
+ <string name="sum_cfu_enabled" msgid="2450052502198827927">"Forwarding all calls to <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Number is unavailable"</string>
+ <string name="sum_cfu_disabled" msgid="8384177689501334080">"Off"</string>
+ <string name="labelCFB" msgid="6139853033106283172">"When busy"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"Number when busy"</string>
+ <string name="sum_cfb_enabled" msgid="5984198104833116690">"Forwarding to <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfb_disabled" msgid="4913145177320506827">"Off"</string>
+ <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Your operator doesn\'t support disabling call forwarding when your phone is busy."</string>
+ <string name="labelCFNRy" msgid="1736067178393744351">"When unanswered"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"Number when unanswered"</string>
+ <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Forwarding to <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Off"</string>
+ <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Your operator doesn\'t support disabling call forwarding when your phone doesn\'t answer."</string>
+ <string name="labelCFNRc" msgid="2614827454402079766">"When unreachable"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Number when unreachable"</string>
+ <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Forwarding to <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Disabled"</string>
+ <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Your operator doesn\'t support disabling call forwarding when your phone is unreachable."</string>
+ <string name="updating_title" msgid="6146755386174019046">"Call settings"</string>
+ <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Call settings can only be changed by the primary user."</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"Call settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="error_updating_title" msgid="7970259216988931777">"Call settings error"</string>
+ <string name="reading_settings" msgid="1920291699287055284">"Reading settings…"</string>
+ <string name="updating_settings" msgid="8171225533884883252">"Updating settings…"</string>
+ <string name="reverting_settings" msgid="4752151682666912828">"Reverting settings…"</string>
+ <string name="response_error" msgid="6674110501330139405">"Unexpected response from network."</string>
+ <string name="exception_error" msgid="7027667130619518211">"Network or SIM card error."</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"Your Phone app\'s fixed dialling numbers setting is turned on. As a result, some call-related features aren\'t working."</string>
+ <string name="radio_off_error" msgid="2304459933248513376">"Please turn on the radio before viewing these settings."</string>
+ <string name="close_dialog" msgid="2365884406356986917">"OK"</string>
+ <string name="enable" msgid="7248657275000173526">"Turn on"</string>
+ <string name="disable" msgid="4678348128118573672">"Turn off"</string>
+ <string name="change_num" msgid="239476305819844391">"Update"</string>
+ <string-array name="clir_display_values">
+ <item msgid="5560134294467334594">"Network default"</item>
+ <item msgid="7876195870037833661">"Hide number"</item>
+ <item msgid="1108394741608734023">"Show number"</item>
+ </string-array>
+ <string name="vm_changed" msgid="380744030726254139">"Voicemail number changed."</string>
+ <string name="vm_change_failed" msgid="3352934863246208918">"Couldn\'t change the voicemail number.\nContact your operator if this problem persists."</string>
+ <string name="fw_change_failed" msgid="5298103228470214665">"Couldn\'t change the forwarding number.\nContact your operator if this problem persists."</string>
+ <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Couldn\'t retrieve and save current forwarding number settings.\nSwitch to the new provider anyway?"</string>
+ <string name="no_change" msgid="3186040086622435212">"No changes were made."</string>
+ <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Choose voicemail service"</string>
+ <string name="voicemail_default" msgid="2001233554889016880">"Your operator"</string>
+ <string name="mobile_networks" msgid="2843854043339307375">"Mobile network settings"</string>
+ <string name="label_available" msgid="1181658289009300430">"Available networks"</string>
+ <string name="load_networks_progress" msgid="5230707536168902952">"Searching…"</string>
+ <string name="empty_networks_list" msgid="4249426905018815316">"No networks found."</string>
+ <string name="search_networks" msgid="1601136049300882441">"Search networks"</string>
+ <string name="network_query_error" msgid="6828516148953325006">"Error while searching for networks."</string>
+ <string name="register_on_network" msgid="9055203954040805084">"Registering on <xliff:g id="NETWORK">%s</xliff:g>…"</string>
+ <string name="not_allowed" msgid="5613353860205691579">"Your SIM card doesn\'t allow a connection to this network."</string>
+ <string name="connect_later" msgid="2308119155752343975">"Can\'t connect to this network at the moment. Try again later."</string>
+ <string name="registration_done" msgid="495135664535876612">"Registered on network."</string>
+ <string name="sum_carrier_select" msgid="3494252551249882718">"Choose a network operator"</string>
+ <string name="sum_search_networks" msgid="2921092249873272715">"Search for all available networks"</string>
+ <string name="select_automatically" msgid="5628402124471810174">"Choose automatically"</string>
+ <string name="sum_select_automatically" msgid="5614890115123292400">"Automatically choose preferred network"</string>
+ <string name="register_automatically" msgid="6017849844573519637">"Automatic registration..."</string>
+ <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferred network type"</string>
+ <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Change the network operating mode"</string>
+ <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Preferred network type"</string>
+ <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Preferred network mode: WCDMA preferred"</string>
+ <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Preferred network mode: GSM only"</string>
+ <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Preferred network mode: WCDMA only"</string>
+ <string name="preferred_network_mode_gsm_wcdma_summary" msgid="3161255745326408587">"Preferred network mode: GSM/WCDMA"</string>
+ <string name="preferred_network_mode_cdma_summary" msgid="3175690187294334241">"Preferred network mode: CDMA"</string>
+ <string name="preferred_network_mode_cdma_evdo_summary" msgid="8332063064712726618">"Preferred network mode: CDMA/EvDo"</string>
+ <string name="preferred_network_mode_cdma_only_summary" msgid="1309770926198634150">"Preferred network mode: CDMA only"</string>
+ <string name="preferred_network_mode_evdo_only_summary" msgid="8472220691721269155">"Preferred network mode: EvDo only"</string>
+ <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="4726682079415227330">"Preferred network mode: CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"Preferred network mode: LTE"</string>
+ <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"Preferred network mode: GSM/WCDMA/LTE"</string>
+ <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"Preferred network mode: CDMA+LTE/EVDO"</string>
+ <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"Preferred network mode: Global"</string>
+ <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"Preferred network mode: LTE/WCDMA"</string>
+ <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"Preferred network mode: LTE/GSM/UMTS"</string>
+ <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"Preferred network mode: LTE/CDMA"</string>
+ <string-array name="preferred_network_mode_choices">
+ <item msgid="7886739962255042385">"LTE/WCDMA"</item>
+ <item msgid="577652050447385699">"LTE"</item>
+ <item msgid="6813597571293773656">"Global"</item>
+ <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
+ <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
+ <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
+ <item msgid="545430093607698090">"EvDo only"</item>
+ <item msgid="1508557726283094448">"CDMA w/o EvDo"</item>
+ <item msgid="4341433122263841224">"CDMA/EvDo auto"</item>
+ <item msgid="5958053792390386668">"GSM/WCDMA auto"</item>
+ <item msgid="7913148405605373434">"WCDMA only"</item>
+ <item msgid="1524224863879435516">"GSM only"</item>
+ <item msgid="3817924849415716259">"GSM/WCDMA preferred"</item>
+ </string-array>
+ <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Enhanced 4G LTE Mode"</string>
+ <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Use LTE services to improve voice and other communications (recommended)"</string>
+ <string name="data_enabled" msgid="5972538663568715366">"Data enabled"</string>
+ <string name="data_enable_summary" msgid="2382798156640007971">"Allow data usage"</string>
+ <string name="roaming" msgid="8871412572928323707">"Data roaming"</string>
+ <string name="roaming_enable" msgid="7331106985174381987">"Connect to data services when roaming"</string>
+ <string name="roaming_disable" msgid="1843417228755568110">"Connect to data services when roaming"</string>
+ <string name="roaming_reenable_message" msgid="8913735676127858115">"You have lost data connectivity because you left your home network with data roaming turned off."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"You may incur significant charges."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Allow data roaming?"</string>
+ <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Options"</string>
+ <string name="cdma_options" msgid="4016822858172249884">"CDMA Options"</string>
+ <string name="throttle_data_usage" msgid="3715677828160555808">"Data usage"</string>
+ <string name="throttle_current_usage" msgid="8762280193043815361">"Data used in current period"</string>
+ <string name="throttle_time_frame" msgid="1915198770363734685">"Data usage period"</string>
+ <string name="throttle_rate" msgid="4710388992676803508">"Data rate policy"</string>
+ <string name="throttle_help" msgid="243651091785169900">"Learn more"</string>
+ <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) of <xliff:g id="USED_2">%3$s</xliff:g> period maximum\nNext period starts in <xliff:g id="USED_3">%4$d</xliff:g> days (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+ <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) of <xliff:g id="USED_2">%3$s</xliff:g> period maximum"</string>
+ <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maximum exceeded\nData rate reduced to <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
+ <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ of cycle elapsed\nNext period starts in <xliff:g id="USED_1">%2$d</xliff:g> days (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+ <string name="throttle_rate_subtext" msgid="2149102656120726855">"Data rate reduced to <xliff:g id="USED">%1$d</xliff:g> Kb/s if data usage limit is exceeded"</string>
+ <string name="throttle_help_subtext" msgid="3633091498168446044">"More information about your operator\'s mobile network data use policy"</string>
+ <string name="cell_broadcast_sms" msgid="5584192824053625842">"Mobile Broadcast SMS"</string>
+ <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Mobile Broadcast SMS"</string>
+ <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Mobile Broadcast SMS enabled"</string>
+ <string name="cell_bc_sms_disable" msgid="3398365088309408749">"Mobile Broadcast SMS disabled"</string>
+ <string name="cb_sms_settings" msgid="651715019785107312">"Mobile Broadcast SMS settings"</string>
+ <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Emergency Broadcast"</string>
+ <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Emergency Broadcast enabled"</string>
+ <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Emergency Broadcast disabled"</string>
+ <string name="enable_disable_administrative" msgid="6501582322182059412">"Administrative"</string>
+ <string name="administrative_enable" msgid="1750086122962032235">"Administrative enabled"</string>
+ <string name="administrative_disable" msgid="8433273857248698539">"Administrative disabled"</string>
+ <string name="enable_disable_maintenance" msgid="1819693083025106678">"Maintenance"</string>
+ <string name="maintenance_enable" msgid="8566636458770971189">"Maintenance enabled"</string>
+ <string name="maintenance_disable" msgid="7340189100885066077">"Maintenance disabled"</string>
+ <string name="general_news_settings" msgid="4968779723948432978">"General News"</string>
+ <string name="bf_news_settings" msgid="3935593091894685267">"Business and Financial News"</string>
+ <string name="sports_news_settings" msgid="7649399631270052835">"Sports News"</string>
+ <string name="entertainment_news_settings" msgid="5051153952959405035">"Entertainment News"</string>
+ <string name="enable_disable_local" msgid="7890281063123416120">"Local"</string>
+ <string name="local_enable" msgid="6370463247609136359">"Local news enabled"</string>
+ <string name="local_disable" msgid="4405691986943795798">"Local news disabled"</string>
+ <string name="enable_disable_regional" msgid="4905652414535565872">"Regional"</string>
+ <string name="regional_enable" msgid="4434680415437834759">"Regional news enabled"</string>
+ <string name="regional_disable" msgid="5359325527213850077">"Regional news disabled"</string>
+ <string name="enable_disable_national" msgid="236278090206880734">"National"</string>
+ <string name="national_enable" msgid="1172443648912246952">"National news enabled"</string>
+ <string name="national_disable" msgid="326018148178601166">"National news disabled"</string>
+ <string name="enable_disable_international" msgid="7535348799604565592">"International"</string>
+ <string name="international_enable" msgid="5855356769925044927">"International news enabled"</string>
+ <string name="international_disable" msgid="2850648591041088931">"International news disabled"</string>
+ <string name="list_language_title" msgid="2841683501919760043">"Language"</string>
+ <string name="list_language_summary" msgid="8109546531071241601">"Select the news language"</string>
+ <string-array name="list_language_entries">
+ <item msgid="6137851079727305485">"English"</item>
+ <item msgid="1151988412809572526">"French"</item>
+ <item msgid="577840534704312665">"Spanish"</item>
+ <item msgid="8385712091143148180">"Japanese"</item>
+ <item msgid="1858401628368130638">"Korean"</item>
+ <item msgid="1933212028684529632">"Chinese"</item>
+ <item msgid="1908428006803639064">"Hebrew"</item>
+ </string-array>
+ <string-array name="list_language_values">
+ <item msgid="1804908636436467150">"1"</item>
+ <item msgid="289708030346890334">"2"</item>
+ <item msgid="1121469729692402684">"3"</item>
+ <item msgid="2614093115912897722">"4"</item>
+ <item msgid="2411164639857960614">"5"</item>
+ <item msgid="5884448729274543324">"6"</item>
+ <item msgid="5511864807618312598">"7"</item>
+ </string-array>
+ <string name="list_language_dtitle" msgid="5442908726538951934">"Languages"</string>
+ <string name="enable_disable_local_weather" msgid="986967454867219114">"Local Weather"</string>
+ <string name="local_weather_enable" msgid="6199315114382448922">"Local Weather enabled"</string>
+ <string name="local_weather_disable" msgid="2510158089142626480">"Local Weather disabled"</string>
+ <string name="enable_disable_atr" msgid="8339572391278872343">"Area Traffic Reports"</string>
+ <string name="atr_enable" msgid="5541757457789181799">"Area Traffic Reports enabled"</string>
+ <string name="atr_disable" msgid="7085558154727596455">"Area Traffic Reports disabled"</string>
+ <string name="enable_disable_lafs" msgid="668189073721277199">"Local Airport Flight Schedules"</string>
+ <string name="lafs_enable" msgid="2791978667205137052">"Local Airport Flight Schedules enabled"</string>
+ <string name="lafs_disable" msgid="2391212397725495350">"Local Airport Flight Schedules disabled"</string>
+ <string name="enable_disable_restaurants" msgid="6240381945336814024">"Restaurants"</string>
+ <string name="restaurants_enable" msgid="5137657479469118847">"Restaurants enabled"</string>
+ <string name="restaurants_disable" msgid="3678480270938424092">"Restaurants disabled"</string>
+ <string name="enable_disable_lodgings" msgid="1822029172658551202">"Lodgings"</string>
+ <string name="lodgings_enable" msgid="3230042508992850322">"Lodgings enabled"</string>
+ <string name="lodgings_disable" msgid="3387879742320682391">"Lodgings disabled"</string>
+ <string name="enable_disable_retail_directory" msgid="1357809784475660303">"Retail Directory"</string>
+ <string name="retail_directory_enable" msgid="3280626290436111496">"Retail Directory enabled"</string>
+ <string name="retail_directory_disable" msgid="6479739816662879027">"Retail Directory disabled"</string>
+ <string name="enable_disable_advertisements" msgid="5999495926176182128">"Advertisements"</string>
+ <string name="advertisements_enable" msgid="2050305021264683786">"Advertisements enabled"</string>
+ <string name="advertisements_disable" msgid="8350985908788707935">"Advertisements disabled"</string>
+ <string name="enable_disable_stock_quotes" msgid="6397810445293533603">"Share Quotes"</string>
+ <string name="stock_quotes_enable" msgid="4384802470887170543">"Share Quotes enabled"</string>
+ <string name="stock_quotes_disable" msgid="4781450084565594998">"Share Quotes disabled"</string>
+ <string name="enable_disable_eo" msgid="4863043263443942494">"Employment Opportunities"</string>
+ <string name="eo_enable" msgid="8623559062015685813">"Employment Opportunities enabled"</string>
+ <string name="eo_disable" msgid="3863812478090907609">"Employment Opportunities disabled"</string>
+ <string name="enable_disable_mhh" msgid="908214593528968522">"Medical, Health and Hospital"</string>
+ <string name="mhh_enable" msgid="5544500632306446815">"Medical, Health and Hospital enabled"</string>
+ <string name="mhh_disable" msgid="8998210550117117437">"Medical, Health and Hospital disabled"</string>
+ <string name="enable_disable_technology_news" msgid="3517184627114999149">"Technology News"</string>
+ <string name="technology_news_enable" msgid="7995209394210455181">"Technology News enabled"</string>
+ <string name="technology_news_disable" msgid="5483490380561851946">"Technology News disabled"</string>
+ <string name="enable_disable_multi_category" msgid="626771003122899280">"Multi-category"</string>
+ <string name="multi_category_enable" msgid="1179299804641721768">"Multi-category enabled"</string>
+ <string name="multi_category_disable" msgid="880104702904139505">"Multi-category disabled"</string>
+ <string name="network_lte" msgid="7702681952521375754">"LTE (recommended)"</string>
+ <string name="network_4G" msgid="2723512640529983138">"4G (recommended)"</string>
+ <string name="network_global" msgid="1323190488685355309">"Global"</string>
+ <string name="cdma_system_select_title" msgid="5757657769327732833">"System select"</string>
+ <string name="cdma_system_select_summary" msgid="60460043745797517">"Change the CDMA roaming mode"</string>
+ <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"System select"</string>
+ <string-array name="cdma_system_select_choices">
+ <item msgid="176474317493999285">"Home only"</item>
+ <item msgid="1205664026446156265">"Automatic"</item>
+ </string-array>
+ <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA subscription"</string>
+ <string name="cdma_subscription_summary" msgid="2530890766115781140">"Change between RUIM/SIM and NV"</string>
+ <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"subscription"</string>
+ <string-array name="cdma_subscription_choices">
+ <item msgid="2258014151300708431">"RUIM/SIM"</item>
+ <item msgid="5127722015571873880">"NV"</item>
+ </string-array>
+ <string-array name="cdma_subscription_values">
+ <item msgid="7494167883478914080">"0"</item>
+ <item msgid="6043847456049107742">"1"</item>
+ </string-array>
+ <string name="cdma_activate_device" msgid="3793805892364814518">"Activate device"</string>
+ <string name="cdma_lte_data_service" msgid="4255018217292548962">"Set up data service"</string>
+ <string name="carrier_settings_title" msgid="9028166176523012300">"Provider settings"</string>
+ <string name="fdn" msgid="7878832555095183202">"Fixed dialling numbers"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Fixed dialling numbers (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="manage_fdn_list" msgid="8777755791892122369">"FDN list"</string>
+ <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN list (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn_activation" msgid="2156479741307463576">"FDN activation"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"Fixed dialling numbers are enabled"</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"Fixed dialling numbers are disabled"</string>
+ <string name="enable_fdn" msgid="3740191529180493851">"Enable FDN"</string>
+ <string name="disable_fdn" msgid="7944020890722540616">"Disable FDN"</string>
+ <string name="change_pin2" msgid="2153563695382176676">"Change PIN2"</string>
+ <string name="enable_fdn_ok" msgid="7215588870329688132">"Disable FDN"</string>
+ <string name="disable_fdn_ok" msgid="5727046928930740173">"Enable FDN"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"Manage fixed dialling numbers"</string>
+ <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Change PIN for FDN access"</string>
+ <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Manage phone number list"</string>
+ <string name="voice_privacy" msgid="3776841382844614716">"Voice privacy"</string>
+ <string name="voice_privacy_summary" msgid="3159383389833516214">"Enable enhanced privacy mode"</string>
+ <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY mode"</string>
+ <string name="tty_mode_option_summary" msgid="1073835131534808732">"Set TTY mode"</string>
+ <string name="auto_retry_mode_title" msgid="4073265511427813322">"Auto-retry"</string>
+ <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Enable Auto-retry mode"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY Mode change is not allowed during a video call"</string>
+ <string name="menu_add" msgid="1882023737425114762">"Add contact"</string>
+ <string name="menu_edit" msgid="7143003705504672374">"Edit contact"</string>
+ <string name="menu_delete" msgid="3977150783449642851">"Delete contact"</string>
+ <string name="get_pin2" msgid="8204677063922225311">"Type PIN2"</string>
+ <string name="name" msgid="7329028332786872378">"Name"</string>
+ <string name="number" msgid="7905950798349903858">"Number"</string>
+ <string name="save" msgid="4094274636321939086">"Save"</string>
+ <string name="add_fdn_contact" msgid="2481915899633353976">"Add fixed dialling number"</string>
+ <string name="adding_fdn_contact" msgid="7627379633721940991">"Adding fixed dialling number…"</string>
+ <string name="fdn_contact_added" msgid="7458335758501736665">"Fixed dialling number added."</string>
+ <string name="edit_fdn_contact" msgid="7976936035587081480">"Edit fixed dialling number"</string>
+ <string name="updating_fdn_contact" msgid="8370929876849803600">"Updating fixed dialling number…"</string>
+ <string name="fdn_contact_updated" msgid="5497828782609005017">"Fixed dialling number updated."</string>
+ <string name="delete_fdn_contact" msgid="6668958073074151717">"Delete fixed dialling number"</string>
+ <string name="deleting_fdn_contact" msgid="5669163206349319969">"Deleting fixed dialling number…"</string>
+ <string name="fdn_contact_deleted" msgid="7154162327112259569">"Fixed dialling number deleted."</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"FDN wasn\'t updated because you typed an incorrect PIN."</string>
+ <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN wasn\'t updated because the number can\'t exceed 20 digits."</string>
+ <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN wasn\'t updated. The PIN2 was incorrect or the phone number was rejected."</string>
+ <string name="fdn_failed" msgid="540018079008319747">"FDN operation failed."</string>
+ <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Reading from SIM card…"</string>
+ <string name="simContacts_empty" msgid="5270660846489561932">"No contacts on your SIM card."</string>
+ <string name="simContacts_title" msgid="1861472842524839921">"Select contacts to import"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Turn off aeroplane mode to import contacts from the SIM card."</string>
+ <string name="enable_pin" msgid="5422767284133234860">"Enable/disable SIM PIN"</string>
+ <string name="change_pin" msgid="9174186126330785343">"Change SIM PIN"</string>
+ <string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
+ <string name="oldPinLabel" msgid="5287773661246368314">"Old PIN"</string>
+ <string name="newPinLabel" msgid="207488227285336897">"New PIN"</string>
+ <string name="confirmPinLabel" msgid="257597715098070206">"Confirm new PIN"</string>
+ <string name="badPin" msgid="8955102849303984935">"The old PIN that you typed isn\'t correct. Try again."</string>
+ <string name="mismatchPin" msgid="5923253370683071889">"The PINs that you typed don\'t match. Try again."</string>
+ <string name="invalidPin" msgid="5981171102258684792">"Type a PIN that is 4 to 8 numbers."</string>
+ <string name="disable_sim_pin" msgid="3419351358300716472">"Clear SIM PIN"</string>
+ <string name="enable_sim_pin" msgid="4845145659651484248">"Set SIM PIN"</string>
+ <string name="enable_in_progress" msgid="3417917024688497010">"Setting PIN…"</string>
+ <string name="enable_pin_ok" msgid="2918545971413270063">"PIN set"</string>
+ <string name="disable_pin_ok" msgid="2109571368635883688">"PIN cleared"</string>
+ <string name="pin_failed" msgid="5644377896213584760">"PIN incorrect"</string>
+ <string name="pin_changed" msgid="4455736268023261662">"PIN updated"</string>
+ <string name="puk_requested" msgid="5921393215789090200">"Password incorrect. PIN now blocked. PUK requested."</string>
+ <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
+ <string name="oldPin2Label" msgid="8559146795026261502">"Old PIN2"</string>
+ <string name="newPin2Label" msgid="4573956902204349054">"New PIN2"</string>
+ <string name="confirmPin2Label" msgid="8100319484454787708">"Confirm new PIN2"</string>
+ <string name="badPuk2" msgid="7910064009531541708">"PUK2 incorrect. Try again."</string>
+ <string name="badPin2" msgid="6646896629970023109">"Old PIN2 incorrect. Try again."</string>
+ <string name="mismatchPin2" msgid="4177967478551851117">"PIN2s don\'t match. Try again."</string>
+ <string name="invalidPin2" msgid="1757045131429105595">"Enter a PIN2 that is 4 to 8 numbers."</string>
+ <string name="invalidPuk2" msgid="7059081153334815973">"Enter a PUK2 that is 8 numbers."</string>
+ <string name="pin2_changed" msgid="3724522579945610956">"PIN2 updated"</string>
+ <string name="label_puk2_code" msgid="4688069961795341948">"Enter PUK2 code"</string>
+ <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Password incorrect. PIN2 now Blocked. To try again, change PIN 2."</string>
+ <string name="puk2_requested" msgid="5831015200030161434">"Password incorrect. SIM now locked. Enter PUK2."</string>
+ <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 is permanently blocked."</string>
+ <string name="pin2_attempts" msgid="720736232885011507">\n"You have <xliff:g id="NUMBER">%d</xliff:g> remaining attempts."</string>
+ <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 no longer blocked"</string>
+ <string name="doneButton" msgid="2859593360997984240">"Done"</string>
+ <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Voicemail number"</string>
+ <string name="card_title_dialing" msgid="5769417478498348054">"Dialling"</string>
+ <string name="card_title_redialing" msgid="8253487008234167266">"Redialling"</string>
+ <string name="card_title_conf_call" msgid="1162980346189744501">"Conference call"</string>
+ <string name="card_title_incoming_call" msgid="7364539451234646909">"Incoming call"</string>
+ <string name="card_title_call_ended" msgid="5544730338889702298">"Call ended"</string>
+ <string name="card_title_on_hold" msgid="821463117892339942">"On hold"</string>
+ <string name="card_title_hanging_up" msgid="3999101620995182450">"Hanging up"</string>
+ <string name="card_title_in_call" msgid="6346543933068225205">"In call"</string>
+ <string name="notification_dialing" msgid="2107666444937350731">"Dialling"</string>
+ <string name="notification_missedCallTitle" msgid="7554385905572364535">"Missed call"</string>
+ <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Missed calls"</string>
+ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+ <string name="notification_missedCallTicker" msgid="504686252427747209">"Missed call from <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_ongoing_call" msgid="7068688957273482989">"On-going call"</string>
+ <string name="notification_on_hold" msgid="3480694969511790465">"On hold"</string>
+ <string name="notification_incoming_call" msgid="2820429205043529642">"Incoming call"</string>
+ <string name="notification_voicemail_title" msgid="8933468752045550523">"New voicemail"</string>
+ <string name="notification_voicemail_title_count" msgid="4366360747660929916">"New voicemail (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+ <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Dial <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+ <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Voicemail number unknown"</string>
+ <string name="notification_network_selection_title" msgid="4224455487793492772">"No service"</string>
+ <string name="notification_network_selection_text" msgid="2607085729661923269">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string>
+ <string name="notification_action_end_call" msgid="6069460915123531620">"Hang up"</string>
+ <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
+ <string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
+ <string name="incall_error_emergency_only" msgid="4678640422710818317">"Not registered on network."</string>
+ <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobile network is not available. Connect to a wireless network to make a call."</string>
+ <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"To place a call, enter a valid number."</string>
+ <string name="incall_error_call_failed" msgid="6302746943230078197">"Can\'t call."</string>
+ <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starting MMI sequence…"</string>
+ <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Service not supported"</string>
+ <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Can\'t switch calls."</string>
+ <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Can\'t separate call."</string>
+ <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Can\'t transfer."</string>
+ <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Unable to conference calls."</string>
+ <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Can\'t reject call."</string>
+ <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
+ <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
+ <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
+ <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
+ <string name="dial_emergency_error" msgid="1509085166367420355">"Can\'t call. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is not an emergency number."</string>
+ <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Can\'t call. Dial an emergency number."</string>
+ <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Use keyboard to dial"</string>
+ <string name="onscreenHoldText" msgid="2285258239691145872">"Hold"</string>
+ <string name="onscreenEndCallText" msgid="4403855834875398585">"End"</string>
+ <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Dial pad"</string>
+ <string name="onscreenMuteText" msgid="5011369181754261374">"Mute"</string>
+ <string name="onscreenAddCallText" msgid="5140385634712287403">"Add call"</string>
+ <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Merge calls"</string>
+ <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Swap"</string>
+ <string name="onscreenManageCallsText" msgid="5473231160123254154">"Manage calls"</string>
+ <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Manage conference"</string>
+ <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
+ <string name="onscreenVideoCallText" msgid="4800924186056115442">"Video call"</string>
+ <string name="importSimEntry" msgid="6614358325359736031">"Import"</string>
+ <string name="importAllSimEntries" msgid="1503181169636198673">"Import all"</string>
+ <string name="importingSimContacts" msgid="7374056215462575769">"Importing SIM contacts"</string>
+ <string name="importToFDNfromContacts" msgid="2130620207013368580">"Import from contacts"</string>
+ <string name="hac_mode_title" msgid="8740268574688743289">"Hearing aids"</string>
+ <string name="hac_mode_summary" msgid="6833851160514929341">"Turn on hearing-aid compatibility"</string>
+ <string-array name="tty_mode_entries">
+ <item msgid="512950011423868021">"TTY Off"</item>
+ <item msgid="3971695875449640648">"TTY Full"</item>
+ <item msgid="1937509904407445684">"TTY HCO"</item>
+ <item msgid="5644925873488772224">"TTY VCO"</item>
+ </string-array>
+ <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF tones"</string>
+ <string name="dtmf_tones_summary" msgid="3351820372864020331">"Set the length of DTMF tones"</string>
+ <string-array name="dtmf_tone_entries">
+ <item msgid="899650777817315681">"Normal"</item>
+ <item msgid="2883365539347850535">"Long"</item>
+ </string-array>
+ <string name="network_info_message" msgid="7738596060242881930">"Network message"</string>
+ <string name="network_error_message" msgid="3394780436230411413">"Error message"</string>
+ <string name="ota_title_activate" msgid="8616918561356194398">"Activate your phone"</string>
+ <string name="ota_touch_activate" msgid="6553212803262586244">"A special call needs to be made to activate your phone service. \n\nAfter pressing “Activate”, listen to the instructions provided to activate your phone."</string>
+ <string name="ota_hfa_activation_title" msgid="2234246934160473981">"Activating..."</string>
+ <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"The phone is activating your mobile data service.\n\nThis can take up to 5 minutes."</string>
+ <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Skip activation?"</string>
+ <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"If you skip activation, you can\'t place calls or connect to mobile data networks (though you can connect to Wi-Fi networks). Until you activate your phone, you are asked to activate it each time that you turn it on."</string>
+ <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Skip"</string>
+ <string name="ota_activate" msgid="1368528132525626264">"Activate"</string>
+ <string name="ota_title_activate_success" msgid="6570240212263372046">"Phone is activated."</string>
+ <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"Problem with activation"</string>
+ <string name="ota_listen" msgid="162923839877584937">"Follow the spoken instructions until you hear that activation is complete."</string>
+ <string name="ota_speaker" msgid="6904589278542719647">"Speaker"</string>
+ <string name="ota_progress" msgid="460876637828044519">"Programming your phone…"</string>
+ <string name="ota_failure" msgid="7713756181204620397">"Couldn\'t programme your phone"</string>
+ <string name="ota_successful" msgid="1880780692887077407">"Your phone is now activated. It may take up to 15 minutes for service to start."</string>
+ <string name="ota_unsuccessful" msgid="8072141612635635357">"Your phone didn\'t activate. \nYou may need to find an area with better coverage (near a window or outside). \n\nTry again or call customer service for more options."</string>
+ <string name="ota_spc_failure" msgid="3909983542575030796">"EXCESS SPC FAILURES"</string>
+ <string name="ota_call_end" msgid="4537279738134612388">"Back"</string>
+ <string name="ota_try_again" msgid="7685477206465902290">"Try again"</string>
+ <string name="ota_next" msgid="3904945374358235910">"Next"</string>
+ <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
+ <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entered Emergency Callback Mode"</string>
+ <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
+ <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Data connection disabled"</string>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">No data connection for <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
+ <item quantity="one">No data connection for <xliff:g id="COUNT_0">%s</xliff:g> minute</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?</item>
+ <item quantity="one">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. Do you want to exit now?</item>
+ <item quantity="one">The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. Do you want to exit now?</item>
+ </plurals>
+ <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"The action selected isn\'t available during an emergency call."</string>
+ <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Exiting Emergency Callback mode"</string>
+ <string name="alert_dialog_yes" msgid="6674268047820703974">"Yes"</string>
+ <string name="alert_dialog_no" msgid="1476091437797628703">"No"</string>
+ <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Dismiss"</string>
+ <string name="voicemail_provider" msgid="5135942703327136909">"Service"</string>
+ <string name="voicemail_settings" msgid="72448049107749316">"Setup"</string>
+ <string name="voicemail_number_not_set" msgid="6724904736891087856">"<Not set>"</string>
+ <string name="other_settings" msgid="3672912580359716394">"Other call settings"</string>
+ <string name="calling_via_template" msgid="4839419581866928142">"Calling via <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+ <string name="contactPhoto" msgid="4713193418046639466">"contact photo"</string>
+ <string name="goPrivate" msgid="865837794424530980">"go private"</string>
+ <string name="selectContact" msgid="781975788478987237">"select contact"</string>
+ <string name="not_voice_capable" msgid="2739898841461577811">"Voice calling not supported"</string>
+ <string name="description_dial_button" msgid="7459705245418435351">"dial"</string>
+ <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string>
+ <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string>
+ <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string>
+ <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Dialpad auto-complete"</string>
+ <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone & Vibrate"</string>
+ <string name="pstn_connection_service_label" msgid="1743245930577325900">"Built-in SIM cards"</string>
+ <string name="enable_video_calling_title" msgid="7237253660669000899">"Turn on video calling"</string>
+ <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"To turn on video calling, you need to enable Enhanced 4G LTE Mode in network settings."</string>
+ <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Network settings"</string>
+ <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"Close"</string>
+ <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Emergency calls"</string>
+ <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency calling only"</string>
+ <string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Incoming Wi-Fi call"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi call"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touch again to open"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 894aac9..24dc3ba 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Phone accounts"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Add SIP account"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configure account settings"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi calling"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi Calling"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Do not use Wi-Fi calling"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Do not use call assistant"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"None"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configure"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Built-in connection service"</string>
<string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Network operators"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Emergency broadcasts"</string>
@@ -129,7 +130,7 @@
<string name="reverting_settings" msgid="4752151682666912828">"Reverting settings…"</string>
<string name="response_error" msgid="6674110501330139405">"Unexpected response from network."</string>
<string name="exception_error" msgid="7027667130619518211">"Network or SIM card error."</string>
- <string name="fdn_check_failure" msgid="18200614306525434">"Your Phone app\'s Fixed Dialing Numbers setting is turned on. As a result, some call-related features aren\'t working."</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"Your Phone app\'s fixed dialling numbers setting is turned on. As a result, some call-related features aren\'t working."</string>
<string name="radio_off_error" msgid="2304459933248513376">"Please turn on the radio before viewing these settings."</string>
<string name="close_dialog" msgid="2365884406356986917">"OK"</string>
<string name="enable" msgid="7248657275000173526">"Turn on"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Connect to data services when roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Connect to data services when roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"You have lost data connectivity because you left your home network with data roaming turned off."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Allow data usage when roaming? Significant charges may apply."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"You may incur significant charges."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Allow data roaming?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Options"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA Options"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Data usage"</string>
@@ -329,19 +331,19 @@
<string name="cdma_activate_device" msgid="3793805892364814518">"Activate device"</string>
<string name="cdma_lte_data_service" msgid="4255018217292548962">"Set up data service"</string>
<string name="carrier_settings_title" msgid="9028166176523012300">"Provider settings"</string>
- <string name="fdn" msgid="7878832555095183202">"Fixed Dialling Numbers"</string>
- <string name="fdn_with_label" msgid="187084204115493366">"Fixed Dialing Numbers (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn" msgid="7878832555095183202">"Fixed dialling numbers"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Fixed dialling numbers (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="manage_fdn_list" msgid="8777755791892122369">"FDN list"</string>
<string name="fdn_list_with_label" msgid="7437232552210469217">"FDN list (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="fdn_activation" msgid="2156479741307463576">"FDN activation"</string>
- <string name="fdn_enabled" msgid="5238109009915521240">"Fixed Dialling Numbers are enabled"</string>
- <string name="fdn_disabled" msgid="4700049736675368279">"Fixed Dialling Numbers are disabled"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"Fixed dialling numbers are enabled"</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"Fixed dialling numbers are disabled"</string>
<string name="enable_fdn" msgid="3740191529180493851">"Enable FDN"</string>
<string name="disable_fdn" msgid="7944020890722540616">"Disable FDN"</string>
<string name="change_pin2" msgid="2153563695382176676">"Change PIN2"</string>
<string name="enable_fdn_ok" msgid="7215588870329688132">"Disable FDN"</string>
<string name="disable_fdn_ok" msgid="5727046928930740173">"Enable FDN"</string>
- <string name="sum_fdn" msgid="1959399454900272878">"Manage Fixed Dialling Numbers"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"Manage fixed dialling numbers"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"Change PIN for FDN access"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Manage phone number list"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Voice privacy"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Set TTY mode"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Auto-retry"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Enable Auto-retry mode"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY Mode change is not allowed during a video call"</string>
<string name="menu_add" msgid="1882023737425114762">"Add contact"</string>
<string name="menu_edit" msgid="7143003705504672374">"Edit contact"</string>
<string name="menu_delete" msgid="3977150783449642851">"Delete contact"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Reading from SIM card…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"No contacts on your SIM card."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Select contacts to import"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"To import contacts from the SIM card, first turn off Aeroplane mode."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Turn off aeroplane mode to import contacts from the SIM card."</string>
<string name="enable_pin" msgid="5422767284133234860">"Enable/disable SIM PIN"</string>
<string name="change_pin" msgid="9174186126330785343">"Change SIM PIN"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Hang up"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"To place a call, first turn off Aeroplane mode."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Not registered on network."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobile network is not available. Connect to a wireless network to make a call."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"To place a call, enter a valid number."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Can\'t call."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starting MMI sequence…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Unable to conference calls."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Can\'t reject call."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entered Emergency Callback Mode"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Data connection disabled"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"No data connection for <xliff:g id="COUNT">%s</xliff:g> minute"</item>
- <item quantity="other" msgid="3122217344579273583">"No data connection for <xliff:g id="COUNT">%s</xliff:g> minutes"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"The phone will be in Emergency Callback mode for <xliff:g id="COUNT">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?"</item>
- <item quantity="other" msgid="8617116564023933114">"The phone will be in Emergency Callback mode for <xliff:g id="COUNT">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT">%s</xliff:g> minute. Do you want to exit now?"</item>
- <item quantity="other" msgid="6115622137771382224">"The action selected isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT">%s</xliff:g> minutes. Do you want to exit now?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">No data connection for <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
+ <item quantity="one">No data connection for <xliff:g id="COUNT_0">%s</xliff:g> minute</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?</item>
+ <item quantity="one">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. Do you want to exit now?</item>
+ <item quantity="one">The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. Do you want to exit now?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"The action selected isn\'t available during an emergency call."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Exiting Emergency Callback mode"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Yes"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Emergency calls"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency calling only"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Incoming Wi-Fi call"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi call"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touch again to open"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 894aac9..24dc3ba 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Phone accounts"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Add SIP account"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configure account settings"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi calling"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi Calling"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Do not use Wi-Fi calling"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Do not use call assistant"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"None"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configure"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Built-in connection service"</string>
<string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Network operators"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Emergency broadcasts"</string>
@@ -129,7 +130,7 @@
<string name="reverting_settings" msgid="4752151682666912828">"Reverting settings…"</string>
<string name="response_error" msgid="6674110501330139405">"Unexpected response from network."</string>
<string name="exception_error" msgid="7027667130619518211">"Network or SIM card error."</string>
- <string name="fdn_check_failure" msgid="18200614306525434">"Your Phone app\'s Fixed Dialing Numbers setting is turned on. As a result, some call-related features aren\'t working."</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"Your Phone app\'s fixed dialling numbers setting is turned on. As a result, some call-related features aren\'t working."</string>
<string name="radio_off_error" msgid="2304459933248513376">"Please turn on the radio before viewing these settings."</string>
<string name="close_dialog" msgid="2365884406356986917">"OK"</string>
<string name="enable" msgid="7248657275000173526">"Turn on"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Connect to data services when roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Connect to data services when roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"You have lost data connectivity because you left your home network with data roaming turned off."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Allow data usage when roaming? Significant charges may apply."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"You may incur significant charges."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Allow data roaming?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Options"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA Options"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Data usage"</string>
@@ -329,19 +331,19 @@
<string name="cdma_activate_device" msgid="3793805892364814518">"Activate device"</string>
<string name="cdma_lte_data_service" msgid="4255018217292548962">"Set up data service"</string>
<string name="carrier_settings_title" msgid="9028166176523012300">"Provider settings"</string>
- <string name="fdn" msgid="7878832555095183202">"Fixed Dialling Numbers"</string>
- <string name="fdn_with_label" msgid="187084204115493366">"Fixed Dialing Numbers (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn" msgid="7878832555095183202">"Fixed dialling numbers"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Fixed dialling numbers (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="manage_fdn_list" msgid="8777755791892122369">"FDN list"</string>
<string name="fdn_list_with_label" msgid="7437232552210469217">"FDN list (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="fdn_activation" msgid="2156479741307463576">"FDN activation"</string>
- <string name="fdn_enabled" msgid="5238109009915521240">"Fixed Dialling Numbers are enabled"</string>
- <string name="fdn_disabled" msgid="4700049736675368279">"Fixed Dialling Numbers are disabled"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"Fixed dialling numbers are enabled"</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"Fixed dialling numbers are disabled"</string>
<string name="enable_fdn" msgid="3740191529180493851">"Enable FDN"</string>
<string name="disable_fdn" msgid="7944020890722540616">"Disable FDN"</string>
<string name="change_pin2" msgid="2153563695382176676">"Change PIN2"</string>
<string name="enable_fdn_ok" msgid="7215588870329688132">"Disable FDN"</string>
<string name="disable_fdn_ok" msgid="5727046928930740173">"Enable FDN"</string>
- <string name="sum_fdn" msgid="1959399454900272878">"Manage Fixed Dialling Numbers"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"Manage fixed dialling numbers"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"Change PIN for FDN access"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Manage phone number list"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Voice privacy"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Set TTY mode"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Auto-retry"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Enable Auto-retry mode"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY Mode change is not allowed during a video call"</string>
<string name="menu_add" msgid="1882023737425114762">"Add contact"</string>
<string name="menu_edit" msgid="7143003705504672374">"Edit contact"</string>
<string name="menu_delete" msgid="3977150783449642851">"Delete contact"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Reading from SIM card…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"No contacts on your SIM card."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Select contacts to import"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"To import contacts from the SIM card, first turn off Aeroplane mode."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Turn off aeroplane mode to import contacts from the SIM card."</string>
<string name="enable_pin" msgid="5422767284133234860">"Enable/disable SIM PIN"</string>
<string name="change_pin" msgid="9174186126330785343">"Change SIM PIN"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Hang up"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Call back"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"To place a call, first turn off Aeroplane mode."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Not registered on network."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobile network is not available. Connect to a wireless network to make a call."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"To place a call, enter a valid number."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Can\'t call."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starting MMI sequence…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Unable to conference calls."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Can\'t reject call."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entered Emergency Callback Mode"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Data connection disabled"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"No data connection for <xliff:g id="COUNT">%s</xliff:g> minute"</item>
- <item quantity="other" msgid="3122217344579273583">"No data connection for <xliff:g id="COUNT">%s</xliff:g> minutes"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"The phone will be in Emergency Callback mode for <xliff:g id="COUNT">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?"</item>
- <item quantity="other" msgid="8617116564023933114">"The phone will be in Emergency Callback mode for <xliff:g id="COUNT">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT">%s</xliff:g> minute. Do you want to exit now?"</item>
- <item quantity="other" msgid="6115622137771382224">"The action selected isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT">%s</xliff:g> minutes. Do you want to exit now?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">No data connection for <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
+ <item quantity="one">No data connection for <xliff:g id="COUNT_0">%s</xliff:g> minute</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?</item>
+ <item quantity="one">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. Do you want to exit now?</item>
+ <item quantity="one">The selected action isn\'t available while in the Emergency Callback mode. The phone will be in this mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. Do you want to exit now?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"The action selected isn\'t available during an emergency call."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Exiting Emergency Callback mode"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Yes"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Emergency calls"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency calling only"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Incoming Wi-Fi call"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi call"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touch again to open"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index e954611..3845ce6 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Cuentas telefónicas"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Agregar cuenta SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Cómo configurar la cuenta"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Llamadas por redes Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Llamada por Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"No utilizar llamadas por Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"No utilizar asistente de llamadas"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ninguno"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurar"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Servicio de conexión integrado"</string>
<string name="voicemail" msgid="8693759337917898954">"Correo de voz"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Buzón de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Correo de voz:"</string>
<string name="networks" msgid="8873030692174541976">"Operadores de red"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmisiones de emergencia"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Conectar a servicios de datos en roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Conectar a servicios de datos en roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Perdiste la conectividad de datos porque se desactivó la itinerancia de datos de tu red doméstica."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"¿Permitir el uso de datos en roaming? Pueden aplicarse cargos significativos."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Puede ocasionar gastos importantes."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"¿Deseas permitir el roaming de datos?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opciones de GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opciones de CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Utilización de datos"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Establecer modo de TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Reintento automático"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Activar el modo de reintento automático"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"No se permite cambiar el modo TTY durante una videollamada."</string>
<string name="menu_add" msgid="1882023737425114762">"Agregar contacto"</string>
<string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
<string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Leyendo la tarjeta SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"No hay contactos en tu tarjeta SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Seleccionar contactos para importar"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Para importar contactos de la tarjeta SIM, desactiva primero el modo avión."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Desactivar el modo de avión para importar contactos de la tarjeta SIM"</string>
<string name="enable_pin" msgid="5422767284133234860">"Activar/desactivar PIN de tarjeta SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Cambiar PIN de tarjeta SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN de tarjeta SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Colgar"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Devolver llamada"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mensaje"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Para realizar una llamada, primero debes desactivar el modo avión."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Desactivar modo de avión para hacer una llamada"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desactivar el modo de avión o conectarse a una red inalámbrica para hacer una llamada"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"No registrado en la red."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Red móvil no disponible"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La red móvil no está disponible. Conéctate a una red inalámbrica para realizar una llamada."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar una llamada, ingresa un número válido."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"No se puede realizar la llamada."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciar la secuencia de MMI"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"No es posible realizar llamadas en conferencia."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"No se puede rechazar la llamada."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No se puede liberar llamadas."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conectarse a una red inalámbrica para hacer una llamada"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Llamada de emergencia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Encendiendo radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No hay servicio. Vuelve a intentarlo."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modo de devolución de llamada de emergencia ingresado"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de devolución de llamada de emergencia"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"La conexión de datos se ha desactivado"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Sin conexión de datos por <xliff:g id="COUNT">%s</xliff:g> minuto"</item>
- <item quantity="other" msgid="3122217344579273583">"Sin conexión de datos por <xliff:g id="COUNT">%s</xliff:g> minutos"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"El teléfono permanecerá en el modo de llamada de retorno de emergencia <xliff:g id="COUNT">%s</xliff:g> minuto. Mientras el teléfono se encuentre en este modo, no se podrá usar ninguna aplicación que requiera de una conexión de datos. ¿Deseas salir ahora?"</item>
- <item quantity="other" msgid="8617116564023933114">"El teléfono permanecerá en el modo de llamada de retorno de emergencia <xliff:g id="COUNT">%s</xliff:g> minutos. Mientras el teléfono se encuentre en este modo, no se podrá usar ninguna aplicación que requiera de una conexión de datos. ¿Deseas salir ahora?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"La acción seleccionada no está disponible cuando el teléfono se encuentra en el modo de llamada de retorno de emergencia. El teléfono permanecerá en este modo <xliff:g id="COUNT">%s</xliff:g> minuto. ¿Deseas salir ahora?"</item>
- <item quantity="other" msgid="6115622137771382224">"La acción seleccionada no está disponible cuando el teléfono se encuentra en el modo de llamada de retorno de emergencia. El teléfono permanecerá en este modo <xliff:g id="COUNT">%s</xliff:g> minutos. ¿Deseas salir ahora?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Sin conexión de datos por <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
+ <item quantity="one">Sin conexión de datos por <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">El teléfono estará en el modo de llamada de emergencia durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Mientras esté en este modo, no se podrá utilizar ninguna aplicación que utilice una conexión de datos. ¿Quieres salir ahora?</item>
+ <item quantity="one">El teléfono estará en el modo de llamada de emergencia durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Mientras esté en este modo, no se podrá utilizar ninguna aplicación que utilice una conexión de datos. ¿Quieres salir ahora?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">La acción seleccionada no está disponible en el modo de llamada de emergencia. El teléfono estará en este modo durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. ¿Quieres salir ahora?</item>
+ <item quantity="one">La acción seleccionada no está disponible en el modo de llamada de emergencia. El teléfono estará en este modo durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. ¿Quieres salir ahora?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"La acción seleccionada no está disponible durante una llamada de emergencia."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Saliendo del modo de llamada de retorno de emergencia"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Sí"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Llamadas de emergencia"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Solo llamada de emergencia"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Tarjeta SIM, ranura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilidad"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Llamada Wi-Fi entrante"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Llamada por Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Vuelve a tocar para realizar la acción."</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Se produjo un error al decodificar el mensaje."</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index dc88232..a1ad0e7 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Cuentas de teléfono"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Añadir cuenta SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configurar ajustes de cuenta"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Llamada por Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Llamadas Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"No usar llamadas Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"No usar asistente de llamadas"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Nunca"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurar"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Servicio de conexión integrado"</string>
<string name="voicemail" msgid="8693759337917898954">"Buzón de voz"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Buzón de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Buzón de voz:"</string>
<string name="networks" msgid="8873030692174541976">"Operadores de red"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Difusiones de emergencia"</string>
@@ -92,11 +93,11 @@
<string name="sum_loading_settings" msgid="1826692909391168620">"Cargando ajustes…"</string>
<string name="sum_hide_caller_id" msgid="1071407020290873782">"Número oculto en llamadas salientes"</string>
<string name="sum_show_caller_id" msgid="6768534125447290401">"Número mostrado en llamadas salientes"</string>
- <string name="sum_default_caller_id" msgid="1954518825510901365">"Utilizar la configuración de operador predeterminada para mostrar mi número en las llamadas salientes"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"Utilizar la configuración predeterminada del operador para mostrar mi número en las llamadas salientes"</string>
<string name="labelCW" msgid="6120513814915920200">"Llamada en espera"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"Notificarme de llamadas entrantes durante una llamada"</string>
- <string name="sum_cw_disabled" msgid="3648693907300104575">"Notificarme de las llamadas entrantes durante las llamadas"</string>
- <string name="call_forwarding_settings" msgid="3378927671091537173">"Ajustes de desvío de llamada"</string>
+ <string name="sum_cw_disabled" msgid="3648693907300104575">"Notificar si hay una llamada entrante durante una llamada"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"Ajustes de desvío de llamadas"</string>
<string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Ajustes de reenvío de llamadas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="labelCF" msgid="2574386948026924737">"Desvío de llamada"</string>
<string name="labelCFU" msgid="8147177368148660600">"Desviar siempre"</string>
@@ -111,18 +112,18 @@
<string name="sum_cfb_disabled" msgid="4913145177320506827">"Desactivado"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"Tu operador no permite inhabilitar el desvío de llamadas si el teléfono está ocupado."</string>
<string name="labelCFNRy" msgid="1736067178393744351">"Cuando no responda"</string>
- <string name="messageCFNRy" msgid="672317899884380374">"Número cuando no se responde la llamada"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"Número cuando no se responda la llamada"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"Desviando a <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Desactivado"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Tu operador no permite inhabilitar el desvío de llamadas si el teléfono no responde."</string>
<string name="labelCFNRc" msgid="2614827454402079766">"Cuando no esté disponible"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"Número cuando no se puede establecer la llamada"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Número cuando no se pueda establecer la llamada"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Desviando a <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Inhabilitado"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Tu operador no permite inhabilitar el desvío de llamadas si no se puede establecer la llamada."</string>
<string name="updating_title" msgid="6146755386174019046">"Ajustes de llamadas"</string>
- <string name="call_settings_primary_user_only" msgid="5679923943740900965">"El usuario principal es el único que puede cambiar los ajustes de llamada."</string>
- <string name="call_settings_with_label" msgid="89359812614544532">"Ajustes de llamada (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="call_settings_primary_user_only" msgid="5679923943740900965">"El usuario principal es el único que puede cambiar los ajustes de llamadas."</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"Ajustes de llamadas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="error_updating_title" msgid="7970259216988931777">"Error de configuración de llamada"</string>
<string name="reading_settings" msgid="1920291699287055284">"Leyendo configuración..."</string>
<string name="updating_settings" msgid="8171225533884883252">"Actualizando configuración..."</string>
@@ -157,14 +158,14 @@
<string name="not_allowed" msgid="5613353860205691579">"La tarjeta SIM no permite establecer conexión con esta red."</string>
<string name="connect_later" msgid="2308119155752343975">"No se puede conectar a la red en este momento. Inténtalo de nuevo más tarde."</string>
<string name="registration_done" msgid="495135664535876612">"Conexión con la red establecida"</string>
- <string name="sum_carrier_select" msgid="3494252551249882718">"Seleccionar un operador de red"</string>
+ <string name="sum_carrier_select" msgid="3494252551249882718">"Selecciona un operador de red"</string>
<string name="sum_search_networks" msgid="2921092249873272715">"Buscar todas las redes disponibles"</string>
<string name="select_automatically" msgid="5628402124471810174">"Seleccionar automáticamente"</string>
<string name="sum_select_automatically" msgid="5614890115123292400">"Seleccionar red preferida automáticamente"</string>
<string name="register_automatically" msgid="6017849844573519637">"Registro automático..."</string>
- <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo de red preferido"</string>
+ <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo de red preferida"</string>
<string name="preferred_network_mode_summary" msgid="1434820673166126609">"Cambiar el modo operativo de la red"</string>
- <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Tipo de red preferido"</string>
+ <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Tipo de red preferida"</string>
<string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Modo de red preferido: WCDMA preferido"</string>
<string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Modo de red preferido: solo GSM"</string>
<string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Modo de red preferido: solo WCDMA"</string>
@@ -201,10 +202,11 @@
<string name="data_enabled" msgid="5972538663568715366">"Habilitar datos"</string>
<string name="data_enable_summary" msgid="2382798156640007971">"Permitir uso de datos"</string>
<string name="roaming" msgid="8871412572928323707">"Itinerancia de datos"</string>
- <string name="roaming_enable" msgid="7331106985174381987">"Establecer conexión con servicios de datos en itinerancia"</string>
- <string name="roaming_disable" msgid="1843417228755568110">"Establecer conexión con servicios de datos en itinerancia"</string>
+ <string name="roaming_enable" msgid="7331106985174381987">"Conectarse a servicios de datos en itinerancia"</string>
+ <string name="roaming_disable" msgid="1843417228755568110">"Conectarse a servicios de datos en itinerancia"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Has perdido la conectividad de datos porque has dejado desactivada la itinerancia de datos de tu red doméstica."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"¿Permitir el uso de datos en itinerancia? Se pueden aplicar cargos importantes."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"El coste de este servicio puede ser significativo."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"¿Permitir itinerancia de datos?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opciones GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opciones de CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Uso de datos"</string>
@@ -346,7 +348,7 @@
<string name="enable_fdn_ok" msgid="7215588870329688132">"Inhabilitar FDN"</string>
<string name="disable_fdn_ok" msgid="5727046928930740173">"Habilitar FDN"</string>
<string name="sum_fdn" msgid="1959399454900272878">"Administrar números de marcación fija"</string>
- <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Cambiar PIN para acceso de FDN"</string>
+ <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Cambiar PIN para el acceso de FDN"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Administrar lista de números de teléfono"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Privacidad de voz"</string>
<string name="voice_privacy_summary" msgid="3159383389833516214">"Habilitar modo de privacidad mejorado"</string>
@@ -354,6 +356,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Establecer modo TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Reintento automático"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Habilitar modo de reintento automático"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"No se puede cambiar el modo TTY durante una videollamada"</string>
<string name="menu_add" msgid="1882023737425114762">"Añadir contacto"</string>
<string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
<string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
@@ -377,7 +380,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Leyendo desde tarjeta SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"No hay ningún contacto en la tarjeta SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Seleccionar contactos para importar"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Para importar contactos de la tarjeta SIM, desactiva el modo avión."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Desactiva el modo avión para importar contactos de la tarjeta SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Habilitar/inhabilitar PIN de tarjeta SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Cambiar PIN de tarjeta SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN de tarjeta SIM:"</string>
@@ -438,9 +441,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Colgar"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Llamar"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mensaje"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Para realizar una llamada, primero debes desactivar el modo avión."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Desactiva el modo avión parra hacer llamadas."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desactiva el modo avión o conéctate a una red inalámbrica para hacer llamadas."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"No se ha podido conectar a la red"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"La red móvil no está disponible."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La red móvil no está disponible. Conéctate a una red inalámbrica para hacer llamadas."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar una llamada, introduce un número válido."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"No se puede establecer la llamada."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciando secuencia MMI..."</string>
@@ -451,6 +456,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"No se ha podido realizar la conferencia telefónica."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"No se puede rechazar la llamada."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No se pueden hacer llamadas."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conéctate a una red inalámbrica para hacer llamadas."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Llamada de emergencia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activando señal móvil…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sin servicio. Reintentado…"</string>
@@ -512,18 +518,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Se ha activado el modo de devolución de llamada de emergencia."</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de devolución de llamada de emergencia"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexión de datos inhabilitada"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Ninguna conexión de datos durante <xliff:g id="COUNT">%s</xliff:g> minuto"</item>
- <item quantity="other" msgid="3122217344579273583">"Ninguna conexión de datos durante <xliff:g id="COUNT">%s</xliff:g> minutos"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"El teléfono permanecerá en el modo de devolución de llamada de emergencia durante <xliff:g id="COUNT">%s</xliff:g> minuto. Durante este tiempo, no se podrán usar las aplicaciones que utilicen una conexión de datos. ¿Quieres salir ahora?"</item>
- <item quantity="other" msgid="8617116564023933114">"El teléfono permanecerá en el modo de devolución de llamada durante <xliff:g id="COUNT">%s</xliff:g> minutos. Durante este tiempo, no se podrán usar las aplicaciones que utilicen una conexión de datos. ¿Quieres salir ahora?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"La acción seleccionada no está disponible durante el modo de devolución de llamada de emergencia. El teléfono permanecerá en este modo durante <xliff:g id="COUNT">%s</xliff:g> minutos. ¿Quieres salir ahora?"</item>
- <item quantity="other" msgid="6115622137771382224">"La acción seleccionada no está disponible en el modo de devolución de llamada de emergencia. El teléfono permanecerá en este modo durante <xliff:g id="COUNT">%s</xliff:g> minutos. ¿Quieres salir ahora?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Ninguna conexión de datos durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
+ <item quantity="one">Ninguna conexión de datos durante <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Se activará el modo de devolución de llamada de emergencia en el teléfono durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. En este modo, no se puede utilizar ninguna aplicación que emplee una conexión de datos. ¿Quieres salir?</item>
+ <item quantity="one">Se activará el modo de devolución de llamada de emergencia en el teléfono durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. En este modo, no se puede utilizar ninguna aplicación que emplee una conexión de datos. ¿Quieres salir?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">La acción seleccionada no está disponible en el modo de devolución de llamada de emergencia. Se activará este modo en el teléfono durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. ¿Quieres salir?</item>
+ <item quantity="one">La acción seleccionada no está disponible en el modo de devolución de llamada de emergencia. Se activará este modo en el teléfono durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. ¿Quieres salir?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"La acción seleccionada no está disponible durante una llamada de emergencia."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Saliendo del modo de devolución de llamada de emergencia"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Sí"</string>
@@ -552,4 +558,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Llamadas de emergencia"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Solo llamadas de emergencia"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Tarjeta SIM, ranura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilidad"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Llamada Wi-Fi entrante"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Llamada Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Vuelve a tocar para abrir"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Se ha producido un error al decodificar el mensaje."</string>
</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 0e4dc54..1fd4d68 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefoni kontod"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP-konto lisamine"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konto seadete seadistamine"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"WiFi-kõned"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"WiFi-kõned"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ärge kasutage WiFi-kõnesid"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ärge kasutage kõneabi"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Puudub"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Seadistamine"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Sisseehitatud ühendusteenus"</string>
<string name="voicemail" msgid="8693759337917898954">"Kõnepost"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Kõnepost (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"KP:"</string>
<string name="networks" msgid="8873030692174541976">"Võrguoperaatorid"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Hädaolukorra ülekanded"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Ühenda rändluse ajal andmesideteenustega"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Ühenda rändluse ajal andmesideteenustega"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Andmesideühendus katkes, kuna lahkusite koduvõrgust ja andmesiderändlus oli välja lülitatud."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Kas lubada rändluse ajal andmete kasutamine? Rakenduda võivad märkimisväärsed tasud."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Lisanduda võivad suured tasud."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Kas lubada andmeside rändlus?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM-i/UMTS-i valikud"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA valikud"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Andmete kasutus"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Määra TTY-režiim"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automaatkatse"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Luba automaatkatse režiim"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY-režiimi muutmine pole videokõne ajal lubatud"</string>
<string name="menu_add" msgid="1882023737425114762">"Lisa kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Muuda kontakti"</string>
<string name="menu_delete" msgid="3977150783449642851">"Kustuta kontakt"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM-kaardilt lugemine ..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Teie SIM-kaardil pole ühtegi kontakti."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Valige imporditavad kontaktid"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Kontaktide importimiseks SIM-kaardilt lülitage esmalt välja lennukirežiim."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Kontaktide importimiseks SIM-kaardilt lülitage lennukirežiim välja."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM-i PIN-koodi lubamine/keelamine"</string>
<string name="change_pin" msgid="9174186126330785343">"Muuda SIM-kaardi PIN-koodi"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM-i PIN-kood"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Lõpeta kõne"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Helista tagasi"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Sõnum"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Helistamiseks lülitage lennurežiim välja."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Helistamiseks lülitage lennukirežiim välja."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Helistamiseks lülitage lennukirežiim välja või looge ühendus traadita võrguga."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ei ole võrku registreeritud."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobiilsidevõrk pole saadaval."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobiilivõrk pole saadaval. Helistamiseks looge ühendus traadita võrguga."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Helistamiseks sisestage kehtiv number."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Ei saa helistada."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-jada alustamine ..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Konverentskõnesid ei saa teha."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kõnet ei saa tagasi lükata."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kõnet (kõnesid) ei saa vabastada."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Helistamiseks looge ühendus traadita võrguga."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hädaabikõne"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Raadioside sisselülitamine ..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Teenus puudub. Uuesti proovimine ..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Sisenetud hädaolukorra tagasihelistusrežiimi"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Hädaolukorra tagasihelistusrežiim"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Andmeühendus keelatud"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Andmeühendus puudub <xliff:g id="COUNT">%s</xliff:g> minutiks"</item>
- <item quantity="other" msgid="3122217344579273583">"Andmeühendus puudub <xliff:g id="COUNT">%s</xliff:g> minutiks"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon on hädaolukorra tagasihelistusrežiimis <xliff:g id="COUNT">%s</xliff:g> minut. Selles režiimis ei saa kasutada ühtegi andmesideühendusel põhinevat rakendust. Kas soovite kohe väljuda?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon on hädaolukorra tagasihelistusrežiimis <xliff:g id="COUNT">%s</xliff:g> minutit. Selles režiimis ei saa kasutada ühtegi andmesideühendust kasutavat rakendust. Kas soovite kohe väljuda?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Valitud toiming ei ole hädaolukorra tagasihelistusrežiimis saadaval. Telefon on selles režiimis <xliff:g id="COUNT">%s</xliff:g> minut. Kas soovite kohe väljuda?"</item>
- <item quantity="other" msgid="6115622137771382224">"Valitud toiming pole hädaolukorra tagasihelistusrežiimis kättesaadav. Telefon on selles režiimis <xliff:g id="COUNT">%s</xliff:g> minut. Kas soovite kohe väljuda?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Andmesideühendus puudub <xliff:g id="COUNT_1">%s</xliff:g> minutit</item>
+ <item quantity="one">Andmesideühendus puudub <xliff:g id="COUNT_0">%s</xliff:g> minuti</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Telefon on <xliff:g id="COUNT_1">%s</xliff:g> minutit hädaabikõne tagasihelistamise režiimis. Selles režiimis olles ei saa kasutada ühtegi rakendust, mis kasutab andmesideühendust. Kas soovite kohe väljuda?</item>
+ <item quantity="one">Telefon on <xliff:g id="COUNT_0">%s</xliff:g> minuti hädaabikõne tagasihelistamise režiimis. Selles režiimis olles ei saa kasutada ühtegi rakendust, mis kasutab andmesideühendust. Kas soovite kohe väljuda?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Valitud toiming pole hädaabikõne tagasihelistamise režiimis saadaval. Telefon on selles režiimis <xliff:g id="COUNT_1">%s</xliff:g> minutit. Kas soovite kohe väljuda?</item>
+ <item quantity="one">Valitud toiming pole hädaabikõne tagasihelistamise režiimis saadaval. Telefon on selles režiimis <xliff:g id="COUNT_0">%s</xliff:g> minuti. Kas soovite kohe väljuda?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Valitud toiming ei ole hädaabikõne ajal saadaval."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Väljumine hädaolukorra tagasihelistusrežiimist"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Jah"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Hädaabikõned"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Ainult hädaabikõned"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-kaart, pilu: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Juurdepääsetavus"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Sissetulev WiFi-kõne"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"WiFi-kõne"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Avamiseks puudutage uuesti"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Sõnumi dekodeerimisel ilmnes viga."</string>
</resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index db5654c..286d055 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonoko kontuak"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Gehitu SIP kontua"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfiguratu kontuaren ezarpenak"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi bidezko deiak"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi bidezko deiak"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ez erabili Wi-Fi bidezko deiak"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ez erabili deiak egiteko laguntzailea"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Bat ere ez"</string>
@@ -76,8 +76,9 @@
<string name="wifi_calling_select_call_assistant_summary" msgid="164985727137156474">"Kudeatu txartel honekin egindako deietarako erabili beharreko sareak:"</string>
<string name="wifi_calling_use_call_assistant_summary" msgid="6599987137133339698">"Utzi aplikazioei edo zerbitzuei deiak egiteko erabili beharreko sareak kudeatzen"</string>
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfiguratu"</string>
- <string name="connection_service_default_label" msgid="1498481943805913754">"Konektatzeko zerbitzu bateratua"</string>
+ <string name="connection_service_default_label" msgid="1498481943805913754">"Konektatzeko zerbitzu integratua"</string>
<string name="voicemail" msgid="8693759337917898954">"Erantzungailua"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Erantzungailua (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Erantzungailua:"</string>
<string name="networks" msgid="8873030692174541976">"Sare-operadoreak"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Larrialdietako igorpenak"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Konektatu datu-zerbitzuetara ibiltaritzan"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Konektatu datu-zerbitzuetara ibiltaritzan"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Datu-konexioa galdu duzu ibiltaritza desaktibatuta izanda etxeko saretik irten zarelako."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Ibiltaritzan zaudenean datuak erabiltzea baimendu nahi duzu? Agian gastu handiak izango dituzu."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Baliteke kostu handiak ordaindu behar izatea."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Ibiltaritzako datuak baimendu nahi dituzu?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS aukerak"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA aukerak"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Datuen erabilera"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Ezarri TTY modua"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Saiatu berriro automatikoki"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Gaitu automatikoki berriro saiatzeko modua"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Ezin da aldatu TTY modua bideo-deiak abian direnean"</string>
<string name="menu_add" msgid="1882023737425114762">"Gehitu kontaktua"</string>
<string name="menu_edit" msgid="7143003705504672374">"Editatu kontaktua"</string>
<string name="menu_delete" msgid="3977150783449642851">"Ezabatu kontaktua"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM txarteletik irakurtzen…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Ez duzu kontakturik SIM txartelean."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Aukeratu inportatu beharreko kontaktuak"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM txarteleko kontaktuak inportatzeko, Hegaldi modua desaktibatu behar duzu."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM txarteleko kontaktuak inportatzeko, desaktibatu hegaldi modua."</string>
<string name="enable_pin" msgid="5422767284133234860">"Gaitu/Desgaitu SIM txartelaren PIN kodea"</string>
<string name="change_pin" msgid="9174186126330785343">"Aldatu SIM txartelaren PIN kodea"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM txartelaren PIN kodea:"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Amaitu deia"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Erantzun deiari"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mezua"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Dei bat egiteko, Hegaldi modua desaktibatu behar duzu."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Deia egiteko, desaktibatu hegaldi modua."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Deia egiteko, desaktibatu hegaldi modua edo konektatu haririk gabeko sare batera."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ez dago sarean erregistratuta."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Sare mugikorra ez dago erabilgarri."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Sare mugikorra ez dago erabilgarri. Deia egiteko, konektatu haririk gabeko sare batera."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Deitzeko, idatzi balio duen zenbaki bat."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Ezin da deitu."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI sekuentzia hasten…"</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Ezin da konferentzia-deirik egin."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Ezin da deia baztertu."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ezin dira deiak bereizi."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Deia egiteko, konektatu haririk gabeko sare batera."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Larrialdi-deia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Irratia pizten…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ez dago zerbitzurik. Berriro saiatzen…"</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Larrialdi-deiak soilik jasotzeko modua aktibatu da"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Larrialdi-deiak soilik jasotzeko modua"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datu-konexioa desgaituta"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Ez da datu-konexiorik egin <xliff:g id="COUNT">%s</xliff:g> minutuan"</item>
- <item quantity="other" msgid="3122217344579273583">"Ez da datu-konexiorik egin <xliff:g id="COUNT">%s</xliff:g> minutuan"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefonoa Larrialdi-deiak soilik jasotzeko moduan egongo da <xliff:g id="COUNT">%s</xliff:g> minutuz. Modu horretan dagoen bitartean, ezingo duzu datu-konexioa behar duen aplikaziorik erabili. Irten nahi duzu?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefonoa Larrialdi-deiak soilik jasotzeko moduan egongo da <xliff:g id="COUNT">%s</xliff:g> minutuz. Modu horretan dagoen bitartean, ezingo duzu datu-konexioa behar duen aplikaziorik erabili. Irten nahi duzu?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Hautatutako ekintza ez dago Larrialdi-deiak soilik jasotzeko moduan erabilgarri. Telefonoa <xliff:g id="COUNT">%s</xliff:g> minutuz egongo da modu horretan. Irten nahi duzu?"</item>
- <item quantity="other" msgid="6115622137771382224">"Hautatutako ekintza ez dago Larrialdi-deiak soilik jasotzeko moduan erabilgarri. Telefonoa <xliff:g id="COUNT">%s</xliff:g> minutuz egongo da modu horretan. Irten nahi duzu?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Ez da datu-konexiorik egin <xliff:g id="COUNT_1">%s</xliff:g> minututan</item>
+ <item quantity="one">Ez da datu-konexiorik egin <xliff:g id="COUNT_0">%s</xliff:g> minutuan</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Telefonoa larrialdi-deiak soilik jasotzeko moduan egongo da <xliff:g id="COUNT_1">%s</xliff:g> minutuz. Modu horretan dagoen bitartean, ezingo duzu datu-konexioa behar duen aplikaziorik erabili. Irten nahi duzu?</item>
+ <item quantity="one">Telefonoa larrialdi-deiak soilik jasotzeko moduan egongo da <xliff:g id="COUNT_0">%s</xliff:g> minutuz. Modu horretan dagoen bitartean, ezingo duzu datu-konexioa behar duen aplikaziorik erabili. Irten nahi duzu?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Hautatutako ekintza ez dago larrialdi-deiak soilik jasotzeko moduan erabilgarri. Telefonoa <xliff:g id="COUNT_1">%s</xliff:g> minutuz egongo da modu horretan. Irten nahi duzu?</item>
+ <item quantity="one">Hautatutako ekintza ez dago larrialdi-deiak soilik jasotzeko moduan erabilgarri. Telefonoa <xliff:g id="COUNT_0">%s</xliff:g> minutuz egongo da modu horretan. Irten nahi duzu?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Hautatutako ekintza ez dago erabilgarri larrialdi-deia egiten ari den bitartean."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Larrialdi-deiak soilik jasotzeko modutik irteten"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Bai"</string>
@@ -546,7 +552,7 @@
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Soinua"</string>
<string name="dial_pad_autocomplete" msgid="7683489952557536398">"Markagailua osatzea"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"Tonua eta dardara"</string>
- <string name="pstn_connection_service_label" msgid="1743245930577325900">"SIM txartel barneratuak"</string>
+ <string name="pstn_connection_service_label" msgid="1743245930577325900">"SIM txartel integratuak"</string>
<string name="enable_video_calling_title" msgid="7237253660669000899">"Aktibatu bideo-deiak"</string>
<string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"Bideo-deiak aktibatzeko, 4G LTE modu hobetua aktibatu behar duzu \"Sarearen ezarpenak\" atalean."</string>
<string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Sareko ezarpenak"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Larrialdi-deiak"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Larrialdi-deiak soilik"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM txartela, <xliff:g id="SLOT_ID">%s</xliff:g> erretena"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Erabilerraztasuna"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Sarrerako Wi-Fi deia"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi deia"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Irekitzeko, ukitu berriro"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Errore bat gertatu mezua deskodetzean."</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 5f20b9d..d75efd0 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"حسابهای تلفن"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"افزودن حساب SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"پیکربندی تنظیمات حساب"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"تماس از طریق Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"تماس از طریق Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"از تماس از طریق Wi-Fi استفاده نشود"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"از دستیار تماس استفاده نشود"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"هیچکدام"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"پیکربندی"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"سرویس اتصال داخلی"</string>
<string name="voicemail" msgid="8693759337917898954">"پست صوتی"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"پست صوتی (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"اپراتورهای شبکه"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"پخش هشدارهای اضطراری"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"اتصال به سرویسهای داده هنگام رومینگ"</string>
<string name="roaming_disable" msgid="1843417228755568110">"اتصال به سرویسهای داده هنگام رومینگ"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"اتصال داده خود را از دست دادهاید، زیرا از شبکه اصلی خود خارج شدید و رومینگ داده خاموش است،"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"استفاده از داده هنگام رومینگ اجازه داده شود؟ ممکن است هزینههای قابل توجهی اعمال شوند."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"شاید هزینه زیادی برای شما داشته باشد."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"رومینگ داده مجاز است؟"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"گزینههای GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"گزینههای CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"مصرف داده"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"تنظیم حالت TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"سعی مجدد خودکار"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"فعال کردن حالت سعی مجدد خودکار"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"تغییر حالت TTY در طول تماس ویدیویی مجاز نیست"</string>
<string name="menu_add" msgid="1882023737425114762">"افزودن مخاطب"</string>
<string name="menu_edit" msgid="7143003705504672374">"ویرایش مخاطب"</string>
<string name="menu_delete" msgid="3977150783449642851">"حذف مخاطب"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"در حال خواندن سیم کارت..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"مخاطبی در سیم کارت شما موجود نیست."</string>
<string name="simContacts_title" msgid="1861472842524839921">"انتخاب مخاطبین برای ورود"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"برای وارد کردن مخاطبین از سیم کارت، ابتدا حالت هواپیما را خاموش کنید."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"برای وارد کردن مخاطبین از سیم کارت، حالت هواپیما را خاموش کنید."</string>
<string name="enable_pin" msgid="5422767284133234860">"فعال کردن/غیر فعال کردن پین سیم"</string>
<string name="change_pin" msgid="9174186126330785343">"تغییر پین سیم"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"پین سیم:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"قطع تماس"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"پاسخ تماس"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"پیام"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"برای برقراری یک تماس، ابتدا حالت هواپیما را خاموش کنید."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"برای برقراری تماس، حالت پرواز را خاموش کنید."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"برای برقرای تماس، حالت پرواز را خاموش کنید یا به شبکه بیسیم وصل شوید."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"در شبکه ثبت نشده است."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"شبکه تلفن همراه در دسترس نیست."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"شبکه همراه در دسترس نیست. برای برقراری تماس به یک شبکه بیسیم وصل شوید."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"برای برقراری تماس، یک شماره معتبر وارد کنید."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"نمیتوانید تماس بگیرید."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"شروع ترتیب MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"تماسهای کنفرانسی امکانپذیر نیست."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"نمیتوانید تماس را رد کنید."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"نمیتوانید تماس(ها) را آزاد کنید."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"برای برقراری تماس، به یک شبکه بیسیم وصل شوید"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"تماس اضطراری"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"در حال روشن کردن رادیو..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"سرویسی در دسترس نیست. دوباره امتحان کنید..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"حالت پاسخ تماس اضطراری وارد شده"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"حال پاسخ تماس اضطراری"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"اتصال داده غیر فعال شد"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"اتصال دادهای به مدت <xliff:g id="COUNT">%s</xliff:g> دقیقه موجود نیست"</item>
- <item quantity="other" msgid="3122217344579273583">"اتصال دادهای به مدت <xliff:g id="COUNT">%s</xliff:g> دقیقه موجود نیست"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"تلفن به مدت <xliff:g id="COUNT">%s</xliff:g> دقیقه در حالت پاسخ به تماسهای اضطراری خواهد بود. در این حالت برنامههایی که از اتصال داده استفاده میکنند قابل استفاده نیستند. آیا میخواهید اکنون خارج شوید؟"</item>
- <item quantity="other" msgid="8617116564023933114">"تلفلن به مدت <xliff:g id="COUNT">%s</xliff:g> دقیقه در حالت پاسخ به تماسهای اضطراری خواهد بود. در این حالت برنامههایی که از اتصال داده استفاده میکنند قابل استفاده نیستند. آیا میخواهید اکنون خارج شوید؟"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"عملکرد انتخاب شده در حالت پاسخ به تماس اضطراری در دسترس نیست. تلفن مدت <xliff:g id="COUNT">%s</xliff:g> دقیقه در این حالت است. آیا میخواهید اکنون خارج شوید؟"</item>
- <item quantity="other" msgid="6115622137771382224">"عمل انتخاب شده در حالت پاسخ به تماس اضطراری در دسترس نیست. تلفن مدت <xliff:g id="COUNT">%s</xliff:g> دقیقه در این حالت باقی میماند. آیا میخواهید اکنون خارج شوید؟"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">هیچ اتصال دادهای برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه موجود نیست</item>
+ <item quantity="other">هیچ اتصال دادهای برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه موجود نیست</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">تلفن برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه در حالت تماس اضطراری خواهد بود. در این حالت برنامهای که از اتصال داده استفاده میکند، نمیتواند استفاده شود. میخواهید اکنون خارج شوید؟</item>
+ <item quantity="other">تلفن برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه در حالت تماس اضطراری خواهد بود. در این حالت برنامهای که از اتصال داده استفاده میکند، نمیتواند استفاده شود. میخواهید اکنون خارج شوید؟</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">اقدام انتخاب شده در حالت تماس اضطراری در دسترس نیست. این تلفن برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه در این حالت خواهد بود. میخواهید اکنون خارج شوید؟</item>
+ <item quantity="other">اقدام انتخاب شده در حالت تماس اضطراری در دسترس نیست. این تلفن برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه در این حالت خواهد بود. میخواهید اکنون خارج شوید؟</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"در حین یک تماس اضطراری، عملکرد انتخابی در دسترس نیست."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"خروج از حالت پاسخ تماس اضطراری"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"بله"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"تماسهای اضطراری"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"فقط تماسهای اضطراری"</string>
<string name="sim_description_default" msgid="4778679519938775515">"سیمکارت، شکاف: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"دسترسپذیری"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"تماس Wi-Fi ورودی"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"تماس Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"لمس دوباره برای باز کردن"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"هنگام رمزگشایی پیام، خطایی روی داد."</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 099ebbb..0528c70 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Puhelintilit"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Lisää SIP-tili"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Tiliasetusten määrittäminen"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi-puhelut"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi-puhelut"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Älä käytä puheluihin Wi-Fiä"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Älä käytä puheluapuria"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ei mitään"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Asetukset"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Oletusyhteyspalvelu"</string>
<string name="voicemail" msgid="8693759337917898954">"Vastaaja"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Puhelinvastaaja (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Vast.:"</string>
<string name="networks" msgid="8873030692174541976">"Verkko-operaattorit"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Hätätilalähetykset"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Yhdistä verkkoon roaming-tilassa"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Yhdistä verkkoon roaming-tilassa"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Menetit verkkoyhteyden, koska poistuit kotiverkkosi alueelta eikä tiedonsiirron roaming-tila ole käytössä."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Sallitaanko mobiilidatan käyttö roaming-tilassa? Tästä saattaa aiheutua merkittäviä maksuja."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Siitä voi aiheutua huomattavia kuluja."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Sallitaanko tiedonsiirto roaming-tilassa?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS-asetukset"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-asetukset"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Datan käyttö"</string>
@@ -354,6 +356,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Aseta TTY-tila"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automaattinen uudelleenyritys"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Ota Automaattinen uudelleenyritys -tila käyttöön"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY-tilan muutoksia ei sallita videopuhelun aikana."</string>
<string name="menu_add" msgid="1882023737425114762">"Lisää yhteystieto"</string>
<string name="menu_edit" msgid="7143003705504672374">"Muokkaa yhteystietoa"</string>
<string name="menu_delete" msgid="3977150783449642851">"Poista yhteystieto"</string>
@@ -377,7 +380,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Luetaan SIM-korttia…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM-kortilla ei ole yhteystietoja."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Valitse tuotavat yhteystiedot"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Poista lentokonetila käytöstä, niin voit tuoda yhteystietoja SIM-kortilta."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Poista lentokonetila käytöstä, jos haluat tuoda yhteystietoja SIM-kortilta."</string>
<string name="enable_pin" msgid="5422767284133234860">"Ota SIM-kortin PIN-koodi käyttöön / poista koodi käytöstä"</string>
<string name="change_pin" msgid="9174186126330785343">"Vaihda SIM-kortin PIN-koodi"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM-kortin PIN-koodi:"</string>
@@ -438,9 +441,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Katkaise puhelu"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Soita takaisin"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Viesti"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Poista lentokonetila käytöstä ennen puhelun soittamista."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Poista lentokonetila käytöstä, jos haluat soittaa puhelun."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Poista lentokonetila käytöstä tai yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ei rekisteröity verkkoon."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Matkapuhelinverkko ei ole käytettävissä."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Matkapuhelinverkko ei ole käytettävissä. Yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Soita antamalla kelvollinen numero."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Puhelua ei voi soittaa."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Aloitetaan MMI-koodisekvenssiä..."</string>
@@ -451,6 +456,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Puhelujen yhdistäminen epäonnistui."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Puhelua ei voi hylätä."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Puheluja ei voi vapauttaa."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hätäpuhelu"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Käynnistetään radiota…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ei yhteyttä. Yritetään uudelleen…"</string>
@@ -512,18 +518,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Käytössä hätäpuhelujen takaisinsoittotila"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Hätäpuhelujen takaisinsoittotila"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Verkkoyhteys pois käytöstä"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Ei verkkoyhteyttä <xliff:g id="COUNT">%s</xliff:g> minuuttiin"</item>
- <item quantity="other" msgid="3122217344579273583">"Ei verkkoyhteyttä <xliff:g id="COUNT">%s</xliff:g> minuuttiin"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Puhelin on hätäpuhelujen takaisinsoittotilassa <xliff:g id="COUNT">%s</xliff:g> minuutin ajan. Tässä tilassa datayhteyttä hyödyntäviä sovelluksia ei voi käyttää. Haluatko lopettaa nyt?"</item>
- <item quantity="other" msgid="8617116564023933114">"Puhelin on hätäpuhelujen takaisinsoittotilassa <xliff:g id="COUNT">%s</xliff:g> minuutin ajan. Tässä tilassa datayhteyttä hyödyntäviä sovelluksia ei voi käyttää. Haluatko lopettaa nyt?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Valittu toiminto ei ole käytettävissä hätäpuhelujen takaisinsoittotilassa. Puhelu pysyy tässä tilassa <xliff:g id="COUNT">%s</xliff:g> minuutin ajan. Haluatko poistua nyt?"</item>
- <item quantity="other" msgid="6115622137771382224">"Valittu toiminto ei ole käytettävissä hätäpuhelujen takaisinsoittotilassa. Puhelu pysyy tässä tilassa <xliff:g id="COUNT">%s</xliff:g> minuutin ajan. Haluatko poistua nyt?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Ei verkkoyhteyttä <xliff:g id="COUNT_1">%s</xliff:g> minuuttiin</item>
+ <item quantity="one">Ei verkkoyhteyttä <xliff:g id="COUNT_0">%s</xliff:g> minuuttiin</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Puhelin siirtyy hätäpuhelujen takaisinsoittotilaan <xliff:g id="COUNT_1">%s</xliff:g> minuutin ajaksi. Et voi käyttää verkkoyhteyttä hyödyntäviä sovelluksia tänä aikana. Haluatko poistua nyt?</item>
+ <item quantity="one">Puhelin siirtyy hätäpuhelujen takaisinsoittotilaan <xliff:g id="COUNT_0">%s</xliff:g> minuutin ajaksi. Et voi käyttää verkkoyhteyttä hyödyntäviä sovelluksia tänä aikana. Haluatko poistua nyt?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Valittua toimintoa ei voi käyttää, kun puhelin on hätäpuhelujen takaisinsoittotilassa. Puhelin on takaisinsoittotilassa <xliff:g id="COUNT_1">%s</xliff:g> minuutin ajan. Haluatko poistua nyt?</item>
+ <item quantity="one">Valittua toimintoa ei voi käyttää, kun puhelin on hätäpuhelujen takaisinsoittotilassa. Puhelin on takaisinsoittotilassa <xliff:g id="COUNT_0">%s</xliff:g> minuutin ajan. Haluatko poistua nyt?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Valittu toiminto ei ole käytettävissä hätäpuhelun aikana"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Poistutaan hätäpuhelujen takaisinsoittotilasta"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Kyllä"</string>
@@ -552,4 +558,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Hätäpuhelut"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Vain hätäpuhelut"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-kortti, paikka: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Esteettömyys"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Saapuva Wi-Fi-puhelu"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-puhelu"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Avaa koskettamalla uudelleen."</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Virhe purettaessa viestiä."</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 824a48f..6277a25 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Comptes du téléphone"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Ajouter un compte SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configurer les paramètres du compte"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Appels Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Appels Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ne pas utiliser les appels par Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ne pas utiliser l\'assistant d\'appel"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Aucun"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurer"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Service de connexion intégré"</string>
<string name="voicemail" msgid="8693759337917898954">"Messagerie vocale"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Messagerie vocale (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"MV :"</string>
<string name="networks" msgid="8873030692174541976">"Opérateur de réseau"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Diffusions d\'urgence"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Se connecter aux services de données lors de l\'itinérance"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Se connecter aux services de données lors de l\'itinérance"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Vous avez été déconnecté, car vous avez quitté le réseau domestique et l\'itinérance des données est désactivée."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Autoriser l\'utilisation des données en itinérance? Des frais importants peuvent s\'appliquer."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Des frais importants peuvent s\'appliquer."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Autoriser les données en itinérance?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Options GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Options CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Utilisation des données"</string>
@@ -354,6 +356,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Définir le mode TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Réessayer automatiquement"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Activer le mode Réessayer automatiquement"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Le changement de mode ATS n\'est pas autorisé pendant les appels vidéo"</string>
<string name="menu_add" msgid="1882023737425114762">"Ajouter un contact"</string>
<string name="menu_edit" msgid="7143003705504672374">"Modifier un contact"</string>
<string name="menu_delete" msgid="3977150783449642851">"Supprimer le contact"</string>
@@ -377,7 +380,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lecture de la carte SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Aucun contact n\'a été trouvé sur votre carte SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Sélection des contacts à importer"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Pour importer des contacts depuis la carte SIM, désactivez tout d\'abord le mode Avion."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Désactivez le mode Avion pour importer des contacts de la carte SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Activer/désactiver le NIP de la carte SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Modifier le NIP de la carte SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"NIP de la carte SIM :"</string>
@@ -438,9 +441,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Raccrocher"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Rappeler"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Veuillez désactiver le mode Avion avant de passer un appel."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Désactivez le mode Avion pour faire un appel."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Désactivez le mode Avion ou connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Non enregistré sur le réseau"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Réseau cellulaire non disponible."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Le réseau cellulaire n\'est pas accessible. Connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Pour faire un appel, entrez un numéro valide."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Impossible d\'appeler."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Lancement de la séquence IHM..."</string>
@@ -451,6 +456,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Impossible d\'effectuer des conférences téléphoniques."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Impossible de refuser l\'appel."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossible de libérer l\'appel ou les appels."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Appel d\'urgence"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activation du signal radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aucun service. Nouvel essai en cours..."</string>
@@ -512,18 +518,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Mode de rappel d\'urgence activé"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode de rappel d\'urgence"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connexion des données désactivée"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Aucune connexion à Internet pendant <xliff:g id="COUNT">%s</xliff:g> minute"</item>
- <item quantity="other" msgid="3122217344579273583">"Aucune connexion de données pendant <xliff:g id="COUNT">%s</xliff:g> minutes"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Le mode de rappel d\'urgence sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minute. Tant que ce mode est actif, vous ne pouvez utiliser aucune des applications nécessitant une connexion Internet. Voulez-vous quitter maintenant?"</item>
- <item quantity="other" msgid="8617116564023933114">"Le mode de rappel d\'urgence sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minutes. Tant que ce mode est actif, vous ne pouvez utiliser aucune des applications nécessitant une connexion Internet. Voulez-vous quitter maintenant?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"L\'action sélectionnée n\'est pas disponible en mode de rappel d\'urgence. Ce mode sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minute. Voulez-vous quitter maintenant?"</item>
- <item quantity="other" msgid="6115622137771382224">"L\'action sélectionnée n\'est pas disponible en mode de rappel d\'urgence. Ce mode sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minutes. Voulez-vous quitter maintenant?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Aucune connexion de données pendant <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
+ <item quantity="other">Aucune connexion de données pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minute. Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant?</item>
+ <item quantity="other"> Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes. Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">L\'action sélectionnée n\'est pas disponible lorsque le mode de rappel d\'urgence est activé. Ce mode restera activé sur ce téléphone pendant <xliff:g id="COUNT_1">%s</xliff:g> minute. Voulez-vous quitter l\'écran maintenant?</item>
+ <item quantity="other">L\'action sélectionnée n\'est pas disponible lorsque le mode de rappel d\'urgence est activé. Ce mode restera activé sur ce téléphone pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes. Voulez-vous quitter l\'écran maintenant?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"L\'action sélectionnée n\'est pas disponible pendant un appel d\'urgence."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Sortie du mode de rappel d\'urgence…"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Oui"</string>
@@ -552,4 +558,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Appels d\'urgence"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Appels d\'urgence seulement"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Carte SIM, fente : <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilité"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Appel Wi-Fi entrant"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Appel Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touchez à nouveau pour ouvrir"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Une erreur s\'est produite lors du décodage du message."</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 3df2b3e..d41f5a0 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Comptes téléphone"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Ajouter un compte SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configurer les paramètres du compte"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Appels Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Appels Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ne pas utiliser les appels Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ne pas utiliser l\'assistant d\'appel"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Aucun"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurer"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Service de connexion intégré"</string>
<string name="voicemail" msgid="8693759337917898954">"Messagerie vocale"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Messagerie vocale (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"MV :"</string>
<string name="networks" msgid="8873030692174541976">"Opérateurs de réseau"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Messages d\'urgence"</string>
@@ -147,7 +148,7 @@
<string name="no_change" msgid="3186040086622435212">"Aucune modification n\'a été apportée."</string>
<string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Choisissez un service de messagerie vocale."</string>
<string name="voicemail_default" msgid="2001233554889016880">"Votre opérateur"</string>
- <string name="mobile_networks" msgid="2843854043339307375">"Paramètres des réseaux mobiles"</string>
+ <string name="mobile_networks" msgid="2843854043339307375">"Paramètres du réseau mobile"</string>
<string name="label_available" msgid="1181658289009300430">"Réseaux disponibles"</string>
<string name="load_networks_progress" msgid="5230707536168902952">"Recherche..."</string>
<string name="empty_networks_list" msgid="4249426905018815316">"Aucun réseau trouvé."</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Se connecter aux services de données lors de l\'itinérance"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Se connecter aux services de données lors de l\'itinérance"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Vous avez été déconnecté, car vous avez quitté le réseau domestique et l\'itinérance des données est désactivée."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Autoriser la consommation de données en itinérance ? Des frais importants peuvent s\'appliquer."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Des frais importants peuvent s\'appliquer."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Autoriser l\'itinérance des données ?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Options GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Options CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Consommation des données"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Définir le mode TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Réessayer automatiquement"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Activer le mode Réessayer automatiquement"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Le changement de mode TTY n\'est pas autorisé durant un appel vidéo."</string>
<string name="menu_add" msgid="1882023737425114762">"Ajouter un contact"</string>
<string name="menu_edit" msgid="7143003705504672374">"Modifier le contact"</string>
<string name="menu_delete" msgid="3977150783449642851">"Supprimer le contact"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lecture de la carte SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Aucun contact n\'a été trouvé sur votre carte SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Sélection des contacts à importer"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Pour importer des contacts depuis la carte SIM, désactivez tout d\'abord le mode Avion."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Désactivez le mode Avion pour importer des contacts depuis la carte SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Activer/désactiver le code PIN de la carte SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Modifier le code PIN de la carte SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"Code PIN de la carte SIM :"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Raccrocher"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Rappeler"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Message"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Veuillez d\'abord désactiver le mode Avion, afin d\'effectuer un appel."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Désactivez le mode Avion pour passer un appel."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Désactivez le mode Avion ou connectez-vous à un réseau sans fil pour passer un appel."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Non enregistré sur le réseau."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Réseau mobile non disponible."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Le réseau mobile n\'est pas disponible. Connectez-vous à un réseau sans fil pour passer un appel."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Pour émettre un appel, veuillez saisir un numéro valide."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Impossible d\'émettre l\'appel."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Lancement de la séquence IHM..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Impossible d\'effectuer des conférences téléphoniques."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Impossible de refuser l\'appel."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossible de lancer les appels."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connectez-vous à un réseau sans fil pour passer un appel."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Appel d\'urgence"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activation du signal radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aucun service disponible. Nouvelle tentative en cours…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Mode de rappel d\'urgence activé"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode de rappel d\'urgence"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connexion des données désactivée"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Aucune connexion de données pendant <xliff:g id="COUNT">%s</xliff:g> minute"</item>
- <item quantity="other" msgid="3122217344579273583">"Aucune connexion de données pendant <xliff:g id="COUNT">%s</xliff:g> minutes"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Le mode de rappel d\'urgence sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minute. Tant que ce mode est actif, vous ne pouvez utiliser aucune des applications nécessitant une connexion Internet. Voulez-vous quitter maintenant ?"</item>
- <item quantity="other" msgid="8617116564023933114">"Le mode de rappel d\'urgence sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minutes. Tant que ce mode est actif, vous ne pouvez utiliser aucune des applications nécessitant une connexion Internet. Voulez-vous quitter maintenant ?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"L\'action sélectionnée n\'est pas disponible en mode de rappel d\'urgence. Ce mode sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minute. Voulez-vous quitter maintenant ?"</item>
- <item quantity="other" msgid="6115622137771382224">"L\'action sélectionnée n\'est pas disponible en mode de rappel d\'urgence. Ce mode sera actif sur le téléphone pendant <xliff:g id="COUNT">%s</xliff:g> minutes. Voulez-vous quitter maintenant ?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Aucune connexion à Internet pendant <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
+ <item quantity="other">Aucune connexion à Internet pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minute. Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant ?</item>
+ <item quantity="other">Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes. Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">L\'action sélectionnée n\'est pas disponible lorsque le mode de rappel d\'urgence est activé. Ce mode restera activé sur ce téléphone pendant <xliff:g id="COUNT_1">%s</xliff:g> minute. Voulez-vous quitter l\'écran maintenant ?</item>
+ <item quantity="other">L\'action sélectionnée n\'est pas disponible lorsque le mode de rappel d\'urgence est activé. Ce mode restera activé sur ce téléphone pendant <xliff:g id="COUNT_1">%s</xliff:g> minute. Voulez-vous quitter l\'écran maintenant ?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"L\'action sélectionnée n\'est pas disponible pendant un appel d\'urgence."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Sortie du mode de rappel d\'urgence…"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Oui"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Appels d\'urgence"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Appels d\'urgence seulement"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Carte SIM, emplacement : <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilité"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Appel Wi-Fi entrant"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Appel Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Appuyer à nouveau pour ouvrir"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Une erreur s\'est produite lors du décodage du message."</string>
</resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 30e19c6..6c01a79 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Contas do teléfono"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Engadir conta SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Determinar configuración da conta"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Chamadas por wifi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Chamadas por wifi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Non utilizar as chamadas wifi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Non utilizar o asistente de chamadas"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ningún"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurar"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Servizo de conexión integrado"</string>
<string name="voicemail" msgid="8693759337917898954">"Correo de voz"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Correo de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"CV:"</string>
<string name="networks" msgid="8873030692174541976">"Operadores de rede"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Emisións de emerxencia"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Conecta cos servizos de datos durante a itinerancia"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Conecta cos servizos de datos durante a itinerancia"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Perdiches a conectividade de datos debido a que abandonaches a túa rede doméstica coa itinerancia de datos desactivada."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Queres permitir o uso e datos en itinerancia? Poden aplicarse cargos significantes."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"É posible que se apliquen custos elevados."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Permitir a itinerancia de datos?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opcións de GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opcións de CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Uso de datos"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Definir modo TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Reintento automático"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Activar o modo de reintento automático"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Non se permite cambiar o modo TTY durante as videochamadas"</string>
<string name="menu_add" msgid="1882023737425114762">"Engadir contacto"</string>
<string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
<string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lendo da tarxeta SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Non hai contactos na tarxeta SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Seleccionar contactos para importar"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Para importar contactos da tarxeta SIM, primeiro desactiva o modo avión."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Desactiva o modo avión para importar contactos da tarxeta SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Activar/desactivar o PIN da SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Cambiar PIN da SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN da SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Colgar"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Devolver chamada"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mensaxe"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Para facer unha chamada, primeiro desactiva o modo avión."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Desactiva o modo avión para facer unha chamada."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desactiva o modo avión ou conéctate a unha rede sen fíos para facer unha chamada."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Sen rexistro na rede"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Rece móbil non dispoñible."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A rede móbil non está dispoñible. Conéctate a unha rede sen fíos para facer unha chamada."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar unha chamada, introduce un número válido."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Non se pode chamar."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciando secuencia MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Non se poden efectuar conferencias."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Non se pode rexeitar a chamada."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Non se poden desconectar as chamadas."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conéctate a unha rede sen fíos para facer unha chamada."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emerxencia"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activando radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sen servizo. Tentando de novo…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Accedeuse ao modo de devolución de chamadas de emerxencia"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de devolución de chamadas de emerxencia"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexión de datos desactivada"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Non houbo conexión de datos durante <xliff:g id="COUNT">%s</xliff:g> minuto"</item>
- <item quantity="other" msgid="3122217344579273583">"Non houbo conexión de datos durante <xliff:g id="COUNT">%s</xliff:g> minutos"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"O teléfono estará en modo de devolución de chamada de emerxencia durante <xliff:g id="COUNT">%s</xliff:g> minuto. Mentres está neste modo, non se poden utilizar aplicacións que usen conexión de datos. Queres saír agora?"</item>
- <item quantity="other" msgid="8617116564023933114">"O teléfono estará en modo de devolución de chamada de emerxencia durante <xliff:g id="COUNT">%s</xliff:g> minutos. Mentres está neste modo, non se poden utilizar aplicacións que usen conexión de datos. Queres saír agora?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"A acción seleccionada non está dispoñible durante o modo de devolución de chamada de emerxencia. O teléfono estará neste modo durante <xliff:g id="COUNT">%s</xliff:g> minuto. Queres saír agora?"</item>
- <item quantity="other" msgid="6115622137771382224">"A acción seleccionada non está dispoñible durante o modo de devolución de chamada de emerxencia. O teléfono estará neste modo durante <xliff:g id="COUNT">%s</xliff:g> minutos. Queres saír agora?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Non houbo conexión de datos durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
+ <item quantity="one">Non houbo conexión de datos durante <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">O teléfono estará no modo de devolución de chamada de emerxencia durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Mentres se atope neste modo, non se poderá usar ningunha aplicación que utilice unha conexión de datos. Queres saír agora?</item>
+ <item quantity="one">O teléfono estará no modo de devolución de chamada de emerxencia durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Mentres se atope neste modo, non se poderá usar ningunha aplicación que utilice unha conexión de datos. Queres saír agora?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">A acción seleccionada non está dispoñible durante o modo de devolución de chamadas de emerxencia. O teléfono estará neste modo durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Queres saír agora?</item>
+ <item quantity="one">A acción seleccionada non está dispoñible durante o modo de devolución de chamadas de emerxencia. O teléfono estará neste modo durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Queres saír agora?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"A acción seleccionada non está dispoñible durante as chamadas de emerxencia."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Saíndo do modo de devolución de chamadas de emerxencia"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Si"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Chamadas de emerxencia"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Só chamadas de emerxencia"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Tarxeta SIM, rañura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilidade"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chamada wifi entrante"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chamada wifi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Toca outra vez para abrir"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Produciuse un erro durante a descodificación da mensaxe."</string>
</resources>
diff --git a/res/values-gu-rIN/arrays.xml b/res/values-gu-rIN/arrays.xml
new file mode 100644
index 0000000..b6c7c38
--- /dev/null
+++ b/res/values-gu-rIN/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="preferred_network_mode_choices_world_mode">
+ <item msgid="3391522821603584785">"વૈશ્વિક"</item>
+ <item msgid="6753774959494729275">"LTE / CDMA"</item>
+ <item msgid="8658695584186942227">"LTE / GSM / UMTS"</item>
+ </string-array>
+ <string-array name="preferred_network_mode_values_world_mode">
+ <item msgid="8390941159766263625">"10"</item>
+ <item msgid="6103348346295810336">"8"</item>
+ <item msgid="3494519853214024879">"9"</item>
+ </string-array>
+</resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..34933c9
--- /dev/null
+++ b/res/values-gu-rIN/strings.xml
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"સેલ્યુલર ડેટા"</string>
+ <string name="phoneAppLabel" product="default" msgid="906161039445636857">"ફોન"</string>
+ <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"કટોકટીનું ડાયલર"</string>
+ <string name="phoneIconLabel" msgid="2331230813161304895">"ફોન"</string>
+ <string name="fdnListLabel" msgid="8630418672279521003">"FDN સૂચિ"</string>
+ <string name="unknown" msgid="6878797917991465859">"અજાણ્યું"</string>
+ <string name="private_num" msgid="6713286113000232309">"ખાનગી નંબર"</string>
+ <string name="payphone" msgid="4793877574636445118">"પેફોન"</string>
+ <string name="onHold" msgid="9035493194749959955">"હોલ્ડ પર"</string>
+ <string name="mmiStarted" msgid="6347869857061147003">"MMI કોડ પ્રારંભ કર્યો"</string>
+ <string name="ussdRunning" msgid="485588686340541690">"USSD કોડ ચાલે છે…"</string>
+ <string name="mmiCancelled" msgid="2771923949751842276">"MMI કોડ રદ કર્યો"</string>
+ <string name="cancel" msgid="5044513931633602634">"રદ કરો"</string>
+ <string name="enter_input" msgid="1810529547726803893">"USSD સંદેશ <xliff:g id="MIN_LEN">%d</xliff:g> અને <xliff:g id="MAX_LEN">%d</xliff:g> વર્ણ વચ્ચેનો હોવો આવશ્યક છે. કૃપા કરીને ફરી પ્રયાસ કરો."</string>
+ <string name="manageConferenceLabel" msgid="4691922394301969053">"કોન્ફરન્સ કૉલ સંચાલિત કરો"</string>
+ <string name="ok" msgid="3811371167865772377">"ઑકે"</string>
+ <string name="audio_mode_speaker" msgid="27649582100085266">"સ્પીકર્સ"</string>
+ <string name="audio_mode_earpiece" msgid="4156527186373869107">"હેન્ડસેટ ઇઅરપીસ"</string>
+ <string name="audio_mode_wired_headset" msgid="1465350758489175975">"વાયર્ડ હેડસેટ"</string>
+ <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+ <string name="wait_prompt_str" msgid="7601815427707856238">"નીચે આપેલ ટોન્સ મોકલીએ?\n"</string>
+ <string name="pause_prompt_str" msgid="1789964702154314806">"ટોન્સ મોકલી રહ્યાં છે\n"</string>
+ <string name="send_button" msgid="4106860097497818751">"મોકલો"</string>
+ <string name="pause_prompt_yes" msgid="3564467212025151797">"હા"</string>
+ <string name="pause_prompt_no" msgid="6686238803236884877">"નહીં"</string>
+ <string name="wild_prompt_str" msgid="5543521676355533577">"પહોળા વર્ણને આની સાથે બદલો"</string>
+ <string name="no_vm_number" msgid="4164780423805688336">"વૉઇસમેઇલ નંબર ખૂટે છે"</string>
+ <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM કાર્ડ પર કોઈ વૉઇસમેઇલ નંબર સંગ્રહિત નથી."</string>
+ <string name="add_vm_number_str" msgid="4676479471644687453">"નંબર ઉમેરો"</string>
+ <string name="puk_unlocked" msgid="2284912838477558454">"તમારા SIM કાર્ડને અનાવરોધિત કરવામાં આવ્યું છે. તમારા ફોનને અનલૉક કરી રહ્યાં છે…"</string>
+ <string name="label_ndp" msgid="780479633159517250">"SIM નેટવર્ક અનલૉક PIN"</string>
+ <string name="sim_ndp_unlock_text" msgid="683628237760543009">"અનલૉક કરો"</string>
+ <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"છોડી દો"</string>
+ <string name="requesting_unlock" msgid="6412629401033249351">"નેટવર્ક અનલૉકની વિનંતી કરી રહ્યાં છે…"</string>
+ <string name="unlock_failed" msgid="6490531697031504225">"નેટવર્ક અનલૉક વિનંતી અસફળ."</string>
+ <string name="unlock_success" msgid="6770085622238180152">"નેટવર્ક અનલૉક સફળ."</string>
+ <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"સેલ્યુલર નેટવર્ક સેટિંગ્સ આ વપરાશકર્તા માટે ઉપલબ્ધ નથી"</string>
+ <string name="labelGSMMore" msgid="5930842194056092106">"GSM કૉલ સેટિંગ્સ"</string>
+ <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA કૉલ સેટિંગ્સ"</string>
+ <string name="apn_settings" msgid="9043423184895642077">"ઍક્સેસ પોઇન્ટનું નામ"</string>
+ <string name="settings_label" msgid="3876743539816984008">"નેટવર્ક સેટિંગ્સ"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"કૉલિંગ એકાઉન્ટ્સ"</string>
+ <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"આના વડે કૉલ કરો"</string>
+ <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"આના વડે SIP કૉલ્સ કરો"</string>
+ <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"પહેલાં પૂછો"</string>
+ <string name="phone_accounts_settings_header" msgid="4141710640883261094">"સેટિંગ્સ"</string>
+ <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"એકાઉન્ટ્સ પસંદ કરો"</string>
+ <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ફોન એકાઉન્ટ્સ"</string>
+ <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP એકાઉન્ટ ઉમેરો"</string>
+ <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"એકાઉન્ટ સેટિંગ્સ ગોઠવો"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi કૉલિંગ"</string>
+ <string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi કૉલિંગનો ઉપયોગ કરશો નહીં"</string>
+ <string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"કૉલ સહાયકનો ઉપયોગ કરશો નહીં"</string>
+ <string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"કોઈ નહીં"</string>
+ <string name="wifi_calling_call_assistant" msgid="229102032881680320">"કૉલ સહાયક"</string>
+ <string name="wifi_calling_use_call_assistant" msgid="8460024827012666199">"કૉલ સહાયકનો ઉપયોગ કરો"</string>
+ <string name="wifi_calling_select_call_assistant" msgid="9296558058772293">"કૉલ સહાયક પસંદ કરો"</string>
+ <string name="wifi_calling_select_call_assistant_summary" msgid="164985727137156474">"આની કૉલ્સ માટે ઉપયોગમાં લેવાયેલ નેટવર્ક્સને સંચાલિત કરો"</string>
+ <string name="wifi_calling_use_call_assistant_summary" msgid="6599987137133339698">"એપ્લિકેશન્સ અથવા સેવાઓને કૉલ્સ માટે ઉપયોગમાં લેવાયેલ નેટવર્ક્સને સંચાલિત કરવા દો"</string>
+ <string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"ગોઠવો"</string>
+ <string name="connection_service_default_label" msgid="1498481943805913754">"બિલ્ટ-ઇન કનેક્શન સેવા"</string>
+ <string name="voicemail" msgid="8693759337917898954">"વૉઇસમેઇલ"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"વૉઇસમેઇલ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+ <string name="networks" msgid="8873030692174541976">"નેટવર્ક ઓપરેટર્સ"</string>
+ <string name="cell_broadcast_settings" msgid="8740238216690502563">"કટોકટીના બ્રોડકાસ્ટ્સ"</string>
+ <string name="call_settings" msgid="6112441768261754562">"કૉલ સેટિંગ્સ"</string>
+ <string name="additional_gsm_call_settings" msgid="1391795981938800617">"વધારાની સેટિંગ્સ"</string>
+ <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"વધારાની સેટિંગ્સ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="sum_gsm_call_settings" msgid="4076647190996778012">"ફક્ત વધારાની GSM કૉલ સેટિંગ્સ"</string>
+ <string name="additional_cdma_call_settings" msgid="8628958775721886909">"વધારાની CDMA કૉલ સેટિંગ્સ"</string>
+ <string name="sum_cdma_call_settings" msgid="284753265979035549">"ફક્ત વધારાની CDMA કૉલ સેટિંગ્સ"</string>
+ <string name="labelNwService" msgid="4699970172021870983">"નેટવર્ક સેવા સેટિંગ્સ"</string>
+ <string name="labelCallerId" msgid="3888899447379069198">"કૉલર ID"</string>
+ <string name="sum_loading_settings" msgid="1826692909391168620">"સેટિંગ્સ લોડ કરી રહ્યાં છે..."</string>
+ <string name="sum_hide_caller_id" msgid="1071407020290873782">"આઉટગોઇંગ કૉલ્સમાં નંબર છુપાવેલ છે"</string>
+ <string name="sum_show_caller_id" msgid="6768534125447290401">"આઉટગોઇંગ કૉલ્સમાં નંબર પ્રદર્શિત થાય છે"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"આઉટગોઇંગ કૉલ્સમાં મારો નંબર પ્રદર્શિત કરવા માટે ડિફોલ્ટ ઓપરેટર સેટિંગ્સનો ઉપયોગ કરો"</string>
+ <string name="labelCW" msgid="6120513814915920200">"કૉલ પ્રતીક્ષા"</string>
+ <string name="sum_cw_enabled" msgid="8083061901633671397">"કૉલ દરમ્યાન, મને આવનારા કૉલ્સની સૂચના આપો"</string>
+ <string name="sum_cw_disabled" msgid="3648693907300104575">"કૉલ દરમ્યાન, મને આવનારા કૉલ્સની સૂચના આપો"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"કૉલ ફોરવર્ડિંગ સેટિંગ્સ"</string>
+ <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"કૉલ ફોરવર્ડિંગ સેટિંગ્સ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="labelCF" msgid="2574386948026924737">"કૉલ ફોરવર્ડિંગ"</string>
+ <string name="labelCFU" msgid="8147177368148660600">"હંમેશા ફોરવર્ડ કરો"</string>
+ <string name="messageCFU" msgid="3560082430662923687">"હંમેશાં આ નંબરનો ઉપયોગ કરો"</string>
+ <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"બધા કૉલ્સને ફોરવર્ડ કરી રહ્યાં છે"</string>
+ <string name="sum_cfu_enabled" msgid="2450052502198827927">"બધા કૉલ્સને <xliff:g id="PHONENUMBER">{0}</xliff:g> પર ફોરવર્ડ કરી રહ્યાં છે"</string>
+ <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"નંબર અનુપલબ્ધ છે"</string>
+ <string name="sum_cfu_disabled" msgid="8384177689501334080">"બંધ"</string>
+ <string name="labelCFB" msgid="6139853033106283172">"જ્યારે વ્યસ્ત હોય ત્યારે"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"જ્યારે વ્યસ્ત હોય તે સમય માટેનો નંબર"</string>
+ <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> પર ફોરવર્ડ કરી રહ્યાં છે"</string>
+ <string name="sum_cfb_disabled" msgid="4913145177320506827">"બંધ"</string>
+ <string name="disable_cfb_forbidden" msgid="3506984333877998061">"જ્યારે તમારો ફોન વ્યસ્ત હોય ત્યારે તમારા ઓપરેટર કૉલ ફોરવર્ડિંગને અક્ષમ કરવાને સમર્થન આપતા નથી."</string>
+ <string name="labelCFNRy" msgid="1736067178393744351">"જ્યારે જવાબ આપેલ ન હોય ત્યારે"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"જ્યારે જવાબ ન આપેલ હોય તે સમય માટેનો નંબર"</string>
+ <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> પર ફોરવર્ડ કરી રહ્યાં છે"</string>
+ <string name="sum_cfnry_disabled" msgid="3884684060443538097">"બંધ"</string>
+ <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"જ્યારે તમારો ફોન જવાબ નહીં આપે ત્યારે તમારા ઓપરેટર કૉલ ફોરવર્ડિંગને અક્ષમ કરવાને સમર્થન આપતા નથી."</string>
+ <string name="labelCFNRc" msgid="2614827454402079766">"જ્યારે પહોંચયોગ્ય ન હોય ત્યારે"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"જ્યારે પહોંચયોગ્ય ન હોય તે સમય માટેનો નંબર"</string>
+ <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> પર ફોરવર્ડ કરી રહ્યાં છે"</string>
+ <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"અક્ષમ કરેલું"</string>
+ <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"જ્યારે તમારો ફોન પહોંચયોગ્ય ન હોય ત્યારે તમારા કેરિઅર કૉલ ફોરવર્ડિંગને અક્ષમ કરવાને સમર્થન આપતા નથી."</string>
+ <string name="updating_title" msgid="6146755386174019046">"કૉલ સેટિંગ્સ"</string>
+ <string name="call_settings_primary_user_only" msgid="5679923943740900965">"કૉલ સેટિંગ્સને ફક્ત પ્રાથમિક વપરાશકર્તા દ્વારા જ બદલી શકાય છે."</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"કૉલ સેટિંગ્સ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="error_updating_title" msgid="7970259216988931777">"કૉલ સેટિંગ્સની ભૂલ"</string>
+ <string name="reading_settings" msgid="1920291699287055284">"સેટિંગ્સ વાંચી રહ્યાં છે…"</string>
+ <string name="updating_settings" msgid="8171225533884883252">"સેટિંગ્સ અપડેટ કરી રહ્યાં છે..."</string>
+ <string name="reverting_settings" msgid="4752151682666912828">"સેટિંગ્સ પાછી ફરાવી રહ્યાં છે…"</string>
+ <string name="response_error" msgid="6674110501330139405">"નેટવર્ક તરફથી અનપેક્ષિત પ્રતિસાદ."</string>
+ <string name="exception_error" msgid="7027667130619518211">"નેટવર્ક અથવા SIM કાર્ડ ભૂલ."</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"તમારી ફોન એપ્લિકેશનની ફિક્સ્ડ ડાયલિંગ નંબર્સ સેટિંગ ચાલુ છે. પરિણામ રૂપે, કેટલીક કૉલ સંબંધિત સુવિધાઓ કાર્ય કરતી નથી."</string>
+ <string name="radio_off_error" msgid="2304459933248513376">"આ સેટિંગ્સ જોતા પહેલાં રેડિઓ ચાલુ કરો."</string>
+ <string name="close_dialog" msgid="2365884406356986917">"ઑકે"</string>
+ <string name="enable" msgid="7248657275000173526">"ચાલુ કરો"</string>
+ <string name="disable" msgid="4678348128118573672">"બંધ કરો"</string>
+ <string name="change_num" msgid="239476305819844391">"અપડેટ"</string>
+ <string-array name="clir_display_values">
+ <item msgid="5560134294467334594">"નેટવર્ક ડિફોલ્ટ"</item>
+ <item msgid="7876195870037833661">"નંબર છુપાવો"</item>
+ <item msgid="1108394741608734023">"નંબર દર્શાવો"</item>
+ </string-array>
+ <string name="vm_changed" msgid="380744030726254139">"વૉઇસમેઇલ નંબર બદલ્યો."</string>
+ <string name="vm_change_failed" msgid="3352934863246208918">"વૉઇસમેઇલ નંબર બદલી શકાયો નથી.\nજો આ સમસ્યા ચાલુ રહે છે, તો તમારા કેરિઅરનો સંપર્ક કરો."</string>
+ <string name="fw_change_failed" msgid="5298103228470214665">"ફોરવર્ડિંગ નંબર બદલી શકાયો નથી.\nજો આ સમસ્યા ચાલુ રહે છે, તો તમારા કેરિઅરનો સંપર્ક કરો."</string>
+ <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"વર્તમાન ફોરવર્ડિંગ નંબર સેટિંગ્સને પુનઃપ્રાપ્ત કરી અને સાચવી શકાઇ નથી.\nકોઈપણ રીતે નવા પ્રદાતા પર સ્વિચ કરીએ?"</string>
+ <string name="no_change" msgid="3186040086622435212">"કોઇ બદલાવો થયાં ન હતાં."</string>
+ <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"વૉઇસમેઇલ સેવા પસંદ કરો"</string>
+ <string name="voicemail_default" msgid="2001233554889016880">"તમારો કેરિઅર"</string>
+ <string name="mobile_networks" msgid="2843854043339307375">"સેલ્યુલર નેટવર્ક સેટિંગ્સ"</string>
+ <string name="label_available" msgid="1181658289009300430">"ઉપલબ્ધ નેટવર્ક્સ"</string>
+ <string name="load_networks_progress" msgid="5230707536168902952">"શોધી રહ્યું છે..."</string>
+ <string name="empty_networks_list" msgid="4249426905018815316">"કોઈ નેટવર્ક મળ્યું નથી."</string>
+ <string name="search_networks" msgid="1601136049300882441">"નેટવર્ક્સ શોધો"</string>
+ <string name="network_query_error" msgid="6828516148953325006">"નેટવર્ક્સ શોધતી વખતે ભૂલ આવી."</string>
+ <string name="register_on_network" msgid="9055203954040805084">"<xliff:g id="NETWORK">%s</xliff:g> પર નોંધણી કરી રહ્યાં છે…"</string>
+ <string name="not_allowed" msgid="5613353860205691579">"તમારું SIM કાર્ડ આ નેટવર્કથી કનેક્શનને મંજૂરી આપતું નથી."</string>
+ <string name="connect_later" msgid="2308119155752343975">"હમણાં આ નેટવર્કથી કનેક્ટ કરી શકાતું નથી. પછીથી ફરી પ્રયાસ કરો."</string>
+ <string name="registration_done" msgid="495135664535876612">"નેટવર્ક પર નોંધણી કરી."</string>
+ <string name="sum_carrier_select" msgid="3494252551249882718">"એક નેટવર્ક ઓપરેટર પસંદ કરો"</string>
+ <string name="sum_search_networks" msgid="2921092249873272715">"બધા ઉપલબ્ધ નેટવર્ક્સ માટે શોધો"</string>
+ <string name="select_automatically" msgid="5628402124471810174">"આપમેળે પસંદ કરો"</string>
+ <string name="sum_select_automatically" msgid="5614890115123292400">"પસંદગીનું નેટવર્ક આપમેળે શોધો"</string>
+ <string name="register_automatically" msgid="6017849844573519637">"સ્વયંચાલિત નોંધણી…"</string>
+ <string name="preferred_network_mode_title" msgid="2336624679902659306">"પસંદગીનો નેટવર્ક પ્રકાર"</string>
+ <string name="preferred_network_mode_summary" msgid="1434820673166126609">"નેટવર્ક ઓપરેટિંગ મોડ બદલો"</string>
+ <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"પસંદગીનો નેટવર્ક પ્રકાર"</string>
+ <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"પસંદગીનો નેટવર્ક મોડ: WCDMA પસંદ કરેલ છે"</string>
+ <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"પસંદગીનો નેટવર્ક મોડ: ફક્ત GSM"</string>
+ <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"પસંદગીનો નેટવર્ક મોડ: ફક્ત WCDMA"</string>
+ <string name="preferred_network_mode_gsm_wcdma_summary" msgid="3161255745326408587">"પસંદગીનો નેટવર્ક મોડ: GSM / WCDMA"</string>
+ <string name="preferred_network_mode_cdma_summary" msgid="3175690187294334241">"પસંદગીનો નેટવર્ક મોડ: CDMA"</string>
+ <string name="preferred_network_mode_cdma_evdo_summary" msgid="8332063064712726618">"પસંદગીનો નેટવર્ક મોડ: CDMA / EvDo"</string>
+ <string name="preferred_network_mode_cdma_only_summary" msgid="1309770926198634150">"પસંદગીનો નેટવર્ક મોડ: ફક્ત CDMA"</string>
+ <string name="preferred_network_mode_evdo_only_summary" msgid="8472220691721269155">"પસંદગીનો નેટવર્ક મોડ: ફક્ત EvDo"</string>
+ <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="4726682079415227330">"પસંદગીનો નેટવર્ક મોડ: CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"પસંદગીનો નેટવર્ક મોડ: LTE"</string>
+ <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"પસંદગીનો નેટવર્ક મોડ: GSM/WCDMA/LTE"</string>
+ <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"પસંદગીનો નેટવર્ક મોડ: CDMA+LTE/EVDO"</string>
+ <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"પસંદગીનો નેટવર્ક મોડ: વૈશ્વિક"</string>
+ <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"પસંદગીનો નેટવર્ક મોડ: LTE / WCDMA"</string>
+ <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"પસંદગીનો નેટવર્ક મોડ: LTE / GSM / UMTS"</string>
+ <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"પસંદગીનો નેટવર્ક મોડ: LTE / CDMA"</string>
+ <string-array name="preferred_network_mode_choices">
+ <item msgid="7886739962255042385">"LTE / WCDMA"</item>
+ <item msgid="577652050447385699">"LTE"</item>
+ <item msgid="6813597571293773656">"વૈશ્વિક"</item>
+ <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
+ <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
+ <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
+ <item msgid="545430093607698090">"ફક્ત EvDo"</item>
+ <item msgid="1508557726283094448">"CDMA w/o EvDo"</item>
+ <item msgid="4341433122263841224">"CDMA/EvDo સ્વતઃ"</item>
+ <item msgid="5958053792390386668">"GSM/WCDMA સ્વતઃ"</item>
+ <item msgid="7913148405605373434">"ફક્ત WCDMA"</item>
+ <item msgid="1524224863879435516">"ફક્ત GSM"</item>
+ <item msgid="3817924849415716259">"GSM/WCDMA પસંદ કરેલ છે"</item>
+ </string-array>
+ <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"વિસ્તૃત 4G LTE મોડ"</string>
+ <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"વૉઇસ અને અન્ય સંચારોને બહેતર બનાવવા માટે LTE સેવાઓનો ઉપયોગ કરો (ભલામણ કરેલ)"</string>
+ <string name="data_enabled" msgid="5972538663568715366">"ડેટા સક્ષમ કરેલ છે"</string>
+ <string name="data_enable_summary" msgid="2382798156640007971">"ડેટા વપરાશની મંજૂરી આપો"</string>
+ <string name="roaming" msgid="8871412572928323707">"ડેટા રોમિંગ"</string>
+ <string name="roaming_enable" msgid="7331106985174381987">"જ્યારે રોમિંગ હોય ત્યારે ડેટા સેવાઓથી કનેક્ટ કરો"</string>
+ <string name="roaming_disable" msgid="1843417228755568110">"જ્યારે રોમિંગ હોય ત્યારે ડેટા સેવાઓથી કનેક્ટ કરો"</string>
+ <string name="roaming_reenable_message" msgid="8913735676127858115">"તમે ડેટા કનેક્ટિવિટી ગુમાવી છે કારણ કે તમે તમારા હોમ નેટવર્કને બંધ ડેટા રોમિંગ સાથે છોડ્યું છે."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"તમારાથી આંશિક શુલ્ક લઈ શકાય છે."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ડેટા રોમિંગને મંજૂરી આપીએ?"</string>
+ <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS વિકલ્પો"</string>
+ <string name="cdma_options" msgid="4016822858172249884">"CDMA વિકલ્પો"</string>
+ <string name="throttle_data_usage" msgid="3715677828160555808">"ડેટા વપરાશ"</string>
+ <string name="throttle_current_usage" msgid="8762280193043815361">"વર્તમાન અવધિમાં વપરાયેલ ડેટા"</string>
+ <string name="throttle_time_frame" msgid="1915198770363734685">"ડેટા ઉપયોગ અવધિ"</string>
+ <string name="throttle_rate" msgid="4710388992676803508">"માહિતી રેટ નીતિ"</string>
+ <string name="throttle_help" msgid="243651091785169900">"વધુ જાણો"</string>
+ <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_2">%3$s</xliff:g> માંથી <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) અવધિ મહત્તમ\nઆગલી અવધિ <xliff:g id="USED_3">%4$d</xliff:g> દિવસમાં પ્રારંભ થાય છે (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+ <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_2">%3$s</xliff:g> માંથી <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) અવધિ મહત્તમ"</string>
+ <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> મહત્તમ વટાવી દીધું\nડેટા રેટ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s સુધી ઘટાડાશે"</string>
+ <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ચક્ર વીતાવ્યું\nઆગલી અવધિ <xliff:g id="USED_1">%2$d</xliff:g> દિવસમાં પ્રારંભ થાય છે (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+ <string name="throttle_rate_subtext" msgid="2149102656120726855">"જો ડેટા સીમા વટાવવામાં આવે તો ડેટા રેટ <xliff:g id="USED">%1$d</xliff:g> Kb/s સુધી ઘટાડવામાં આવે છે"</string>
+ <string name="throttle_help_subtext" msgid="3633091498168446044">"તમારા કેરિઅરની સેલ્યુલર નેટવર્ક ડેટા ઉપયોગ નીતિ વિશે વધુ માહિતી"</string>
+ <string name="cell_broadcast_sms" msgid="5584192824053625842">"સેલ બ્રોડકાસ્ટ SMS"</string>
+ <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"સેલ બ્રોડકાસ્ટ SMS"</string>
+ <string name="cell_bc_sms_enable" msgid="6441688565738921084">"સેલ બ્રોડકાસ્ટ SMS સક્ષમ કરેલ છે"</string>
+ <string name="cell_bc_sms_disable" msgid="3398365088309408749">"સેલ બ્રોડકાસ્ટ SMS અક્ષમ કરેલ છે"</string>
+ <string name="cb_sms_settings" msgid="651715019785107312">"સેલ બ્રોડકાસ્ટ SMS સેટિંગ્સ"</string>
+ <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"કટોકટીનું બ્રોડકાસ્ટ"</string>
+ <string name="emergency_broadcast_enable" msgid="2645980025414010211">"કટોકટીનું બ્રોડકાસ્ટ સક્ષમ કરેલ છે"</string>
+ <string name="emergency_broadcast_disable" msgid="3665199821267569426">"કટોકટીનું બ્રોડકાસ્ટ અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_administrative" msgid="6501582322182059412">"વહીવટી"</string>
+ <string name="administrative_enable" msgid="1750086122962032235">"વહીવટી સક્ષમ કરેલ છે"</string>
+ <string name="administrative_disable" msgid="8433273857248698539">"વહીવટી અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_maintenance" msgid="1819693083025106678">"જાળવણી"</string>
+ <string name="maintenance_enable" msgid="8566636458770971189">"જાળવણી સક્ષમ કરેલ છે"</string>
+ <string name="maintenance_disable" msgid="7340189100885066077">"જાળવણી અક્ષમ કરેલ છે"</string>
+ <string name="general_news_settings" msgid="4968779723948432978">"સામાન્ય સમાચાર"</string>
+ <string name="bf_news_settings" msgid="3935593091894685267">"વ્યાવસાયિક અને નાણાકીય સમાચાર"</string>
+ <string name="sports_news_settings" msgid="7649399631270052835">"ખેલ કૂદના સમાચાર"</string>
+ <string name="entertainment_news_settings" msgid="5051153952959405035">"મનોરંજન સમાચાર"</string>
+ <string name="enable_disable_local" msgid="7890281063123416120">"સ્થાનિક"</string>
+ <string name="local_enable" msgid="6370463247609136359">"સ્થાનિક સમાચાર સક્ષમ કરેલ છે"</string>
+ <string name="local_disable" msgid="4405691986943795798">"સ્થાનિક સમાચાર અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_regional" msgid="4905652414535565872">"પ્રાદેશિક"</string>
+ <string name="regional_enable" msgid="4434680415437834759">"પ્રાદેશિક સમાચાર સક્ષમ કરેલ છે"</string>
+ <string name="regional_disable" msgid="5359325527213850077">"પ્રાદેશિક સમાચાર અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_national" msgid="236278090206880734">"રાષ્ટ્રીય"</string>
+ <string name="national_enable" msgid="1172443648912246952">"રાષ્ટ્રીય સમાચાર સક્ષમ કરેલ છે"</string>
+ <string name="national_disable" msgid="326018148178601166">"રાષ્ટ્રીય સમાચાર અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_international" msgid="7535348799604565592">"આંતરરાષ્ટ્રીય"</string>
+ <string name="international_enable" msgid="5855356769925044927">"આંતરરાષ્ટ્રીય સમાચાર સક્ષમ કરેલ છે"</string>
+ <string name="international_disable" msgid="2850648591041088931">"આંતરરાષ્ટ્રીય સમાચાર અક્ષમ કરેલ છે"</string>
+ <string name="list_language_title" msgid="2841683501919760043">"ભાષા"</string>
+ <string name="list_language_summary" msgid="8109546531071241601">"સમાચાર ભાષા પસંદ કરો"</string>
+ <string-array name="list_language_entries">
+ <item msgid="6137851079727305485">"અંગ્રેજી"</item>
+ <item msgid="1151988412809572526">"ફ્રેન્ચ"</item>
+ <item msgid="577840534704312665">"સ્પેનિશ"</item>
+ <item msgid="8385712091143148180">"જાપાનીઝ"</item>
+ <item msgid="1858401628368130638">"કોરિયન"</item>
+ <item msgid="1933212028684529632">"ચાઇનીઝ"</item>
+ <item msgid="1908428006803639064">"હીબ્રુ"</item>
+ </string-array>
+ <string-array name="list_language_values">
+ <item msgid="1804908636436467150">"1"</item>
+ <item msgid="289708030346890334">"2"</item>
+ <item msgid="1121469729692402684">"૩"</item>
+ <item msgid="2614093115912897722">"4"</item>
+ <item msgid="2411164639857960614">"5"</item>
+ <item msgid="5884448729274543324">"6"</item>
+ <item msgid="5511864807618312598">"7"</item>
+ </string-array>
+ <string name="list_language_dtitle" msgid="5442908726538951934">"ભાષાઓ"</string>
+ <string name="enable_disable_local_weather" msgid="986967454867219114">"સ્થાનિક હવામાન"</string>
+ <string name="local_weather_enable" msgid="6199315114382448922">"સ્થાનિક હવામાન સક્ષમ કરેલ છે"</string>
+ <string name="local_weather_disable" msgid="2510158089142626480">"સ્થાનિક હવામાન અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_atr" msgid="8339572391278872343">"ક્ષેત્ર ટ્રાફિક અહેવાલો"</string>
+ <string name="atr_enable" msgid="5541757457789181799">"ક્ષેત્ર ટ્રાફિક અહેવાલોને સક્ષમ કરેલ છે"</string>
+ <string name="atr_disable" msgid="7085558154727596455">"ક્ષેત્ર ટ્રાફિક અહેવાલોને અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_lafs" msgid="668189073721277199">"સ્થાનિક હવાઇ મથકથી ઉડાનની સૂચીઓ"</string>
+ <string name="lafs_enable" msgid="2791978667205137052">"સ્થાનિક હવાઇ મથકથી ઉડાનની સૂચીઓ સક્ષમ કરેલ છે"</string>
+ <string name="lafs_disable" msgid="2391212397725495350">"સ્થાનિક હવાઇ મથકથી ઉડાનની સૂચીઓ અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_restaurants" msgid="6240381945336814024">"રેસ્ટોરેંટ્સ"</string>
+ <string name="restaurants_enable" msgid="5137657479469118847">"રેસ્ટોરન્ટ્સ સક્ષમ કરેલ છે"</string>
+ <string name="restaurants_disable" msgid="3678480270938424092">"રેસ્ટોરન્ટ્સ અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_lodgings" msgid="1822029172658551202">"લોજિંગ્સ"</string>
+ <string name="lodgings_enable" msgid="3230042508992850322">"લોડિંગ્સ સક્ષમ કરેલ છે"</string>
+ <string name="lodgings_disable" msgid="3387879742320682391">"લોજિંગ્સ અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_retail_directory" msgid="1357809784475660303">"રિટેલ નિર્દેશિકા"</string>
+ <string name="retail_directory_enable" msgid="3280626290436111496">"રિટેલ નિર્દેશિકા સક્ષમ કરેલ છે"</string>
+ <string name="retail_directory_disable" msgid="6479739816662879027">"રિટેલ નિર્દેશિકા અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_advertisements" msgid="5999495926176182128">"જાહેરાતો"</string>
+ <string name="advertisements_enable" msgid="2050305021264683786">"જાહેરાતોને સક્ષમ કરેલ છે"</string>
+ <string name="advertisements_disable" msgid="8350985908788707935">"જાહેરાતોને અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_stock_quotes" msgid="6397810445293533603">"સ્ટોક ક્વોટ્સ"</string>
+ <string name="stock_quotes_enable" msgid="4384802470887170543">"સ્ટોક ક્વોટ્સ સક્ષમ કરેલ છે"</string>
+ <string name="stock_quotes_disable" msgid="4781450084565594998">"સ્ટોક ક્વોટ્સ અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_eo" msgid="4863043263443942494">"રોજગારની તકો"</string>
+ <string name="eo_enable" msgid="8623559062015685813">"રોજગારની તકો સક્ષમ કરેલ છે"</string>
+ <string name="eo_disable" msgid="3863812478090907609">"રોજગારની તકો અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_mhh" msgid="908214593528968522">"તબીબી, આરોગ્ય અને હોસ્પિટલ"</string>
+ <string name="mhh_enable" msgid="5544500632306446815">"તબીબી, આરોગ્ય અને હોસ્પિટલ સક્ષમ કરેલ છે"</string>
+ <string name="mhh_disable" msgid="8998210550117117437">"તબીબી, આરોગ્ય અને હોસ્પિટલ અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_technology_news" msgid="3517184627114999149">"ટેક્નોલોજી સમાચાર"</string>
+ <string name="technology_news_enable" msgid="7995209394210455181">"તકનીકી સમાચાર સક્ષમ કરેલ છે"</string>
+ <string name="technology_news_disable" msgid="5483490380561851946">"તકનીકી સમાચાર અક્ષમ કરેલ છે"</string>
+ <string name="enable_disable_multi_category" msgid="626771003122899280">"બહુ-કેટેગરી"</string>
+ <string name="multi_category_enable" msgid="1179299804641721768">"બહુ-કેટેગરી સક્ષમ કરેલ છે"</string>
+ <string name="multi_category_disable" msgid="880104702904139505">"બહુ-કેટેગરી અક્ષમ કરેલ છે"</string>
+ <string name="network_lte" msgid="7702681952521375754">"LTE (ભલામણ કરેલ)"</string>
+ <string name="network_4G" msgid="2723512640529983138">"4G (ભલામણ કરેલ)"</string>
+ <string name="network_global" msgid="1323190488685355309">"વૈશ્વિક"</string>
+ <string name="cdma_system_select_title" msgid="5757657769327732833">"સિસ્ટમ પસંદગી"</string>
+ <string name="cdma_system_select_summary" msgid="60460043745797517">"CDMA રોમિંગ મોડ બદલો"</string>
+ <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"સિસ્ટમ પસંદગી"</string>
+ <string-array name="cdma_system_select_choices">
+ <item msgid="176474317493999285">"ફક્ત હોમ"</item>
+ <item msgid="1205664026446156265">"સ્વચલિત"</item>
+ </string-array>
+ <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA સબ્સ્ક્રિપ્શન"</string>
+ <string name="cdma_subscription_summary" msgid="2530890766115781140">"RUIM/SIM અને NV વચ્ચે બદલો"</string>
+ <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"સબ્સ્ક્રિપ્શન"</string>
+ <string-array name="cdma_subscription_choices">
+ <item msgid="2258014151300708431">"RUIM/SIM"</item>
+ <item msgid="5127722015571873880">"NV"</item>
+ </string-array>
+ <string-array name="cdma_subscription_values">
+ <item msgid="7494167883478914080">"0"</item>
+ <item msgid="6043847456049107742">"1"</item>
+ </string-array>
+ <string name="cdma_activate_device" msgid="3793805892364814518">"ઉપકરણને સક્રિય કરો"</string>
+ <string name="cdma_lte_data_service" msgid="4255018217292548962">"ડેટા સેવા સેટ કરો"</string>
+ <string name="carrier_settings_title" msgid="9028166176523012300">"કેરિઅર સેટિંગ્સ"</string>
+ <string name="fdn" msgid="7878832555095183202">"ફિક્સ્ડ ડાયલિંગ નંબર્સ"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"ફિક્સ્ડ ડાયલિંગ નંબર્સ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="manage_fdn_list" msgid="8777755791892122369">"FDN સૂચિ"</string>
+ <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN સૂચિ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn_activation" msgid="2156479741307463576">"FDN સક્રિયકરણ"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"ફિક્સ્ડ ડાયલિંગ નંબર્સ સક્ષમ કરેલ છે."</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"ફિક્સ્ડ ડાયલિંગ નંબર્સ અક્ષમ કરેલ છે."</string>
+ <string name="enable_fdn" msgid="3740191529180493851">"FDN સક્ષમ કરો"</string>
+ <string name="disable_fdn" msgid="7944020890722540616">"FDN અક્ષમ કરો"</string>
+ <string name="change_pin2" msgid="2153563695382176676">"PIN2 બદલો"</string>
+ <string name="enable_fdn_ok" msgid="7215588870329688132">"FDN અક્ષમ કરો"</string>
+ <string name="disable_fdn_ok" msgid="5727046928930740173">"FDN સક્ષમ કરો"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"ફિક્સ્ડ ડાયલિંગ નંબર્સને સંચાલિત કરો"</string>
+ <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN ઍક્સેસ માટે PIN બદલો"</string>
+ <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ફોન નંબર સૂચિને સંચાલિત કરો"</string>
+ <string name="voice_privacy" msgid="3776841382844614716">"વૉઇસ ગોપનીયતા"</string>
+ <string name="voice_privacy_summary" msgid="3159383389833516214">"વધારેલ ગોપનીયતા મોડ સક્ષમ કરો"</string>
+ <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY મોડ"</string>
+ <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY મોડ સેટ કરો"</string>
+ <string name="auto_retry_mode_title" msgid="4073265511427813322">"સ્વતઃ-પુનઃપ્રયાસ કરો"</string>
+ <string name="auto_retry_mode_summary" msgid="4973886004067532288">"સ્વતઃ-પુનઃપ્રયાસ કરો મોડ સક્ષમ કરો"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"વિડિઓ કૉલ દરમિયાન TTY મોડ ફેરફારની મંજૂરી નથી."</string>
+ <string name="menu_add" msgid="1882023737425114762">"સંપર્ક ઉમેરો"</string>
+ <string name="menu_edit" msgid="7143003705504672374">"સંપર્ક સંપાદિત કરો"</string>
+ <string name="menu_delete" msgid="3977150783449642851">"સંપર્ક કાઢી નાંખો"</string>
+ <string name="get_pin2" msgid="8204677063922225311">"PIN2 લખો"</string>
+ <string name="name" msgid="7329028332786872378">"નામ"</string>
+ <string name="number" msgid="7905950798349903858">"નંબર"</string>
+ <string name="save" msgid="4094274636321939086">"સાચવો"</string>
+ <string name="add_fdn_contact" msgid="2481915899633353976">"ફિક્સ્ડ ડાયલિંગ નંબર ઉમેરો"</string>
+ <string name="adding_fdn_contact" msgid="7627379633721940991">"ફિક્સ્ડ ડાયલિંગ નંબર ઉમેરી રહ્યાં છે…"</string>
+ <string name="fdn_contact_added" msgid="7458335758501736665">"ફિક્સ્ડ ડાયલિંગ નંબર ઉમેર્યો છે."</string>
+ <string name="edit_fdn_contact" msgid="7976936035587081480">"ફિક્સ ડાયલિંગ નંબર સંપાદિત કરો"</string>
+ <string name="updating_fdn_contact" msgid="8370929876849803600">"ફિક્સ્ડ ડાયલિંગ નંબર અપડેટ કરી રહ્યાં છે…"</string>
+ <string name="fdn_contact_updated" msgid="5497828782609005017">"ફિક્સ્ડ ડાયલિંગ નંબર અપડેટ કર્યો."</string>
+ <string name="delete_fdn_contact" msgid="6668958073074151717">"ફિક્સ્ડ ડાયલિંગ નંબર કાઢી નાખો"</string>
+ <string name="deleting_fdn_contact" msgid="5669163206349319969">"ફિક્સ્ડ ડાયલિંગ નંબર કાઢી રહ્યાં છે..."</string>
+ <string name="fdn_contact_deleted" msgid="7154162327112259569">"ફિક્સ્ડ ડાયલિંગ નંબર કાઢી નાખ્યો."</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"FDN અપડેટ થયો ન હતો કારણ કે તમે ખોટો PIN લખ્યો છે."</string>
+ <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN અપડેટ કર્યો ન હતો, કારાણ કે નંબર 20 અંકને વટાવતો નથી."</string>
+ <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN અપડેટ થયો ન હતો. PIN2 ખોટો હતો અથવા ફોન નંબર નકારેલ હતો."</string>
+ <string name="fdn_failed" msgid="540018079008319747">"FDN ઓપરેશન નિષ્ફળ થયું."</string>
+ <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM કાર્ડમાંથી વાંચી રહ્યાં છે…"</string>
+ <string name="simContacts_empty" msgid="5270660846489561932">"તમારા SIM કાર્ડ પર કોઈ સંપર્કો નથી."</string>
+ <string name="simContacts_title" msgid="1861472842524839921">"આયાત કરવા માટે સંપર્કો પસંદ કરો"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM કાર્ડથી સંપર્કો આયાત કરવા માટે એરપ્લેન મોડ બંધ કરો."</string>
+ <string name="enable_pin" msgid="5422767284133234860">"SIM PIN સક્ષમ/અક્ષમ કરો"</string>
+ <string name="change_pin" msgid="9174186126330785343">"SIM PIN બદલો"</string>
+ <string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
+ <string name="oldPinLabel" msgid="5287773661246368314">"જૂનો PIN"</string>
+ <string name="newPinLabel" msgid="207488227285336897">"નવો PIN"</string>
+ <string name="confirmPinLabel" msgid="257597715098070206">"નવા PIN ની પુષ્ટિ કરો"</string>
+ <string name="badPin" msgid="8955102849303984935">"તમે લખેલ જૂનો PIN સાચો નથી. ફરી પ્રયાસ કરો."</string>
+ <string name="mismatchPin" msgid="5923253370683071889">"તમે લખેલા PIN મેળ ખાતા નથી. ફરી પ્રયાસ કરો."</string>
+ <string name="invalidPin" msgid="5981171102258684792">"4 થી 8 સંખ્યાનો હોય તેવો એક PIN લખો."</string>
+ <string name="disable_sim_pin" msgid="3419351358300716472">"SIM PIN સાફ કર્યો"</string>
+ <string name="enable_sim_pin" msgid="4845145659651484248">"SIM PIN સેટ કરો"</string>
+ <string name="enable_in_progress" msgid="3417917024688497010">"PIN સેટ કરી રહ્યાં છે…"</string>
+ <string name="enable_pin_ok" msgid="2918545971413270063">"PIN સેટ કર્યો"</string>
+ <string name="disable_pin_ok" msgid="2109571368635883688">"PIN સાફ કર્યો"</string>
+ <string name="pin_failed" msgid="5644377896213584760">"PIN ખોટો છે"</string>
+ <string name="pin_changed" msgid="4455736268023261662">"PIN અપડેટ કર્યો"</string>
+ <string name="puk_requested" msgid="5921393215789090200">"પાસવર્ડ ખોટો છે, PIN હમણાં અવરોધિત છે. PUK ની વિનંતી કરી."</string>
+ <string name="enter_pin2_text" msgid="8339444124477720345">"પિન કરો"</string>
+ <string name="oldPin2Label" msgid="8559146795026261502">"જૂનો PIN2"</string>
+ <string name="newPin2Label" msgid="4573956902204349054">"નવો PIN2"</string>
+ <string name="confirmPin2Label" msgid="8100319484454787708">"નવા PIN2 ની પુષ્ટિ કરો"</string>
+ <string name="badPuk2" msgid="7910064009531541708">"PUK2 ખોટી. ફરી પ્રયાસ કરો."</string>
+ <string name="badPin2" msgid="6646896629970023109">"જૂનો PIN2 ખોટો છે. ફરી પ્રયાસ કરો."</string>
+ <string name="mismatchPin2" msgid="4177967478551851117">"PIN2 મેળ ખાતા નથી. ફરીથી પ્રયાસ કરો."</string>
+ <string name="invalidPin2" msgid="1757045131429105595">"4 થી 8 સંખ્યાનો તેવો એક PIN2 દાખલ કરો."</string>
+ <string name="invalidPuk2" msgid="7059081153334815973">"8 સંખ્યાની હોય તેવી એક PUK2 દાખલ કરો."</string>
+ <string name="pin2_changed" msgid="3724522579945610956">"PIN2 અપડેટ કર્યો"</string>
+ <string name="label_puk2_code" msgid="4688069961795341948">"PUK2 કોડ દાખલ કરો"</string>
+ <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"પાસવર્ડ ખોટો છે. PIN2 હમણાં અવરોધિત છે. ફરી પ્રયાસ કરવા માટે, PIN 2 બદલો."</string>
+ <string name="puk2_requested" msgid="5831015200030161434">"પાસવર્ડ ખોટો છે, SIM હમણાં અવરોધિત છે. PUK2 દાખલ કરો."</string>
+ <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 ને કાયમી રૂપે અવરોધિત કરેલ છે."</string>
+ <string name="pin2_attempts" msgid="720736232885011507">\n"તમારી પાસે <xliff:g id="NUMBER">%d</xliff:g> પ્રયાસ બાકી છે."</string>
+ <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 હવે અવરોધિત નથી"</string>
+ <string name="doneButton" msgid="2859593360997984240">"થઈ ગયું"</string>
+ <string name="voicemail_settings_number_label" msgid="8524164258691887790">"વૉઇસમેઇલ નંબર"</string>
+ <string name="card_title_dialing" msgid="5769417478498348054">"ડાયલ કરી રહ્યાં છે"</string>
+ <string name="card_title_redialing" msgid="8253487008234167266">"ફરી ડાયલ કરી રહ્યાં છે"</string>
+ <string name="card_title_conf_call" msgid="1162980346189744501">"કોન્ફરન્સ કૉલ"</string>
+ <string name="card_title_incoming_call" msgid="7364539451234646909">"આવનાર કૉલ"</string>
+ <string name="card_title_call_ended" msgid="5544730338889702298">"કૉલ સમાપ્ત થયો"</string>
+ <string name="card_title_on_hold" msgid="821463117892339942">"હોલ્ડ પર"</string>
+ <string name="card_title_hanging_up" msgid="3999101620995182450">"સમાપ્ત કરી રહ્યાં છે"</string>
+ <string name="card_title_in_call" msgid="6346543933068225205">"કૉલમાં"</string>
+ <string name="notification_dialing" msgid="2107666444937350731">"ડાયલ કરી રહ્યાં છે"</string>
+ <string name="notification_missedCallTitle" msgid="7554385905572364535">"છૂટેલો કૉલ"</string>
+ <string name="notification_missedCallsTitle" msgid="1361677948941502522">"છૂટેલા કૉલ્સ"</string>
+ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> છૂટેલા કૉલ્સ"</string>
+ <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> નો કૉલ ચૂકી ગયાં"</string>
+ <string name="notification_ongoing_call" msgid="7068688957273482989">"ચાલી રહેલ કૉલ"</string>
+ <string name="notification_on_hold" msgid="3480694969511790465">"હોલ્ડ પર"</string>
+ <string name="notification_incoming_call" msgid="2820429205043529642">"આવનાર કૉલ"</string>
+ <string name="notification_voicemail_title" msgid="8933468752045550523">"નવો વૉઇસમેઇલ"</string>
+ <string name="notification_voicemail_title_count" msgid="4366360747660929916">"નવો વૉઇસમેઇલ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+ <string name="notification_voicemail_text_format" msgid="4447323569453981685">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ડાયલ કરો"</string>
+ <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"વૉઇસમેઇલ નંબર અજાણ"</string>
+ <string name="notification_network_selection_title" msgid="4224455487793492772">"કોઈ સેવા નથી"</string>
+ <string name="notification_network_selection_text" msgid="2607085729661923269">"પસંદ કરેલ નેટવર્ક (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) અનુપલબ્ધ"</string>
+ <string name="notification_action_end_call" msgid="6069460915123531620">"સમાપ્ત કરો"</string>
+ <string name="notification_missedCall_call_back" msgid="2684890353590890187">"કૉલ બેક"</string>
+ <string name="notification_missedCall_message" msgid="3049928912736917988">"સંદેશ"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"કૉલ કરવા માટે એરપ્લેન મોડ બંધ કરો."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"કૉલ કરવા માટે એરપ્લેન મોડ બંધ કરો અથવા વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
+ <string name="incall_error_emergency_only" msgid="4678640422710818317">"નેટવર્ક પર નોંધણી કરાયેલ નથી."</string>
+ <string name="incall_error_out_of_service" msgid="4100065333878929223">"સેલ્યુલર નેટવર્ક ઉપલબ્ધ નથી."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"સેલ્યુલર નેટવર્ક ઉપલબ્ધ નથી. કૉલ કરવા માટે વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
+ <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"કૉલ કરવા માટે, માન્ય નંબર દાખલ કરો."</string>
+ <string name="incall_error_call_failed" msgid="6302746943230078197">"કૉલ કરી શકાતો નથી."</string>
+ <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI અનુક્રમ પ્રારંભ કરી રહ્યાં છે…"</string>
+ <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"સેવા સમર્થિત નથી"</string>
+ <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"કૉલ્સ સ્વિચ કરી શકાતા નથી."</string>
+ <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"અલગ કૉલ કરી શકાતો નથી."</string>
+ <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"સ્થાનાંતર કરી શકાતું નથી."</string>
+ <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"કોન્ફરન્સ કૉલ કરવામાં અસમર્થ."</string>
+ <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"કૉલ નકારી શકાતો નથી."</string>
+ <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"કૉલ(લ્સ) રિલીઝ કરી શકતા નથી."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"કૉલ કરવા માટે વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
+ <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"કટોકટીનો કૉલ"</string>
+ <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"રેડિઓ ચાલુ કરી રહ્યાં છે…"</string>
+ <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"કોઈ સેવા નથી. ફરી પ્રયાસ કરી રહ્યાં છે…"</string>
+ <string name="dial_emergency_error" msgid="1509085166367420355">"કૉલ કરી શકાતો નથી. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> એ કટોકટીનો નંબર નથી."</string>
+ <string name="dial_emergency_empty_error" msgid="9130194953830414638">"કૉલ કરી શકાતો નથી. કટોકટીનો નંબર ડાયલ કરો!"</string>
+ <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ડાયલ કરવા માટે કીબોર્ડનો ઉપયોગ કરો"</string>
+ <string name="onscreenHoldText" msgid="2285258239691145872">"હોલ્ડ કરો"</string>
+ <string name="onscreenEndCallText" msgid="4403855834875398585">"સમાપ્ત"</string>
+ <string name="onscreenShowDialpadText" msgid="8561805492659639893">"ડાયલપેડ"</string>
+ <string name="onscreenMuteText" msgid="5011369181754261374">"મ્યૂટ કરો"</string>
+ <string name="onscreenAddCallText" msgid="5140385634712287403">"કૉલ ઉમેરો"</string>
+ <string name="onscreenMergeCallsText" msgid="6640195098064538950">"કૉલ્સ મર્જ કરો"</string>
+ <string name="onscreenSwapCallsText" msgid="1602990689244030047">"સ્વેપ"</string>
+ <string name="onscreenManageCallsText" msgid="5473231160123254154">"કૉલ્સ સંચાલિત કરો"</string>
+ <string name="onscreenManageConferenceText" msgid="6485935856534311346">"કોન્ફરન્સ સંચાલિત કરો"</string>
+ <string name="onscreenAudioText" msgid="1710087112800041743">"ઑડિઓ"</string>
+ <string name="onscreenVideoCallText" msgid="4800924186056115442">"વિડિઓ કૉલ"</string>
+ <string name="importSimEntry" msgid="6614358325359736031">"આયાત કરો"</string>
+ <string name="importAllSimEntries" msgid="1503181169636198673">"બધુ આયાત કરો"</string>
+ <string name="importingSimContacts" msgid="7374056215462575769">"SIM સંપર્કો આયાત કરી રહ્યાં છે"</string>
+ <string name="importToFDNfromContacts" msgid="2130620207013368580">"સંપર્કોમાંથી આયાત કરો"</string>
+ <string name="hac_mode_title" msgid="8740268574688743289">"સાંભળવામાં સહાયો"</string>
+ <string name="hac_mode_summary" msgid="6833851160514929341">"સાંભળવું અને સુસંગતતા ચાલુ કરો"</string>
+ <string-array name="tty_mode_entries">
+ <item msgid="512950011423868021">"TTY બંધ"</item>
+ <item msgid="3971695875449640648">"TTY સંપૂર્ણ"</item>
+ <item msgid="1937509904407445684">"TTY HCO"</item>
+ <item msgid="5644925873488772224">"TTY VCO"</item>
+ </string-array>
+ <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF ટોન્સ"</string>
+ <string name="dtmf_tones_summary" msgid="3351820372864020331">"DTMF ટોન્સની લંબાઈ સેટ કરો"</string>
+ <string-array name="dtmf_tone_entries">
+ <item msgid="899650777817315681">"સામાન્ય"</item>
+ <item msgid="2883365539347850535">"લાંબુ"</item>
+ </string-array>
+ <string name="network_info_message" msgid="7738596060242881930">"નેટવર્ક સંદેશ"</string>
+ <string name="network_error_message" msgid="3394780436230411413">"ભૂલ સંદેશ"</string>
+ <string name="ota_title_activate" msgid="8616918561356194398">"તમારા ફોનને સક્રિય કરો"</string>
+ <string name="ota_touch_activate" msgid="6553212803262586244">"તમારી ફોન સેવાને સક્રિય કરવા માટે એક વિશિષ્ટ કૉલની જરૂર છે. \n\n\"સક્રિય કરો\" દબાવ્યાં પછી, તમારા ફોનને સક્રિય કરવા માટે પ્રદાન કરવામાં આવેલ સૂચનાઓને અનુસરો."</string>
+ <string name="ota_hfa_activation_title" msgid="2234246934160473981">"સક્રિય કરી રહ્યું છે…"</string>
+ <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"ફોન તમારી મોબાઇલ ડેટા સેવાને સક્રિય કરી રહ્યું છે.\n\nઆમાં 5 મિનિટ સુધીનો સમય લાગી શકે છે."</string>
+ <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"સક્રિયકરણ છોડીએ?"</string>
+ <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"જો તમે સક્રિયકરણ છોડી દો, તો તમે કૉલ્સ કરી શકતા નથી અથવા મોબાઇલ ડેટા નેટવર્ક્સથી કનેક્ટ કરી શકાતું નથી (તેમ છતાં તમે Wi-Fi નેટવર્ક્સથી કનેક્ટ કરી શકો છો). જ્યાં સુધી તમે તમારા ફોનને સક્રિય ન કરી લો, ત્યાં સુધી તમે ચાલુ કરો ત્યારે દર વખતે તમને તેને સક્રિય કરવાનું પૂછવામાં આવે છે."</string>
+ <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"છોડો"</string>
+ <string name="ota_activate" msgid="1368528132525626264">"સક્રિય કરો"</string>
+ <string name="ota_title_activate_success" msgid="6570240212263372046">"ફોન સક્રિય કરેલ છે."</string>
+ <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"સક્રિયકરણમાં સમસ્યા"</string>
+ <string name="ota_listen" msgid="162923839877584937">"જ્યાં સુધી તમે સક્રિયકરણ પૂર્ણ સાંભળો નહીં ત્યાં સુધી બોલાયેલ સૂચનાઓને અનુસરો."</string>
+ <string name="ota_speaker" msgid="6904589278542719647">"સ્પીકર્સ"</string>
+ <string name="ota_progress" msgid="460876637828044519">"તમારો ફોનનો પ્રોગ્રામ કરી રહ્યાં છે…"</string>
+ <string name="ota_failure" msgid="7713756181204620397">"તમારા ફોનનો પ્રોગ્રામ કરી શકાયો નથી"</string>
+ <string name="ota_successful" msgid="1880780692887077407">"તમારો ફોન હવે સક્રિય કરેલ છે. સેવા પ્રારંભ થવામાં 15 મિનિટ સુધી લાગી શકે છે."</string>
+ <string name="ota_unsuccessful" msgid="8072141612635635357">"તમારો ફોન સક્રિય નથી. \nબહેતર કવરેજ માટે તમારે એક ક્ષેત્ર શોધવાની જરૂર છે (વિંડોની નજીક અથવા બહાર). \n\nફરી પ્રયાસ કરો અથવા વધુ વિકલ્પો માટે ગ્રાહક સેવાને કૉલ કરો."</string>
+ <string name="ota_spc_failure" msgid="3909983542575030796">"અતિરેક SPC નિષ્ફળતાઓ"</string>
+ <string name="ota_call_end" msgid="4537279738134612388">"પાછળ"</string>
+ <string name="ota_try_again" msgid="7685477206465902290">"ફરી પ્રયાસ કરો"</string>
+ <string name="ota_next" msgid="3904945374358235910">"આગલું"</string>
+ <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
+ <string name="phone_entered_ecm_text" msgid="6266424252578731203">"કટોકટી કૉલબેક મોડમાં દાખલ કર્યો"</string>
+ <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"કટોકટી કૉલબેક મોડ"</string>
+ <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ડેટા કનેક્શન અક્ષમ કરેલ છે"</string>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> મિનિટ માટે કોઈ ડેટા કનેક્શન નથી</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> મિનિટ માટે કોઈ ડેટા કનેક્શન નથી</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">ફોન <xliff:g id="COUNT_1">%s</xliff:g> મિનિટ સુધી કટોકટી કૉલબેક મોડમાં રહેશે. આ મોડમાં હોય ત્યારે ડેટા કનેક્શનનો ઉપયોગ કરતી કોઈપણ એપ્લિકેશન્સનો ઉપયોગ થઈ શકશે નહીં. શું તમે હમણાં બહાર નીકળવા માગો છો?</item>
+ <item quantity="other">ફોન <xliff:g id="COUNT_1">%s</xliff:g> મિનિટ સુધી કટોકટી કૉલબેક મોડમાં રહેશે. આ મોડમાં હોય ત્યારે ડેટા કનેક્શનનો ઉપયોગ કરતી કોઈપણ એપ્લિકેશન્સનો ઉપયોગ થઈ શકશે નહીં. શું તમે હમણાં બહાર નીકળવા માગો છો?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">કટોકટી કૉલબેક મોડમાં હોય ત્યારે પસંદ કરેલ ક્રિયા ઉપલબ્ધ રહેતી નથી. ફોન <xliff:g id="COUNT_1">%s</xliff:g> મિનિટ સુધી આ મોડમાં રહેશે. શું તમે હમણાં બહાર નીકળવા માગો છો?</item>
+ <item quantity="other">કટોકટી કૉલબેક મોડમાં હોય ત્યારે પસંદ કરેલ ક્રિયા ઉપલબ્ધ રહેતી નથી. ફોન <xliff:g id="COUNT_1">%s</xliff:g> મિનિટ સુધી આ મોડમાં રહેશે. શું તમે હમણાં બહાર નીકળવા માગો છો?</item>
+ </plurals>
+ <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"કટોકટી કૉલમાં હોય ત્યારે પસંદ કરેલ ક્રિયા ઉપલબ્ધ રહેતી નથી."</string>
+ <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"કટોકટી કૉલબેક મોડમાંથી બહાર નીકળે છે"</string>
+ <string name="alert_dialog_yes" msgid="6674268047820703974">"હા"</string>
+ <string name="alert_dialog_no" msgid="1476091437797628703">"નહીં"</string>
+ <string name="alert_dialog_dismiss" msgid="2491494287075907171">"છોડી દો"</string>
+ <string name="voicemail_provider" msgid="5135942703327136909">"સેવા"</string>
+ <string name="voicemail_settings" msgid="72448049107749316">"સેટઅપ"</string>
+ <string name="voicemail_number_not_set" msgid="6724904736891087856">"<સેટ કરેલ નથી>"</string>
+ <string name="other_settings" msgid="3672912580359716394">"અન્ય કૉલ સેટિંગ્સ"</string>
+ <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> મારફતે કૉલ કરે છે"</string>
+ <string name="contactPhoto" msgid="4713193418046639466">"સંપર્ક ફોટો"</string>
+ <string name="goPrivate" msgid="865837794424530980">"ખાનગી જાઓ"</string>
+ <string name="selectContact" msgid="781975788478987237">"સંપર્ક પસંદ કરો"</string>
+ <string name="not_voice_capable" msgid="2739898841461577811">"વૉઇસ કૉલિંગ સમર્થિત નથી"</string>
+ <string name="description_dial_button" msgid="7459705245418435351">"ડાયલ કરો"</string>
+ <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"વાઇબ્રેટ"</string>
+ <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"વાઇબ્રેટ"</string>
+ <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ધ્વનિ"</string>
+ <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ડાયલપેડ સ્વતઃપૂર્ણ"</string>
+ <string name="preference_category_ringtone" msgid="5197960752529332721">"રિંગટોન અને વાઇબ્રેટ"</string>
+ <string name="pstn_connection_service_label" msgid="1743245930577325900">"બિલ્ટ-ઇન SIM કાર્ડ્સ"</string>
+ <string name="enable_video_calling_title" msgid="7237253660669000899">"વિડિઓ કૉલિંગ ચાલુ કરો"</string>
+ <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"વિડિઓ કૉલિંગ ચાલુ કરવા માટે, તમારે નેટવર્ક સેટિંગ્સમાં વધારેલ 4G LTE મોડને સક્ષમ કરવાની જરૂર છે."</string>
+ <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"નેટવર્ક સેટિંગ્સ"</string>
+ <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"બંધ કરો"</string>
+ <string name="sim_label_emergency_calls" msgid="4847699229529306397">"કટોકટીના કૉલ્સ"</string>
+ <string name="sim_description_emergency_calls" msgid="7535215397212301562">"ફક્ત કટોકટીની કૉલિંગ"</string>
+ <string name="sim_description_default" msgid="4778679519938775515">"SIM કાર્ડ, સ્લોટ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ઍક્સેસિબિલિટી"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"આવનાર Wi-Fi કૉલ"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi કૉલ"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ખોલવા માટે ફરી ટચ કરો"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"સંદેશ ડીકોડિંગ કરતી વખતે ભૂલ આવી હતી."</string>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index c1fbe8d..3b41ee6 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -28,7 +28,7 @@
<string name="mmiStarted" msgid="6347869857061147003">"MMI कोड प्रारंभ किया गया"</string>
<string name="ussdRunning" msgid="485588686340541690">"USSD कोड चल रहा है…"</string>
<string name="mmiCancelled" msgid="2771923949751842276">"MMI कोड रद्द किया गया"</string>
- <string name="cancel" msgid="5044513931633602634">"रहने दें"</string>
+ <string name="cancel" msgid="5044513931633602634">"अभी नहीं"</string>
<string name="enter_input" msgid="1810529547726803893">"USSD संदेश <xliff:g id="MIN_LEN">%d</xliff:g> और <xliff:g id="MAX_LEN">%d</xliff:g> वर्णों के बीच होना चाहिए. कृपया पुन: प्रयास करें."</string>
<string name="manageConferenceLabel" msgid="4691922394301969053">"कॉन्फ़्रेंस कॉल प्रबंधित करें"</string>
<string name="ok" msgid="3811371167865772377">"ठीक है"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"फ़ोन खाते"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP खाता जोड़ें"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"खाता सेटिंग कॉन्फ़िगर करें"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"वाई-फ़ाई कॉलिंग"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"वाई-फ़ाई कॉलिंग"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"वाई-फ़ाई कॉलिंग का उपयोग न करें"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"कॉल सहायक का उपयोग न करें"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"कोई नहीं"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"कॉन्फ़िगर करें"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"अंतर्निहित कनेक्शन सेवा"</string>
<string name="voicemail" msgid="8693759337917898954">"वॉयस मेल"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"वॉइसमेल (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"नेटवर्क ऑपरेटर"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"आपातकालीन प्रसारण"</string>
@@ -96,9 +97,9 @@
<string name="labelCW" msgid="6120513814915920200">"कॉल प्रतीक्षा"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"कॉल के दौरान, मुझे इनकमिंग कॉल की नोटिफिकेशन दें"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"कॉल के दौरान, मुझे इनकमिंग कॉल की नोटिफिकेशन दें"</string>
- <string name="call_forwarding_settings" msgid="3378927671091537173">"कॉल अग्रेषण सेटिंग"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"कॉल आगे भेजने की सेटिंग"</string>
<string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"कॉल आगे भेजने की सेटिंग (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="labelCF" msgid="2574386948026924737">"कॉल अग्रेषण"</string>
+ <string name="labelCF" msgid="2574386948026924737">"कॉल आगे भेजना"</string>
<string name="labelCFU" msgid="8147177368148660600">"हमेशा आगे भेजें"</string>
<string name="messageCFU" msgid="3560082430662923687">"हमेशा इस नंबर का उपयोग करें"</string>
<string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"सभी कॉल अग्रेषित कर रहा है"</string>
@@ -200,11 +201,12 @@
<string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ध्वनि और अन्य संचारों को बेहतर बनाने हेतु LTE सेवाओं का उपयोग करें (अनुशंसित)"</string>
<string name="data_enabled" msgid="5972538663568715366">"डेटा सक्षम किया गया"</string>
<string name="data_enable_summary" msgid="2382798156640007971">"डेटा उपयोग करने दें"</string>
- <string name="roaming" msgid="8871412572928323707">"डेटा रोमिंग"</string>
+ <string name="roaming" msgid="8871412572928323707">"रोमिंग डेटा"</string>
<string name="roaming_enable" msgid="7331106985174381987">"रोमिंग के समय डेटा सेवाएं कनेक्ट करें"</string>
<string name="roaming_disable" msgid="1843417228755568110">"रोमिंग के समय डेटा सेवाएं कनेक्ट करें"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"आपकी डेटा कनेक्टिविटी खो गई है क्योंकि आप डेटा रोमिंग बंद करके अपने होम नेटवर्क से बाहर आ गए हैं."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"रोमिंग में होने पर डेटा उपयोग होने दें? महत्वपूर्ण शुल्क लागू हो सकते हैं."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"आपको बहुत अधिक शुल्क देना पड़ सकता है."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"डेटा रोमिंग की अनुमति दें?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS विकल्प"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA विकल्प"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"डेटा उपयोग"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY मोड सेट करें"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"स्वतः पुन: प्रयास"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"स्वतः पुन: प्रयास मोड सक्षम करें"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"वीडियो कॉल के दौरान TTY मोड में बदलाव की अनुमति नहीं है"</string>
<string name="menu_add" msgid="1882023737425114762">"संपर्क जोड़ें"</string>
<string name="menu_edit" msgid="7143003705504672374">"संपर्क संपादित करें"</string>
<string name="menu_delete" msgid="3977150783449642851">"संपर्क हटाएं"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"सिम कार्ड से पढ़ रहा है…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"आपके सिम कार्ड पर कोई संपर्क नहीं है."</string>
<string name="simContacts_title" msgid="1861472842524839921">"आयात करने के लिए संपर्कों को चुनें"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"सिम कार्ड से संपर्क आयात करने के लिए, पहले हवाई जहाज़ मोड बंद करें."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM कार्ड से संपर्क आयात करने के लिए हवाई जहाज़ मोड बंद करें."</string>
<string name="enable_pin" msgid="5422767284133234860">"सिम पिन सक्षम/अक्षम करें"</string>
<string name="change_pin" msgid="9174186126330785343">"सिम पिन बदलें"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"सिम पिन:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"समाप्त करें"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"वापस कॉल करें"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"संदेश"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"कॉल करने के लिए, पहले विमान मोड बंद करें."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"कॉल करने के लिए हवाई जहाज़ मोड बंद करें."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"कॉल करने के लिए हवाई जहाज़ मोड बंद करें या किसी वायरलेस नेटवर्क से कनेक्ट करें."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"नेटवर्क पर पंजीकृत नहीं."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"सेल्युलर नेटवर्क उपलब्ध नहीं."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"सेल्युलर नेटवर्क उपलब्ध नहीं है. कॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्ट करें."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"कॉल करने के लिए, मान्य नंबर डालें."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"कॉल नहीं किया जा सकता."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI अनुक्रम प्रारंभ हो रहा है…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"कॉंन्फ़्रेंस कॉल करने में असमर्थ."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"कॉल अस्वीकार नहीं किया जा सकता."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कॉल रिलीज़ नहीं किया जा सकता (किए जा सकते)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"कॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्ट करें."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आपातकालीन कॉल"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडियो चालू कर रहा है..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"कोई सेवा नहीं. पुन: प्रयास किया जा रहा है…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"आपातकालीन कॉलबैक मोड में प्रविष्ट हुए"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"आपातकालीन कॉलबैक मोड"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"डेटा कनेक्शन अक्षम किया गया"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> मिनट के लिए कोई डेटा कनेक्शन नहीं"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> मिनट के लिए कोई डेटा कनेक्शन नहीं"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट के लिए आपातकालीन कॉलबैक मोड में रहेगा. हालांकि, इस मोड में होने पर डेटा कनेक्शन का उपयोग करने वाले किसी ऐप्स का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
- <item quantity="other" msgid="8617116564023933114">"फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट के लिए आपातकालीन कॉलबैक मोड में रहेगा. हालांकि, इस मोड में होने पर डेटा कनेक्शन का उपयोग करने वाले किसी ऐप्स का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"आपातकालीन कॉलबैक मोड के समय चयनित क्रिया उपलब्ध नहीं है. फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट तक इस मोड में रहेगा. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
- <item quantity="other" msgid="6115622137771382224">"आपातकालीन कॉलबैक मोड के समय चयनित क्रिया उपलब्ध नहीं है. फ़ोन <xliff:g id="COUNT">%s</xliff:g> मिनट तक इस मोड में रहेगा. क्या आप अभी बाहर निकलना चाहते हैं?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> मिनट तक कोई डेटा कनेक्शन नहीं</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> मिनट तक कोई डेटा कनेक्शन नहीं</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">फ़ोन <xliff:g id="COUNT_1">%s</xliff:g> मिनट तक आपातकालीन कॉलबैक मोड में रहेगा. इस मोड में रहने पर डेटा कनेक्शन का उपयोग करने वाले किसी भी ऐप्लिकेशन का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?</item>
+ <item quantity="other">फ़ोन <xliff:g id="COUNT_1">%s</xliff:g> मिनट तक आपातकालीन कॉलबैक मोड में रहेगा. इस मोड में रहने पर डेटा कनेक्शन का उपयोग करने वाले किसी भी ऐप्लिकेशन का उपयोग नहीं किया जा सकता. क्या आप अभी बाहर निकलना चाहते हैं?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">आपातकालीन कॉलबैक मोड में रहने पर चयनित कार्रवाई उपलब्ध नहीं होती. फ़ोन <xliff:g id="COUNT_1">%s</xliff:g> मिनट तक इस मोड में रहेगा. क्या आप अभी बाहर निकलना चाहते हैं?</item>
+ <item quantity="other">आपातकालीन कॉलबैक मोड में रहने पर चयनित कार्रवाई उपलब्ध नहीं होती. फ़ोन <xliff:g id="COUNT_1">%s</xliff:g> मिनट तक इस मोड में रहेगा. क्या आप अभी बाहर निकलना चाहते हैं?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"आपातकालीन कॉल के समय चयनित क्रिया उपलब्ध नहीं होती है."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"आपातकालीन कॉलबैक मोड से बाहर निकल रहा है"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"हां"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"आपातकालीन कॉल"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"केवल आपातकालीन कॉल"</string>
<string name="sim_description_default" msgid="4778679519938775515">"सिम कार्ड, स्लॉट: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"सरल उपयोग"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"इनकमिंग वाई-फ़ाई कॉल"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"वाई-फ़ाई कॉल"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"खोलने के लिए पुन: स्पर्श करें"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"संदेश डीकोड करते समय कोई त्रुटि हुई थी."</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index ebd3ce1..cdf9e13 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonski računi"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Dodaj SIP račun"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfiguriranje postavki računa"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi pozivi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi pozivi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ne upotrebljavaj Wi-Fi pozive"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ne upotrebljavaj pomoćnik za pozive"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ništa"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfiguriraj"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Ugrađena usluga povezivanja"</string>
<string name="voicemail" msgid="8693759337917898954">"Govorna pošta"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Govorna pošta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Mrežni operateri"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Hitna emitiranja"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Poveži se s podatkovnim uslugama u roamingu"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Poveži se s podatkovnim uslugama u roamingu"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Izgubili ste podatkovnu vezu jer ste izašli iz matične mreže s isključenim roamingom podataka."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Želite li dopustiti upotrebu podataka u roamingu? Mogući su veliki troškovi."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"To se može skupo naplaćivati."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Želite li dopustiti roaming podataka?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opcije za GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA opcije"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Korištenje podataka"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Postavi način TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatski ponovni pokušaj"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Omogući način automatskog ponovnog pokušaja"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Promjena TTY načina nije dopuštena tijekom videopoziva"</string>
<string name="menu_add" msgid="1882023737425114762">"Dodaj kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Uredi kontakt"</string>
<string name="menu_delete" msgid="3977150783449642851">"Izbriši kontakt"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Čitanje sa SIM kartice…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Nema kontakata na vašoj SIM kartici."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Odaberite kontakte za uvoz"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Za uvoz kontakata sa SIM kartice prvo isključite način rada u zrakoplovu."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Isključite način rada u zrakoplovu da biste uvezli kontakte sa SIM kartice."</string>
<string name="enable_pin" msgid="5422767284133234860">"Omogući/onemogući PIN za SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Promijeni PIN za SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN za SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Prekini vezu"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Povratni poziv"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Poruka"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Da biste uspostavili poziv, prvo isključite način rada u zrakoplovu."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Isključite način rada u zrakoplovu da biste uputili poziv."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Isključite način rada u zrakoplovu ili se povežite s bežičnom mrežom da biste uputili poziv."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Nije registrirano na mreži."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilna mreža nije dostupna."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilna mreža nije dostupna. Povežite se s bežičnom mrežom da biste uputili poziv."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Unesite važeći broj da biste uspostavili poziv."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Pozivanje nije moguće."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Pokretanje MMI sekvence…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nije moguće uspostaviti konferencijske pozive."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Odbijanje poziva nije moguće."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Prekidanje poziva nije moguće."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se s bežičnom mrežom da biste uputili poziv."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hitan poziv"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Uključivanje radija…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nema usluge. Pokušavamo ponovo…"</string>
@@ -508,18 +514,21 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Unijet je način hitnog povratnog poziva"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Način hitnog povratnog poziva"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Onemogućena je podatkovna mreža"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Nema podatkovne veze <xliff:g id="COUNT">%s</xliff:g> min"</item>
- <item quantity="other" msgid="3122217344579273583">"Nema podatkovne veze <xliff:g id="COUNT">%s</xliff:g> min"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon će biti u načinu rada hitnog povratnog poziva <xliff:g id="COUNT">%s</xliff:g> min. Za to se vrijeme ne može upotrebljavati nijedna aplikacija kojoj je potrebna podatkovna veza. Želite li izaći sada?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon će biti u načinu rada hitnog povratnog poziva <xliff:g id="COUNT">%s</xliff:g> min. Za to se vrijeme ne može upotrebljavati nijedna aplikacija kojoj je potrebna podatkovna veza. Želite li izaći sada?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Odabrana radnja nije dostupna u načinu rada hitnog povratnog poziva. Telefon će biti u tom načinu rada <xliff:g id="COUNT">%s</xliff:g> min. Želite li izaći sada?"</item>
- <item quantity="other" msgid="6115622137771382224">"Odabrana radnja nije dostupna u načinu rada hitnog povratnog poziva. Telefon će biti u tom načinu rada <xliff:g id="COUNT">%s</xliff:g> min. Želite li izaći sada?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Podatkovne veze neće biti <xliff:g id="COUNT_1">%s</xliff:g> minutu</item>
+ <item quantity="few">Podatkovne veze neće biti <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
+ <item quantity="other">Podatkovne veze neće biti <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Telefon će biti u načinu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minutu. U tom se načinu ne mogu upotrebljavati aplikacije koje upotrebljavaju podatkovnu vezu. Želite li odmah zatvoriti taj način?</item>
+ <item quantity="few">Telefon će biti u načinu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minute. U tom se načinu ne mogu upotrebljavati aplikacije koje upotrebljavaju podatkovnu vezu. Želite li odmah zatvoriti taj način?</item>
+ <item quantity="other">Telefon će biti u načinu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minuta. U tom se načinu ne mogu upotrebljavati aplikacije koje upotrebljavaju podatkovnu vezu. Želite li odmah zatvoriti taj način?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Odabrana radnja nije dostupna u načinu hitnog povratnog poziva. Telefon će u tom načinu biti <xliff:g id="COUNT_1">%s</xliff:g> minutu. Želite li odmah zatvoriti taj način?</item>
+ <item quantity="few">Odabrana radnja nije dostupna u načinu hitnog povratnog poziva. Telefon će u tom načinu biti <xliff:g id="COUNT_1">%s</xliff:g> minute. Želite li odmah zatvoriti taj način?</item>
+ <item quantity="other">Odabrana radnja nije dostupna u načinu hitnog povratnog poziva. Telefon će u tom načinu biti <xliff:g id="COUNT_1">%s</xliff:g> minuta. Želite li odmah zatvoriti taj način?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Odabrana radnja nije dostupna tijekom hitnog poziva."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Izlaz iz načina hitnog povratnog poziva"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Da"</string>
@@ -548,4 +557,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Hitni pozivi"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Samo hitni pozivi"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM kartica, utor: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pristupačnost"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Dolazni Wi-Fi poziv"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi poziv"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Dodirnite ponovo da biste otvorili"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Došlo je do pogreške prilikom dekodiranja poruke."</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index fe7636e..5ed77c0 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -20,7 +20,7 @@
<string name="phoneAppLabel" product="default" msgid="906161039445636857">"Telefon"</string>
<string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Segélyhívó tárcsázó"</string>
<string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
- <string name="fdnListLabel" msgid="8630418672279521003">"FDN lista"</string>
+ <string name="fdnListLabel" msgid="8630418672279521003">"Fix hívószámok listája"</string>
<string name="unknown" msgid="6878797917991465859">"Ismeretlen"</string>
<string name="private_num" msgid="6713286113000232309">"Magántelefonszám"</string>
<string name="payphone" msgid="4793877574636445118">"Nyilvános telefon"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonos fiókok"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP-fiók hozzáadása"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Fiókbeállítások konfigurálása"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi-hívás"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi-hívás"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ne használja a Wi-Fi-hívást"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ne használja a hívássegédet"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Nincs"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurálás"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Beépített kapcsolati szolgáltatás"</string>
<string name="voicemail" msgid="8693759337917898954">"Hangposta"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Hangposta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"HP:"</string>
<string name="networks" msgid="8873030692174541976">"Mobilszolgáltatók"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Sürgősségi adások"</string>
@@ -100,7 +101,7 @@
<string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Hívásátirányítási beállítások (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="labelCF" msgid="2574386948026924737">"Hívásátirányítás"</string>
<string name="labelCFU" msgid="8147177368148660600">"Mindig legyen átirányítás"</string>
- <string name="messageCFU" msgid="3560082430662923687">"Mindig a következő szám használata"</string>
+ <string name="messageCFU" msgid="3560082430662923687">"Mindig a következő számot használja"</string>
<string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Minden hívás átirányítása"</string>
<string name="sum_cfu_enabled" msgid="2450052502198827927">"Minden hívás átirányítása ide: <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"A szám nem érhető el"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Csatlakozás adatszolgáltatásokhoz barangolás során"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Csatlakozás adatszolgáltatásokhoz barangolás során"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Megszakadt az adatkapcsolat, mert elhagyta az otthoni hálózatot, és az adatbarangolás nincs bekapcsolva."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Engedélyezi az adatbarangolást? Ez jelentős költségekkel járhat."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Lehet, hogy jelentős összeget számítanak fel érte."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Engedélyezi az adatbarangolást?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS beállítások"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-beállítások"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Adathasználat"</string>
@@ -330,19 +332,19 @@
<string name="cdma_lte_data_service" msgid="4255018217292548962">"Adatszolgáltatás beállítása"</string>
<string name="carrier_settings_title" msgid="9028166176523012300">"Szolgáltatói beállítások"</string>
<string name="fdn" msgid="7878832555095183202">"Fix hívószámok"</string>
- <string name="fdn_with_label" msgid="187084204115493366">"Rögzített hívószámok (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="manage_fdn_list" msgid="8777755791892122369">"FDN lista"</string>
- <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN lista (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="fdn_activation" msgid="2156479741307463576">"FDN aktiválása"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Fix hívószámok (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="manage_fdn_list" msgid="8777755791892122369">"Fix hívószámok listája"</string>
+ <string name="fdn_list_with_label" msgid="7437232552210469217">"Fix hívószámok listája (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn_activation" msgid="2156479741307463576">"Fix hívószám aktiválása"</string>
<string name="fdn_enabled" msgid="5238109009915521240">"A fix hívószámok engedélyezve"</string>
<string name="fdn_disabled" msgid="4700049736675368279">"A fix hívószámok letiltva"</string>
- <string name="enable_fdn" msgid="3740191529180493851">"FDN engedélyezése"</string>
- <string name="disable_fdn" msgid="7944020890722540616">"FDN letiltása"</string>
- <string name="change_pin2" msgid="2153563695382176676">"PIN2-kód módosítása"</string>
- <string name="enable_fdn_ok" msgid="7215588870329688132">"FDN letiltása"</string>
- <string name="disable_fdn_ok" msgid="5727046928930740173">"FDN engedélyezése"</string>
+ <string name="enable_fdn" msgid="3740191529180493851">"Fix hívószám engedélyezése"</string>
+ <string name="disable_fdn" msgid="7944020890722540616">"Fix hívószám letiltása"</string>
+ <string name="change_pin2" msgid="2153563695382176676">"PIN2 kód módosítása"</string>
+ <string name="enable_fdn_ok" msgid="7215588870329688132">"Fix hívószám letiltása"</string>
+ <string name="disable_fdn_ok" msgid="5727046928930740173">"Fix hívószám engedélyezése"</string>
<string name="sum_fdn" msgid="1959399454900272878">"Fix hívószámok kezelése"</string>
- <string name="sum_fdn_change_pin" msgid="6666549734792827932">"PIN-kód módosítása az FDN eléréséhez"</string>
+ <string name="sum_fdn_change_pin" msgid="6666549734792827932">"PIN kód módosítása a fix hívószámok eléréséhez"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Telefonszámok listájának kezelése"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Adatvédelem"</string>
<string name="voice_privacy_summary" msgid="3159383389833516214">"Fokozott adatvédelmi mód engedélyezése"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY-mód beállítása"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatikus újrapróbálkozás"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Automatikus újrapróbálkozás-mód bekapcsolása"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"A TTY mód nem módosítható videohívás közben"</string>
<string name="menu_add" msgid="1882023737425114762">"Névjegy hozzáadása"</string>
<string name="menu_edit" msgid="7143003705504672374">"Névjegy szerkesztése"</string>
<string name="menu_delete" msgid="3977150783449642851">"Névjegy törlése"</string>
@@ -366,14 +369,14 @@
<string name="delete_fdn_contact" msgid="6668958073074151717">"Fix hívószám törlése"</string>
<string name="deleting_fdn_contact" msgid="5669163206349319969">"Fix hívószám törlése..."</string>
<string name="fdn_contact_deleted" msgid="7154162327112259569">"A fix hívószám törölve."</string>
- <string name="pin2_invalid" msgid="5470854099230755944">"Az FDN nem volt frissítve, mert hibás PIN-kódot írt be."</string>
- <string name="fdn_invalid_number" msgid="1494755047900009147">"Az FDN nem lett frissítve, mert a szám nem haladhatja meg a 20 számjegyet."</string>
- <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Az FDN nem lett frissítve. Hibás a PIN2 kód, vagy a telefonszámot elutasították."</string>
- <string name="fdn_failed" msgid="540018079008319747">"Az FDN-művelet sikertelen."</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"A fix hívószám nincs frissítve, mert hibás PIN kódot írt be."</string>
+ <string name="fdn_invalid_number" msgid="1494755047900009147">"A fix hívószám nem lett frissítve, mert a szám nem haladhatja meg a 20 számjegyet."</string>
+ <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"A fix hívószám nem lett frissítve. Hibás a PIN2 kód, vagy a telefonszámot elutasították."</string>
+ <string name="fdn_failed" msgid="540018079008319747">"Sikertelen a fix hívószámmal végzett művelet."</string>
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Beolvasás a SIM kártyáról..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Nincsenek névjegyek a SIM kártyán."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Válassza ki az importálni kívánt névjegyeket"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"A névjegyek SIM kártyáról való importálásához először kapcsolja ki a repülőgépes üzemmódot."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"A repülős üzemmód kikapcsolása a névjegyek SIM kártyáról történő importálásához."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM kártya PIN kódjának be-/kikapcsolása"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM kártya PIN kódjának módosítása"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM kártya PIN kódja:"</string>
@@ -392,8 +395,8 @@
<string name="pin_changed" msgid="4455736268023261662">"PIN kód frissítve"</string>
<string name="puk_requested" msgid="5921393215789090200">"A jelszó helytelen. PIN kód letiltva. Adja meg a PUK kódot."</string>
<string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
- <string name="oldPin2Label" msgid="8559146795026261502">"Régi PIN2-kód"</string>
- <string name="newPin2Label" msgid="4573956902204349054">"Új PIN2-kód"</string>
+ <string name="oldPin2Label" msgid="8559146795026261502">"Régi PIN2 kód"</string>
+ <string name="newPin2Label" msgid="4573956902204349054">"Új PIN2 kód"</string>
<string name="confirmPin2Label" msgid="8100319484454787708">"Erősítse meg az új PIN2-kódot"</string>
<string name="badPuk2" msgid="7910064009531541708">"A PUK2 kód helytelen. Próbálja újra."</string>
<string name="badPin2" msgid="6646896629970023109">"A régi PIN2 kód helytelen. Próbálja újra."</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Hívás befejezése"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Visszahívás"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Üzenet"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Híváskezdeményezéshez kapcsolja ki a Repülőgép üzemmódot."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Repülős üzemmód kikapcsolása hívás indításához."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Hívás indításához kapcsolja ki a repülős üzemmódot, illetve csatlakozzon egy vezeték nélküli hálózathoz."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Nincs regisztrálva a hálózaton."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"A mobilhálózat nem érhető el."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A mobilhálózat nem érhető el. Hívás indításához csatlakozzon egy vezeték nélküli hálózathoz."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Hívásindításhoz adjon meg egy érvényes számot."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"A hívás sikertelen."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-sorozat indítása..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nem lehet konferenciahívást folytatni."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"A híváselutasítás sikertelen."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"A tartásban lévő hívás(ok) folytatása sikertelen."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Hívás indításához csatlakozzon egy vezeték nélküli hálózathoz."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Segélyhívás"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Rádió bekapcsolása..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nincs szolgáltatás. Újrapróbálkozás folyamatban…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Segélykérő visszahívása mód bekapcsolva"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Segélykérő visszahívása mód"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Adatkapcsolat letiltva"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> perce nincs adatkapcsolat"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> perce nincs adatkapcsolat"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"A telefon <xliff:g id="COUNT">%s</xliff:g> percig Sürgősségi visszahívás módban lesz. Ebben az üzemmódban nem használhatók az adatkapcsolatot használó alkalmazások. Szeretne most kilépni?"</item>
- <item quantity="other" msgid="8617116564023933114">"A telefon <xliff:g id="COUNT">%s</xliff:g> percig Sürgősségi visszahívás módban lesz. Ebben az üzemmódban nem használhatók az adatkapcsolatot használó alkalmazások. Szeretne most kilépni?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"A kiválasztott művelet nem áll rendelkezésre Sürgősségi visszahívás módban. A telefon <xliff:g id="COUNT">%s</xliff:g> percig lesz ebben a módban. Szeretne most kilépni?"</item>
- <item quantity="other" msgid="6115622137771382224">"A kiválasztott művelet nem áll rendelkezésre Sürgősségi visszahívás módban. A telefon <xliff:g id="COUNT">%s</xliff:g> percig lesz ebben a módban. Szeretne most kilépni?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> perce nincs adatkapcsolat</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> perce nincs adatkapcsolat</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">A telefon <xliff:g id="COUNT_1">%s</xliff:g> percig lesz Segélykérő visszahívása módban. Ebben az üzemmódban nem használhatók olyan alkalmazások, amelyeknél adatkapcsolatra van szükség. Szeretne kilépni most?</item>
+ <item quantity="one">A telefon <xliff:g id="COUNT_0">%s</xliff:g> percig lesz Segélykérő visszahívása módban. Ebben az üzemmódban nem használhatók olyan alkalmazások, amelyeknél adatkapcsolatra van szükség. Szeretne kilépni most?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">A választott művelet nem érhető el Segélykérő visszahívása módban. A telefon <xliff:g id="COUNT_1">%s</xliff:g> percig lesz ebben a módban. Szeretne kilépni most?</item>
+ <item quantity="one">A választott művelet nem érhető el Segélykérő visszahívása módban. A telefon <xliff:g id="COUNT_0">%s</xliff:g> percig lesz ebben a módban. Szeretne kilépni most?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"A választott művelet nem érhető el segélyhívás során."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Kilépés a Sürgősségi visszahívás módból"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Igen"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Segélyhívások"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Csak segélyhívás"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM kártya, bővítőhely: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Kisegítő lehetőségek"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Beérkező Wi-Fi-hívás"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-hívás"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Érintse meg ismét a megnyitáshoz"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Hiba történt az üzenet dekódolása közben."</string>
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index ecd3d22..b03a4bd 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Հաշիվներ զանգերի համար"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Ավելացնել SIP հաշիվ"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Կազմաձևել հաշվի կարգավորումները"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Զանգ Wi-Fi-ի միջոցով"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Զանգեր Wi-Fi-ի միջոցով"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Չօգտագործել Wi-Fi-ը զանգերի համար"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Չօգտագործել զանգերի օգնականը"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ոչ մեկը"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Կազմաձևել"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Ներկառուցված կապի ծառայություն"</string>
<string name="voicemail" msgid="8693759337917898954">"Ձայնային փոստ"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Ձայնային փոստ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ՁՓ՝"</string>
<string name="networks" msgid="8873030692174541976">"Կապի օպերատորներ"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Ծանուցումներ արտակարգ իրավիճակների մասին"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում գտնվելիս"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում գտնվելիս"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Դուք կորցրել եք տվյալների կապը, քանի որ անջատված եք թողել ձեր գլխավոր ցանցի տվյալների ռոումինգը:"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Թույլատրե՞լ տվյալների օգտագործումը ռոումինգում: Կարող են զգալի վճարներ գանձվել:"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Դրա համար ձեզանից կարող են զգալի վճարներ գանձվել:"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Թույլատրե՞լ տվյալների ռոումինգը:"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ընտրանքներ"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA ընտրանքներ"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Տվյալների օգտագործումը"</string>
@@ -218,11 +220,11 @@
<!-- String.format failed for translation -->
<!-- no translation found for throttle_data_usage_subtext (6029276011123694701) -->
<skip />
- <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> առավելագույնը գերազանցվել է\nՏվյալների արժեքը նվազել է մինչև <xliff:g id="USED_1">%2$d</xliff:g> Կբ/վ"</string>
+ <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> առավելագույնը գերազանցվել է\nՏվյալների արժեքը նվազել է մինչև <xliff:g id="USED_1">%2$d</xliff:g> ԿԲ/վ"</string>
<!-- String.format failed for translation -->
<!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
<skip />
- <string name="throttle_rate_subtext" msgid="2149102656120726855">"Տվյալների ծավալը կնվազի մինչև <xliff:g id="USED">%1$d</xliff:g> Կբ/վ, եթե տվյալների օգտագործման սահմանաչափը գերազանցվի"</string>
+ <string name="throttle_rate_subtext" msgid="2149102656120726855">"Տվյալների ծավալը կնվազի մինչև <xliff:g id="USED">%1$d</xliff:g> ԿԲ/վ, եթե տվյալների օգտագործման սահմանաչափը գերազանցվի"</string>
<string name="throttle_help_subtext" msgid="3633091498168446044">"Լրացուցիչ տեղեկություններ ձեր օպերատորի բջջային ցանցի տվյալների օգտագործման քաղաքականության մասին"</string>
<string name="cell_broadcast_sms" msgid="5584192824053625842">"Բջջային հեռարձակման SMS"</string>
<string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Բջջային հեռարձակման SMS"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Սահմանել TTY ռեժիմը"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Ավտոմատ կրկնում"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Միացնել ավտոմատ կրկնման ռեժիմը"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Հնարավոր չէ փոխել TTY ռեժիմը տեսազանգի ընթացքում"</string>
<string name="menu_add" msgid="1882023737425114762">"Ավելացնել կոնտակտ"</string>
<string name="menu_edit" msgid="7143003705504672374">"Խմբագրել կոնտակտը"</string>
<string name="menu_delete" msgid="3977150783449642851">"Ջնջել կոնտակտը"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Ընթերցում է SIM քարտից..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Ձեր SIM քարտում կոնտակտներ չկան:"</string>
<string name="simContacts_title" msgid="1861472842524839921">"Ընտրեք կոնտակտները ներմուծման համար"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM քարտից կոնտակտների ներմուծման համար նախ անջատեք թռիչքային ռեժիմը:"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Կոնտակտները SIM քարտից ներմուծելու համար անջատեք ինքնաթիռային ռեժիմը:"</string>
<string name="enable_pin" msgid="5422767284133234860">"Միացնել/անջատել SIM PIN-ը"</string>
<string name="change_pin" msgid="9174186126330785343">"Փոխել SIM PIN-ը"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN՝"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Վայր դնել"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Հետ զանգել"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Ուղարկել հաղորդագրություն"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Զանգի կատարման համար նախ անջատեք թռիչքային ռեժիմը:"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Զանգ կատարելու համար անջատեք ինքնաթիռային ռեժիմը:"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Զանգ կատարելու համար անջատեք ինքնաթիռային ռեժիմը կամ միացեք անլար ցանցին:"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ցանցում գրանցված չէ:"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Բջջային ցանցն անհասանելի է:"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Բջջային ցանցն անհասանելի է: Զանգ կատարելու համար միացեք անլար ցանցին:"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Զանգ կատարելու համար մուտքագրեք ճիշտ համար:"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Հնարավոր չէ զանգել:"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Մեկնարկում է MMI հաջորդականությունը..."</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Կոնֆերանս զանգը հնարավոր չէ:"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Հնարավոր չէ մերժել զանգը:"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Հնարավոր չէ անջատել զանգ(եր)ը:"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Զանգ կատարելու համար միացեք անլար ցանցին:"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Արտակարգ իրավիճակների զանգ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ռադիոն միացվում է..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ծառայությունը մատչելի չէ: Նորից փորձեք…"</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Գտնվում է արտակարգ իրավիճակների հետզանգի ռեժիմում"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Արտակարգ իրավիճակների հետզանգի ռեժիմ"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Տվյալների կապն անջատված է"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> րոպե տվյալների կապ չկա"</item>
- <item quantity="other" msgid="3122217344579273583">"Տվյալների կապ չի լինի <xliff:g id="COUNT">%s</xliff:g> րոպե"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Հեռախոսը կլինի Արտակարգ հետզանգի ռեժիմում <xliff:g id="COUNT">%s</xliff:g> րոպե: Այս ռեիմի ժամանակ ոչ մի հավելված օգտագործման մեջ չէ, տվյալների կապը կարող է օգտագործվել: Ցանկանու՞մ եք դուրս գալ հիմա:"</item>
- <item quantity="other" msgid="8617116564023933114">"Հեռախոսը կլինի Արտակարգ հետզանգի ռեժիմում <xliff:g id="COUNT">%s</xliff:g> րոպե: Այս ռեիմի ժամանակ ոչ մի հավելված օգտագործման մեջ չէ, տվյալների կապը կարող է օգտագործվել: Ցանկանու՞մ եք դուրս գալ հիմա:"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Ընտրված գործողությունը մատչելի չէ արտակարգ հետզանգի ռեժիմում գտնվելիս: Հեռախոսն այս ռեժիմում կլինի <xliff:g id="COUNT">%s</xliff:g> րոպե: Ցանկանու՞մ եք դուրս գալ հիմա:"</item>
- <item quantity="other" msgid="6115622137771382224">"Ընտրված գործողությունը մատչելի չէ արտակարգ հետզանգի ռեժիմում գտնվելիս: Հեռախոսն այս ռեժիմում կլինի <xliff:g id="COUNT">%s</xliff:g> րոպե: Ցանկանու՞մ եք դուրս գալ հիմա:"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> րոպե տվյալների միացում չկա</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> րոպե տվյալների միացում չկա</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Հեռախոսը գտնվելու է Արտակարգ իրավիճակների հետզանգի ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Այդ ռեժիմում տվյալների միացում պահանջող հավելվածները չեն կարող օգտագործվել: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
+ <item quantity="other">Հեռախոսը գտնվելու է Արտակարգ իրավիճակների հետզանգի ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Այդ ռեժիմում տվյալների միացում պահանջող հավելվածները չեն կարող օգտագործվել: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Նշված գործողությունն Արտակարգ իրավիճակների հետզանգի ռեժիմում հասանելի չէ: Հեռախոսը գտնվելու է այս ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
+ <item quantity="other">Նշված գործողությունն Արտակարգ իրավիճակների հետզանգի ռեժիմում հասանելի չէ: Հեռախոսը գտնվելու է այս ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Ընտրված գործողությունը մատչելի չէ արտակարգ հետզանգի ռեժիմում գտնվելիս:"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Դուրս է գալիս արտակարգ իրավիճակների հետզանգի ռեժիմից"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Այո"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Արտակարգ իրավիճակների զանգեր"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Միայն արտակարգ իրավիճակների զանգեր"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM քարտ, բնիկը՝ <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Մատչելիություն"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Մուտքային Wi-Fi զանգ"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Զանգ Wi-Fi-ի միջոցով"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Կրկին հպեք՝ բացելու համար"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Հաղորդագրությունն ապակոդավորելիս սխալ առաջացավ:"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 2e119a9..eace112 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -57,7 +57,7 @@
<string name="labelCDMAMore" msgid="1630676740428229339">"Setelan panggilan CDMA"</string>
<string name="apn_settings" msgid="9043423184895642077">"Nama Titik Akses"</string>
<string name="settings_label" msgid="3876743539816984008">"Setelan jaringan"</string>
- <string name="phone_accounts" msgid="6376603393888116364">"Akun yang menelepon"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"Akun panggilan"</string>
<string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Lakukan panggilan dengan"</string>
<string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Lakukan panggilan SIP dengan"</string>
<string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Tanyakan terlebih dahulu"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Akun ponsel"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Tambahkan akun SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Mengonfigurasi setelan akun"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Panggilan Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Panggilan Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Jangan gunakan panggilan Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Jangan gunakan asisten panggilan telepon"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Tidak ada"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurasi"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Layanan sambungan di dalamnya"</string>
<string name="voicemail" msgid="8693759337917898954">"Kotak Pesan"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Kotak pesan (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Operator jaringan"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Siaran darurat"</string>
@@ -106,23 +107,23 @@
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Nomor tidak tersedia"</string>
<string name="sum_cfu_disabled" msgid="8384177689501334080">"Nonaktif"</string>
<string name="labelCFB" msgid="6139853033106283172">"Saat sibuk"</string>
- <string name="messageCFB" msgid="3711089705936187129">"Nomor ketika sibuk"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"Nomor saat sibuk"</string>
<string name="sum_cfb_enabled" msgid="5984198104833116690">"Meneruskan ke <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"Nonaktif"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"Operator Anda tidak mendukung penonaktifan penerusan panggilan ketika ponsel sibuk."</string>
<string name="labelCFNRy" msgid="1736067178393744351">"Jika tidak dijawab"</string>
- <string name="messageCFNRy" msgid="672317899884380374">"Nomor ketika tidak dapat dihubungi"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"Nomor jika tidak dijawab"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"Meneruskan ke <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Nonaktif"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Operator Anda tidak mendukung penonaktifan penerusan panggilan ketika ponsel tidak menjawab panggilan."</string>
<string name="labelCFNRc" msgid="2614827454402079766">"Saat tidak dapat dijangkau"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"Nomor ketika tidak dapat dihubungi"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Nomor jika tidak dapat dihubungi"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Meneruskan ke <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Dinonaktifkan"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operator Anda tidak mendukung penonaktifan penerusan panggilan ketika ponsel tidak dapat dijangkau."</string>
<string name="updating_title" msgid="6146755386174019046">"Setelan panggilan"</string>
- <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Setelan panggilan telepon hanya dapat diubah oleh pengguna utama."</string>
- <string name="call_settings_with_label" msgid="89359812614544532">"Setelan panggilan telepon (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Setelan panggilan hanya dapat diubah oleh pengguna utama."</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"Setelan panggilan (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="error_updating_title" msgid="7970259216988931777">"Kesalahan setelan panggilan"</string>
<string name="reading_settings" msgid="1920291699287055284">"Membaca setelan…"</string>
<string name="updating_settings" msgid="8171225533884883252">"Memperbarui setelan…"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Sambungkan ke layanan data ketika roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Sambungkan ke layanan data ketika roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Anda telah kehilangan konektivitas data karena meninggalkan jaringan asal dalam keadaan roaming data dimatikan."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Izinkan penggunaan data saat roaming? Tagihan signifikan mungkin berlaku."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Anda dapat dikenakan biaya yang cukup besar."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Izinkan roaming data?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opsi GSM//UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opsi CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Penggunaan data"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Setel Mode TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Coba lagi otomatis"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Aktifkan mode Coba lagi otomatis"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Perubahan Mode TTY tidak diizinkan selama video call"</string>
<string name="menu_add" msgid="1882023737425114762">"Tambahkan kontak"</string>
<string name="menu_edit" msgid="7143003705504672374">"Edit kontak"</string>
<string name="menu_delete" msgid="3977150783449642851">"Hapus kontak"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Membaca dari kartu SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Tidak ada kontak pada Kartu SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Pilih kontak untuk diimpor"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Untuk mengimpor kontak dari kartu SIM, pertama-tama matikan mode Pesawat."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Nonaktifkan mode pesawat untuk mengimpor kontak dari kartu SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Aktifkan/nonaktifkan PIN SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Ubah PIN SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Akhiri"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Hubungi kembali"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Pesan"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Untuk melakukan panggilan, pertama-tama matikan mode Pesawat."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Nonaktifkan mode pesawat untuk melakukan panggilan"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Nonaktifkan mode pesawat atau sambungkan ke jaringan nirkabel untuk melakukan panggilan"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Tidak terdaftar pada jaringan."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Jaringan seluler tidak tersedia."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Jaringan selular tidak tersedia. Sambungkan ke jaringan nirkabel untuk melakukan panggilan."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Untuk melakukan panggilan telepon, masukkan nomor yang valid."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Tidak dapat menelepon."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Memulai urutan MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Tidak dapat melakukan telewicara."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Tidak dapat menolak panggilan telepon."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Tidak dapat melepas panggilan telepon."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Sambungkan ke jaringan nirkabel untuk melakukan panggilan"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Panggilan darurat"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Menghidupkan radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Tidak ada layanan. Mencoba lagi…"</string>
@@ -505,23 +511,23 @@
<string name="ota_try_again" msgid="7685477206465902290">"Coba lagi"</string>
<string name="ota_next" msgid="3904945374358235910">"Berikutnya"</string>
<string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
- <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Masukkan Mode Teleponan Balik Darurat"</string>
+ <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Masukkan Mode Telepon Balik Darurat"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode Panggilan Balik Darurat"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Sambungan data dinonaktifkan"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Tidak ada sambungan data selama <xliff:g id="COUNT">%s</xliff:g> menit"</item>
- <item quantity="other" msgid="3122217344579273583">"Tidak ada sambungan data selama <xliff:g id="COUNT">%s</xliff:g> menit"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Ponsel akan berada dalam mode Telepon Balik Darurat selama <xliff:g id="COUNT">%s</xliff:g> menit. Selama dalam mode ini, aplikasi yang menggunakan sambungan data tidak dapat dipakai. Apakah Anda ingin keluar sekarang?"</item>
- <item quantity="other" msgid="8617116564023933114">"Ponsel akan berada dalam mode Telepon Balik Darurat selama <xliff:g id="COUNT">%s</xliff:g> menit. Selama dalam mode ini, aplikasi yang menggunakan sambungan data tidak dapat dipakai. Apakah Anda ingin keluar sekarang?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Tindakan yang dipilih tidak tersedia saat berada dalam mode Telepon Balik Darurat. Ponsel akan berada dalam mode ini selama <xliff:g id="COUNT">%s</xliff:g> menit. Apakah Anda ingin keluar sekarang?"</item>
- <item quantity="other" msgid="6115622137771382224">"Tindakan yang dipilih tidak tersedia saat berada dalam mode Telepon Balik Darurat. Ponsel akan berada dalam mode ini untuk <xliff:g id="COUNT">%s</xliff:g> menit. Apakah Anda ingin keluar sekarang?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Tidak ada sambungan data selama <xliff:g id="COUNT_1">%s</xliff:g> menit</item>
+ <item quantity="one">Tidak ada sambungan data selama <xliff:g id="COUNT_0">%s</xliff:g> menit</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Ponsel ini akan berada dalam mode Panggilan Balik Darurat selama <xliff:g id="COUNT_1">%s</xliff:g> menit. Saat dalam mode ini, aplikasi yang menggunakan sambungan data tidak dapat digunakan. Ingin keluar sekarang?</item>
+ <item quantity="one">Ponsel ini akan berada dalam mode Panggilan Balik Darurat selama <xliff:g id="COUNT_0">%s</xliff:g> menit. Saat dalam mode ini, aplikasi yang menggunakan sambungan data tidak dapat digunakan. Ingin keluar sekarang?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Tindakan yang dipilih tidak tersedia saat dalam mode Panggilan Balik Darurat. Ponsel ini akan berada dalam mode ini selama <xliff:g id="COUNT_1">%s</xliff:g> menit. Ingin keluar sekarang?</item>
+ <item quantity="one">Tindakan yang dipilih tidak tersedia saat dalam mode Panggilan Balik Darurat. Ponsel ini akan berada dalam mode ini selama <xliff:g id="COUNT_0">%s</xliff:g> menit. Ingin keluar sekarang?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Tindakan yang dipilih tidak tersedia ketika dalam panggilan darurat."</string>
- <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Keluar dari mode Teleponan Balik Darurat"</string>
+ <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Keluar dari mode Telepon Balik Darurat"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ya"</string>
<string name="alert_dialog_no" msgid="1476091437797628703">"Tidak"</string>
<string name="alert_dialog_dismiss" msgid="2491494287075907171">"Tutup"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Panggilan darurat"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Hanya untuk panggilan darurat"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Aksesibilitas"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Panggilan Wi-Fi masuk"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Panggilan Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Sentuh lagi untuk membuka"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Terjadi kesalahan saat mendekode pesan."</string>
</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 36eddb9..5713754 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Símareikningar"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Bæta við SIP-reikningi"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Velja reikningsstillingar"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi símtöl"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi símtöl"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ekki nota Wi-Fi símtöl"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ekki nota símtalaaðstoð"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Engin"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Stilla"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Innbyggð tengingarþjónusta"</string>
<string name="voicemail" msgid="8693759337917898954">"Talhólf"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Talhólf (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Talhólf:"</string>
<string name="networks" msgid="8873030692174541976">"Símafyrirtæki"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Neyðarútsendingar"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Tengjast gagnaþjónustu í reiki"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Tengjast gagnaþjónustu í reiki"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Gagnatengingin rofnaði vegna þess að þú ert utan heimakerfis með slökkt á gagnareiki."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Leyfa gagnanotkun í reiki? Þetta getur haft mikinn kostnað í för með sér."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Þetta getur haft mikinn kostnað í för með sér."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Leyfa gagnareiki?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Valkostir GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-valkostir"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Gagnanotkun"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Velja TTY-stillingu"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Reyna sjálfkrafa aftur"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Kveikja á stillingunni Reyna sjálfkrafa aftur"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Ekki er heimilt að breyta fjarritastillingu meðan á myndsímtali stendur"</string>
<string name="menu_add" msgid="1882023737425114762">"Bæta tengilið við"</string>
<string name="menu_edit" msgid="7143003705504672374">"Breyta tengilið"</string>
<string name="menu_delete" msgid="3977150783449642851">"Eyða tengilið"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Les af SIM-korti…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Engir tengiliðir á SIM-kortinu."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Veldu tengiliði til að flytja inn"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Til að flytja inn tengiliði af SIM-kortinu þarf að slökkva á flugstillingu."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Slökktu á flugstillingu til að flytja inn tengiliði af SIM-kortinu."</string>
<string name="enable_pin" msgid="5422767284133234860">"Gera PIN-númer SIM-korts virkt eða óvirkt"</string>
<string name="change_pin" msgid="9174186126330785343">"Breyta PIN-númeri SIM-korts"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN-númer SIM-korts:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Leggja á"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Hringja til baka"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Skilaboð"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Til að hringja símtal þarftu fyrst að slökkva á flugstillingu."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Slökktu á flugstillingu til að hringja."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Slökktu á flugstillingu eða tengstu þráðlausu neti til að hringja."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ekki skráð á símkerfi."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Farsímakerfi ekki til staðar."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Farsímakerfi er ekki í boði. Tengstu þráðlausu neti til að hringja."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Sláðu inn gilt númer til að hringja símtal."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Ekki hægt að hringja."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Ræsir MMI-runu…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Ekki hægt að halda símafund."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Ekki hægt að hafna símtali."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ekki hægt að leggja á."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Tengstu þráðlausu neti til að hringja."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Neyðarsímtal"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Kveikir á loftneti…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ekkert samband. Reynir aftur…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Stilling fyrir svarhringingu neyðarsímtala virk"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Stilling fyrir svarhringingu neyðarsímtala"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Slökkt á gagnatengingu"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Engin gagnatenging í <xliff:g id="COUNT">%s</xliff:g> mínútu"</item>
- <item quantity="other" msgid="3122217344579273583">"Engin gagnatenging í <xliff:g id="COUNT">%s</xliff:g> mínútur"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Síminn verður í stillingu fyrir svarhringingu neyðarsímtala í <xliff:g id="COUNT">%s</xliff:g> mínútu. Á meðan stillingin er virk er ekki hægt að nota nein forrit sem þurfa gagnatengingu. Viltu hætta núna?"</item>
- <item quantity="other" msgid="8617116564023933114">"Síminn verður í stillingu fyrir svarhringingu neyðarsímtala í <xliff:g id="COUNT">%s</xliff:g> mínútur. Á meðan stillingin er virk er ekki hægt að nota nein forrit sem þurfa gagnatengingu. Viltu hætta núna?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Þessi aðgerð er ekki í boði á meðan stilling fyrir svarhringingu neyðarsímtala er virk. Síminn verður í þessari stillingu í <xliff:g id="COUNT">%s</xliff:g> mínútu. Viltu hætta núna?"</item>
- <item quantity="other" msgid="6115622137771382224">"Þessi aðgerð er ekki í boði á meðan stilling fyrir svarhringingu neyðarsímtala er virk. Síminn verður í þessari stillingu í <xliff:g id="COUNT">%s</xliff:g> mínútur. Viltu hætta núna?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Engin gagnatenging í <xliff:g id="COUNT_1">%s</xliff:g> mínútu</item>
+ <item quantity="other">Engin gagnatenging í <xliff:g id="COUNT_1">%s</xliff:g> mínútur</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Síminn verður í stillingu fyrir svarhringingu neyðarsímtala í <xliff:g id="COUNT_1">%s</xliff:g> mínútu. Þegar hann er í þessari stillingu er ekki hægt að nota nein forrit sem krefjast gagnatengingar. Viltu hætta núna?</item>
+ <item quantity="other">Síminn verður í stillingu fyrir svarhringingu neyðarsímtala í <xliff:g id="COUNT_1">%s</xliff:g> mínútur. Þegar hann er í þessari stillingu er ekki hægt að nota nein forrit sem krefjast gagnatengingar. Viltu hætta núna?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Þessi aðgerð er ekki í boði þegar síminn er í stillingu fyrir svarhringingu neyðarsímtala. Síminn verður í þessari stillingu í <xliff:g id="COUNT_1">%s</xliff:g> mínútu. Viltu hætta núna?</item>
+ <item quantity="other">Þessi aðgerð er ekki í boði þegar síminn er í stillingu fyrir svarhringingu neyðarsímtala. Síminn verður í þessari stillingu í <xliff:g id="COUNT_1">%s</xliff:g> mínútur. Viltu hætta núna?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Þessi aðgerð er ekki í boði í neyðarsímtali."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Fer úr stillingu fyrir svarhringingu neyðarsímtala"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Já"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Neyðarsímtöl"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Eingöngu neyðarsímtöl"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-kort, rauf: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Aðgengi"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi símtal berst"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi símtal"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Snertu aftur til að opna"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Villa kom upp við að afkóða skeytið."</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 3c032cf..c0aa2fc 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Account telefono"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Aggiungi account SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configurazione delle impostazioni dell\'account"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Chiamate Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Chiamate Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Non utilizzare chiamate Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Non utilizzare assistente chiamate"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Nessuno"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configura"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Servizio di connessione integrato"</string>
<string name="voicemail" msgid="8693759337917898954">"Segreteria"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Segreteria (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ST:"</string>
<string name="networks" msgid="8873030692174541976">"Operatori di rete"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Trasmissioni di emergenza"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Connessione a servizi di dati in caso di roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Connessione a servizi di dati in roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Connettività dati persa: hai lasciato la rete del tuo operatore con il roaming dati disattivato."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Consentire l\'utilizzo dei dati con il roaming? Potrebbero essere applicati costi elevati."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"I costi potrebbero essere elevati."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Consentire il roaming dei dati?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opzioni GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opzioni CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Utilizzo dati"</string>
@@ -354,6 +356,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Imposta modalità TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Nuovo tentativo automatico"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Attiva la modalità Nuovo tentativo automatico"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Durante le videochiamate non è possibile cambiare modalità TTY"</string>
<string name="menu_add" msgid="1882023737425114762">"Aggiungi contatto"</string>
<string name="menu_edit" msgid="7143003705504672374">"Modifica contatto"</string>
<string name="menu_delete" msgid="3977150783449642851">"Elimina contatto"</string>
@@ -377,7 +380,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lettura da SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Nessun contatto presente nella SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Seleziona contatti da importare"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Per importare i contatti dalla scheda SIM, prima disattiva la modalità aereo."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Disattiva la modalità aereo per importare i contatti dalla scheda SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Attiva/disattiva PIN di SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Cambia PIN SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN della SIM:"</string>
@@ -438,9 +441,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Riaggancia"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Richiama"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Messaggio"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Per fare una telefonata, disattiva la modalità aereo."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Disattiva la modalità aereo per effettuare una chiamata."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Disattiva la modalità aereo o connettiti a una rete wireless per effettuare una chiamata."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Non registrato sulla rete."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Rete cellulare non disponibile."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La rete cellulare non è disponibile. Connettiti a una rete wireless per effettuare una chiamata."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Per effettuare una chiamata, inserisci un numero valido."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Impossibile chiamare."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Inizio sequenza MMI..."</string>
@@ -451,6 +456,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Audioconferenze non disponibili"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Impossibile rifiutare la chiamata."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossibile riagganciare."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connettiti a una rete wireless per effettuare una chiamata."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chiamata di emergenza"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Attivazione segnale cellulare..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nessun servizio. Nuovo tentativo…"</string>
@@ -512,18 +518,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modalità di richiamata di emergenza attivata"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modalità di richiamata di emergenza"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connessione dati disabilitata"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Nessuna connessione dati per <xliff:g id="COUNT">%s</xliff:g> minuto"</item>
- <item quantity="other" msgid="3122217344579273583">"Nessuna connessione dati per <xliff:g id="COUNT">%s</xliff:g> minuti"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Il telefono sarà in modalità di richiamata di emergenza per <xliff:g id="COUNT">%s</xliff:g> minuto. In questa modalità non è possibile utilizzare alcuna applicazione che faccia uso di una connessione dati. Uscire adesso?"</item>
- <item quantity="other" msgid="8617116564023933114">"Il telefono sarà in modalità di richiamata di emergenza per <xliff:g id="COUNT">%s</xliff:g> minuti. In questa modalità non è possibile utilizzare alcuna applicazione che faccia uso di una connessione dati. Uscire adesso?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"L\'azione selezionata non è disponibile in modalità di richiamata di emergenza. Il telefono sarà in questa modalità per <xliff:g id="COUNT">%s</xliff:g> minuto. Uscire adesso?"</item>
- <item quantity="other" msgid="6115622137771382224">"L\'azione selezionata non è disponibile in modalità di richiamata di emergenza. Il telefono sarà in questa modalità per <xliff:g id="COUNT">%s</xliff:g> minuti. Uscire adesso?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Nessuna connessione dati per <xliff:g id="COUNT_1">%s</xliff:g> minuti</item>
+ <item quantity="one">Nessuna connessione dati per <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Il telefono sarà in modalità Richiamata di emergenza per <xliff:g id="COUNT_1">%s</xliff:g> minuti. In questa modalità non è possibile utilizzare applicazioni che impiegano una connessione dati. Vuoi uscire ora?</item>
+ <item quantity="one">Il telefono sarà in modalità Richiamata di emergenza per <xliff:g id="COUNT_0">%s</xliff:g> minuto. In questa modalità non è possibile utilizzare app che impiegano una connessione dati. Vuoi uscire ora?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">L\'azione selezionata non è disponibile in modalità Richiamata di emergenza. Il telefono sarà in questa modalità per <xliff:g id="COUNT_1">%s</xliff:g> minuti. Vuoi uscire ora?</item>
+ <item quantity="one">L\'azione selezionata non è disponibile in modalità Richiamata di emergenza. Il telefono sarà in questa modalità per <xliff:g id="COUNT_0">%s</xliff:g> minuto. Vuoi uscire ora?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"L\'azione selezionata non è disponibile in modalità di chiamata di emergenza."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Uscita dalla modalità di richiamata di emergenza"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Sì"</string>
@@ -552,4 +558,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Chiamate di emergenza"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Solo chiamate di emergenza"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Scheda SIM, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilità"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chiamata Wi-Fi in arrivo"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chiamata Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tocca di nuovo per aprire"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Si è verificato un errore durante la decodifica del messaggio."</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 3d44b7d..3413190 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"חשבונות טלפון"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"הוסף חשבון SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"קבע את הגדרות החשבון"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"שיחת Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"שיחות ב-Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"אל תשתמש בשיחות Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"אל תשתמש באסיסטנט שיחות"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ללא"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"הגדר"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"שירות חיבור מובנה"</string>
<string name="voicemail" msgid="8693759337917898954">"דואר קולי"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"דואר קולי (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"דואר קולי:"</string>
<string name="networks" msgid="8873030692174541976">"מפעילי רשת"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"שידורי חירום"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"התחבר לשירותי נתונים בעת נדידה"</string>
<string name="roaming_disable" msgid="1843417228755568110">"התחבר לשירותי נתונים בעת נדידה"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"איבדת את קישוריות הנתונים כיוון שעזבת את הרשת הביתית כשהנדידה כבויה."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"האם לאפשר שימוש בנתונים בעת נדידה? ייתכנו חיובים משמעותיים."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"ייתכנו שיעורי חיוב גבוהים."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"האם לאפשר נדידה?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"אפשרויות GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"אפשרויות CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"שימוש בנתונים"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"הגדר מצב TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ניסיון חוזר אוטומטי"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"אפשר מצב \'ניסיון חוזר\'."</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"שינוי מצב TTY אינו מותר במהלך שיחת וידאו"</string>
<string name="menu_add" msgid="1882023737425114762">"הוסף איש קשר"</string>
<string name="menu_edit" msgid="7143003705504672374">"ערוך איש קשר"</string>
<string name="menu_delete" msgid="3977150783449642851">"מחק איש קשר"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"קורא מכרטיס SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"אין אנשי קשר בכרטיס ה-SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"בחר אנשי קשר ליבוא"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"כדי לייבא אנשי קשר מכרטיס ה-SIM, כבה תחילה את מצב טיסה."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"בטל את מצב טיסה כדי לייבא אנשי קשר מכרטיס ה-SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"הפוך לפעיל/השבת PIN של SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"שנה PIN של SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN של SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"נתק"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"התקשר חזרה"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"שלח הודעה"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"כדי להתקשר, כבה תחילה את מצב טיסה."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"בטל את מצב טיסה כדי לבצע שיחה."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"בטל את מצב טיסה או התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"לא רשום ברשת."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"רשת סלולרית אינה זמינה."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"רשת סלולרית אינה זמינה. התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"כדי להתקשר, הזן מספר טלפון חוקי."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"לא ניתן להתקשר."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"מתחיל רצף MMI…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"אין אפשרות לנהל שיחות ועידה."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"לא ניתן לדחות שיחה."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"לא ניתן לשחרר שיחות."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"שיחת חירום"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"מפעיל את הרדיו…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"אין שירות. מנסה שוב..."</string>
@@ -508,18 +514,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"נכנס למצב חירום של התקשרות חזרה"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"מצב חירום של התקשרות חזרה"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"חיבור נתונים מושבת"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"אין חיבור נתונים במשך דקה <xliff:g id="COUNT">%s</xliff:g>"</item>
- <item quantity="other" msgid="3122217344579273583">"אין חיבור נתונים במשך <xliff:g id="COUNT">%s</xliff:g> דקות"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"הטלפון יהיה במצב התקשרות חזרה בחירום למשך דקה <xliff:g id="COUNT">%s</xliff:g>. במצב זה לא ניתן להשתמש באפליקציות המשתמשות בחיבור נתונים. האם אתה רוצה לצאת כעת?"</item>
- <item quantity="other" msgid="8617116564023933114">"הטלפון יהיה במצב התקשרות חזרה בחירום למשך <xliff:g id="COUNT">%s</xliff:g> דקות. במצב זה לא ניתן להשתמש באפליקציות המשתמשים בחיבור נתונים. האם אתה רוצה לצאת כעת?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"הפעולה שנבחרה אינה זמינה במצב התקשרות חזרה בחירום. הטלפון יהיה במצב זה במשך <xliff:g id="COUNT">%s</xliff:g> דקות. האם אתה רוצה לצאת כעת?"</item>
- <item quantity="other" msgid="6115622137771382224">"הפעולה שנבחרה אינה זמינה במצב התקשרות חזרה בחירום. הטלפון יהיה במצב זה במשך <xliff:g id="COUNT">%s</xliff:g> דקות. אתה רוצה לצאת כעת?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="two">ללא חיבור נתונים למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות</item>
+ <item quantity="many">ללא חיבור נתונים למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות</item>
+ <item quantity="other">ללא חיבור נתונים למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות</item>
+ <item quantity="one">ללא חיבור נתונים למשך דקה <xliff:g id="COUNT_0">%s</xliff:g></item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="two">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
+ <item quantity="many">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
+ <item quantity="other">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
+ <item quantity="one">הטלפון יהיה במצב חירום של התקשרות חזרה למשך דקה <xliff:g id="COUNT_0">%s</xliff:g>. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="two">הפעולה הנבחרת אינה זמינה במצב חירום של התקשרות חזרה. הטלפון יהיה במצב זה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. האם ברצונך לצאת כעת?</item>
+ <item quantity="many">הפעולה הנבחרת אינה זמינה במצב חירום של התקשרות חזרה. הטלפון יהיה במצב זה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. האם ברצונך לצאת כעת?</item>
+ <item quantity="other">הפעולה הנבחרת אינה זמינה במצב חירום של התקשרות חזרה. הטלפון יהיה במצב זה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. האם ברצונך לצאת כעת?</item>
+ <item quantity="one">הפעולה הנבחרת אינה זמינה במצב חירום של התקשרות חזרה. הטלפון יהיה במצב זה למשך דקה <xliff:g id="COUNT_0">%s</xliff:g>. האם ברצונך לצאת כעת?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"הפעולה שנבחרה אינה זמינה במהלך שיחת חירום."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"יציאה ממצב התקשרות חזרה בחירום"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"כן"</string>
@@ -548,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"שיחות חירום"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"שיחות חירום בלבד"</string>
<string name="sim_description_default" msgid="4778679519938775515">"כרטיס SIM, חריץ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"נגישות"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"שיחת Wi-Fi נכנסת"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"שיחת Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"גע שוב כדי לפתוח"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"אירעה שגיאה בעת פענוח ההודעה."</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 5dcc69f..7f2a4f6 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"携帯端末アカウント"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIPアカウントを追加"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"アカウントを設定"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi通話"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi通話"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi発信を使用しない"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"発信アシスタントを使用しない"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"使用しない"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"設定"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"組み込みの接続サービス"</string>
<string name="voicemail" msgid="8693759337917898954">"ボイスメール"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"ボイスメール(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"通信事業者"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"緊急警報"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"ローミング時にデータサービスに接続する"</string>
<string name="roaming_disable" msgid="1843417228755568110">"ローミング時にデータサービスに接続する"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"データローミングをOFFにしてホームネットワークを離れたため、データ接続が切断されました。"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"ローミング中にデータ使用を許可しますか?高額の課金が発生することがあります。"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"高額な通信料が発生することがあります。"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"データローミングを許可しますか?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTSオプション"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMAオプション"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"データ使用量"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTYモードの設定"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"自動再試行"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"自動再試行モードを有効にする"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTYモードの変更はビデオハングアウト中には行えません"</string>
<string name="menu_add" msgid="1882023737425114762">"連絡先を追加"</string>
<string name="menu_edit" msgid="7143003705504672374">"連絡先を編集"</string>
<string name="menu_delete" msgid="3977150783449642851">"連絡先を削除"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIMカードから読み取り中..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIMカードに連絡先がありません。"</string>
<string name="simContacts_title" msgid="1861472842524839921">"インポートする連絡先の選択"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"連絡先をSIMカードからインポートするには、まず機内モードをOFFにしてください。"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIMカードから連絡先をインポートするには機内モードをオフにしてください。"</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PINの有効/無効"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PINの変更"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"通話終了"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"コールバック"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"メッセージ"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"機内モードをOFFにしてから発信してください。"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"電話をかけるには機内モードをオフにしてください。"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"電話をかけるには、機内モードをオフにするか無線ネットワークに接続してください。"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"ご加入の通信サービスがありません"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"モバイルネットワークが利用できません。"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"モバイルネットワークが利用できません。電話をかけるには無線ネットワークに接続してください。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"発信するには、有効な番号を入力してください。"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"発信できません。"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMIシーケンスを開始中..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"グループ通話を利用できません。"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"着信を拒否できません。"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"通話を解放できません。"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"電話をかけるには無線ネットワークに接続してください。"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急通報"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"無線通信をONにしています..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"通信サービスはありません。もう一度お試しください…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"緊急通報待機モードになりました"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"緊急通報待機モード"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"データ接続が無効です"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g>分間データ接続できません"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g>分間データ接続できません"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"端末はあと<xliff:g id="COUNT">%s</xliff:g>分間、緊急通報待機モードです。このモードではデータ通信を行うアプリは使用できません。今すぐこのモードを終了しますか?"</item>
- <item quantity="other" msgid="8617116564023933114">"端末はあと<xliff:g id="COUNT">%s</xliff:g>分間、緊急通報待機モードです。このモードではデータ通信を行うアプリケーションは使用できません。今すぐこのモードを終了しますか?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"選択した操作は緊急通報待機モードでは実行できません。端末はあと<xliff:g id="COUNT">%s</xliff:g>分間このモードです。今すぐこのモードを終了しますか?"</item>
- <item quantity="other" msgid="6115622137771382224">"選択した操作は緊急通報待機モードでは実行できません。端末はあと<xliff:g id="COUNT">%s</xliff:g>分間このモードです。今すぐこのモードを終了しますか?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g>分間データ接続できません</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g>分間データ接続できません</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">スマートフォンはあと<xliff:g id="COUNT_1">%s</xliff:g>分間、緊急通報待機モードです。このモードではデータ通信を行うアプリは使用できません。今すぐこのモードを終了しますか?</item>
+ <item quantity="one">スマートフォンはあと<xliff:g id="COUNT_0">%s</xliff:g>分間、緊急通報待機モードです。このモードではデータ通信を行うアプリは使用できません。今すぐこのモードを終了しますか?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">選択した操作は緊急通報待機モードでは実行できません。スマートフォンはあと<xliff:g id="COUNT_1">%s</xliff:g>分間このモードです。今すぐこのモードを終了しますか?</item>
+ <item quantity="one">選択した操作は緊急通報待機モードでは実行できません。スマートフォンはあと<xliff:g id="COUNT_0">%s</xliff:g>分間このモードです。今すぐこのモードを終了しますか?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"選択した操作は緊急通報時には実行できません。"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"緊急通報待機モードを終了しています"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"はい"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"緊急通報"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"緊急通報のみ"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIMカード、スロット: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ユーザー補助機能"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi通話が着信中"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi通話"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"開くにはもう一度タップしてください"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"メッセージのデコード中にエラーが発生しました。"</string>
</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index ddfc28b..761aeef 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ტელეფონის ანგარიშები"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ანგარიშის დამატება"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ანგარიშის პარამეტრების კონფიგურაცია"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"დარეკვა Wi-Fi-ს მეშვეობით"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"დარეკვა Wi-Fi-ს მეშვეობით"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"არ გამოიყენოს Wi-Fi დარეკვა"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"არ გამოიყენოს ზარის თანაშემწე"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"არცერთი"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"კონფიგურაცია"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"კავშირის ჩაშენებული სერვისი"</string>
<string name="voicemail" msgid="8693759337917898954">"ხმოვანი ფოსტა"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"ხმოვანი ფოსტა (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"ქსელის ოპერატორები"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"სასწრაფო გადაცემები"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"როუმინგში ყოფნისას მობილურ მონაცემთა გადაცემის სერვისებთან დაკავშირება"</string>
<string name="roaming_disable" msgid="1843417228755568110">"როუმინგში ყოფნისას მობილურ მონაცემთა გადაცემის სერვისებთან დაკავშირება"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"ინტერნეტთან კავშირი გაწყდა, რადგან საშინაო ქსელში აღარ ხართ ჩართული, ხოლო მობილური ინტერნეტის როუმინგი გამორთული გაქვთ."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"დართოს ნება როუმინგისას მონაცემების გამოყენებაზე? შესაძლოა მნიშვნელოვან ხარჯებს ჰქონდეს ადგილი."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"თქვენ შეიძლება წარმოგეშვათ მნიშვნელოვანი ხარჯები."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"გსურთ, ჩაირთოს ინტერნეტის როუმინგი?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ვარიანტები"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA პარამეტრები"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"მონაცემთა გადაცემის გამოყენება"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY რეჟიმის დაყენება"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ავტო-გამეორება"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"ავტო გამეორების რეჟიმის ჩართვა"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ვიდეოზარის დროს TTY რეჟიმის შეცვლა დაუშვებელია"</string>
<string name="menu_add" msgid="1882023737425114762">"კონტაქტის დამატება"</string>
<string name="menu_edit" msgid="7143003705504672374">"კონტაქტის რედაქტირება"</string>
<string name="menu_delete" msgid="3977150783449642851">"კონტაქტის წაშლა"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"მიმდინარეობს SIM ბარათიდან წაკითხვა…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"თქვენს SIM ბარათზე კონტაქტები არ არის."</string>
<string name="simContacts_title" msgid="1861472842524839921">"აირჩიეთ კონტაქტი იმპორტისათვის"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"კონტაქტების SIM ბარათიდან იმპორტისათვის, ჯერ გამორთეთ თვითმფრინავის რეჟიმი."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM ბარათიდან კონტაქტების იმპორტისთვის, გამორთეთ თვითმფრინავის რეჟიმი."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN-ის გააქტიურება/გამორთვა"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN-ის შეცვლა"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM-ის PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"გათიშვა"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"გადარეკვა"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"შეტყობინების გაგზავნა"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ზარის განსახორციელებლად, ჯერ თვითმფრინავის რეჟიმი უნდა გამორთოთ."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ზარის განსახორციელებლად, გამორთეთ თვითმფრინავის რეჟიმი."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ზარის განსახორციელებლად, გამორთეთ თვითმფრინავის რეჟიმი ან დაუკავშირდით უსადენო ქსელს."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"ქსელში რეგისტრირებული არ არის."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"ფიჭური ქსელი მიუწვდომელია"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ფიჭური ქსელი მიუწვდომელია. ზარის განსახორციელებლად, დაუკავშირდით უსადენო ქსელს."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ზარის განხორციელებისათვის, შეიყვანეთ მოქმედი ნომერი."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"არ ირეკება."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI თანმიმდევრობის დაწყება…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"საკონფერენციო ზარები ვერ ხორციელდება."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ზარის უარყოფა ვერ ხორციელდება."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ვერ ხერხდება ზარ(ებ)ის გაშვება."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ზარის განსახორციელებლად, დაუკავშირდით უსადენო ქსელს."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"გადაუდებელი ზარი"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"გადამცემის ჩართვა…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"მომხსახურება არ არის. სცადეთ ხელხლა..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"გააქტიურდა გადაუდებელი გადმორეკვის რეჟიმი"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"გადაუდებელი გადმორეკვის რეჟიმი"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"მობილური ინტერნეტი გამორთულია"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"მობილური ინტერნეტის კავშირი <xliff:g id="COUNT">%s</xliff:g> წუთის განმავლობაში მიუწვდომელია"</item>
- <item quantity="other" msgid="3122217344579273583">"მობილური ინტერნეტის კავშირი <xliff:g id="COUNT">%s</xliff:g> წუთის განმავლობაში მიუწვდომელია"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ტელეფონი გადაუდებელი ზარის გადმორეკვის რეჟიმში იქნება <xliff:g id="COUNT">%s</xliff:g> წუთის განმავლობაში. ამ რეჟიმის დროს ვერ გამოიყენებთ აპებს, რომლებიც მობილურ ინტერნეტს იყენებს. გსურთ ახლა გასვლა?"</item>
- <item quantity="other" msgid="8617116564023933114">"ტელეფონი გადაუდებელი ზარის გადმორეკვის რეჟიმში იქნება <xliff:g id="COUNT">%s</xliff:g> წუთის განმავლობაში. ამ რეჟიმის დროს ვერ გამოიყენებთ აპლიკაციებს, რომლებიც მობილურ ინტერნეტს იყენებს. გსურთ ახლა გასვლა?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"არჩეული ქმედება მიუწვდომელია გადაუდებელი ზარის გადმორეკვის რეჟიმში. ტელეფონი ამ რეჟიმში დარჩება <xliff:g id="COUNT">%s</xliff:g> წუთის განმავლობაში. გსურთ გასვლა?"</item>
- <item quantity="other" msgid="6115622137771382224">"არჩეული ქმედება მიუწვდომელია გადაუდებელი ზარის გადმორეკვის რეჟიმში. ტელეფონი ამ რეჟიმში დარჩება <xliff:g id="COUNT">%s</xliff:g> წუთის განმავლობაში. გსურთ გასვლა?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"> არ არის დაკავშირების მონაცემები <xliff:g id="COUNT_1">%s</xliff:g> წუთისათვის</item>
+ <item quantity="one"> არ არის დაკავშირების მონაცემები <xliff:g id="COUNT_0">%s</xliff:g> წუთისათვის</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other"> ტელეფონი იქნება საგანგებო დარეკვის რეჟიმი <xliff:g id="COUNT_1">%s</xliff:g> წუთით. ამ რეჟიმის მანძილზე ვერ მოხერხდება მონაცემთა დაკავშირების გმაოყენებით აპლიკაციების გამოყენება. გსურთ ახლა გამოსვლა?</item>
+ <item quantity="one"> ტელეფონი იქნება საგანგებო დარეკვის რეჟიმი <xliff:g id="COUNT_0">%s</xliff:g> წუთით. ამ რეჟიმის მანძილზე ვერ მოხერხდება მონაცემთა დაკავშირების გმაოყენებით აპლიკაციების გამოყენება. გსურთ ახლა გამოსვლა?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other"> შერჩეული აქცია არ არის ხელმისაწვდომი გადაუდებელი დარეკვის რეჟიმში. ტელეფონი იქნება ამ რეჟიმი <xliff:g id="COUNT_1">%s</xliff:g> წუთი. გსურთ ახლა გამოსვლა?</item>
+ <item quantity="one"> შერჩეული აქცია არ არის ხელმისაწვდომი გადაუდებელი დარეკვის რეჟიმში. ტელეფონი იქნება ამ რეჟიმი <xliff:g id="COUNT_0">%s</xliff:g> წუთი. გსურთ ახლა გამოსვლა?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"არჩეული ქმედება მიუწვდომელია გადაუდებელის ზარის რეჟიმში."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"გადაუდებელი გადმორეკვის რეჟიმიდან გამოსვლა"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"დიახ"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"გადაუდებელი ზარები"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"მხოლოდ საგანგებო ნომრებზე დარეკვა"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM ბარათი, სლოტი: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"მარტივი წვდომა"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"შემომავალი Wi-Fi ზარი"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi ზარი"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"შეეხეთ ისევ გასახსნელად"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"შეტყობინების გაშიფრვისას წარმოიშვა შეცდომა."</string>
</resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 7ca5527..e657ffc 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Телефон есептік жазбалары"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP есептік жазбасын қосу"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Есептік жазба параметрлерін конфигурациялау"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi қоңыраулары"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi қоңыраулары"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi қоңырауларын пайдаланбау"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Қоңыраулар көмекшісін пайдаланбау"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ешқандай"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Конфигурациялау"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Кірістірілген байланыс қызметі"</string>
<string name="voicemail" msgid="8693759337917898954">"Дауыс-хабар"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Дауыстық пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ДХ:"</string>
<string name="networks" msgid="8873030692174541976">"Желі операторлары"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Жедел таратылымдар"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Роуминг кезінде дерекқор қызметтеріне қосу"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Роуминг кезінде дерекқор қызметтеріне қосу"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Дерекқор байланысын жоғалтып алдыңыз, себебі үйдегі желінің дерекқор роумингін өшірілген күйінде қалдырғансыз."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Роуминг кезінде деректерді пайдалануға рұқсат ету керек пе? Айтарлықтай ақылар алынуы мүмкін."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Сізден елеулі ақылар алынуы мүмкін."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Деректер роумингіне рұқсат берілсін бе?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS опциялары"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA (кең жолақты әр түрлі кодты бірнеше қол жетімділік) опциялары"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Дерекқор қолдану"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Телетайп режиміне реттеу"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Қайта авто әрекеттену"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Қайта авто әрекеттену режимін қосу"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Бейне қоңырау барысында Телетайп режимін өзгертуге рұқсат етілмеген"</string>
<string name="menu_add" msgid="1882023737425114762">"Байланыс қосу"</string>
<string name="menu_edit" msgid="7143003705504672374">"Байланыс өңдеу"</string>
<string name="menu_delete" msgid="3977150783449642851">"Байланыс жою"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM картасынан оқу…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM картаңызда контактілер жоқ."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Импортталатын контактілерді таңдау"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Контактілерді SIM картасынан импорттау үшін, алдымен ұшақ режимін өшіру қажет."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Контактілерді SIM картасынан импорттау үшін ұшақ режимін өшіріңіз."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN кодын іске қосу/істен шығару"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN кодын өзгерту"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN коды:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Қоңырауды аяқтау"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Кері қоңырау шалу"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Хабар"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Қоңырау шалу үшін алдымен Ұшақ режимін өшіріңіз."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Қоңырау шалу үшін ұшақ режимін өшіріңіз."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Қоңырау шалу үшін ұшақ режимін өшіріңіз не сымсыз желіге қосылыңыз."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Желіде тіркелмеген."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Ұялы желі қол жетімді емес."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Ұялы желі қол жетімді емес. Қоңырау шалу үшін сымсыз желіге қосылыңыз."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Қоңырау шалу үшін жарамды нөмірді енгізіңіз."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Қоңырау шалу мүмкін емес."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI қатарын бастау…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Мәжіліс қоңырауларын өшіру."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Қоңырауды қабылдамау мүмкін емес."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Қоңырау(лар)ды босату мүмкін емес."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Қоңырау шалу үшін сымсыз желіге қосылыңыз."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Төтенше қоңырау"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радионы қосуда…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Қызмет жоқ. Әрекет қайталануда…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Төтенше қоңырауды кері шалу режиміне кірді"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Төтенше қоңырауды кері шалу режимі"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Дерекқор байланысы өшірілген"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> минут ешқандай дерек жинақтау мүмкін болмайды."</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> минут ешқандай дерек жинақтау мүмкін болмайды."</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Телефон Төтенше қоңырауды қайтару режимінде <xliff:g id="COUNT">%s</xliff:g> минут болады. Осы режимде тұрғанда дерек байланысын пайдаланатын қолданбаларды пайдалану мүмкін болмайды. Режимнен қазір шығуды қалайсыз ба?"</item>
- <item quantity="other" msgid="8617116564023933114">"Телефон Төтенше қоңырауды қайтару режимінде <xliff:g id="COUNT">%s</xliff:g> минут болады. Осы режимде тұрғанда дерек байланысын пайдаланатын қолданбаларды пайдалану мүмкін бомайды. Режимнен қазір шығуды қалайсыз ба?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Таңдалған әрекет Төтенше қоңырауды қайтару режимі қосылып тұрғанда қол жетімсіз. Телефон бұл режимде <xliff:g id="COUNT">%s</xliff:g> минут болады. Бұл режимнен қазір шығуды қалайсыз ба?"</item>
- <item quantity="other" msgid="6115622137771382224">"Төтенше қоңырау режимі қосылып тұрғанда таңдалған әрекет қол жетімсіз. Телефон бұл режимде <xliff:g id="COUNT">%s</xliff:g> минут болады. Бұл режимнен қазір шығуды қалайсыз ба?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> минут бойы деректер байланысы жоқ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> минут бойы деректер байланысы жоқ</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Телефон <xliff:g id="COUNT_1">%s</xliff:g> минут бойы жедел кері қоңырау шалу режимінде болады. Бұл режимде деректер байланысын пайдаланатын қолданбаларды пайдалану мүмкін емес. Қазір шығу керек пе?</item>
+ <item quantity="one">Телефон <xliff:g id="COUNT_0">%s</xliff:g> минут бойы жедел кері қоңырау шалу режимінде болады. Бұл режимде деректер байланысын пайдаланатын қолданбаларды пайдалану мүмкін емес. Қазір шығу керек пе?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Таңдалған әрекет жедел кері қоңырау шалу режимінде қол жетімді емес. Телефон осы режимде <xliff:g id="COUNT_1">%s</xliff:g> минут бойы болады. Қазір шығу керек пе?</item>
+ <item quantity="one">Таңдалған әрекет жедел кері қоңырау шалу режимінде қол жетімді емес. Телефон осы режимде <xliff:g id="COUNT_0">%s</xliff:g> минут бойы болады. Қазір шығу керек пе?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Төтенше қоңырау режимінде таңдалған әрекет қол жетімсіз."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Төтенше қоңырауды кері шалу режимінен шығуда"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Иә"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Жедел қоңыраулар"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Тек жедел қоңыраулар"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM картасы, ұяшық: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Арнайы мүмкіндіктер"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Кіріс Wi-Fi қоңырауы"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi қоңырауы"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Ашу үшін қайтадан түртіңіз"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Хабарды кодтан шығару кезінде қате пайда болды."</string>
</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 3bec4b4..6925dad 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -28,10 +28,10 @@
<string name="mmiStarted" msgid="6347869857061147003">"បានចាប់ផ្ដើមកូដ MMI"</string>
<string name="ussdRunning" msgid="485588686340541690">"កូដ USSD កំពុងដំណើរការ…"</string>
<string name="mmiCancelled" msgid="2771923949751842276">"បានបោះបង់កូដ MMI"</string>
- <string name="cancel" msgid="5044513931633602634">"បោះបង់"</string>
+ <string name="cancel" msgid="5044513931633602634">"បោះបង់"</string>
<string name="enter_input" msgid="1810529547726803893">"សារ USSD ត្រូវតែមានតួអក្សរចន្លោះ <xliff:g id="MIN_LEN">%d</xliff:g> និង <xliff:g id="MAX_LEN">%d</xliff:g> ។ សូមព្យាយាមម្ដងទៀត។"</string>
<string name="manageConferenceLabel" msgid="4691922394301969053">"គ្រប់គ្រងការហៅជាសន្និសីទ"</string>
- <string name="ok" msgid="3811371167865772377">"យល់ព្រម"</string>
+ <string name="ok" msgid="3811371167865772377">"យល់ព្រម"</string>
<string name="audio_mode_speaker" msgid="27649582100085266">"អូប៉ាល័រ"</string>
<string name="audio_mode_earpiece" msgid="4156527186373869107">"កាស"</string>
<string name="audio_mode_wired_headset" msgid="1465350758489175975">"កាសមានខ្សែ"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"គណនីទូរស័ព្ទ"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"បន្ថែមគណនី SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"កំណត់ការកំណត់គណនី"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"ការហៅតាម Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"ការហៅតាម Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"កុំប្រើការហៅតាម Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"កុំប្រើជំនួយការហៅ"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"គ្មាន"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"កំណត់"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"សេវាកម្មភ្ជាប់ដែលជាប់ជាមួយ"</string>
<string name="voicemail" msgid="8693759337917898954">"សារជាសំឡេង"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"សារជាសម្លេង (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"ប្រតិបត្តិករបណ្ដាញ"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"ការផ្សាយពេលមានអាសន្ន"</string>
@@ -131,7 +132,7 @@
<string name="exception_error" msgid="7027667130619518211">"កំហុសស៊ីមកាត ឬបណ្ដាញ។"</string>
<string name="fdn_check_failure" msgid="18200614306525434">"បានបើកការកំណត់លេខហៅថេរនៃកម្មវិធីទូរស័ព្ទរបស់អ្នក។ ជាលទ្ធផល លក្ខណៈមួយចំនួនដែលទាក់ទងនឹងការហៅមិនដំណើរការ។"</string>
<string name="radio_off_error" msgid="2304459933248513376">"បើកវិទ្យុមុនពេលមើលការកំណត់ទាំងនេះ។"</string>
- <string name="close_dialog" msgid="2365884406356986917">"យល់ព្រម"</string>
+ <string name="close_dialog" msgid="2365884406356986917">"យល់ព្រម"</string>
<string name="enable" msgid="7248657275000173526">"បើក"</string>
<string name="disable" msgid="4678348128118573672">"បិទ"</string>
<string name="change_num" msgid="239476305819844391">"ធ្វើបច្ចុប្បន្នភាព"</string>
@@ -194,7 +195,7 @@
<item msgid="5958053792390386668">"GSM/WCDMA ស្វ័យប្រវត្តិ"</item>
<item msgid="7913148405605373434">"តែ WCDMA ប៉ុណ្ណោះ"</item>
<item msgid="1524224863879435516">"តែ GSM ប៉ុណ្ណោះ"</item>
- <item msgid="3817924849415716259">"GSM/WCDMA ដែលចូលចិត្ត"</item>
+ <item msgid="3817924849415716259">"GSM/WCDMA ដែលចូលចិត្ត"</item>
</string-array>
<string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"របៀប 4G LTE ធ្វើឲ្យប្រសើរឡើង"</string>
<string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ប្រើសេវាកម្ម LTE ដើម្បីធ្វើឲ្យសម្លេង និងការទំនាក់ទំនងផ្សេងទៀតប្រសើរឡើង (បានណែនាំ)"</string>
@@ -204,11 +205,12 @@
<string name="roaming_enable" msgid="7331106985174381987">"តភ្ជាប់ទៅកាន់សេវាកម្មទិន្នន័យនៅពេលដែលរ៉ូមីង"</string>
<string name="roaming_disable" msgid="1843417228755568110">"តភ្ជាប់ទៅកាន់សេវាកម្មទិន្នន័យនៅពេលដែលរ៉ូមីង"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"អ្នកបានបាត់បង់ការតភ្ជាប់ទិន្នន័យ ពីព្រោះអ្នកបានចាកចេញពីបណ្ដាញដើមរបស់អ្នកជាមួយរ៉ូមីងទិន្នន័យបានបិទ។"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"អនុញ្ញាតការប្រើប្រាស់ទិន្នន័យទូរស័ព្ទនៅពេលរ៉ូមីង? ការគិតថ្លៃខ្ពស់អាចត្រូវបានអនុវត្ត។"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"អាចនាំឲ្យមានការគិតប្រាក់របស់អ្នកច្រើន។"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"អនុញ្ញាតឲ្យរ៉ូមីងទិន្នន័យ?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"ជម្រើស GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"ជម្រើស CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"ការប្រើប្រាស់ទិន្នន័យ"</string>
- <string name="throttle_current_usage" msgid="8762280193043815361">"បច្ចុប្បន្នបានប្រើទិន្នន័យ"</string>
+ <string name="throttle_current_usage" msgid="8762280193043815361">"បច្ចុប្បន្នបានប្រើទិន្នន័យ"</string>
<string name="throttle_time_frame" msgid="1915198770363734685">"ទិន្នន័យប្រើរយៈពេល"</string>
<string name="throttle_rate" msgid="4710388992676803508">"គោលនយោបាយអត្រាទិន្នន័យ"</string>
<string name="throttle_help" msgid="243651091785169900">"ស្វែងយល់បន្ថែម"</string>
@@ -240,7 +242,7 @@
<string name="local_enable" msgid="6370463247609136359">"បានបើកព័ត៌មានក្នុងស្រុក"</string>
<string name="local_disable" msgid="4405691986943795798">"បានបិទព័ត៌មានក្នុងស្រុក"</string>
<string name="enable_disable_regional" msgid="4905652414535565872">"នៃតំបន់"</string>
- <string name="regional_enable" msgid="4434680415437834759">"បានបើកព័ត៌មានក្នុងតំបន់"</string>
+ <string name="regional_enable" msgid="4434680415437834759">"បានបើកព័ត៌មានក្នុងតំបន់"</string>
<string name="regional_disable" msgid="5359325527213850077">"បានបិទព័ត៌មានក្នុងតំបន់"</string>
<string name="enable_disable_national" msgid="236278090206880734">"ជាតិ"</string>
<string name="national_enable" msgid="1172443648912246952">"បានបើកព័ត៌មានជាតិ"</string>
@@ -276,11 +278,11 @@
<string name="atr_enable" msgid="5541757457789181799">"បានបើករបាយការណ៍ចរាចរណ៍តំបន់"</string>
<string name="atr_disable" msgid="7085558154727596455">"បានបិទរបាយការណ៍ចរាចរណ៍តំបន់"</string>
<string name="enable_disable_lafs" msgid="668189073721277199">"កាលវិភាគហោះហើរអាកាសយានដ្ឋានក្នុងស្រុក"</string>
- <string name="lafs_enable" msgid="2791978667205137052">"បានបើកកាលវិភាគហោះហើរអាកាសយានដ្ឋានក្នុងស្រុក"</string>
- <string name="lafs_disable" msgid="2391212397725495350">"បានបិទកាលវិភាគហោះហើរអាកាសយានដ្ឋានក្នុងស្រុក"</string>
+ <string name="lafs_enable" msgid="2791978667205137052">"បានបើកកាលវិភាគហោះហើរអាកាសយានដ្ឋានក្នុងស្រុក"</string>
+ <string name="lafs_disable" msgid="2391212397725495350">"បានបិទកាលវិភាគហោះហើរអាកាសយានដ្ឋានក្នុងស្រុក"</string>
<string name="enable_disable_restaurants" msgid="6240381945336814024">"ភោជនីយដ្ឋាន"</string>
<string name="restaurants_enable" msgid="5137657479469118847">"បានបើកភោជនីយដ្ឋាន"</string>
- <string name="restaurants_disable" msgid="3678480270938424092">"បានបិទភោជនីយដ្ឋាន"</string>
+ <string name="restaurants_disable" msgid="3678480270938424092">"បានបិទភោជនីយដ្ឋាន"</string>
<string name="enable_disable_lodgings" msgid="1822029172658551202">"បណ្ដោះអាសន្ន"</string>
<string name="lodgings_enable" msgid="3230042508992850322">"បានបើកជាបណ្ដោះអាសន្ន"</string>
<string name="lodgings_disable" msgid="3387879742320682391">"បានបិទជាបណ្ដោះអាសន្ន"</string>
@@ -294,7 +296,7 @@
<string name="stock_quotes_enable" msgid="4384802470887170543">"បានបើកសម្រង់ស្ដុក"</string>
<string name="stock_quotes_disable" msgid="4781450084565594998">"បានបិទសម្រង់ស្ដុក"</string>
<string name="enable_disable_eo" msgid="4863043263443942494">"ឱកាសការងារ"</string>
- <string name="eo_enable" msgid="8623559062015685813">"បានបើកឱកាសការងារ"</string>
+ <string name="eo_enable" msgid="8623559062015685813">"បានបើកឱកាសការងារ"</string>
<string name="eo_disable" msgid="3863812478090907609">"បានបិទឱកាសការងារ"</string>
<string name="enable_disable_mhh" msgid="908214593528968522">"វេជ្ជសាស្ត្រ សុខភាព និងមន្ទីរពេទ្យ"</string>
<string name="mhh_enable" msgid="5544500632306446815">"បានបើក វេជ្ជសាស្ត្រ សុខភាព និងមន្ទីរពេទ្យ"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"កំណត់របៀប TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ព្យាយាមម្ដងទៀតស្វ័យប្រវត្តិ"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"បើករបៀបព្យាយាមម្ដងទៀតស្វ័យប្រវត្តិ"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ការផ្លាស់ប្តូររបៀប TTY មិនត្រូវបានអនុញ្ញាតអំឡុងពេលធ្វើការហៅជាវីដេអូទេ។"</string>
<string name="menu_add" msgid="1882023737425114762">"បន្ថែមទំនាក់ទំនង"</string>
<string name="menu_edit" msgid="7143003705504672374">"កែទំនាក់ទំនង"</string>
<string name="menu_delete" msgid="3977150783449642851">"លុបទំនាក់ទំនង"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"កំពុងអានពីស៊ីមកាត…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"គ្មានទំនាក់ទំនងនៅលើស៊ីមកាតរបស់អ្នកទេ។"</string>
<string name="simContacts_title" msgid="1861472842524839921">"ជ្រើសទំនាក់ទំនងដើម្បីនាំចូល"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ដើម្បីនាំចូលទំនាក់ទំនងពីស៊ីមកាត ដំបូងត្រូវបិទរបៀបពេលជិះយន្តហោះ។"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"បិទរបៀបយន្តហោះដើម្បីនាំចូលទំនាក់ទំនងចេញពីស៊ីមកាត។"</string>
<string name="enable_pin" msgid="5422767284133234860">"បិទ/បើកកូដ PIN ស៊ីមកាត"</string>
<string name="change_pin" msgid="9174186126330785343">"ប្ដូរកូដ PIN ស៊ីមកាត"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"កូដ PIN ស៊ីមកាត៖"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"បញ្ចប់ការសន្ទនា"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"ហៅទៅវិញ"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"សារ"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ដើម្បីកំណត់ការហៅ ដំបូងត្រូវបិទរបៀបនៅពេលជិះយន្តហោះ។"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"បិទរបៀបយន្តហោះដើម្បីធ្វើការហៅ។"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"បិទរបៀបយន្តហោះ ឬភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"មិនបានចុះឈ្មោះនៅលើបណ្ដាញ។"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"បណ្ដាញចល័តមិនអាចប្រើបាន។"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"មិនមានបណ្តាញទូរស័ព្ទទេ។ ភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ដើម្បីធ្វើការហៅ បញ្ចូលលេខដែលមានសុពលភាព។"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"មិនអាចហៅបានទេ។"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"កំពុងចាប់ផ្ដើមលំដាប់ MMI ..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"មិនអាចហៅជាសន្និសីទ។"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"មិនអាចបដិសេធការហៅបានទេ។"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"មិនអាចបញ្ចេញការហៅបានទេ។"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ការហៅនៅពេលមានអាសន្ន"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"កំពុងបើកវិទ្យុ…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"គ្មានសេវាទេ។ ព្យាយាមម្តង…"</string>
@@ -491,7 +497,7 @@
<string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"រំលងការធ្វើឲ្យសកម្ម?"</string>
<string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"ប្រសិនបើអ្នករំលងការធ្វើឲ្យសកម្ម អ្នកមិនអាចកំណត់ការហៅ ឬតភ្ជាប់បណ្ដាញទិន្នន័យឧបករណ៍ចល័តបានទេ (អ្នកអាចតភ្ជាប់តាមបណ្ដាញវ៉ាយហ្វាយ )។ លុះត្រាតែអ្នកធ្វើឲ្យទូរស័ព្ទរបស់អ្នកសកម្ម អ្នកត្រូវបានស្នើធ្វើឲ្យវាសកម្មនៅពេលដែលអ្នកបិទវា។"</string>
<string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"រំលង"</string>
- <string name="ota_activate" msgid="1368528132525626264">"ធ្វើឲ្យសកម្ម"</string>
+ <string name="ota_activate" msgid="1368528132525626264">"ធ្វើឲ្យសកម្ម"</string>
<string name="ota_title_activate_success" msgid="6570240212263372046">"បានធ្វើឲ្យទូរស័ព្ទសកម្ម។"</string>
<string name="ota_title_problem_with_activation" msgid="7095824491970084367">"មានបញ្ហាជាមួយនឹងការធ្វើឲ្យសកម្ម"</string>
<string name="ota_listen" msgid="162923839877584937">"អនុវត្តតាមសេចក្ដីណែនាំដែលបាននិយាយរហូតដល់លោកអ្នកស្ដាប់ឮហើយធ្វើឲ្យសកម្មពេញលេញ។"</string>
@@ -503,23 +509,23 @@
<string name="ota_spc_failure" msgid="3909983542575030796">"ការបរាជ័យ SPC លើស"</string>
<string name="ota_call_end" msgid="4537279738134612388">"ថយក្រោយ"</string>
<string name="ota_try_again" msgid="7685477206465902290">"ព្យាយាមម្ដងទៀត"</string>
- <string name="ota_next" msgid="3904945374358235910">"បន្ទាប់"</string>
+ <string name="ota_next" msgid="3904945374358235910">"បន្ទាប់"</string>
<string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"បានបញ្ចូលរបៀបការហៅទៅវិញពេលមានអាសន្ន"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"របៀបហៅទៅវិញពេលមានអាសន្ន"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"បានបិទការតភ្ជាប់ទិន្នន័យ"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"គ្មានការតភ្ជាប់ទិន្នន័យរយៈពេល <xliff:g id="COUNT">%s</xliff:g> នាទី"</item>
- <item quantity="other" msgid="3122217344579273583">"ការតភ្ជាប់គ្មានទិន្នន័យសម្រាប់ <xliff:g id="COUNT">%s</xliff:g> នាទី"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ទូរស័ព្ទនឹងនៅក្នុងរបៀបហៅទៅវិញសម្រាប់តម្រូវការបន្ទាន់ <xliff:g id="COUNT">%s</xliff:g> នាទី។ ខណៈពេលដែលនៅក្នុងរបៀបនេះគ្មានកម្មវិធីដែលប្រើការតភ្ជាប់ទិន្នន័យឡើយ។ តើអ្នកចង់ចាកចេញឥឡូវនេះឬ?"</item>
- <item quantity="other" msgid="8617116564023933114">"ទូរស័ព្ទនឹងនៅក្នុងរបៀបហៅទៅវិញសម្រាប់ពេលមានអាសន្ន <xliff:g id="COUNT">%s</xliff:g> នាទី។ ខណៈពេលដែលនៅក្នុងរបៀបនេះគ្មានកម្មវិធីដែលបានប្រើការតភ្ជាប់ទិន្នន័យឡើយ។ តើអ្នកចង់ចាកចេញឥឡូវនេះឬ?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"សកម្មភាពដែលបានជ្រើសគឺមិនអាចធ្វើបានខណៈពេលដែលនៅក្នុងរបៀបហៅទៅវិញសម្រាប់ពេលមានអាសន្ន។ ទូរស័ព្ទនឹងនៅក្នុងរបៀប <xliff:g id="COUNT">%s</xliff:g> នាទី។ តើអ្នកចង់ចាកចេញឥឡូវនេះឬ?"</item>
- <item quantity="other" msgid="6115622137771382224">"សកម្មភាពដែលបានជ្រើសគឺមិនអាចធ្វើបានខណៈពេលដែលនៅក្នុងរបៀបហៅទៅវិញសម្រាប់ពេលមានអាសន្ន។ ទូរស័ព្ទនឹងនៅក្នុងរបៀបនេះ <xliff:g id="COUNT">%s</xliff:g> នាទី។ តើអ្នកចង់ចាកចេញឥឡូវនេះឬ?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">គ្មានការភ្ជាប់ទិន្នន័យរយៈពេល <xliff:g id="COUNT_1">%s</xliff:g> នាទី</item>
+ <item quantity="one">គ្មានការភ្ជាប់ទិន្នន័យរយៈពេល <xliff:g id="COUNT_0">%s</xliff:g> នាទី</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">ទូរស័ព្ទនេះនឹងស្ថិតក្នុងរបៀប ហៅត្រលប់ពេលអាសន្ន រយៈពេល <xliff:g id="COUNT_1">%s</xliff:g> នាទី។ ខណៈពេលស្ថិតក្នុងរបៀបនេះ មិនមានកម្មវិធីដែលប្រើការភ្ជាប់ទិន្នន័យណា អាចប្រើបានបានឡើយ។ តើអ្នកចង់ចាកចេញឥឡូវនេះទេ?</item>
+ <item quantity="one">ទូរស័ព្ទនេះនឹងស្ថិតក្នុងរបៀប ហៅត្រលប់ពេលអាសន្ន រយៈពេល <xliff:g id="COUNT_0">%s</xliff:g> នាទី។ ខណៈពេលស្ថិតក្នុងរបៀបនេះ មិនមានកម្មវិធីដែលប្រើការភ្ជាប់ទិន្នន័យណា អាចប្រើបានបានឡើយ។ តើអ្នកចង់ចាកចេញឥឡូវនេះទេ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">សកម្មភាពដែលបានជ្រើសមិនមានទេ ខណៈពេលដែលស្ថិតក្នុងរបៀប ហៅត្រលប់ពេលអាសន្ន។ ទូរស័ព្ទនេះនឹងស្ថិតក្នុងរបៀបនេះរយៈពេល <xliff:g id="COUNT_1">%s</xliff:g> នាទី។ តើអ្នកចង់ចាកចេញឥឡូវនេះទេ?</item>
+ <item quantity="one">សកម្មភាពដែលបានជ្រើសមិនមានទេ ខណៈពេលដែលស្ថិតក្នុងរបៀប ហៅត្រលប់ពេលអាសន្ន។ ទូរស័ព្ទនេះនឹងស្ថិតក្នុងរបៀបនេះរយៈពេល <xliff:g id="COUNT_0">%s</xliff:g> នាទី។ តើអ្នកចង់ចាកចេញឥឡូវនេះទេ?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"សកម្មភាពដែលបានជ្រើសគឺមិនអាចរកបាននៅក្នុងខណៈពេលដែលការហៅអាសន្នមួយ។"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"ចេញពីរបៀបហៅទៅវិញពេលមានអាសន្ន"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"បាទ/ចាស"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"ការហៅពេលអាសន្ន"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"សម្រាប់ការហៅពេលអាសន្នប៉ុណ្ណោះ"</string>
<string name="sim_description_default" msgid="4778679519938775515">"ស៊ីមកាត រន្ធ៖ <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"លទ្ធភាពប្រើប្រាស់"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"មានការហៅចូលមកតាម Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ហៅតាម Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ប៉ះម្ដងទៀតដើម្បីបើក"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"មានកំហុសខណៈពេលឌិកូដសារ។"</string>
</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 59eea39..cbdf3f9 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ಫೋನ್ ಖಾತೆಗಳು"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ಖಾತೆಯನ್ನು ಸೇರಿಸಿ"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ಖಾತೆ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi ಕರೆ ಮಾಡುವಿಕೆ"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಬೇಡಿ"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"ಕರೆ ಸಹಾಯಕವನ್ನು ಬಳಸಬೇಡಿ"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ಯಾವುದೂ ಇಲ್ಲ"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"ಕಾನ್ಫಿಗರ್ ಮಾಡು"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"ಅಂತರ್ನಿರ್ಮಿತ ಸಂಪರ್ಕ ಸೇವೆ"</string>
<string name="voicemail" msgid="8693759337917898954">"ಧ್ವನಿಮೇಲ್"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"ಧ್ವನಿಮೇಲ್ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"ನೆಟ್ವರ್ಕ್ ಆಪರೇಟರ್ಗಳು"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"ತುರ್ತು ಪ್ರಸಾರಗಳು"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"ರೋಮಿಂಗ್ನಲ್ಲಿರುವಾಗ ಡೇಟಾ ಸೇವೆಗಳಿಗೆ ಸಂಪರ್ಕಿಸು"</string>
<string name="roaming_disable" msgid="1843417228755568110">"ರೋಮಿಂಗ್ನಲ್ಲಿರುವಾಗ ಡೇಟಾ ಸೇವೆಗಳಿಗೆ ಸಂಪರ್ಕಿಸು"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"ಡೇಟಾ ರೋಮಿಂಗ್ ಅನ್ನು ಆಫ್ ಮಾಡಿರುವ ಸ್ಥಿತಿಯಲ್ಲಿ ನಿಮ್ಮ ಹೋಮ್ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ನೀವು ಇರಿಸಿರುವ ಕಾರಣ ನೀವು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಕಳೆದುಕೊಂಡಿರುವಿರಿ."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"ರೋಮಿಂಗ್ನಲ್ಲಿ ಡೇಟಾ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುವುದೇ? ಗಮನಾರ್ಹ ಶುಲ್ಕಗಳು ಅನ್ವಯಿಸಬಹುದು."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"ನೀವು ಗಣನೀಯವಾಗಿ ಶುಲ್ಕಗಳನ್ನು ತೆರಬೇಕಾಗಬಹುದು."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ಡೇಟಾ ರೋಮಿಂಗ್ ಅನುಮತಿಸುವುದೇ?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ಆಯ್ಕೆಗಳು"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA ಆಯ್ಕೆಗಳು"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"ಡೇಟಾ ಬಳಕೆ"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY ಮೋಡ್ ಹೊಂದಿಸಿ"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ಸ್ವಯಂ-ಮರುಪ್ರಯತ್ನಿಸುವಿಕೆ"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"ಸ್ವಯಂ ಮರುಪ್ರಯತ್ನಿಸುವಿಕೆ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY ಮೋಡ್ ವೀಡಿಯೊ ಕರೆಯ ಸಂದರ್ಭದಲ್ಲಿ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
<string name="menu_add" msgid="1882023737425114762">"ಸಂಪರ್ಕ ಸೇರಿಸಿ"</string>
<string name="menu_edit" msgid="7143003705504672374">"ಸಂಪರ್ಕವನ್ನು ಸಂಪಾದಿಸಿ"</string>
<string name="menu_delete" msgid="3977150783449642851">"ಸಂಪರ್ಕವನ್ನು ಅಳಿಸಿ"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"ಸಿಮ್ ಕಾರ್ಡ್ನಿಂದ ಓದಲಾಗುತ್ತಿದೆ…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"ನಿಮ್ಮ ಸಿಮ್ ಕಾರ್ಡ್ನಲ್ಲಿ ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ."</string>
<string name="simContacts_title" msgid="1861472842524839921">"ಆಮದು ಮಾಡಲು ಸಂಪರ್ಕಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ಸಿಮ್ ಕಾರ್ಡ್ನಿಂದ ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡಲು, ಮೊದಲು ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"ಸಿಮ್ ಕಾರ್ಡ್ನಿಂದ ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡಲು ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."</string>
<string name="enable_pin" msgid="5422767284133234860">"ಸಿಮ್ ಪಿನ್ ಸಕ್ರಿಯಗೊಳಿಸಿ/ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="change_pin" msgid="9174186126330785343">"ಸಿಮ್ ಪಿನ್ ಬದಲಾಯಿಸಿ"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"ಸಿಮ್ ಪಿನ್:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"ಹ್ಯಾಂಗ್ ಅಪ್ ಮಾಡಿ"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"ಸಂದೇಶ"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ಕರೆ ಮಾಡಲು, ಮೊದಲು ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ಕರೆ ಮಾಡಲು ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ ಅಥವಾ ಕರೆ ಮಾಡಲು ವೈರ್ಲೆಸ್ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ಇನ್ನೂ ನೋಂದಣಿಯಾಗಿಲ್ಲ."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"ಸೆಲ್ಯುಲಾರ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ಸೆಲ್ಯುಲಾರ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ. ಕರೆ ಮಾಡಲು ವೈರ್ಲೆಸ್ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ಕರೆಯನ್ನು ಮಾಡಲು, ಮಾನ್ಯವಾದ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ಅನುಕ್ರಮ ಪ್ರಾರಂಭವಾಗುತ್ತಿದೆ…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ಕಾನ್ಫರೆನ್ಸ್ ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ಕರೆಯನ್ನು ತಿರಸ್ಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ಕರೆ(ಗಳು) ಬಿಡುಗಡೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ಕರೆ ಮಾಡಲು ವೈರ್ಲೆಸ್ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ತುರ್ತು ಕರೆಗಳು"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ರೇಡಿಯೋ ಆನ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ಯಾವುದೇ ಸೇವೆ ಇಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"ತುರ್ತು ಕಾಲ್ಬ್ಯಾಕ್ ಮೋಡ್ ನಮೂದಿಸಲಾಗಿದೆ"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ತುರ್ತು ಕಾಲ್ಬ್ಯಾಕ್ ಮೋಡ್"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ಡೇಟಾ ಸಂಪರ್ಕ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> ನಿಮಿಷದವರೆಗೆ ಯಾವುದೇ ಡೇಟಾ ಸಂಪರ್ಕವಿಲ್ಲ"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> ನಿಮಿಷಗಳವರೆಗೆ ಯಾವುದೇ ಡೇಟಾ ಸಂಪರ್ಕವಿಲ್ಲ"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"<xliff:g id="COUNT">%s</xliff:g> ನಿಮಿಷದವರೆಗೆ ಫೋನ್ ತುರ್ತು ಕಾಲ್ಬ್ಯಾಕ್ ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ಈ ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಬಳಸ ಸಾಧ್ಯವಾಗದಿರಬಹುದು. ನೀವು ಈಗಲೇ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?"</item>
- <item quantity="other" msgid="8617116564023933114">"<xliff:g id="COUNT">%s</xliff:g> ನಿಮಿಷಗಳವರೆಗೆ ಫೋನ್ ತುರ್ತು ಕಾಲ್ಬ್ಯಾಕ್ ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ಈ ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗದಿರಬಹುದು. ನೀವು ಈಗಲೇ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"ತುರ್ತು ಕಾಲ್ಬ್ಯಾಕ್ ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಆಯ್ಕೆ ಮಾಡಿದ ಕ್ರಿಯೆಯು ಲಭ್ಯವಿರುವುದಿಲ್ಲ. <xliff:g id="COUNT">%s</xliff:g> ನಿಮಿಷದವರೆಗೆ ಫೋನ್ ಈ ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ನೀವು ಈಗಲೇ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?"</item>
- <item quantity="other" msgid="6115622137771382224">"ತುರ್ತು ಕಾಲ್ಬ್ಯಾಕ್ ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಆಯ್ಕೆ ಮಾಡಿದ ಕ್ರಿಯೆಯು ಲಭ್ಯವಿರುವುದಿಲ್ಲ. <xliff:g id="COUNT">%s</xliff:g> ನಿಮಿಷಗಳವೆರೆಗೆ ಫೋನ್ ಈ ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ನೀವು ಈಗಲೇ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one"> <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ಯಾವುದೇ ಡೇಟಾ ಸಂಪರ್ಕವಿಲ್ಲ</item>
+ <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ಯಾವುದೇ ಡೇಟಾ ಸಂಪರ್ಕವಿಲ್ಲ</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">ಪೋನ್ <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ತುರ್ತು ಮರಳಿ ಕರೆಮಾಡು ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ಈ ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಬಳಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ನೀವು ಇದೀಗ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?</item>
+ <item quantity="other">ಪೋನ್ <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ತುರ್ತು ಮರಳಿ ಕರೆಮಾಡು ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ಈ ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಬಳಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ನೀವು ಇದೀಗ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">ತುರ್ತು ಮರಳಿ ಕರೆಮಾಡು ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಆಯ್ಕೆಮಾಡಿದ ಕ್ರಿಯೆಯು ಲಭ್ಯವಿರುವುದಿಲ್ಲ. ಫೋನ್ <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ಈ ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ನೀವು ಇದೀಗ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?</item>
+ <item quantity="other">ತುರ್ತು ಮರಳಿ ಕರೆಮಾಡು ಮೋಡ್ನಲ್ಲಿರುವಾಗ ಆಯ್ಕೆಮಾಡಿದ ಕ್ರಿಯೆಯು ಲಭ್ಯವಿರುವುದಿಲ್ಲ. ಫೋನ್ <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ಈ ಮೋಡ್ನಲ್ಲಿರುತ್ತದೆ. ನೀವು ಇದೀಗ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"ತುರ್ತು ಕರೆಯಲ್ಲಿರುವಾಗ ಆಯ್ಕೆಮಾಡಿದ ಕ್ರಿಯೆಯು ಲಭ್ಯವಿರುವುದಿಲ್ಲ."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"ತುರ್ತು ಕಾಲ್ಬ್ಯಾಕ್ ಮೋಡ್ನಿಂದ ನಿರ್ಗಮಿಸಲಾಗುತ್ತಿದೆ"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"ಹೌದು"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"ತುರ್ತು ಕರೆಗಳು"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"ತುರ್ತು ಕರೆ ಮಾಡುವಿಕೆ ಮಾತ್ರ"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM ಕಾರ್ಡ್, ಸ್ಲಾಟ್: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ಪ್ರವೇಶಿಸುವಿಕೆ"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ಒಳಬರುವ ವೈ-ಫೈ ಕರೆ"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ವೈ-ಫೈ ಕರೆ"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ತೆರೆಯಲು ಮತ್ತೊಮ್ಮೆ ಸ್ಪರ್ಶಿಸಿ"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"ಸಂದೇಶವನ್ನು ಡೀಕೋಡ್ ಮಾಡುವಾಗ ದೋಷವುಂಟಾಗಿದೆ."</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 8b38a56..4a7d310 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"전화 계정"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP 계정 추가"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"계정 설정 조정"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi 통화"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi 통화"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi 통화 사용 안함"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"통화 도우미 사용 안함"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"선택 안함"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"구성"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"내장된 연결 서비스"</string>
<string name="voicemail" msgid="8693759337917898954">"음성사서함"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"음성사서함(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"네트워크 운영자"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"긴급 방송"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"로밍 시 데이터 서비스에 연결"</string>
<string name="roaming_disable" msgid="1843417228755568110">"로밍 시 데이터 서비스에 연결"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"데이터 로밍을 사용 중지한 상태에서 홈 네트워크를 벗어났으므로 데이터 연결이 끊어졌습니다."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"로밍 시 데이터 사용을 허용하면 많은 요금이 부과될 수 있습니다."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"많은 요금이 부과될 수 있습니다."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"데이터 로밍을 허용하시겠습니까?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 옵션"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA 옵션"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"데이터 사용"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY 모드 설정"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"자동으로 다시 시도"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"자동 다시 시도 모드 사용"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"화상 통화 중에는 TTY 모드 변경이 허용되지 않습니다."</string>
<string name="menu_add" msgid="1882023737425114762">"연락처 추가"</string>
<string name="menu_edit" msgid="7143003705504672374">"연락처 수정"</string>
<string name="menu_delete" msgid="3977150783449642851">"연락처 삭제"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM 카드에서 읽는 중..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM 카드에 주소록이 없습니다."</string>
<string name="simContacts_title" msgid="1861472842524839921">"가져올 주소록 선택"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM 카드에서 주소록을 가져오려면 먼저 비행기 모드를 사용 중지하세요."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM 카드에서 연락처를 가져오려면 비행기 모드를 사용 중지하세요."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN 사용/사용 중지"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN 변경"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"전화 끊기"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"통화하기"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"문자 메시지"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"전화를 걸려면 먼저 비행기 모드를 해제하세요."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"전화를 걸려면 비행기 모드를 사용 중지하세요."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"전화를 걸려면 비행기 모드를 사용 중지하거나 무선 네트워크에 연결하세요."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"네트워크에서 등록되지 않았습니다."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"사용 가능한 이동통신망이 없습니다."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"모바일 네트워크를 사용할 수 없습니다. 전화를 걸려면 무선 네트워크에 연결하세요."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"전화를 걸려면 올바른 번호를 입력하세요."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"전화를 걸 수 없습니다."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI 시퀀스 시작 중..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"다자간 통화를 할 수 없습니다."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"통화를 거절할 수 없습니다."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"통화를 끊을 수 없습니다."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"전화를 걸려면 무선 네트워크에 연결하세요."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"긴급 전화"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"무선을 켜는 중..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"서비스를 사용할 수 없습니다. 다시 시도 중..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"긴급 콜백 모드 시작"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"긴급 콜백 모드"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"데이터 연결이 끊김"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g>분 동안 데이터 연결 없음"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g>분 동안 데이터 연결 없음"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"휴대전화가 <xliff:g id="COUNT">%s</xliff:g>분간 긴급 콜백 모드를 유지합니다. 그 동안 데이터 연결이 필요한 앱을 사용할 수 없습니다. 종료하시겠습니까?"</item>
- <item quantity="other" msgid="8617116564023933114">"휴대전화가 <xliff:g id="COUNT">%s</xliff:g>분간 긴급 콜백 모드를 유지합니다. 그 동안 데이터 연결이 필요한 애플리케이션을 사용할 수 없습니다. 종료하시겠습니까?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"긴급 콜백 모드에서는 선택한 작업을 사용할 수 없습니다. 휴대전화가 <xliff:g id="COUNT">%s</xliff:g>분간 현재 모드를 유지합니다. 종료하시겠습니까?"</item>
- <item quantity="other" msgid="6115622137771382224">"긴급 콜백 모드에서는 선택한 작업을 사용할 수 없습니다. 휴대전화가 <xliff:g id="COUNT">%s</xliff:g>분간 현재 모드를 유지합니다. 종료하시겠습니까?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g>분 동안 데이터 연결 없음</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g>분 동안 데이터 연결 없음</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">휴대전화가 <xliff:g id="COUNT_1">%s</xliff:g>분 동안 긴급 콜백 모드로 전환됩니다. 긴급 콜백 모드에서는 데이터 연결을 이용하는 애플리케이션을 사용할 수 없습니다. 지금 종료하시겠습니까?</item>
+ <item quantity="one">휴대전화가 <xliff:g id="COUNT_0">%s</xliff:g>분 동안 긴급 콜백 모드로 전환됩니다. 긴급 콜백 모드에서는 데이터 연결을 이용하는 앱을 사용할 수 없습니다. 지금 종료하시겠습니까?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">긴급 콜백 모드에서는 선택한 작업을 수행할 수 없습니다. 휴대전화가 <xliff:g id="COUNT_1">%s</xliff:g>분 동안 긴급 콜백 모드로 전환됩니다. 지금 종료하시겠습니까?</item>
+ <item quantity="one">긴급 콜백 모드에서는 선택한 작업을 수행할 수 없습니다. 휴대전화가 <xliff:g id="COUNT_0">%s</xliff:g>분 동안 긴급 콜백 모드로 전환됩니다. 지금 종료하시겠습니까?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"긴급 통화 중에는 선택한 작업을 사용할 수 없습니다."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"긴급 콜백 모드 종료하는 중"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"예"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"긴급 전화"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"긴급 전화 전용"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM 카드, 슬롯: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"접근성"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi 수신 전화"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi 통화"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"다시 터치하여 열기"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"메시지를 디코딩하는 중에 오류가 발생했습니다."</string>
</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index e9ee467..a24ddae 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -99,7 +99,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Телефон каттоо эсептери"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP каттоо эсебин кошуу"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Каттоо эсеп жөндөөлөрүн конфигурациялоо"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi чалуу"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi чалуу"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi чалуу колдонулбасын"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Чалуу жардамчысы колдонулбасын"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Эч нерсе жок"</string>
@@ -112,6 +112,7 @@
<string name="connection_service_default_label" msgid="1498481943805913754">"Кыналган туташуу кызматы"</string>
<!-- no translation found for voicemail (8693759337917898954) -->
<skip />
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Үн почтасы (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<!-- no translation found for voicemail_abbreviated (2215592488517217448) -->
<skip />
<!-- no translation found for networks (8873030692174541976) -->
@@ -299,7 +300,8 @@
<!-- no translation found for roaming_disable (1843417228755568110) -->
<skip />
<string name="roaming_reenable_message" msgid="8913735676127858115">"Мобилдик берүү байланышын жоготтуңуз, анткени сиз мобилдик интернет роумингин иштетпестен, өзүңүздүн түйүнүңүздөн сырткары чыгып кеттиңиз."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Роуминг учурунда дайындарды пайдаланууга уруксатпы? Бир далай төлөмдөр колдонулушу мүмкүн."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Бир кыйла төлөмдөргө учурашыңыз мүмкүн."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Интернет-роумингге жол берилсинби?"</string>
<!-- no translation found for gsm_umts_options (6538311689850981686) -->
<skip />
<!-- no translation found for cdma_options (4016822858172249884) -->
@@ -535,6 +537,7 @@
<skip />
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Авто-чалуу"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Авто-чалуу тартибин иштетүү"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Видео чалуу учурунда Телетайп түзмөк режимин өзгөртүүгө уруксат жок"</string>
<!-- no translation found for menu_add (1882023737425114762) -->
<skip />
<!-- no translation found for menu_edit (7143003705504672374) -->
@@ -576,7 +579,7 @@
<skip />
<!-- no translation found for simContacts_title (1861472842524839921) -->
<skip />
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM-картадан байланыштарды импорттоо үчүн, алгач Учак тартибин өчүрүшүңүз керек."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM картадан байланыштарды импорттоо үчүн учак режимин өчүрүңүз."</string>
<!-- no translation found for enable_pin (5422767284133234860) -->
<skip />
<!-- no translation found for change_pin (9174186126330785343) -->
@@ -669,11 +672,12 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Телефонду коюу"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Кайра чалуу"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Билдирүү"</string>
- <!-- no translation found for incall_error_power_off (6550191216405193368) -->
- <skip />
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Чалуу үчүн учак режимин өчүрүңүз."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Чалуу үчүн учак режимин өчүрүңүз же зымсыз тармакка туташыңыз."</string>
<!-- no translation found for incall_error_emergency_only (4678640422710818317) -->
<skip />
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Уюктук тармак жеткиликтүү эмес."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Уюлдук тармак жеткиликтүү эмес. Чалуу үчүн зымсыз тармакка туташыңыз."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Чалуу үчүн, жарактуу номер киргизиңиз."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Чалынбай жатат."</string>
<!-- no translation found for incall_status_dialed_mmi (3672498861336189563) -->
@@ -686,6 +690,7 @@
<skip />
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Чалуу четке кагылбай жатат."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Чалуу(лар) бошотулбай жатат."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Чалуу үчүн зымсыз тармакка туташыңыз."</string>
<!-- no translation found for emergency_enable_radio_dialog_title (4627849966634578257) -->
<skip />
<!-- no translation found for emergency_enable_radio_dialog_message (207613549344420291) -->
@@ -781,16 +786,18 @@
<skip />
<!-- no translation found for phone_in_ecm_call_notification_text (4611608947314729773) -->
<skip />
- <!-- no translation found for phone_in_ecm_notification_time:one (4866221796252472622) -->
- <!-- no translation found for phone_in_ecm_notification_time:other (3122217344579273583) -->
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Телефон <xliff:g id="COUNT">%s</xliff:g> мүнөт Куткаруучулардын Кайра Чалуусу тартибинде иштейт. Бул тартипте колдонмолор мобилдик берүү туташуусун колдоно алышпайт. Азыр андан чыкканды каалайсызбы?"</item>
- <item quantity="other" msgid="8617116564023933114">"Телефон <xliff:g id="COUNT">%s</xliff:g> мүнөт Куткаруучулардын Кайра Чалуусу тартибинде иштейт. Бул тартипте колдонмолор мобилдик берүү туташуусун колдоно алышпайт. Азыр андан чыкканды каалайсызбы?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Бул аракет Куткаруучулардын Кайра Чалуусу тартибинде иштебейт. Телефон бул тартипте <xliff:g id="COUNT">%s</xliff:g> мүнөт болот. Азыр андан чыкканды каалайсызбы?"</item>
- <item quantity="other" msgid="6115622137771382224">"Бул аракет Куткаруучулардын Кайра Чалуусу тартибинде иштебейт. Телефон бул тартипте <xliff:g id="COUNT">%s</xliff:g> мүнөт болот. Азыр андан чыкканды каалайсызбы?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> мүнөт бою маалыматтык туташуу болбойт</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> мүнөт бою маалыматтык туташуу болбойт</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Телефон Шашылыш кайра чалуу режиминде <xliff:g id="COUNT_1">%s</xliff:g> мүнөт бою болот. Бул режим күйүп турганда маалыматтык туташууну пайдаланган эч бир колдонмо иштетилбейт. Азыр чыгып кеткиңиз келеби?</item>
+ <item quantity="one">Телефон Шашылыш кайра чалуу режиминде <xliff:g id="COUNT_0">%s</xliff:g> мүнөт бою болот. Бул режим күйүп турганда маалыматтык туташууну пайдаланган эч бир колдонмо иштетилбейт. Азыр чыгып кеткиңиз келеби?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Тандалган аракет Шашылыш кайра чалуу режиминде жеткиликтүү эмес. Телефон бул режимде <xliff:g id="COUNT_1">%s</xliff:g> мүнөт бою болот. Азыр чыгып кеткиңиз келеби?</item>
+ <item quantity="one">Тандалган аракет Шашылыш кайра чалуу режиминде жеткиликтүү эмес. Телефон бул режимде <xliff:g id="COUNT_0">%s</xliff:g> мүнөт бою болот. Азыр чыгып кеткиңиз келеби?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Куткаруучуларга чалуу учурунда, бул тандалган аракет аткарылбайт."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Куткаруучулардын Кайра Чалуусу тартибинен чыгуу"</string>
<!-- no translation found for alert_dialog_yes (6674268047820703974) -->
@@ -828,4 +835,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Шашылыш чалуулар"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Шашылыш чалуу гана"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-карта, оюкча: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Жеткиликтүүлүк"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Кирүүчү Wi-Fi чалуу"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi чалуу"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Ачуу үчүн кайра тийиңиз"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Билдирүү дешифрленип жатканда ката кеткен."</string>
</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 4922f91..0cc7b8b 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ບັນຊີໂທລະສັບ"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"ເພີ່ມບັນຊີ SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ຕັ້ງການຕັ້ງຄ່າບັນຊີ"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"ການໂທ Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"ການໂທ Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"ຢ່າໃຊ້ການໂທດ້ວຍ Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"ຢ່າໃຊ້ຕົວຊ່ວຍການໂທ"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ບໍ່ມີ"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"ຕັ້ງຄ່າ"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"ບໍລິການການເຊື່ອມຕໍ່ທີ່ມີມານຳ"</string>
<string name="voicemail" msgid="8693759337917898954">"ຂໍ້ຄວາມສຽງ"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"ຂໍ້ຄວາມສຽງ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"ຜູ່ໃຫ້ບໍລິການເຄືອຂ່າຍ"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"ການອອກອາກາດສຸກເສີນ"</string>
@@ -132,7 +133,7 @@
<string name="fdn_check_failure" msgid="18200614306525434">"ການຕັ້ງຄ່າແອັບຯໝາຍເລກຈຳກັດການໂທອອກ ຂອງໂທລະສັບທ່ານຖືກເປີດໃຊ້ຢູ່ ເຊິ່ງຈະເຮັດໃຫ້ຄຸນສົມບັດທີ່ກ່ຽວກັບການໂທບາງຢ່າງ ບໍ່ສາມາດໃຊ້ໄດ້."</string>
<string name="radio_off_error" msgid="2304459933248513376">"ເປີດໃຊ້ວິທະຍຸກ່ອນການເບິ່ງການຕັ້ງຄ່າເຫຼົ່ານີ້."</string>
<string name="close_dialog" msgid="2365884406356986917">"ຕົກລົງ"</string>
- <string name="enable" msgid="7248657275000173526">"ເປີດ"</string>
+ <string name="enable" msgid="7248657275000173526">"ເປີດ"</string>
<string name="disable" msgid="4678348128118573672">"ປິດ"</string>
<string name="change_num" msgid="239476305819844391">"ອັບເດດ"</string>
<string-array name="clir_display_values">
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"ເຊື່ອມຕໍ່ບໍລິການຂໍ້ມູນເມື່ອໂຣມມິງ"</string>
<string name="roaming_disable" msgid="1843417228755568110">"ເຊື່ອມຕໍ່ບໍລິການຂໍ້ມູນເມື່ອໂຣມມິງ"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"ທ່ານໄດ້ຖືກຕັດການເຊື່ອມຕໍ່ຂໍ້ມູນ ເນື່ອງຈາກທ່ານອອກຈາກເຄືອຂ່າຍພາຍໃນ ໂດຍທີ່ປິດການໂຣມມິງໄວ້."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"ອະນຸຍາດການນຳໃຊ້ຂໍ້ມູນ ເມື່ອໂຣມມິງບໍ? ອາດຈະມີການເກັບຄ່າບໍລິການຫຼາຍ."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"ທ່ານອາດຈະເສຍຄ່າໃຊ້ຈ່າຍຫຼາຍ."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ອະນຸຍາດໃຫ້ໂຣມມິງຂໍ້ມູນບໍ?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"ໂຕເລືອກ GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"ໂຕເລືອກ CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"ການນຳໃຊ້ຂໍ້ມູນ"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"ຕັ້ງຮູບແບບ TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ລອງໃໝ່ອັດຕະໂນມັດ"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"ເປີດໃຊ້ການລອງໃໝ່ອັດຕະໂນມັດ"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ບໍ່ອະນຸຍາດໃຫ້ປ່ຽນໂໝດ TTY ຢູ່ໃນລະຫວ່າງການໂທວິດີໂອ"</string>
<string name="menu_add" msgid="1882023737425114762">"ເພີ່ມລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
<string name="menu_edit" msgid="7143003705504672374">"ແກ້ໄຂລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
<string name="menu_delete" msgid="3977150783449642851">"ລຶບລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"ກຳລັງອ່ານຈາກ SIM card..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່ໃນ SIM card ຂອງທ່ານ."</string>
<string name="simContacts_title" msgid="1861472842524839921">"ເລືອກລາຍຊື່ເພື່ອນຳເຂົ້າ"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ເພື່ອນຳລາຍຊື່ຜູ່ຕິດຕໍ່ເຂົ້າມາຈາກ SIM card, ກະລຸນາປິດການໃຊ້ໂໝດຢູ່ເທິງຍົນກ່ອນ."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"ປິດໂໝດເຄື່ອງບິນເພື່ອນໍາເຂົ້າລາຍຊື່ຈາກແຜ່ນ SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"ປິດ/ເປີດ ການນຳໃຊ້ PIN ຂອງ SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"ປ່ຽນລະຫັດ PIN ຂອງ SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN ຂອງ SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"ວາງສາຍ"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"ໂທກັບ"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"ຂໍ້ຄວາມ"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ເພື່ອໂທລະສັບ, ໃຫ້ປິດໂໝດຢູ່ເທິງຍົນກ່ອນ."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ປິດໂໝດເຄື່ອງບິນເພື່ອເຮັດການໂທ."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ປິດໂໝດເຄື່ອງບິນ ຫຼືເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"ບໍ່ໄດ້ລົງທະບຽນໃນເຄືອຂ່າຍ."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"ບໍ່ມີເຄືອຂ່າຍມືຖືທີ່ສາມາດໃຊ້ໄດ້."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ເຄືອຂ່າຍເຊລລູລາບໍ່ພ້ອມໃຊ້ງານ. ໃຫ້ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ເພື່ອທີ່ຈະໂທ, ປ້ອນເບີໂທທີ່ໃຊ້ໄດ້ເຂົ້າໄປ."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"ບໍ່ສາມາດໂທໄດ້."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"ກຳລັງເລີ່ມຕົ້ນລຳດັບ MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ບໍ່ສາມາດປະຊຸມສາຍໄດ້."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ບໍ່ສາມາດປະຕິເສດສາຍໂທໄດ້."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ບໍ່ສາມາດປ່ອຍສາຍໂທໄດ້."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ໂທສຸກເສີນ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ກຳລັງເປີດໃຊ້ວິທະຍຸ..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ບໍ່ມີການບໍລິການ. ກຳລັງລອງໃໝ່ອີກ…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"ເຂົ້າສູ່ໂໝດໂທກັບສຸກເສີນແລ້ວ"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ໂໝດໂທກັບສຸກເສີນ"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ປິດການເຊື່ອມຕໍ່ຂໍ້ມູນແລ້ວ"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"ບໍ່ສາມາດໃຊ້ການເຊື່ອມຕໍ່ຂໍ້ມູນໄດ້ເປັນເວລາ <xliff:g id="COUNT">%s</xliff:g> ນາທີ"</item>
- <item quantity="other" msgid="3122217344579273583">"ບໍ່ສາມາດເຊື່ອມຕໍ່ຂໍ້ມູນໄດ້ເປັນເວລາ <xliff:g id="COUNT">%s</xliff:g> ນາທີ"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ໂທລະສັບຈະຢູ່ໃນໂໝດການໂທກັບສຸກເສີນ ເປັນເວລາ <xliff:g id="COUNT">%s</xliff:g> ນາທີ. ໃນລະຫວ່າງທີ່ຢູ່ໃນໂໝດນີ້ ຈະບໍ່ມີແອັບຯໃດສາມາດໃຊ້ການເຊື່ອມຕໍ່ຂໍ້ມູນໄດ້. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ່?"</item>
- <item quantity="other" msgid="8617116564023933114">"ໂທລະສັບຈະຢູ່ໃນໂໝດການໂທກັບສຸກເສີນ ເປັນເວລາ <xliff:g id="COUNT">%s</xliff:g> ນາທີ. ໃນລະຫວ່າງທີ່ຢູ່ໃນໂໝດນີ້ ຈະບໍ່ມີແອັບພລິເຄຊັນໃດສາມາດໃຊ້ການເຊື່ອມຕໍ່ຂໍ້ມູນໄດ້. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ່?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"ການດຳເນີນການທີ່ເລືອກ ບໍ່ສາມາດໃຊ້ໄດ້ໃນຂະນະທີ່ຢູ່ໃນໂໝດໂທກັບສຸກເສີນ. ໂທລະສັບຈະຢູ່ໃນໂໝດນີ້ອີກ <xliff:g id="COUNT">%s</xliff:g> ນາທີ. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ່?"</item>
- <item quantity="other" msgid="6115622137771382224">"ການດຳເນີນການທີ່ເລືອກ ບໍ່ສາມາດໃຊ້ໄດ້ໃນຂະນະທີ່ຢູ່ໃນໂໝດໂທກັບສຸກເສີນ. ໂທລະສັບຈະຢູ່ໃນໂໝດນີ້ອີກ <xliff:g id="COUNT">%s</xliff:g> ນາທີ. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ່?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> ນາທີ</item>
+ <item quantity="one">ບໍ່ມີການເຊື່ອມຕໍ່ຂໍ້ມູນເປັນເວລາ <xliff:g id="COUNT_0">%s</xliff:g> ນາທີ</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">ໂທລະສັບຈະຢູ່ໃນໂໝດການໂທສຸກເສີນເປັນເວລາ <xliff:g id="COUNT_1">%s</xliff:g> ນາທີ. ໃນຂະນະທີ່ຢູ່ໃນໂໝດນີ້ ບໍ່ມີແອພພລິເຄຊັນທີ່ໃຊ້ການເຊື່ອມຕໍ່ຂໍ້ມູນທີ່ສາມາດໃຊ້ໄດ້. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ?</item>
+ <item quantity="one">ໂທລະສັບຈະຢູ່ໃນໂໝດການໂທສຸກເສີນເປັນເວລາ <xliff:g id="COUNT_0">%s</xliff:g> ນາທີ. ໃນຂະນະທີ່ຢູ່ໃນໂໝດນີ້ ບໍ່ມີແອັບທີ່ໃຊ້ການເຊື່ອມຕໍ່ຂໍ້ມູນທີ່ສາມາດໃຊ້ໄດ້. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">. ໂທລະສັບຈະຢູ່ໃນໂໝດນີ້ເປັນເວລາ <xliff:g id="COUNT_1">%s</xliff:g> ນາທີ. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ?</item>
+ <item quantity="one">ການດຳເນີນການທີ່ເລືອກໄວ້ ບໍ່ສາມາດໃຊ້ໄດ້ໃນຂະນະທີ່ຢູ່ໃນການໂທສຸກເສີນ. ໂທລະສັບຈະຢູ່ໃນໂໝດນີ້ເປັນເວລາ <xliff:g id="COUNT_0">%s</xliff:g> ນາທີ. ທ່ານຕ້ອງການອອກດຽວນີ້ບໍ?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"ການດຳເນີນການທີ່ເລືອກ ບໍ່ສາມາດໃຊ້ໄດ້ໃນຂະນະທີ່ຢູ່ໃນການໂທສຸກເສີນ."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"ກຳລັງອອກຈາກໂໝດໂທກັບສຸກເສີນ"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"ຕົກລົງ"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"ການໂທສຸກເສີນ"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"ການໂທສຸກເສີນເທົ່ານັ້ນ"</string>
<string name="sim_description_default" msgid="4778679519938775515">"ແຜ່ນ SIM, ຊ່ອງ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ການຊ່ວຍເຂົ້າເຖິງ"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ສາຍໂທເຂົ້າ Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ການໂທ Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ແຕະອີກເທື່ອນຶ່ງເພື່ອເປີດ"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"ມີຂໍ້ຜິດພາດໃນລະຫວ່າງຖອດລະຫັດຂໍ້ຄວາມດັ່ງກ່າວ."</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index b637b29..ccb3908 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefono paskyros"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Pridėti SIP paskyrą"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Paskyros nustatymų konfigūravimas"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"„Wi-Fi“ skambinimas"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"„Wi-Fi“ skambinimas"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Nenaudoti „Wi-Fi“ skambinimo"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Nenaudoti skambučių pagelbiklio"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Nėra"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigūruoti"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Įtaisytosios ryšio paslaugos"</string>
<string name="voicemail" msgid="8693759337917898954">"Balso paštas"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Balso paštas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"BP:"</string>
<string name="networks" msgid="8873030692174541976">"Tinklo operatoriai"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Avarinės transliacijos"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Veikiant tarptinkliniam ryšiui, prisijungti prie duomenų paslaugų"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Veikiant tarptinkliniam ryšiui, prisijungti prie duomenų paslaugų"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Ryšys su duomenimis nutrūko, nes iš pagrindinio tinklo išėjote neįjungę tarptinklinio ryšio."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Leisti naudoti duomenis, kai įjungtas tarptinklinis ryšys? Gali būti taikomi dideli mokesčiai."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Galite būti apmokestinti dideliais mokesčiais."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Leisti tarptinklinį duomenų ryšį?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM / UMTS parinktys"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA parinktys"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Duomenų naudojimas"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Nustatyti TTY režimą"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatinis bandymas iš naujo"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Įgalinti automatinio kartotinio bandymo režimą"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Vykstant vaizdo skambučiui negalima keisti TTY režimo"</string>
<string name="menu_add" msgid="1882023737425114762">"Pridėti adresatą"</string>
<string name="menu_edit" msgid="7143003705504672374">"Redaguoti adresatą"</string>
<string name="menu_delete" msgid="3977150783449642851">"Ištrinti adresatą"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Skaitoma iš SIM kortelės..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM kortelėje adresatų nėra."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Pasirinkti importuojamus adresatus"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Jei norite importuoti kontaktus iš SIM kortelės, pirmiausia išjunkite lėktuvo režimą."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Išjunkite lėktuvo režimą, kad galėtumėte importuoti kontaktus iš SIM kortelės."</string>
<string name="enable_pin" msgid="5422767284133234860">"Įgalinti / išjungti SIM kortelės PIN"</string>
<string name="change_pin" msgid="9174186126330785343">"Pakeisti SIM kortelės PIN kodą"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM kortelės PIN kodas:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Padėti ragelį"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Perskambinti"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Pranešimas"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Jei norite skambinti, išjunkite lėktuvo režimą."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Išjunkite lėktuvo režimą, kad galėtumėte skambinti."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Išjunkite lėktuvo režimą arba prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Neregistruota tinkle."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Korinis tinklas nepasiekiamas"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobiliojo ryšio tinklas nepasiekiamas. Prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Kad galėtumėte paskambinti, įveskite tinkamą numerį."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Nepavyko paskambinti."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Paleidžiama MMI seka..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Neįmanoma atlikti konferencinių skambučių."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nepavyko atmesti skambučio."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nepavyko atjungti skamb."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Skambutis pagalbos numeriu"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Įjungiamas radijas…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nėra ryšio. Bandoma dar kartą…"</string>
@@ -508,18 +514,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Įvestas atgalinio skambinimo pagalbos numeriu režimas"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Atgalinio skambinimo pagalbos numeriu režimas"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Duomenų ryšys išjungtas"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Jokio duomenų ryšio <xliff:g id="COUNT">%s</xliff:g> min."</item>
- <item quantity="other" msgid="3122217344579273583">"Jokio duomenų ryšio <xliff:g id="COUNT">%s</xliff:g> min."</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"<xliff:g id="COUNT">%s</xliff:g> min. telefonas veiks atgalinio skambinimo pagalbos numeriu režimu. Telefonui veikiant šiuo režimu, negalėsite naudoti jokių ryšio su duomenimis programų. Ar norite šį režimą išjungti dabar?"</item>
- <item quantity="other" msgid="8617116564023933114">"<xliff:g id="COUNT">%s</xliff:g> min. telefonas veiks atgalinio skambinimo pagalbos numeriu režimu. Telefonui veikiant šiuo režimu, negalėsite naudoti jokių ryšio su duomenimis programų. Ar norite šį režimą išjungti dabar?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Skambinant pagalbos telefonu pasirinkto veiksmo atlikti nepavyks. Šiuo režimu telefonas veiks <xliff:g id="COUNT">%s</xliff:g> min. Ar norite šį režimą išjungti dabar?"</item>
- <item quantity="other" msgid="6115622137771382224">"Skambinant atgalinio pagalbos numerio režimu pasirinkto veiksmo atlikti nepavyks. Šiuo režimu telefonas veiks <xliff:g id="COUNT">%s</xliff:g> min. Ar norite šį režimą išjungti dabar?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minutę</item>
+ <item quantity="few">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
+ <item quantity="many">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minutės</item>
+ <item quantity="other">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minučių</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutę. Įgalinus šį režimą negalima naudoti jokių programų, kurioms reikalingas duomenų ryšys. Norite dabar išeiti iš šio režimo?</item>
+ <item quantity="few">Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutes. Įgalinus šį režimą negalima naudoti jokių programų, kurioms reikalingas duomenų ryšys. Norite dabar išeiti iš šio režimo?</item>
+ <item quantity="many">Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutės. Įgalinus šį režimą negalima naudoti jokių programų, kurioms reikalingas duomenų ryšys. Norite dabar išeiti iš šio režimo?</item>
+ <item quantity="other">Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minučių. Įgalinus šį režimą negalima naudoti jokių programų, kurioms reikalingas duomenų ryšys. Norite dabar išeiti iš šio režimo?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Įgalinus pagalbos tarnybos atskambinimo režimą pasirinkto veiksmo atlikti negalima. Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutę. Norite dabar išeiti iš šio režimo?</item>
+ <item quantity="few">Įgalinus pagalbos tarnybos atskambinimo režimą pasirinkto veiksmo atlikti negalima. Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutes. Norite dabar išeiti iš šio režimo?</item>
+ <item quantity="many">Įgalinus pagalbos tarnybos atskambinimo režimą pasirinkto veiksmo atlikti negalima. Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutės. Norite dabar išeiti iš šio režimo?</item>
+ <item quantity="other">Įgalinus pagalbos tarnybos atskambinimo režimą pasirinkto veiksmo atlikti negalima. Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minučių. Norite dabar išeiti iš šio režimo?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Skambinant pagalbos numeriu pasirinkto veiksmo atlikti nepavyks."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Išeinama iš atgalinio skambinimo pagalbos numeriu režimo"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Taip"</string>
@@ -548,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Skambučiai pagalbos numeriu"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tik skambučiai pagalbos numeriu"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM kortelė, lizdas: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pritaikymas neįgaliesiems"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Gaunamasis „Wi-Fi“ skamb."</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"„Wi-Fi“ skambutis"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Palieskite dar kartą, kad atidarytumėte"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Iškoduojant pranešimą įvyko klaida."</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 651d8ea..f768f4a 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Tālruņa konti"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Pievienot SIP kontu"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konta iestatījumu konfigurēšana"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi zvani"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi zvani"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Neizmantot Wi-Fi zvanus"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Neizmantot zvanu palīgu"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Nav"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurēt"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Iebūvēts savienojuma izveides pakalpojums"</string>
<string name="voicemail" msgid="8693759337917898954">"Balss pasts"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Balss pasts (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"BP:"</string>
<string name="networks" msgid="8873030692174541976">"Tīkla operatori"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Ārkārtas paziņojumi"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Viesabonēšanas laikā izveidot savienojumu ar datu pakalpojumiem"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Viesabonēšanas laikā izveidot savienojumu ar datu pakalpojumiem"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Datu savienojamība ir zaudēta, jo mājas tīkls ar datu viesabonēšanu ir izslēgts."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Vai atļaut datu lietojumu viesabonēšanas laikā? Var tikt iekasēta ievērojama maksa."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Var rasties ievērojamas izmaksas."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Vai atļaut datu viesabonēšanu?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS opcijas"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA opcijas"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Datu lietojums"</string>
@@ -352,6 +354,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Iestatīt teletaipa režīmu"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automātisks atkārtots mēģinājums"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Iespējot automātiskā atkārtotā mēģinājuma režīmu"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Videozvana laikā nav atļauts mainīt teksta tālruņa režīmu."</string>
<string name="menu_add" msgid="1882023737425114762">"Pievienot kontaktpersonu"</string>
<string name="menu_edit" msgid="7143003705504672374">"Rediģēt kontaktpersonu"</string>
<string name="menu_delete" msgid="3977150783449642851">"Dzēst kontaktpersonu"</string>
@@ -375,7 +378,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Notiek lasīšana no SIM kartes..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM kartē nav nevienas kontaktpersonas."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Importējamo kontaktpersonu atlasīšana"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Lai importētu kontaktinformāciju no SIM kartes, vispirms izslēdziet lidojuma režīmu."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Lai importētu kontaktpersonas no SIM kartes, izslēdziet lidojuma režīmu."</string>
<string name="enable_pin" msgid="5422767284133234860">"Iespējot/atspējot SIM PIN"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN mainīšana"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -436,9 +439,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Pārtraukt"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Atzvanīt"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Ziņojums"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Lai veiktu zvanu, vispirms izslēdziet lidojuma režīmu."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Lai veiktu zvanu, izslēdziet lidojuma režīmu."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Lai veiktu zvanu, izslēdziet lidojuma režīmu vai izveidojiet savienojumu ar bezvadu tīklu."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Tīklā nav reģistrēts."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilais tīkls nav pieejams."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilais tīkls nav pieejams. Lai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Lai veiktu zvanu, ievadiet derīgu numuru."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Nevar veikt zvanu."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Notiek MMI secības startēšana…"</string>
@@ -449,6 +454,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nevar veikt konferences zvanus."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nevar noraidīt zvanu."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nevar pārtraukt zvanu(-us)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Lai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ārkārtas zvans"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Notiek radio ieslēgšana..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nav pakalpojuma. Notiek atkārtots mēģinājums…"</string>
@@ -510,18 +516,21 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ievadītais ārkārtas atzvana režīms"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Ārkārtas atzvana režīms"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datu savienojums ir atspējots."</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Nav datu savienojuma <xliff:g id="COUNT">%s</xliff:g> minūti"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> minūti(-es) nav datu savienojuma."</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Tālrunis ārkārtas atzvana režīmā atradīsies <xliff:g id="COUNT">%s</xliff:g> minūti. Lietojot šo režīmu, nevar izmantot nevienu lietotni, kurai nepieciešams datu savienojums. Vai vēlaties iziet tūlīt?"</item>
- <item quantity="other" msgid="8617116564023933114">"Tālrunis ārkārtas atzvana režīmā atradīsies <xliff:g id="COUNT">%s</xliff:g> minūti(-es). Lietojot šo režīmu, nevar izmantot nevienu lietojumprogrammu, kurai nepieciešams datu savienojums. Vai vēlaties iziet tūlīt?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Atlasītā darbība nav pieejama, izmantojot ārkārtas atzvana režīmu. Tālrunis šajā režīmā atradīsies <xliff:g id="COUNT">%s</xliff:g> minūti. Vai vēlaties iziet tūlīt?"</item>
- <item quantity="other" msgid="6115622137771382224">"Atlasītā darbība nav pieejama, izmantojot ārkārtas atzvana režīmu. Tālrunis šajā režīmā atradīsies <xliff:g id="COUNT">%s</xliff:g> minūti(-es). Vai vēlaties iziet tūlīt?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="zero"><xliff:g id="COUNT_1">%s</xliff:g> minūtes nav datu savienojuma</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> minūti nav datu savienojuma</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> minūtes nav datu savienojuma</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="zero">Tālrunī <xliff:g id="COUNT_1">%s</xliff:g> minūtes būs aktivizēts ārkārtas atzvana režīms. Šajā režīmā nevar izmantot lietotnes, kurās tiek lietots datu savienojums. Vai vēlaties to aizvērt tūlīt?</item>
+ <item quantity="one">Tālrunī <xliff:g id="COUNT_1">%s</xliff:g> minūti būs aktivizēts ārkārtas atzvana režīms. Šajā režīmā nevar izmantot lietotnes, kurās tiek lietots datu savienojums. Vai vēlaties to aizvērt tūlīt?</item>
+ <item quantity="other">Tālrunī <xliff:g id="COUNT_1">%s</xliff:g> minūtes būs aktivizēts ārkārtas atzvana režīms. Šajā režīmā nevar izmantot lietotnes, kurās tiek lietots datu savienojums. Vai vēlaties to aizvērt tūlīt?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="zero">Atlasītā darbība nav pieejama ārkārtas atzvana režīmā. Šis režīms tālrunī būs aktivizēts <xliff:g id="COUNT_1">%s</xliff:g> minūtes. Vai vēlaties to aizvērt tūlīt?</item>
+ <item quantity="one">Atlasītā darbība nav pieejama ārkārtas atzvana režīmā. Šis režīms tālrunī būs aktivizēts <xliff:g id="COUNT_1">%s</xliff:g> minūti. Vai vēlaties to aizvērt tūlīt?</item>
+ <item quantity="other">Atlasītā darbība nav pieejama ārkārtas atzvana režīmā. Šis režīms tālrunī būs aktivizēts <xliff:g id="COUNT_1">%s</xliff:g> minūtes. Vai vēlaties to aizvērt tūlīt?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Atlasītā darbība nav pieejama, veicot ārkārtas izsaukumu."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Notiek iziešana no ārkārtas atzvana režīma"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Jā"</string>
@@ -550,4 +559,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Ārkārtas izsaukumi"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tikai ārkārtas izsaukumi"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM karte, slots: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pieejamība"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Ienākošs Wi-Fi zvans"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi zvans"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Lai atvērtu, pieskarieties vēlreiz."</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Atšifrējot ziņojumu, radās kļūda."</string>
</resources>
diff --git a/res/values-mcc310-mnc004/config.xml b/res/values-mcc310-mnc004/config.xml
index bbe9e7b..198e65f 100755
--- a/res/values-mcc310-mnc004/config.xml
+++ b/res/values-mcc310-mnc004/config.xml
@@ -19,4 +19,7 @@
<resources>
<!-- Flag indicating if dtmf tone type is enabled -->
<bool name="support_swap_after_merge" translatable="false">false</bool>
+ <!-- Determine whether the voicemail notification is persistent in the notification bar.
+ If true, the voicemail notifications cannot be dismissed from the notification bar. -->
+ <bool name="voicemail_notification_persistent">true</bool>
</resources>
diff --git a/res/values-mcc310-mnc120/config.xml b/res/values-mcc310-mnc120/config.xml
index 7c269e0..93a8079 100644
--- a/res/values-mcc310-mnc120/config.xml
+++ b/res/values-mcc310-mnc120/config.xml
@@ -19,4 +19,7 @@
<resources>
<!-- Flag indicating if dtmf tone type is enabled -->
<bool name="dtmf_type_enabled">true</bool>
+ <!-- Determine whether the voicemail notification is persistent in the notification bar.
+ If true, the voicemail notifications cannot be dismissed from the notification bar. -->
+ <bool name="voicemail_notification_persistent">true</bool>
</resources>
diff --git a/res/values-mcc311-mnc480/config.xml b/res/values-mcc311-mnc480/config.xml
index 2b032d5..b7d0d6e 100755
--- a/res/values-mcc311-mnc480/config.xml
+++ b/res/values-mcc311-mnc480/config.xml
@@ -20,5 +20,8 @@
<!-- Flag indicating if dtmf tone type is enabled -->
<bool name="dtmf_type_enabled">true</bool>
<bool name="support_swap_after_merge" translatable="false">false</bool>
+ <!-- Determine whether the voicemail notification is persistent in the notification bar.
+ If true, the voicemail notifications cannot be dismissed from the notification bar. -->
+ <bool name="voicemail_notification_persistent">true</bool>
<bool name="support_pause_ims_video_calls" translatable="false">true</bool>
</resources>
diff --git a/res/values-mcc311-mnc490/config.xml b/res/values-mcc311-mnc490/config.xml
index 7c269e0..93a8079 100644
--- a/res/values-mcc311-mnc490/config.xml
+++ b/res/values-mcc311-mnc490/config.xml
@@ -19,4 +19,7 @@
<resources>
<!-- Flag indicating if dtmf tone type is enabled -->
<bool name="dtmf_type_enabled">true</bool>
+ <!-- Determine whether the voicemail notification is persistent in the notification bar.
+ If true, the voicemail notifications cannot be dismissed from the notification bar. -->
+ <bool name="voicemail_notification_persistent">true</bool>
</resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 40bc05d..55c7c9e 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Телефонски сметки"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Додајте сметка на СИП"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Конфигурирајте ги поставките на сметка"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Повикување преку Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Повикување преку Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Не користете повикување преку Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Не користете помошник за повикување"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Нема"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Конфигурирај"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Вградена услуга на поврзување"</string>
<string name="voicemail" msgid="8693759337917898954">"Говорна пошта"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Говорна пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ГП:"</string>
<string name="networks" msgid="8873030692174541976">"Оператори на мрежа"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Итни емитувања"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Поврзи се со податочни услуги во роаминг"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Поврзи се со податочни услуги во роаминг"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Изгубивте поврзување податоци зашто на вашата домашна мрежа исклучивте роаминг на податоци."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Да се дозволи користење податоци во роаминг? Може да важат високи трошоци."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Може да направите големи трошоци."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Дозволи роаминг на податоци?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Опции за GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Опции на CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Користење податоци"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Подеси режим TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Автоматски повторен обид"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Овозможи режим на автоматски повторен обид"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Промена на режим TTY не е дозволена за време на видеоповик"</string>
<string name="menu_add" msgid="1882023737425114762">"Додај контакт"</string>
<string name="menu_edit" msgid="7143003705504672374">"Уреди контакт"</string>
<string name="menu_delete" msgid="3977150783449642851">"Избриши контакт"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Се чита од СИМ картичка..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Нема контакти на вашата СИМ картичка."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Избери контакти за увоз"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"За да увезете контакти од СИМ картичката, прво исклучете режим на работа во авион."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Исклучете го авионскиот режим за да ги увезете контактите од СИМ-картичката."</string>
<string name="enable_pin" msgid="5422767284133234860">"Овозможи/оневозможи ПИН на СИМ"</string>
<string name="change_pin" msgid="9174186126330785343">"Промени ПИН на СИМ"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"ПИН на СИМ:"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Спушти"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Повикува назад"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Порака"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"За да воспоставите повик, прво исклучете режим на работа во авион."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Исклучете го авионскиот режим за да повикате."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Исклучете го авионскиот режим или поврзете се на безжична мрежа за да повикате."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Не е регистриран на мрежа."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Не е достапна мобилна мрежа."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Не е достапна мобилна мрежа. Поврзете се на безжична мрежа за да повикате."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"За да повикате, внесете важечки број."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Не може да повика."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Започнува MMI низа..."</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Не може да оствари конференциски повици."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Не може да отфрли повик."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Не може да реализира повик(ци)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Поврзете се на безжична мрежа за да повикате."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Повик за итни случаи"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Вклучување радио..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нема услуга. Се обидува повторно…"</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Влезе во режим на повратни повици во итни случаи"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим на повратни повици во итни случаи"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Врската со податоците е оневозможена"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Нема врска на податоци <xliff:g id="COUNT">%s</xliff:g> минута"</item>
- <item quantity="other" msgid="3122217344579273583">"Нема врска на податоци <xliff:g id="COUNT">%s</xliff:g> минути"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Телефонот ќе биде во режим на итни повратни повикувања <xliff:g id="COUNT">%s</xliff:g> минута. Додека е во овој режим не може да се користат апликации кои употребуваат врска со податоци. Дали сакате да излезете сега?"</item>
- <item quantity="other" msgid="8617116564023933114">"Телефонот ќе биде во режим на итни повратни повикувања <xliff:g id="COUNT">%s</xliff:g> минути. Додека е во овој режим не може да се користат апликации кои употребуваат врска со податоци. Дали сакате да излезете сега?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Избраното дејство не е достапно во режим за итни повратни повикувања. Телефонот ќе биде во овој режим <xliff:g id="COUNT">%s</xliff:g> минута. Дали сакате да излезете сега?"</item>
- <item quantity="other" msgid="6115622137771382224">"Избраното дејство не е достапно во режим за итни повратни повикувања. Телефонот ќе биде во овој режим <xliff:g id="COUNT">%s</xliff:g> минути. Дали сакате да излезете сега?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Нема врска на податоци <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
+ <item quantity="other">Нема врска на податоци <xliff:g id="COUNT_1">%s</xliff:g> минути</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Телефонот ќе биде во режим на итен повик <xliff:g id="COUNT_1">%s</xliff:g> минута. Кога е во овој режим, не може да се користат апликации што користат врска со податоци. Дали сакате да излезете сега?</item>
+ <item quantity="other">Телефонот ќе биде во режим на итен повик <xliff:g id="COUNT_1">%s</xliff:g> минути. Кога е во овој режим, не може да се користат апликации што користат врска со податоци. Дали сакате да излезете сега?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Избраното дејство не е достапно во режим на итен повик. Телефонот ќе биде во режим на итен повик <xliff:g id="COUNT_1">%s</xliff:g> минута. Дали сакате да излезете сега?</item>
+ <item quantity="other">Избраното дејство не е достапно во режим на итен повик. Телефонот ќе биде во режим на итен повик <xliff:g id="COUNT_1">%s</xliff:g> минути. Дали сакате да излезете сега?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Избраното дејство не е достапно при повик во итен случај."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Излегување од режим на повратен повик во итни случаи"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Да"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Итни повици"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Само итни повикувања"</string>
<string name="sim_description_default" msgid="4778679519938775515">"СИМ-картичка, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Пристапност"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Дојдовен повик преку Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Повик преку Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Допрете повторно за да отворите"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Настана грешка при дешифрирање на пораката."</string>
</resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index ee1ef2e..3942c52 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -57,16 +57,16 @@
<string name="labelCDMAMore" msgid="1630676740428229339">"CDMA കോൾ ക്രമീകരണങ്ങൾ"</string>
<string name="apn_settings" msgid="9043423184895642077">"ആക്സസ്സ് പോയിന്റ് പേരുകൾ"</string>
<string name="settings_label" msgid="3876743539816984008">"നെറ്റ്വർക്ക് ക്രമീകരണങ്ങൾ"</string>
- <string name="phone_accounts" msgid="6376603393888116364">"കോൾ ചെയ്യാനുള്ള അക്കൗണ്ടുകൾ"</string>
- <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ഇനിപ്പറയുന്നത് ഉപയോഗിച്ച് കോളുകൾ ചെയ്യുക"</string>
- <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ഇനിപ്പറയുന്നത് ഉപയോഗിച്ച് SIP കോളുകൾ ചെയ്യുക"</string>
- <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ആദ്യം ചോദിക്കുക"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"കോളുചെയ്യാനുള്ള അക്കൗണ്ട്"</string>
+ <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ഇത് ഉപയോഗിച്ച് കോളുചെയ്യുക"</string>
+ <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ഇതുപയോഗിച്ച് SIP കോളുചെയ്യുക"</string>
+ <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ആദ്യതവണ ചോദിക്കുക"</string>
<string name="phone_accounts_settings_header" msgid="4141710640883261094">"ക്രമീകരണങ്ങൾ"</string>
<string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"അക്കൗണ്ടുകൾ തിരഞ്ഞെടുക്കുക"</string>
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ഫോൺ അക്കൗണ്ടുകൾ"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP അക്കൗണ്ട് ചേർക്കുക"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"അക്കൗണ്ട് ക്രമീകരണങ്ങൾ കോൺഫിഗർചെയ്യുക"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi കോളിംഗ്"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi കോളിംഗ്"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi കോൾ ചെയ്യൽ ഉപയോഗിക്കരുത്"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"കോൾ സഹായി ഉപയോഗിക്കരുത്"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ഒന്നുമില്ല"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"കോൺഫിഗർ ചെയ്യുക"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"അന്തർ നിർമ്മിത കണക്ഷൻ സേവനം"</string>
<string name="voicemail" msgid="8693759337917898954">"വോയ്സ് മെയില്"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"വോയ്സ്മെയിൽ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"നെറ്റ്വർക്ക് ഓപ്പറേറ്റർമാർ"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"അടിയന്തര പ്രക്ഷേപണങ്ങൾ"</string>
@@ -157,7 +158,7 @@
<string name="not_allowed" msgid="5613353860205691579">"നിങ്ങളുടെ സിം കാർഡ് ഈ നെറ്റ്വർക്കിലേക്ക് ഒരു കണക്ഷൻ അനുവദിക്കുന്നില്ല."</string>
<string name="connect_later" msgid="2308119155752343975">"ഈ നെറ്റ്വർക്കിൽ ഇപ്പോൾ കണക്റ്റുചെയ്യാനാകുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."</string>
<string name="registration_done" msgid="495135664535876612">"ഒരു നെറ്റ്വർക്കിൽ രജിസ്റ്റർ ചെയ്തു."</string>
- <string name="sum_carrier_select" msgid="3494252551249882718">"ഒരു നെറ്റ്വർക്ക് ഓപ്പറേറ്റർ തിരഞ്ഞെടുക്കുക"</string>
+ <string name="sum_carrier_select" msgid="3494252551249882718">"ഒരു നെറ്റ്വർക്ക് ഓപ്പറേറ്ററെ തിരഞ്ഞെടുക്കുക"</string>
<string name="sum_search_networks" msgid="2921092249873272715">"ലഭ്യമായ എല്ലാ നെറ്റ്വർക്കുകൾക്കായും തിരയുക"</string>
<string name="select_automatically" msgid="5628402124471810174">"യാന്ത്രികമായി തിരഞ്ഞെടുക്കുക"</string>
<string name="sum_select_automatically" msgid="5614890115123292400">"താൽപ്പര്യമുള്ള നെറ്റ്വർക്ക് യാന്ത്രികമായി തിരഞ്ഞെടുക്കുക"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"റോമിംഗിലാകുമ്പോൾ ഡാറ്റ സേവനങ്ങളുമായി കണക്റ്റുചെയ്യുക"</string>
<string name="roaming_disable" msgid="1843417228755568110">"റോമിംഗിലാകുമ്പോൾ ഡാറ്റ സേവനങ്ങളുമായി കണക്റ്റുചെയ്യുക"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"നിങ്ങൾ ഡാറ്റ റോമിംഗ് ഓഫുചെയ്തതിനൊപ്പം നിങ്ങളുടെ ഹോം നെറ്റ്വർക്കും വിട്ടതിനാൽ നിങ്ങൾക്ക് ഡാറ്റ കണക്റ്റിവിറ്റി നഷ്ടപ്പെട്ടു."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"റോമിംഗിലായിരിക്കുമ്പോൾ ഡാറ്റ ഉപയോഗം അനുവദിക്കുക? നിശ്ചിത നിരക്കുകൾ ബാധകമായേക്കാം."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"നിങ്ങളിൽ നിന്ന് നിർദ്ദിഷ്ട നിരക്കുകൾ ഈടാക്കിയേക്കാം."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ഡാറ്റ റോമിംഗ് അനുവദിക്കണോ?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ഓപ്ഷനുകൾ"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA ഓപ്ഷനുകൾ"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"ഡാറ്റ ഉപയോഗം"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY മോഡ് സജ്ജമാക്കുക"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"യാന്ത്രികമായി വീണ്ടും ശ്രമിക്കുക"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"യാന്ത്രികമായി വീണ്ടും ശ്രമിക്കൽ മോഡ് പ്രവർത്തനക്ഷമമാക്കുക"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"വീഡിയോ കോൾ സമയത്ത് TTY മോഡ് മാറ്റം അനുവദനീയമല്ല"</string>
<string name="menu_add" msgid="1882023737425114762">"കോൺടാക്റ്റ് ചേർക്കുക"</string>
<string name="menu_edit" msgid="7143003705504672374">"കോൺടാക്റ്റ് എഡിറ്റുചെയ്യുക"</string>
<string name="menu_delete" msgid="3977150783449642851">"കോണ്ടാക്റ്റ് ഇല്ലാതാക്കുക"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"സിം കാർഡിൽ നിന്നും റീഡുചെയ്യുന്നു…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"നിങ്ങളുടെ സിം കാർഡിൽ കോൺടാക്റ്റുകളൊന്നുമില്ല."</string>
<string name="simContacts_title" msgid="1861472842524839921">"ഇമ്പോർറ്റുചെയ്യാനുള്ള കോൺടാക്റ്റുകൾ തിരഞ്ഞെടുക്കുക"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"സിം കാർഡിൽ നിന്നും കോൺടാക്റ്റുകൾ ഇമ്പോർട്ടുചെയ്യാൻ, ആദ്യം ഫ്ലൈറ്റ് മോഡ് ഓഫാക്കുക."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM കാർഡിൽ നിന്ന് കോൺടാക്റ്റുകൾ ഇമ്പോർട്ടുചെയ്യാൻ വിമാന മോഡ് ഓഫാക്കുക."</string>
<string name="enable_pin" msgid="5422767284133234860">"സിം പിൻ പ്രവർത്തനക്ഷമമാക്കുക/പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="change_pin" msgid="9174186126330785343">"സിം പിൻ മാറ്റുക"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"സിം പിൻ:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"ഹാംഗ് അപ്പ് ചെയ്യുക"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"കോൾബാക്ക്"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"സന്ദേശം"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ഒരു കോൾ വിളിക്കാൻ, ആദ്യം ഫ്ലൈറ്റ് മോഡ് ഓഫുചെയ്യുക."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക അല്ലെങ്കിൽ വയർലെസ്സ് നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"നെറ്റ്വർക്കിൽ രജിസ്റ്റർ ചെയ്തിട്ടില്ല."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"സെല്ലുലാർ നെറ്റ്വർക്ക് ലഭ്യമല്ല."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"സെല്ലുലാർ നെറ്റ്വർക്ക് ലഭ്യമല്ല. കോൾ വിളിക്കാൻ വയർലെസ്സ് നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ഒരു കോൾ ചെയ്യുന്നതിന്, സാധുതയുള്ള നമ്പർ നൽകുക."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"കോൾ ചെയ്യാനായില്ല."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI സീക്വൻസ് ആരംഭിക്കുന്നു…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"കോൺഫറൻസ് കോളുകൾ ചെയ്യാനായില്ല."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"കോൾ നിരസിക്കാനാവില്ല."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"കോൾ (കോളുകൾ) വിളിക്കാനാവില്ല."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ഒരു കോൾ വിളിക്കാൻ വയർലെസ്സ് നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"അടിയന്തര കോൾ"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"റേഡിയോ ഓൺ ചെയ്യുന്നു…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"സേവനമൊന്നുമില്ല. വീണ്ടും ശ്രമിക്കുന്നു…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"അടിയന്തര കോൾബാക്ക് മോഡിൽ പ്രവേശിച്ചു"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"അടിയന്തര കോൾബാക്ക് മോഡ്"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ഡാറ്റ കണക്ഷൻ പ്രവർത്തനരഹിതമാക്കി"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഡാറ്റ കണക്ഷൻ ലഭ്യമല്ല"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഡാറ്റ കണക്ഷൻ ലഭ്യമല്ല"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ഫോൺ <xliff:g id="COUNT">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് അടിയന്തര കോൾബാക്ക് മോഡിലായിരിക്കും. ഈ മോഡിലായിരിക്കുമ്പോൾ, ഒരു ഡാറ്റ കണക്ഷൻ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകളൊന്നും ഉപയോഗിക്കാനാകില്ല. ഇപ്പോൾ പുറത്തുകടക്കണോ?"</item>
- <item quantity="other" msgid="8617116564023933114">"ഫോൺ <xliff:g id="COUNT">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് അടിയന്തര കോൾബാക്ക് മോഡിലായിരിക്കും. ഈ മോഡിലായിരിക്കുമ്പോൾ, ഒരു ഡാറ്റ കണക്ഷൻ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകളൊന്നും ഉപയോഗിക്കാനാകില്ല. ഇപ്പോൾ പുറത്തുകടക്കണോ?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"അടിയന്തര കോൾബാക്ക് മോഡിലായിരിക്കുമ്പോൾ തിരഞ്ഞെടുത്ത പ്രവർത്തനം ലഭ്യമല്ല. ഫോൺ <xliff:g id="COUNT">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഈ മോഡിലായിരിക്കും. ഇപ്പോൾ പുറത്തുകടക്കണോ?"</item>
- <item quantity="other" msgid="6115622137771382224">"അടിയന്തര കോൾബാക്ക് മോഡിലായിരിക്കുമ്പോൾ തിരഞ്ഞെടുത്ത പ്രവർത്തനം ലഭ്യമല്ല. ഫോൺ <xliff:g id="COUNT">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഈ മോഡിലായിരിക്കും. ഇപ്പോൾ പുറത്തുകടക്കണോ?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഡാറ്റ കണക്ഷൻ ലഭ്യമല്ല</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഡാറ്റ കണക്ഷൻ ലഭ്യമല്ല</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> മിനിറ്റിനുള്ളിൽ ഫോൺ അടിയന്തര കോൾബാക്ക് മോഡിലാകും. ഈ മോഡിലാകുമ്പോൾ ഡാറ്റ കണക്ഷൻ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകളൊന്നും ഉപയോഗിക്കാനാവില്ല. നിങ്ങൾക്കിപ്പോൾ പുറത്തുപോകണോ?</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> മിനിറ്റിനുള്ളിൽ ഫോൺ അടിയന്തര കോൾബാക്ക് മോഡിലാകും. ഈ മോഡിലാകുമ്പോൾ ഡാറ്റ കണക്ഷൻ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകളൊന്നും ഉപയോഗിക്കാനാവില്ല. നിങ്ങൾക്കിപ്പോൾ പുറത്തുപോകണോ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">അടിയന്തര കോൾബാക്ക് മോഡിലായിരിക്കുമ്പോൾ തിരഞ്ഞെടുത്ത പ്രവർത്തനമൊന്നും ലഭ്യമാകില്ല. <xliff:g id="COUNT_1">%s</xliff:g> മിനിറ്റിനുള്ളിൽ ഫോൺ ഈ മോഡിലാകും. നിങ്ങൾക്കിപ്പോൾ പുറത്തുപോകണോ?</item>
+ <item quantity="one">അടിയന്തര കോൾബാക്ക് മോഡിലായിരിക്കുമ്പോൾ തിരഞ്ഞെടുത്ത പ്രവർത്തനമൊന്നും ലഭ്യമാകില്ല. <xliff:g id="COUNT_0">%s</xliff:g> മിനിറ്റിനുള്ളിൽ ഫോൺ ഈ മോഡിലാകും. നിങ്ങൾക്കിപ്പോൾ പുറത്തുപോകണോ?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"അടിയന്തര കോളിലായിരിക്കുമ്പോൾ തിരഞ്ഞെടുത്ത പ്രവർത്തനം ലഭ്യമാകില്ല."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"നിലവിലെ അടിയന്തര കോൾബാക്ക് മോഡ്"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"വേണം"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"അടിയന്തിര കോളുകൾ"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"അടിയന്തിര കോൾചെയ്യൽ മാത്രം"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM കാർഡ്, സ്ലോട്ട്: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"പ്രവേശനക്ഷമത"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ഇൻകമിംഗ് Wi-Fi കോൾ"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi കോൾ"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"തുറക്കുന്നതിന് വീണ്ടും സ്പർശിക്കുക"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"സന്ദേശം ഡീകോഡുചെയ്യുമ്പോൾ ഒരു പിശകുണ്ടായി."</string>
</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 1b84b7b..14b084b 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Гар утасны акаунт"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP акаунт нэмэх"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Акаунтын тохиргоог хийх"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi дуудлага"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi дуудлага"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi дуудлагыг бүү ашигла"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Дуудлагын туслагчийг бүү ашигла"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Байхгүй"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Тохируулах"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Суурилагдсан холболтын үйлчилгээ"</string>
<string name="voicemail" msgid="8693759337917898954">"Дуут шуудан"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Дуут шуудан ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ДШ:"</string>
<string name="networks" msgid="8873030692174541976">"Сүлжээний операторууд"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Онцгой байдлын нэвтрүүлэг"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Роумингтэй үед дата үйлчилгээнд холбогдох"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Роумингтэй үед дата үйлчилгээнд холбогдох"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Та төрөлх сүлжээнээс дата роумингыг унтраагаад гарсан тул дата холболтоо алдлаа."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Чөлөөтэй хандах үед өгөгдөл ашиглахыг зөвшөөрөх үү? Төлбөрийн хэмжээ харьцангуй их гарахыг анхаарна уу."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Таны төлбөр өндөр гарах магадлалтайг анхааруулж байна."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Дата роуминг үйлчилгээг идэвхжүүлэх үү?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Тохиргоо"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA Тохиргоо"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Дата ашиглалт"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY төлвийг тохируулах"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Автоматаар дахин оролдох"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Автоматаар дахин оролдох төлвийг идэвхжүүлэх"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Видео дуудлагын үед TTY горимыг өөрчилж үл болно"</string>
<string name="menu_add" msgid="1882023737425114762">"Харилцагч нэмэх"</string>
<string name="menu_edit" msgid="7143003705504672374">"Харилцагчийг засварлах"</string>
<string name="menu_delete" msgid="3977150783449642851">"Харилцагч устгах"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM картаас уншиж байна…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Таны SIM картанд харилцагчид байхгүй байна."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Оруулах харилцагчдыг сонгоно уу"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Харилцагчдыг SIM картаас оруулахын тулд Нислэгийн төлвийг унтраана уу."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Сим картнаас дугаар импортлохын тулд онгоцны горимыг унтраа"</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN Идэвхжүүлэх/идэвхгүйжүүлэх"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN өөрчлөх"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Таслах"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Буцааж залгах"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Зурвас"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Дуудлага хийхийн тулд юуны өмнө Нислэгийн төлвийг идэвхгүйжүүлнэ үү."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Дуудлага хийхийн тулд онгоцны горимыг унтраа."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Дуудлага хийхийн тулд онгоцны горимыг унтраа эсвэл утасгүй интернетэд холбогдоно уу."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Сүлжээнд бүртгэгдээгүй."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Үүрэн сүлжээ байхгүй."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Үүрэн сүлжээнд холбогдох боломжгүй байна. Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Дуудлага хийхийн тулд хүчин төгөлдөр дугаар оруулна уу."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Дуудлага хийх боломжгүй байна."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI дарааллыг эхлүүлж байна…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Утсан хурал хийх боломжгүй."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Дуудлага татгалзах боломжгүй байна."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Дуудлага чөлөөлөх боломжгүй байна."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ослын дуудлага"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радиог асааж байна…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ажиллагаагүй байна. Дахин оролдоно уу..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ослын Дуудлага хүлээн авах төлөвт орлоо"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Ослын Дуудлага хүлээн авах Төлөв"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Дата холболтыг идэвхгүйжүүлсэн"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Дата холболт <xliff:g id="COUNT">%s</xliff:g> минутын турш байхгүй"</item>
- <item quantity="other" msgid="3122217344579273583">"Өгөгдлийн сүлжээ <xliff:g id="COUNT">%s</xliff:g> минутын турш байхгүй"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Утас Ослын Дуудлага хүлээн авах төлөвт <xliff:g id="COUNT">%s</xliff:g> минут байх болно. Энэ төлөвт өгөгдлийн сүлжээ ашигладаг ямар ч апп-г ашиглах боломжгүй. Энэ төлвөөс одоо гаргах уу?"</item>
- <item quantity="other" msgid="8617116564023933114">"Утас Ослын Дуудлага хүлээн авах төлөвт <xliff:g id="COUNT">%s</xliff:g> минут байх болно. Энэ төлөвт өгөгдлийн сүлжээ ашигладаг ямар ч аппликешнийг ашиглах боломжгүй. Энэ төлвөөс одоо гаргах уу?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Сонгосон үйлдлийг Ослын Дуудлага хүлээн авах төлөвт гүйцэтгэх боломжгүй. Утас энэ төлөвт <xliff:g id="COUNT">%s</xliff:g> минут байх болно. Энэ төлвөөс одоо гаргах уу?"</item>
- <item quantity="other" msgid="6115622137771382224">"Сонгосон үйлдлийг Ослын Дуудлага хүлээн авах төлөвт гүйцэтгэх боломжгүй. Утас энэ төлөвт <xliff:g id="COUNT">%s</xliff:g> минут байх болно. Энэ төлвөөс одоо гаргах уу?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Интернет <xliff:g id="COUNT_1">%s</xliff:g> минут тасарсан байна</item>
+ <item quantity="one">Интернет <xliff:g id="COUNT_0">%s</xliff:g> минут тасарсан байна</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Таны гар утас яаралтай түргэн тусламжийн дуудлагын хэлбэрт<xliff:g id="COUNT_1">%s</xliff:g> минут байна. Энэ горимд байгаа тохиолдолд интернет холболт ашигладаг ямар ч програмыг ашиглаж үл болно. Та гарахыг хүсэж байна уу?</item>
+ <item quantity="one">Таны гар утас яаралтай түргэн тусламжийн дуудлагын хэлбэрт <xliff:g id="COUNT_0">%s</xliff:g> минут байна. Энэ горимд байгаа тохиолдолд интернет холболт ашигладаг ямар ч програмыг ашиглаж үл болно. Та гарахыг хүсэж байна уу?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Сонгосон үйлдлийг яаралтай түргэн тусламжийн горимд байгаа үед ашиглах боломжгүй. Таны гар утас энэ горимд <xliff:g id="COUNT_1">%s</xliff:g> минут байх болно. Та гарахыг хүсэж байна уу?</item>
+ <item quantity="one">Сонгосон үйлдлийг яаралтай түргэн тусламжийн горимд байгаа үед ашиглах боломжгүй. Таны гар утас энэ горимд <xliff:g id="COUNT_0">%s</xliff:g> минут байх болно. Та гарахыг хүсэж байна уу?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Сонгосон үйлдлийг ослын дуудлагын үед гүйцэтгэх боломжгүй."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Ослын Дуудлага хүлээн авах төлвөөс гарч байна"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Тийм"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Яаралтай дуудлага"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Зөвхөн яаралтай дуудлага"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM карт, оролт: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Хандалт"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Орж ирсэн Wi-Fi дуудлага"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi дуудлага"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Нээхийн тулд дахин хүрнэ үү"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Зурвасын кодыг тайлах явцад алдаа гарсан."</string>
</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 32330d0..83706c4 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -57,7 +57,7 @@
<string name="labelCDMAMore" msgid="1630676740428229339">"CDMA कॉल सेटिंग्ज"</string>
<string name="apn_settings" msgid="9043423184895642077">"प्रवेश बिंदू नावे"</string>
<string name="settings_label" msgid="3876743539816984008">"नेटवर्क सेटिंग्ज"</string>
- <string name="phone_accounts" msgid="6376603393888116364">"कॉल करणे खाती"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"कॉल करण्याची खाती"</string>
<string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"यासह कॉल करा"</string>
<string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"यासह SIP कॉल करा"</string>
<string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"प्रथम विचारा"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"फोन खाती"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP खाते जोडा"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"खाते सेटिंग्ज कॉन्फिगर करा"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"वाय-फाय कॉल करणे"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"वाय-फाय कॉलिंग"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"वाय-फाय कॉल करणे वापरू नका"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"कॉल सहाय्यक वापरू नका"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"काहीही नाही"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"कॉन्फिगर करा"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"अंगभूत कनेक्शन सेवा"</string>
<string name="voicemail" msgid="8693759337917898954">"व्हॉइसमेल"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"व्हॉइसमेल (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"नेटवर्क ऑपरेटर"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"आणीबाणी प्रसारणे"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"रोमिंग असताना डेटा सेवांना कनेक्ट करा"</string>
<string name="roaming_disable" msgid="1843417228755568110">"रोमिंग असताना डेटा सेवांना कनेक्ट करा"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"आपण डेटा रोमिंग बंद करून आपले होम नेटवर्क सोडल्यामुळे आपण डेटा कनेक्टिव्हिटी गमावली आहे."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"रोमिंग असताना डेटा वापरास अनुमती द्यायची? लक्षणीय शुल्क लागू शकतात."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"आपल्याला लक्षणीय रोमिंग शुल्क लागू शकते."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"डेटा रोमिंगला अनुमती द्यायची?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS पर्याय"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA पर्याय"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"डेटा वापर"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY मोड सेट करा"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"स्वयं-पुन्हा प्रयत्न करा"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"स्वयं-पुन्हा प्रयत्न करा मोड सक्षम करा"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"व्हिहिओ कॉल दरम्यान TTY मोड बदलास अनुमती नाही"</string>
<string name="menu_add" msgid="1882023737425114762">"संपर्क जोडा"</string>
<string name="menu_edit" msgid="7143003705504672374">"संपर्क संपादित करा"</string>
<string name="menu_delete" msgid="3977150783449642851">"संपर्क हटवा"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"सिक कार्डमधून वाचत आहे..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"आपल्या सिम कार्डवर कोणतेही संपर्क नाहीत."</string>
<string name="simContacts_title" msgid="1861472842524839921">"आयात करण्यासाठी संपर्क निवडा"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"सिम कार्ड वरून संपर्क आयात करण्यासाठी, प्रथम विमान मोड बंद करा."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"सिम कार्डमधील संपर्क आयात करण्यासाठी विमान मोड बंद करा."</string>
<string name="enable_pin" msgid="5422767284133234860">"सिम पिन सक्षम करा/अक्षम करा"</string>
<string name="change_pin" msgid="9174186126330785343">"सिम पिन बदला"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"सिम पिन"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"हँग अप"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"पुन्हा कॉल करा"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"संदेश"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"कॉल करण्यासाठी, प्रथम विमान मोड बंद करा."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"कॉल करण्यासाठी विमान मोड बंद करा."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"कॉल करण्यासाठी विमान मोड बंद करा किंवा वायरलेस नेटवर्कशी कनेक्ट करा."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"नेटवर्कवर नोंदणीकृत नाही."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"सेल्युलर नेटवर्क उपलब्ध नाही."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"सेल्युलर नेटवर्क उपलब्ध नाही. कॉल करण्यासाठी वायरलेस नेटवर्कशी कनेक्ट करा."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"कॉल करण्यासाठी, एक वैध नंबर प्रविष्ट करा."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"कॉल करू शकत नाही."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI क्रम प्रारंभ करीत आहे..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"परिषद कॉल करण्यात अक्षम."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"कॉल नाकारू शकत नाही."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कॉल रिलीझ करू शकत नाही."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"कॉल करण्यासाठी वायरलेस नेटवर्कशी कनेक्ट करा."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आणीबाणीचा कॉल"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडिओ चालू करीत आहे..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"सेवा नाही. पुन्हा प्रयत्न करत आहे…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"आणीबाणी कॉलबॅक मोड प्रविष्ट केला"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"आणीबाणी कॉलबॅक मोड"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"डेटा कनेक्शन अक्षम केले"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> मिनिटासाठी कोणतेही डेटा कनेक्शन नाही"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> मिनिटांसाठी कोणतेही डेटा कनेक्शन नाही"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"फोन <xliff:g id="COUNT">%s</xliff:g> मिनिटासाठी आणीबाणी कॉलबॅक मोडमध्ये असेल. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अॅप्स वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?"</item>
- <item quantity="other" msgid="8617116564023933114">"फोन <xliff:g id="COUNT">%s</xliff:g> मिनिटांसाठी आणीबाणी कॉलबॅक मोडमध्ये असेल. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अनुप्रयोग वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"आणीबाणी कॉलबॅक मोडमध्ये असताना निवडलेली क्रिया उपलब्ध नाही. फोन <xliff:g id="COUNT">%s</xliff:g> मिनिटासाठी या मोडमध्ये असेल. आपण आता बाहेर पडू इच्छिता?"</item>
- <item quantity="other" msgid="6115622137771382224">"आणीबाणी कॉलबॅक मोडमध्ये असताना निवडलेली क्रिया उपलब्ध नाही. फोन <xliff:g id="COUNT">%s</xliff:g> मिनिटांसाठी या मोडमध्ये असेल. आपण आता बाहेर पडू इच्छिता?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> मिनिटासाठी कोणतेही डेटा कनेक्शन नाही</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> मिनिटांसाठी कोणतेही डेटा कनेक्शन नाही</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटासाठी आणीबाणी कॉलबॅक मोडमध्ये राहील. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अनुप्रयोग वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?</item>
+ <item quantity="other">फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटांसाठी आणीबाणी कॉलबॅक मोडमध्ये राहील. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अनुप्रयोग वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">आणीबाणी कॉलबॅक मोडमध्ये असताना निवडलेली क्रिया उपलब्ध नसते. फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटासाठी या मोडमध्ये राहील. आपण आता बाहेर पडू इच्छिता?</item>
+ <item quantity="other">आणीबाणी कॉलबॅक मोडमध्ये असताना निवडलेली क्रिया उपलब्ध नसते. फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटांसाठी या मोडमध्ये राहील. आपण आता बाहेर पडू इच्छिता?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"आणीबाणीच्या कॉलमध्ये असताना निवडलेली क्रिया उपलब्ध नसते."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"आणीबाणी कॉलबॅक मोडमधून बाहेर पडत आहे"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"होय"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"आणीबाणी कॉल"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"केवळ आणीबाणी कॉल करणे"</string>
<string name="sim_description_default" msgid="4778679519938775515">"सिम कार्ड, स्लॉट: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"प्रवेशयोग्यता"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"येणारा वाय-फाय कॉल"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"वाय-फाय कॉल"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"उघडण्यासाठी पुन्हा स्पर्श करा"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"संदेश डीकोड करताना एक त्रुटी आली."</string>
</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 600eb98..f12d4d1 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Akaun telefon"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Tambah akaun SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurasi tetapan akaun"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Panggilan Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Panggilan Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Jangan gunakan panggilan Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Jangan gunakan pembantu panggilan"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Tiada"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurasi"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Perkhidmatan sambungan terbina dalam"</string>
<string name="voicemail" msgid="8693759337917898954">"Mel suara"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Mel suara (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Pengendali rangkaian"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Siaran kecemasan"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Sambung ke perkhidmatan data apabila melakukan perayauan"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Bersambung ke perkhidmatan data semasa melakukan perayauan"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Anda telah kehilangan kesambungan data kerana anda meninggalkan rangkaian rumah anda dengan data perayauan dimatikan."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Benarkan penggunaan data semasa perayauan? Caj yang tinggi mungkin dikenakan."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Anda boleh dikenakan caj yang ketara."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Benarkan perayauan data?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Pilihan GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Pilihan CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Penggunaan data"</string>
@@ -330,7 +332,7 @@
<string name="cdma_lte_data_service" msgid="4255018217292548962">"Penyediaan perkhidmatan data"</string>
<string name="carrier_settings_title" msgid="9028166176523012300">"Tetapan pembawa"</string>
<string name="fdn" msgid="7878832555095183202">"Nombor Dailan Tetap"</string>
- <string name="fdn_with_label" msgid="187084204115493366">"Nombor Pendailan Tetap (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Nombor Dailan Tetap (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="manage_fdn_list" msgid="8777755791892122369">"Senarai FDN"</string>
<string name="fdn_list_with_label" msgid="7437232552210469217">"Senarai FDN (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="fdn_activation" msgid="2156479741307463576">"Pengaktifan FDN"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Tetapkan mod TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Autocuba Semula"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Dayakan mod Autocuba Semula"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Pertukaran mod TTY tidak dibenarkan semasa panggilan video"</string>
<string name="menu_add" msgid="1882023737425114762">"Tambah kenalan"</string>
<string name="menu_edit" msgid="7143003705504672374">"Edit kenalan"</string>
<string name="menu_delete" msgid="3977150783449642851">"Padamkan kenalan"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Membaca dari kad SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Tiada kenalan pada kad SIM anda."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Pilih kenalan untuk diimport"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Untuk mengimport kenalan dari kad SIM, mula-mula matikan mod Pesawat."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Matikan mod pesawat untuk mengimport kenalan daripada kad SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Dayakan/lumpuhkan PIN SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Tukar PIN SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Letakkan gagang"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Panggil balik"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mesej"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Untuk membuat panggilan, matikan mod Pesawat terlebih dahulu."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Matikan mod pesawat untuk membuat panggilan."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Matikan mod pesawat atau sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Tidak didaftarkan pada rangkaian."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Rangkaian selular tidak tersedia."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Rangkaian selular tidak tersedia. Sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Untuk membuat panggilan, masukkan nombor yang sah."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Tidak dapat memanggil."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Memulakan jujukan MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Tidak boleh membuat panggilan sidang."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Tidak dapat menolak panggilan."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Tidak dapat melepaskan panggilan."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Panggilan kecemasan"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Menghidupkan radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Tiada perkhidmatan. Mencuba lagi..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Telah Memasuki Mod Panggil Balik Kecemasan"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mod Paggil Balik Kecemasan"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Sambungan data dilumpuhkan"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Tiada sambungan data selama <xliff:g id="COUNT">%s</xliff:g> minit"</item>
- <item quantity="other" msgid="3122217344579273583">"Tiada sambungan data selama <xliff:g id="COUNT">%s</xliff:g> minit"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon akan berada dalam mod Panggilan Balik Kecemasan untuk <xliff:g id="COUNT">%s</xliff:g> minit. Semasa dalam mod ini tiada sebarang aplikasi yang menggunakan sambungan data boleh digunakan. Adakah anda mahu keluar sekarang?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon akan berada dalam mod Panggilan Balik Kecemasan untuk <xliff:g id="COUNT">%s</xliff:g> minit. Semasa dalam mod ini tiada sebarang aplikasi yang menggunakan sambungan data boleh digunakan. Adakah anda mahu keluar sekarang?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Tindakan yang dipilih tidak tersedia dalam mod Panggilan Balik Kecemasan. Telefon akan berada dalam mod ini untuk <xliff:g id="COUNT">%s</xliff:g> minit. Adakah anda mahu keluar sekarang?"</item>
- <item quantity="other" msgid="6115622137771382224">"Tindakan yang dipilih tidak tersedia dalam mod Panggilan Balik Kecemasan. Telefon akan berada dalam mod ini untuk <xliff:g id="COUNT">%s</xliff:g> minit. Adakah anda mahu keluar sekarang?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Tiada sambungan data selama <xliff:g id="COUNT_1">%s</xliff:g> minit</item>
+ <item quantity="one">Tiada sambungan data selama <xliff:g id="COUNT_0">%s</xliff:g> minit</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Telefon akan berada dalam mod Panggilan Balik Kecemasan selama <xliff:g id="COUNT_1">%s</xliff:g> minit. Semasa berada dalam mod ini tiada aplikasi yang menggunakan sambungan data boleh digunakan. Adakah anda mahu keluar sekarang?</item>
+ <item quantity="one">Telefon akan berada dalam mod Panggilan Balik Kecemasan selama <xliff:g id="COUNT_0">%s</xliff:g> seminit. Semasa berada dalam mod ini tiada apl yang menggunakan sambungan data boleh digunakan. Adakah anda mahu keluar sekarang?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Tindakan yang dipilih tidak tersedia semasa berada dalam mod Panggilan Balik Kecemasan. Telefon akan berada dalam mod ini selama <xliff:g id="COUNT_1">%s</xliff:g> minit. Adakah anda mahu keluar sekarang?</item>
+ <item quantity="one">Tindakan yang dipilih tidak tersedia semasa berada dalam mod Panggilan Balik Kecemasan. Telefon akan berada dalam mod ini selama <xliff:g id="COUNT_0">%s</xliff:g> minit. Adakah anda mahu keluar sekarang?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Tindakan yang dipilih tidak tersedia semasa berada dalam panggilan kecemasan."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Keluar Daripada mod Panggil Balik Kecemasan"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ya"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Panggilan kecemasan"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Panggilan kecemasan sahaja"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Kad SIM, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Kebolehaksesan"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Panggilan Wi-Fi masuk"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Panggilan Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Sentuh lagi untuk membuka"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Terdapat ralat semasa menyahkodkan mesej."</string>
</resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 0cb93bf..ab96987 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -23,7 +23,7 @@
<string name="fdnListLabel" msgid="8630418672279521003">"FDN အမှတ်စဉ်"</string>
<string name="unknown" msgid="6878797917991465859">"အကြောင်းအရာ မသိရှိ"</string>
<string name="private_num" msgid="6713286113000232309">"လျို့ဝှက် နံပါတ်"</string>
- <string name="payphone" msgid="4793877574636445118">"ငွေပေးရသည့်ဖုန်း"</string>
+ <string name="payphone" msgid="4793877574636445118">"ငွေပေးရသည့်ဖုန်း"</string>
<string name="onHold" msgid="9035493194749959955">"ခဏ ကိုင်ထားစဉ်"</string>
<string name="mmiStarted" msgid="6347869857061147003">"MMIကုတ်နံပါတ်ကို စတင်ပြီးပါပြီ"</string>
<string name="ussdRunning" msgid="485588686340541690">"USSD ကုဒ် လုပ်ဆောင်နေပါသည်…"</string>
@@ -47,7 +47,7 @@
<string name="add_vm_number_str" msgid="4676479471644687453">"နံပါတ်ထပ်ထည့်ရန်"</string>
<string name="puk_unlocked" msgid="2284912838477558454">"သင့် ဆင်းမ်ကဒ်အား ပိတ်ဆို့မှုကို ဖယ်ရှားပြီးပါပြီ။ သင့်ဖုန်းဟာ သော့ဖွင့်နေပါသည်…"</string>
<string name="label_ndp" msgid="780479633159517250">"ဆင်းမ်ကဒ် ကွန်ရက် သော့ဖွင့်သော ပင်နံပါတ်"</string>
- <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ဖွင့်ရန်"</string>
+ <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ဖွင့်ရန်"</string>
<string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"လွှတ်လိုက်သည်"</string>
<string name="requesting_unlock" msgid="6412629401033249351">"ကွန်ယက်သော့ဖွင့်ခြင်း တောင်းဆိုနေပါသည်…"</string>
<string name="unlock_failed" msgid="6490531697031504225">"ကွန်ယက်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ"</string>
@@ -55,9 +55,9 @@
<string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ဒီအသုံးပြုသူ အတွက် မိုဘိုင်း ကွန်ရက် ဆက်တင်များ မရှိ"</string>
<string name="labelGSMMore" msgid="5930842194056092106">"ဂျီအက်စ်အမ် ခေါ်ဆိုမှု ဆက်တင်"</string>
<string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ဖုန်းခေါ်ဆိုမှု ဆက်တင်"</string>
- <string name="apn_settings" msgid="9043423184895642077">"ချိတ်ဆက်သောပွိုင့်အမည်များ"</string>
+ <string name="apn_settings" msgid="9043423184895642077">"ချိတ်ဆက်သောပွိုင့်အမည်များ"</string>
<string name="settings_label" msgid="3876743539816984008">"ကွန်ရက် ဆက်တင်များ"</string>
- <string name="phone_accounts" msgid="6376603393888116364">"ခေါ်ဆိုသော အကောင့်များ"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"ခေါ်ဆိုသော အကောင့်များ"</string>
<string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ဖြင့် ခေါ်ဆိုမှုများပြုလုပ်မည်"</string>
<string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ဖြင့် SIP ခေါ်ဆိုမှုများ ပြုလုပ်မည်"</string>
<string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"အရင်မေးပါ"</string>
@@ -66,58 +66,59 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ဖုန်းအကောင့်များ"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP အကောင့်ပေါင်းထည့်မည်။"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"အကောင့် ချိန်ညှိချက်များ ပြုပြင်မည်"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"ကြိုးမဲ့ ခေါ်ဆိုမှု"</string>
- <string name="wifi_calling_do_not_use" msgid="7491443219113013323">"ကြိုးမဲ့ ခေါ်ဆိုမှုကို မသုံးပါနှင့်"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"ဝိုင်ဖိုင် ခေါ်ဆိုမှု"</string>
+ <string name="wifi_calling_do_not_use" msgid="7491443219113013323">"ကြိုးမဲ့ ခေါ်ဆိုမှုကို မသုံးပါနှင့်"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"ခေါ်ဆိုမှု အကူ အသုံးမပြုပါ"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"မရှိ"</string>
<string name="wifi_calling_call_assistant" msgid="229102032881680320">"ခေါ်ဆိုမှု အကူ"</string>
<string name="wifi_calling_use_call_assistant" msgid="8460024827012666199">"ခေါ်ဆိုမှု အကူအသုံးပြုမည်"</string>
<string name="wifi_calling_select_call_assistant" msgid="9296558058772293">"ခေါ်ဆိုမှုအကူ ရွေးချယ်မည်"</string>
- <string name="wifi_calling_select_call_assistant_summary" msgid="164985727137156474">"ခေါ်ဆိုရန် အသုံးပြုသည့် ကွန်ရက်များကို စီမံကွပ်ကဲရန်"</string>
+ <string name="wifi_calling_select_call_assistant_summary" msgid="164985727137156474">"ခေါ်ဆိုရန် အသုံးပြုသည့် ကွန်ရက်များကို စီမံကွပ်ကဲရန်"</string>
<string name="wifi_calling_use_call_assistant_summary" msgid="6599987137133339698">"ခေါ်ဆိုမှုအတွက် အသုံးပြုမည့် ကွန်ရကန်များအား app များသို့မဟုတ် ဝန်ဆောင်မှုများကို စီမံစေမည်"</string>
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"ပုံပေါ်စေသည်"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"တပ်ဆင်ပြီး ချိတ်ဆက်ရေး ဝန်ဆောင်မှု"</string>
<string name="voicemail" msgid="8693759337917898954">"အသံစာပို့စနစ်"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"အသံစာပို့စနစ် ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"အသံစာပို့နစ်အမှတ် -"</string>
<string name="networks" msgid="8873030692174541976">"ကွန်ရက် အော်ပရေတာများ"</string>
- <string name="cell_broadcast_settings" msgid="8740238216690502563">"အရေးပေါ် ထုတ်လွှင့်မှုများ"</string>
+ <string name="cell_broadcast_settings" msgid="8740238216690502563">"အရေးပေါ် ထုတ်လွှင့်မှုများ"</string>
<string name="call_settings" msgid="6112441768261754562">"ခေါ်ဆိုခြင်း အဆင်အပြင်များ"</string>
<string name="additional_gsm_call_settings" msgid="1391795981938800617">"ပိုမိုသော အပြင်အဆင်များ"</string>
<string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"နောက်ထပ် ချိန်ညှိချက်များ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="sum_gsm_call_settings" msgid="4076647190996778012">"GSM ခေါ်ဆိုမှုအတွက်သာ ဖြည့်စွက်အပြင်အဆင်"</string>
+ <string name="sum_gsm_call_settings" msgid="4076647190996778012">"GSM ခေါ်ဆိုမှုအတွက်သာ ဖြည့်စွက်အပြင်အဆင်"</string>
<string name="additional_cdma_call_settings" msgid="8628958775721886909">"ပိုမိုသော CDMA ခေါ်ဆိုမှု အပြင်အဆင်"</string>
- <string name="sum_cdma_call_settings" msgid="284753265979035549">"CDMA ခေါ်ဆိုမှုအတွက်သာ ဖြည့်စွက်အပြင်အဆင်"</string>
+ <string name="sum_cdma_call_settings" msgid="284753265979035549">"CDMA ခေါ်ဆိုမှုအတွက်သာ ဖြည့်စွက်အပြင်အဆင်"</string>
<string name="labelNwService" msgid="4699970172021870983">"ကွန်ရက် ဝန်ဆောင်မှု ဆက်တင်"</string>
<string name="labelCallerId" msgid="3888899447379069198">"ခေါ်ဆိုသူအိုင်ဒီ"</string>
<string name="sum_loading_settings" msgid="1826692909391168620">"ဆက်တင်များကို ကြည့်ရှုရန် လုပ်နေပါသည်…"</string>
<string name="sum_hide_caller_id" msgid="1071407020290873782">"အထွက်ဖုန်းများတွင် နံပါတ်ဖျောက်ထားပါ"</string>
<string name="sum_show_caller_id" msgid="6768534125447290401">"အထွက်ဖုန်းများတွင် နံပါတ်မြင်ရသည်"</string>
<string name="sum_default_caller_id" msgid="1954518825510901365">"အထွက်ခေါ်ဆိုခြင်းများတွင် မိမိနံပါတ်အားပြသရန် ဝန်ဆောင်မှုပေးသူ၏ ပုံသေ ဆက်တင်ကို အသုံးပြုပါ"</string>
- <string name="labelCW" msgid="6120513814915920200">"ခေါ်ဆိုမှု စောင့်ဆိုင်းခြင်း"</string>
+ <string name="labelCW" msgid="6120513814915920200">"ခေါ်ဆိုမှု စောင့်ဆိုင်းခြင်း"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"ဖုန်းပြောနေစဉ် အဝင်ခေါ်ဆိုမှုရှိပါက အသိပေးပါ"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"ဖုန်းပြောနေစဉ် အဝင်ခေါ်ဆိုမှုရှိပါက အသိပေးပါ"</string>
<string name="call_forwarding_settings" msgid="3378927671091537173">"ဖုန်းခေါ်ဆိုမှု ထပ်မံလွှဲပြောင်းခြင်း အပြင်အဆင်"</string>
<string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"ခေါ်ဆိုမှု ထပ်ဆင့်ပို့ခြင်း ချိန်ညှိချက်များ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="labelCF" msgid="2574386948026924737">"အဝင်ခေါ်ဆိုမှုအား ထပ်ဆင့်ပို့ခြင်း"</string>
+ <string name="labelCF" msgid="2574386948026924737">"အဝင်ခေါ်ဆိုမှုအား ထပ်ဆင့်ပို့ခြင်း"</string>
<string name="labelCFU" msgid="8147177368148660600">"အမြဲတမ်း ထပ်ဆင့်ပို့ပါ"</string>
<string name="messageCFU" msgid="3560082430662923687">"ဤနံပါတ်ကို အမြဲသုံးပါ"</string>
- <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"ခေါ်ဆိုမှုအားလုံးအား တဆင့်ထပ်ပို့နေသည်"</string>
- <string name="sum_cfu_enabled" msgid="2450052502198827927">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအားလုံးအား တဆင့်ထပ်ပို့နေသည်"</string>
+ <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"ခေါ်ဆိုမှုအားလုံးအား တဆင့်ထပ်ပို့နေသည်"</string>
+ <string name="sum_cfu_enabled" msgid="2450052502198827927">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအားလုံးအား တဆင့်ထပ်ပို့နေသည်"</string>
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"ဖုန်းနံပါတ်မှာ မရှိပါ"</string>
<string name="sum_cfu_disabled" msgid="8384177689501334080">"ပိတ်ထားရန်"</string>
<string name="labelCFB" msgid="6139853033106283172">"မအားလပ်ချိန်"</string>
<string name="messageCFB" msgid="3711089705936187129">"ဖုန်းမအားလျှင် ပို့ရန် နံပါတ်"</string>
- <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအား တဆင့်ထပ်ပို့နေသည်"</string>
+ <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအား တဆင့်ထပ်ပို့နေသည်"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"ပိတ်ထားရန်"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"သင့် ဖုန်း အလုပ်များနေစဉ် call forwarding ပြုလုပ်မှု ပယ်ဖျက်ရန် သင့် အော်ပရေတာမှ ခွင့်မပြုပါ"</string>
<string name="labelCFNRy" msgid="1736067178393744351">"ဖုန်းမကိုင်ချိန်"</string>
<string name="messageCFNRy" msgid="672317899884380374">"ဖုန်းမကိုင်လျှင်ပို့ရန် နံပါတ်"</string>
- <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအား တဆင့်ထပ်ပို့နေသည်"</string>
+ <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအား တဆင့်ထပ်ပို့နေသည်"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"ပိတ်ထားရန်"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"သင့် ဖုန်း မကိုင်စဉ် call forwarding ပြုလုပ်မှု ပယ်ဖျက်ရန် သင့် အော်ပရေတာမှ ခွင့်မပြုပါ"</string>
<string name="labelCFNRc" msgid="2614827454402079766">"ဆက်သွယ်၍ မရချိန်"</string>
<string name="messageCFNRc" msgid="6380695421020295119">"ဖုန်းခေါ်မရလျှင် ပို့ရန် နံပါတ်"</string>
- <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအား တဆင့်ထပ်ပို့နေသည်"</string>
+ <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအား တဆင့်ထပ်ပို့နေသည်"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"သုံးမရအောင် ပိတ်ထားခြင်း"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"သင့် ဖုန်း ဆက်သွယ်မှု လုပ်လို့မရစဉ် call forwarding ပြုလုပ်မှု ပယ်ဖျက်ရန် သင့် အော်ပရေတာမှ ခွင့်မပြုပါ"</string>
<string name="updating_title" msgid="6146755386174019046">"ခေါ်ဆိုခြင်း အဆင်အပြင်များ"</string>
@@ -196,15 +197,16 @@
<item msgid="1524224863879435516">"GSM သာ"</item>
<item msgid="3817924849415716259">"GSM/WCDMA preferred"</item>
</string-array>
- <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"မြှင့်တင်ထား 4G LTE မုဒ်"</string>
+ <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"မြှင့်တင်ထား 4G LTE မုဒ်"</string>
<string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"အသံခေါ်ဆိုမှုနှင့် အခြားဆက်သွယ်ရေးများ တိုးတက်စေရန် LTE ဝန်ဆောင်မှုများ ကိုအသုံးပြုမည် (အကြံပြုထား)"</string>
- <string name="data_enabled" msgid="5972538663568715366">"ဒေတာ ဖွင့်ထားပြီး"</string>
- <string name="data_enable_summary" msgid="2382798156640007971">"ဒေတာ သုံးစွဲမှု ခွင့်ပြုရန်"</string>
+ <string name="data_enabled" msgid="5972538663568715366">"ဒေတာ ဖွင့်ထားပြီး"</string>
+ <string name="data_enable_summary" msgid="2382798156640007971">"ဒေတာ သုံးစွဲမှု ခွင့်ပြုရန်"</string>
<string name="roaming" msgid="8871412572928323707">"ဒေတာရုန်းမင်း"</string>
<string name="roaming_enable" msgid="7331106985174381987">"ရုန်းမင်းပြုလုပ်နေစဉ် ဒေတာဝန်ဆောင်မှုများကို ဆက်သွယ်ခြင်း"</string>
<string name="roaming_disable" msgid="1843417228755568110">"ရုန်းမင်းပြုလုပ်နေစဉ် ဒေတာဝန်ဆောင်မှုများကို ဆက်သွယ်ခြင်း"</string>
- <string name="roaming_reenable_message" msgid="8913735676127858115">"ဒေတာဆက်သွယ်မှုပြတ်တောက်သွားပါသည် အဘယ်ကြောင့်ဆိုသော် သင့်အိမ်၏ကွန်ယက်မှထွက်ကာ ဒေတာရုန်းမင်းကွန်ယက်ကိုလဲပိတ်ထားသောကြောင့်ဖြစ်သည်"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"ရွမ်မင်းသုံးချိန်တွင် ဒေတာအသုံးပြုမှု ခွင့်ပြုမလား? သိသာသည့် ကုန်ကျမှုများ ရှိမည်ဖြစ်ပါသည်။"</string>
+ <string name="roaming_reenable_message" msgid="8913735676127858115">"ဒေတာဆက်သွယ်မှုပြတ်တောက်သွားပါသည် အဘယ်ကြောင့်ဆိုသော် သင့်အိမ်၏ကွန်ယက်မှထွက်ကာ ဒေတာရုန်းမင်းကွန်ယက်ကိုလဲပိတ်ထားသောကြောင့်ဖြစ်သည်"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"သိသာသည့် ငွေနူန်းထားသင့်အား ကျသင့်နိုင်ပါသည်။"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ကွန်ရက်ပြင်ပဒေတာအသုံးပြုခြင်း ခွင့်ပြုမည်လား?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ရွေးချယ်မှုများ"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA ရွေးချယ်စရာများ"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"ဒေတာအသုံးပြုမှု"</string>
@@ -217,7 +219,7 @@
<string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> အမြင့်ဆုံး ကျော်လွန်\nဒေတာနှုန်း <xliff:g id="USED_1">%2$d</xliff:g> Kb/s သို့လျှော့ချလိုက်သည်"</string>
<string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ကုန်ဆုံးပြီး \n နောက်သတ်မှတ်ကာလစရန် <xliff:g id="USED_1">%2$d</xliff:g> ရက်(<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
<string name="throttle_rate_subtext" msgid="2149102656120726855">"ဒေတာအသုံးပြုမှု သတ်မှတ်ချက်ထက်ကျော်လွန်ပါက ဒေတာမြန်နှုန်းဟာ <xliff:g id="USED">%1$d</xliff:g> Kb/s သို့လျှော့ချပါမည်"</string>
- <string name="throttle_help_subtext" msgid="3633091498168446044">"သင့် အတွက် စီမံပေးသူ၏ မိုဘိုင်ကွန်ရက် ဒေတာအသုံးပြုမှု မူဝါဒ အကြောင်း အချက်အလက်များကို ပိုမိုသိရှိရန်"</string>
+ <string name="throttle_help_subtext" msgid="3633091498168446044">"သင့် အတွက် စီမံပေးသူ၏ မိုဘိုင်ကွန်ရက် ဒေတာအသုံးပြုမှု မူဝါဒ အကြောင်း အချက်အလက်များကို ပိုမိုသိရှိရန်"</string>
<string name="cell_broadcast_sms" msgid="5584192824053625842">"စာတိုများ ဖြန့်ဝေခြင်းစနစ် စာတိုသည်"</string>
<string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"စာတိုများ ဖြန့်ဝေခြင်းစနစ် စာတို"</string>
<string name="cell_bc_sms_enable" msgid="6441688565738921084">"စာတိုများ ဖြန့်ဝေခြင်းစနစ် စာတို ကို ဖွင့်ထား"</string>
@@ -329,7 +331,7 @@
<string name="cdma_activate_device" msgid="3793805892364814518">"စက်ကို အက်တီဗိတ် လုပ်ရန်"</string>
<string name="cdma_lte_data_service" msgid="4255018217292548962">"ဒေတာဝန်ဆောင်မှု စတင်ရန်"</string>
<string name="carrier_settings_title" msgid="9028166176523012300">"ဖုန်းလိုင်းဝန်ဆောင်မှုပေးသူ၏ အပြင်အဆင်"</string>
- <string name="fdn" msgid="7878832555095183202">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်များ"</string>
+ <string name="fdn" msgid="7878832555095183202">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်များ"</string>
<string name="fdn_with_label" msgid="187084204115493366">"အထိုင်ဖုန်းနံပါတ် (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="manage_fdn_list" msgid="8777755791892122369">"FDN စာရင်း"</string>
<string name="fdn_list_with_label" msgid="7437232552210469217">"FDN စာရင်း (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -341,7 +343,7 @@
<string name="change_pin2" msgid="2153563695382176676">"ပင်နံပါတ်၂ ကို ပြောင်းရန်"</string>
<string name="enable_fdn_ok" msgid="7215588870329688132">"FDN ကို ပယ်ဖျက်ရန်"</string>
<string name="disable_fdn_ok" msgid="5727046928930740173">"FDN ကို သုံးနိုင်ရန်"</string>
- <string name="sum_fdn" msgid="1959399454900272878">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားကြီးကြပ်သည်"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားကြီးကြပ်သည်"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN သုံးစွဲမှုအတွက် ပင် နံပါတ်ပြောင်းပါ"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"ဖုန်းနံပါတ်စာရင်းကို ကြီးကြပ်ရန်"</string>
<string name="voice_privacy" msgid="3776841382844614716">"အသံလုံခြုံရေး"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"တယ်လီဖုန်းဖြင့် စာရိုက်ခြင်း သတ်မှတ်ပါ"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"အလိုအလျောက် ပြန်ကြိုးစားခြင်း"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"အလိုအလျောက် ပြန်ကြိုးစားခြင်းအား ပြုလုပ်ထားခြင်း"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ဗီဒီယိုခေါ်ဆိုမှုအတွင်း TTY မုဒ်ပြောင်းလဲရန် ခွင့်မပြုပါ"</string>
<string name="menu_add" msgid="1882023737425114762">"လိပ်စာထပ်ထည့်ပါ"</string>
<string name="menu_edit" msgid="7143003705504672374">"လိပ်စာပြင်ပါ"</string>
<string name="menu_delete" msgid="3977150783449642851">"လိပ်စာဖျက်ပါ"</string>
@@ -357,23 +360,23 @@
<string name="name" msgid="7329028332786872378">"အမည်"</string>
<string name="number" msgid="7905950798349903858">"နံပါတ်"</string>
<string name="save" msgid="4094274636321939086">"သိမ်းဆည်းသည်"</string>
- <string name="add_fdn_contact" msgid="2481915899633353976">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားထည့်သည်"</string>
- <string name="adding_fdn_contact" msgid="7627379633721940991">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားထည့်နေသည်"</string>
+ <string name="add_fdn_contact" msgid="2481915899633353976">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားထည့်သည်"</string>
+ <string name="adding_fdn_contact" msgid="7627379633721940991">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားထည့်နေသည်"</string>
<string name="fdn_contact_added" msgid="7458335758501736665">"ပုံသေခေါ်ဆိုမှု နံပါတ် ထပ်ထည့်ပြီး"</string>
- <string name="edit_fdn_contact" msgid="7976936035587081480">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားပြင်သည်"</string>
- <string name="updating_fdn_contact" msgid="8370929876849803600">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အား အဆင့်မြှင့်နေသည်"</string>
+ <string name="edit_fdn_contact" msgid="7976936035587081480">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားပြင်သည်"</string>
+ <string name="updating_fdn_contact" msgid="8370929876849803600">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အား အဆင့်မြှင့်နေသည်"</string>
<string name="fdn_contact_updated" msgid="5497828782609005017">"ပုံသေခေါ်ဆိုမှု နံပါတ် ပြင်ဆင်ပြီး"</string>
- <string name="delete_fdn_contact" msgid="6668958073074151717">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားဖျက်သည်"</string>
- <string name="deleting_fdn_contact" msgid="5669163206349319969">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားဖျက်နေသည်"</string>
+ <string name="delete_fdn_contact" msgid="6668958073074151717">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားဖျက်သည်"</string>
+ <string name="deleting_fdn_contact" msgid="5669163206349319969">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားဖျက်နေသည်"</string>
<string name="fdn_contact_deleted" msgid="7154162327112259569">"ပုံသေ ခေါ်ဆိုမှု နံပါတ် ဖျက်ပြီး"</string>
- <string name="pin2_invalid" msgid="5470854099230755944">"ပင်နံပါတ် မမှန်သောကြောင့် FDNကို အဆင့်မြှင့်တင်ခြင်းမပြုလုပ်နိုင်ပါ"</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"ပင်နံပါတ် မမှန်သောကြောင့် FDNကို အဆင့်မြှင့်တင်ခြင်းမပြုလုပ်နိုင်ပါ"</string>
<string name="fdn_invalid_number" msgid="1494755047900009147">"နံပါတ် အလုံးရေ (၂၀) ထက် ရှည်လို့ မရသောကြောင့် FDN ကို မပြင်ဆင်ဖြစ်ပါ"</string>
<string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ပြောင်းလဲမှု မဖြစ်ပါ။ ပင်နံပါတ် ၂ မှားယွင်းခြင်း သို့မဟုတ် ဖုန်းနံပါတ်ကို ငြင်းဖယ်ခံရခြင်း တစ်ခုခုဖြစ်ပါသည်"</string>
<string name="fdn_failed" msgid="540018079008319747">"FDN လုပ်ဆောင်ချက် မအောင်မြင်ပါ"</string>
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"ဆင်းမ်ကဒ်မှ ဖတ်နေပါသည်..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"ဆင်းမ်ကဒ်ထဲတွင် လိပ်စာများ မရှိပါ"</string>
<string name="simContacts_title" msgid="1861472842524839921">"ထည့်ယူရန် လိပ်စာများ ရွေးပါ"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ဆင်းမ်ကဒ်ထဲမှာ လိပ်စာများ ယူထည့်ရန် အရင်ဆုံး လေယာဉ်ပေါ်အသုံးပြုမှု စနစ်အား ပိတ်ပါ"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM ကဒ်မှ အဆက်အသွယ်များ သွင်းယူရန် လေယာဉ်ပျံမုဒ် ပိတ်ထားပါ။"</string>
<string name="enable_pin" msgid="5422767284133234860">"ဆင်းမ် ပင်နံပါတ်ကို ပယ်ဖျက်၊ပြုလုပ်ရန်"</string>
<string name="change_pin" msgid="9174186126330785343">"ဆင်းမ်ကဒ် ပင်နံပါတ်ပြောင်းရန်"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"ဆင်းမ်ကဒ် ပင်နံပါတ်:"</string>
@@ -434,10 +437,12 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"ဖုန်းချလိုက်ပါပြီ"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"ပြန်ခေါ်ပါ"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"စာတို"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ဖုန်းခေါ်ဆိုမှုပြုရန်, လေယာဥ်ပျံပေါ်အသုံးပြုသောစနစ်ကို ပိတ်ပါ"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ဖုန်းခေါ်ရန် လေယာဉ်ပျံမုဒ် ပိတ်ထားပါ။"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ဖုန်းခေါ်ရန် လေယာဉ်ပျံမုဒ် ပိတ်ပါ သို့မဟုတ် ကြိုးမဲ့ကွန်ယက်သို့ ချိတ်ဆက်ပါ။"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"ကွန်ယက်ပေါ်မှာ မှတ်ပုံတင်မှု မပြုလုပ်ထားပါ"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"ဆယ်လူလာ ကွန်ရက် မရှိပါ။"</string>
- <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ဖုန်းခေါ်ရန်အတွက်၊ သင့်လျော်သည့်နံပါတ် ရိုက်ထည့်ပါ။"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ဆဲလူလာ ကွန်ယက် မရပါ။ ဖုန်းခေါ်ရန် ကြိုးမဲ့ကွန်ယက်သို့ ချိတ်ဆက်ပါ။"</string>
+ <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ဖုန်းခေါ်ရန်အတွက်၊ သင့်လျော်သည့်နံပါတ် ရိုက်ထည့်ပါ။"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"မခေါ်ဆိုနိုင်ပါ။"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI အမှတ်စဉ်ကို စတင်နေပါသည်…"</string>
<string name="incall_error_supp_service_unknown" msgid="655570339115407698">"ဤဝန်ဆောင်မှုအား မပံ့ပိုးပါ။"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ကွန်းဖရင့် ပြုလုပ်၍ မရပါ"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ဖုန်းခေါ်ခြင်းအား မငြင်းဆိုနိုင်ပါ။"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ဖုန်းခေါ်ခြင်း(များ)အား လွှတ်မပေးနိုင်ပါ။"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ဖုန်းခေါ်ရန် ကြိုးမဲကွန်ယက်တစ်ခုသို့ ချိတ်ဆက်ပါ။"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"အရေးပေါ်ခေါ်ဆိုမှု"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ရေဒီယို ဖွင့်နေစဉ်…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ဝန်ဆောင်မှု မရှိပါ။ ထပ်မံကြိုးစားပါ…"</string>
@@ -457,7 +463,7 @@
<string name="onscreenEndCallText" msgid="4403855834875398585">"ပြီးပါပြီ"</string>
<string name="onscreenShowDialpadText" msgid="8561805492659639893">"နံပါတ်ကွက်"</string>
<string name="onscreenMuteText" msgid="5011369181754261374">"အသံတိတ်"</string>
- <string name="onscreenAddCallText" msgid="5140385634712287403">"ဖုန်းခေါ်မှု ထပ်ထည့်ပါ"</string>
+ <string name="onscreenAddCallText" msgid="5140385634712287403">"ဖုန်းခေါ်မှု ထပ်ထည့်ပါ"</string>
<string name="onscreenMergeCallsText" msgid="6640195098064538950">"ဖုန်းခေါ်မှုများကို ပူးပေါင်းသည်"</string>
<string name="onscreenSwapCallsText" msgid="1602990689244030047">"လဲပြောင်းသည်"</string>
<string name="onscreenManageCallsText" msgid="5473231160123254154">"ဖုန်းခေါ်မှုကို ကြီးကြပ်သည်"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"အရေးပေါ်ပြန်လည်ခေါ်ဆိုမှုအား ရိုက်သွင်းပြီး"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"အရေးပေါ်ပြန်လည်ခေါ်ဆိုမှု"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ဒေတာဆက်သွယ်မှု မရှိပါ"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> မိနစ် ဒေတာဆက်သွယ်မှု မရှိပါ။"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> မိနစ် ဒေတာဆက်သွယ်မှု မရှိပါ။"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ဖုန်းဟာ အရေးပေါ်ပြန်ခေါ်ရေး အခြေအနေမှာ <xliff:g id="COUNT">%s</xliff:g> မိနစ် ဖြစ်နေပါမည်။ ဒီအခြေအနေမှာ ရှိနေစဉ် ဒေတာ သုံးစွဲသော အပ်ပလီကေးရှင်းများ အသုံးပြုလို့ မရပါ။ ဒီကနေ ထွက်ချင်ပါသလား?"</item>
- <item quantity="other" msgid="8617116564023933114">"ဖုန်းဟာ အရေးပေါ်ပြန်ခေါ်ရေး အခြေအနေမှာ <xliff:g id="COUNT">%s</xliff:g> မိနစ် ဖြစ်နေပါမည်။ ဒီအခြေအနေမှာ ရှိနေစဉ် ဒေတာ သုံးစွဲသော အပ်ပလီကေးရှင်းများ အသုံးပြုလို့ မရပါ။ ဒီကနေ ထွက်ချင်ပါသလား?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"ရွေးချယ်သော အပြုအမူဟာ အရေးပေါ် ပြန်ခေါ်မှု အခြေအနေမှာ မပြုလုပ်နိုင်ပါ။ ဖုန်းဟာ ဒီအခြေအနေမှာ <xliff:g id="COUNT">%s</xliff:g> မိနစ် ရှိနေမှာ ဖြစ်ပါသည်။ ဒီကနေ ထွက်ချင်ပါသလား?"</item>
- <item quantity="other" msgid="6115622137771382224">"ရွေးချယ်သော အပြုအမူဟာ အရေးပေါ် ပြန်ခေါ်မှု အခြေအနေမှာ မပြုလုပ်နိုင်ပါ။ ဖုန်းဟာ ဒီအခြေအနေမှာ <xliff:g id="COUNT">%s</xliff:g> မိနစ် ရှိနေမှာ ဖြစ်ပါသည်။ ဒီကနေ ထွက်ချင်ပါသလား?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"> ဒေတာဆက်သွယ်မှု <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်မရှိပါ</item>
+ <item quantity="one"> ဒေတာဆက်သွယ်မှု <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်မရှိပါ</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other"> ဖုန်းသည် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် app များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား? </item>
+ <item quantity="one"> ဖုန်းသည် <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် app များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other"> ရွေးချယ်ထားသော အပြုအမူမှာ အရေပေါ်ခေါ်ဆိုမှုပြုလုပ်နေစဉ် မရှိနိုင်ပါ။ ဖုန်းသည်ဤ မုဒ်တွင် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်ရှိနေမည်ဖြစ်သည်။ ယခုထွက်လိုပါသလား?</item>
+ <item quantity="one"> အရေးပေါ် ပြန်လည်ခေါ်ဆိုခြင်းမုဒ်တွင် ရွေးချယ်သည့် လုပ်ရပ်မလုပ်ဆောင်နိုင်ပါ။ ဖုန်းသည်ဤ မုဒ်တွင် <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်ရှိနေမည်ဖြစ်သည်။ ယခုထွက်လိုပါသလား?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"ရွေးချယ်ထားသော အပြုအမူမှာ အရေပေါ်ခေါ်ဆိုမှုပြုလုပ်နေစဉ် မရှိနိုင်ပါ"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"အရေးပေါ်ပြန်လည်ခေါ်ဆိုမှု အခြေအနေအား ထွက်ပါမည်"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"ဟုတ်သည်"</string>
@@ -538,14 +544,19 @@
<string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"တုန်ခါခြင်း"</string>
<string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"တုန်ခါခြင်း"</string>
<string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"အသံ"</string>
- <string name="dial_pad_autocomplete" msgid="7683489952557536398">"နံပါတ်ကွက် အလိုအလျောက်ဖြည့်ရန်"</string>
+ <string name="dial_pad_autocomplete" msgid="7683489952557536398">"နံပါတ်ကွက် အလိုအလျောက်ဖြည့်ရန်"</string>
<string name="preference_category_ringtone" msgid="5197960752529332721">"ဖုန်းမြည်သံ & တုန်ခါသံ"</string>
<string name="pstn_connection_service_label" msgid="1743245930577325900">"တပ်ဆင်ပြီး ဆင်းမ် ကဒ်များ"</string>
- <string name="enable_video_calling_title" msgid="7237253660669000899">"ဗီဒီယို ခေါ်ဆိုမှုများကို ဖွင့်ထားရန်"</string>
+ <string name="enable_video_calling_title" msgid="7237253660669000899">"ဗီဒီယို ခေါ်ဆိုမှုများကို ဖွင့်ထားရန်"</string>
<string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"ဗွီဒီယို ခေါ်ဆိုမှု ဖွင့်ရန်၊ မြှင့်ထားသည့် 4G LTE မုဒ်ကို ကွန်ရက် ချိိန်ညှိချက်များတွင် ဖွင့်ပေးရပါမည်။"</string>
<string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"ကွန်ရက် ဆက်တင်များ"</string>
<string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"ပိတ်ရန်"</string>
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"အရေးပေါ် ခေါ်ဆိုမှုများ"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"အရေးပေါ် ခေါ်ဆိုမှုသာလျှင်"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM ကဒ်၊ အပေါက်: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ရယူသုံးနိုင်မှု"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ဝင်လာသော ဝိုင်ဖိုင်ခေါ်ဆိုမှု"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ဝိုင်ဖိုင်ခေါ်ဆိုမှု"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ဖွင့်ရန် ထပ်ပြီး ထိပါ"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"စာကို ကုဒ်ဖွင့်နေစဉ် အမှားရှိခဲ့သည်။"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 0258a24..554c929 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonkontoer"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Legg til SIP-konto"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurer kontoinnstillingene"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi-anrop"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi-anrop"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ikke bruk Wi-Fi for å ringe"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ikke bruk ringeassistenten"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ingen"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurer"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Innebygd tilkoblingstjeneste"</string>
<string name="voicemail" msgid="8693759337917898954">"Telefonsvarer"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Talpostkasse (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Svarer:"</string>
<string name="networks" msgid="8873030692174541976">"Nettoperatører"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Nødvarsler"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Koble til datatjenester ved roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Koble til datatjenester ved roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Du har mistet datatilkoblingen fordi du forlot hjemmenettet med roaming avslått."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Vil du tillate databruk ved roaming? Dette kan medføre betydelige kostnader."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Det kan medføre betydelige kostnader."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Vil du tillate roaming?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS-innstillinger"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-innstillinger"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Databruk"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Velg TTY-modus"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatisk nytt forsøk"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Aktiver Automatisk nytt forsøk"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Endring av TTY-modus under videosamtaler er ikke tillatt"</string>
<string name="menu_add" msgid="1882023737425114762">"Legg til kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Rediger kontakt"</string>
<string name="menu_delete" msgid="3977150783449642851">"Fjern kontakt"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Leser fra SIM-kort…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Ingen kontakter på SIM-kortet."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Velg kontakter som skal importeres"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Du må slå av flymodus før du kan importere kontakter fra SIM-kortet."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Slå av flymodus for å importere kontakter fra SIM-kortet."</string>
<string name="enable_pin" msgid="5422767284133234860">"Slå av/på PIN-kode for SIM-kort"</string>
<string name="change_pin" msgid="9174186126330785343">"Endre PIN-kode for SIM-kort"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM-kortets PIN-kode:"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Legg på"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ring tilbake"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Melding"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"For å ringe, slå av flymodus først."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Slå av flymodus for å ringe."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Slå av flymodus eller koble til et trådløst nettverk for å ringe."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ikke registrert på nettverket."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilnettverket er ikke tilgjengelig."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilnettverk er ikke tilgjengelig. Koble til et trådløst nettverk for å ringe."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Skriv inn et gyldig nummer for å plassere en samtale."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Kan ikke ringe."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Begynner MMI-sekvens…"</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Kan ikke opprette telefonmøte."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan ikke avvise anropet."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan ikke frigjøre samtale(r)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Koble til et trådløst nettverk for å ringe."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nødanrop"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Slår på radio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjeneste. Prøver på nytt …"</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Startet modusen nødsamtale-tilbakeringing"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modusen nødsamtale-tilbakeringing"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datatilkobling deaktivert"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Ingen datatilkobling i <xliff:g id="COUNT">%s</xliff:g> minutt"</item>
- <item quantity="other" msgid="3122217344579273583">"Ingen datatilkobling i <xliff:g id="COUNT">%s</xliff:g> minutter"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefonen kommer til å være i nødsamtalemodus i <xliff:g id="COUNT">%s</xliff:g> minutt. Ingen apper som bruker en datatilkobling, kan brukes i denne modusen. Vil du avslutte nå?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefonen kommer til å være i nødsamtalesmodus i <xliff:g id="COUNT">%s</xliff:g> minutter. Ingen apper som bruker en datatilkobling, kan brukes i denne modusen. Vil du avslutte nå?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Den valgte handlingen er ikke tilgjengelig i nødsamtalemodus. Telefonen kommer til å være i denne modusen i <xliff:g id="COUNT">%s</xliff:g> minutt(er). Vil du avslutte nå?"</item>
- <item quantity="other" msgid="6115622137771382224">"Den valgte handlingen er ikke tilgjengelig i nødsamtalemodus. Telefonen kommer til å være i denne modusen i <xliff:g id="COUNT">%s</xliff:g> minutter. Vil du avslutte nå?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Ingen datatilkobling i <xliff:g id="COUNT_1">%s</xliff:g> minutter</item>
+ <item quantity="one">Ingen datatilkobling i <xliff:g id="COUNT_0">%s</xliff:g> minutt</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Telefonen er i nødsamtalemodus i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Når telefonen er i denne modusen, kan du ikke bruke apper som krever datatilkobling. Vil du avslutte nå?</item>
+ <item quantity="one">Telefonen er i nødsamtalemodus i <xliff:g id="COUNT_0">%s</xliff:g> minutt. Når telefonen er i denne modusen, kan du ikke bruke apper som krever datatilkobling. Vil du avslutte nå?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Den valgte handlingen er ikke tilgjengelig i nødsamtalemodus. Telefonen er i nødsamtalemodus i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Vil du avslutte nå?</item>
+ <item quantity="one">Den valgte handlingen er ikke tilgjengelig i nødsamtalemodus. Telefonen er i denne modusen i <xliff:g id="COUNT_0">%s</xliff:g> minutt. Vil du avslutte nå?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Den valgte handlingen er ikke mulig under en nødsamtale."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Avslutter modusen nødsamtale-tilbakeringing"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ja"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Nødanrop"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Kun nødanrop"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-kort, spor: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Tilgjengelighet"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi-oppringing inn"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Oppringing via Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Trykk på nytt for å åpne"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Det oppsto en feil under dekoding av meldingen."</string>
</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 9f75ead..6c1558a 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -31,11 +31,11 @@
<string name="cancel" msgid="5044513931633602634">"रद्द गर्नुहोस्"</string>
<string name="enter_input" msgid="1810529547726803893">"USSD सन्देश <xliff:g id="MIN_LEN">%d</xliff:g> र <xliff:g id="MAX_LEN">%d</xliff:g> अक्षरहरूका बिच हुनै पर्दछ। कृपया पुनःप्रयास गर्नुहोस्।"</string>
<string name="manageConferenceLabel" msgid="4691922394301969053">"सम्मेलन कल प्रबन्ध गर्नुहोस्"</string>
- <string name="ok" msgid="3811371167865772377">"ठिक छ"</string>
+ <string name="ok" msgid="3811371167865772377">"ठीक छ"</string>
<string name="audio_mode_speaker" msgid="27649582100085266">"स्पिकर"</string>
<string name="audio_mode_earpiece" msgid="4156527186373869107">"ह्यान्डसेट इयरपिस"</string>
<string name="audio_mode_wired_headset" msgid="1465350758489175975">"तारसहितको हेडसेट"</string>
- <string name="audio_mode_bluetooth" msgid="3047641300848211128">"ब्लुटुथ"</string>
+ <string name="audio_mode_bluetooth" msgid="3047641300848211128">"ब्लुटूथ"</string>
<string name="wait_prompt_str" msgid="7601815427707856238">"निम्न टोनहरू पठाउने? \n"</string>
<string name="pause_prompt_str" msgid="1789964702154314806">"टोनहरू \n पठाउँदै"</string>
<string name="send_button" msgid="4106860097497818751">"पठाउनुहोस्"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"फोन खाता"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP खाता थप्नुहोस्"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"खाता सेटिङ कन्फिगर गर्नुहोस्"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi कलिङ"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi कलिङ"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi कल प्रयोग नगर्नुहोस्"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"कल सहायक प्रयोग नगर्नुहोस्"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"कुनै पनि होइन"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"कन्फिगर गर्नुहोस्"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"निर्मित जडान सेवा"</string>
<string name="voicemail" msgid="8693759337917898954">"भ्वाइसमेल"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"भ्वाइस मेल (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"नेटवर्क संचालकहरू"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"आकस्मिक प्रसारणहरू"</string>
@@ -93,7 +94,7 @@
<string name="sum_hide_caller_id" msgid="1071407020290873782">"बहिर्गमन कलहरूमा नम्बर लुकाइएको"</string>
<string name="sum_show_caller_id" msgid="6768534125447290401">"बहिर्गमन कलहरूमा प्रदर्शित नम्बर"</string>
<string name="sum_default_caller_id" msgid="1954518825510901365">"बहिर्गमन कलमा मेरो नम्बर देखाउन पूर्वनिर्धारित अपरेटर सेटिङहरू प्रयोग गर्नुहोस्"</string>
- <string name="labelCW" msgid="6120513814915920200">"कल प्रतिक्षा गर्दै"</string>
+ <string name="labelCW" msgid="6120513814915920200">"कल प्रतीक्षा गर्दै"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"कल गरेको बखत मलाई आगमन कलको जानकारी गराउनुहोस्"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"कल गरेको बेलामा आगमन कलहरूको बारेमा मलाई जानकारी गराउनुहोस्"</string>
<string name="call_forwarding_settings" msgid="3378927671091537173">"कल फर्वार्डिङ सेटिङहरू"</string>
@@ -131,7 +132,7 @@
<string name="exception_error" msgid="7027667130619518211">"नेटवर्क वा SIM कार्ड त्रुटि।"</string>
<string name="fdn_check_failure" msgid="18200614306525434">"तपाईंको फोन अनुप्रयोग स्थिर डायल गर्ने नम्बर सेटिङहरू खोलिएको छ। केही कल-सम्बन्धित विशेषताहरूले कार्य गरिरहेका छैनन्।"</string>
<string name="radio_off_error" msgid="2304459933248513376">"यी सेटिङहरू हेर्नु पहिले रेडियो खोल्नुहोस्।"</string>
- <string name="close_dialog" msgid="2365884406356986917">"ठिक छ"</string>
+ <string name="close_dialog" msgid="2365884406356986917">"ठीक छ"</string>
<string name="enable" msgid="7248657275000173526">"सकृय पार्नुहोस्"</string>
<string name="disable" msgid="4678348128118573672">"निस्कृय पार्नुहोस्"</string>
<string name="change_num" msgid="239476305819844391">"अपडेट गर्नुहोस्"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"रोमिङको समयमा डेटा सेवामा जडान गर्नुहोस्"</string>
<string name="roaming_disable" msgid="1843417228755568110">"रोमिङको समयमा डेटा सेवा जडान गर्नुहोस्"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"तपाईँले डेटा गुमाउनु भएको छ किनभने तपाईँले डेटासहितको घर नेटवर्क रोमिङ बन्द गरेर छोड्नुभएको छ।"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"रोमिङ हुँदा डेटा उपयोग अनुमति दिने हो? महत्वपूर्ण शुल्क लागू हुन सक्छ।"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"तपाईंलाई महत्त्वपूर्ण शुल्क लाग्न सक्छ।"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"डेटा रोमिङको अनुमति दिने हो?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS विकल्पहरू"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA विकल्पहरू"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"डेटा उपयोग"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY मोड सेट गर्नुहोस्"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"स्वतः पुनः प्रयास गर्नुहोस्"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"स्वतः-पुनः प्रयास मोड सक्षम गर्नुहोस्"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"भिडियो कल गर्ने क्रममा TTY मोड परिवर्तन गर्न अनुमति छैन"</string>
<string name="menu_add" msgid="1882023737425114762">"सम्पर्क थप्नुहोस्"</string>
<string name="menu_edit" msgid="7143003705504672374">"सम्पर्क सम्पादन गर्नुहोस्"</string>
<string name="menu_delete" msgid="3977150783449642851">"सम्पर्क मेटाउनुहोस्"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM कार्ड पढ्दै..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"तपाईँको SIM कार्डमा कुनै पनि सम्पर्क छैन।"</string>
<string name="simContacts_title" msgid="1861472842524839921">"सम्पर्कहरू आयात गर्न चयन गर्नुहोस्"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM कार्डबाट सम्पर्क आयात गर्न पहिले हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM कार्डबाट सम्पर्कहरू आयात गर्न हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN सक्षम/अक्षम गर्नुहोस्"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN परिवर्तन गर्नुहोस्"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"छुटाउनुहोस्"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"फेरि कल गर्नुहोस्"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"सन्देश"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"कल राख्नका लागि, पहिले हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस् वा एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"नेटवर्कमा दर्ता भएको छैन।"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"सेलुलर सञ्जाल उपलब्ध छैन।"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"सेलुलर सञ्जाल उपलब्ध छैन। एक कल गर्न ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"एक कल गर्नको लागि, एक वैध नम्बर प्रविष्ट गर्नुहोस्।"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"कल गर्न सक्दैन।"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI अनुक्रम सुरु गर्दै..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"सम्मेलन कलहरू गर्न असमर्थ।"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"कल अस्वीकार गर्न सक्दैन।"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कल (हरू) जारी गर्न सकिँदैन ।"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"एक कल गर्न एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आपतकालीन कल"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडियो खोल्दै..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"कुनै सेवा छैन। फेरि प्रयास गर्दै ..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"आपतकालीन कलब्याक मोड प्रविष्टि गरियो"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"आपतकालीन कलब्याक मोड"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"डेटा जडान अक्षम भयो"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> मिनेटका लागि कुनै पनि डेटा सम्पर्क उपलब्ध छैन"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> मिनटका लागि डेटा जडान छैन"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"फोन <xliff:g id="COUNT">%s</xliff:g> मिनटका लागि आपतकालिन कलब्याक मोडमा हुने छ। यो मोडमा हुँदा अनुप्रयोग बिना नै डेटा जडान प्रयोग गरेर प्रयोग गर्न सकिन्छ। के तपाईं अहिले निस्कन चाहनु हुन्छ?"</item>
- <item quantity="other" msgid="8617116564023933114">"फोन <xliff:g id="COUNT">%s</xliff:g> मिनटका लागि आपतकालिन कलब्याक मोडमा हुने छ। यो मोडमा हुँदा अनुप्रयोग बिना नै डेटा जडान प्रयोग गरेर प्रयोग गर्न सकिन्छ। के तपाईं अहिले निस्कन चाहनु हुन्छ?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"चयन कार्य आपतकालिन कलब्याक मोडमा हुँदा यो उपलब्ध हुँदैन। फोन <xliff:g id="COUNT">%s</xliff:g> मिनटका लागि आपतकालिन कलब्याक मोडमा हुने छ। के तपाईं अहिले निस्कन चाहनु हुन्छ?"</item>
- <item quantity="other" msgid="6115622137771382224">"चयन कार्य आपतकालिन कलब्याक मोडमा हुँदा यो उपलब्ध हुँदैन। फोन <xliff:g id="COUNT">%s</xliff:g> मिनटका लागि आपतकालिन कलब्याक मोडमा हुने छ। के तपाईं अहिले निस्कन चाहनुहुन्छ?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि कुनै डेटा जडान छैन</item>
+ <item quantity="one"> <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि कुनै डेटा जडान छैन</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको अवस्थामा एक डेटा जडान प्रयोग गरेर कुनै पनि अनुप्रयोगहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+ <item quantity="one"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको समयमा एक डेटा जडान प्रयोग गरेर कुनै पनि अनुप्रयोगहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+ <item quantity="one"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"आपतकालीन कल हुँदा चयन भएको कार्य उपलब्ध हुँदैन।"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"आपतकालीन कलब्याक मोडबाट निस्कदै"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"हो"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"आपताकालीन कल"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"आपातकालीन कल मात्र"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM कार्ड, स्लट: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"पहुँचता"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"आगमन Wi-Fi कल"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi कल"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"खोल्न फेरि छुनुहोस्"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"सन्देश डिकोड गर्दा एउटा समस्या भयो।"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index feef11c..8bc5e7f 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefoonaccounts"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP-account toevoegen"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Accountinstellingen configureren"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Bellen via wifi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Bellen via wifi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Bellen via wifi niet gebruiken"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Oproepassistent niet gebruiken"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Geen"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configureren"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Ingebouwde verbindingsservice"</string>
<string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Mobiele providers"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Nooduitzendingen"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Verbinding maken met gegevensservices tijdens roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Verbinding maken met gegevensservices tijdens roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"De gegevensverbinding is verbroken, omdat u uw thuisnetwerk heeft verlaten terwijl gegevensroaming was uitgeschakeld."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Gegevensgebruik toestaan tijdens roaming? Er kunnen aanzienlijke kosten in rekening worden gebracht."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Er kunnen hoge roamingkosten in rekening worden gebracht."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Gegevensroaming toestaan?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM-/UMTS-opties"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-opties"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Gegevensgebruik"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY-modus instellen"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatisch opnieuw proberen"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Modus voor automatisch opnieuw proberen inschakelen"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"De TTY-modus mag niet worden gewijzigd tijdens een videogesprek"</string>
<string name="menu_add" msgid="1882023737425114762">"Contact toevoegen"</string>
<string name="menu_edit" msgid="7143003705504672374">"Contact bewerken"</string>
<string name="menu_delete" msgid="3977150783449642851">"Contact verwijderen"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lezen vanaf SIM-kaart..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Geen contacten op uw SIM-kaart."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Contacten selecteren om te importeren"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Voor het importeren van contacten vanaf de simkaart moet u eerst de vliegmodus uitschakelen."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Schakel de vliegtuigmodus uit om contacten van de simkaart te importeren."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN-code in-/uitschakelen"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN-code wijzigen"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN-code:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Ophangen"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Terugbellen"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Bericht"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Als u wilt bellen, moet u eerst de Vliegmodus uitschakelen."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Schakel de vliegtuigmodus uit om te bellen."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Schakel de vliegtuigmodus uit of maak verbinding met een draadloos netwerk om te bellen."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Niet geregistreerd op netwerk."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobiel netwerk niet beschikbaar."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobiel netwerk is niet beschikbaar. Maak verbinding met een draadloos netwerk om te bellen."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Als u wilt bellen, moet u een geldig nummer invoeren."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Kan niet bellen."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-reeks starten..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Telefonische vergaderingen niet mogelijk."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan oproep niet weigeren."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan oproep(en) niet vrijgeven."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Maak verbinding met een draadloos netwerk om te bellen."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Noodoproep"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio aanzetten..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Geen bereik. Opnieuw proberen…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modus voor noodoproepen ingeschakeld"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modus voor noodoproepen"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Gegevensverbinding uitgeschakeld"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Er is al <xliff:g id="COUNT">%s</xliff:g> minuut geen dataverbinding"</item>
- <item quantity="other" msgid="3122217344579273583">"Er is al <xliff:g id="COUNT">%s</xliff:g> minuten geen dataverbinding"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"De telefoon blijft <xliff:g id="COUNT">%s</xliff:g> minuut in de noodoproepmodus. In deze modus kunnen geen apps worden gebruikt waarvoor een gegevensverbinding nodig is. Wilt u nu sluiten?"</item>
- <item quantity="other" msgid="8617116564023933114">"De telefoon blijft <xliff:g id="COUNT">%s</xliff:g> minuten in de noodoproepmodus. In deze modus kunnen geen apps worden gebruikt waarvoor een gegevensverbinding nodig is. Wilt u nu sluiten?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"De geselecteerde actie is niet beschikbaar in de noodoproepmodus. De telefoon blijft <xliff:g id="COUNT">%s</xliff:g> minuut in deze modus. Wilt u nu sluiten?"</item>
- <item quantity="other" msgid="6115622137771382224">"De geselecteerde actie is niet beschikbaar in de noodoproepmodus. De telefoon blijft <xliff:g id="COUNT">%s</xliff:g> minuten in deze modus. Wilt u nu sluiten?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Er is al <xliff:g id="COUNT_1">%s</xliff:g> minuten geen gegevensverbinding</item>
+ <item quantity="one">Er is al <xliff:g id="COUNT_0">%s</xliff:g> minuut geen gegevensverbinding</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">De telefoon bevindt zich <xliff:g id="COUNT_1">%s</xliff:g> minuten in de modus voor noodoproepen. In deze modus kunnen geen apps worden gebruikt waarvoor een gegevensverbinding nodig is. Wilt u nu afsluiten?</item>
+ <item quantity="one">De telefoon bevindt zich <xliff:g id="COUNT_0">%s</xliff:g> minuut in de modus voor noodoproepen. In deze modus kunnen geen apps worden gebruikt waarvoor een gegevensverbinding nodig is. Wilt u nu afsluiten?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">De geselecteerde actie is niet beschikbaar in de modus voor noodoproepen. De telefoon bevindt zich <xliff:g id="COUNT_1">%s</xliff:g> minuten in deze modus. Wilt u nu afsluiten?</item>
+ <item quantity="one">De geselecteerde actie is niet beschikbaar in de modus voor noodoproepen. De telefoon bevindt zich <xliff:g id="COUNT_0">%s</xliff:g> minuut in deze modus. Wilt u nu afsluiten?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"De geselecteerde actie is niet beschikbaar tijdens noodoproepen."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Modus voor noodoproepen verlaten"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ja"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Noodoproepen"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Alleen noodoproepen"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Simkaart, sleuf: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Toegankelijkheid"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Inkomende wifi-oproep"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wifi-oproep"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tik nogmaals om te openen"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Er is een fout opgetreden tijdens het decoderen van het bericht."</string>
</resources>
diff --git a/res/values-pa-rIN/arrays.xml b/res/values-pa-rIN/arrays.xml
new file mode 100644
index 0000000..0a015ca
--- /dev/null
+++ b/res/values-pa-rIN/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="preferred_network_mode_choices_world_mode">
+ <item msgid="3391522821603584785">"ਗਲੋਬਲ"</item>
+ <item msgid="6753774959494729275">"LTE / CDMA"</item>
+ <item msgid="8658695584186942227">"LTE / GSM / UMTS"</item>
+ </string-array>
+ <string-array name="preferred_network_mode_values_world_mode">
+ <item msgid="8390941159766263625">"10"</item>
+ <item msgid="6103348346295810336">"8"</item>
+ <item msgid="3494519853214024879">"9"</item>
+ </string-array>
+</resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..b2d84b6
--- /dev/null
+++ b/res/values-pa-rIN/strings.xml
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ਸੈਲਿਊਲਰ ਡਾਟਾ"</string>
+ <string name="phoneAppLabel" product="default" msgid="906161039445636857">"ਫੋਨ"</string>
+ <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"ਐਮਰਜੈਂਸੀ ਡਾਇਲਰ"</string>
+ <string name="phoneIconLabel" msgid="2331230813161304895">"ਫੋਨ"</string>
+ <string name="fdnListLabel" msgid="8630418672279521003">"FDN ਸੂਚੀ"</string>
+ <string name="unknown" msgid="6878797917991465859">"ਅਗਿਆਤ"</string>
+ <string name="private_num" msgid="6713286113000232309">"ਨਿੱਜੀ ਨੰਬਰ"</string>
+ <string name="payphone" msgid="4793877574636445118">"ਪੇਫੋਨ"</string>
+ <string name="onHold" msgid="9035493194749959955">"ਹੋਲਡ ਤੇ"</string>
+ <string name="mmiStarted" msgid="6347869857061147003">"MMI ਕੋਡ ਚਾਲੂ ਕੀਤਾ"</string>
+ <string name="ussdRunning" msgid="485588686340541690">"USSD ਕੋਡ ਚੱਲ ਰਿਹਾ ਹੈ…"</string>
+ <string name="mmiCancelled" msgid="2771923949751842276">"MMI ਕੋਡ ਰੱਦ ਕੀਤਾ"</string>
+ <string name="cancel" msgid="5044513931633602634">"ਰੱਦ ਕਰੋ"</string>
+ <string name="enter_input" msgid="1810529547726803893">"USSD ਸੁਨੇਹਾ <xliff:g id="MIN_LEN">%d</xliff:g> ਅਤੇ <xliff:g id="MAX_LEN">%d</xliff:g> ਅੱਖਰਾਂ ਵਿਚਕਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="manageConferenceLabel" msgid="4691922394301969053">"ਕਾਨਫਰੰਸ ਕਾਲ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+ <string name="ok" msgid="3811371167865772377">"ਠੀਕ"</string>
+ <string name="audio_mode_speaker" msgid="27649582100085266">"ਸਪੀਕਰ"</string>
+ <string name="audio_mode_earpiece" msgid="4156527186373869107">"ਹੈਂਡਸੈਟ ਈਅਰਪੀਸ"</string>
+ <string name="audio_mode_wired_headset" msgid="1465350758489175975">"ਵਾਇਰ ਵਾਲਾ ਹੈਡਸੈਟ"</string>
+ <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+ <string name="wait_prompt_str" msgid="7601815427707856238">"ਕੀ ਇਹ ਟੋਨਾਂ ਭੇਜਣੀਆਂ ਹਨ?\n"</string>
+ <string name="pause_prompt_str" msgid="1789964702154314806">"ਟੋਨਾਂ\n ਭੇਜ ਰਿਹਾ ਹੈ"</string>
+ <string name="send_button" msgid="4106860097497818751">"ਭੇਜੋ"</string>
+ <string name="pause_prompt_yes" msgid="3564467212025151797">"ਹਾਂ"</string>
+ <string name="pause_prompt_no" msgid="6686238803236884877">"ਨਹੀਂ"</string>
+ <string name="wild_prompt_str" msgid="5543521676355533577">"ਇਸ ਨਾਲ ਵਾਈਲਡ ਅੱਖਰ ਬਦਲੋ"</string>
+ <string name="no_vm_number" msgid="4164780423805688336">"ਲੁਪਤ ਵੌਇਸਮੇਲ ਨੰਬਰ"</string>
+ <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM ਕਾਰਡ ਤੇ ਕੋਈ ਵੌਇਸਮੇਲ ਨੰਬਰ ਸਟੋਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।"</string>
+ <string name="add_vm_number_str" msgid="4676479471644687453">"ਨੰਬਰ ਜੋੜੋ"</string>
+ <string name="puk_unlocked" msgid="2284912838477558454">"ਤੁਹਾਡਾ SIM ਕਾਰਡ ਅਨਬਲੌਕ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਹਾਡਾ ਫੋਨ ਅਨੌਲਕ ਹੋ ਰਿਹਾ ਹੈ..."</string>
+ <string name="label_ndp" msgid="780479633159517250">"SIM ਨੈਟਵਰਕ ਅਨਲੌਕ PIN"</string>
+ <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ਅਨਲੌਕ ਕਰੋ"</string>
+ <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"ਬਰਖਾਸਤ ਕਰੋ"</string>
+ <string name="requesting_unlock" msgid="6412629401033249351">"ਨੈਟਵਰਕ ਅਨਲੌਕ ਦੀ ਬੇਨਤੀ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="unlock_failed" msgid="6490531697031504225">"ਨੈਟਵਰਕ ਅਨਲੌਕ ਬੇਨਤੀ ਅਸਫਲ।"</string>
+ <string name="unlock_success" msgid="6770085622238180152">"ਨੈਟਵਰਕ ਅਨਲੌਕ ਸਫਲ।"</string>
+ <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ ਇਸ ਉਪਭੋਗਤਾ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string>
+ <string name="labelGSMMore" msgid="5930842194056092106">"GSM ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="apn_settings" msgid="9043423184895642077">"ਪਹੁੰਚ ਬਿੰਦੂ ਨਾਮ"</string>
+ <string name="settings_label" msgid="3876743539816984008">"ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"ਕਾਲਿੰਗ ਖਾਤੇ"</string>
+ <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ਇਸ ਨਾਲ ਕਾਲਾਂ ਕਰੋ"</string>
+ <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ਇਸ ਨਾਲ SIP ਕਾਲਾਂ ਕਰੋ"</string>
+ <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ਪਹਿਲਾਂ ਪੁੱਛੋ"</string>
+ <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ਸੈਟਿੰਗਾਂ"</string>
+ <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"ਖਾਤੇ ਚੁਣੋ"</string>
+ <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ਫੋਨ ਖਾਤੇ"</string>
+ <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ਖਾਤਾ ਜੋੜੋ"</string>
+ <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ਖਾਤਾ ਸੈਟਿੰਗਾਂ ਕੌਂਫਿਗਰ ਕਰੋ"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi ਕਾਲਿੰਗ"</string>
+ <string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi ਕਾਲਿੰਗ ਨਾ ਵਰਤੋ"</string>
+ <string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"ਕਾਲ ਸਹਾਇਕ ਨਾ ਵਰਤੋ"</string>
+ <string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ਕੋਈ ਨਹੀਂ"</string>
+ <string name="wifi_calling_call_assistant" msgid="229102032881680320">"ਕਾਲ ਸਹਾਇਕ"</string>
+ <string name="wifi_calling_use_call_assistant" msgid="8460024827012666199">"ਕਾਲ ਸਹਾਇਕ ਵਰਤੋ"</string>
+ <string name="wifi_calling_select_call_assistant" msgid="9296558058772293">"ਕਾਲ ਸਹਾਇਕ ਚੁਣੋ"</string>
+ <string name="wifi_calling_select_call_assistant_summary" msgid="164985727137156474">"ਇਸ ਨਾਲ ਕਾਲਾਂ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਨੈਟਵਰਕਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+ <string name="wifi_calling_use_call_assistant_summary" msgid="6599987137133339698">"ਐਪਸ ਜਾਂ ਸੇਵਾਵਾਂ ਨੂੰ ਕਾਲਾਂ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਨੈਟਵਰਕਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨ ਦਿਓ"</string>
+ <string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"ਕੌਂਫਿਗਰ ਕਰੋ"</string>
+ <string name="connection_service_default_label" msgid="1498481943805913754">"ਬਿਲਟ-ਇਨ ਕਨੈਕਸ਼ਨ ਸੇਵਾ"</string>
+ <string name="voicemail" msgid="8693759337917898954">"ਵੌਇਸਮੇਲ"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"ਵੌਇਸਮੇਲ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+ <string name="networks" msgid="8873030692174541976">"ਨੈਟਵਰਕ ਓਪਰੇਟਰ"</string>
+ <string name="cell_broadcast_settings" msgid="8740238216690502563">"ਐਮਰਜੈਂਸੀ ਪ੍ਰਸਾਰਨ"</string>
+ <string name="call_settings" msgid="6112441768261754562">"ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="additional_gsm_call_settings" msgid="1391795981938800617">"ਵਾਧੂ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"ਵਾਧੂ ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="sum_gsm_call_settings" msgid="4076647190996778012">"ਵਾਧੂ ਕੇਵਲ GSM ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="additional_cdma_call_settings" msgid="8628958775721886909">"ਵਾਧੂ CDMA ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="sum_cdma_call_settings" msgid="284753265979035549">"ਵਾਧੂ ਕੇਵਲ CDMA ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="labelNwService" msgid="4699970172021870983">"ਨੈਟਵਰਕ ਸੇਵਾ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="labelCallerId" msgid="3888899447379069198">"ਕਾਲਰ ID"</string>
+ <string name="sum_loading_settings" msgid="1826692909391168620">"ਸੈਟਿੰਗਾਂ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ..."</string>
+ <string name="sum_hide_caller_id" msgid="1071407020290873782">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਲੁਕਾਇਆ ਨੰਬਰ"</string>
+ <string name="sum_show_caller_id" msgid="6768534125447290401">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਡਿਸਪਲੇ ਕੀਤਾ ਨੰਬਰ"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਮੇਰਾ ਨੰਬਰ ਡਿਸਪਲੇ ਕਰਨ ਲਈ ਡਿਫੌਲਟ ਓਪਰੇਟਰ ਸੈਟਿੰਗਾਂ ਵਰਤੋ।"</string>
+ <string name="labelCW" msgid="6120513814915920200">"ਕਾਲ ਵੇਟਿੰਗ"</string>
+ <string name="sum_cw_enabled" msgid="8083061901633671397">"ਇੱਕ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
+ <string name="sum_cw_disabled" msgid="3648693907300104575">"ਇੱਕ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="labelCF" msgid="2574386948026924737">"ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ"</string>
+ <string name="labelCFU" msgid="8147177368148660600">"ਹਮੇਸ਼ਾਂ ਫੌਰਵਰਡ ਕਰੋ"</string>
+ <string name="messageCFU" msgid="3560082430662923687">"ਹਮੇਸ਼ਾਂ ਇਹ ਨੰਬਰ ਵਰਤੋ"</string>
+ <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"ਸਾਰੀਆਂ ਕਾਲਾਂ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="sum_cfu_enabled" msgid="2450052502198827927">"ਸਾਰੀਆਂ ਕਾਲਾਂ <xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"ਨੰਬਰ ਅਣਉਪਲਬਧ ਹੈ"</string>
+ <string name="sum_cfu_disabled" msgid="8384177689501334080">"ਬੰਦ"</string>
+ <string name="labelCFB" msgid="6139853033106283172">"ਜਦੋਂ ਰੁੱਝਾ ਹੋਵੇ"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"ਜਦੋਂ ਰੁੱਝਾ ਹੋਵੇ ਤਾਂ ਨੰਬਰ"</string>
+ <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="sum_cfb_disabled" msgid="4913145177320506827">"ਬੰਦ"</string>
+ <string name="disable_cfb_forbidden" msgid="3506984333877998061">"ਜਦੋਂ ਤੁਹਾਡਾ ਫੋਨ ਰੁੱਝਾ ਹੋਇਆ ਹੁੰਦਾ ਹੈ ਤਾਂ ਤੁਹਾਡਾ ਓਪਰੇਟਰ ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।"</string>
+ <string name="labelCFNRy" msgid="1736067178393744351">"ਜਦੋਂ ਜਵਾਬ ਨਾ ਦਿੱਤਾ ਜਾਏ"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"ਜਦੋਂ ਜਵਾਬ ਨਾ ਦਿੱਤਾ ਜਾਏ ਤਾਂ ਨੰਬਰ"</string>
+ <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="sum_cfnry_disabled" msgid="3884684060443538097">"ਬੰਦ"</string>
+ <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"ਜਦੋਂ ਤੁਹਾਡਾ ਫੋਨ ਜਵਾਬ ਨਹੀਂ ਦਿੰਦਾ ਤਾਂ ਤੁਹਾਡਾ ਓਪਰੇਟਰ ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।"</string>
+ <string name="labelCFNRc" msgid="2614827454402079766">"ਜਦੋਂ ਨਾ ਪਹੁੰਚਯੋਗ ਹੋਵੇ"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"ਜਦੋਂ ਨਾ ਪਹੁੰਚਯੋਗ ਹੋਵੇ ਤਾਂ ਨੰਬਰ"</string>
+ <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"ਅਸਮਰੱਥ ਬਣਾਇਆ"</string>
+ <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ਜਦੋਂ ਤੁਹਾਡਾ ਫੋਨ ਨਾਪਹੁੰਚਯੋਗ ਹੁੰਦਾ ਹੈ ਤਾਂ ਤੁਹਾਡਾ ਕੈਰੀਅਰ ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।"</string>
+ <string name="updating_title" msgid="6146755386174019046">"ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="call_settings_primary_user_only" msgid="5679923943740900965">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਕੇਵਲ ਮੁੱਖ ਉਪਭੋਗਤਾ ਵੱਲੋਂ ਬਦਲੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"ਕਾਲ ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="error_updating_title" msgid="7970259216988931777">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਅਸ਼ੁੱਧੀ"</string>
+ <string name="reading_settings" msgid="1920291699287055284">"ਸੈਟਿੰਗਾਂ ਪੜ੍ਹ ਰਿਹਾ ਹੈ…"</string>
+ <string name="updating_settings" msgid="8171225533884883252">"ਸੈਟਿੰਗਾਂ ਅਪਡੇਟ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="reverting_settings" msgid="4752151682666912828">"ਸੈਟਿੰਗਾਂ ਵਾਪਸ ਲਿਆ ਰਿਹਾ ਹੈ…"</string>
+ <string name="response_error" msgid="6674110501330139405">"ਨੈਟਵਰਕ ਤੋਂ ਅਕਲਪਿਤ ਜਵਾਬ"</string>
+ <string name="exception_error" msgid="7027667130619518211">"ਨੈਟਵਰਕ ਜਾਂ SIM ਕਾਰਡ ਅਸ਼ੁੱਧੀ।"</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"ਤੁਹਾਡੇ ਫੋਨ ਐਪ ਦੀ ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਸੈਟਿੰਗ ਚਾਲੂ ਕੀਤੀ ਗਈ ਹੈ। ਸਿੱਟੇ ਵਜੋਂ, ਕੁਝ ਕਾਲ-ਸੰਬੰਧਿਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਕੰਮ ਨਹੀਂ ਕਰ ਰਹੀਆਂ ਹਨ।"</string>
+ <string name="radio_off_error" msgid="2304459933248513376">"ਇਹਨਾਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਦੇਖਣ ਤੋਂ ਪਹਿਲਾਂ ਰੇਡੀਓ ਚਾਲੂ ਕਰੋ।"</string>
+ <string name="close_dialog" msgid="2365884406356986917">"ਠੀਕ"</string>
+ <string name="enable" msgid="7248657275000173526">"ਚਾਲੂ ਕਰੋ"</string>
+ <string name="disable" msgid="4678348128118573672">"ਬੰਦ ਕਰੋ"</string>
+ <string name="change_num" msgid="239476305819844391">"ਅਪਡੇਟ"</string>
+ <string-array name="clir_display_values">
+ <item msgid="5560134294467334594">"ਨੈਟਵਰਕ ਡਿਫੌਲਟ"</item>
+ <item msgid="7876195870037833661">"ਨੰਬਰ ਲੁਕਾਓ"</item>
+ <item msgid="1108394741608734023">"ਨੰਬਰ ਦਿਖਾਓ"</item>
+ </string-array>
+ <string name="vm_changed" msgid="380744030726254139">"ਵੌਇਸਮੇਲ ਨੰਬਰ ਬਦਲ ਗਿਆ"</string>
+ <string name="vm_change_failed" msgid="3352934863246208918">"ਵੌਇਸਮੇਲ ਨੰਬਰ ਨਹੀਂ ਬਦਲ ਸਕਿਆ।\nਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਤਾਂ ਆਪਣੇ ਕੈਰੀਅਰ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
+ <string name="fw_change_failed" msgid="5298103228470214665">"ਫੌਰਵਾਰਡਿੰਗ ਨੰਬਰ ਬਦਲ ਨਹੀਂ ਸਕਿਆ। \nਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਤਾਂ ਆਪਣੇ ਕੈਰੀਅਰ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
+ <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"ਮੌਜੂਦਾ ਫੌਰਵਰਡਿੰਗ ਨੰਬਰ ਸੈਟਿੰਗਾਂ ਨੁੰ ਮੁੜ ਪ੍ਰਾਪਤ ਅਤੇ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਕਰ ਸਕਿਆ।\nਕੀ ਫੇਰ ਵੀ ਨਵੇਂ ਪ੍ਰਦਾਤਾ ਤੇ ਸਵਿਚ ਕਰਨਾ ਹੈ?"</string>
+ <string name="no_change" msgid="3186040086622435212">"ਕੋਈ ਬਦਲਾਵ ਨਹੀਂ ਕੀਤੇ ਗਏ ਹਨ।"</string>
+ <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ਵੌਇਸਮੇਲ ਸੇਵਾ ਚੁਣੋ"</string>
+ <string name="voicemail_default" msgid="2001233554889016880">"ਤੁਹਾਡਾ ਕੈਰੀਅਰ"</string>
+ <string name="mobile_networks" msgid="2843854043339307375">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="label_available" msgid="1181658289009300430">"ਉਪਲਬਧ ਨੈਟਵਰਕ"</string>
+ <string name="load_networks_progress" msgid="5230707536168902952">"ਖੋਜ ਰਿਹਾ ਹੈ..."</string>
+ <string name="empty_networks_list" msgid="4249426905018815316">"ਕੋਈ ਨੈਟਵਰਕ ਨਹੀਂ ਮਿਲੇ।"</string>
+ <string name="search_networks" msgid="1601136049300882441">"ਖੋਜ ਨੈਟਵਰਕ"</string>
+ <string name="network_query_error" msgid="6828516148953325006">"ਨੈਟਵਰਕਾਂ ਦੀ ਖੋਜ ਕਰਦੇ ਸਮੇਂ ਅਸ਼ੁੱਧੀ।"</string>
+ <string name="register_on_network" msgid="9055203954040805084">"<xliff:g id="NETWORK">%s</xliff:g> ਤੇ ਰਜਿਸਟਰ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="not_allowed" msgid="5613353860205691579">"ਤੁਹਾਡਾ SIM ਇਸ ਨੈਟਵਰਕ ਲਈ ਇੱਕ ਕਨੈਕਸ਼ਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਦਿੰਦਾ।"</string>
+ <string name="connect_later" msgid="2308119155752343975">"ਹੁਣ ਇਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="registration_done" msgid="495135664535876612">"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਕੀਤਾ।"</string>
+ <string name="sum_carrier_select" msgid="3494252551249882718">"ਇੱਕ ਨੈਟਵਰਕ ਓਪਰੇਟਰ ਚੁਣੋ"</string>
+ <string name="sum_search_networks" msgid="2921092249873272715">"ਸਾਰੇ ਉਪਲਬਧ ਨੈਟਵਰਕਾਂ ਦੀ ਖੋਜ"</string>
+ <string name="select_automatically" msgid="5628402124471810174">"ਆਟੋਮੈਟਿਕਲੀ ਚੁਣੋ"</string>
+ <string name="sum_select_automatically" msgid="5614890115123292400">"ਆਟੋਮੈਟਿਕਲੀ ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਚੁਣੋ"</string>
+ <string name="register_automatically" msgid="6017849844573519637">"ਆਟੋਮੈਟਿਕ ਰਜਿਸਟਰੇਸ਼ਨ…"</string>
+ <string name="preferred_network_mode_title" msgid="2336624679902659306">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਪ੍ਰਕਾਰ"</string>
+ <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ਨੈਟਵਰਕ ਓਪਰੇਟਿੰਗ ਮੋਡ ਬਦਲੋ"</string>
+ <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਪ੍ਰਕਾਰ"</string>
+ <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: ਤਰਜੀਹੀ WCDMA"</string>
+ <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: ਕੇਵਲ GSM"</string>
+ <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: ਕੇਵਲ WCDMA"</string>
+ <string name="preferred_network_mode_gsm_wcdma_summary" msgid="3161255745326408587">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: GSM / WCDMA"</string>
+ <string name="preferred_network_mode_cdma_summary" msgid="3175690187294334241">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: CDMA"</string>
+ <string name="preferred_network_mode_cdma_evdo_summary" msgid="8332063064712726618">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: CDMA / EvDo"</string>
+ <string name="preferred_network_mode_cdma_only_summary" msgid="1309770926198634150">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: ਕੇਵਲ CDMA"</string>
+ <string name="preferred_network_mode_evdo_only_summary" msgid="8472220691721269155">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: ਕੇਵਲ EvDo"</string>
+ <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="4726682079415227330">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: LTE"</string>
+ <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: GSM/WCDMA/LTE"</string>
+ <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: CDMA+LTE/EVDO"</string>
+ <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: ਗਲੋਬਲ"</string>
+ <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: LTE / WCDMA"</string>
+ <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: LTE / GSM / UMTS"</string>
+ <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਮੋਡ: LTE / CDMA"</string>
+ <string-array name="preferred_network_mode_choices">
+ <item msgid="7886739962255042385">"LTE / WCDMA"</item>
+ <item msgid="577652050447385699">"LTE"</item>
+ <item msgid="6813597571293773656">"ਗਲੋਬਲ"</item>
+ <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
+ <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
+ <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
+ <item msgid="545430093607698090">"ਕੇਵਲ EvDo"</item>
+ <item msgid="1508557726283094448">"CDMA w/o EvDo"</item>
+ <item msgid="4341433122263841224">"CDMA/EvDo auto"</item>
+ <item msgid="5958053792390386668">"GSM/WCDMA ਆਟੋ"</item>
+ <item msgid="7913148405605373434">"ਕੇਵਲ WCDMA"</item>
+ <item msgid="1524224863879435516">"ਕੇਵਲ GSM"</item>
+ <item msgid="3817924849415716259">"GSM/WCDMA ਤਰਜੀਹੀ"</item>
+ </string-array>
+ <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"ਵਿਸਤ੍ਰਿਤ 4G LTE ਮੋਡ"</string>
+ <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ਵੌਇਸ ਅਤੇ ਹੋਰ ਸੰਚਾਰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ LTE ਸੇਵਾਵਾਂ ਵਰਤੋ (ਸਿਫਾਰਿਸ਼ ਕੀਤਾ)"</string>
+ <string name="data_enabled" msgid="5972538663568715366">"ਡਾਟਾ ਸਮਰਥਿਤ"</string>
+ <string name="data_enable_summary" msgid="2382798156640007971">"ਡਾਟਾ ਵਰਤੋਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
+ <string name="roaming" msgid="8871412572928323707">"ਡਾਟਾ ਰੋਮਿੰਗ"</string>
+ <string name="roaming_enable" msgid="7331106985174381987">"ਰੋਮਿੰਗ ਵੇਲੇ ਡਾਟਾ ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
+ <string name="roaming_disable" msgid="1843417228755568110">"ਰੋਮਿੰਗ ਵੇਲੇ ਡਾਟਾ ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
+ <string name="roaming_reenable_message" msgid="8913735676127858115">"ਤੁਹਾਡੀ ਡਾਟਾ ਕਨੈਕਟੀਵਿਟੀ ਨਸ਼ਟ ਹੋ ਗਈ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਆਪਣਾ ਡਾਟਾ ਰੋਮਿੰਗ ਬੰਦ ਨਾਲ ਹੋਮ ਨੈਟਵਰਕ ਛੱਡ ਦਿੱਤਾ ਸੀ।"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"ਤੁਹਾਨੂੰ ਖ਼ਾਸ ਖ਼ਰਚੇ ਪੈ ਸਕਦੇ ਹਨ।"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ਕੀ ਡਾਟਾ ਰੋਮਿੰਗ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
+ <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ਚੋਣਾਂ"</string>
+ <string name="cdma_options" msgid="4016822858172249884">"CDMA ਚੋਣਾਂ"</string>
+ <string name="throttle_data_usage" msgid="3715677828160555808">"ਡਾਟਾ ਵਰਤੋਂ"</string>
+ <string name="throttle_current_usage" msgid="8762280193043815361">"ਮੌਜੂਦਾ ਮਿਆਦ ਵਿੱਚ ਵਰਤਿਆ ਡਾਟਾ"</string>
+ <string name="throttle_time_frame" msgid="1915198770363734685">"ਡਾਟਾ ਵਰਤੋਂ ਮਿਆਦ"</string>
+ <string name="throttle_rate" msgid="4710388992676803508">"ਡਾਟਾ ਰੇਟ ਨੀਤੀ"</string>
+ <string name="throttle_help" msgid="243651091785169900">"ਹੋਰ ਜਾਣੋ"</string>
+ <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) <xliff:g id="USED_2">%3$s</xliff:g> ਦੀ ਅਧਿਕਤਮ ਮਿਆਦ\nਅਗਲੀ ਮਿਆਦ <xliff:g id="USED_3">%4$d</xliff:g> ਦਿਨਾਂ ਵਿੱਚ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+ <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) <xliff:g id="USED_2">%3$s</xliff:g> ਦੀ ਅਧਿਕਤਮ ਮਿਆਦ"</string>
+ <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> ਅਧਿਕਤਮ ਸੀਮਾ ਵਧ ਗਈ\nਡਾਟਾ ਰੇਟ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s ਤੱਕ ਘਟ ਗਿਆ"</string>
+ <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ਚੱਕਰ ਪੂਰਾ ਹੋਇਆ\nਅਗਲੀ ਮਿਆਦ <xliff:g id="USED_1">%2$d</xliff:g> ਦਿਨਾਂ ਵਿੱਚ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+ <string name="throttle_rate_subtext" msgid="2149102656120726855">"ਜੇਕਰ ਡਾਟਾ ਵਰਤੋਂ ਸੀਮਾ ਵਧਦੀ ਹੈ ਤਾਂ ਡਾਟਾ ਰੇਟ <xliff:g id="USED">%1$d</xliff:g> Kb/s ਤੱਕ ਘਟਿਆ"</string>
+ <string name="throttle_help_subtext" msgid="3633091498168446044">"ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਦੀ ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਡਾਟਾ ਵਰਤੋਂ ਨੀਤੀ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ"</string>
+ <string name="cell_broadcast_sms" msgid="5584192824053625842">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS"</string>
+ <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS"</string>
+ <string name="cell_bc_sms_enable" msgid="6441688565738921084">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS ਸਮਰਥਿਤ"</string>
+ <string name="cell_bc_sms_disable" msgid="3398365088309408749">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS ਅਸਮਰਥਿਤ"</string>
+ <string name="cb_sms_settings" msgid="651715019785107312">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS ਸੈਟਿੰਗਾਂ"</string>
+ <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"ਸੈਲ ਪ੍ਰਸਾਰਨ"</string>
+ <string name="emergency_broadcast_enable" msgid="2645980025414010211">"ਸੈਲ ਪ੍ਰਸਾਰਨ ਸਮਰਥਿਤ"</string>
+ <string name="emergency_broadcast_disable" msgid="3665199821267569426">"ਸੈਲ ਪ੍ਰਸਾਰਨ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_administrative" msgid="6501582322182059412">"ਪ੍ਰਬੰਧਕੀ"</string>
+ <string name="administrative_enable" msgid="1750086122962032235">"ਪ੍ਰਬੰਧਕੀ ਸਮਰਥਿਤ"</string>
+ <string name="administrative_disable" msgid="8433273857248698539">"ਪ੍ਰਬੰਧਕੀ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_maintenance" msgid="1819693083025106678">"ਪ੍ਰਬੰਧਨ"</string>
+ <string name="maintenance_enable" msgid="8566636458770971189">"ਪ੍ਰਬੰਧਨ ਸਮਰਥਿਤ"</string>
+ <string name="maintenance_disable" msgid="7340189100885066077">"ਪ੍ਰਬੰਧਨ ਅਸਮਰਥਿਤ"</string>
+ <string name="general_news_settings" msgid="4968779723948432978">"ਸਧਾਰਨ ਖ਼ਬਰਾਂ"</string>
+ <string name="bf_news_settings" msgid="3935593091894685267">"ਵਪਾਰਕ ਅਤੇ ਵਿੱਤੀ ਖ਼ਬਰਾਂ"</string>
+ <string name="sports_news_settings" msgid="7649399631270052835">"ਖੇਡ ਦੀਆਂ ਖ਼ਬਰਾਂ"</string>
+ <string name="entertainment_news_settings" msgid="5051153952959405035">"ਮਨੋਰੰਜਕ ਖ਼ਬਰਾਂ"</string>
+ <string name="enable_disable_local" msgid="7890281063123416120">"ਸਥਾਨਕ"</string>
+ <string name="local_enable" msgid="6370463247609136359">"ਸਥਾਨਕ ਖ਼ਬਰਾਂ ਸਮਰਥਿਤ"</string>
+ <string name="local_disable" msgid="4405691986943795798">"ਸਥਾਨਕ ਖ਼ਬਰਾਂ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_regional" msgid="4905652414535565872">"ਖੇਤਰੀ"</string>
+ <string name="regional_enable" msgid="4434680415437834759">"ਖੇਤਰੀ ਖ਼ਬਰਾਂ ਸਮਰਥਿਤ"</string>
+ <string name="regional_disable" msgid="5359325527213850077">"ਖੇਤਰੀ ਖ਼ਬਰਾਂ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_national" msgid="236278090206880734">"ਰਾਸ਼ਟਰੀ"</string>
+ <string name="national_enable" msgid="1172443648912246952">"ਰਾਸ਼ਟਰੀ ਖ਼ਬਰਾਂ ਸਮਰਥਿਤ"</string>
+ <string name="national_disable" msgid="326018148178601166">"ਰਾਸ਼ਟਰੀ ਖ਼ਬਰਾਂ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_international" msgid="7535348799604565592">"ਅੰਤਰਰਾਸ਼ਟਰੀ"</string>
+ <string name="international_enable" msgid="5855356769925044927">"ਅੰਤਰਰਾਸ਼ਟਰੀ ਖ਼ਬਰਾਂ ਸਮਰਥਿਤ"</string>
+ <string name="international_disable" msgid="2850648591041088931">"ਅੰਤਰਰਾਸ਼ਟਰੀ ਖ਼ਬਰਾਂ ਅਸਮਰਥਿਤ"</string>
+ <string name="list_language_title" msgid="2841683501919760043">"ਭਾਸ਼ਾ"</string>
+ <string name="list_language_summary" msgid="8109546531071241601">"ਖ਼ਬਰਾਂ ਦੀ ਭਾਸ਼ਾ ਚੁਣੋ"</string>
+ <string-array name="list_language_entries">
+ <item msgid="6137851079727305485">"ਅੰਗ੍ਰੇਜ਼ੀ"</item>
+ <item msgid="1151988412809572526">"ਫਰਾਂਸੀਸੀ"</item>
+ <item msgid="577840534704312665">"ਸਪੇਨੀ"</item>
+ <item msgid="8385712091143148180">"ਜਾਪਾਨੀ"</item>
+ <item msgid="1858401628368130638">"ਕੋਰੀਆਈ"</item>
+ <item msgid="1933212028684529632">"ਚੀਨੀ"</item>
+ <item msgid="1908428006803639064">"ਹਿਬਰੀ"</item>
+ </string-array>
+ <string-array name="list_language_values">
+ <item msgid="1804908636436467150">"1"</item>
+ <item msgid="289708030346890334">"2"</item>
+ <item msgid="1121469729692402684">"3"</item>
+ <item msgid="2614093115912897722">"4"</item>
+ <item msgid="2411164639857960614">"5"</item>
+ <item msgid="5884448729274543324">"6"</item>
+ <item msgid="5511864807618312598">"7"</item>
+ </string-array>
+ <string name="list_language_dtitle" msgid="5442908726538951934">"ਭਾਸ਼ਾਵਾਂ"</string>
+ <string name="enable_disable_local_weather" msgid="986967454867219114">"ਸਥਾਨਕ ਮੌਸਮ"</string>
+ <string name="local_weather_enable" msgid="6199315114382448922">"ਸਥਾਨਕ ਮੌਸਮ ਸਮਰਥਿਤ"</string>
+ <string name="local_weather_disable" msgid="2510158089142626480">"ਸਥਾਨਕ ਮੌਸਮ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_atr" msgid="8339572391278872343">"ਖੇਤਰ ਟ੍ਰੈਫਿਕ ਰਿਪੋਰਟਾਂ"</string>
+ <string name="atr_enable" msgid="5541757457789181799">"ਏਰੀਆ ਟ੍ਰੈਫਿਕ ਰਿਪੋਰਟਾਂ ਸਮਰਥਿਤ"</string>
+ <string name="atr_disable" msgid="7085558154727596455">"ਏਰੀਆ ਟ੍ਰੈਫਿਕ ਰਿਪੋਰਟਾਂ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_lafs" msgid="668189073721277199">"ਸਥਾਨਕ ਏਅਰਪੋਰਟ ਫਲਾਈਟ ਦੀਆਂ ਸਮਾਂ ਸੂੂਚੀਆਂ"</string>
+ <string name="lafs_enable" msgid="2791978667205137052">"ਸਥਾਨਕ ਏਅਰਪੋਰਟ ਫਲਾਈਟ ਦੀਆਂ ਸਮਾਂ ਸੂੂਚੀਆਂ ਸਮਰਥਿਤ"</string>
+ <string name="lafs_disable" msgid="2391212397725495350">"ਸਥਾਨਕ ਏਅਰਪੋਰਟ ਫਲਾਈਟ ਦੀਆਂ ਸਮਾਂ ਸੂੂਚੀਆਂ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_restaurants" msgid="6240381945336814024">"ਰੈਸਟੋਰੈਂਟ"</string>
+ <string name="restaurants_enable" msgid="5137657479469118847">"ਰੈਸਟੋਰੈਂਟ ਸਮਰਥਿਤ"</string>
+ <string name="restaurants_disable" msgid="3678480270938424092">"ਰੈਸਟੋਰੈਂਟ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_lodgings" msgid="1822029172658551202">"ਆਵਾਸ"</string>
+ <string name="lodgings_enable" msgid="3230042508992850322">"ਆਵਾਸ ਸਮਰਥਿਤ"</string>
+ <string name="lodgings_disable" msgid="3387879742320682391">"ਆਵਾਸ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_retail_directory" msgid="1357809784475660303">"ਰੀਟੇਲ ਡਾਇਰੈਕਟਰੀ"</string>
+ <string name="retail_directory_enable" msgid="3280626290436111496">"ਰੀਟੇਲ ਡਾਇਰੈਕਟਰੀ ਸਮਰਥਿਤ"</string>
+ <string name="retail_directory_disable" msgid="6479739816662879027">"ਰੀਟੇਲ ਡਾਇਰੈਕਟਰੀ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_advertisements" msgid="5999495926176182128">"ਇਸ਼ਤਿਹਾਰ"</string>
+ <string name="advertisements_enable" msgid="2050305021264683786">"ਇਸ਼ਤਿਹਾਰ ਸਮਰਥਿਤ"</string>
+ <string name="advertisements_disable" msgid="8350985908788707935">"ਇਸ਼ਤਿਹਾਰ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_stock_quotes" msgid="6397810445293533603">"ਸਟੌਕ ਕੋਟਸ"</string>
+ <string name="stock_quotes_enable" msgid="4384802470887170543">"ਸਟੌਕ ਕੋਟਸ ਸਮਰਥਿਤ"</string>
+ <string name="stock_quotes_disable" msgid="4781450084565594998">"ਸਟੌਕ ਕੋਟਸ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_eo" msgid="4863043263443942494">"ਰੁਜ਼ਗਾਰ ਮੌਕੇ"</string>
+ <string name="eo_enable" msgid="8623559062015685813">"ਰੁਜ਼ਗਾਰ ਮੌਕੇ ਸਮਰਥਿਤ"</string>
+ <string name="eo_disable" msgid="3863812478090907609">"ਰੁਜ਼ਗਾਰ ਮੌਕੇ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_mhh" msgid="908214593528968522">"ਚਿਕਿਤਸਾ, ਸਿਹਤ ਅਤੇ ਹਸਪਤਾਲ"</string>
+ <string name="mhh_enable" msgid="5544500632306446815">"ਚਿਕਿਤਸਾ, ਸਿਹਤ ਅਤੇ ਹਸਪਤਾਲ ਸਮਰਥਿਤ"</string>
+ <string name="mhh_disable" msgid="8998210550117117437">"ਚਿਕਿਤਸਾ, ਸਿਹਤ ਅਤੇ ਹਸਪਤਾਲ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_technology_news" msgid="3517184627114999149">"ਟੈਕਨਾਲੋਜੀ ਖ਼ਬਰਾਂ"</string>
+ <string name="technology_news_enable" msgid="7995209394210455181">"ਟੈਕਨਾਲੋਜੀ ਖ਼ਬਰਾਂ ਸਮਰਥਿਤ"</string>
+ <string name="technology_news_disable" msgid="5483490380561851946">"ਟੈਕਨਾਲੋਜੀ ਖ਼ਬਰਾਂ ਅਸਮਰਥਿਤ"</string>
+ <string name="enable_disable_multi_category" msgid="626771003122899280">"ਮਲਟੀ-ਸ਼੍ਰੇਣੀ"</string>
+ <string name="multi_category_enable" msgid="1179299804641721768">"ਮਲਟੀ-ਸ਼੍ਰੇਣੀ ਸਮਰਥਿਤ"</string>
+ <string name="multi_category_disable" msgid="880104702904139505">"ਮਲਟੀ-ਸ਼੍ਰੇਣੀ ਅਸਮਰਥਿਤ"</string>
+ <string name="network_lte" msgid="7702681952521375754">"LTE (ਸਿਫਾਰਿਸ਼ ਕੀਤਾ)"</string>
+ <string name="network_4G" msgid="2723512640529983138">"4G (ਸਿਫਾਰਿਸ਼ ਕੀਤਾ)"</string>
+ <string name="network_global" msgid="1323190488685355309">"ਗਲੋਬਲ"</string>
+ <string name="cdma_system_select_title" msgid="5757657769327732833">"ਸਿਸਟਮ ਚੁਣੋ"</string>
+ <string name="cdma_system_select_summary" msgid="60460043745797517">"CDMA ਰੋਮਿੰਗ ਮੋਡ ਬਦਲੋ"</string>
+ <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"ਸਿਸਟਮ ਚੁਣੋ"</string>
+ <string-array name="cdma_system_select_choices">
+ <item msgid="176474317493999285">"ਕੇਵਲ ਘਰ"</item>
+ <item msgid="1205664026446156265">"ਆਟੋਮੈਟਿਕ"</item>
+ </string-array>
+ <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA ਸਬਸਕ੍ਰਿਪਸ਼ਨ"</string>
+ <string name="cdma_subscription_summary" msgid="2530890766115781140">"RUIM/SIM ਅਤੇ NV ਵਿਚਕਾਰ ਬਦਲੋ"</string>
+ <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"ਸਬਸਕ੍ਰਿਪਸ਼ਨ"</string>
+ <string-array name="cdma_subscription_choices">
+ <item msgid="2258014151300708431">"RUIM/SIM"</item>
+ <item msgid="5127722015571873880">"NV"</item>
+ </string-array>
+ <string-array name="cdma_subscription_values">
+ <item msgid="7494167883478914080">"0"</item>
+ <item msgid="6043847456049107742">"1"</item>
+ </string-array>
+ <string name="cdma_activate_device" msgid="3793805892364814518">"ਡਿਵਾਈਸ ਨੂੰ ਸਕਿਰਿਆ ਕਰੋ"</string>
+ <string name="cdma_lte_data_service" msgid="4255018217292548962">"ਡਾਟਾ ਸੇਵਾ ਸੈਟ ਅਪ ਕਰੋ"</string>
+ <string name="carrier_settings_title" msgid="9028166176523012300">"ਕੈਰੀਅਰ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="fdn" msgid="7878832555095183202">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="manage_fdn_list" msgid="8777755791892122369">"FDN ਸੂਚੀ"</string>
+ <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN ਸੂਚੀ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn_activation" msgid="2156479741307463576">"FDN ਸਕਿਰਿਆਕਰਨ"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਸਮਰਥਿਤ ਹਨ"</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਅਸਮਰਥਿਤ ਹਨ"</string>
+ <string name="enable_fdn" msgid="3740191529180493851">"FDN ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="disable_fdn" msgid="7944020890722540616">"FDN ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="change_pin2" msgid="2153563695382176676">"PIN2 ਬਦਲੋ"</string>
+ <string name="enable_fdn_ok" msgid="7215588870329688132">"FDN ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="disable_fdn_ok" msgid="5727046928930740173">"FDN ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+ <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN ਪਹੁੰਚ ਲਈ PIN ਬਦਲੋ"</string>
+ <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ਫੋਨ ਨੰਬਰ ਸੂਚੀ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+ <string name="voice_privacy" msgid="3776841382844614716">"ਵੌਇਸ ਪ੍ਰਾਈਵੇਸੀ"</string>
+ <string name="voice_privacy_summary" msgid="3159383389833516214">"ਵਿਸਤ੍ਰਿਤ ਪ੍ਰਾਈਵੇਸੀ ਮੋਡ ਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY ਮੋਡ"</string>
+ <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY ਮੋਡ ਸੈਟ ਕਰੋ"</string>
+ <string name="auto_retry_mode_title" msgid="4073265511427813322">"ਆਟੋ-ਰੀਟ੍ਰਾਈ"</string>
+ <string name="auto_retry_mode_summary" msgid="4973886004067532288">"ਆਟੋ-ਰੀਟ੍ਰਾਈ ਮੋਡ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY ਮੋਡ ਪਰਿਵਰਤਨ ਨੂੰ ਵੀਡੀਓ ਕਾਲ ਦੇ ਦੌਰਾਨ ਅਨੁਮਤੀ ਨਹੀਂ ਹੈ"</string>
+ <string name="menu_add" msgid="1882023737425114762">"ਸੰਪਰਕ ਜੋੜੋ"</string>
+ <string name="menu_edit" msgid="7143003705504672374">"ਸੰਪਰਕ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
+ <string name="menu_delete" msgid="3977150783449642851">"ਸੰਪਰਕ ਮਿਟਾਓ"</string>
+ <string name="get_pin2" msgid="8204677063922225311">"PIN2 ਟਾਈਪ ਕਰੋ"</string>
+ <string name="name" msgid="7329028332786872378">"ਨਾਮ"</string>
+ <string name="number" msgid="7905950798349903858">"ਨੰਬਰ"</string>
+ <string name="save" msgid="4094274636321939086">"ਸੁਰੱਖਿਅਤ ਕਰੋ"</string>
+ <string name="add_fdn_contact" msgid="2481915899633353976">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਜੋੜੋ"</string>
+ <string name="adding_fdn_contact" msgid="7627379633721940991">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਜੋੜ ਰਿਹਾ ਹੈ…"</string>
+ <string name="fdn_contact_added" msgid="7458335758501736665">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਜੋੜਿਆ ਗਿਆ।"</string>
+ <string name="edit_fdn_contact" msgid="7976936035587081480">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
+ <string name="updating_fdn_contact" msgid="8370929876849803600">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਅਪਡੇਟ ਕਰ ਰਿਹਾ ਹੈ..."</string>
+ <string name="fdn_contact_updated" msgid="5497828782609005017">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਅਪਡੇਟ ਕੀਤਾ।"</string>
+ <string name="delete_fdn_contact" msgid="6668958073074151717">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਮਿਟਾਓ"</string>
+ <string name="deleting_fdn_contact" msgid="5669163206349319969">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਮਿਟਾ ਰਿਹਾ ਹੈ…"</string>
+ <string name="fdn_contact_deleted" msgid="7154162327112259569">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਮਿਟਾਇਆ।"</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"FDN ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ ਕਿਉਂਕਿ ਤੁਸੀਂ ਇੱਕ ਗ਼ਲਤ PIN ਟਾਈਪ ਕੀਤਾ ਸੀ।"</string>
+ <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ ਕਿਉਂਕਿ ਨੰਬਰ 20 ਅੰਕਾਂ ਤੋਂ ਵੱਧ ਨਹੀਂ ਹੋ ਸਕਦਾ।"</string>
+ <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ। PIN2 ਗ਼ਲਤ ਸੀ ਜਾਂ ਫੋਨ ਨੰਬਰ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਸੀ।"</string>
+ <string name="fdn_failed" msgid="540018079008319747">"FDN ਓਪਰੇਸ਼ਨ ਅਸਫਲ।"</string>
+ <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM ਕਾਰਡ ਤੋਂ ਪੜ੍ਹ ਰਿਹਾ ਹੈ…"</string>
+ <string name="simContacts_empty" msgid="5270660846489561932">"ਤੁਹਾਡੇ SIM ਕਾਰਡ ਤੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ।"</string>
+ <string name="simContacts_title" msgid="1861472842524839921">"ਆਯਾਤ ਕਰਨ ਲਈ ਸੰਪਰਕ ਚੁਣੋ"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM ਕਾਰਡ ਤੋਂ ਸੰਪਰਕ ਆਯਾਤ ਕਰਨ ਲਈ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
+ <string name="enable_pin" msgid="5422767284133234860">"SIM PIN ਨੂੰ ਸਮਰੱਥ/ਅਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="change_pin" msgid="9174186126330785343">"SIM PIN ਬਦਲੋ"</string>
+ <string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
+ <string name="oldPinLabel" msgid="5287773661246368314">"ਪੁਰਾਣਾ PIN"</string>
+ <string name="newPinLabel" msgid="207488227285336897">"ਨਵਾਂ PIN"</string>
+ <string name="confirmPinLabel" msgid="257597715098070206">"ਨਵੇਂ PIN ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
+ <string name="badPin" msgid="8955102849303984935">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤਾ ਪੁਰਾਣਾ PIN ਠੀਕ ਨਹੀਂ ਹੈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="mismatchPin" msgid="5923253370683071889">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤੇ PIN ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="invalidPin" msgid="5981171102258684792">"ਇੱਕ PIN ਟਾਈਪ ਕਰੋ ਜੋ 4 ਤੋਂ 8 ਸੰਖਿਆਵਾਂ ਦਾ ਹੋਵੇ।"</string>
+ <string name="disable_sim_pin" msgid="3419351358300716472">"SIM PIN ਹਟਾਓ"</string>
+ <string name="enable_sim_pin" msgid="4845145659651484248">"SIM PIN ਸੈਟ ਕਰੋ"</string>
+ <string name="enable_in_progress" msgid="3417917024688497010">"PIN ਸੈਟ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="enable_pin_ok" msgid="2918545971413270063">"PIN ਸੈਟ ਕਰੋ"</string>
+ <string name="disable_pin_ok" msgid="2109571368635883688">"PIN ਹਟਾਇਆ"</string>
+ <string name="pin_failed" msgid="5644377896213584760">"PIN ਗ਼ਲਤ"</string>
+ <string name="pin_changed" msgid="4455736268023261662">"PIN ਅਪਡੇਟ ਕੀਤਾ"</string>
+ <string name="puk_requested" msgid="5921393215789090200">"ਪਾਸਵਰਡ ਗ਼ਲਤ। PIN ਹੁਣ ਬਲੌਕ ਕੀਤਾ। PUK ਦੀ ਬੇਨਤੀ ਕੀਤੀ।"</string>
+ <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
+ <string name="oldPin2Label" msgid="8559146795026261502">"ਪੁਰਾਣਾ PIN2"</string>
+ <string name="newPin2Label" msgid="4573956902204349054">"ਨਵਾਂ PIN2"</string>
+ <string name="confirmPin2Label" msgid="8100319484454787708">"ਨਵੇਂ PIN2 ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
+ <string name="badPuk2" msgid="7910064009531541708">"PUK2 ਗ਼ਲਤ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="badPin2" msgid="6646896629970023109">"ਪੁਰਾਣਾ PIN2 ਗ਼ਲਤ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="mismatchPin2" msgid="4177967478551851117">"PIN ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <string name="invalidPin2" msgid="1757045131429105595">"ਇੱਕ PIN2 ਦਰਜ ਕਰੋ ਜੋ 4 ਤੋਂ 8 ਸੰਖਿਆਵਾਂ ਦਾ ਹੋਵੇ।"</string>
+ <string name="invalidPuk2" msgid="7059081153334815973">"ਇੱਕ PUK2 ਦਰਜ ਕਰੋ ਜੋ 8 ਸੰਖਿਆਵਾਂ ਦਾ ਹੋਵੇ।"</string>
+ <string name="pin2_changed" msgid="3724522579945610956">"PIN2 ਅਪਡੇਟ ਕੀਤਾ"</string>
+ <string name="label_puk2_code" msgid="4688069961795341948">"PUK2 ਕੋਡ ਦਰਜ ਕਰੋ"</string>
+ <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"ਪਾਸਵਰਡ ਗ਼ਲਤ। PIN2 ਹੁਣ ਬਲੌਕ ਕੀਤਾ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ PIN 2 ਬਦਲੋ।"</string>
+ <string name="puk2_requested" msgid="5831015200030161434">"ਪਾਸਵਰਡ ਗ਼ਲਤ। SIM ਹੁਣ ਲੌਕ ਹੈ। PUK2 ਦਰਜ ਕਰੋ।"</string>
+ <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 ਸਥਾਈ ਤੌਰ ਤੇ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।"</string>
+ <string name="pin2_attempts" msgid="720736232885011507">\n"ਤੁਹਾਡੇ ਕੋਲ <xliff:g id="NUMBER">%d</xliff:g> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ।"</string>
+ <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 ਹੁਣ ਬਲੌਕ ਨਹੀਂ ਹੈ"</string>
+ <string name="doneButton" msgid="2859593360997984240">"ਹੋ ਗਿਆ"</string>
+ <string name="voicemail_settings_number_label" msgid="8524164258691887790">"ਵੌਇਸਮੇਲ ਨੰਬਰ"</string>
+ <string name="card_title_dialing" msgid="5769417478498348054">"ਡਾਇਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="card_title_redialing" msgid="8253487008234167266">"ਮੁੜ ਡਾਇਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="card_title_conf_call" msgid="1162980346189744501">"ਕਾਨਫਰੰਸ ਕਾਲ"</string>
+ <string name="card_title_incoming_call" msgid="7364539451234646909">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
+ <string name="card_title_call_ended" msgid="5544730338889702298">"ਕਾਲ ਖ਼ਤਮ ਹੋਈ"</string>
+ <string name="card_title_on_hold" msgid="821463117892339942">"ਹੋਲਡ ਤੇ"</string>
+ <string name="card_title_hanging_up" msgid="3999101620995182450">"ਹੈਂਗ ਅਪ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="card_title_in_call" msgid="6346543933068225205">"ਇਨ ਕਾਲ"</string>
+ <string name="notification_dialing" msgid="2107666444937350731">"ਡਾਇਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="notification_missedCallTitle" msgid="7554385905572364535">"ਮਿਸਡ ਕਾਲ"</string>
+ <string name="notification_missedCallsTitle" msgid="1361677948941502522">"ਮਿਸਡ ਕਾਲਾਂ"</string>
+ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ਮਿਸਡ ਕਾਲਾਂ"</string>
+ <string name="notification_missedCallTicker" msgid="504686252427747209">"<xliff:g id="MISSED_CALL_FROM">%s</xliff:g> ਵੱਲੋਂ ਮਿਸਡ ਕਾਲ"</string>
+ <string name="notification_ongoing_call" msgid="7068688957273482989">"ਜਾਰੀ ਕਾਲ"</string>
+ <string name="notification_on_hold" msgid="3480694969511790465">"ਹੋਲਡ ਤੇ"</string>
+ <string name="notification_incoming_call" msgid="2820429205043529642">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
+ <string name="notification_voicemail_title" msgid="8933468752045550523">"ਨਵੀਂ ਵੌਇਸਮੇਲ"</string>
+ <string name="notification_voicemail_title_count" msgid="4366360747660929916">"ਨਵੀਂ ਵੌਇਸਮੇਲ (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+ <string name="notification_voicemail_text_format" msgid="4447323569453981685">"<xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g> ਡਾਇਲ ਕਰੋ"</string>
+ <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ਵੌਇਸਮੇਲ ਨੰਬਰ ਅਗਿਆਤ"</string>
+ <string name="notification_network_selection_title" msgid="4224455487793492772">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ"</string>
+ <string name="notification_network_selection_text" msgid="2607085729661923269">"ਚੁਣੇ ਗਏ ਨੈਟਵਰਕ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ਅਣਉਪਲਬਧ"</string>
+ <string name="notification_action_end_call" msgid="6069460915123531620">"ਹੈਂਗ ਅਪ ਕਰੋ"</string>
+ <string name="notification_missedCall_call_back" msgid="2684890353590890187">"ਕਾਲ ਬੈਕ ਕਰੋ"</string>
+ <string name="notification_missedCall_message" msgid="3049928912736917988">"ਸੁਨੇਹਾ"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ ਜਾਂ ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
+ <string name="incall_error_emergency_only" msgid="4678640422710818317">"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਨਹੀਂ ਕੀਤਾ।"</string>
+ <string name="incall_error_out_of_service" msgid="4100065333878929223">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
+ <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਨੰਬਰ ਦਰਜ ਕਰੋ।"</string>
+ <string name="incall_error_call_failed" msgid="6302746943230078197">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+ <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ਕੜੀ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"ਸੇਵਾ ਸਮਰਥਿਤ ਨਹੀਂ"</string>
+ <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ਕਾਲਾਂ ਸਵਿਚ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+ <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ਕਾਲ ਵੱਖ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+ <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"ਟ੍ਰਾਂਸਫਰ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+ <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ਕਾਨਫਰੰਸ ਕਾਲਾਂ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ।"</string>
+ <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ਕਾਲ ਅਸਵੀਕਾਰ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+ <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ਕਾਲ(ਕਾਲਾਂ) ਰਿਲੀਜ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
+ <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ਐਮਰਜੈਂਸੀ ਕਾਲ"</string>
+ <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ਰੇਡੀਓ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="dial_emergency_error" msgid="1509085166367420355">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਨਹੀਂ ਹੈ।"</string>
+ <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਡਾਇਲ ਕਰੋ।"</string>
+ <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ਡਾਇਲ ਕਰਨ ਲਈ ਕੀਬੋਰਡ ਵਰਤੋ"</string>
+ <string name="onscreenHoldText" msgid="2285258239691145872">"ਹੋਲਡ ਕਰੋ"</string>
+ <string name="onscreenEndCallText" msgid="4403855834875398585">"ਖ਼ਤਮ"</string>
+ <string name="onscreenShowDialpadText" msgid="8561805492659639893">"ਡਾਇਲਪੈਡ"</string>
+ <string name="onscreenMuteText" msgid="5011369181754261374">"ਮਿਊਟ ਕਰੋ"</string>
+ <string name="onscreenAddCallText" msgid="5140385634712287403">"ਕਾਲ ਜੋੜੋ"</string>
+ <string name="onscreenMergeCallsText" msgid="6640195098064538950">"ਕਾਲਾਂ ਸ਼ਾਮਲ ਕਰੋ"</string>
+ <string name="onscreenSwapCallsText" msgid="1602990689244030047">"ਸਵੈਪ ਕਰੋ"</string>
+ <string name="onscreenManageCallsText" msgid="5473231160123254154">"ਕਾਲਾਂ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+ <string name="onscreenManageConferenceText" msgid="6485935856534311346">"ਕਾਨਫਰੰਸ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+ <string name="onscreenAudioText" msgid="1710087112800041743">"ਔਡੀਓ"</string>
+ <string name="onscreenVideoCallText" msgid="4800924186056115442">"ਵੀਡੀਓ ਕਾਲ"</string>
+ <string name="importSimEntry" msgid="6614358325359736031">"ਆਯਾਤ ਕਰੋ"</string>
+ <string name="importAllSimEntries" msgid="1503181169636198673">"ਸਾਰੇ ਆਯਾਤ ਕਰੋ"</string>
+ <string name="importingSimContacts" msgid="7374056215462575769">"SIM ਸੰਪਰਕ ਆਯਾਤ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="importToFDNfromContacts" msgid="2130620207013368580">"ਸੰਪਰਕਾਂ ਤੋਂ ਆਯਾਤ ਕਰੋ"</string>
+ <string name="hac_mode_title" msgid="8740268574688743289">"ਹੀਅਰਿੰਗ ਏਡਸ"</string>
+ <string name="hac_mode_summary" msgid="6833851160514929341">"ਹੀਅਰਿੰਗ ਏਡ ਅਨੁਕੂਲਤਾ ਚਾਲੂ ਕਰੋ"</string>
+ <string-array name="tty_mode_entries">
+ <item msgid="512950011423868021">"TTY ਬੰਦ"</item>
+ <item msgid="3971695875449640648">"TTY ਪੂਰਾ"</item>
+ <item msgid="1937509904407445684">"TTY HCO"</item>
+ <item msgid="5644925873488772224">"TTY VCO"</item>
+ </string-array>
+ <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF ਟੋਨਾਂ"</string>
+ <string name="dtmf_tones_summary" msgid="3351820372864020331">"DTMF ਟੋਨਾਂ ਦੀ ਲੰਮਾਈ ਸੈਟ ਕਰੋ"</string>
+ <string-array name="dtmf_tone_entries">
+ <item msgid="899650777817315681">"ਸਧਾਰਨ"</item>
+ <item msgid="2883365539347850535">"ਲੰਮਾ"</item>
+ </string-array>
+ <string name="network_info_message" msgid="7738596060242881930">"ਨੈਟਵਰਕ ਸੁਨੇਹਾ"</string>
+ <string name="network_error_message" msgid="3394780436230411413">"ਅਸ਼ੁੱਧੀ ਸੁਨੇਹਾ"</string>
+ <string name="ota_title_activate" msgid="8616918561356194398">"ਆਪਣਾ ਫੋਨ ਸਕਿਰਿਆ ਬਣਾਓ"</string>
+ <string name="ota_touch_activate" msgid="6553212803262586244">"ਤੁਹਾਡੇ ਫੋਨ ਨੂੰ ਸਕਿਰਿਆ ਬਣਾਉਣ ਲਈ ਇੱਕ ਖ਼ਾਸ ਕਾਲ ਕੀਤੇ ਜਾਣ ਦੀ ਲੋੜ ਹੈ। \n\n“ਸਕਿਰਿਆ ਬਣਾਓ”, ਨੂੰ ਦਬਾਉਣ ਤੋਂ ਬਾਅਦ, ਤੁਹਾਡੇ ਫੋਨ ਸਕਿਰਿਆ ਬਣਾਉਣ ਲਈ ਮੁਹੱਈਆ ਕੀਤੇ ਨਿਰਦੇਸ਼ ਸੁਣੋ।"</string>
+ <string name="ota_hfa_activation_title" msgid="2234246934160473981">"ਸਕਿਰਿਆ ਬਣਾ ਰਿਹਾ ਹੈ…"</string>
+ <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"ਫੋਨ ਤੁਹਾਡੀ ਮੋਬਾਈਲ ਡਾਟਾ ਸੇਵਾ ਸਕਿਰਿਆ ਨਹੀਂ ਬਣਾ ਸਕਦਾ।\n\nਇਸ ਵਿੱਚ 5 ਮਿੰਟ ਤੱਕ ਲੱਗ ਸਕਦੇ ਹਨ।"</string>
+ <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"ਕੀ ਸਕਿਰਿਆਕਰਨ ਛੱਡਣਾ ਹੈ?"</string>
+ <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"ਜੇਕਰ ਤੁਸੀਂ ਸਕਿਰਿਆਕਰਨ ਛੱਡਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਕਾਲਾਂ ਨਹੀਂ ਕਰ ਸਕਦੇ ਜਾਂ ਮੋਬਾਈਲ ਡਾਟਾ ਨੈਟਵਰਕਾਂ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕਰ ਸਕਦੇ (ਹਾਲਾਂਕਿ ਤੁੁਸੀਂ Wi-Fi ਨੈਟਵਰਕਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰ ਸਕਦੇ ਹੋ)। ਜਦੋਂ ਤੱਕ ਤੁਹਾਡਾ ਫੋਨ ਸਕਿਰਿਆ ਨਾ ਹੋਵੇ, ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਇਸਨੂੰ ਚਾਲੂ ਕਰੋਗੇ, ਹਰ ਵਾਰ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਸਕਿਰਿਆ ਬਣਾਉਣ ਲਈ ਕਿਹਾ ਜਾਏਗਾ।"</string>
+ <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"ਛੱਡੋ"</string>
+ <string name="ota_activate" msgid="1368528132525626264">"ਸਕਿਰਿਆ ਬਣਾਓ"</string>
+ <string name="ota_title_activate_success" msgid="6570240212263372046">"ਫੋਨ ਸਕਿਰਿਆ ਬਣਾਇਆ ਗਿਆ ਹੈ।"</string>
+ <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"ਸਕਿਰਿਆਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ"</string>
+ <string name="ota_listen" msgid="162923839877584937">"ਬੋਲੇ ਗਏ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਇਹ ਨਾ ਸੁਣ ਲਓ ਕਿ ਸਕਿਰਿਆਕਰਨ ਪੂਰਾ ਹੈ।"</string>
+ <string name="ota_speaker" msgid="6904589278542719647">"ਸਪੀਕਰ"</string>
+ <string name="ota_progress" msgid="460876637828044519">"ਤੁਹਾਡਾ ਫੋਨ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="ota_failure" msgid="7713756181204620397">"ਤੁਹਾਡਾ ਫੋਨ ਪ੍ਰੋਗਰਾਮ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
+ <string name="ota_successful" msgid="1880780692887077407">"ਤੁਹਾਡਾ ਫੋਨ ਹੁਣ ਸਕਿਰਿਆ ਬਣਾਇਆ ਗਿਆ ਹੈ। ਸੇਵਾ ਨੂੰ ਚਾਲੂ ਹੋਣ ਵਿੱਚ 15 ਮਿੰਟ ਤੱਕ ਲੱਗ ਸਕਦੇ ਹਨ।"</string>
+ <string name="ota_unsuccessful" msgid="8072141612635635357">"ਤੁਹਾਡਾ ਫੋਨ ਸਕਿਰਿਆ ਨਹੀਂ ਹੋਇਆ ਸੀ। \nਤੁਹਾਨੂੰ ਬਿਹਤਰ ਕਵਰੇਜ ਵਾਲਾ ਇੱਕ ਖੇਤਰ ਲੱਭਣ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ (ਇੱਕ ਖਿੜਕੀ ਦੇ ਨੇੜੇ ਜਾਂ ਬਾਹਰ ਵੱਲ)। \n\n ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਹੋਰ ਚੋਣਾਂ ਲਈ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਕਾਲ ਕਰੋ।"</string>
+ <string name="ota_spc_failure" msgid="3909983542575030796">"ਵਾਧੂ SPC ਅਸਫਲਤਾਵਾਂ"</string>
+ <string name="ota_call_end" msgid="4537279738134612388">"ਪਿੱਛੇ"</string>
+ <string name="ota_try_again" msgid="7685477206465902290">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
+ <string name="ota_next" msgid="3904945374358235910">"ਅਗਲਾ"</string>
+ <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
+ <string name="phone_entered_ecm_text" msgid="6266424252578731203">"ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਦਰਜ ਕੀਤਾ"</string>
+ <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ"</string>
+ <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਅਸਮਰਥਿਤ"</string>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one"> <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਕੋਈ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਨਹੀਂ</item>
+ <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਕੋਈ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਨਹੀਂ</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">ਫੋਨ <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚ ਹੋ ਜਾਏਗਾ। ਇਸ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਇੱਕ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਵਰਤ ਰਹੇ ਕੋਈ ਵੀ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੇ ਨਹੀਂ ਜਾ ਸਕਦੇ ਹਨ। ਕੀ ਤੁਸੀਂ ਹੁਣ ਬਾਹਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?</item>
+ <item quantity="other">ਫੋਨ <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚ ਹੋ ਜਾਏਗਾ। ਇਸ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਇੱਕ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਵਰਤ ਰਹੇ ਕੋਈ ਵੀ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੇ ਨਹੀਂ ਜਾ ਸਕਦੇ ਹਨ। ਕੀ ਤੁਸੀਂ ਹੁਣ ਬਾਹਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">ਚੁਣੀ ਗਈ ਕਿਰਿਆ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੁੰਦੀ ਹੈ। ਫੋਨ <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਇਸ ਮੋਡ ਵਿੱਚ ਹੋਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਹੁਣ ਬਾਹਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?</item>
+ <item quantity="other">ਚੁਣੀ ਗਈ ਕਿਰਿਆ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੁੰਦੀ ਹੈ। ਫੋਨ <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਇਸ ਮੋਡ ਵਿੱਚ ਹੋਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਹੁਣ ਬਾਹਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?</item>
+ </plurals>
+ <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"ਚੁਣੀ ਗਈ ਕਿਰਿਆ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੁੰਦੀ ਹੈ।"</string>
+ <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚੋਂ ਬਾਹਰ ਜਾ ਰਿਹਾ ਹੈ"</string>
+ <string name="alert_dialog_yes" msgid="6674268047820703974">"ਹਾਂ"</string>
+ <string name="alert_dialog_no" msgid="1476091437797628703">"ਨਹੀਂ"</string>
+ <string name="alert_dialog_dismiss" msgid="2491494287075907171">"ਬਰਖਾਸਤ ਕਰੋ"</string>
+ <string name="voicemail_provider" msgid="5135942703327136909">"ਸੇਵਾ"</string>
+ <string name="voicemail_settings" msgid="72448049107749316">"ਸੈਟਅਪ"</string>
+ <string name="voicemail_number_not_set" msgid="6724904736891087856">"<ਸੈਟ ਨਹੀਂ ਕੀਤਾ>"</string>
+ <string name="other_settings" msgid="3672912580359716394">"ਹੋਰ ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ਰਾਹੀਂ ਕਾਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
+ <string name="contactPhoto" msgid="4713193418046639466">"ਸੰਪਰਕ ਫੋਟੋ"</string>
+ <string name="goPrivate" msgid="865837794424530980">"ਨਿੱਜੀ ਜਾਓ"</string>
+ <string name="selectContact" msgid="781975788478987237">"ਸੰਪਰਕ ਚੁਣੋ"</string>
+ <string name="not_voice_capable" msgid="2739898841461577811">"ਵੌਇਸ ਕਾਲਿੰਗ ਸਮਰਥਿਤ ਨਹੀਂ"</string>
+ <string name="description_dial_button" msgid="7459705245418435351">"ਡਾਇਲ ਕਰੋ"</string>
+ <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ਵਾਈਬ੍ਰੇਟ"</string>
+ <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ਵਾਈਬ੍ਰੇਟ"</string>
+ <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ਅਵਾਜ਼"</string>
+ <string name="dial_pad_autocomplete" msgid="7683489952557536398">"ਡਾਇਲਪੈਡ ਆਟੋਕੰਪਲੀਟ"</string>
+ <string name="preference_category_ringtone" msgid="5197960752529332721">"ਰਿੰਗਟੋਨ & ਵਾਈਬ੍ਰੇਟ"</string>
+ <string name="pstn_connection_service_label" msgid="1743245930577325900">"ਬਿਲਟ-ਇਨ SIM ਕਾਰਡ"</string>
+ <string name="enable_video_calling_title" msgid="7237253660669000899">"ਵੀਡੀਓ ਕਾਲਿੰਗ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"ਵੀਡੀਓ ਕਾਲਿੰਗ ਚਾਲੂ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਵਿਸਤ੍ਰਿਤ 4G LTE ਮੋਡ ਸਮਰੱਥ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ।"</string>
+ <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"ਬੰਦ ਕਰੋ"</string>
+ <string name="sim_label_emergency_calls" msgid="4847699229529306397">"ਐਮਰਜੈਂਸੀ ਕਾਲਾਂ"</string>
+ <string name="sim_description_emergency_calls" msgid="7535215397212301562">"ਕੇਵਲ ਐਮਰਜੈਂਸੀ ਕਾਲਿੰਗ"</string>
+ <string name="sim_description_default" msgid="4778679519938775515">"SIM ਕਾਰਡ, ਸਲੌਟ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ਪਹੁੰਚਯੋਗਤਾ"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ਇਨਕਮਿੰਗ Wi-Fi ਕਾਲ"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi ਕਾਲ"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ਖੋਲ੍ਹਣ ਲਈ ਦੁਬਾਰਾ ਛੋਹਵੋ"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"ਸੁਨੇਹਾ ਡੀਕੋਡ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਅਸ਼ੁੱਧੀ ਹੋਈ ਸੀ।"</string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 1807818..1e31f3b 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -55,9 +55,9 @@
<string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Ustawienia sieci komórkowej są niedostępne dla tego użytkownika"</string>
<string name="labelGSMMore" msgid="5930842194056092106">"Ustawienia połączenia GSM"</string>
<string name="labelCDMAMore" msgid="1630676740428229339">"Ustawienia połączenia CDMA"</string>
- <string name="apn_settings" msgid="9043423184895642077">"Punkty dostępowe"</string>
+ <string name="apn_settings" msgid="9043423184895642077">"Punkty dostępu"</string>
<string name="settings_label" msgid="3876743539816984008">"Ustawienia sieci"</string>
- <string name="phone_accounts" msgid="6376603393888116364">"Połączenia z kontami"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"Konta telefoniczne"</string>
<string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Nawiązuj połączenia z konta"</string>
<string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Nawiązuj połączenia SIP z konta"</string>
<string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Najpierw zapytaj"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Konta telefonu"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Dodaj konto SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurowanie ustawień konta"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Połączenie Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Połączenia przez Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Nie używaj połączeń Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Nie używaj asystenta połączeń"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Brak"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfiguruj"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Wbudowana usługa połączeń"</string>
<string name="voicemail" msgid="8693759337917898954">"Poczta głosowa"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Poczta głosowa (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Poczta głosowa:"</string>
<string name="networks" msgid="8873030692174541976">"Operatorzy sieci"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Komunikaty alarmowe"</string>
@@ -88,7 +89,7 @@
<string name="additional_cdma_call_settings" msgid="8628958775721886909">"Dodatkowe ustawienia połączenia CDMA"</string>
<string name="sum_cdma_call_settings" msgid="284753265979035549">"Dodatkowe ustawienia tylko połączenia CDMA"</string>
<string name="labelNwService" msgid="4699970172021870983">"Ustawienia usługi sieciowej"</string>
- <string name="labelCallerId" msgid="3888899447379069198">"ID rozmówcy"</string>
+ <string name="labelCallerId" msgid="3888899447379069198">"Nazwa rozmówcy"</string>
<string name="sum_loading_settings" msgid="1826692909391168620">"Wczytywanie ustawień…"</string>
<string name="sum_hide_caller_id" msgid="1071407020290873782">"Ukrycie numeru podczas rozmów wychodzących"</string>
<string name="sum_show_caller_id" msgid="6768534125447290401">"Numer wyświetlany w połączeniach wychodzących"</string>
@@ -106,17 +107,17 @@
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Numer jest niedostępny"</string>
<string name="sum_cfu_disabled" msgid="8384177689501334080">"Wyłączone"</string>
<string name="labelCFB" msgid="6139853033106283172">"Gdy zajęty"</string>
- <string name="messageCFB" msgid="3711089705936187129">"Numer, gdy zajęty"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"Przekieruj na numer"</string>
<string name="sum_cfb_enabled" msgid="5984198104833116690">"Przekazywanie do <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"Wyłączone"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"Twój operator nie umożliwia wyłączenia przekazywania połączeń, gdy numer jest zajęty."</string>
<string name="labelCFNRy" msgid="1736067178393744351">"Gdy nie odbieram"</string>
- <string name="messageCFNRy" msgid="672317899884380374">"Numer, gdy nieodebrane"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"Przekieruj na numer"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"Przekazywanie do <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Wyłączone"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Twój operator nie umożliwia wyłączenia przekazywania połączeń, gdy numer nie odpowiada."</string>
<string name="labelCFNRc" msgid="2614827454402079766">"Gdy niedostępny"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"Numer, gdy nieosiągalny."</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Przekieruj na numer"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Przekazywanie do <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Wyłączone"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Twój operator nie umożliwia wyłączenia przekazywania połączeń, gdy numer jest nieosiągalny."</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Połącz z usługami przesyłu danych podczas roamingu"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Połącz z usługami przesyłu danych podczas roamingu"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Połączenie transmisji danych zostało utracone, ponieważ opuszczono sieć macierzystą przy wyłączonej opcji danych w roamingu."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Zezwalać na przesyłanie danych w roamingu? Mogą obowiązywać wysokie opłaty."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Mogą się z tym wiązać wysokie opłaty."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Zezwolić na roaming danych?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opcje GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opcje CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Użycie danych"</string>
@@ -343,13 +345,14 @@
<string name="disable_fdn_ok" msgid="5727046928930740173">"Włącz ustalone numery"</string>
<string name="sum_fdn" msgid="1959399454900272878">"Zarządzanie ustalonymi numerami"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"Zmień kod PIN pozwalający na zarządzanie ustalonymi numerami"</string>
- <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Zarządzanie listą numerów telefonów"</string>
+ <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Zarządzaj listą numerów telefonów"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Prywatność połączeń głosowych"</string>
<string name="voice_privacy_summary" msgid="3159383389833516214">"Włącz rozszerzony tryb prywatności"</string>
<string name="tty_mode_option_title" msgid="9033098925144434669">"Tryb TTY"</string>
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Ustaw tryb TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatyczne ponawianie próby"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Włącz tryb automatycznego ponawiania próby"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Trybu TTY nie można zmienić w trakcie rozmowy wideo"</string>
<string name="menu_add" msgid="1882023737425114762">"Dodaj kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Edytuj kontakt"</string>
<string name="menu_delete" msgid="3977150783449642851">"Usuń kontakt"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Czytanie z karty SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Brak kontaktów na karcie SIM"</string>
<string name="simContacts_title" msgid="1861472842524839921">"Wybierz kontakty do importowania"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Aby zaimportować kontakty z karty SIM, najpierw wyłącz tryb samolotowy."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Wyłącz tryb samolotowy, by zaimportować kontakty z karty SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Włącz/wyłącz kod PIN do karty SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Zmień PIN do karty SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"Kod PIN do karty SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Rozłącz"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Oddzwoń"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Wiadomość"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Aby rozpocząć połączenie, wyłącz najpierw tryb samolotowy"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Wyłącz tryb samolotowy, by zadzwonić."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Wyłącz tryb samolotowy lub połącz się z siecią bezprzewodową, by zadzwonić."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Nie zarejestrowano w sieci"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Sieć komórkowa jest niedostępna."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Sieć komórkowa jest niedostępna. Połącz się z siecią bezprzewodową, by zadzwonić."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Aby zadzwonić, wybierz prawidłowy numer."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Nie można dzwonić."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Rozpoczynanie sekwencji MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nie można prowadzić rozmów konferencyjnych."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nie można odrzucić połączenia."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nie można zwolnić połączeń."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Połącz się z siecią bezprzewodową, by zadzwonić."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Połączenie alarmowe"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Trwa włączanie sieci bezprzewodowych..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Brak sieci. Próbuję ponownie…"</string>
@@ -508,18 +514,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Włączono tryb alarmowego połączenia zwrotnego"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Tryb alarmowego połączenia zwrotnego"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Połączenie transmisji danych jest wyłączone"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Brak połączenia transmisji danych przez <xliff:g id="COUNT">%s</xliff:g> min"</item>
- <item quantity="other" msgid="3122217344579273583">"Brak połączenia transmisji danych przez <xliff:g id="COUNT">%s</xliff:g> min"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon będzie w trybie alarmowym połączenia zwrotnego przez <xliff:g id="COUNT">%s</xliff:g> minutę. W tym trybie nie można korzystać z aplikacji używających połączeń danych. Czy chcesz teraz wyjść?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon będzie w trybie alarmowym połączenia zwrotnego przez <xliff:g id="COUNT">%s</xliff:g> min. W tym trybie nie można korzystać z aplikacji używających połączeń danych. Czy chcesz teraz wyjść?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Wybrana akcja nie jest dostępna w trybie alarmowym połączenia zwrotnego. Telefon będzie w tym trybie <xliff:g id="COUNT">%s</xliff:g> min. Czy chcesz teraz wyjść?"</item>
- <item quantity="other" msgid="6115622137771382224">"Wybrana akcja nie jest dostępna w trybie alarmowym połączenia zwrotnego. Telefon będzie w tym trybie <xliff:g id="COUNT">%s</xliff:g> min. Czy chcesz teraz wyjść?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="few">Brak połączenia transmisji danych przez <xliff:g id="COUNT_1">%s</xliff:g> minuty</item>
+ <item quantity="many">Brak połączenia transmisji danych przez <xliff:g id="COUNT_1">%s</xliff:g> minut</item>
+ <item quantity="other">Brak połączenia transmisji danych przez <xliff:g id="COUNT_1">%s</xliff:g> minuty</item>
+ <item quantity="one">Brak połączenia transmisji danych przez <xliff:g id="COUNT_0">%s</xliff:g> minutę</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="few">Telefon będzie w trybie alarmowego połączenia zwrotnego przez <xliff:g id="COUNT_1">%s</xliff:g> minuty. W tym trybie nie można używać aplikacji, które korzystają z połączenia transmisji danych. Chcesz zakończyć tryb teraz?</item>
+ <item quantity="many">Telefon będzie w trybie alarmowego połączenia zwrotnego przez <xliff:g id="COUNT_1">%s</xliff:g> minut. W tym trybie nie można używać aplikacji, które korzystają z połączenia transmisji danych. Chcesz zakończyć tryb teraz?</item>
+ <item quantity="other">Telefon będzie w trybie alarmowego połączenia zwrotnego przez <xliff:g id="COUNT_1">%s</xliff:g> minuty. W tym trybie nie można używać aplikacji, które korzystają z połączenia transmisji danych. Chcesz zakończyć tryb teraz?</item>
+ <item quantity="one">Telefon będzie w trybie alarmowego połączenia zwrotnego przez <xliff:g id="COUNT_0">%s</xliff:g> minutę. W tym trybie nie można używać aplikacji, które korzystają z połączenia transmisji danych. Chcesz zakończyć tryb teraz?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="few">Wybrana czynność jest niedostępna w trybie alarmowego połączenia zwrotnego. Telefon będzie w tym trybie przez <xliff:g id="COUNT_1">%s</xliff:g> minuty. Chcesz zakończyć tryb teraz?</item>
+ <item quantity="many">Wybrana czynność jest niedostępna w trybie alarmowego połączenia zwrotnego. Telefon będzie w tym trybie przez <xliff:g id="COUNT_1">%s</xliff:g> minut. Chcesz zakończyć tryb teraz?</item>
+ <item quantity="other">Wybrana czynność jest niedostępna w trybie alarmowego połączenia zwrotnego. Telefon będzie w tym trybie przez <xliff:g id="COUNT_1">%s</xliff:g> minuty. Chcesz zakończyć tryb teraz?</item>
+ <item quantity="one">Wybrana czynność jest niedostępna w trybie alarmowego połączenia zwrotnego. Telefon będzie w tym trybie przez <xliff:g id="COUNT_0">%s</xliff:g> minutę. Chcesz zakończyć tryb teraz?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Wybrana akcja jest niedostępna przy nawiązanym połączeniu alarmowym."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Kończenie trybu alarmowego połączenia zwrotnego"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Tak"</string>
@@ -548,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Połączenia alarmowe"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tylko połączenia alarmowe"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Karta SIM, gniazdo: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Ułatwienia dostępu"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Przychodzące połączenie przez Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Połączenie przez Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Kliknij ponownie, by otworzyć"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Podczas dekodowania wiadomości wystąpił błąd."</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7593f21..7b74760 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Contas do telemóvel"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Adicionar conta SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configurar as definições da conta"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Chamadas Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Chamadas Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Não utilizar chamadas de Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Não utilizar o assistente de chamadas"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Nenhum"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurar"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Serviço de ligação incorporado"</string>
<string name="voicemail" msgid="8693759337917898954">"Correio de voz"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Correio de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Correio de voz:"</string>
<string name="networks" msgid="8873030692174541976">"Operadores de rede"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmissões de emergência"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Ligar a serviços de dados em roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Ligar a serviços de dados em roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"A conectividade de dados foi perdida porque saiu do alcance da sua rede e o roaming de dados estava desativado."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Pretende permitir a utilização de dados em roaming? Podem aplicar-se custos significativos."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Podem ser cobrados custos significativos."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Pretende permitir roaming de dados?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opções GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opções CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Utilização de dados"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Definir modo TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Nova tentativa automática"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Ativar modo Nova tentativa automática"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Não é permitido alterar o modo teletipo durante uma videochamada"</string>
<string name="menu_add" msgid="1882023737425114762">"Adicionar contacto"</string>
<string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
<string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"A ler a partir do cartão SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Sem contactos no cartão SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Seleccione os contactos a importar"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Para importar contactos do cartão SIM, primeiro desative o Modo de Avião."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Desative o modo de avião para importar contactos do cartão SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Ativar/desativar o PIN do cartão SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Alterar o PIN do cartão SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN do SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Desligar"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ligar de volta"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mensagem"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Para efectuar uma chamada, desactive primeiro o modo para Avião."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Desative o modo de avião para fazer uma chamada."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desative o modo de avião ou ligue-se a uma rede sem fios para fazer uma chamada."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Sem registo na rede."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Rede móvel não disponível."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A rede móvel não está disponível. Ligue-se a uma rede sem fios para fazer uma chamada."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para telefonar, introduza um número válido."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Não é possível telefonar."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"A iniciar sequência de MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Não é possível efectuar chamadas de conferência."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Não é possível rejeitar a chamada."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Não é possível libertar a(s) chamada(s)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Ligue-se a uma rede sem fios para fazer uma chamada."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emergência"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"A ligar o rádio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sem serviço. A tentar novamente…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entrou em Modo de Chamada de Retorno de Emergência"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de Chamada de Retorno de Emergência"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Ligação de dados desativada"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Sem ligação de dados durante <xliff:g id="COUNT">%s</xliff:g> minuto"</item>
- <item quantity="other" msgid="3122217344579273583">"Sem ligação de dados durante <xliff:g id="COUNT">%s</xliff:g> minutos"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"O telemóvel ficará no modo de Chamada de Retorno de Emergência durante <xliff:g id="COUNT">%s</xliff:g> minuto. Enquanto estiver neste modo, não é possível utilizar aplicações que utilizem uma ligação de dados. Pretende sair agora?"</item>
- <item quantity="other" msgid="8617116564023933114">"O telemóvel ficará no modo de Chamada de Retorno de Emergência durante <xliff:g id="COUNT">%s</xliff:g> minutos. Enquanto estiver neste modo, não é possível utilizar aplicações que utilizem uma ligação de dados. Pretende sair agora?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"A ação selecionada não está disponível no modo de Chamada de Retorno de Emergência. O telemóvel ficará neste modo durante <xliff:g id="COUNT">%s</xliff:g> minutos. Pretende sair agora?"</item>
- <item quantity="other" msgid="6115622137771382224">"A ação selecionada não está disponível no modo de Chamada de Retorno de Emergência. O telemóvel ficará neste modo durante <xliff:g id="COUNT">%s</xliff:g> minutos. Pretende sair agora?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Sem ligação de dados durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
+ <item quantity="one">Sem ligação de dados durante <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">O telemóvel fica no modo de Chamada de emergência durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Neste modo, não é possível utilizar aplicações com uma ligação de dados. Pretende sair agora?</item>
+ <item quantity="one">O telemóvel fica no modo de Chamada de emergência durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Neste modo, não é possível utilizar aplicações com uma ligação de dados. Pretende sair agora?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">A ação selecionada não está disponível no modo de Chamada de emergência. O telemóvel fica neste modo durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Pretende sair agora?</item>
+ <item quantity="one">A ação selecionada não está disponível no modo de Chamada de emergência. O telemóvel fica neste modo durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Pretende sair agora?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"A ação selecionada não está disponível durante uma chamada de emergência."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"A sair do modo de chamada de retorno de emergência"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Sim"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Chamadas de emergência"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Apenas chamadas de emergência"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Cartão SIM, ranhura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Acessibilidade"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chamada Wi-Fi recebida"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chamada Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tocar novamente para abrir"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Ocorreu um erro durante a descodificação da mensagem."</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 3ba5032..6fe7506 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Contas de telefone"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Adicionar conta SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configurar conta"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Chamadas por Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Chamadas por Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Não usar chamadas por Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Não usar o assistente de chamada"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Nenhum"</string>
@@ -78,12 +78,13 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurar"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Serviço de conexão integrado"</string>
<string name="voicemail" msgid="8693759337917898954">"Correio de voz"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Correio de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Operadoras de rede"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmissões de emergência"</string>
<string name="call_settings" msgid="6112441768261754562">"Configurações de chamadas"</string>
- <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Configurações adicionais"</string>
- <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Configurações adicionais (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Config. adicionais"</string>
+ <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Config. adicionais (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="sum_gsm_call_settings" msgid="4076647190996778012">"Configurações adicionais somente de chamada GSM"</string>
<string name="additional_cdma_call_settings" msgid="8628958775721886909">"Configurações de chamada CDMA adicionais"</string>
<string name="sum_cdma_call_settings" msgid="284753265979035549">"Configurações adicionais somente de chamada CDMA"</string>
@@ -96,8 +97,8 @@
<string name="labelCW" msgid="6120513814915920200">"Chamada em espera"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"Durante uma chamada, me avise sobre chamadas recebidas"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"Durante uma chamada, me avise sobre chamadas recebidas"</string>
- <string name="call_forwarding_settings" msgid="3378927671091537173">"Configurações de encaminhamento de chamada"</string>
- <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Configurações de encaminhamento de chamada (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"Config. de encaminhamento de chamada"</string>
+ <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Config. de encaminhamento de chamada (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="labelCF" msgid="2574386948026924737">"Encaminhamento"</string>
<string name="labelCFU" msgid="8147177368148660600">"Sempre encaminhar"</string>
<string name="messageCFU" msgid="3560082430662923687">"Sempre usar este número"</string>
@@ -116,7 +117,7 @@
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Desativado"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Sua operadora não suporta a desativação do encaminhamento de chamada quando seu telefone não responde."</string>
<string name="labelCFNRc" msgid="2614827454402079766">"Quando inacessível"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"Número quando não acessível"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Número quando inacessível"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Encaminhando para <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Desativado"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Sua operadora não suporta a desativação do encaminhamento de chamada quando seu telefone não está acessível."</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Conectar aos serviços de dados quando estiver em roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Conectar aos serviços de dados quando estiver em roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Você perdeu a conectividade de dados porque deixou o roaming de dados de sua rede doméstica desativado."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Permitir o uso de dados em roaming? Podem ser aplicadas taxas significativas."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Pode acarretar cobranças significativas"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Permitir roaming de dados?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opções GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opções CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Uso de dados"</string>
@@ -346,10 +348,11 @@
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Gerenciar lista de números telefônicos"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Privacidade de voz"</string>
<string name="voice_privacy_summary" msgid="3159383389833516214">"Ativar modo de privacidade aprimorado"</string>
- <string name="tty_mode_option_title" msgid="9033098925144434669">"Modo TTY"</string>
- <string name="tty_mode_option_summary" msgid="1073835131534808732">"Definir modo TTY"</string>
+ <string name="tty_mode_option_title" msgid="9033098925144434669">"Modo TTD"</string>
+ <string name="tty_mode_option_summary" msgid="1073835131534808732">"Definir modo TTD"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Repetir automaticamente"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Ativar modo Repetir automaticamente"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Não é permitida a alteração do modo TTD durante uma vídeo chamada"</string>
<string name="menu_add" msgid="1882023737425114762">"Adicionar contato"</string>
<string name="menu_edit" msgid="7143003705504672374">"Editar contato"</string>
<string name="menu_delete" msgid="3977150783449642851">"Excluir contato"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lendo a partir do cartão SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Não há contatos no seu cartão SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Selecione os contatos a serem importados"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Para importar os contatos do cartão SIM, primeiro desligue o modo avião."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Desative o modo avião para importar contatos do cartão SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Ativar/desativar PIN do SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Alterar PIN do SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN do SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Desligar"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Retornar chamada"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mensagem"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Para fazer uma chamada, primeiro desative o modo avião."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Desative o modo avião para fazer uma chamada."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desative o modo avião ou conecte-se a uma rede sem fio para fazer uma chamada."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Não registrado na rede."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Rede celular não disponível."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A rede celular não está disponível. Conecte-se a uma rede sem fio para fazer uma chamada."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar uma chamada, digite um número válido."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Não é possível realizar chamadas."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciando sequência MMI…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Não é possível realizar conferências telefônicas."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Não é possível rejeitar a chamada."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Não é possível liberar chamadas."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conecte-se a uma rede sem fio para fazer uma chamada."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emergência"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ativando o rádio…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sem serviço. Tentando novamente..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modo de retorno de chamada de emergência acessado"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de retorno de chamada de emergência"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexão de dados desativada"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Nenhuma conexão de dados durante <xliff:g id="COUNT">%s</xliff:g> minuto"</item>
- <item quantity="other" msgid="3122217344579273583">"Nenhuma conexão de dados durante <xliff:g id="COUNT">%s</xliff:g> minutos"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"O telefone estará no modo de retorno de chamada de emergência por <xliff:g id="COUNT">%s</xliff:g> minuto. Nesse modo, nenhum app que utiliza uma conexão de dados pode ser usado. Você deseja sair agora?"</item>
- <item quantity="other" msgid="8617116564023933114">"O telefone estará no modo de retorno de chamada de emergência por <xliff:g id="COUNT">%s</xliff:g> minutos. Nesse modo, nenhum app que utiliza uma conexão de dados pode ser usado. Você deseja sair agora?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"A ação selecionada não está disponível no modo de retorno de chamada de emergência. O telefone estará nesse modo por <xliff:g id="COUNT">%s</xliff:g> minuto. Você deseja sair agora?"</item>
- <item quantity="other" msgid="6115622137771382224">"A ação selecionada não está disponível no modo de retorno de chamada de emergência. O telefone estará nesse modo por <xliff:g id="COUNT">%s</xliff:g> minutos. Você deseja sair agora?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Nenhuma conexão de dados durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
+ <item quantity="other">Nenhuma conexão de dados durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">O smartphone ficará no modo de retorno de chamada de emergência por <xliff:g id="COUNT_1">%s</xliff:g> minutos. Nesse modo, não será possível usar apps que utilizem conexão de dados. Deseja sair agora?</item>
+ <item quantity="other">O smartphone ficará no modo de retorno de chamada de emergência por <xliff:g id="COUNT_1">%s</xliff:g> minutos. Nesse modo, não será possível usar apps que utilizem conexão de dados. Deseja sair agora?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">A ação selecionada não está disponível no modo de retorno de chamada de emergência. O smartphone ficará nesse modo por <xliff:g id="COUNT_1">%s</xliff:g> minutos. Deseja sair agora?</item>
+ <item quantity="other">A ação selecionada não está disponível no modo de retorno de chamada de emergência. O smartphone ficará nesse modo por <xliff:g id="COUNT_1">%s</xliff:g> minutos. Deseja sair agora?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"A ação selecionada não está disponível durante uma chamada de emergência."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Saindo do modo de retorno de chamada de emergência"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Sim"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Chamadas de emergência"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Somente chamadas de emergência"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Cartão SIM, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Acessibilidade"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chamada por Wi-Fi recebida"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chamada por Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Toque novamente para abrir"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Ocorreu um erro ao decodificar a mensagem."</string>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 69370df..fc89323 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -28,7 +28,7 @@
<string name="mmiStarted" msgid="6347869857061147003">"Cod MMI pornit"</string>
<string name="ussdRunning" msgid="485588686340541690">"Se rulează codul USSD..."</string>
<string name="mmiCancelled" msgid="2771923949751842276">"Cod MMI anulat"</string>
- <string name="cancel" msgid="5044513931633602634">"Anulaţi"</string>
+ <string name="cancel" msgid="5044513931633602634">"Anulați"</string>
<string name="enter_input" msgid="1810529547726803893">"Mesajul USSD trebuie să aibă între <xliff:g id="MIN_LEN">%d</xliff:g> și <xliff:g id="MAX_LEN">%d</xliff:g> caractere. Încercați din nou."</string>
<string name="manageConferenceLabel" msgid="4691922394301969053">"Gestionaţi teleconferinţa"</string>
<string name="ok" msgid="3811371167865772377">"OK"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Conturi telefon"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Adăugați un cont SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Configurați setările contului"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Apelare prin Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Apelare prin Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Nu folosiți apelarea prin Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Nu folosiți un asistent de apelare"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Niciunul"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Configurați"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Serviciu de conectare încorporat"</string>
<string name="voicemail" msgid="8693759337917898954">"Mesaj vocal"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Mesagerie vocală (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"MV:"</string>
<string name="networks" msgid="8873030692174541976">"Operatori de reţea"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmisiuni de urgență"</string>
@@ -129,7 +130,7 @@
<string name="reverting_settings" msgid="4752151682666912828">"Se revine la setări..."</string>
<string name="response_error" msgid="6674110501330139405">"Răspuns neaşteptat de la reţea."</string>
<string name="exception_error" msgid="7027667130619518211">"Eroare de reţea sau de card SIM."</string>
- <string name="fdn_check_failure" msgid="18200614306525434">"Setarea Numere cu apelări restricţionate din aplicaţia Telefon este activată. Ca rezultat, unele funcţii legate de apelare nu pot fi utilizate."</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"Setarea Numere cu apelări restricţionate din aplicația Telefon este activată. Ca rezultat, unele funcţii legate de apelare nu pot fi utilizate."</string>
<string name="radio_off_error" msgid="2304459933248513376">"Activaţi semnalul radio, înainte de a vizualiza aceste setări."</string>
<string name="close_dialog" msgid="2365884406356986917">"OK"</string>
<string name="enable" msgid="7248657275000173526">"Activați"</string>
@@ -143,7 +144,7 @@
<string name="vm_changed" msgid="380744030726254139">"Număr mesagerie vocală modificat."</string>
<string name="vm_change_failed" msgid="3352934863246208918">"Nu s-a putut schimba numărul de mesagerie vocală.\nContactaţi operatorul în cazul în care această problemă persistă."</string>
<string name="fw_change_failed" msgid="5298103228470214665">"Nu s-a putut schimba numărul de redirecţionare.\nContactaţi operatorul dvs. în cazul în care această problemă persistă."</string>
- <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Nu s-au putut prelua şi salva setările actuale ale numărului de redirecţionare.\nDoriţi să comutaţi oricum către un nou furnizor de servicii?"</string>
+ <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Nu s-au putut prelua și salva setările actuale ale numărului de redirecţionare.\nDoriţi să comutaţi oricum către un nou furnizor de servicii?"</string>
<string name="no_change" msgid="3186040086622435212">"Nicio schimbare efectuată."</string>
<string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Alegeţi serviciul de mesagerie vocală"</string>
<string name="voicemail_default" msgid="2001233554889016880">"Operatorul dvs."</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Conectaţi-vă la serviciile de date în roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Conectaţi-vă la serviciile de date în roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Aţi pierdut conectivitatea la date, deoarece aţi părăsit reţeaua de domiciliu neavând activat roamingul de date."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Permiteți utilizarea de date în roaming? Se pot aplica taxe substanțiale."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Se pot acumula costuri mari."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Permiteți roamingul de date?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Opţiuni GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Opţiuni CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Utilizarea datelor"</string>
@@ -233,7 +235,7 @@
<string name="maintenance_enable" msgid="8566636458770971189">"Întreţinere activată"</string>
<string name="maintenance_disable" msgid="7340189100885066077">"Întreţinere dezactivată"</string>
<string name="general_news_settings" msgid="4968779723948432978">"Știri generale"</string>
- <string name="bf_news_settings" msgid="3935593091894685267">"Știri despre afaceri şi financiare"</string>
+ <string name="bf_news_settings" msgid="3935593091894685267">"Știri despre afaceri și financiare"</string>
<string name="sports_news_settings" msgid="7649399631270052835">"Știri din sport"</string>
<string name="entertainment_news_settings" msgid="5051153952959405035">"Știri de divertisment"</string>
<string name="enable_disable_local" msgid="7890281063123416120">"Local"</string>
@@ -296,9 +298,9 @@
<string name="enable_disable_eo" msgid="4863043263443942494">"Oportunităţi de angajare"</string>
<string name="eo_enable" msgid="8623559062015685813">"Oportunităţi de angajare activate"</string>
<string name="eo_disable" msgid="3863812478090907609">"Oportunităţi de angajare dezactivate"</string>
- <string name="enable_disable_mhh" msgid="908214593528968522">"Medicină, sănătate şi spitale"</string>
- <string name="mhh_enable" msgid="5544500632306446815">"Medicină, sănătate şi spitale activate"</string>
- <string name="mhh_disable" msgid="8998210550117117437">"Medicină, sănătate şi spitale dezactivate"</string>
+ <string name="enable_disable_mhh" msgid="908214593528968522">"Medicină, sănătate și spitale"</string>
+ <string name="mhh_enable" msgid="5544500632306446815">"Medicină, sănătate și spitale activate"</string>
+ <string name="mhh_disable" msgid="8998210550117117437">"Medicină, sănătate și spitale dezactivate"</string>
<string name="enable_disable_technology_news" msgid="3517184627114999149">"Știri din tehnologie"</string>
<string name="technology_news_enable" msgid="7995209394210455181">"Știri din tehnologie activate"</string>
<string name="technology_news_disable" msgid="5483490380561851946">"Știri din tehnologie dezactivate"</string>
@@ -316,7 +318,7 @@
<item msgid="1205664026446156265">"Automat"</item>
</string-array>
<string name="cdma_subscription_title" msgid="1162564010076763284">"Abonament CMDA"</string>
- <string name="cdma_subscription_summary" msgid="2530890766115781140">"Comutaţi între RUIM/SIM şi NV"</string>
+ <string name="cdma_subscription_summary" msgid="2530890766115781140">"Comutaţi între RUIM/SIM și NV"</string>
<string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"abonament"</string>
<string-array name="cdma_subscription_choices">
<item msgid="2258014151300708431">"RUIM/SIM"</item>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Setaţi modul TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Reîncercare automată"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Activaţi modul Reîncercare automată"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Schimbarea modului TTY nu este permisă în timpul unui apel video"</string>
<string name="menu_add" msgid="1882023737425114762">"Adăugaţi o persoană în agendă"</string>
<string name="menu_edit" msgid="7143003705504672374">"Modificaţi informaţiile despre persoana din agendă"</string>
<string name="menu_delete" msgid="3977150783449642851">"Ștergeţi persoana din agendă"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Se citeşte de pe cardul SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Nicio persoană în agenda de pe cardul dvs. SIM."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Selectaţi persoanele din agendă care se importă"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Pentru a importa agenda de pe cardul SIM, dezactivaţi mai întâi modul Avion."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Pentru a importa persoane de contact de pe cardul SIM, dezactivați modul Avion."</string>
<string name="enable_pin" msgid="5422767284133234860">"Activaţi/dezactivaţi codul PIN al cardului SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Schimbaţi codul PIN pentru SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"Codul PIN pentru cardul SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Încheiaţi apelul"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Sunaţi înapoi"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mesaj"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Pentru a efectua un apel, mai întâi dezactivaţi modul Avion."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Pentru a apela, dezactivați modul Avion."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Pentru a apela, dezactivați modul Avion sau conectați-vă la o rețea wireless."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Neînregistrat în reţea."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Rețeaua mobilă nu este disponibilă"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Rețeaua mobilă nu este disponibilă. Pentru a apela, conectați-vă la o rețea wireless."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Pentru a apela, introduceți un număr valid."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Nu se poate apela."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Se porneşte secvenţa MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Teleconferinţa nu se poate efectua."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Apelul nu poate fi respins."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Apelurile nu pot fi eliberate."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Pentru a apela, conectați-vă la o rețea wireless."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Apel de urgenţă"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Se activează semnalul radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Fără semnal. Se încearcă din nou..."</string>
@@ -489,7 +495,7 @@
<string name="ota_hfa_activation_title" msgid="2234246934160473981">"Se activează..."</string>
<string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"Serviciul de date mobile este în curs de activare pe telefonul dvs.\n\nAcest proces poate dura până la 5 minute."</string>
<string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Omiteţi activarea?"</string>
- <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Dacă omiteţi activarea, nu puteţi efectua apeluri şi nici nu vă puteţi conecta la o reţea de date mobilă (deşi vă puteţi conecta la reţele Wi-Fi). Până veţi activa telefonul, vi se va solicita să-l activaţi de fiecare dată când îl porniţi."</string>
+ <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Dacă omiteţi activarea, nu puteţi efectua apeluri și nici nu vă puteţi conecta la o reţea de date mobilă (deși vă puteţi conecta la reţele Wi-Fi). Până veţi activa telefonul, vi se va solicita să-l activaţi de fiecare dată când îl porniţi."</string>
<string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Omiteţi"</string>
<string name="ota_activate" msgid="1368528132525626264">"Activaţi"</string>
<string name="ota_title_activate_success" msgid="6570240212263372046">"Telefonul este activat."</string>
@@ -508,18 +514,21 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"S-a activat modul de apelare inversă de urgenţă"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mod de apelare inversă de urgenţă"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexiune de date dezactivată"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Nicio conexiune de date pentru <xliff:g id="COUNT">%s</xliff:g> minut"</item>
- <item quantity="other" msgid="3122217344579273583">"Nicio conexiune de date pentru <xliff:g id="COUNT">%s</xliff:g> (de) minute"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefonul va fi în modul Apelare inversă de urgenţă pentru <xliff:g id="COUNT">%s</xliff:g> minut. Cât timp se află în acest mod nu puteţi folosi aplicaţiile care utilizează o conexiune de date. Doriţi să ieşiţi acum?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefonul va fi în modul Apelare inversă de urgenţă pentru <xliff:g id="COUNT">%s</xliff:g> (de) minute. Cât timp se află în acest mod nu puteţi folosi aplicaţiile care utilizează o conexiune de date. Doriţi să ieşiţi acum?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Acţiunea selectată nu este disponibilă în modul Apelare inversă de urgenţă. Telefonul va rămâne în acest mod pentru <xliff:g id="COUNT">%s</xliff:g> minut. Doriţi să ieşiţi acum?"</item>
- <item quantity="other" msgid="6115622137771382224">"Acţiunea selectată nu este disponibilă în modul Apelare inversă de urgenţă. Telefonul va rămâne în acest mod pentru <xliff:g id="COUNT">%s</xliff:g> (de) minute. Doriţi să ieşiţi acum?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="few">Nicio conexiune de date timp de <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
+ <item quantity="other">Nicio conexiune de date timp de <xliff:g id="COUNT_1">%s</xliff:g> de minute</item>
+ <item quantity="one">Nicio conexiune de date timp de <xliff:g id="COUNT_0">%s</xliff:g> minut</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="few">Telefonul va fi în modul Apelare inversă de urgență pentru <xliff:g id="COUNT_1">%s</xliff:g> minute. Când telefonul este în acest mod, nu se poate folosi nicio aplicație care necesită o conexiune de date. Doriți să ieșiți acum?</item>
+ <item quantity="other">Telefonul va fi în modul Apelare inversă de urgență pentru <xliff:g id="COUNT_1">%s</xliff:g> de minute. Când telefonul este în acest mod, nu se poate folosi nicio aplicație care necesită o conexiune de date. Doriți să ieșiți acum?</item>
+ <item quantity="one">Telefonul va fi în modul Apelare inversă de urgență pentru <xliff:g id="COUNT_0">%s</xliff:g> minut. Când telefonul este în acest mod, nu se poate folosi nicio aplicație care necesită o conexiune de date. Doriți să ieșiți acum?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="few">Acțiunea selectată nu este disponibilă când telefonul este în modul Apelare inversă de urgență. Telefonul va fi în acest mod pentru <xliff:g id="COUNT_1">%s</xliff:g> minute. Doriți să ieșiți acum?</item>
+ <item quantity="other">Acțiunea selectată nu este disponibilă când telefonul este în modul Apelare inversă de urgență. Telefonul va fi în acest mod pentru <xliff:g id="COUNT_1">%s</xliff:g> de minute. Doriți să ieșiți acum?</item>
+ <item quantity="one">Acțiunea selectată nu este disponibilă când telefonul este în modul Apelare inversă de urgență. Telefonul va fi în acest mod pentru <xliff:g id="COUNT_0">%s</xliff:g> minut. Doriți să ieșiți acum?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Acţiunea selectată nu este disponibilă în timpul efectuării unui apel de urgenţă."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Se iese din modul Apelare inversă de urgenţă"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Da"</string>
@@ -548,4 +557,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Apeluri de urgență"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Numai apeluri de urgență"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Cardul SIM, slotul: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilitate"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Apel prin Wi-Fi primit"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Apel prin Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Atingeți din nou pentru a deschide"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"A apărut o eroare la decodificarea mesajului."</string>
</resources>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index e8da44c..807c757 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -18,7 +18,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="preferred_network_mode_choices_world_mode">
- <item msgid="3391522821603584785">"Глобальные"</item>
+ <item msgid="3391522821603584785">"Global"</item>
<item msgid="6753774959494729275">"LTE/CDMA"</item>
<item msgid="8658695584186942227">"LTE/GSM/UMTS"</item>
</string-array>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 8298960..02087a0 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Аккаунты для звонков"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Добавить SIP-аккаунт"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Задать настройки аккаунта"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Звонок через Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Звонки по Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Не использовать Wi-Fi для звонков"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Не использовать ассистент"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Не использовать"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Настроить"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Встроенная служба подключения"</string>
<string name="voicemail" msgid="8693759337917898954">"Голосовая почта"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Голосовая почта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ГП:"</string>
<string name="networks" msgid="8873030692174541976">"Операторы связи"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Уведомления о чрезвычайных ситуациях"</string>
@@ -92,13 +93,13 @@
<string name="sum_loading_settings" msgid="1826692909391168620">"Загрузка настроек…"</string>
<string name="sum_hide_caller_id" msgid="1071407020290873782">"Скрывать номер при исходящих вызовах"</string>
<string name="sum_show_caller_id" msgid="6768534125447290401">"Номер, отображающийся при исходящих вызовах"</string>
- <string name="sum_default_caller_id" msgid="1954518825510901365">"При исходящих вызовах использовать для отображения моего номера настройки, предоставляемые оператором"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"Использовать стандартные настройки оператора для показа моего номера при исходящих вызовах"</string>
<string name="labelCW" msgid="6120513814915920200">"Параллельный вызов"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"Извещать меня о входящих вызовах во время разговора"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"Извещать меня о входящих вызовах во время разговора"</string>
- <string name="call_forwarding_settings" msgid="3378927671091537173">"Настройки переадресации вызова"</string>
- <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Настройки переадресации вызовов (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="labelCF" msgid="2574386948026924737">"Переадресация вызова"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"Переадресация"</string>
+ <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Переадресация (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="labelCF" msgid="2574386948026924737">"Переадресация вызовов"</string>
<string name="labelCFU" msgid="8147177368148660600">"Переадресовывать всегда"</string>
<string name="messageCFU" msgid="3560082430662923687">"Всегда переадресовывать вызов на этот номер"</string>
<string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Переадресация всех вызовов"</string>
@@ -106,23 +107,23 @@
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Номер не указан"</string>
<string name="sum_cfu_disabled" msgid="8384177689501334080">"Выкл."</string>
<string name="labelCFB" msgid="6139853033106283172">"Если номер занят"</string>
- <string name="messageCFB" msgid="3711089705936187129">"Номер, использующийся, когда линия занята"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"Переадресовывать на этот номер"</string>
<string name="sum_cfb_enabled" msgid="5984198104833116690">"Переадресация на номер <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"Выкл."</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"Ваш оператор не позволяет отключать переадресацию вызовов, если телефон занят."</string>
<string name="labelCFNRy" msgid="1736067178393744351">"Если нет ответа"</string>
- <string name="messageCFNRy" msgid="672317899884380374">"Номер для переадресации при отсутствии ответа"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"Переадресовывать на этот номер"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"Переадресация на номер <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Выкл."</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Ваш оператор не позволяет отключать переадресацию вызовов, если нет ответа."</string>
<string name="labelCFNRc" msgid="2614827454402079766">"Если номер недоступен"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"Номер для переадресации, если абонент недоступен"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Переадресовывать на этот номер"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Переадресация на номер <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Отключено"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Ваш оператор не позволяет отключать переадресацию вызовов, если телефон находится вне зоны доступа."</string>
<string name="updating_title" msgid="6146755386174019046">"Настройки вызовов"</string>
<string name="call_settings_primary_user_only" msgid="5679923943740900965">"Настройки вызовов может изменить только основной пользователь."</string>
- <string name="call_settings_with_label" msgid="89359812614544532">"Настройки вызовов (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"Настройки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="error_updating_title" msgid="7970259216988931777">"Ошибка настройки вызовов"</string>
<string name="reading_settings" msgid="1920291699287055284">"Чтение настроек…"</string>
<string name="updating_settings" msgid="8171225533884883252">"Обновление настроек…"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Подключаться к службам передачи данных в роуминге"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Подключаться к службам передачи данных в роуминге"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Мобильный Интернет в роуминге отключен. Вы можете включить интернет-роуминг в настройках."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Разрешить передачу данных в роуминге? Может взиматься повышенная плата."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Возможны значительные расходы."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Разрешить интернет-роуминг?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Параметры GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Параметры CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Передача данных"</string>
@@ -338,11 +340,11 @@
<string name="fdn_activation" msgid="2156479741307463576">"Активация разреш. номеров"</string>
<string name="fdn_enabled" msgid="5238109009915521240">"Разрешенные номера включены"</string>
<string name="fdn_disabled" msgid="4700049736675368279">"Разрешенные номера отключены"</string>
- <string name="enable_fdn" msgid="3740191529180493851">"Вкл. разреш. номера"</string>
+ <string name="enable_fdn" msgid="3740191529180493851">"Вкл. разрешенные номера"</string>
<string name="disable_fdn" msgid="7944020890722540616">"Откл. разреш. номера"</string>
<string name="change_pin2" msgid="2153563695382176676">"Изменить PIN2"</string>
<string name="enable_fdn_ok" msgid="7215588870329688132">"Откл. разреш. номера"</string>
- <string name="disable_fdn_ok" msgid="5727046928930740173">"Вкл. разреш. номера"</string>
+ <string name="disable_fdn_ok" msgid="5727046928930740173">"Вкл. разрешенные номера"</string>
<string name="sum_fdn" msgid="1959399454900272878">"Управление списком разрешенных номеров"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"Изменить PIN для доступа к списку разрешенных номеров"</string>
<string name="sum_fdn_manage_list" msgid="8431088265332628316">"Управление списком разрешенных номеров"</string>
@@ -352,6 +354,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Установить режим телетайпа"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Автодозвон"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Включить режим автодозвона"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Режим телетайтпа нельзя изменить во время видеозвонка"</string>
<string name="menu_add" msgid="1882023737425114762">"Добавить контакт"</string>
<string name="menu_edit" msgid="7143003705504672374">"Изменить контакт"</string>
<string name="menu_delete" msgid="3977150783449642851">"Удалить контакт"</string>
@@ -359,7 +362,7 @@
<string name="name" msgid="7329028332786872378">"Имя"</string>
<string name="number" msgid="7905950798349903858">"Номер"</string>
<string name="save" msgid="4094274636321939086">"Сохранить"</string>
- <string name="add_fdn_contact" msgid="2481915899633353976">"Добавить номер ограниченного набора"</string>
+ <string name="add_fdn_contact" msgid="2481915899633353976">"Добавить номер"</string>
<string name="adding_fdn_contact" msgid="7627379633721940991">"Выполняется добавление номера ограниченного набора..."</string>
<string name="fdn_contact_added" msgid="7458335758501736665">"Номер ограниченного набора добавлен."</string>
<string name="edit_fdn_contact" msgid="7976936035587081480">"Изменить номер ограниченного набора"</string>
@@ -375,7 +378,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Считывание с SIM-карты…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"На SIM-карте нет контактов."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Выберите контакты для импорта"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Чтобы перенести контакты с SIM-карты, отключите режим полета."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Чтобы импортировать контакты с SIM-карты, отключите режим полета."</string>
<string name="enable_pin" msgid="5422767284133234860">"Включить/отключить запрос PIN SIM-карты"</string>
<string name="change_pin" msgid="9174186126330785343">"Изменить PIN SIM-карты"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN SIM-карты:"</string>
@@ -436,9 +439,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Завершить разговор"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Позвонить"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Написать"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Перед тем как звонить, отключите режим полета."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Чтобы позвонить, отключите режим полета."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Чтобы позвонить, отключите режим полета и подключитесь к Wi-Fi."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Нет регистрации в сети."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Мобильная сеть недоступна."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Мобильная сеть недоступна. Чтобы позвонить, подключитесь к Wi-Fi."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Недействительный номер."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Не удалось позвонить."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Запуск последовательности MMI..."</string>
@@ -449,6 +454,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Не удается создать конференц-вызов."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Не удалось отклонить вызов."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Не удалось разъединить."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Чтобы позвонить, подключитесь к Wi-Fi."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Экстренный вызов"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Включение радио…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нет сигнала. Повторная попытка…"</string>
@@ -510,18 +516,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Телефон переведен в режим экстренных обратных вызовов"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим экстренных обратных вызовов"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Передача данных отключена"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Подключение для передачи данных отсутствует <xliff:g id="COUNT">%s</xliff:g> мин."</item>
- <item quantity="other" msgid="3122217344579273583">"Подключение для передачи данных отсутствует <xliff:g id="COUNT">%s</xliff:g> мин."</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Телефон будет оставаться в режиме экстренных обратных вызовов еще <xliff:g id="COUNT">%s</xliff:g> мин. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?"</item>
- <item quantity="other" msgid="8617116564023933114">"Телефон будет оставаться в режиме экстренных обратных вызовов еще <xliff:g id="COUNT">%s</xliff:g> мин. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Выбранное действие невозможно при экстренных обратных вызовах. Телефон будет оставаться в этом режиме еще <xliff:g id="COUNT">%s</xliff:g> мин. Выйти?"</item>
- <item quantity="other" msgid="6115622137771382224">"Выбранное действие невозможно при экстренных обратных вызовах. Телефон будет оставаться в этом режиме еще <xliff:g id="COUNT">%s</xliff:g> мин. Выйти?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минуту</item>
+ <item quantity="few">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минуты</item>
+ <item quantity="many">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минут</item>
+ <item quantity="other">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минуты</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Режим экстренных обратных вызовов будет действовать ещё <xliff:g id="COUNT_1">%s</xliff:g> минуту. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?</item>
+ <item quantity="few">Режим экстренных обратных вызовов будет действовать ещё <xliff:g id="COUNT_1">%s</xliff:g> минуты. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?</item>
+ <item quantity="many">Режим экстренных обратных вызовов будет действовать ещё <xliff:g id="COUNT_1">%s</xliff:g> минут. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?</item>
+ <item quantity="other">Режим экстренных обратных вызовов будет действовать ещё <xliff:g id="COUNT_1">%s</xliff:g> минуты. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Эта операция недоступна в режиме экстренных обратных вызовов. Телефон останется в этом режиме ещё на <xliff:g id="COUNT_1">%s</xliff:g> минуту. Выйти?</item>
+ <item quantity="few">Эта операция недоступна в режиме экстренных обратных вызовов. Телефон останется в этом режиме ещё <xliff:g id="COUNT_1">%s</xliff:g> минуты. Выйти?</item>
+ <item quantity="many">Эта операция недоступна в режиме экстренных обратных вызовов. Телефон останется в этом режиме ещё на <xliff:g id="COUNT_1">%s</xliff:g> минут. Выйти?</item>
+ <item quantity="other">Эта операция недоступна в режиме экстренных обратных вызовов. Телефон останется в этом режиме ещё на <xliff:g id="COUNT_1">%s</xliff:g> минуты. Выйти?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Выбранное действие невозможно при экстренном вызове."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Выход из режима экстренных обратных вызовов"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Да"</string>
@@ -550,4 +562,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Экстренные вызовы"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Только экстренные вызовы"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-карта, разъем: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Специальные возможности"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Входящий Wi-Fi-звонок"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-звонок"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Нажмите ещё раз, чтобы открыть"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"При расшифровке сообщения произошла ошибка."</string>
</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 7d9ef31..7179afa 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"දුරකථන ගිණුම්"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ගිණුම් එකතු කරන්න"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ගිණුමේ සැකසීම් වින්යාස කරන්න"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi ඇමතීම"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi ඇමතීම"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi ඇමතුම භාවිතා කරන්න එපා"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"ඇමතුම් සහායක භාවිතා කරන්න එපා"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"කිසිවක් නැත"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"වින්යාස කිරීම"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"තිළැලි සම්බන්ධතා සේවාව"</string>
<string name="voicemail" msgid="8693759337917898954">"හඬ තැපෑල"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"හඬ තැපෑල (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"ජාල ක්රියාකරුවන්"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"හදිසි විකාශන"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"රෝමින් අතරතුර දත්ත සේවා වෙත සම්බන්ධ වන්න"</string>
<string name="roaming_disable" msgid="1843417228755568110">"රෝමින් අතරතුර දත්ත සේවා වෙත සම්බන්ධ වන්න"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"ඔබගේ නිවාස ජාලය ඔබ හැර ගිය විට දත්ත රෝමින් අක්රිය වන බැවින් දත්ත සම්බන්ධතාවය ඔබට නැති වෙයි"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"රෝමින් විට දත්ත භාවිතය ඉඩ දෙන්නද? සැලකිය යුතු වෙනස් කිරීම් ඇතැම් විට යෙදේ."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"ඔබ සැලකිය යුතු ගාස්තු ඇති විය හැකිය."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"දත්ත රෝමින් සඳහා අවසර දෙන්න ද"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS විකල්ප"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA විකල්ප"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"දත්ත භාවිතය"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY ආකාරය සකසන්න"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ස්වයංක්රීය නැවත උත්සාහ කිරීම"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"ස්වයංක්රීය නැවත උත්සාහ කිරීමේ ආකාරය සබල කරන්න"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"වීඩියෝ ඇමතුමක් අතරතුර TTY මෝඩය වෙනස් වීමකට අවසර නැත"</string>
<string name="menu_add" msgid="1882023737425114762">"සම්බන්ධතාවය එක් කරන්න"</string>
<string name="menu_edit" msgid="7143003705504672374">"සම්බන්ධතාව සංස්කරණය කරන්න"</string>
<string name="menu_delete" msgid="3977150783449642851">"සම්බන්ධතාවය මකා දමන්න"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM කාඩ් පතෙන් කියවමින්…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"ඔබගේ SIM පතෙහි සම්බන්ධතා නොමැත."</string>
<string name="simContacts_title" msgid="1861472842524839921">"ආයාත කිරීමට සම්බන්ධතා තෝරන්න"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM කාඩ් පත වෙතින් සම්බන්ධතා ආයාත කිරීමට, මුලින්ම ගුවන්යානා ආකාරය අක්රිය කරන්න."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"සිම් කාඩ් සම්බන්ධතා ආනයනය කිරීමට ගුවන් යානා මෝඩය අක්රිය කරන්න."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN සබල/අබල කරන්න"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN වෙනස් කරන්න"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"විසන්ධි කරන්න"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"නැවත අමතන්න"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"පණිවිඩය"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"ඇමතුමක් ගැනීමට, මුලින්ම ගුවන්යානා ආකාරය අක්රිය කරන්න."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ඇමතුමක් ගැනීමට ගුවන් යානා මාදිලිය අක්රිය කරන්න."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ඇමතුමක් ලබා ගැනීමට ගුවන් යානා මෝඩය අක්රිය කරන්න හෝ රැහැන් රහිත ජාලයකට සම්බන්ධ වෙන්න."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"ජාලය මත ලියාපදිංචි වී නැත."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"සෙලියුලර් ජාලය නොමැත"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"සෙලියුලර් ජාලය ලබාගත නොහැක. ඇමතුමක් ගැනීමට රැහැන් රහිත ජාලයකට සම්බන්ධ වෙන්න."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ඇමතුමක් ලබාගැනීමට, වලංගු අංකයක් ලබාගන්න."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"ඇමතුම් ගැනීමට නොහැක."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI අනුපිළිවෙල ආරම්භ කරමින්…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"සම්මන්ත්රණ ඇමතුම් ලබාගත නොහැකි විය."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ඇමතුම ප්රතික්ෂේප කළ නොහැක."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ඇමතුම(ම්) මුදාහැරීම කළ නොහැක."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ඇමතුමක් ගැනීමට රැහැන් රහිත ජාලයක් වෙත සම්බන්ධ වෙන්න."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"හදිසි ඇමතුම"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"රේඩියෝව ආරම්භ කරමින්…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"සේවා නැත. නැවත උත්සාහ කරන්න…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"හදිසි ආපසු ඇමතුම් ආකාරයට ඇතුලත් විණි"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"හදිසි ආපසු ඇමතුම් ආකාරය"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"දත්ත සම්බන්ධතාවය අබලයි"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"මිනිත්තු <xliff:g id="COUNT">%s</xliff:g> සඳහා කිසිඳු දත්ත සම්බන්ධතාවයක් නොමැත"</item>
- <item quantity="other" msgid="3122217344579273583">"මිනිත්තු <xliff:g id="COUNT">%s</xliff:g> සඳහා කිසිඳු දත්ත සම්බන්ධතාවයක් නොමැත"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"දුරකථනය මිනිත්තු <xliff:g id="COUNT">%s</xliff:g> සඳහා හදිසි පසු ඇමතුම් ආකාරයට පත්වේ. මෙම ආකාරයේ තිබෙන විට දත්ත සම්බන්ධතා භාවිතා කෙරෙන යෙදුම් භාවිතා කළ හැක. ඔබට දැන් පිටත්ව යාමට අවශ්යද?"</item>
- <item quantity="other" msgid="8617116564023933114">"දුරකථනය මිනිත්තු <xliff:g id="COUNT">%s</xliff:g> සඳහා හදිසි පසු ඇමතුම් ආකාරයට පත්වේ. මෙම ආකාරයේ තිබෙන විට දත්ත සම්බන්ධතා භාවිතා කෙරෙන යෙදුම් භාවිතා කළ හැක. ඔබට දැන් පිටත්ව යාමට අවශ්යද?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"හදිසි පසු ඇමතුම් ආකාරයේ සිටින විට තෝරා ඇති ක්රියාව නොමැත. දුරකථනය මිනිත්තු <xliff:g id="COUNT">%s</xliff:g> කට මෙම ආකාරයට පත්වේ. ඔබ දැන් පිටවීමට අවශ්යද?"</item>
- <item quantity="other" msgid="6115622137771382224">"හදිසි පසු ඇමතුම් ආකාරයේ සිටින විට තෝරා ඇති ක්රියාව නොමැත. දුරකථනය මිනිත්තු <xliff:g id="COUNT">%s</xliff:g> කට මෙම ආකාරයට පත්වේ. ඔබ දැන් පිටවීමට අවශ්යද?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් දත්ත සම්බන්ධතාවයක් නැත</item>
+ <item quantity="other">මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් දත්ත සම්බන්ධතාවයක් නැත</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">දුරකථනය මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් හදිසි ආපසු ඇමතුම් ආකාරය තුළ වනු ඇත. මෙම ආකාරය තුළ සිටින අතරතුර දත්ත සම්බන්ධයක් භාවිත කරන යෙදුම් කිසිවක් භාවිත කළ නොහැකිය. ඔබට දැන් පිටවීමට අවශ්යද?</item>
+ <item quantity="other">දුරකථනය මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් හදිසි ආපසු ඇමතුම් ආකාරය තුළ වනු ඇත. මෙම ආකාරය තුළ සිටින අතරතුර දත්ත සම්බන්ධයක් භාවිත කරන යෙදුම් කිසිවක් භාවිත කළ නොහැකිය. ඔබට දැන් පිටවීමට අවශ්යද?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one"> හදිසි ආපසු ඇමතුම් ආකාරය තුළ සිටියදී තෝරන ලද ක්රියාව ලබාගත නොහැක. දුරකථනය මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් හදිසි ආපසු ඇමතුම් ආකාරය තුළ වනු ඇත. ඔබට දැන් පිටවීමට අවශ්යද?</item>
+ <item quantity="other"> හදිසි ආපසු ඇමතුම් ආකාරය තුළ සිටියදී තෝරන ලද ක්රියාව ලබාගත නොහැක. දුරකථනය මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් හදිසි ආපසු ඇමතුම් ආකාරය තුළ වනු ඇත. ඔබට දැන් පිටවීමට අවශ්යද?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"හදිසි ඇමතුමක් අතර තුර තෝරන ලද ක්රියාව ලබාගත නොහැක."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"හදිසි ආපසු ඇමතුම් ආකාරයෙන් පිට වෙමින්"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"ඔව්"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"හදිස්සි ඇමතූම්"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"හදිස්සි ඇමතූම් පමණි"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM කාඩ්පත්, තව්ව: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ප්රවේශ්යතාව"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"පැමිණෙන Wi-Fi ඇමතුම"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi ඇමතුම"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"විවෘත කිරීමට නැවත ස්පර්ශ කරන්න"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"පණිවිඩය විකේතනය කරන අතරතුර දෝෂයක් සිදු විය."</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 4caa281..7c7179a 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefónne účty"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Pridať účet SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurácia nastavení účtu"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Volanie prostredníctvom siete Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Volanie cez Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Nepoužívať volanie prostredníctvom siete Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Nepoužívať asistenta hovorov"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Žiadny"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurovať"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Vstavaná služba pripojenia"</string>
<string name="voicemail" msgid="8693759337917898954">"Hlasová schránka"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Hlasová schránka (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"HS:"</string>
<string name="networks" msgid="8873030692174541976">"Sieťoví operátori"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Núdzové vysielania"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Pripájať sa k dátovým službám pri roamingu"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Pripájať sa k dátovým službám pri roamingu"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Dátové pripojenie bolo prerušené, pretože ste opustili domovskú sieť a máte vypnutý dátový roaming."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Povoliť využívanie dát pri roamingu? Môžu vám byť účtované výrazne vyššie poplatky."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Môžu sa vám účtovať vysoké poplatky."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Povoliť dátový roaming?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Možnosti GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Možnosti CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Využitie dát"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Nastaviť režim TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Automaticky skúsiť znova"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Povoliť režim Automaticky skúsiť znova."</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Zmena režimu TTY nie je povolená počas videohovoru"</string>
<string name="menu_add" msgid="1882023737425114762">"Pridať kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Upraviť kontakt"</string>
<string name="menu_delete" msgid="3977150783449642851">"Odstrániť kontakt"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Prebieha čítanie z karty SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Na karte SIM nie sú žiadne kontakty."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Vybrať kontakty na import"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Ak chcete importovať kontakty z karty SIM, vypnite režim v lietadle."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Ak chcete importovať kontakty zo SIM karty, vypnite režim v lietadle."</string>
<string name="enable_pin" msgid="5422767284133234860">"Povoliť alebo zakázať kód PIN karty SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Zmeniť PIN karty SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"Kód PIN karty SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Položiť"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Zavolať späť"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Správa"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Ak chcete telefonovať, vypnite najprv režim v lietadle."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Ak chcete volať, vypnite režim v lietadle"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Ak chcete volať, vypnite režim v lietadle alebo sa pripojte k bezdrôtovej sieti"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Prihlásenie do siete nebolo úspešné."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilná sieť nie je k dispozícii."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilná sieť nie je k dispozícii. Ak chcete volať, pripojte sa k bezdrôtovej sieti."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ak chcete volať, zadajte platné číslo"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Hovor nie je možné uskutočniť"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Prebieha spúšťanie sekvencie MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Hovory nie je možné spojiť do konferenčného hovoru."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nedá sa odmietnuť hovor"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nedajú sa ukončiť hovory"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Ak chcete volať, pripojte sa k bezdrôtovej sieti"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Tiesňové volanie"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Prebieha zapínanie rádia..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Žiadna služba. Prebieha opätovný pokus…"</string>
@@ -508,18 +514,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Bol aktivovaný režim tiesňového spätného volania"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Režim tiesňového spätného volania"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dátové pripojenie zakázané"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Žiadne dátové pripojenie po dobu <xliff:g id="COUNT">%s</xliff:g> min"</item>
- <item quantity="other" msgid="3122217344579273583">"Žiadne dátové pripojenie po dobu <xliff:g id="COUNT">%s</xliff:g> min"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefón bude v režime spätného núdzového volania počas <xliff:g id="COUNT">%s</xliff:g> min. V tomto režime nie je možné používať žiadne aplikácie používajúce dátové pripojenie. Chcete ho ukončiť?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefón bude v režime spätného núdzového volania počas <xliff:g id="COUNT">%s</xliff:g> min. V tomto režime nie je možné používať žiadne aplikácie používajúce dátové pripojenie. Chcete ho ukončiť?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Vybratá akcia nie je k dispozícii v režime Tiesňového spätného volania. Telefón v ňom bude <xliff:g id="COUNT">%s</xliff:g> min. Chcete ho ukončiť?"</item>
- <item quantity="other" msgid="6115622137771382224">"Vybratá akcia nie je k dispozícii v režime Tiesňového spätného volania. Telefón v ňom bude <xliff:g id="COUNT">%s</xliff:g> min. Chcete ho ukončiť?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="few">Žiadne dátové pripojenie – <xliff:g id="COUNT_1">%s</xliff:g> min</item>
+ <item quantity="many">Žiadne dátové pripojenie – <xliff:g id="COUNT_1">%s</xliff:g> min</item>
+ <item quantity="other">Žiadne dátové pripojenie – <xliff:g id="COUNT_1">%s</xliff:g> min</item>
+ <item quantity="one">Žiadne dátové pripojenie – <xliff:g id="COUNT_0">%s</xliff:g> min</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="few">Telefón bude <xliff:g id="COUNT_1">%s</xliff:g> minúty v režime spätného tiesňového volania. Keď bude v tomto režime, nesmiete používať žiadne aplikácie využívajúce dátové pripojenie. Chcete ho ukončiť?</item>
+ <item quantity="many">Telefón bude <xliff:g id="COUNT_1">%s</xliff:g> minúty v režime spätného tiesňového volania. Keď bude v tomto režime, nesmiete používať žiadne aplikácie využívajúce dátové pripojenie. Chcete ho ukončiť?</item>
+ <item quantity="other">Telefón bude <xliff:g id="COUNT_1">%s</xliff:g> minút v režime spätného tiesňového volania. Keď bude v tomto režime, nesmiete používať žiadne aplikácie využívajúce dátové pripojenie. Chcete ho ukončiť?</item>
+ <item quantity="one">Telefón bude <xliff:g id="COUNT_0">%s</xliff:g> minútu v režime spätného tiesňového volania. Keď bude v tomto režime, nesmiete používať žiadne aplikácie využívajúce dátové pripojenie. Chcete ho ukončiť?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="few">Pri spustenom režime spätného tiesňového volania nie je vybraná akcia k dispozícii. Telefón bude v tomto režime <xliff:g id="COUNT_1">%s</xliff:g> minúty. Chcete ho ukončiť?</item>
+ <item quantity="many">Pri spustenom režime spätného tiesňového volania nie je vybraná akcia k dispozícii. Telefón bude v tomto režime <xliff:g id="COUNT_1">%s</xliff:g> minúty. Chcete ho ukončiť?</item>
+ <item quantity="other">Pri spustenom režime spätného tiesňového volania nie je vybraná akcia k dispozícii. Telefón bude v tomto režime <xliff:g id="COUNT_1">%s</xliff:g> minút. Chcete ho ukončiť?</item>
+ <item quantity="one">Pri spustenom režime spätného tiesňového volania nie je vybraná akcia k dispozícii. Telefón bude v tomto režime <xliff:g id="COUNT_0">%s</xliff:g> minútu. Chcete ho ukončiť?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Počas tiesňového volania nie je vybratá akcia k dispozícii."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Ukončenie režimu tiesňového spätného volania"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Áno"</string>
@@ -548,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Tiesňové volania"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tiesňové volania iba na čísla"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Slot na SIM kartu: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Dostupnosť"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Prich. hovor cez Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Hovor cez Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Otvorte opätovným klepnutím"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Pri dekódovaní správy sa vyskytla chyba"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index e801af9..7e66f2a 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Računi telefona"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Dodaj račun SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfiguriranje nastavitev računa"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Klicanje prek povezave Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Klicanje prek Wi-Fi-ja"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ne uporabljaj klicanja prek povezave Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ne uporabljaj pomočnika za klicanje"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Brez"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfiguriranje"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Vgrajena storitev povezave"</string>
<string name="voicemail" msgid="8693759337917898954">"Glasovna pošta"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Odzivnik (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Omrežni operaterji"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Oddaje v sili"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Med gostovanjem vzpostavi povezavo s podatkovnimi storitvami"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Med gostovanjem vzpostavi povezavo s podatkovnimi storitvami"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Podatkovna povezava ni mogoča, ker ste zapustili domače omrežje, podatkovno gostovanje pa je izklopljeno."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Ali želite omogočiti uporabo podatkov pri gostovanju? Morda vam bodo zaračunani znatni stroški."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Stroški utegnejo biti veliki."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Želite dovoliti podatkovno gostovanje?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Možnosti GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Možnosti CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Uporaba podatkov"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Nastavitev načina TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Samodejen ponovni poskus"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Omogoči način samodejnega ponovnega poskusa"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Sprememba načina TTY ni dovoljena med videoklicem"</string>
<string name="menu_add" msgid="1882023737425114762">"Dodaj stik"</string>
<string name="menu_edit" msgid="7143003705504672374">"Urejanje stika"</string>
<string name="menu_delete" msgid="3977150783449642851">"Izbriši stik"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Branje kartice SIM ..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Na kartici SIM ni stikov."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Izberite stike, ki jih želite uvoziti"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Če želite uvoziti stike s kartice SIM, najprej izklopite način za letalo."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Izklopite način za letalo, če želite uvoziti stike s kartice SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Omogoči/onemogoči PIN kartice SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Spremeni PIN kartice SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN kartice SIM"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Prekinite klic"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Povratni klic"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Sporočilo"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Če želite poklicati, najprej izklopite način za letalo."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Izklopite način za letalo, če želite opraviti klic."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Izklopite način za letalo ali se povežite v omrežje Wi-Fi, če želite opraviti klic."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ni registrirano v omrežju."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilno omrežje ni na voljo."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilno omrežje ni na voljo. Povežite se v omrežje Wi-Fi, če želite opraviti klic."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Če želite opraviti klic, vnesite veljavno številko."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Klicanje ni mogoče."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Začetek zaporedja MMI ..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Konferenčni klici onemogočeni."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Zavrnitev klica ni mogoča."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Prevzem klicev ni mogoč."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se v omrežje Wi-Fi, če želite opraviti klic."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Klic v sili"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Vklop radia …"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ni signala. Vnovičen poskus …"</string>
@@ -508,18 +514,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Vnesen način za povratni klic v sili"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Način povratnega klica v sili"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Podatkovno povezovanje onemogočeno"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Podatkovne povezave ni <xliff:g id="COUNT">%s</xliff:g> minut"</item>
- <item quantity="other" msgid="3122217344579273583">"Podatkovne povezave ni <xliff:g id="COUNT">%s</xliff:g> minut"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon bo v načinu za povratni klic v sili <xliff:g id="COUNT">%s</xliff:g> minuto. V tem načinu ni mogoče uporabljati programov, ki uporabljajo podatkovno povezavo. Ali želite zapreti okno?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon bo v načinu za povratni klic v sili <xliff:g id="COUNT">%s</xliff:g> minut. V tem načinu ni mogoče uporabljati programov, ki uporabljajo podatkovno povezavo. Ali želite zapreti okno?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Izbrano dejanje ni na voljo, kadar je aktiven način za povratni klic v sili. Telefon bo v tem načinu <xliff:g id="COUNT">%s</xliff:g> minuto. Ali želite zapustiti program?"</item>
- <item quantity="other" msgid="6115622137771382224">"Izbrano dejanje ni na voljo, kadar je aktiven način za povratni klic v sili. Telefon bo v tem načinu <xliff:g id="COUNT">%s</xliff:g> minut. Ali želite zapustiti program?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minuto</item>
+ <item quantity="two">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minuti</item>
+ <item quantity="few">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
+ <item quantity="other">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minut</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Telefon bo v načinu povratnega klica v sili <xliff:g id="COUNT_1">%s</xliff:g> minuto. V tem načinu ni mogoče uporabljati aplikacij, ki uporabljajo podatkovno povezavo. Ali želite zapreti?</item>
+ <item quantity="two">Telefon bo v načinu povratnega klica v sili <xliff:g id="COUNT_1">%s</xliff:g> minuti. V tem načinu ni mogoče uporabljati aplikacij, ki uporabljajo podatkovno povezavo. Ali želite zapreti?</item>
+ <item quantity="few">Telefon bo v načinu povratnega klica v sili <xliff:g id="COUNT_1">%s</xliff:g> minute. V tem načinu ni mogoče uporabljati aplikacij, ki uporabljajo podatkovno povezavo. Ali želite zapreti?</item>
+ <item quantity="other">Telefon bo v načinu povratnega klica v sili <xliff:g id="COUNT_1">%s</xliff:g> minut. V tem načinu ni mogoče uporabljati aplikacij, ki uporabljajo podatkovno povezavo. Ali želite zapreti?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Izbrano dejanje ni na voljo v načinu povratnega klica v sili. Telefon bo v tem načinu <xliff:g id="COUNT_1">%s</xliff:g> minuto. Ali želite zapreti?</item>
+ <item quantity="two">Izbrano dejanje ni na voljo v načinu povratnega klica v sili. Telefon bo v tem načinu <xliff:g id="COUNT_1">%s</xliff:g> minuti. Ali želite zapreti?</item>
+ <item quantity="few">Izbrano dejanje ni na voljo v načinu povratnega klica v sili. Telefon bo v tem načinu <xliff:g id="COUNT_1">%s</xliff:g> minute. Ali želite zapreti?</item>
+ <item quantity="other">Izbrano dejanje ni na voljo v načinu povratnega klica v sili. Telefon bo v tem načinu <xliff:g id="COUNT_1">%s</xliff:g> minut. Ali želite zapreti?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Izbrano dejanje ni na voljo med klicanjem v sili."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Izhod iz načina za povratni klic v sili"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Da"</string>
@@ -548,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Klici v sili"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Samo klicanje v sili"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Kartica SIM, reža: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Funkcije za ljudi s posebnimi potrebami"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Dohodni klic Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Klic Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Dotaknite se znova, če želite odpreti"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Napaka pri dekodiranju sporočila."</string>
</resources>
diff --git a/res/values-sq-rAL/arrays.xml b/res/values-sq-rAL/arrays.xml
new file mode 100644
index 0000000..773739b
--- /dev/null
+++ b/res/values-sq-rAL/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="preferred_network_mode_choices_world_mode">
+ <item msgid="3391522821603584785">"Global"</item>
+ <item msgid="6753774959494729275">"LTE / CDMA"</item>
+ <item msgid="8658695584186942227">"LTE / GSM / UMTS"</item>
+ </string-array>
+ <string-array name="preferred_network_mode_values_world_mode">
+ <item msgid="8390941159766263625">"10"</item>
+ <item msgid="6103348346295810336">"8"</item>
+ <item msgid="3494519853214024879">"9"</item>
+ </string-array>
+</resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..7ff2717
--- /dev/null
+++ b/res/values-sq-rAL/strings.xml
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Të dhëna celulare"</string>
+ <string name="phoneAppLabel" product="default" msgid="906161039445636857">"Telefoni"</string>
+ <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Formuesi i numrit të urgjencës"</string>
+ <string name="phoneIconLabel" msgid="2331230813161304895">"Telefoni"</string>
+ <string name="fdnListLabel" msgid="8630418672279521003">"Lista FDN"</string>
+ <string name="unknown" msgid="6878797917991465859">"I panjohur"</string>
+ <string name="private_num" msgid="6713286113000232309">"Numër privat"</string>
+ <string name="payphone" msgid="4793877574636445118">"Telefon me pagesë"</string>
+ <string name="onHold" msgid="9035493194749959955">"Në pritje"</string>
+ <string name="mmiStarted" msgid="6347869857061147003">"Kodi MMI filloi"</string>
+ <string name="ussdRunning" msgid="485588686340541690">"Kodi USSD po punon…"</string>
+ <string name="mmiCancelled" msgid="2771923949751842276">"Kodi MMI u anulua"</string>
+ <string name="cancel" msgid="5044513931633602634">"Anulo"</string>
+ <string name="enter_input" msgid="1810529547726803893">"Mesazhi USSD duhet të jetë mes karaktereve <xliff:g id="MIN_LEN">%d</xliff:g> dhe <xliff:g id="MAX_LEN">%d</xliff:g>. Provo sërish."</string>
+ <string name="manageConferenceLabel" msgid="4691922394301969053">"Menaxho telefonatën-konferencë"</string>
+ <string name="ok" msgid="3811371167865772377">"Në rregull!"</string>
+ <string name="audio_mode_speaker" msgid="27649582100085266">"Altoparlant"</string>
+ <string name="audio_mode_earpiece" msgid="4156527186373869107">"Kufje për vesh"</string>
+ <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Kufje me tel"</string>
+ <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+ <string name="wait_prompt_str" msgid="7601815427707856238">"Dëshiron t\'i dërgosh tonet e mëposhtme?\n"</string>
+ <string name="pause_prompt_str" msgid="1789964702154314806">"Po dërgon tone\n"</string>
+ <string name="send_button" msgid="4106860097497818751">"Dërgo"</string>
+ <string name="pause_prompt_yes" msgid="3564467212025151797">"Po"</string>
+ <string name="pause_prompt_no" msgid="6686238803236884877">"Jo"</string>
+ <string name="wild_prompt_str" msgid="5543521676355533577">"Zëvendëso karakterin variabël me"</string>
+ <string name="no_vm_number" msgid="4164780423805688336">"Mungon numri i postës zanore"</string>
+ <string name="no_vm_number_msg" msgid="1300729501030053828">"Nuk ka numër të ruajtur në kartën SIM."</string>
+ <string name="add_vm_number_str" msgid="4676479471644687453">"Shto numër"</string>
+ <string name="puk_unlocked" msgid="2284912838477558454">"Karta jote SIM u zhbllokua. Telefoni yt po shkyçet..."</string>
+ <string name="label_ndp" msgid="780479633159517250">"PIN-i i shkyçjes së rrjetit të kartës SIM"</string>
+ <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Shkyçe"</string>
+ <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Hiq dorë"</string>
+ <string name="requesting_unlock" msgid="6412629401033249351">"Po kërkon shkyçjen e rrjetit…"</string>
+ <string name="unlock_failed" msgid="6490531697031504225">"Kërkesa për shkyçjen e rrjetit ishte e pasuksesshme."</string>
+ <string name="unlock_success" msgid="6770085622238180152">"Shkyçja e rrjetit ishte e suksesshme."</string>
+ <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Cilësimet e rrjetit celular nuk mundësohen për këtë përdorues"</string>
+ <string name="labelGSMMore" msgid="5930842194056092106">"Cilësimet e telefonatës GSM"</string>
+ <string name="labelCDMAMore" msgid="1630676740428229339">"Cilësimet e telefonatës CDMA"</string>
+ <string name="apn_settings" msgid="9043423184895642077">"Emrat e pikës së qasjes"</string>
+ <string name="settings_label" msgid="3876743539816984008">"Cilësimet e rrjetit"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"Llogaritë e telefonatave"</string>
+ <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Kryej telefonata me"</string>
+ <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Kryej telefonata SIP me"</string>
+ <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Pyet në fillim"</string>
+ <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Cilësimet"</string>
+ <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Zgjidh llogaritë"</string>
+ <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Llogari telefoni"</string>
+ <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Shto llogari SIP"</string>
+ <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfiguro cilësimet e llogarisë"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Telefonatë me Wi-Fi"</string>
+ <string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Mos përdor \"Telefonatë nga Wi-Fi\""</string>
+ <string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Mos përdor \"Ndihmësin e telefonatës\""</string>
+ <string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Asnjë"</string>
+ <string name="wifi_calling_call_assistant" msgid="229102032881680320">"Ndihmësi i telefonatave"</string>
+ <string name="wifi_calling_use_call_assistant" msgid="8460024827012666199">"Përdor \"Ndihmësin e telefonatës\""</string>
+ <string name="wifi_calling_select_call_assistant" msgid="9296558058772293">"Zgjidh \"Ndihmësin e telefonatës\""</string>
+ <string name="wifi_calling_select_call_assistant_summary" msgid="164985727137156474">"Menaxho rrjetet e përdorura për telefonata me"</string>
+ <string name="wifi_calling_use_call_assistant_summary" msgid="6599987137133339698">"Lejo aplikacionet ose shërbimet të menaxhojnë rrjetet e përdorura për telefonata"</string>
+ <string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfiguro"</string>
+ <string name="connection_service_default_label" msgid="1498481943805913754">"Shërbim i integruar lidhjeje"</string>
+ <string name="voicemail" msgid="8693759337917898954">"Posta zanore"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Posta zanore (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+ <string name="networks" msgid="8873030692174541976">"Operatorët e rrjetit"</string>
+ <string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmetimet e urgjencës"</string>
+ <string name="call_settings" msgid="6112441768261754562">"Cilësimet e telefonatës"</string>
+ <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Cilësimet shtesë"</string>
+ <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Cilësime shtesë (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Cilësimet e telefonatës \"vetëm GSM\""</string>
+ <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Cilësime shtesë CDMA për telefonata"</string>
+ <string name="sum_cdma_call_settings" msgid="284753265979035549">"Cilësime shtesë të telefonatës \"vetëm CDMA\""</string>
+ <string name="labelNwService" msgid="4699970172021870983">"Cilësimet e shërbimit të rrjetit"</string>
+ <string name="labelCallerId" msgid="3888899447379069198">"ID-ja e telefonuesit"</string>
+ <string name="sum_loading_settings" msgid="1826692909391168620">"Po ngarkon cilësimet..."</string>
+ <string name="sum_hide_caller_id" msgid="1071407020290873782">"Numri është i fshehur në telefonatat dalëse"</string>
+ <string name="sum_show_caller_id" msgid="6768534125447290401">"Numri është shfaqur në telefonatat dalëse"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"Përdor cilësimet e operatorit për të shfaqur numrin tim në telefonatat dalëse"</string>
+ <string name="labelCW" msgid="6120513814915920200">"Pritje telefonate"</string>
+ <string name="sum_cw_enabled" msgid="8083061901633671397">"Gjatë një telefonate, më njofto për telefonatat hyrëse"</string>
+ <string name="sum_cw_disabled" msgid="3648693907300104575">"Gjatë një telefonate, më njofto për telefonatat hyrëse"</string>
+ <string name="call_forwarding_settings" msgid="3378927671091537173">"Cilësimet e transferimit të telefonatës"</string>
+ <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Cilësimet e transferimit të telefonatës (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="labelCF" msgid="2574386948026924737">"Transferimi i telefonatës"</string>
+ <string name="labelCFU" msgid="8147177368148660600">"Transfero gjithmonë"</string>
+ <string name="messageCFU" msgid="3560082430662923687">"Përdor gjithmonë këtë numër"</string>
+ <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Po transferon të gjitha telefonatat"</string>
+ <string name="sum_cfu_enabled" msgid="2450052502198827927">"Po transferon të gjitha telefonatat te <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Numri nuk mund të përdoret"</string>
+ <string name="sum_cfu_disabled" msgid="8384177689501334080">"Çaktivizuar"</string>
+ <string name="labelCFB" msgid="6139853033106283172">"Kur është e zënë"</string>
+ <string name="messageCFB" msgid="3711089705936187129">"Llogarit kur është i zënë"</string>
+ <string name="sum_cfb_enabled" msgid="5984198104833116690">"Po transferon te <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfb_disabled" msgid="4913145177320506827">"Çaktivizuar"</string>
+ <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Operatori yt nuk mbështet çaktivizimin e transferimit të telefonatës kur telefoni është i zënë."</string>
+ <string name="labelCFNRy" msgid="1736067178393744351">"Kur nuk përgjigjet"</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"Llogarit kur nuk ka përgjigje"</string>
+ <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Po transferon te <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Çaktivizuar"</string>
+ <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Operatori yt nuk mbështet çaktivizimin e transferimit të telefonatës kur telefoni nuk përgjigjet."</string>
+ <string name="labelCFNRc" msgid="2614827454402079766">"Kur është e paarritshme"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Llogarit kur është i paarritshëm"</string>
+ <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Po transferon te <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+ <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Çaktivizuar"</string>
+ <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operatori yt nuk mbështet çaktivizimin e transferimit të telefonatës kur telefoni është i paarritshëm."</string>
+ <string name="updating_title" msgid="6146755386174019046">"Cilësimet e telefonatës"</string>
+ <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Cilësimet e telefonatës mund të ndryshohen vetëm nga përdoruesi kryesor."</string>
+ <string name="call_settings_with_label" msgid="89359812614544532">"Cilësimet e telefonatës (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="error_updating_title" msgid="7970259216988931777">"Gabim në cilësimet e telefonatës"</string>
+ <string name="reading_settings" msgid="1920291699287055284">"Po lexon cilësimet…"</string>
+ <string name="updating_settings" msgid="8171225533884883252">"Po përditëson cilësimet…"</string>
+ <string name="reverting_settings" msgid="4752151682666912828">"Po rikthen cilësimet…"</string>
+ <string name="response_error" msgid="6674110501330139405">"Përgjigje e papritur nga rrjeti."</string>
+ <string name="exception_error" msgid="7027667130619518211">"Gabim në rrjet ose në kartën SIM."</string>
+ <string name="fdn_check_failure" msgid="18200614306525434">"Cilësimet e numrave me formim fiks të aplikacionit të telefonit tënd janë aktivizuar. Si rezultat, disa funksione që lidhen me telefonatën nuk funksionojnë."</string>
+ <string name="radio_off_error" msgid="2304459933248513376">"Aktivizo radion para se të shohësh këto cilësime."</string>
+ <string name="close_dialog" msgid="2365884406356986917">"Në rregull!"</string>
+ <string name="enable" msgid="7248657275000173526">"Aktivizo"</string>
+ <string name="disable" msgid="4678348128118573672">"Çaktivizo"</string>
+ <string name="change_num" msgid="239476305819844391">"Përditëso"</string>
+ <string-array name="clir_display_values">
+ <item msgid="5560134294467334594">"Rrjet i parazgjedhur"</item>
+ <item msgid="7876195870037833661">"Fshih numrin"</item>
+ <item msgid="1108394741608734023">"Shfaq numrin"</item>
+ </string-array>
+ <string name="vm_changed" msgid="380744030726254139">"Numri i postës zanore ndryshoi"</string>
+ <string name="vm_change_failed" msgid="3352934863246208918">"Nuk mundi ta ndryshonte numrin e postës zanore.\nKontakto operatorin tënd nëse problemi vazhdon."</string>
+ <string name="fw_change_failed" msgid="5298103228470214665">"Nuk arriti ta ndryshonte numrin e transferimit.\nKontakto operatorin tënd nëse problemi vazhdon."</string>
+ <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Nuk arriti ta gjente e të ruante cilësimet aktuale të numrit të transferimit.\nDëshiron të kalosh gjithsesi te ofruesi i ri?"</string>
+ <string name="no_change" msgid="3186040086622435212">"Nuk u bë asnjë ndryshim."</string>
+ <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Zgjidh shërbimin e postës zanore"</string>
+ <string name="voicemail_default" msgid="2001233554889016880">"Operatori yt"</string>
+ <string name="mobile_networks" msgid="2843854043339307375">"Cilësimet e rrjetit celular"</string>
+ <string name="label_available" msgid="1181658289009300430">"Rrjete të arritshme"</string>
+ <string name="load_networks_progress" msgid="5230707536168902952">"Po kërkon..."</string>
+ <string name="empty_networks_list" msgid="4249426905018815316">"Nuk u gjetën rrjete."</string>
+ <string name="search_networks" msgid="1601136049300882441">"Kërko rrjetet"</string>
+ <string name="network_query_error" msgid="6828516148953325006">"Gabim gjatë kërkimit për rrjete."</string>
+ <string name="register_on_network" msgid="9055203954040805084">"Po regjistron në <xliff:g id="NETWORK">%s</xliff:g>…"</string>
+ <string name="not_allowed" msgid="5613353860205691579">"Karta SIM nuk lejon lidhje me këtë rrjet."</string>
+ <string name="connect_later" msgid="2308119155752343975">"Nuk mund të lidhet me këtë rrjet tani. Provo sërish më vonë."</string>
+ <string name="registration_done" msgid="495135664535876612">"Regjistruar në rrjet."</string>
+ <string name="sum_carrier_select" msgid="3494252551249882718">"Zgjidh një operator rrjeti"</string>
+ <string name="sum_search_networks" msgid="2921092249873272715">"Kërko të gjitha rrjetet e arritshme"</string>
+ <string name="select_automatically" msgid="5628402124471810174">"Zgjidh automatikisht"</string>
+ <string name="sum_select_automatically" msgid="5614890115123292400">"Zgjidh automatikisht rrjetin e preferuar"</string>
+ <string name="register_automatically" msgid="6017849844573519637">"Regjistrim automatik…"</string>
+ <string name="preferred_network_mode_title" msgid="2336624679902659306">"Lloji i preferuar i rrjetit"</string>
+ <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Ndrysho modalitetin e operimit të rrjetit"</string>
+ <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Lloji i preferuar i rrjetit"</string>
+ <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Modaliteti i preferuar i rrjetit: preferohet WCDMA"</string>
+ <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Modaliteti i preferuar i rrjetit: vetëm GSM"</string>
+ <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Modaliteti i preferuar i rrjetit: vetëm WCDMA"</string>
+ <string name="preferred_network_mode_gsm_wcdma_summary" msgid="3161255745326408587">"Modaliteti i preferuar i rrjetit: GSM / WCDMA"</string>
+ <string name="preferred_network_mode_cdma_summary" msgid="3175690187294334241">"Modaliteti i preferuar i rrjetit: CDMA"</string>
+ <string name="preferred_network_mode_cdma_evdo_summary" msgid="8332063064712726618">"Modaliteti i preferuar i rrjetit: CDMA / EvDo"</string>
+ <string name="preferred_network_mode_cdma_only_summary" msgid="1309770926198634150">"Modaliteti i preferuar i rrjetit: vetëm CDMA"</string>
+ <string name="preferred_network_mode_evdo_only_summary" msgid="8472220691721269155">"Modaliteti i preferuar i rrjetit: vetëm EvDo"</string>
+ <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="4726682079415227330">"Modaliteti i preferuar i rrjetit: CDMA/EvDo/GSM/WCDMA"</string>
+ <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"Modaliteti i preferuar i rrjetit: LTE"</string>
+ <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"Modaliteti i preferuar i rrjetit: GSM/WCDMA/LTE"</string>
+ <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"Modaliteti i preferuar i rrjetit: CDMA+LTE/EVDO"</string>
+ <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"Modaliteti i preferuar i rrjetit: Global"</string>
+ <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"Modaliteti i preferuar i rrjetit: LTE / WCDMA"</string>
+ <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"Modaliteti i preferuar i rrjetit: LTE / GSM / UMTS"</string>
+ <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"Modaliteti i preferuar i rrjetit: LTE / CDMA"</string>
+ <string-array name="preferred_network_mode_choices">
+ <item msgid="7886739962255042385">"LTE / WCDMA"</item>
+ <item msgid="577652050447385699">"LTE"</item>
+ <item msgid="6813597571293773656">"Global"</item>
+ <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
+ <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
+ <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
+ <item msgid="545430093607698090">"Vetëm EvDo"</item>
+ <item msgid="1508557726283094448">"CDMA pa EvDo"</item>
+ <item msgid="4341433122263841224">"CDMA/EvDo automatik"</item>
+ <item msgid="5958053792390386668">"GSM/WCDMA automatik"</item>
+ <item msgid="7913148405605373434">"Vetëm WCDMA"</item>
+ <item msgid="1524224863879435516">"Vetëm GSM"</item>
+ <item msgid="3817924849415716259">"GSM/WCDMA i preferuar"</item>
+ </string-array>
+ <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modaliteti i përparuar 4G LTE"</string>
+ <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Përdor shërbimet LTE për të përmirësuar komunikimet zanore dhe të tjera (rekomandohet)"</string>
+ <string name="data_enabled" msgid="5972538663568715366">"Të dhënat janë të aktivizuara"</string>
+ <string name="data_enable_summary" msgid="2382798156640007971">"Lejo përdorimin e të dhënave"</string>
+ <string name="roaming" msgid="8871412572928323707">"Të dhënat e roaming-ut"</string>
+ <string name="roaming_enable" msgid="7331106985174381987">"Lidhu me shërbimet e të dhënave kur je në roaming"</string>
+ <string name="roaming_disable" msgid="1843417228755568110">"Lidhu me shërbimin e të dhënave kur je në roaming"</string>
+ <string name="roaming_reenable_message" msgid="8913735676127858115">"E humbët lidhjen e të dhënave sepse sapo latë rrjetin e vendit tuaj dhe tani jeni me të dhëna roaming-u, të cilat ende nuk janë aktivizuar."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Mund të shkaktohen tarifa të larta."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Të lejohen të dhënat e roaming-ut?"</string>
+ <string name="gsm_umts_options" msgid="6538311689850981686">"Opsionet GSM/UMTS"</string>
+ <string name="cdma_options" msgid="4016822858172249884">"Opsionet CDMA"</string>
+ <string name="throttle_data_usage" msgid="3715677828160555808">"Përdorimi i të dhënave"</string>
+ <string name="throttle_current_usage" msgid="8762280193043815361">"Të dhënat e përdorura në periudhën aktuale"</string>
+ <string name="throttle_time_frame" msgid="1915198770363734685">"Periudha e përdorimit të të dhënave"</string>
+ <string name="throttle_rate" msgid="4710388992676803508">"Politika e shpejtësisë së të dhënave"</string>
+ <string name="throttle_help" msgid="243651091785169900">"Mëso më shumë"</string>
+ <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) nga maksimumi i periudhës prej <xliff:g id="USED_2">%3$s</xliff:g> \nPeriudha tjetër fillon për <xliff:g id="USED_3">%4$d</xliff:g> ditë (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+ <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) nga maksimumi i periudhës prej <xliff:g id="USED_2">%3$s</xliff:g>"</string>
+ <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"U kapërcye maksimumi i <xliff:g id="USED_0">%1$s</xliff:g>\nShpejtësia e të dhënave u pakësua deri në <xliff:g id="USED_1">%2$d</xliff:g> kilobit/sek."</string>
+ <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Ka kaluar <xliff:g id="USED_0">%1$d</xliff:g>٪ të ciklit\nPeriudha tjetër fillon për <xliff:g id="USED_1">%2$d</xliff:g> ditë (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+ <string name="throttle_rate_subtext" msgid="2149102656120726855">"Shpejtësia e të dhënave pakësohet në <xliff:g id="USED">%1$d</xliff:g> kilobit/sek. nëse tejkalohet kufiri i përdorimit të të dhënave"</string>
+ <string name="throttle_help_subtext" msgid="3633091498168446044">"Më shumë informacion rreth politikës së përdorimit të të dhënave të rrjetit celular të operatorit tënd"</string>
+ <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS-ja e \"Transmetimit celular\""</string>
+ <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS-ja e transmetimit celular"</string>
+ <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS-ja e \"Transmetimit celular\" është e aktivizuar"</string>
+ <string name="cell_bc_sms_disable" msgid="3398365088309408749">"SMS-ja e \"Transmetimit celular\" është e çaktivizuar"</string>
+ <string name="cb_sms_settings" msgid="651715019785107312">"Cilësimet e SMS-së së \"Transmetimit celular\""</string>
+ <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Transmetimi i urgjencës"</string>
+ <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Transmetimi i urgjencës është i aktivizuar"</string>
+ <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Transmetimi i urgjencës është i çaktivizuar"</string>
+ <string name="enable_disable_administrative" msgid="6501582322182059412">"Administrativi"</string>
+ <string name="administrative_enable" msgid="1750086122962032235">"\"Administrativi\" u aktivizua"</string>
+ <string name="administrative_disable" msgid="8433273857248698539">"\"Administrativi\" u çaktivizua"</string>
+ <string name="enable_disable_maintenance" msgid="1819693083025106678">"Mirëmbajtje"</string>
+ <string name="maintenance_enable" msgid="8566636458770971189">"Mirëmbajtja është e aktivizuar"</string>
+ <string name="maintenance_disable" msgid="7340189100885066077">"Mirëmbajtja është e çaktivizuar"</string>
+ <string name="general_news_settings" msgid="4968779723948432978">"Lajme të përgjithshme"</string>
+ <string name="bf_news_settings" msgid="3935593091894685267">"Lajme nga fusha e biznesit dhe financës"</string>
+ <string name="sports_news_settings" msgid="7649399631270052835">"Lajme sportive"</string>
+ <string name="entertainment_news_settings" msgid="5051153952959405035">"Lajme argëtuese"</string>
+ <string name="enable_disable_local" msgid="7890281063123416120">"Lokal"</string>
+ <string name="local_enable" msgid="6370463247609136359">"Lajmet lokale janë të aktivizuara"</string>
+ <string name="local_disable" msgid="4405691986943795798">"Lajmet lokale janë të çaktivizuara"</string>
+ <string name="enable_disable_regional" msgid="4905652414535565872">"Rajonal"</string>
+ <string name="regional_enable" msgid="4434680415437834759">"Lajmet rajonale u aktivizuan"</string>
+ <string name="regional_disable" msgid="5359325527213850077">"Lajmet rajonale u çaktivizuan"</string>
+ <string name="enable_disable_national" msgid="236278090206880734">"Kombëtar"</string>
+ <string name="national_enable" msgid="1172443648912246952">"Lajmet kombëtare janë të aktivizuar"</string>
+ <string name="national_disable" msgid="326018148178601166">"Lajmet kombëtare janë të çaktivizuara"</string>
+ <string name="enable_disable_international" msgid="7535348799604565592">"Ndërkombëtare"</string>
+ <string name="international_enable" msgid="5855356769925044927">"Lajmet ndërkombëtare janë të aktivizuara"</string>
+ <string name="international_disable" msgid="2850648591041088931">"Lajmet ndërkombëtare janë të çaktivizuara"</string>
+ <string name="list_language_title" msgid="2841683501919760043">"Gjuha"</string>
+ <string name="list_language_summary" msgid="8109546531071241601">"Përzgjidh gjuhën e lajmeve"</string>
+ <string-array name="list_language_entries">
+ <item msgid="6137851079727305485">"anglisht"</item>
+ <item msgid="1151988412809572526">"frëngjisht"</item>
+ <item msgid="577840534704312665">"spanjisht"</item>
+ <item msgid="8385712091143148180">"japonisht"</item>
+ <item msgid="1858401628368130638">"koreanisht"</item>
+ <item msgid="1933212028684529632">"kinezisht"</item>
+ <item msgid="1908428006803639064">"hebraisht"</item>
+ </string-array>
+ <string-array name="list_language_values">
+ <item msgid="1804908636436467150">"1"</item>
+ <item msgid="289708030346890334">"2"</item>
+ <item msgid="1121469729692402684">"3"</item>
+ <item msgid="2614093115912897722">"4"</item>
+ <item msgid="2411164639857960614">"5"</item>
+ <item msgid="5884448729274543324">"6"</item>
+ <item msgid="5511864807618312598">"7"</item>
+ </string-array>
+ <string name="list_language_dtitle" msgid="5442908726538951934">"Gjuhët"</string>
+ <string name="enable_disable_local_weather" msgid="986967454867219114">"Moti lokal"</string>
+ <string name="local_weather_enable" msgid="6199315114382448922">"Moti lokal është i aktivizuar"</string>
+ <string name="local_weather_disable" msgid="2510158089142626480">"Moti lokal është i çaktivizuar"</string>
+ <string name="enable_disable_atr" msgid="8339572391278872343">"Raportet e trafikut të zonës"</string>
+ <string name="atr_enable" msgid="5541757457789181799">"Raportet e trafikut të zonës u aktivizuan"</string>
+ <string name="atr_disable" msgid="7085558154727596455">"Raportet e trafikut të zonës u çaktivizuan"</string>
+ <string name="enable_disable_lafs" msgid="668189073721277199">"Oraret e fluturimeve të aeroportit lokal"</string>
+ <string name="lafs_enable" msgid="2791978667205137052">"Oraret e fluturimeve të aeroportit lokal janë të aktivizuara"</string>
+ <string name="lafs_disable" msgid="2391212397725495350">"Oraret e fluturimeve të aeroportit lokal janë të çaktivizuara"</string>
+ <string name="enable_disable_restaurants" msgid="6240381945336814024">"Restorante"</string>
+ <string name="restaurants_enable" msgid="5137657479469118847">"Restorantet u aktivizuan"</string>
+ <string name="restaurants_disable" msgid="3678480270938424092">"Restorantet u çaktivizuan"</string>
+ <string name="enable_disable_lodgings" msgid="1822029172658551202">"Banesat"</string>
+ <string name="lodgings_enable" msgid="3230042508992850322">"\"Banesat\" janë të aktivizuara"</string>
+ <string name="lodgings_disable" msgid="3387879742320682391">"\"Banesat\" janë të çaktivizuara"</string>
+ <string name="enable_disable_retail_directory" msgid="1357809784475660303">"Direktoria e shitjes me pakicë"</string>
+ <string name="retail_directory_enable" msgid="3280626290436111496">"Direktoria e shitjeve me pakicë u aktivizua"</string>
+ <string name="retail_directory_disable" msgid="6479739816662879027">"Direktoria e shitjeve me pakicë u çaktivizua"</string>
+ <string name="enable_disable_advertisements" msgid="5999495926176182128">"Reklama"</string>
+ <string name="advertisements_enable" msgid="2050305021264683786">"Reklamat u aktivizuan"</string>
+ <string name="advertisements_disable" msgid="8350985908788707935">"Reklamat u çaktivizuan"</string>
+ <string name="enable_disable_stock_quotes" msgid="6397810445293533603">"Kuotimet e bursës"</string>
+ <string name="stock_quotes_enable" msgid="4384802470887170543">"Kuotimet e bursës u aktivizuan"</string>
+ <string name="stock_quotes_disable" msgid="4781450084565594998">"Kuotimet e bursës u çaktivizuan"</string>
+ <string name="enable_disable_eo" msgid="4863043263443942494">"Mundësitë e punësimit"</string>
+ <string name="eo_enable" msgid="8623559062015685813">"\"Mundësitë e punësimit\" është i aktivizuar"</string>
+ <string name="eo_disable" msgid="3863812478090907609">"\"Mundësitë e punësimit\" është i çaktivizuar"</string>
+ <string name="enable_disable_mhh" msgid="908214593528968522">"Mjekësor, shëndetësor dhe spitalor"</string>
+ <string name="mhh_enable" msgid="5544500632306446815">"\"Mjekësor, shëndetësor dhe spitalor\" është i aktivizuar"</string>
+ <string name="mhh_disable" msgid="8998210550117117437">"\"Mjekësor, shëndetësor dhe spitalor\" është i çaktivizuar"</string>
+ <string name="enable_disable_technology_news" msgid="3517184627114999149">"Lajme teknologjike"</string>
+ <string name="technology_news_enable" msgid="7995209394210455181">"Lajmet teknologjike u aktivizuan"</string>
+ <string name="technology_news_disable" msgid="5483490380561851946">"Lajmet teknologjike u çaktivizuan"</string>
+ <string name="enable_disable_multi_category" msgid="626771003122899280">"Multi-kategoria"</string>
+ <string name="multi_category_enable" msgid="1179299804641721768">"\"Multi-kategoria\" u aktivizua"</string>
+ <string name="multi_category_disable" msgid="880104702904139505">"\"Multi-kategoria\" u çaktivizua"</string>
+ <string name="network_lte" msgid="7702681952521375754">"LTE (rekomandohet)"</string>
+ <string name="network_4G" msgid="2723512640529983138">"4G (rekomandohet)"</string>
+ <string name="network_global" msgid="1323190488685355309">"Global"</string>
+ <string name="cdma_system_select_title" msgid="5757657769327732833">"Përzgjedhje e sistemit"</string>
+ <string name="cdma_system_select_summary" msgid="60460043745797517">"Ndrysho modalitetin CDMA të roaming-ut"</string>
+ <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Përzgjedhje e sistemit"</string>
+ <string-array name="cdma_system_select_choices">
+ <item msgid="176474317493999285">"Vetëm \"Ekranin bazë\""</item>
+ <item msgid="1205664026446156265">"Automatik"</item>
+ </string-array>
+ <string name="cdma_subscription_title" msgid="1162564010076763284">"Abonimi CDMA"</string>
+ <string name="cdma_subscription_summary" msgid="2530890766115781140">"Ndrysho mes RUIM/SIM dhe NV"</string>
+ <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"abonim"</string>
+ <string-array name="cdma_subscription_choices">
+ <item msgid="2258014151300708431">"RUIM/SIM"</item>
+ <item msgid="5127722015571873880">"NV"</item>
+ </string-array>
+ <string-array name="cdma_subscription_values">
+ <item msgid="7494167883478914080">"0"</item>
+ <item msgid="6043847456049107742">"1"</item>
+ </string-array>
+ <string name="cdma_activate_device" msgid="3793805892364814518">"Aktivizo"</string>
+ <string name="cdma_lte_data_service" msgid="4255018217292548962">"Konfiguro shërbimin e të dhënave"</string>
+ <string name="carrier_settings_title" msgid="9028166176523012300">"Cilësimet e operatorit"</string>
+ <string name="fdn" msgid="7878832555095183202">"Numrat me formim fiks"</string>
+ <string name="fdn_with_label" msgid="187084204115493366">"Numrat me formim fiks (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="manage_fdn_list" msgid="8777755791892122369">"Lista FDN"</string>
+ <string name="fdn_list_with_label" msgid="7437232552210469217">"Lista FDN (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn_activation" msgid="2156479741307463576">"Aktivizimi FDN"</string>
+ <string name="fdn_enabled" msgid="5238109009915521240">"Numrat me formim fiks u aktivizuan"</string>
+ <string name="fdn_disabled" msgid="4700049736675368279">"Numrat me formim fiks u çaktivizuan"</string>
+ <string name="enable_fdn" msgid="3740191529180493851">"Aktivizo FDN-në"</string>
+ <string name="disable_fdn" msgid="7944020890722540616">"Çaktivizo FDN-në"</string>
+ <string name="change_pin2" msgid="2153563695382176676">"Ndrysho PIN2-shin"</string>
+ <string name="enable_fdn_ok" msgid="7215588870329688132">"Çaktivizo FDN-në"</string>
+ <string name="disable_fdn_ok" msgid="5727046928930740173">"Aktivizo FDN-në"</string>
+ <string name="sum_fdn" msgid="1959399454900272878">"Menaxho numrat me formim fiks"</string>
+ <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Ndrysho PIN-in për qasje FDN"</string>
+ <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Menaxho listën e numrave të telefonit"</string>
+ <string name="voice_privacy" msgid="3776841382844614716">"Privatësia e zërit"</string>
+ <string name="voice_privacy_summary" msgid="3159383389833516214">"Aktivizo modalitetin e privatësisë së përparuar"</string>
+ <string name="tty_mode_option_title" msgid="9033098925144434669">"Modaliteti TTY"</string>
+ <string name="tty_mode_option_summary" msgid="1073835131534808732">"Cakto modalitetin TTY"</string>
+ <string name="auto_retry_mode_title" msgid="4073265511427813322">"Ripërpjekja automatike"</string>
+ <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Aktivizo modalitetin e ripërpjekjes automatike"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Nuk lejohet ndryshimi i modalitetit TTY gjatë telefonatave me video"</string>
+ <string name="menu_add" msgid="1882023737425114762">"Shto kontakt"</string>
+ <string name="menu_edit" msgid="7143003705504672374">"Redakto kontaktin"</string>
+ <string name="menu_delete" msgid="3977150783449642851">"Fshi kontaktin"</string>
+ <string name="get_pin2" msgid="8204677063922225311">"Shkruaj PIN2-shin"</string>
+ <string name="name" msgid="7329028332786872378">"Emri"</string>
+ <string name="number" msgid="7905950798349903858">"Numri"</string>
+ <string name="save" msgid="4094274636321939086">"Ruaj"</string>
+ <string name="add_fdn_contact" msgid="2481915899633353976">"Shto numër me formim fiks"</string>
+ <string name="adding_fdn_contact" msgid="7627379633721940991">"Po shton numër me formim fiks…"</string>
+ <string name="fdn_contact_added" msgid="7458335758501736665">"Numri me formim fiks u shtua."</string>
+ <string name="edit_fdn_contact" msgid="7976936035587081480">"Redakto numrin me formim fiks"</string>
+ <string name="updating_fdn_contact" msgid="8370929876849803600">"Po përditëson numrin me formim fiks…"</string>
+ <string name="fdn_contact_updated" msgid="5497828782609005017">"Numri me formim fiks u përditësua."</string>
+ <string name="delete_fdn_contact" msgid="6668958073074151717">"Fshije numrin me formim fiks"</string>
+ <string name="deleting_fdn_contact" msgid="5669163206349319969">"Po fshin numrin me formim fiks…"</string>
+ <string name="fdn_contact_deleted" msgid="7154162327112259569">"Numri me formim fiks u fshi."</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"FDN-ja nuk u përditësua sepse shkrove një PIN të pasaktë."</string>
+ <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN-ja nuk ishte i përditësuar sepse numri nuk mund të kalojë 20 shifra."</string>
+ <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN-ja nuk u përditësua. PIN2-shi ishte i pasaktë ose numri i telefonit u refuzua."</string>
+ <string name="fdn_failed" msgid="540018079008319747">"Operacioni FDN dështoi"</string>
+ <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Po lexon nga karta SIM..."</string>
+ <string name="simContacts_empty" msgid="5270660846489561932">"Nuk ka kontakte në kartën tënde SIM."</string>
+ <string name="simContacts_title" msgid="1861472842524839921">"Përzgjidh kontakte për të importuar"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Çaktivizo modalitetin e aeroplanit për të importuar kontaktet nga karta SIM."</string>
+ <string name="enable_pin" msgid="5422767284133234860">"Aktivizo/çaktivizo PIN-in e kartës SIM"</string>
+ <string name="change_pin" msgid="9174186126330785343">"Ndrysho PIN-in e kartës SIM"</string>
+ <string name="enter_pin_text" msgid="8532615714751931951">"PIN-i i kartës SIM:"</string>
+ <string name="oldPinLabel" msgid="5287773661246368314">"PIN-i i vjetër"</string>
+ <string name="newPinLabel" msgid="207488227285336897">"PIN i ri"</string>
+ <string name="confirmPinLabel" msgid="257597715098070206">"Konfirmo PIN-in e ri"</string>
+ <string name="badPin" msgid="8955102849303984935">"PIN-i i vjetër që ke shkruar nuk është i saktë. Provo sërish."</string>
+ <string name="mismatchPin" msgid="5923253370683071889">"Kodet PIN që shkrove nuk përputhen. Provo sërish."</string>
+ <string name="invalidPin" msgid="5981171102258684792">"Shkruaj një PIN që është 4 deri në 8 numra."</string>
+ <string name="disable_sim_pin" msgid="3419351358300716472">"Pastro PIN-in e kartës SIM"</string>
+ <string name="enable_sim_pin" msgid="4845145659651484248">"Vendos PIN-in e kartës SIM"</string>
+ <string name="enable_in_progress" msgid="3417917024688497010">"Po vendos PIN-in…"</string>
+ <string name="enable_pin_ok" msgid="2918545971413270063">"Vendosja e PIN-it"</string>
+ <string name="disable_pin_ok" msgid="2109571368635883688">"PIN-i u fshi"</string>
+ <string name="pin_failed" msgid="5644377896213584760">"PIN-i është i pasaktë"</string>
+ <string name="pin_changed" msgid="4455736268023261662">"PIN-i u përditësua"</string>
+ <string name="puk_requested" msgid="5921393215789090200">"Fjalëkalimi është i pasaktë. PIN-i tani është i bllokuar. Kërkohet PUK-u."</string>
+ <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2-shi"</string>
+ <string name="oldPin2Label" msgid="8559146795026261502">"PIN2-shi i vjetër"</string>
+ <string name="newPin2Label" msgid="4573956902204349054">"PIN2-shi i ri"</string>
+ <string name="confirmPin2Label" msgid="8100319484454787708">"Konfirmo PIN2-shin e ri"</string>
+ <string name="badPuk2" msgid="7910064009531541708">"PUK2-shi është i pasaktë. Provo sërish."</string>
+ <string name="badPin2" msgid="6646896629970023109">"PIN2-shi i vjetër është i pasaktë. Provo sërish."</string>
+ <string name="mismatchPin2" msgid="4177967478551851117">"Kodet PIN2 nuk përputhen. Provo sërish."</string>
+ <string name="invalidPin2" msgid="1757045131429105595">"Fut një kod PIN2 që është 4 deri në 8 numra."</string>
+ <string name="invalidPuk2" msgid="7059081153334815973">"Fut një kod PUK2 që është 8 numra."</string>
+ <string name="pin2_changed" msgid="3724522579945610956">"PIN2-shi u përditësua"</string>
+ <string name="label_puk2_code" msgid="4688069961795341948">"Fut kodin PUK2"</string>
+ <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Fjalëkalimi ishte i pasaktë. PIN2-shi është i bllokuar. Për të provuar sërish, ndrysho PIN2-shin."</string>
+ <string name="puk2_requested" msgid="5831015200030161434">"Fjalëkalimi është i pasaktë. Karta SIM tani është e kyçur. Fut PUK2-shin."</string>
+ <string name="puk2_blocked" msgid="3150263853077280049">"PUK2-shi është i bllokuar përgjithmonë."</string>
+ <string name="pin2_attempts" msgid="720736232885011507">\n"Të kanë mbetur edhe <xliff:g id="NUMBER">%d</xliff:g> përpjekje."</string>
+ <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2-shi nuk është më i bllokuar"</string>
+ <string name="doneButton" msgid="2859593360997984240">"U krye!"</string>
+ <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Numri i postës zanore"</string>
+ <string name="card_title_dialing" msgid="5769417478498348054">"Formimi i numrit"</string>
+ <string name="card_title_redialing" msgid="8253487008234167266">"Po riformon numrin"</string>
+ <string name="card_title_conf_call" msgid="1162980346189744501">"Telefonatë konference"</string>
+ <string name="card_title_incoming_call" msgid="7364539451234646909">"Telefonatë hyrëse"</string>
+ <string name="card_title_call_ended" msgid="5544730338889702298">"Telefonata përfundoi"</string>
+ <string name="card_title_on_hold" msgid="821463117892339942">"Në pritje"</string>
+ <string name="card_title_hanging_up" msgid="3999101620995182450">"Mbyllja"</string>
+ <string name="card_title_in_call" msgid="6346543933068225205">"Në telefonatë"</string>
+ <string name="notification_dialing" msgid="2107666444937350731">"Po formon numrin"</string>
+ <string name="notification_missedCallTitle" msgid="7554385905572364535">"Telefonatë e humbur"</string>
+ <string name="notification_missedCallsTitle" msgid="1361677948941502522">"Telefonata të humbura"</string>
+ <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> telefonata të humbura"</string>
+ <string name="notification_missedCallTicker" msgid="504686252427747209">"Telefonatë e humbur nga <xliff:g id="MISSED_CALL_FROM">%s</xliff:g>"</string>
+ <string name="notification_ongoing_call" msgid="7068688957273482989">"Telefonatë në vazhdim"</string>
+ <string name="notification_on_hold" msgid="3480694969511790465">"Në pritje"</string>
+ <string name="notification_incoming_call" msgid="2820429205043529642">"Telefonatë hyrëse"</string>
+ <string name="notification_voicemail_title" msgid="8933468752045550523">"Postë e re zanore"</string>
+ <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Postë e re zanore (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+ <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Formo numrin <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+ <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Numri i postës zanore është i panjohur"</string>
+ <string name="notification_network_selection_title" msgid="4224455487793492772">"Nuk ka shërbim"</string>
+ <string name="notification_network_selection_text" msgid="2607085729661923269">"Rrjeti i përzgjedhur (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nuk mundësohet"</string>
+ <string name="notification_action_end_call" msgid="6069460915123531620">"Mbyll"</string>
+ <string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ri-telefono"</string>
+ <string name="notification_missedCall_message" msgid="3049928912736917988">"Mesazh"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Çaktivizo modalitetin e aeroplanit për të bërë një telefonatë."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Çaktivizo modalitetin e aeroplanit ose lidhu me një rrjet me valë për të bërë një telefonatë."</string>
+ <string name="incall_error_emergency_only" msgid="4678640422710818317">"I paregjistruar në rrjet."</string>
+ <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rrjeti celular nuk mundësohet."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Rrjeti celular është i papërdorshëm. Lidhu me një rrjet me valë për të bërë një telefonatë."</string>
+ <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Për të kryer një telefonatë, fut një numër të vlefshëm."</string>
+ <string name="incall_error_call_failed" msgid="6302746943230078197">"Nuk mund të telefonojë."</string>
+ <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Po fillon sekuencën MMI…"</string>
+ <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Shërbimi nuk mbështetet"</string>
+ <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nuk mund të ndryshojë telefonatat."</string>
+ <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nuk mund të ndajë telefonatën."</string>
+ <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Nuk mund të transferojë."</string>
+ <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nuk mund të kryejë telefonatë konference."</string>
+ <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nuk mund të refuzojë telefonatën."</string>
+ <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nuk mund të lëshojë telefonatën(at)."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Lidhu me një rrjet me valë për të bërë një telefonatë."</string>
+ <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Telefonata e urgjencës"</string>
+ <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Po aktivizon radion…"</string>
+ <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nuk ka shërbim. Po provon sërish…"</string>
+ <string name="dial_emergency_error" msgid="1509085166367420355">"Nuk mund të telefonohet. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nuk është numër urgjence."</string>
+ <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nuk mund të telefonohet. Formo një numër urgjence."</string>
+ <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Përdor tastierën për të formuar numrin"</string>
+ <string name="onscreenHoldText" msgid="2285258239691145872">"Në pritje"</string>
+ <string name="onscreenEndCallText" msgid="4403855834875398585">"Përfundo"</string>
+ <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Blloku i formimit të numrit"</string>
+ <string name="onscreenMuteText" msgid="5011369181754261374">"Kalo në heshtje"</string>
+ <string name="onscreenAddCallText" msgid="5140385634712287403">"Shto telefonatë"</string>
+ <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Shkri telefonatat"</string>
+ <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Shkëmbe"</string>
+ <string name="onscreenManageCallsText" msgid="5473231160123254154">"Menaxho telefonatat"</string>
+ <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Menaxho konferencën"</string>
+ <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
+ <string name="onscreenVideoCallText" msgid="4800924186056115442">"Telefonatë me video"</string>
+ <string name="importSimEntry" msgid="6614358325359736031">"Importo"</string>
+ <string name="importAllSimEntries" msgid="1503181169636198673">"Importoji të gjitha"</string>
+ <string name="importingSimContacts" msgid="7374056215462575769">"Po importon kontaktet e kartës SIM"</string>
+ <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importo nga kontaktet"</string>
+ <string name="hac_mode_title" msgid="8740268574688743289">"Aparatet e dëgjimit"</string>
+ <string name="hac_mode_summary" msgid="6833851160514929341">"Aktivizo përputhshmërinë e aparateve të dëgjimit"</string>
+ <string-array name="tty_mode_entries">
+ <item msgid="512950011423868021">"TTY i çaktivizuar"</item>
+ <item msgid="3971695875449640648">"TTY i plotë"</item>
+ <item msgid="1937509904407445684">"TTY HCO"</item>
+ <item msgid="5644925873488772224">"TTY VCO"</item>
+ </string-array>
+ <string name="dtmf_tones_title" msgid="5163153771291340803">"Tonet DTMF"</string>
+ <string name="dtmf_tones_summary" msgid="3351820372864020331">"Cakto gjatësinë e toneve DTMF"</string>
+ <string-array name="dtmf_tone_entries">
+ <item msgid="899650777817315681">"Normal"</item>
+ <item msgid="2883365539347850535">"I gjatë"</item>
+ </string-array>
+ <string name="network_info_message" msgid="7738596060242881930">"Mesazh rrjeti"</string>
+ <string name="network_error_message" msgid="3394780436230411413">"Mesazh gabimi"</string>
+ <string name="ota_title_activate" msgid="8616918561356194398">"Aktivizo telefonin"</string>
+ <string name="ota_touch_activate" msgid="6553212803262586244">"Nevojitet një telefonatë e veçantë për të aktivizuar shërbimin e telefonit. \n\nPasi të shtypësh “Aktivizo”, dëgjo udhëzimet e dhëna për të aktivizuar telefonin."</string>
+ <string name="ota_hfa_activation_title" msgid="2234246934160473981">"Po aktivizon..."</string>
+ <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"Telefoni po aktivizon shërbimin e të dhënave celulare.\n\nKjo mund të zgjasë deri në 5 minuta."</string>
+ <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Të kapërcehet aktivizimi?"</string>
+ <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Nëse anashkalon aktivizimin, nuk mund të kryesh telefonata ose të lidhesh me rrjetet e të dhënave celulare (megjithatë mund të lidhesh me rrjetet Wi-Fi). Derisa të aktivizosh telefonin, do të të kërkohet ta aktivizosh çdo herë që e ndez."</string>
+ <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Kapërce"</string>
+ <string name="ota_activate" msgid="1368528132525626264">"Aktivizo"</string>
+ <string name="ota_title_activate_success" msgid="6570240212263372046">"Telefoni është i aktivizuar."</string>
+ <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"Ka problem me aktivizimin"</string>
+ <string name="ota_listen" msgid="162923839877584937">"Ndiq udhëzimet e folura derisa të dëgjosh që aktivizimi ka përfunduar."</string>
+ <string name="ota_speaker" msgid="6904589278542719647">"Altoparlant"</string>
+ <string name="ota_progress" msgid="460876637828044519">"Po programon telefonin…"</string>
+ <string name="ota_failure" msgid="7713756181204620397">"Nuk mundi të programonte telefonin"</string>
+ <string name="ota_successful" msgid="1880780692887077407">"Telefoni yt tani është i aktivizuar. Mund të zgjasë deri në 15 minuta derisa të fillojë shërbimi."</string>
+ <string name="ota_unsuccessful" msgid="8072141612635635357">"Telefoni nuk u aktivizua. \nMund të nevojitet të gjesh një zonë me mbulim më të mirë (afër një dritareje ose jashtë). \n\nProvo sërish ose telefono shërbimin e klientit për më shumë opsione."</string>
+ <string name="ota_spc_failure" msgid="3909983542575030796">"DËSHTIME TË SHUMTA SPC"</string>
+ <string name="ota_call_end" msgid="4537279738134612388">"Prapa"</string>
+ <string name="ota_try_again" msgid="7685477206465902290">"Provo sërish"</string>
+ <string name="ota_next" msgid="3904945374358235910">"Tjetër"</string>
+ <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
+ <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Hyri në modalitetin e \"Kthimit të telefonatës së urgjencës\""</string>
+ <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modaliteti i \"Kthimit të telefonatës së urgjencës\""</string>
+ <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Lidhja me të dhënat është çaktivizuar"</string>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Nuk ka të dhëna të lidhura për <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
+ <item quantity="one">Nuk ka të dhëna të lidhura për <xliff:g id="COUNT_0">%s</xliff:g> minutë</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Telefoni do të përdoret në modalitetin e \"Kthimit të Telefonatës së Urgjencës\" për <xliff:g id="COUNT_1">%s</xliff:g> minuta. Ndërkohë që është në këtë modalitet, nuk mund të përdoret asnjë aplikacion duke përdorur lidhje të dhënash. Dëshiron të dalësh tani?</item>
+ <item quantity="one">Telefoni do të jetë në modalitetin e \"Kthimit të telefonatës së urgjencës\" për <xliff:g id="COUNT_0">%s</xliff:g> minuta. Ndërkohë që është në këtë modalitet, nuk mund të përdoret asnjë aplikacion duke përdorur lidhje të dhënash. Dëshiron të dalësh tani?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Veprimi i përzgjedhur nuk mund të përdoret kur është në modalitetin e \"Kthimit të telefonatës së urgjencës\". Telefoni do të jetë në këtë modalitet për <xliff:g id="COUNT_1">%s</xliff:g> minuta. Dëshiron të dalësh tani?</item>
+ <item quantity="one">Veprimi i përzgjedhur nuk mund të përdoret kur është në modalitetin e \"Kthimit të telefonatës së urgjencës\". Telefoni do të jetë në këtë modalitet për <xliff:g id="COUNT_0">%s</xliff:g> minuta. Dëshiron të dalësh tani?</item>
+ </plurals>
+ <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Veprimi i përzgjedhur nuk mund të përdoret gjatë një telefonate urgjente."</string>
+ <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Modaliteti i \"Kthimit të telefonatës dalëse të urgjencës\""</string>
+ <string name="alert_dialog_yes" msgid="6674268047820703974">"Po"</string>
+ <string name="alert_dialog_no" msgid="1476091437797628703">"Jo"</string>
+ <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Hiq dorë"</string>
+ <string name="voicemail_provider" msgid="5135942703327136909">"Shërbimi"</string>
+ <string name="voicemail_settings" msgid="72448049107749316">"Konfigurimi"</string>
+ <string name="voicemail_number_not_set" msgid="6724904736891087856">"<I pavendosur>"</string>
+ <string name="other_settings" msgid="3672912580359716394">"Cilësime të tjera të telefonatës"</string>
+ <string name="calling_via_template" msgid="4839419581866928142">"Po telefonon përmes <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+ <string name="contactPhoto" msgid="4713193418046639466">"fotografia e kontaktit"</string>
+ <string name="goPrivate" msgid="865837794424530980">"bëje private"</string>
+ <string name="selectContact" msgid="781975788478987237">"përzgjidh kontaktin"</string>
+ <string name="not_voice_capable" msgid="2739898841461577811">"Telefonata zanore nuk mbështetet"</string>
+ <string name="description_dial_button" msgid="7459705245418435351">"formo numrin"</string>
+ <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Dridhja"</string>
+ <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Dridhja"</string>
+ <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Tingulli"</string>
+ <string name="dial_pad_autocomplete" msgid="7683489952557536398">"Plotësim automatik i bllokut të formimit të numrit"</string>
+ <string name="preference_category_ringtone" msgid="5197960752529332721">"Me zile dhe me dridhje"</string>
+ <string name="pstn_connection_service_label" msgid="1743245930577325900">"Kartat e integruara SIM"</string>
+ <string name="enable_video_calling_title" msgid="7237253660669000899">"Aktivizo telefonatën me video"</string>
+ <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"Për të aktivizuar telefonatën me video, nevojitet të aktivizosh \"Modalitetin e përparuar 4G LTE\" në cilësimet e rrjetit."</string>
+ <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Cilësimet e rrjetit"</string>
+ <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"Mbyll"</string>
+ <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Telefonata urgjence"</string>
+ <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Vetëm telefonata urgjence"</string>
+ <string name="sim_description_default" msgid="4778679519938775515">"Karta SIM, foleja: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Qasshmëria"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Telefonatë hyrëse Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Telefonatë me Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Prek sërish për ta hapur"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Ndodhi një gabim gjatë dekodimit të mesazhit."</string>
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index c3bfc5c..426abbd 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Налози на телефону"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Додај SIP налог"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Конфигурисање подешавања налога"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi позивање"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Позивање преко Wi-Fi-ја"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Не користи Wi-Fi позивање"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Не користи помоћника за позиве"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ништа"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Конфигуриши"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Уграђена услуга повезивања"</string>
<string name="voicemail" msgid="8693759337917898954">"Говорна пошта"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Гласовна пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Мрежни оператери"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Хитни преноси"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Повезивање са услугом за податке током роминга"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Повезивање са услугом за податке током роминга"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Веза за пренос података је прекинута зато што сте напустили кућну мрежу са искљученим преносом података у ромингу."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Желите ли да омогућите коришћење података у ромингу? Можда ће вам много бити наплаћено."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Могу да настану значајни трошкови."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Желите ли да дозволите пренос података у ромингу?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Опције за GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA опције"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Коришћење података"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Подеси TTY режим"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Аутоматски поновни покушај"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Омогућавање режима аутоматског поновног покушаја"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Промена TTY режима није дозвољена током видео позива"</string>
<string name="menu_add" msgid="1882023737425114762">"Додај контакт"</string>
<string name="menu_edit" msgid="7143003705504672374">"Измени контакт"</string>
<string name="menu_delete" msgid="3977150783449642851">"Избриши контакт"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Читање са SIM картице…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Нема контаката на SIM картици."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Избор контаката за увоз"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Да бисте увезли контакте са SIM картице, прво искључите Режим рада у авиону."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Искључите режим рада у авиону да бисте увезли контакте са SIM картице."</string>
<string name="enable_pin" msgid="5422767284133234860">"Омогућавање/онемогућавање SIM PIN-а"</string>
<string name="change_pin" msgid="9174186126330785343">"Промена SIM PIN-а"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Прекини везу"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Узврати позив"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Порука"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Да бисте упутили позив, прво искључите режим рада у авиону."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Искључите режим рада у авиону да бисте упутили позив."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Искључите режим рада у авиону или се повежите на бежичну мрежу да бисте упутили позив."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Није регистровано на мрежи."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Мобилна мрежа није доступна."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Мобилна мрежа није доступна. Повежите се на бежичну мрежу да бисте упутили позив."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Да бисте упутили позив, унесите важећи број."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Позив није успео."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Покретање MMI секвенце"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Конференцијски позиви нису могући."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Одбијање позива није успело."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Успостављање позива није успело."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Повежите се на бежичну мрежу да бисте упутили позив."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Хитан позив"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Укључивање радија…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нема мреже. Поновни покушај…"</string>
@@ -508,18 +514,21 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Унет је режим за хитан повратни позив"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим за хитан повратни позив"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Веза за пренос података је онемогућена"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Нема везе за пренос података за <xliff:g id="COUNT">%s</xliff:g>минут"</item>
- <item quantity="other" msgid="3122217344579273583">"Нема везе за пренос података за <xliff:g id="COUNT">%s</xliff:g> минута"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Телефон ће бити у Режиму хитног повратног позива <xliff:g id="COUNT">%s</xliff:g> минут. Док сте у овом режиму, не можете да користите ниједну апликацију која користи везу за пренос података. Да ли желите сада да изађете?"</item>
- <item quantity="other" msgid="8617116564023933114">"Телефон ће бити у Режиму хитног повратног позива <xliff:g id="COUNT">%s</xliff:g> минута. Док сте у овом режиму, не можете да користите ниједну апликацију која користи везу за пренос података. Да ли желите сада да изађете?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Изабрана радња није доступна док сте у Режиму хитног повратног позива. Телефон ће бити у овом режиму <xliff:g id="COUNT">%s</xliff:g> минут. Да ли желите сада да изађете?"</item>
- <item quantity="other" msgid="6115622137771382224">"Изабрана радња није доступна док сте у Режиму хитног повратног позива. Телефон ће бити у овом режиму <xliff:g id="COUNT">%s</xliff:g> минутa. Да ли желите сада да изађете?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Нема везе за пренос података <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
+ <item quantity="few">Нема везе за пренос података <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
+ <item quantity="other">Нема везе за пренос података <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Телефон ће бити у Режиму хитног повратног позива <xliff:g id="COUNT_1">%s</xliff:g> минут. Док је у овом режиму не можете да користите апликације које користе везу за пренос података. Желите ли одмах да изађете из овог режима?</item>
+ <item quantity="few">Телефон ће бити у Режиму хитног повратног позива <xliff:g id="COUNT_1">%s</xliff:g> минута. Док је у овом режиму не можете да користите апликације које користе везу за пренос података. Желите ли одмах да изађете из овог режима?</item>
+ <item quantity="other">Телефон ће бити у Режиму хитног повратног позива <xliff:g id="COUNT_1">%s</xliff:g> минута. Док је у овом режиму не можете да користите апликације које користе везу за пренос података. Желите ли одмах да изађете из овог режима?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Изабрана радња није доступна док сте у Режиму хитног повратног позива. Телефон ће бити у овом режиму <xliff:g id="COUNT_1">%s</xliff:g> минут. Желите ли одмах да изађете из овог режима?</item>
+ <item quantity="few">Изабрана радња није доступна док сте у Режиму хитног повратног позива. Телефон ће бити у овом режиму <xliff:g id="COUNT_1">%s</xliff:g> минута. Желите ли одмах да изађете из овог режима?</item>
+ <item quantity="other">Изабрана радња није доступна док сте у Режиму хитног повратног позива. Телефон ће бити у овом режиму <xliff:g id="COUNT_1">%s</xliff:g> минута. Желите ли одмах да изађете из овог режима?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Изабрана радња није доступна када је у току хитан позив"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Излазак из Режима хитног повратног позива"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Да"</string>
@@ -548,4 +557,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Хитни позиви"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Само за хитне позиве"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM картица, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Приступачност"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Долазни Wi-Fi позив"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi позив"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Додирните поново да бисте отворили"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Дошло је до грешке при декодирању поруке."</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index a1736c6..377765e 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Konton på mobilen"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Lägg till SIP-konto"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurera kontoinställningar"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi-samtal"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi-samtal"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Använd inte Wi-Fi-samtal"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Använd inte samtalsassistent"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Ingen"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Konfigurera"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Inbyggd anslutningstjänst"</string>
<string name="voicemail" msgid="8693759337917898954">"Röstbrevlåda"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Röstbrevlåda (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"RB:"</string>
<string name="networks" msgid="8873030692174541976">"Nätverksoperatörer"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Nödsändningar"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Anslut till datatjänster vid roaming"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Anslut till datatjänster vid roaming"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Du förlorade dataanslutningen eftersom du lämnade ditt hemnätverk utan att aktivera dataroaming."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Vill du tillåta dataanvändning vid roaming? Höga avgifter kan tillkomma."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Detta kan leda till höga kostnader."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Vill du tillåta dataroaming?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Alternativ för GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA-alternativ"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Dataanvändning"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Ange TTY-läge"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Försök igen automatiskt"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Aktivera läget Försök igen automatiskt"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Det går inte att ändra till texttelefonläge under ett videosamtal"</string>
<string name="menu_add" msgid="1882023737425114762">"Lägg till kontakt"</string>
<string name="menu_edit" msgid="7143003705504672374">"Redigera kontakt"</string>
<string name="menu_delete" msgid="3977150783449642851">"Ta bort kontakt"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Läser från SIM-kort…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Inga kontakter på SIM-kortet."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Välj vilka kontakter som ska importeras"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Om du vill importera kontakter från SIM-kortet måste du inaktivera flygplansläget."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Inaktivera flygplansläget om du vill importera kontakter från SIM-kortet."</string>
<string name="enable_pin" msgid="5422767284133234860">"Aktivera/inaktivera SIM-kortets PIN-kod"</string>
<string name="change_pin" msgid="9174186126330785343">"Ändra SIM-kortets PIN-kod"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM-kortets PIN-kod:"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Lägg på"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Ring upp"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Meddelande"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Om du vill ringa ett samtal måste du först inaktivera flygplansläge."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Inaktivera flygplansläget om du vill ringa."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Inaktivera flygplansläget eller anslut till ett trådlöst nätverk om du vill ringa."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Inte registrerat på nätverk."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Det finns inget mobilnät tillgängligt."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Det finns inga tillgängliga mobilnätverk. Anslut till ett trådlöst nätverk om du vill ringa."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ange ett giltigt nummer om du vill ringa ett samtal."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Det gick inte att ringa."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Startar sekvens för MMI-kod…"</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Det gick inte att ringa konferenssamtal."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Det gick inte att avvisa samtalet."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Det gick inte att släppa samtal."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Anslut till ett trådlöst nätverk om du vill ringa."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nödsamtal"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Sätter på radion…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjänst. Försök igen …"</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Starta läget Återuppringning vid nödsamtal"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Läget Återuppringning vid nödsamtal"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dataanslutning inaktiverad"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Inga dataanslutningar på <xliff:g id="COUNT">%s</xliff:g> minut"</item>
- <item quantity="other" msgid="3122217344579273583">"Inga dataanslutningar på <xliff:g id="COUNT">%s</xliff:g> minuter"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefonen kommer att vara i läget Återuppringning vid nödsamtal i <xliff:g id="COUNT">%s</xliff:g> minut. I det här läget kan inga appar som kräver en dataanslutning användas. Vill du avsluta nu?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefonen kommer att vara i läget Återuppringning vid nödsamtal i <xliff:g id="COUNT">%s</xliff:g> minuter. I det här läget kan inga appar som kräver en dataanslutning användas. Vill du avsluta nu?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Den valda åtgärden är inte tillgänglig i läget Återuppringning vid nödsamtal. Telefonen kommer att vara i det här läget i <xliff:g id="COUNT">%s</xliff:g> minut. Vill du avsluta nu?"</item>
- <item quantity="other" msgid="6115622137771382224">"Den valda åtgärden är inte tillgänglig i läget Återuppringning vid nödsamtal. Telefonen kommer att vara i det här läget i <xliff:g id="COUNT">%s</xliff:g> minuter. Vill du avsluta nu?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Ingen dataanslutning i <xliff:g id="COUNT_1">%s</xliff:g> minuter</item>
+ <item quantity="one">Ingen dataanslutning i <xliff:g id="COUNT_0">%s</xliff:g> minut</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Mobilen försätts i nödsamtalsläge i <xliff:g id="COUNT_1">%s</xliff:g> minuter. I det här läget går det inte att använda några appar där en dataanslutning används. Vill du avsluta nu?</item>
+ <item quantity="one">Mobilen försätts i nödsamtalsläge i <xliff:g id="COUNT_0">%s</xliff:g> minut. I det här läget går det inte att använda några appar där en dataanslutning används. Vill du avsluta nu?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Den valda åtgärden är inte tillgänglig i nödsamtalsläget. Mobilen försätts i det här läget i <xliff:g id="COUNT_1">%s</xliff:g> minuter. Vill du avsluta nu?</item>
+ <item quantity="one">Den valda åtgärden är inte tillgänglig i nödsamtalsläget. Mobilen försätts i det här läget i <xliff:g id="COUNT_0">%s</xliff:g> minut. Vill du avsluta nu?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Den valda åtgärden är inte tillgänglig under nödsamtal."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Avslutar läget Återuppringning vid nödsamtal"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ja"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Nödsamtal"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Endast nödsamtal"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-kortsplats: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Tillgänglighet"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Inkommande Wi-Fi-samtal"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-samtal"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tryck igen för att öppna"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Ett fel inträffade när meddelandet avkodades."</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index eeebd0d..7e3e182 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Akaunti za simu"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Ongeza akaunti ya SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Sanidi mipangilio ya akaunti"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Upigaji simu kwa Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Upigaji simu kwa Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Usitumie upigaji simu kwa Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Usitumie kisaidizi cha simu"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Kisitumike"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Sanidi"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Huduma ya muunganisho iliyojengewa ndani"</string>
<string name="voicemail" msgid="8693759337917898954">"Barua ya sauti"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Ujumbe wa sauti (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Kampuni zinazotoa huduma"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Matangazo ya dharura"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Unganisha huduma ya data wakati niko nje ya mtandao wangu wa kawaida"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Unganisha huduma ya data wakati niko nje ya mtandao wangu wa kawaida"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Umepoteza muunganisho wa data kwa sababu uliondoka kwenye mtandao wako wa kawaida ukiwa umezima utumiaji data nje ya mtandao wa kawaida."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Ungependa kuruhusu matumizi ya data kwenye mitandao mingine? Huenda ukatozwa ada kubwa."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Unaweza kutozwa gharama kubwa."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Je, ungependa kuruhusu matumizi ya intaneti ukiwa nje ya mtandao wako wa kawaida?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Chaguo za GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Chaguo za CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Matumizi ya data"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Weka hali ya TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Jaribu tena Kiotomatiki"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Wezesha hali ya kujaribu tena Kiotomatiki"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Kubadilisha Hali ya TTY hakuruhusiwi wakati wa hangout ya video"</string>
<string name="menu_add" msgid="1882023737425114762">"Ongeza anwani"</string>
<string name="menu_edit" msgid="7143003705504672374">"Hariri anwani"</string>
<string name="menu_delete" msgid="3977150783449642851">"Futa anwani"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Inasoma kutoka kwa SIM kadi…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Hakuna anwani kwenye SIM kadi yako."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Chagua anwani za kuingiza"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Ili kuleta anwani kutoka kwa SIM kadi, kwanza zima hali ya Ndege."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Zima hali ya ndegeni ili uingize anwani kutoka kadi ya SIM"</string>
<string name="enable_pin" msgid="5422767284133234860">"Wezesha/zima nenosiri la SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Badilisha nenosiri la SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN ya SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Kata simu"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Mpigie"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Ujumbe"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Kupiga simu, kwanza zima hali ya ndege."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Zima hali ya ndegeni ili upige simu."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Zima hali ya ndegeni au uunganishe kwenye mtandao pasiwaya ili upige simu."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Haijasajiliwa kwa mitandao"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mitandao ya simu za mkononi haipatikani"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Huduma ya mtandao wa simu za mkononi haupatikani. Unganisha kwenye mtandao pasiwaya ili upige simu."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ili upige simu, weka nambari sahihi."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Haiwezi kupiga simu."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Inaanzisha msururu wa MMI…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Imeshindwa kupigia watu wengi."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Haiwezi kukataa simu."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Haiwezi kutoa simu."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Unganisha kwenye mtandao pasiwaya ili upige simu."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Simu ya dharura"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Inawasha redio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Hakuna huduma. Inajaribu tena..."</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Umeingia katika gumzo ya kupiga tena simu ya Dharura"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"hali ya kupiga tena simu ya Dharura"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Muunganisho wa data umelemazwa"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Hakuna muunganisho wa data kwa dakika <xliff:g id="COUNT">%s</xliff:g>"</item>
- <item quantity="other" msgid="3122217344579273583">"Hakuna data ya muunganisho kwa dakika <xliff:g id="COUNT">%s</xliff:g>"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Simu itakuwa katika hali ya Kupiga tena Simu ya Dharura kwa dakika <xliff:g id="COUNT">%s</xliff:g>. Ukiwa katika hali hii hakuna programu zinazotumia muunganisho wa data zinazoweza kutumika. Je, unataka kutoka sasa?"</item>
- <item quantity="other" msgid="8617116564023933114">"Simu itakuwa katika hali ya Kupiga tena Simu ya Dharura kwa dakika <xliff:g id="COUNT">%s</xliff:g>. Ukiwa katika hali hii hakuna programu zinazotumia muunganisho wa data zinazoweza kutumika. Je, unataka kutoka sasa?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Tendo lililochaguliwa halipatikana wakati iko katika hali ya kupiga tena simu ya dharura. Simu itakuwa katika hali hii kwa dakika <xliff:g id="COUNT">%s</xliff:g>. Je, unataka kutoka sasa?"</item>
- <item quantity="other" msgid="6115622137771382224">"Kitendo kilichochaguliwa hakipatikani katika hali ya Kupiga Tena Simu ya Dharura. Simu itakuwa katika hali hii kwa dakika <xliff:g id="COUNT">%s</xliff:g>. Je, unataka kutoka sasa?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Hakuna muunganisho wa data kwa dakika <xliff:g id="COUNT_1">%s</xliff:g></item>
+ <item quantity="one">Hakuna muunganisho wa data kwa dakika <xliff:g id="COUNT_0">%s</xliff:g> </item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Simu itakuwa katika hali ya Simu ya Dharura kwa dakika <xliff:g id="COUNT_1">%s</xliff:g>. Ukiwa katika hali hii hakuna programu zinazotumia muunganisho wa data zinazoweza kutumiwa. Je, unataka kuondoka sasa?</item>
+ <item quantity="one">Simu itakuwa katika hali ya Simu ya Dharura kwa dakika <xliff:g id="COUNT_0">%s</xliff:g>. Ukiwa katika hali hii hakuna programu zinazotumia muunganisho wa data zinazoweza kutumiwa. Je, unataka kuondoka sasa?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Kitendo kilichochaguliwa hakipatikani ikiwa katika Simu ya Dharura. Simu itakuwa katika hali ya Simu ya Dharura kwa dakika <xliff:g id="COUNT_1">%s</xliff:g>. Je, unataka kuondoka sasa?</item>
+ <item quantity="one">Kitendo kilichochaguliwa hakipatikani ikiwa katika Simu ya Dharura. Simu itakuwa katika hali ya Simu ya Dharura kwa dakika <xliff:g id="COUNT_0">%s</xliff:g>. Je, unataka kuondoka sasa?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Kitendo kilichochaguliwa hakipatikani ikiwa katika simu ya dharura."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Inatoka kwa hali ya Kupiga tena simu ya Dharura"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ndiyo"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Simu za dharura"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Simu za dharula pekee"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM kadi, nafasi: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Zana za walio na matatizo ya kuona au kusikia"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Simu ya Wi-Fi inayoingia"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Simu ya Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Gusa tena ili ufungue"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Hitilafu imetokea wakati wa usimbuaji wa ujumbe."</string>
</resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index b6fd9ba..a660a77 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ஃபோன் கணக்குகள்"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP கணக்கைச் சேர்"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"கணக்கு அமைப்புகளை உள்ளமைக்கவும்"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"வைஃபை அழைப்பு"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"வைஃபை அழைப்பு"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"வைஃபை அழைப்பைப் பயன்படுத்தாதே"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"அழைப்பு உதவியைப் பயன்படுத்தாதே"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ஏதுமில்லை"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"உள்ளமை"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"உள்ளமைக்கப்பட்ட இணைப்பு சேவை"</string>
<string name="voicemail" msgid="8693759337917898954">"குரலஞ்சல்"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"குரலஞ்சல் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"நெட்வொர்க் ஆபரேட்டர்கள்"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"அவசரகால அலைபரப்புகள்"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"ரோமிங்கின் போது தரவு சேவைகளுடன் இணை"</string>
<string name="roaming_disable" msgid="1843417228755568110">"ரோமிங்கின் போது தரவு சேவைகளுடன் இணை"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"உள்ளூர் நெட்வொர்க்கில் தரவு ரோமிங்கை முடக்கிய நிலையில் வெளியேறியுள்ளதால், தரவு இணைப்பை இழந்துவிட்டீர்கள்."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"ரோமிங்கின் போது தரவுப் பயன்பாட்டை அனுமதிக்கவா? குறிப்பிடத்தக்க கட்டணங்கள் இருக்கலாம்."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"குறிப்பிடத்தக்க கட்டணங்கள் இருக்கலாம்."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"தரவு ரோமிங்கை அனுமதிக்கவா?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS விருப்பங்கள்"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA விருப்பங்கள்"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"தரவு பயன்பாடு"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY பயன்முறையை அமை"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"தானாக மீண்டும் அழைக்க முயற்சித்தல்"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"தானாக மீண்டும் அழைக்க முயற்சிக்கும் பயன்முறையை இயக்கு"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"வீடியோ அழைப்பின்போது TTY பயன்முறை மாற்றம் அனுமதிக்கப்படாது"</string>
<string name="menu_add" msgid="1882023737425114762">"தொடர்பைச் சேர்"</string>
<string name="menu_edit" msgid="7143003705504672374">"தொடர்பை மாற்று"</string>
<string name="menu_delete" msgid="3977150783449642851">"தொடர்பை நீக்கு"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"சிம் கார்டில் இருப்பதைப் படிக்கிறது…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"சிம் கார்டில் தொடர்புகள் இல்லை."</string>
<string name="simContacts_title" msgid="1861472842524839921">"இறக்குமதிக்கு தொடர்புகளைத் தேர்ந்தெடுக்கவும்"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"சிம் கார்டிலிருந்து தொடர்புகளை இறக்குமதி செய்ய, முதலில் விமானப் பயன்முறையை முடக்கவும்."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM கார்டிலிருந்து தொடர்புகளை இறக்க, விமானப் பயன்முறையை முடக்கவும்."</string>
<string name="enable_pin" msgid="5422767284133234860">"சிம்மின் பின்னை இயக்கு/முடக்கு"</string>
<string name="change_pin" msgid="9174186126330785343">"சிம்மின் பின்னை மாற்று"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"சிம் பின்:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"துண்டி"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"திருப்பி அழை"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"செய்தி"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"அழைப்பதற்கு, முதலில் விமானப் பயன்முறையை முடக்கவும்."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"அழைக்க, விமானப் பயன்முறையை முடக்கவும்."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"அழைக்க, விமானப் பயன்முறையை முடக்கவும் அல்லது வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"நெட்வொர்க்கில் பதிவுசெய்யப்படவில்லை."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"செல்லுலார் நெட்வொர்க் கிடைக்கவில்லை."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"செல்லுலார் நெட்வொர்க் கிடைக்கவில்லை. அழைக்க, வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"அழைக்க, சரியான எண்ணை உள்ளிடவும்."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"அழைக்க முடியாது."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI வரிசையைத் தொடங்குகிறது..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"குழு அழைப்புகளை மேற்கொள்ள முடியவில்லை."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"அழைப்பை நிராகரிக்க முடியாது."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"அழைப்பை(அழைப்புகளை) விடுவிக்க முடியாது."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"அழைக்க, வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"அவசரகால அழைப்பு"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ரேடியோவை இயக்குகிறது…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"சேவை இல்லை. மீண்டும் முயற்சிக்கிறது…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"அவசரகால திரும்ப அழைக்கும் பயன்முறை இயக்கப்பட்டது"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"அவசரகால திரும்ப அழைக்கும் பயன்முறை"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"தரவு இணைப்பு முடக்கப்பட்டது"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> நிமிடத்திற்கு தரவு இணைப்பு இருக்காது"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> நிமிடங்களுக்குத் தரவு இணைப்பு இருக்காது"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"<xliff:g id="COUNT">%s</xliff:g> நிமிடத்தில் அவசரகால திரும்ப அழைக்கும் பயன்முறைக்கு மொபைல் மாறிவிடும். இந்தப் பயன்முறை செயலில் இருக்கும்போது, எந்தப் பயன்பாடுகளும் தரவு இணைப்பைப் பயன்படுத்தாது. இப்போது வெளியேற விருப்பமா?"</item>
- <item quantity="other" msgid="8617116564023933114">"<xliff:g id="COUNT">%s</xliff:g> நிமிடத்தில் அவசரகால திரும்ப அழைக்கும் பயன்முறைக்கு மொபைல் மாறிவிடும். இந்தப் பயன்முறை செயலில் இருக்கும்போது, எந்தப் பயன்பாடுகளும் தரவு இணைப்பைப் பயன்படுத்தாது. இப்போது வெளியேற விருப்பமா?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"அவசரகால திரும்ப அழைக்கும் பயன்முறை செயலில் இருக்கும்போது, தேர்ந்தெடுத்த செயல்பாடு கிடைக்காது. <xliff:g id="COUNT">%s</xliff:g> நிமிடத்தில் இந்தப் பயன்முறையில் மொபைல் மாறிவிடும். இப்போது வெளியேற விருப்பமா?"</item>
- <item quantity="other" msgid="6115622137771382224">"அவசரநிலை திரும்ப அழைக்கும் பயன்முறை செயலில் இருக்கும்போது, தேர்ந்தெடுத்த செயல்பாடு கிடைக்காது. <xliff:g id="COUNT">%s</xliff:g> நிமிடத்தில் மொபைல் இந்தப் பயன்முறையில் மாறிவிடும். இப்போது வெளியேற விருப்பமா?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> நிமிடங்களுக்குத் தரவு இணைப்பு இருக்காது</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> நிமிடத்திற்குத் தரவு இணைப்பு இருக்காது</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> நிமிடங்களுக்கு மொபைல் அவசரகால திரும்ப அழைக்கும் பயன்முறையில் இருக்கும். இந்தப் பயன்முறையில், தரவு இணைப்பைப் பயன்படுத்தாத பயன்பாடுகளைப் பயன்படுத்தலாம். இப்போது வெளியேற விரும்புகிறீர்களா?</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> நிமிடத்திற்கு மொபைல் அவசரகால திரும்ப அழைக்கும் பயன்முறையில் இருக்கும். இந்தப் பயன்முறையில், தரவு இணைப்பைப் பயன்படுத்தாத பயன்பாடுகளைப் பயன்படுத்தலாம். இப்போது வெளியேற விரும்புகிறீர்களா?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">அவசரகால திரும்ப அழைக்கும் பயன்முறை செயலில் இருக்கும்போது, தேர்ந்தெடுத்த செயல் கிடைக்காது. <xliff:g id="COUNT_1">%s</xliff:g> நிமிடங்களுக்கு மொபைல் இந்தப் பயன்முறையில் இருக்கும். இப்போது வெளியேற விரும்புகிறீர்களா?</item>
+ <item quantity="one">அவசரகால திரும்ப அழைக்கும் பயன்முறை செயலில் இருக்கும்போது, தேர்ந்தெடுத்த செயல் கிடைக்காது. <xliff:g id="COUNT_0">%s</xliff:g> நிமிடத்திற்கு மொபைல் இந்தப் பயன்முறையில் இருக்கும். இப்போது வெளியேற விரும்புகிறீர்களா?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"அவசரகால அழைப்பு செயலில் இருக்கும்போது தேர்ந்தெடுத்த செயல் கிடைக்காது."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"அவசரகால திரும்ப அழைக்கும் பயன்முறையிலிருந்து வெளியேறுகிறது"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"ஆம்"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"அவசர அழைப்புகள்"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"அவசர அழைப்பு மட்டுமே"</string>
<string name="sim_description_default" msgid="4778679519938775515">"சிம் கார்டு, ஸ்லாட்: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"அணுகல் தன்மை"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"உள்வரும் வைஃபை அழைப்பு"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"வைஃபை அழைப்பு"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"திறக்க, மீண்டும் தட்டவும்"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"செய்தியைக் குறிவிலக்கும்போது பிழை ஏற்பட்டது."</string>
</resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 5b52d6e..aad66db 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"ఫోన్ ఖాతాలు"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ఖాతాను జోడించు"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ఖాతా సెట్టింగ్లను కాన్ఫిగర్ చేయి"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi కాలింగ్"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi కాలింగ్"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi కాలింగ్ను ఉపయోగించవద్దు"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"కాల్ సహాయకాన్ని ఉపయోగించవద్దు"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ఏదీ వద్దు"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"కాన్ఫిగర్ చేయి"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"అంతర్నిర్మిత కనెక్షన్ సేవ"</string>
<string name="voicemail" msgid="8693759337917898954">"వాయిస్ మెయిల్"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"వాయిస్ మెయిల్ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"నెట్వర్క్ ఆపరేటర్లు"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"అత్యవసర ప్రసారాలు"</string>
@@ -92,7 +93,7 @@
<string name="sum_loading_settings" msgid="1826692909391168620">"సెట్టింగ్లను లోడ్ చేస్తోంది…"</string>
<string name="sum_hide_caller_id" msgid="1071407020290873782">"అవుట్గోయింగ్ కాల్ల్లో నంబర్ దాచబడుతుంది"</string>
<string name="sum_show_caller_id" msgid="6768534125447290401">"అవుట్గోయింగ్ కాల్ల్లో నంబర్ ప్రదర్శించబడుతుంది"</string>
- <string name="sum_default_caller_id" msgid="1954518825510901365">"అవుట్గోయింగ్ కాల్ల్లో నా నంబర్ను ప్రదర్శించడానికి డిఫాల్ట్ ఆపరేటర్ సెట్టింగ్లను ఉపయోగించండి"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"అవుట్గోయింగ్ కాల్ల్లో నా నంబర్ను ప్రదర్శించడానికి డిఫాల్ట్ ఆపరేటర్ సెట్టింగ్లను ఉపయోగించు"</string>
<string name="labelCW" msgid="6120513814915920200">"కాల్ నిరీక్షణ"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"కాల్ సమయంలో, ఇన్కమింగ్ కాల్ల గురించి నాకు తెలియజేయి"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"కాల్ సమయంలో, ఇన్కమింగ్ కాల్ల గురించి నాకు తెలియజేయి"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"రోమింగ్లో ఉన్నప్పుడు డేటా సేవలకు కనెక్ట్ చేయి"</string>
<string name="roaming_disable" msgid="1843417228755568110">"రోమింగ్లో ఉన్నప్పుడు డేటా సేవలకు కనెక్ట్ చేయి"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"మీరు డేటా రోమింగ్ ఆపివేసి, మీ హోమ్ నెట్వర్క్ నుండి నిష్క్రమించినందున మీరు డేటా కనెక్టివిటీని కోల్పోయారు."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"రోమింగ్లో ఉన్నప్పుడు డేటా వినియోగాన్ని అనుమతించాలా? గణనీయ ఛార్జీలు వర్తించవచ్చు."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"మీకు గణనీయ ఛార్జీలు విధించబడవచ్చు."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"డేటా రోమింగ్ను అనుమతించాలా?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ఎంపికలు"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA ఎంపికలు"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"డేటా వినియోగం"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY మోడ్ను సెట్ చేయండి"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"స్వీయ-పునఃప్రయత్నం"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"స్వీయ-పునఃప్రయత్నం మోడ్ను ప్రారంభించండి"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"వీడియో కాల్ సమయంలో TTY మోడ్ మార్పు అనుమతించబడదు"</string>
<string name="menu_add" msgid="1882023737425114762">"పరిచయాన్ని జోడించు"</string>
<string name="menu_edit" msgid="7143003705504672374">"పరిచయాన్ని సవరించు"</string>
<string name="menu_delete" msgid="3977150783449642851">"పరిచయాన్ని తొలగించు"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM కార్డు నుండి చదువుతోంది…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"మీ SIM కార్డులో పరిచయాలు ఏవీ లేవు."</string>
<string name="simContacts_title" msgid="1861472842524839921">"దిగుమతి చేయడానికి పరిచయాలను ఎంచుకోండి"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM కార్డు నుండి పరిచయాలను దిగుమతి చేయడానికి, మొదట ఎయిర్ప్లైన్ మోడ్ను ఆపివేయండి."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM కార్డ్లోని పరిచయాలను దిగుమతి చేయడానికి ఎయిర్ప్లైన్ మోడ్ను ఆఫ్ చేయండి."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PINను ప్రారంభించండి/నిలిపివేయండి"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PINను మార్చండి"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM పిన్:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"కాల్ను ముగించు"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"తిరిగి కాల్ చేయి"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"సందేశం"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"కాల్ చేయడానికి, మొదట ఎయిర్ప్లైన్ మోడ్ను ఆపివేయండి."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"కాల్ చేయడానికి ఎయిర్ప్లైన్ మోడ్ను ఆఫ్ చేయండి."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"కాల్ చేయడానికి ఎయిర్ప్లైన్ మోడ్ను ఆఫ్ చేయండి లేదా వైర్లెస్ నెట్వర్క్కు కనెక్ట్ చేయండి."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"నెట్వర్క్లో నమోదు కాలేదు."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"సెల్యులార్ నెట్వర్క్ అందుబాటులో లేదు."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"సెల్యులార్ నెట్వర్క్ అందుబాటులో లేదు. కాల్ చేయడానికి వైర్లెస్ నెట్వర్క్కి కనెక్ట్ చేయండి."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"కాల్ చేయడానికి, చెల్లుబాటు అయ్యే నంబర్ను నమోదు చేయండి."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"కాల్ చేయలేరు."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI శ్రేణిని ప్రారంభిస్తోంది…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"కాన్ఫరెన్స్ కాల్లు చేయడం సాధ్యపడలేదు."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"కాల్ను తిరస్కరించలేరు."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"కాల్(ల)ను విడిచిపెట్టలేరు."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"కాల్ చేయడానికి వైర్లెస్ నెట్వర్క్కు కనెక్ట్ చేయండి."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"అత్యవసర కాల్"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"రేడియోను ప్రారంభిస్తోంది…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"సేవ లేదు. మళ్లీ ప్రయత్నిస్తోంది…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"అత్యవసర కాల్బ్యాక్ మోడ్లోకి ప్రవేశించింది"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"అత్యవసర కాల్బ్యాక్ మోడ్"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"డేటా కనెక్షన్ నిలిపివేయబడింది"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> నిమిషం పాటు డేటా కనెక్షన్ ఉండదు"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> నిమిషాల పాటు డేటా కనెక్షన్ ఉండదు"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"ఫోన్ <xliff:g id="COUNT">%s</xliff:g> నిమిషం పాటు అత్యవసర కాల్బ్యాక్ మోడ్లో ఉంటుంది. ఈ మోడ్లో ఉన్నప్పుడు డేటా కనెక్షన్ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?"</item>
- <item quantity="other" msgid="8617116564023933114">"ఫోన్ <xliff:g id="COUNT">%s</xliff:g> నిమిషాల పాటు అత్యవసర కాల్బ్యాక్ మోడ్లో ఉంటుంది. ఈ మోడ్లో ఉన్నప్పుడు డేటా కనెక్షన్ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"ఎంచుకున్న చర్య అత్యవసర కాల్బ్యాక్ మోడ్లో ఉన్నప్పుడు అందుబాటులో ఉండదు. ఫోన్ ఈ మోడ్లో <xliff:g id="COUNT">%s</xliff:g> నిమిషం పాటు ఉంటుంది. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?"</item>
- <item quantity="other" msgid="6115622137771382224">"ఎంచుకున్న చర్య అత్యవసర కాల్బ్యాక్ మోడ్లో ఉన్నప్పుడు అందుబాటులో ఉండదు. ఫోన్ ఈ మోడ్లో <xliff:g id="COUNT">%s</xliff:g> నిమిషాల పాటు ఉంటుంది. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు డేటా కనెక్షన్ ఉండదు</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> నిమిషం పాటు డేటా కనెక్షన్ ఉండదు</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">ఫోన్ <xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు అత్యవసర కాల్బ్యాక్ మోడ్లో ఉంటుంది. ఈ మోడ్లో ఉన్నప్పుడు, డేటా కనెక్షన్ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
+ <item quantity="one">ఫోన్ <xliff:g id="COUNT_0">%s</xliff:g> నిమిషం పాటు అత్యవసర కాల్బ్యాక్ మోడ్లో ఉంటుంది. ఈ మోడ్లో ఉన్నప్పుడు, డేటా కనెక్షన్ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">అత్యవసర కాల్బ్యాక్ మోడ్లో ఉన్నప్పుడు, ఎంచుకున్న చర్య అందుబాటులో లేదు. ఫోన్ <xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు ఈ మోడ్లో ఉంటుంది. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
+ <item quantity="one">అత్యవసర కాల్బ్యాక్ మోడ్లో ఉన్నప్పుడు, ఎంచుకున్న చర్య అందుబాటులో లేదు. ఫోన్ <xliff:g id="COUNT_0">%s</xliff:g> నిమిషం పాటు ఈ మోడ్లో ఉంటుంది. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"ఎంచుకున్న చర్య అత్యవసర కాల్లో ఉన్నప్పుడు అందుబాటులో ఉండదు."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"అత్యవసర కాల్బ్యాక్ మోడ్ నుండి నిష్క్రమిస్తోంది"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"అవును"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"అత్యవసర కాల్లు"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"అత్యవసర కాలింగ్ మాత్రమే"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM కార్డ్, స్లాట్: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ప్రాప్యత సామర్థ్యం"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ఇన్కమింగ్ Wi-Fi కాల్"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi కాల్"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"తెరవడానికి మళ్లీ తాకండి"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"సందేశాన్ని డీకోడ్ చేస్తున్నప్పుడు లోపం సంభవించింది."</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 1bb7a4e..3068e29 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"บัญชีโทรศัพท์"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"เพิ่มบัญชี SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"กำหนดการตั้งค่าบัญชี"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"การโทรผ่าน Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"การโทรผ่าน Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"ไม่ใช้การโทรผ่าน Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"ไม่ใช้ผู้ช่วยโทร"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"ไม่มี"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"กำหนดค่า"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"บริการเชื่อมต่อในตัว"</string>
<string name="voicemail" msgid="8693759337917898954">"ข้อความเสียง"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"ข้อความเสียง (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"ผู้ให้บริการเครือข่าย"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"การเผยแพร่ข้อมูลฉุกเฉิน"</string>
@@ -105,17 +106,17 @@
<string name="sum_cfu_enabled" msgid="2450052502198827927">"โอนสายทั้งหมดไปที่ <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"หมายเลขใช้งานไม่ได้"</string>
<string name="sum_cfu_disabled" msgid="8384177689501334080">"ปิด"</string>
- <string name="labelCFB" msgid="6139853033106283172">"เมื่อไม่ว่าง"</string>
+ <string name="labelCFB" msgid="6139853033106283172">"เมื่อสายไม่ว่าง"</string>
<string name="messageCFB" msgid="3711089705936187129">"หมายเลขเมื่อสายไม่ว่าง"</string>
<string name="sum_cfb_enabled" msgid="5984198104833116690">"โอนสายไปที่ <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"ปิด"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"ผู้ให้บริการของคุณไม่สนับสนุนการปิดใช้งานการโอนสายเมื่อสายไม่ว่าง"</string>
- <string name="labelCFNRy" msgid="1736067178393744351">"เมื่อไม่มีการตอบ"</string>
+ <string name="labelCFNRy" msgid="1736067178393744351">"เมื่อไม่รับสาย"</string>
<string name="messageCFNRy" msgid="672317899884380374">"หมายเลขเมื่อไม่ได้รับสาย"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"โอนสายไปที่ <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"ปิด"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"ผู้ให้บริการของคุณไม่สนับสนุนการปิดใช้งานการโอนสายเมื่อไม่มีผู้รับสาย"</string>
- <string name="labelCFNRc" msgid="2614827454402079766">"เมื่อไม่สามารถติดต่อได้"</string>
+ <string name="labelCFNRc" msgid="2614827454402079766">"เมื่อติดต่อไม่ได้"</string>
<string name="messageCFNRc" msgid="6380695421020295119">"หมายเลขเมื่อติดต่อไม่ได้"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"โอนสายไปที่ <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"ถูกปิดใช้งาน"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"เชื่อมต่อบริการข้อมูลขณะโรมมิ่ง"</string>
<string name="roaming_disable" msgid="1843417228755568110">"เชื่อมต่อบริการข้อมูลขณะโรมมิ่ง"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"การเชื่อมต่อข้อมูลของคุณหายไปเนื่องจากคุณออกจากเครือข่ายที่บ้านโดยปิดการโรมมิ่งข้อมูลไว้"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"อนุญาตการใช้อินเทอร์เน็ตขณะโรมมิ่งไหม อาจมีการเรียกเก็บเงินจำนวนมาก"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"คุณอาจต้องเสียค่าใช้จ่ายมาก"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"อนุญาตการโรมมิ่งอินเทอร์เน็ตไหม"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"ตัวเลือก GSM//UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"ตัวเลือก CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"การใช้ข้อมูล"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"ตั้งค่าโหมด TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"ลองซ้ำอัตโนมัติ"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"เปิดใช้งานโหมดลองซ้ำอัตโนมัติ"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ไม่อนุญาตการเปลี่ยนโหมด TTY ในระหว่างแฮงเอาท์วิดีโอ"</string>
<string name="menu_add" msgid="1882023737425114762">"เพิ่มรายชื่อติดต่อ"</string>
<string name="menu_edit" msgid="7143003705504672374">"แก้ไขรายชื่อติดต่อ"</string>
<string name="menu_delete" msgid="3977150783449642851">"ลบรายชื่อติดต่อ"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"กำลังอ่านจากซิมการ์ด…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"ไม่มีรายชื่อติดต่อบนซิมการ์ดของคุณ"</string>
<string name="simContacts_title" msgid="1861472842524839921">"เลือกสมุดโทรศัพท์ที่จะนำเข้า"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"ในการนำเข้าผู้ติดต่อจากซิมการ์ด ให้ปิดโหมดบนเครื่องบินก่อน"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"ปิดโหมดบนเครื่องบินเพื่อนำเข้ารายชื่อติดต่อจากซิมการ์ด"</string>
<string name="enable_pin" msgid="5422767284133234860">"เปิด/ปิดใช้งาน PIN ของซิม"</string>
<string name="change_pin" msgid="9174186126330785343">"เปลี่ยน PIN ของซิม"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN ของซิม:"</string>
@@ -430,13 +433,15 @@
<string name="notification_voicemail_text_format" msgid="4447323569453981685">"หมุนหมายเลข <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
<string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ไม่ทราบหมายเลขข้อความเสียง"</string>
<string name="notification_network_selection_title" msgid="4224455487793492772">"ไม่มีบริการ"</string>
- <string name="notification_network_selection_text" msgid="2607085729661923269">"เครือข่ายที่เลือกไว้ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ใช้งานไม่ได้"</string>
+ <string name="notification_network_selection_text" msgid="2607085729661923269">"เครือข่ายที่เลือกไว้ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ไม่พร้อมใช้งาน"</string>
<string name="notification_action_end_call" msgid="6069460915123531620">"วางสาย"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"โทรกลับ"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"ข้อความ"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"หากต้องการโทรออก ให้ปิดโหมดใช้งานบนเครื่องบินก่อน"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"ปิดโหมดบนเครื่องบินเพื่อโทรออก"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ปิดโหมดบนเครื่องบินหรือเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"ยังไม่ได้ลงทะเบียนบนเครือข่าย"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"เครือข่ายมือถือใช้งานไม่ได้"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"เครือข่ายมือถือไม่พร้อมใช้งาน โปรดเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"หากต้องการโทรออก โปรดป้อนหมายเลขที่ถูกต้อง"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"ไม่สามารถโทรได้"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"กำลังเริ่มต้นลำดับ MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ประชุมทางโทรศัพท์ไม่ได้"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ไม่สามารถปฏิเสธสายได้"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ไม่สามารถเริ่มการโทรได้"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"เชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"หมายเลขฉุกเฉิน"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"กำลังเปิดวิทยุ…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ไม่มีบริการ โปรดลองอีกครั้ง…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"เข้าสู่โหมดติดต่อกลับฉุกเฉิน"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"โหมดติดต่อกลับฉุกเฉิน"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ปิดใช้งานการเชื่อมต่อเครือข่าย"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"ไม่มีการเชื่อมต่อข้อมูลนาน <xliff:g id="COUNT">%s</xliff:g> นาที"</item>
- <item quantity="other" msgid="3122217344579273583">"ไม่มีการเชื่อมต่อข้อมูลนาน <xliff:g id="COUNT">%s</xliff:g> นาที"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"โทรศัพท์จะอยู่ในโหมดติดต่อกลับฉุกเฉินเป็นเวลา <xliff:g id="COUNT">%s</xliff:g> นาที ในระหว่างที่อยู่ในโหมดนี้ จะไม่สามารถใช้แอปพลิเคชันที่ใช้การเชื่อมต่อข้อมูลได้ คุณต้องการจะออกเดี๋ยวนี้หรือไม่"</item>
- <item quantity="other" msgid="8617116564023933114">"โทรศัพท์จะอยู่ในโหมดติดต่อกลับฉุกเฉินเป็นเวลา <xliff:g id="COUNT">%s</xliff:g> นาที ในระหว่างที่อยู่ในโหมดนี้ จะไม่สามารถใช้แอปพลิเคชันที่ใช้การเชื่อมต่อข้อมูลได้ คุณต้องการจะออกเดี๋ยวนี้หรือไม่"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"การทำงานที่เลือกจะไม่สามารถใช้ได้เมื่ออยู่ในโหมดติดต่อกลับฉุกเฉิน โทรศัพท์จะอยู่ในโหมดนี้เป็นเวลา <xliff:g id="COUNT">%s</xliff:g> นาที คุณต้องการจะออกเดี๋ยวนี้หรือไม่"</item>
- <item quantity="other" msgid="6115622137771382224">"การทำงานที่เลือกจะไม่สามารถใช้ได้เมื่ออยู่ในโหมดติดต่อกลับฉุกเฉิน โทรศัพท์จะอยู่ในโหมดนี้เป็นเวลา <xliff:g id="COUNT">%s</xliff:g> นาที คุณต้องการจะออกเดี๋ยวนี้หรือไม่"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">ไม่มีการเชื่อมต่อข้อมูลนาน <xliff:g id="COUNT_1">%s</xliff:g> นาที</item>
+ <item quantity="one">ไม่มีการเชื่อมต่อข้อมูลนาน <xliff:g id="COUNT_0">%s</xliff:g> นาที</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">โทรศัพท์จะเข้าโหมดติดต่อกลับฉุกเฉินเป็นเวลา <xliff:g id="COUNT_1">%s</xliff:g> นาที ขณะใช้โหมดนี้ จะไม่สามารถใช้แอปพลิเคชันที่ใช้การเชื่อมต่อข้อมูลได้ คุณต้องการออกตอนนี้ไหม</item>
+ <item quantity="one">โทรศัพท์จะเข้าโหมดติดต่อกลับฉุกเฉินเป็นเวลา <xliff:g id="COUNT_0">%s</xliff:g> นาที ขณะใช้โหมดนี้ จะไม่สามารถใช้แอปที่ใช้การเชื่อมต่อข้อมูลได้ คุณต้องการออกตอนนี้ไหม</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">ไม่สามารถทำงานที่เลือกนี้ได้ขณะอยู่ในโหมดติดต่อกลับฉุกเฉิน โทรศัพท์จะใช้โหมดนี้เป็นเวลา <xliff:g id="COUNT_1">%s</xliff:g> นาที คุณต้องการออกตอนนี้ไหม</item>
+ <item quantity="one">ไม่สามารถทำงานที่เลือกนี้ได้ขณะอยู่ในโหมดติดต่อกลับฉุกเฉิน โทรศัพท์จะใช้โหมดนี้เป็นเวลา <xliff:g id="COUNT_0">%s</xliff:g> นาที คุณต้องการออกตอนนี้ไหม</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"การทำงานที่เลือกใช้ไม่ได้ในระหว่างโทรฉุกเฉิน"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"กำลังออกจากโหมดติดต่อกลับฉุกเฉิน"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"ใช่"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"หมายเลขฉุกเฉิน"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"เฉพาะหมายเลขฉุกเฉินเท่านั้น"</string>
<string name="sim_description_default" msgid="4778679519938775515">"ซิมการ์ด ช่อง: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"การเข้าถึง"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"สายโทรเข้าผ่าน Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"การโทรผ่าน Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"แตะอีกครั้งเพื่อเปิด"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"เกิดข้อผิดพลาดขณะถอดรหัสข้อความ"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index a08e5c1..7bf377a 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Mga account ng telepono"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Magdagdag ng SIP account"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"I-configure ang mga setting ng account"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Pagtawag sa pamamagitan ng Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Pagtawag sa pamamagitan ng Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Huwag gumamit ng pagtawag sa pamamagitan ng Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Huwag gumamit ng assistant sa pagtawag"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Wala"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"I-configure"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Built-in na serbisyo ng koneksyon"</string>
<string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Mga network operator"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Mga pang-emergency na broadcast"</string>
@@ -115,7 +116,7 @@
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"Pinapasa sa <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Naka-off"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Hindi sinusuportahan ng iyong operator ang hindi pagpapagana sa pagpasa ng tawag kapag hindi sumasagot ang iyong telepono."</string>
- <string name="labelCFNRc" msgid="2614827454402079766">"Kapag hindi nakakaugnayan"</string>
+ <string name="labelCFNRc" msgid="2614827454402079766">"Kapag hindi makontak"</string>
<string name="messageCFNRc" msgid="6380695421020295119">"Numero kapag hindi maabot"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Pinapasa sa <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Hindi pinagana"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Kumonekta sa mga serbisyo ng data kapag nagro-roam"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Kumonekta sa mga serbisyo ng data kapag nagro-roam"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Nawalan ka ng pagkonekta sa data dahil iniwan mo ang iyong home network na naka-off ang roaming ng data."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Payagan ang paggamit ng data kapag naka-roaming? Maaaring may naaangkop na mga makabuluhang singil."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Maaari kang magkaroon ng malalaking singil."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Payagan ang roaming ng data?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Mga pagpipilian sa GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Mga pagpipiliian sa CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Paggamit ng data"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Itakda ang TTY mode"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Awtomatikong Muling Pagsubok"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Paganahin ang mode ng Awtomatikong muling pagsubok"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Hindi pinapayagan ang pagbago sa TTY Mode habang nagvi-video call"</string>
<string name="menu_add" msgid="1882023737425114762">"Magdagdag ng contact"</string>
<string name="menu_edit" msgid="7143003705504672374">"I-edit ang contact"</string>
<string name="menu_delete" msgid="3977150783449642851">"Tanggalin ang contact"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Nagbabasa mula sa SIM card…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Walang mga contact sa iyong SIM card."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Piliin ang mga contact upang i-import"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Upang mag-import ng mga contact mula sa SIM card, i-turn off muna ang mode ng Airplane."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"I-off ang airplane mode upang mag-import ng mga contact mula sa SIM card."</string>
<string name="enable_pin" msgid="5422767284133234860">"Paganahin/huwag paganahin ang PIN ng SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Baguhin ang PIN ng SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN ng SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Ibaba"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Tawagan"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Padalhan ng mensahe"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Upang tumawag, paki-off ang Airplane mode."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"I-off ang airplane mode upang makatawag."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"I-off ang airplane mode o kumonekta sa isang wireless network upang makatawag."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Hindi nakarehistro sa network."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Hindi available ang cellular network"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Hindi available ang cellular network. Kumonekta sa isang wireless network upang makatawag."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Upang tumawag, maglagay ng wastong numero."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Hindi makatawag."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Sinisimulan ang pagkakasunud-sunod ng MMI…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Hindi nagawang i-conference ang mga tawag."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Hindi matanggihan ang tawag."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Hindi mailabas ang (mga) tawag."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Kumonekta sa isang wireless network upang makatawag."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency na tawag"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ino-on ang radyo…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Walang serbisyo. Sinusubukang muli…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ipinasok na Emergency Callback Mode"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Hindi pinagana ang koneksyon ng data"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Walang koneksyon ng data sa loob ng <xliff:g id="COUNT">%s</xliff:g> (na) minuto"</item>
- <item quantity="other" msgid="3122217344579273583">"Walang koneksyon ng data sa loob ng <xliff:g id="COUNT">%s</xliff:g> (na) minuto"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Magiging nasa mode ng Emergency Callback ang telepono sa <xliff:g id="COUNT">%s</xliff:g> (a) minuto. Habang nasa mode na ito walang magagamit na apps na gumagamit ng koneksyon ng data. Gusto mo bang umalis ngayon?"</item>
- <item quantity="other" msgid="8617116564023933114">"Magiging nasa mode ng Emergency Callback ang telepono sa <xliff:g id="COUNT">%s</xliff:g> (na) minuto. Habang nasa mode na ito walang magagamit na apps na gumagamit ng koneksyon ng data. Gusto mo bang umalis ngayon?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Hindi available ang napiling pagkilos habang nasa mode ng Emergency Callback. Magiging nasa ganitong mode ang telepono sa <xliff:g id="COUNT">%s</xliff:g> (na) minuto. Gusto mo bang umalis ngayon?"</item>
- <item quantity="other" msgid="6115622137771382224">"Hindi available ang napiling pagkilos habang nasa mode ng Emergency Callback. Magiging nasa ganitong mode ang telepono sa <xliff:g id="COUNT">%s</xliff:g> (na) minuto. Gusto mo bang umalis ngayon?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Walang koneksyon ng data sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> minuto</item>
+ <item quantity="other">Walang koneksyon ng data sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> na minuto</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Mapupunta sa Emergency Callback mode ang telepono sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> minuto. Habang nasa mode na ito, walang magagamit na mga application na gumagamit ng koneksyon ng data. Gusto mo bang lumabas ngayon?</item>
+ <item quantity="other">Mapupunta sa Emergency Callback mode ang telepono sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> na minuto. Habang nasa mode na ito, walang magagamit na mga application na gumagamit ng koneksyon ng data. Gusto mo bang lumabas ngayon?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Hindi available ang napiling pagkilos habang nasa Emergency Callback mode. Mananatili ang telepono sa mode na ito sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> minuto. Gusto mo bang lumabas ngayon?</item>
+ <item quantity="other">Hindi available ang napiling pagkilos habang nasa Emergency Callback mode. Mananatili ang telepono sa mode na ito sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> na minuto. Gusto mo bang lumabas ngayon?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Hindi available ang piniling pagkilos habang nasa pang-emergency na tawag."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Lumalabas sa mode na Emergency Callback"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Oo"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Mga emergency na tawag"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency na pagtawag lang"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pagiging Naa-access"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Papasok na tawag sa Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Tawag sa Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Pinduting muli upang buksan"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Nagkaroon ng error habang dine-decode ang mensahe."</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 9cecc05..1e66616 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefon hesapları"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP hesabı ekle"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Hesap ayarlarını yapılandır"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Kablosuz arama"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Kablosuz çağrı"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Kablosuz çağrıyı kullanma"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Çağrı asistanını kullanma"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Yok"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Yapılandır"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Yerleşik bağlantı hizmeti"</string>
<string name="voicemail" msgid="8693759337917898954">"Sesli mesaj"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Sesli mesaj (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Ağ operatörleri"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Acil durum yayınları"</string>
@@ -110,7 +111,7 @@
<string name="sum_cfb_enabled" msgid="5984198104833116690">"Şuraya yönlendiriliyor: <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"Kapalı"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"Operatörünüz, telefonunuz meşgul olduğunda çağrı yönlendirmenin devre dışı bırakılmasını desteklemiyor."</string>
- <string name="labelCFNRy" msgid="1736067178393744351">"Yanıt verilmediğinde"</string>
+ <string name="labelCFNRy" msgid="1736067178393744351">"Yanıtlanmadığında"</string>
<string name="messageCFNRy" msgid="672317899884380374">"Yanıtlanmadığında kullanılacak numara"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"Şuraya yönlendiriliyor: <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Kapalı"</string>
@@ -201,10 +202,11 @@
<string name="data_enabled" msgid="5972538663568715366">"Veri etkin"</string>
<string name="data_enable_summary" msgid="2382798156640007971">"Veri kullanımına izin ver"</string>
<string name="roaming" msgid="8871412572928323707">"Veri dolaşımı"</string>
- <string name="roaming_enable" msgid="7331106985174381987">"Dolaşırken veri hizmetlerine bağlan"</string>
- <string name="roaming_disable" msgid="1843417228755568110">"Dolaşırken veri hizmetlerine bağlan"</string>
+ <string name="roaming_enable" msgid="7331106985174381987">"Dolaşımdayken veri hizmetlerine bağlan"</string>
+ <string name="roaming_disable" msgid="1843417228755568110">"Dolaşımdayken veri hizmetlerine bağlan"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Veri dolaşımı kapalıyken ev ağınızdan ayrıldığınız için veri bağlantısını kaybettiniz."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Dolaşımda veri kullanımına izin verilsin mi? Kayda değer ücretler ödenmesi gerekebilir."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Kayda değer ücretler ödeyebilirsiniz."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Veri dolaşımına izin verilsin mi?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Seçenekleri"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA Seçenekleri"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Veri kullanımı"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY modunu ayarla"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Otomatik yeniden deneme"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Otomatik Yeniden Deneme modunu etkinleştir"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Video görüşmesi sırasında TTY Mod değişikliğine izin verilmiyor"</string>
<string name="menu_add" msgid="1882023737425114762">"Kişi ekle"</string>
<string name="menu_edit" msgid="7143003705504672374">"Kişiyi düzenle"</string>
<string name="menu_delete" msgid="3977150783449642851">"Kişiyi sil"</string>
@@ -357,7 +360,7 @@
<string name="name" msgid="7329028332786872378">"Ad"</string>
<string name="number" msgid="7905950798349903858">"Numara"</string>
<string name="save" msgid="4094274636321939086">"Kaydet"</string>
- <string name="add_fdn_contact" msgid="2481915899633353976">"Sabit arama numarası ekle"</string>
+ <string name="add_fdn_contact" msgid="2481915899633353976">"SAN ekle"</string>
<string name="adding_fdn_contact" msgid="7627379633721940991">"Sabit arama numarası ekleniyor..."</string>
<string name="fdn_contact_added" msgid="7458335758501736665">"Sabit arama numarası eklendi."</string>
<string name="edit_fdn_contact" msgid="7976936035587081480">"Sabit arama numarasını düzenle"</string>
@@ -371,9 +374,9 @@
<string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN güncellenmedi. PIN2 doğru değildi veya telefon numarası reddedildi."</string>
<string name="fdn_failed" msgid="540018079008319747">"FDN işlemi başarısız oldu."</string>
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM karttan okunuyor..."</string>
- <string name="simContacts_empty" msgid="5270660846489561932">"SIM kartınızda hiçbir kişi yok."</string>
+ <string name="simContacts_empty" msgid="5270660846489561932">"SIM kartınızda kişi yok."</string>
<string name="simContacts_title" msgid="1861472842524839921">"İçe aktarılacak kişileri seçin"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Kişileri SIM karttan içe aktarmak için, önce Uçak modunu kapatın."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM karttaki kişileri içe aktarmak için uçak modunu kapatın."</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM PIN Kodunu Etkinleştir/Devre Dışı Bırak"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM PIN Kodunu Değiştir"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN kodu:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Kapat"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Geri ara"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Mesaj gönder"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Bir çağrı yapmak için öncelikle Uçak modunu kapatın."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Telefon etmek için uçak modunu kapatın."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Telefon etmek için uçak modunu kapatın veya kablosuz ağa bağlanın."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ağda kayıtlı değil."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Hücresel ağ kullanılamıyor."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Hücresel ağ kullanılamıyor. Telefon etmek için kablosuz ağa bağlanın."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Arama yapmak için geçerli bir numara girin."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Arama yapılamıyor."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI dizisi başlatılıyor..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Çağrılar konferans görüşmesi olarak birleştirilemiyor."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Çağrı reddedilemiyor."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Çağrılar bırakılamıyor."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Telefon etmek için kablosuz ağa bağlanın."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Acil durum çağrısı"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radyo açılıyor..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Servis yok. Tekrar deneniyor…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Acil Geri Arama Moduna Girildi"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Acil Geri Arama Modu"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Veri bağlantısı devre dışı bırakıldı"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> dakika boyunca veri bağlantısı yok"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> dakika boyunca veri bağlantısı yok"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon <xliff:g id="COUNT">%s</xliff:g> dakika boyunca Acil Geri Arama modunda olacaktır. Bu moddayken, veri bağlantısı kullanan uygulamalar kullanılamaz. Şimdi çıkmak istiyor musunuz?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon <xliff:g id="COUNT">%s</xliff:g> dakika boyunca Acil Geri Arama modunda olacaktır. Bu moddayken, veri bağlantısı kullanan uygulamalar kullanılamaz. Şimdi çıkmak istiyor musunuz?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Seçilen işlem Acil Geri Arama modunda kullanılamaz. Telefon <xliff:g id="COUNT">%s</xliff:g> dakika boyunca bu modda kalacak. Şimdi çıkmak istiyor musunuz?"</item>
- <item quantity="other" msgid="6115622137771382224">"Seçilen işlem Acil Geri Arama modunda kullanılamaz. Telefon <xliff:g id="COUNT">%s</xliff:g> dakika boyunca bu modda kalacak. Şimdi çıkmak istiyor musunuz?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> dakika boyunca veri bağlantısı yok</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> dakika boyunca veri bağlantısı yok</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Telefon <xliff:g id="COUNT_1">%s</xliff:g> dakika boyunca bu modda olacak. Bu moddayken veri bağlantısı kullanan hiçbir uygulama kullanılamaz. Şimdi çıkmak istiyor musunuz?</item>
+ <item quantity="one">Telefon <xliff:g id="COUNT_0">%s</xliff:g> dakika boyunca bu modda olacak. Bu moddayken veri bağlantısı kullanan hiçbir uygulama kullanılamaz. Şimdi çıkmak istiyor musunuz?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Seçilen işlem Acil Durum Çağrısı modunda kullanılamaz. Telefon <xliff:g id="COUNT_1">%s</xliff:g> dakika boyunca bu modda olacak. Şimdi çıkmak istiyor musunuz?</item>
+ <item quantity="one">Seçilen işlem Acil Durum Çağrısı modunda kullanılamaz. Telefon <xliff:g id="COUNT_0">%s</xliff:g> dakika boyunca bu modda olacak. Şimdi çıkmak istiyor musunuz?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Seçilen işlem, acil durum çağrısında kullanılamaz."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Acil Geri Arama Modundan çıkılıyor"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Evet"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Acil durum çağrıları"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Yalnızca acil durum çağrısı"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM kart, yuva: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Erişilebilirlik"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Gelen kablosuz çağrı"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Kablosuz çağrı"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Açmak için tekrar dokunun"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"İletinin kodu çözülürken bir hata oluştu."</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index b36c9ca..4cf2975 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -57,7 +57,7 @@
<string name="labelCDMAMore" msgid="1630676740428229339">"Налашт. викл. в CDMA"</string>
<string name="apn_settings" msgid="9043423184895642077">"Назва точки доступу"</string>
<string name="settings_label" msgid="3876743539816984008">"Налашт-ння мережі"</string>
- <string name="phone_accounts" msgid="6376603393888116364">"Облікові записи для дзвінків"</string>
+ <string name="phone_accounts" msgid="6376603393888116364">"Обл. записи для дзвінків"</string>
<string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Здійснювати дзвінки за допомогою"</string>
<string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Здійснювати дзвінки SIP за допомогою"</string>
<string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Спершу запитувати"</string>
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Облікові записи на телефоні"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Додати обліковий запис SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Налаштування параметрів облікового запису"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Дзвінки через Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Дзвінки через Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Не використовувати дзвінки через Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Не використовувати помічника викликів"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Немає"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Налаштувати"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Вбудована служба під’єднання"</string>
<string name="voicemail" msgid="8693759337917898954">"Голос. пошта"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Голосова пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"ГП:"</string>
<string name="networks" msgid="8873030692174541976">"Оператори мережі"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Повідомлення екстрених служб"</string>
@@ -92,31 +93,31 @@
<string name="sum_loading_settings" msgid="1826692909391168620">"Завантаження налаштувань…"</string>
<string name="sum_hide_caller_id" msgid="1071407020290873782">"Номер приховано у вихідних дзвінках"</string>
<string name="sum_show_caller_id" msgid="6768534125447290401">"Номер відображ. у вихідних дзвінках"</string>
- <string name="sum_default_caller_id" msgid="1954518825510901365">"Використ. налаштув. оператора для показу мого номера для вихідних дзвінків"</string>
+ <string name="sum_default_caller_id" msgid="1954518825510901365">"Використовувати налаштування оператора для показу мого номера для вихідних дзвінків"</string>
<string name="labelCW" msgid="6120513814915920200">"Паралельний виклик"</string>
<string name="sum_cw_enabled" msgid="8083061901633671397">"Під час дзвінка сповіщати про вхідні дзвінки"</string>
<string name="sum_cw_disabled" msgid="3648693907300104575">"Під час дзвінка сповіщати про вхідні дзвінки"</string>
<string name="call_forwarding_settings" msgid="3378927671091537173">"Налаштування переадресації виклику"</string>
<string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Налаштування переадресації виклику (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
- <string name="labelCF" msgid="2574386948026924737">"Переадрес. виклику"</string>
+ <string name="labelCF" msgid="2574386948026924737">"Переадресація виклику"</string>
<string name="labelCFU" msgid="8147177368148660600">"Завжди переадресовувати"</string>
- <string name="messageCFU" msgid="3560082430662923687">"Завжди викор. цей номер"</string>
+ <string name="messageCFU" msgid="3560082430662923687">"Завжди переадресовувати на цей номер"</string>
<string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Пересил. всіх викликів"</string>
<string name="sum_cfu_enabled" msgid="2450052502198827927">"Пересилання всіх викликів на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Номер недоступний"</string>
<string name="sum_cfu_disabled" msgid="8384177689501334080">"Вимкнено"</string>
<string name="labelCFB" msgid="6139853033106283172">"Коли зайнято"</string>
- <string name="messageCFB" msgid="3711089705936187129">"Номер., коли зайн."</string>
+ <string name="messageCFB" msgid="3711089705936187129">"Переадресовувати на цей номер"</string>
<string name="sum_cfb_enabled" msgid="5984198104833116690">"Пересилання на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfb_disabled" msgid="4913145177320506827">"Вимкнено"</string>
<string name="disable_cfb_forbidden" msgid="3506984333877998061">"Ваш оператор не підтримує вимкнення переадресації викликів, коли телефон зайнятий."</string>
<string name="labelCFNRy" msgid="1736067178393744351">"Коли немає відповіді"</string>
- <string name="messageCFNRy" msgid="672317899884380374">"Номер., якщо не відпов."</string>
+ <string name="messageCFNRy" msgid="672317899884380374">"Переадресовувати на цей номер"</string>
<string name="sum_cfnry_enabled" msgid="6955775691317662910">"Пересилання на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Вимкнено"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Ваш оператор не підтримує вимкнення переадресації викликів, коли телефон не відповідає."</string>
<string name="labelCFNRc" msgid="2614827454402079766">"Коли недоступно"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"Номер., якщо недосяжн."</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Переадресовувати на цей номер"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Пересилання на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Вимкнено"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Ваш оператор не підтримує вимкнення переадресації викликів, коли телефон недосяжний."</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Підключатися до служб передавання даних у роумінгу"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Підключатися до служб передавання даних у роумінгу"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Доступ до даних утрачено, оскільки ви вийшли з домашньої мережі з вимкненим роумінгом даних."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Дозволити передавання даних у роумінгу? Може стягуватися значна плата."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Може стягуватися значна плата."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Дозволити роумінг даних?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Параметри GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Параметри CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Викор. даних"</string>
@@ -343,13 +345,14 @@
<string name="disable_fdn_ok" msgid="5727046928930740173">"Увімк. FDN"</string>
<string name="sum_fdn" msgid="1959399454900272878">"Керув. номерами фікс. набору"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"Змінити PIN-код для доступу FDN"</string>
- <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Керув. списком номерів тел."</string>
+ <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Керувати списком номерів"</string>
<string name="voice_privacy" msgid="3776841382844614716">"Конфіденційність Voice"</string>
<string name="voice_privacy_summary" msgid="3159383389833516214">"Увімкн. режим розшир. конфіденц."</string>
<string name="tty_mode_option_title" msgid="9033098925144434669">"Режим TTY"</string>
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Устан. режим TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Автоповтор"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Увімкнути режим автоповтору"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Під час відеодзвінка заборонено змінювати режим TTY"</string>
<string name="menu_add" msgid="1882023737425114762">"Додати контакт"</string>
<string name="menu_edit" msgid="7143003705504672374">"Змінити контакт"</string>
<string name="menu_delete" msgid="3977150783449642851">"Видалити контакт"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Читання з SIM-карти…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"У SIM-карті немає контактів."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Виберіть контакти для імпорту"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Щоб імпортувати контакти із SIM-карти, спершу вимкніть режим польоту."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Щоб імпортувати контакти із SIM-карти, вимкніть режим польоту."</string>
<string name="enable_pin" msgid="5422767284133234860">"Увімк./вимк. PIN-код SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Змінити PIN-код SIM-карти"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"PIN-код SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Завершити виклик"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Передзвонити"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Повідомлення"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Щоб установ. з\'єднання, споч. вимк. режим польоту."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Щоб зателефонувати, вимкніть режим польоту."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Щоб зателефонувати, вимкніть режим польоту або під’єднайтеся до бездротової мережі."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Не зареєстровано в мережі."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Мобільна мережа недоступна."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Мобільна мережа недоступна. Щоб зателефонувати, під’єднайтеся до бездротової мережі."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Щоб зателефонувати, введіть дійсний номер."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Неможливо зателефонувати."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Запуск ряду MMI..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Неможл. створ. конференц-викл."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Неможливо відхилити виклик."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Неможливо телефонувати."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Щоб зателефонувати, під’єднайтеся до бездротової мережі."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Аварійний виклик"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Увімкнення радіо…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Зв’язку немає. Повторна спроба…"</string>
@@ -508,18 +514,24 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Увійд. в реж. авар. зворот. виклику"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Реж. авар. зворот. виклику"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Передавання даних вимкнено"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Немає передав. даних протягом <xliff:g id="COUNT">%s</xliff:g> хв."</item>
- <item quantity="other" msgid="3122217344579273583">"Немає передав. даних протягом <xliff:g id="COUNT">%s</xliff:g> хв."</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Телефон буде в режимі екстреного зворотного виклику <xliff:g id="COUNT">%s</xliff:g> хв. У цьому режимі неможливо користуватися програмами, які використовують передавання даних. Вийти зараз?"</item>
- <item quantity="other" msgid="8617116564023933114">"Телефон буде в режимі екстреного зворотного виклику <xliff:g id="COUNT">%s</xliff:g> хв. У цьому режимі неможливо користуватися програмами, які використовують передавання даних. Вийти зараз?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Вибрана дія не доступна в режимі екстреного зворотного виклику. Телефон буде в цьому режимі <xliff:g id="COUNT">%s</xliff:g> хв. Вийти зараз?"</item>
- <item quantity="other" msgid="6115622137771382224">"Вибрана дія не доступна в режимі екстреного зворотного виклику. Телефон буде у цьому режимі <xliff:g id="COUNT">%s</xliff:g> хв. Вийти зараз?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилини</item>
+ <item quantity="few">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин</item>
+ <item quantity="many">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин</item>
+ <item quantity="other">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Телефон перебуватиме в режимі екстреного виклику протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилини. У цьому режимі не працюватимуть додатки, які передають дані. Вийти?</item>
+ <item quantity="few">Телефон перебуватиме в режимі екстреного виклику протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин. У цьому режимі не працюватимуть додатки, які передають дані. Вийти?</item>
+ <item quantity="many">Телефон перебуватиме в режимі екстреного виклику протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин. У цьому режимі не працюватимуть додатки, які передають дані. Вийти?</item>
+ <item quantity="other">Телефон перебуватиме в режимі екстреного виклику протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин. У цьому режимі не працюватимуть додатки, які передають дані. Вийти?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Вибрана дія недоступна в режимі екстреного виклику. Телефон перебуватиме в цьому режимі протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилини. Вийти?</item>
+ <item quantity="few">Вибрана дія недоступна в режимі екстреного виклику. Телефон перебуватиме в цьому режимі протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин. Вийти?</item>
+ <item quantity="many">Вибрана дія недоступна в режимі екстреного виклику. Телефон перебуватиме в цьому режимі протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин. Вийти?</item>
+ <item quantity="other">Вибрана дія недоступна в режимі екстреного виклику. Телефон перебуватиме в цьому режимі протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин. Вийти?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Вибрана дія не доступна під час екстреного виклику."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Вихід із режиму екстреного зворотного виклику"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Так"</string>
@@ -548,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Екстрені виклики"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Лише екстрені виклики"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM-карта, роз’єм: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Спеціальні можливості"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Вхід. дзвінок через Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Дзвінок через Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Торкніться знову, щоб відкрити"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Під час розшифрування повідомлення сталася помилка."</string>
</resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 1dcc6c3..e89a17f 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"فون اکاؤنٹس"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP اکاؤنٹ شامل کریں"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"اکاؤنٹ کی ترتیبات کنفیگر کریں"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi کالنگ"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi کالنگ"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi کالنگ کا استعمال نہ کریں"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"کال اسسٹنٹ کا استعمال نہ کریں"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"کوئی نہیں"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"کنفیگر کریں"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"پہلے سے شامل کنکشن سروس"</string>
<string name="voicemail" msgid="8693759337917898954">"صوتی میل"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"صوتی میل (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"نیٹ ورک آپریٹرز"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"ہنگامی براڈکاسٹس"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"رومنگ کے وقت ڈیٹا سروسز سے مربوط ہوں"</string>
<string name="roaming_disable" msgid="1843417228755568110">"رومنگ کے وقت ڈیٹا سروسز سے مربوط ہوں"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"آپ ڈیٹا کی حالت رسائی سے محروم ہوگئے کیونکہ آپ نے ڈیٹا رومنگ آف ہونے کے ساتھ اپنا ہوم نیٹ ورک چھوڑ دیا۔"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"رومنگ میں ڈیٹا کے استعمال کی اجازت دیں؟ مخصوص چارجز لاگو ہو سکتے ہیں۔"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"آپ پر خاطر خواہ چارجز لگ سکتے ہیں۔"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"ڈیٹا رومنگ کی اجازت دیں؟"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS کے اختیارات"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA کے اختیارات"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"ڈیٹا کا استعمال"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY طرز متعین کریں"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"از خود دوبارہ کوشش کریں"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"از خود دوبارہ کوشش کریں کا طرز فعال کریں"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ویڈیو کال کے دوران TTY وضع تبدیل کرنے کی اجازت نہیں ہے"</string>
<string name="menu_add" msgid="1882023737425114762">"رابطہ شامل کریں"</string>
<string name="menu_edit" msgid="7143003705504672374">"رابطہ میں ترمیم کریں"</string>
<string name="menu_delete" msgid="3977150783449642851">"رابطہ حذف کریں"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM کارڈ سے پڑھ رہا ہے…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"آپ کے SIM کارڈ پر کوئی رابطے نہیں ہیں۔"</string>
<string name="simContacts_title" msgid="1861472842524839921">"درآمد کرنے کیلئے رابطے منتخب کریں"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM کارڈ سے رابطے درآمد کرنے کیلئے، پہلے ہوائی جہاز طرز آف کریں۔"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM کارڈ سے رابطے درآمد کرنے کیلئے ہوائی جہاز وضع آف کریں۔"</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM کا PIN فعال/غیر فعال کریں"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM کا PIN تبدیل کریں"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM کا PIN:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"کال منقطع کریں"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"واپس کال کریں"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"پیغام"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"کال کرنے کیلئے، پہلے ہوائی جہاز طرز کو آف کریں۔"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"کال کرنے کیلئے ہوائی جہاز وضع آف کریں۔"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"کال کرنے کیلئے ہوائی جہاز وضع آف کریں یا کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"نیٹ ورک پر رجسٹرڈ نہیں ہے۔"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"سیلولر نیٹ ورک دستیاب نہیں ہے۔"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"سیلولر نیٹ ورک دستیاب نہیں ہے۔ کال کرنے کیلئے کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"کال کرنے کیلئے، ایک درست نمبر درج کریں۔"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"کال نہیں کر سکتے۔"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ترتیب شروع ہو رہی ہے…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"کانفرنس کالیں کرنے سے قاصر ہے۔"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"کال مسترد نہیں کی جا سکتی۔"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"کال(ز) ریلیز نہیں کر سکتے۔"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"کال کرنے کیلئے کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ہنگامی کال"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ریڈیو آن کر رہا ہے…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"کوئی سروس نہیں ہے۔ دوبارہ کوشش کی جا رہی ہے…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"ہنگامی کال بیک طرز میں داخل ہو گیا"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ہنگامی کال بیک طرز"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ڈیٹا کنکشن غیر فعال ہوگیا"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> منٹ تک کوئی ڈیٹا کنکشن نہیں ہے"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> منٹوں تک کوئی ڈیٹا کنکشن نہیں ہے"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"فون <xliff:g id="COUNT">%s</xliff:g> منٹ تک ہنگامی کال بیک وضع میں رہے گا۔ اس وضع میں رہتے ہوئے ڈیٹا کنکشن کا استعمال کرنے والی کوئی بھی ایپس استعمال نہیں ہوسکتی ہیں۔ کیا آپ ابھی خارج ہونا چاہتے ہیں؟"</item>
- <item quantity="other" msgid="8617116564023933114">"فون <xliff:g id="COUNT">%s</xliff:g> منٹ تک ہنگامی کال بیک وضع میں رہے گا۔ اس وضع میں رہتے ہوئے ڈیٹا کنکشن کا استعمال کرنے والی کوئی بھی ایپلیکیشنز استعمال نہیں ہوسکتی ہیں۔ کیا آپ ابھی خارج ہونا چاہتے ہیں؟"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"منتخب کردہ کارروائی ہنگامی کال بیک طرز میں دستیاب نہیں ہے۔ فون <xliff:g id="COUNT">%s</xliff:g> منٹ تک اس طرز میں رہے گا۔ کیا آپ ابھی خارج ہونا چاہتے ہیں؟"</item>
- <item quantity="other" msgid="6115622137771382224">"منتخب کردہ کارروائی ہنگامی کال بیک طرز میں دستیاب نہیں ہے۔ فون <xliff:g id="COUNT">%s</xliff:g> منٹوں تک اس طرز میں رہے گا۔ کیا آپ ابھی خارج ہونا چاہتے ہیں؟"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> منٹ تک کوئی ڈیٹا کنکشن نہیں ہے</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> منٹ تک کوئی ڈیٹا کنکشن نہیں ہے</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">فون <xliff:g id="COUNT_1">%s</xliff:g> منٹ تک ہنگامی کال بیک وضع میں رہے گا۔ اس وضع میں رہتے ہوئے ڈیٹا کنکشن کا استعمال کرنے والی کسی بھی ایپلیکیشنز کا استعمال نہیں کیا جا سکتا ہے۔ کیا آپ ابھی باہر نکلنا چاہتے ہیں؟</item>
+ <item quantity="one">فون <xliff:g id="COUNT_0">%s</xliff:g> منٹ تک ہنگامی کال بیک وضع میں رہے گا۔ اس وضع میں رہتے ہوئے ڈیٹا کنکشن کا استعمال کرنے والی کسی بھی ایپس کا استعمال نہیں کیا جا سکتا ہے۔ کیا آپ ابھی باہر نکلنا چاہتے ہیں؟</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">منتخب کردہ کارروائی ایک ہنگامی کال بیک وضع میں رہتے ہوئے دستیاب نہیں ہے۔ فون <xliff:g id="COUNT_1">%s</xliff:g> منٹ تک اس وضع میں رہے گا۔ کیا آپ ابھی باہر نکلنا چاہتے ہیں؟</item>
+ <item quantity="one">منتخب کردہ کارروائی ایک ہنگامی کال بیک وضع میں رہتے ہوئے دستیاب نہیں ہے۔ فون <xliff:g id="COUNT_0">%s</xliff:g> منٹ تک اس وضع میں رہے گا۔ کیا آپ ابھی باہر نکلنا چاہتے ہیں؟</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"منتخب کردہ کارروائی ایک ہنگامی کال میں رہتے ہوئے دستیاب نہیں ہے۔"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"موجودہ ہنگامی کال بیک طرز"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"ہاں"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"ہنگامی کالز"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"صرف ہنگامی کالنگ"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM کارڈ، سلاٹ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"آنے والی Wi-Fi کال"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi کال"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"کھولنے کیلئے دوبارہ ٹچ کریں"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"پیغام کو ڈیکوڈ کرتے وقت ایک خرابی پیش آ گئی۔"</string>
</resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 39578f6..f3377ae 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefon hisoblari"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP hisobini qo‘shish"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Hisob sozlamalarini shakllantirish"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi qo‘ng‘iroq"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi qo‘ng‘iroq"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Wi-Fi qo‘ng‘iroqlardan foydalanilmasin"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Qo‘ng‘iroq yordamchisidan foydalanilmasin"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Hech biri"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Sozlash"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Ichki o‘rnatilgan ulanish xizmati"</string>
<string name="voicemail" msgid="8693759337917898954">"Ovozli xabar"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>) audio xabari"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Tarmoq operatorlari"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Favqulodda tarqatma xabarlar"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Rouming holatda ma’lumot uzatish xizmatlariga ulanish"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Rouming holatda ma’lumot uzatish xizmatlariga ulanish"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Internetga ulanish uzildi, chunki uy tarmog‘ingizni rouming internetini o\'chirgan holatda tark etdingiz."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Rouming vaqtida mobil internetdan foydalanilsinmi? Bu sezilarli darajada qimmat turadi."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Roumingdan foydalanish xarajati ancha yuqori bo‘lishi mumkin."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Internet-roumingga ruxsat berilsinmi?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS sozlamalari"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA sozlamalari"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Trafik sarfi"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY rejimini o‘rnatish"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Avto-qayta urinish"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Avto-qayta urinish rejimini yoqish"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Video qo‘ng‘iroq davomida TTY rejimini o‘zgartirish taqiqlangan"</string>
<string name="menu_add" msgid="1882023737425114762">"Kontakt qo‘shish"</string>
<string name="menu_edit" msgid="7143003705504672374">"Kontaktni tahrirlash"</string>
<string name="menu_delete" msgid="3977150783449642851">"Kontaktni o‘chirish"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM kartadan o‘qilmoqda…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM kartangizda kontaktlar yo‘q."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Import qilish uchun kontaktlarni tanlang"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"SIM kartangizdan kontaktlarni import qilish uchun, avvalo, \"Parvoz rejimi\"ni o‘chiring."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM kartadan kontaktlarni import qilish uchun parvoz rejimini o‘chiring"</string>
<string name="enable_pin" msgid="5422767284133234860">"SIM karta PIN kodini yoqish/o‘chirish"</string>
<string name="change_pin" msgid="9174186126330785343">"SIM karta PIN kodini o‘zgartirish"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM karta PIN kodi:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Go‘shakni qo‘yish"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Teskari qo‘ng‘iroq"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Xabar"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Qo‘ng‘iroq qilish uchun, avval \"Parvoz rejimi\" o‘chirilishi kerak."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring yoki simsiz tarmoqqa ulaning."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Tarmoqda ro‘yxatdan o‘tmagan."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobil tarmoq mavjud emas."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobil tarmoq mavjud emas. Qo‘ng‘iroq qilish uchun simsiz tarmoqqa ulaning."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Qo‘ng‘iroq qilib bo‘lmadi."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI tartibi ishga tushmoqda..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Konferensiya qo‘ng‘iroqlarini amalga oshirib bo‘lmaydi."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Qo‘ng‘iroqni rad qilib bo‘lmadi."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Qo‘ng‘iroq(lar)ni chiqarib bo‘lmadi."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Qo‘ng‘iroq qilish uchun simsiz tarmoqqa ulaning"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Favqulodda qo‘ng‘iroq"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio yoqilmoqda…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aloqa yo‘q. Qayta urinilmoqda…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Favqulodda teskari qo‘ng‘iroq rejimi kiritildi"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Favqulodda teskari qo‘ng‘iroq rejimi"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Internetga ulanish o‘chirildi"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"<xliff:g id="COUNT">%s</xliff:g> daqiqa internetga ulanib bo‘lmaydi"</item>
- <item quantity="other" msgid="3122217344579273583">"<xliff:g id="COUNT">%s</xliff:g> daqiqa internetga ulanib bo‘lmaydi"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Telefon favqulodda teskari qo‘ng‘iroq rejimida <xliff:g id="COUNT">%s</xliff:g> daqiqa qoladi. Ushbu rejim ishlab turganda birorta ham ilova internet ulanishlaridan foydalana olmaydi. Hozir chiqishni xohlaysizmi?"</item>
- <item quantity="other" msgid="8617116564023933114">"Telefon favqulodda teskari qo‘ng‘iroq rejimida <xliff:g id="COUNT">%s</xliff:g> daqiqa qoladi. Ushbu rejim ishlab turganda birorta ham ilova internet ulanishlaridan foydalana olmaydi. Hozir chiqishni xohlaysizmi?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Favqulodda teskari qo‘ng‘iroq qilish rejimida tanlangan amallarni bajarib bo‘lmaydi. Telefon ushbu rejimda <xliff:g id="COUNT">%s</xliff:g> daqiqa qoladi. Hozir chiqishni xohlaysizmi?"</item>
- <item quantity="other" msgid="6115622137771382224">"Favqulodda teskari qo‘ng‘iroq qilish rejimida tanlangan amallarni bajarib bo‘lmaydi. Telefon ushbu rejimda <xliff:g id="COUNT">%s</xliff:g> daqiqa qoladi. Hozir chiqishni xohlaysizmi?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> daqiqa davomida internetga ulanib bo‘lmaydi</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> daqiqa davomida internetga ulanib bo‘lmaydi</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Telefon <xliff:g id="COUNT_1">%s</xliff:g> daqiqa davomida Favqulodda teskari qo‘ng‘iroq rejimida bo‘ladi. Ushbu rejimda internet bilan ishlaydigan hech qanday ilovadan foydalanib bo‘lmaydi. Bu rejimdan chiqishni xohlaysizmi?</item>
+ <item quantity="one">Telefon <xliff:g id="COUNT_0">%s</xliff:g> daqiqa davomida Favqulodda teskari qo‘ng‘iroq rejimida bo‘ladi. Ushbu rejimda internet bilan ishlaydigan hech qanday ilovadan foydalanib bo‘lmaydi. Bu rejimdan chiqishni xohlaysizmi?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Tanlangan amaldan Favqulodda teskari qo‘ng‘iroq rejimida foydalanib bo‘lmaydi. Telefon <xliff:g id="COUNT_1">%s</xliff:g> daqiqa davomida shu rejimda bo‘ladi. Bu rejimdan chiqishni xohlaysizmi?</item>
+ <item quantity="one">Tanlangan amaldan Favqulodda teskari qo‘ng‘iroq rejimida foydalanib bo‘lmaydi. Telefon <xliff:g id="COUNT_0">%s</xliff:g> daqiqa davomida shu rejimda bo‘ladi. Bu rejimdan chiqishni xohlaysizmi?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Favqulodda qo‘ng‘rioq rejimida tanlangan amalni bajarib bo‘lmaydi."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Favqulodda teskari qo‘ng‘iroq rejimidan chiqilmoqda"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Ha"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Favqulodda qo‘ng‘iroqlar"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Faqat favqulodda qo‘ng‘iroqlar"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM karta, teshik: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Maxsus imkoniyatlar"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Kiruvchi Wi-Fi qo‘ng‘irog‘i"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi qo‘ng‘irog‘i"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Ochish uchun yana bosing"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Xabarni kodsizlashda xatolik yuz berdi."</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index ebb2a1e..2054e66 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Tài khoản điện thoại"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Thêm tài khoản SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Định cấu hình cài đặt tài khoản"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Gọi qua Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Gọi qua Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Không sử dụng tính năng gọi qua Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Không sử dụng trợ lý cuộc gọi"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Không có"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Định cấu hình"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Dịch vụ kết nối được tích hợp"</string>
<string name="voicemail" msgid="8693759337917898954">"Thư thoại"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Thư thoại (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"Thư thoại:"</string>
<string name="networks" msgid="8873030692174541976">"Nhà cung cấp dịch vụ mạng"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Phát sóng trong tình huống khẩn cấp"</string>
@@ -116,7 +117,7 @@
<string name="sum_cfnry_disabled" msgid="3884684060443538097">"Tắt"</string>
<string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Nhà cung cấp dịch vụ của bạn không hỗ trợ vô hiệu hóa chuyển tiếp cuộc gọi khi điện thoại của bạn không trả lời."</string>
<string name="labelCFNRc" msgid="2614827454402079766">"Khi không liên lạc được"</string>
- <string name="messageCFNRc" msgid="6380695421020295119">"Số khi không thể truy cập được"</string>
+ <string name="messageCFNRc" msgid="6380695421020295119">"Số khi không liên lạc được"</string>
<string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Chuyển tiếp tới <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
<string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Đã tắt"</string>
<string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Nhà cung cấp dịch vụ của bạn không hỗ trợ vô hiệu hóa chuyển tiếp cuộc gọi khi điện thoại của bạn không thể truy cập được."</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Kết nối với dịch vụ dữ liệu khi chuyển vùng"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Kết nối với dịch vụ dữ liệu khi chuyển vùng"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Bạn đã mất kết nối dữ liệu vì bạn đã tắt chuyển vùng dữ liệu của mạng gia đình của mình."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Cho phép sử dụng dữ liệu khi chuyển vùng? Mức phí đáng kể có thể được áp dụng."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Bạn có thể phải chịu các khoản phí đáng kể."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Cho phép chuyển vùng dữ liệu?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Tùy chọn GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Tùy chọn CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Sử dụng dữ liệu"</string>
@@ -350,6 +352,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Đặt chế độ TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Tự động thử lại"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Bật chế độ Tự động thử lại"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Không được phép thay đổi Chế độ TTY trong cuộc gọi điện video"</string>
<string name="menu_add" msgid="1882023737425114762">"Thêm liên hệ"</string>
<string name="menu_edit" msgid="7143003705504672374">"Chỉnh sửa liên hệ"</string>
<string name="menu_delete" msgid="3977150783449642851">"Xóa liên hệ"</string>
@@ -373,7 +376,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Đang đọc từ thẻ SIM…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Không có danh bạ trên thẻ SIM của bạn."</string>
<string name="simContacts_title" msgid="1861472842524839921">"Chọn danh bạ để nhập"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Để nhập danh bạ từ thẻ SIM, trước tiên hãy tắt Chế độ trên máy bay."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Tắt chế độ trên máy bay để nhập danh bạ từ thẻ SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Bật/vô hiệu hóa mã PIN của SIM"</string>
<string name="change_pin" msgid="9174186126330785343">"Thay đổi mã PIN của SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"Mã PIN của SIM:"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Kết thúc"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Gọi lại"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Tin nhắn"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Để thực hiện cuộc gọi, trước tiên, hãy tắt chế độ trên Máy bay."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Tắt chế độ trên máy bay để thực hiện cuộc gọi."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Tắt chế độ trên máy bay hoặc kết nối với mạng không dây để thực hiện cuộc gọi."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Chưa được đăng ký trên mạng."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Không có mạng di động."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Hiện không có mạng di động. Hãy kết nối với mạng không dây để thực hiện cuộc gọi."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Để thực hiện cuộc gọi, hãy nhập một số hợp lệ."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Không thực hiện được cuộc gọi."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Khởi động chuỗi MMI…"</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Không thể thực hiện cuộc gọi hội nghị."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Không từ chối được cuộc gọi."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Không thực hiện được cuộc gọi."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Kết nối với mạng không dây để thực hiện cuộc gọi."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Cuộc gọi khẩn cấp"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Đang bật radio..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Không có dịch vụ nào. Đang thử lại…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Đã vào Chế độ Gọi lại Khẩn cấp"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Chế độ Gọi lại Khẩn cấp"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Đã tắt kết nối mạng"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Không có kết nối dữ liệu trong <xliff:g id="COUNT">%s</xliff:g> phút"</item>
- <item quantity="other" msgid="3122217344579273583">"Không có kết nối dữ liệu trong <xliff:g id="COUNT">%s</xliff:g> phút"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Điện thoại sẽ ở chế độ Gọi lại khẩn cấp trong vòng <xliff:g id="COUNT">%s</xliff:g> phút. Không thể ứng dụng nào sử dụng kết nối dữ liệu trong khi ở trong chế độ này. Bạn có muốn thoát ngay bây giờ không?"</item>
- <item quantity="other" msgid="8617116564023933114">"Điện thoại sẽ ở chế độ Gọi lại khẩn cấp trong vòng <xliff:g id="COUNT">%s</xliff:g> phút. Không thể sử dụng ứng dụng nào sử dụng kết nối dữ liệu trong khi đang ở trong chế độ này. Bạn có muốn thoát ngay bây giờ không?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Tác vụ đã chọn không khả dụng trong khi ở chế độ Gọi lại khẩn cấp. Điện thoại sẽ ở chế độ này trong vòng <xliff:g id="COUNT">%s</xliff:g> phút. Bạn có muốn thoát ngay bây giờ không?"</item>
- <item quantity="other" msgid="6115622137771382224">"Tác vụ đã chọn không sẵn có trong khi ở chế độ Gọi lại khẩn cấp. Điện thoại sẽ ở chế độ này trong vòng <xliff:g id="COUNT">%s</xliff:g> phút. Bạn có muốn thoát ngay bây giờ không?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">Không có kết nối dữ liệu trong <xliff:g id="COUNT_1">%s</xliff:g> phút</item>
+ <item quantity="one">Không có kết nối dữ liệu trong <xliff:g id="COUNT_0">%s</xliff:g> phút</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">Điện thoại sẽ ở chế độ Gọi lại khẩn cấp trong <xliff:g id="COUNT_1">%s</xliff:g> phút. Khi ở chế độ này, không thể dùng bất kỳ ứng dụng nào sử dụng kết nối dữ liệu. Bạn có muốn thoát chế độ này ngay bây giờ không?</item>
+ <item quantity="one">Điện thoại sẽ ở chế độ Gọi lại khẩn cấp trong <xliff:g id="COUNT_0">%s</xliff:g> phút. Khi ở chế độ này, không thể dùng bất kỳ ứng dụng nào sử dụng kết nối dữ liệu. Bạn có muốn thoát chế độ này ngay bây giờ không?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">Tác vụ đã chọn không khả dụng khi ở chế độ Gọi lại khẩn cấp. Điện thoại sẽ ở chế độ này trong <xliff:g id="COUNT_1">%s</xliff:g> phút. Bạn có muốn thoát chế độ này ngay bây giờ không?</item>
+ <item quantity="one">Tác vụ đã chọn không khả dụng khi ở chế độ Gọi lại khẩn cấp. Điện thoại sẽ ở chế độ này trong <xliff:g id="COUNT_0">%s</xliff:g> phút. Bạn có muốn thoát chế độ này ngay bây giờ không?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Tác vụ đã chọn không khả dụng trong khi thực hiện cuộc gọi khẩn cấp."</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Thoát khỏi chế độ Gọi lại khẩn cấp"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Có"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Cuộc gọi khẩn cấp"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Chỉ gọi điện khẩn cấp"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Thẻ SIM, rãnh: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Trợ năng"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Cuộc gọi đến qua Wi-Fi"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Cuộc gọi qua Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Chạm lại để mở"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Đã xảy ra lỗi khi giải mã tin nhắn."</string>
</resources>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index c927248..4a7c249 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -19,8 +19,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="preferred_network_mode_choices_world_mode">
<item msgid="3391522821603584785">"通用"</item>
- <item msgid="6753774959494729275">"LTE/CDMA"</item>
- <item msgid="8658695584186942227">"LTE/GSM/UMTS"</item>
+ <item msgid="6753774959494729275">"LTE / CDMA"</item>
+ <item msgid="8658695584186942227">"LTE / GSM / UMTS"</item>
</string-array>
<string-array name="preferred_network_mode_values_world_mode">
<item msgid="8390941159766263625">"10"</item>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 847712e..959a489 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"电话帐户"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"添加 SIP 帐户"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"配置帐户设置"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"WLAN 通话"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"WLAN 通话"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"不使用 WLAN 通话功能"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"不使用通话助手"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"无"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"配置"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"内置网络连接服务"</string>
<string name="voicemail" msgid="8693759337917898954">"语音信箱"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"语音信箱(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"语音信箱:"</string>
<string name="networks" msgid="8873030692174541976">"网络运营商"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"紧急广播"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"漫游时连接到移动数据网络服务"</string>
<string name="roaming_disable" msgid="1843417228755568110">"漫游时连接到移动数据网络服务"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"移动数据网络连接已断开,因为您已离开本地网络并关闭了移动数据网络漫游功能。"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"要允许在漫游时使用数据流量吗?这可能会产生较多费用。"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"这可能会产生高额费用。"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"要允许数据网络漫游吗?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 选项"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA 选项"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"流量使用"</string>
@@ -332,28 +334,29 @@
<string name="fdn" msgid="7878832555095183202">"固定拨号"</string>
<string name="fdn_with_label" msgid="187084204115493366">"固定拨号 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="manage_fdn_list" msgid="8777755791892122369">"固定拨号列表"</string>
- <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN 列表 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+ <string name="fdn_list_with_label" msgid="7437232552210469217">"固定拨号列表 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="fdn_activation" msgid="2156479741307463576">"激活固定拨号"</string>
<string name="fdn_enabled" msgid="5238109009915521240">"已启用固定拨号"</string>
<string name="fdn_disabled" msgid="4700049736675368279">"未启用固定拨号"</string>
<string name="enable_fdn" msgid="3740191529180493851">"启用固定拨号"</string>
<string name="disable_fdn" msgid="7944020890722540616">"停用固定拨号"</string>
- <string name="change_pin2" msgid="2153563695382176676">"更改 PIN2"</string>
+ <string name="change_pin2" msgid="2153563695382176676">"更改 PIN2 码"</string>
<string name="enable_fdn_ok" msgid="7215588870329688132">"停用固定拨号"</string>
<string name="disable_fdn_ok" msgid="5727046928930740173">"启用固定拨号"</string>
<string name="sum_fdn" msgid="1959399454900272878">"管理固定拨号"</string>
<string name="sum_fdn_change_pin" msgid="6666549734792827932">"更改使用固定拨号所需的 PIN 码"</string>
- <string name="sum_fdn_manage_list" msgid="8431088265332628316">"管理手机号码列表"</string>
+ <string name="sum_fdn_manage_list" msgid="8431088265332628316">"管理号码列表"</string>
<string name="voice_privacy" msgid="3776841382844614716">"语音隐私权"</string>
<string name="voice_privacy_summary" msgid="3159383389833516214">"启用增强型隐秘模式"</string>
<string name="tty_mode_option_title" msgid="9033098925144434669">"TTY 模式"</string>
<string name="tty_mode_option_summary" msgid="1073835131534808732">"设置 TTY 模式"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"自动重拨"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"启用自动重拨模式"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"视频通话过程中不允许更改为 TTY 模式"</string>
<string name="menu_add" msgid="1882023737425114762">"添加联系人"</string>
<string name="menu_edit" msgid="7143003705504672374">"编辑联系人"</string>
<string name="menu_delete" msgid="3977150783449642851">"删除联系人"</string>
- <string name="get_pin2" msgid="8204677063922225311">"键入 PIN2"</string>
+ <string name="get_pin2" msgid="8204677063922225311">"输入 PIN2 码"</string>
<string name="name" msgid="7329028332786872378">"名称"</string>
<string name="number" msgid="7905950798349903858">"号码"</string>
<string name="save" msgid="4094274636321939086">"保存"</string>
@@ -366,14 +369,14 @@
<string name="delete_fdn_contact" msgid="6668958073074151717">"删除固定拨号联系人"</string>
<string name="deleting_fdn_contact" msgid="5669163206349319969">"正在删除固定拨号联系人..."</string>
<string name="fdn_contact_deleted" msgid="7154162327112259569">"已删除固定拨号联系人。"</string>
- <string name="pin2_invalid" msgid="5470854099230755944">"系统未更新 FDN,因为键入的 PIN 码有误。"</string>
- <string name="fdn_invalid_number" msgid="1494755047900009147">"系统未更新 FDN,因为号码不能超过 20 位。"</string>
- <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN 未更新。PIN2 有误,或电话号码遭拒。"</string>
- <string name="fdn_failed" msgid="540018079008319747">"FDN 操作失败。"</string>
+ <string name="pin2_invalid" msgid="5470854099230755944">"固定拨号未更新,因为输入的 PIN 码有误。"</string>
+ <string name="fdn_invalid_number" msgid="1494755047900009147">"固定拨号未更新,因为号码不能超过 20 位。"</string>
+ <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"固定拨号未更新。PIN2 码有误,或电话号码遭拒。"</string>
+ <string name="fdn_failed" msgid="540018079008319747">"固定拨号操作失败。"</string>
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"正在从SIM卡读取..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM卡上无联系人。"</string>
<string name="simContacts_title" msgid="1861472842524839921">"选择要导入的联系人"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"要从SIM卡导入联系人,请先关闭飞行模式。"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"需关闭飞行模式才能导入 SIM 卡中的联系人。"</string>
<string name="enable_pin" msgid="5422767284133234860">"启用/停用SIM卡PIN码"</string>
<string name="change_pin" msgid="9174186126330785343">"更改SIM卡PIN码"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM卡PIN码:"</string>
@@ -391,10 +394,10 @@
<string name="pin_failed" msgid="5644377896213584760">"PIN 码不正确"</string>
<string name="pin_changed" msgid="4455736268023261662">"PIN 码已更新"</string>
<string name="puk_requested" msgid="5921393215789090200">"密码不正确。PIN 码已被锁定。已请求 PUK 码。"</string>
- <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
- <string name="oldPin2Label" msgid="8559146795026261502">"旧 PIN2"</string>
- <string name="newPin2Label" msgid="4573956902204349054">"新 PIN2"</string>
- <string name="confirmPin2Label" msgid="8100319484454787708">"确认新 PIN2"</string>
+ <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2 码"</string>
+ <string name="oldPin2Label" msgid="8559146795026261502">"旧 PIN2 码"</string>
+ <string name="newPin2Label" msgid="4573956902204349054">"新 PIN2 码"</string>
+ <string name="confirmPin2Label" msgid="8100319484454787708">"确认新 PIN2 码"</string>
<string name="badPuk2" msgid="7910064009531541708">"PUK2 码不正确,请重试。"</string>
<string name="badPin2" msgid="6646896629970023109">"旧的 PIN2 码不正确,请重试。"</string>
<string name="mismatchPin2" msgid="4177967478551851117">"PIN2 码不正确,请重试。"</string>
@@ -434,9 +437,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"挂断"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"回拨"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"短信"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"要进行呼叫,请先关闭飞行模式。"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"需关闭飞行模式才能拨打电话。"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"需关闭飞行模式或连接至无线网络才能拨打电话。"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"尚未注册网络。"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"无法连接到移动网络。"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"移动网络不可用。需连接至无线网络才能拨打电话。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"要拨打电话,请输入有效的电话号码。"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"无法拨打该电话。"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"正在启动 MMI 序列..."</string>
@@ -447,6 +452,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"无法进行电话会议。"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"无法拒接来电。"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"无法挂断电话。"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"需连接至无线网络才能拨打电话。"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"紧急呼救"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"正在打开天线..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"无服务,正在重试…"</string>
@@ -508,18 +514,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"已进入紧急回拨模式"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"紧急回拨模式"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"数据连接已停用"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"持续 <xliff:g id="COUNT">%s</xliff:g> 分钟没有数据连接"</item>
- <item quantity="other" msgid="3122217344579273583">"持续 <xliff:g id="COUNT">%s</xliff:g> 分钟没有数据连接"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"手机在 <xliff:g id="COUNT">%s</xliff:g> 分钟内都会处于紧急回拨模式下,此模式下无法使用需要联网的应用。您要立即退出吗?"</item>
- <item quantity="other" msgid="8617116564023933114">"手机在 <xliff:g id="COUNT">%s</xliff:g> 分钟内都会处于紧急回拨模式下,此模式下无法使用需要联网的应用。要立即退出吗?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"无法在紧急回拨模式下执行所选操作,而手机在 <xliff:g id="COUNT">%s</xliff:g> 分钟内都会处于此模式下。要立即退出吗?"</item>
- <item quantity="other" msgid="6115622137771382224">"无法在紧急回拨模式下执行所选操作,而手机在 <xliff:g id="COUNT">%s</xliff:g> 分钟内都会处于此模式下。要立即退出吗?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">持续 <xliff:g id="COUNT_1">%s</xliff:g> 分钟没有数据网络连接</item>
+ <item quantity="one">持续 <xliff:g id="COUNT_0">%s</xliff:g> 分钟没有数据网络连接</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">手机在 <xliff:g id="COUNT_1">%s</xliff:g> 分钟内都会处于紧急回拨模式。此模式下无法使用任何需要连接数据网络的应用。要立即退出吗?</item>
+ <item quantity="one">手机在 <xliff:g id="COUNT_0">%s</xliff:g> 分钟内都会处于紧急回拨模式。此模式下无法使用任何需要连接数据网络的应用。要立即退出吗?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">在紧急回拨模式下无法执行所选操作。手机在 <xliff:g id="COUNT_1">%s</xliff:g> 分钟内都会处于此模式。要立即退出吗?</item>
+ <item quantity="one">在紧急回拨模式下无法执行所选操作。手机在 <xliff:g id="COUNT_0">%s</xliff:g> 分钟内都会处于此模式。要立即退出吗?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"进行紧急呼救时无法执行所选操作。"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"正在退出紧急回拨模式"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"是"</string>
@@ -548,4 +554,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"紧急呼救"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"只能拨打紧急呼救电话"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM 卡,插槽:<xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"无障碍功能"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"WLAN 来电"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"WLAN 通话"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"再次触摸即可打开"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"对邮件解码时出错。"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 0f45a1c..99cc169 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"手機帳戶"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"加入 SIP 帳戶"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"設定帳戶設定"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi 通話"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi 通話"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"不要使用 Wi-Fi 通話功能"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"不要使用通話小幫手"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"無"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"設定"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"內置連線服務"</string>
<string name="voicemail" msgid="8693759337917898954">"留言信箱"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"留言信箱 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"留言信箱:"</string>
<string name="networks" msgid="8873030692174541976">"網絡供應商"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"緊急廣播"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"漫遊時連線到數據傳輸服務"</string>
<string name="roaming_disable" msgid="1843417228755568110">"漫遊時連線到數據傳輸服務"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"您已離開主網絡覆蓋範圍,且已關閉數據漫遊服務,因此數據連線已中斷。"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"允許漫遊時使用數據嗎?您可能需要支付龐大的費用。"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"您可能需要支付龐大的費用。"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"要允許數據漫遊服務嗎?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 選項"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA 選項"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"數據用量"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"設定 TTY 模式"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"自動重試"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"啟用自動重試模式"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"視像通話過程中不允許變更 TTY 模式"</string>
<string name="menu_add" msgid="1882023737425114762">"新增聯絡人"</string>
<string name="menu_edit" msgid="7143003705504672374">"編輯聯絡人"</string>
<string name="menu_delete" msgid="3977150783449642851">"刪除聯絡人"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"正在從 SIM 卡讀取..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"SIM 卡中沒有聯絡人。"</string>
<string name="simContacts_title" msgid="1861472842524839921">"選取要匯入的聯絡人"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"如要從 SIM 卡匯入通訊錄,請先關閉飛行模式。"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"關閉飛行模式,並從 SIM 卡匯入聯絡人。"</string>
<string name="enable_pin" msgid="5422767284133234860">"啟用/停用 SIM PIN"</string>
<string name="change_pin" msgid="9174186126330785343">"更改 SIM PIN"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"掛斷"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"回撥"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"短訊"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"請先關閉飛行模式後再撥打電話。"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"關閉飛行模式以撥打電話。"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"關閉飛行模式或連接無線網絡,以撥打電話。"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"未在網絡上完成註冊。"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"無法連線至流動網絡。"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"無法使用流動網絡。連接無線網絡,以撥打電話。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"要撥打電話,請輸入有效的號碼。"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"無法通話。"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"開始 MMI 序列..."</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"無法進行會議通話"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"無法拒絕來電。"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"無法釋放通話。"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"連接無線網絡,以撥打電話。"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急電話"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"正在開啟無線電..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"沒有服務。請再試一次…"</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"已進入緊急回撥模式"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"緊急回撥模式"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"數據連線已停用"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘內沒有數據連線"</item>
- <item quantity="other" msgid="3122217344579273583">"接下來將出現 <xliff:g id="COUNT">%s</xliff:g> 分鐘的資料斷線狀態"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於緊急回撥模式。在這個模式中,所有使用數據連線的應用程式皆無法使用。您要立即退出嗎?"</item>
- <item quantity="other" msgid="8617116564023933114">"手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於緊急回撥模式。在這個模式中,所有使用數據連線的應用程式皆無法使用。您要立即退出嗎?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"緊急回撥模式不支援您所選取的操作。手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於這個模式,您要立即退出嗎?"</item>
- <item quantity="other" msgid="6115622137771382224">"緊急回撥模式不支援您所選取的操作。手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於這個模式,您要立即退出嗎?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">在接下來的 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內沒有數據連線</item>
+ <item quantity="one">接下來的 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內沒有數據連線</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">手機將在 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內處於緊急電話模式。在此模式中,無法使用需要數據連線的應用程式。您要退出嗎?</item>
+ <item quantity="one">手機將在 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內處於緊急電話模式。在此模式中,無法使用需要連接數據的應用程式。您要退出嗎?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">在緊急電話模式中,無法進行已選取的操作。手機將在 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內處於此模式。您要退出嗎?</item>
+ <item quantity="one">在緊急電話模式中,無法進行已選取的操作。手機將在 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內處於此模式。您要退出嗎?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"緊急電話模式不支援您所選取的操作。"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"正在退出緊急回撥模式"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"是"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"緊急通話"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"只限緊急通話"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM 卡,插槽:<xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"無障礙功能"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi 來電"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi 通話"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"再次輕觸以開啟"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"為訊息解碼時發生錯誤。"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 8ba5a6f..bc926fb 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"手機帳戶"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"新增 SIP 帳戶"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"配置帳戶設定"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Wi-Fi 通話"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi 通話"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"不使用 Wi-Fi 通話功能"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"不使用通話小幫手"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"無"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"設定"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"內建連線服務"</string>
<string name="voicemail" msgid="8693759337917898954">"語音信箱"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"語音信箱 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"語音信箱:"</string>
<string name="networks" msgid="8873030692174541976">"電信業者"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"緊急廣播"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"漫遊時連線到數據傳輸服務"</string>
<string name="roaming_disable" msgid="1843417228755568110">"漫遊時連線到數據傳輸服務"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"您已離開國內網路涵蓋範圍,且已關閉數據傳輸漫遊服務,因此數據連線已中斷。"</string>
- <string name="roaming_warning" msgid="7126227198294007907">"允許漫遊時使用行動數據嗎?可能需要支付可觀的費用。"</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"您可能需要支付可觀的費用。"</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"允許漫遊服務?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 選項"</string>
<string name="cdma_options" msgid="4016822858172249884">"CDMA 選項"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"數據用量"</string>
@@ -356,6 +358,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"設定 TTY 模式"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"自動重試"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"啟用自動重試模式"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"無法在視訊通話過程中變更 TTY 模式"</string>
<string name="menu_add" msgid="1882023737425114762">"新增聯絡人"</string>
<string name="menu_edit" msgid="7143003705504672374">"編輯聯絡人"</string>
<string name="menu_delete" msgid="3977150783449642851">"刪除聯絡人"</string>
@@ -379,7 +382,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"正在從 SIM 卡讀取…"</string>
<string name="simContacts_empty" msgid="5270660846489561932">"您的 SIM 卡上沒有聯絡人。"</string>
<string name="simContacts_title" msgid="1861472842524839921">"選取要匯入的聯絡人"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"如要從 SIM 卡匯入聯絡人,請先關閉「飛行」模式。"</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"關閉飛航模式即可從 SIM 卡匯入聯絡人資訊。"</string>
<string name="enable_pin" msgid="5422767284133234860">"啟用/停用 SIM PIN"</string>
<string name="change_pin" msgid="9174186126330785343">"變更 SIM PIN"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"SIM 卡 PIN 碼:"</string>
@@ -440,9 +443,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"掛斷"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"回撥"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"簡訊"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"撥號前,請先關閉飛航模式。"</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"關閉飛航模式即可撥打電話。"</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"關閉飛航模式或連上無線網路即可撥打電話。"</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"尚未註冊網路。"</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"無法連線到行動網路。"</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"無法使用行動通訊網路。但連上 Wi-Fi 網路即可撥打電話。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"如要撥打電話,請輸入有效的號碼。"</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"無法通話。"</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"開始 MMI 序列…"</string>
@@ -453,6 +458,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"無法進行多方通話。"</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"無法拒接來電。"</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"無法掛斷電話。"</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"連上無線網路即可撥打電話。"</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急電話"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"開啟無線通訊中…"</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"找不到服務訊號,正在重試…"</string>
@@ -514,18 +520,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"已進入緊急回撥模式"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"緊急回撥模式"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"資料連線已停用"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘內沒有資料連線"</item>
- <item quantity="other" msgid="3122217344579273583">"接下來將出現 <xliff:g id="COUNT">%s</xliff:g> 分鐘的資料斷線狀態"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於緊急回撥模式。在這個模式中,所有使用數據連線的應用程式皆無法運作。您要立即退出嗎?"</item>
- <item quantity="other" msgid="8617116564023933114">"手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於緊急回撥模式。在這個模式中,所有使用數據連線的應用程式皆無法運作。您要立即退出嗎?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"緊急回撥模式不支援您要執行的操作。手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於這個模式,您要立即退出嗎?"</item>
- <item quantity="other" msgid="6115622137771382224">"緊急回撥模式不支援您要執行的操作。手機在接下來的 <xliff:g id="COUNT">%s</xliff:g> 分鐘都將處於這個模式,您要立即退出嗎?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="other">接下來的 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內沒有數據連線</item>
+ <item quantity="one">接下來的 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內沒有數據連線</item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="other">接下來的 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內,手機會進入緊急回電模式。在此模式下,您將無法使用需要數據連線的應用程式。您要立即退出這個模式嗎?</item>
+ <item quantity="one">接下來的 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內,手機會進入緊急回電模式。在此模式下,您將無法使用需要數據連線的應用程式。您要立即退出這個模式嗎?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="other">緊急回電模式不支援您要執行的操作。接下來的 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內,手機會進入此模式。您要立即退出這個模式嗎?</item>
+ <item quantity="one">緊急回電模式不支援您要執行的操作。接下來的 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內,手機會進入此模式。您要立即退出這個模式嗎?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"緊急通話模式不支援您要執行的操作。"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"正在退出緊急回撥模式"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"是"</string>
@@ -554,4 +560,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"緊急電話"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"僅限撥打緊急電話"</string>
<string name="sim_description_default" msgid="4778679519938775515">"SIM 卡,插槽:<xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"協助工具"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi 來電"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi 通話"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"再次輕觸即可開啟"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"為郵件解碼時發生錯誤。"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 975bb10..332149b 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -66,7 +66,7 @@
<string name="phone_accounts_selection_header" msgid="1365215726106915865">"Ama-akhawunti wefoni"</string>
<string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Engeza i-akhawunti ye-SIP"</string>
<string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Lungiselela izilungiselelo ze-akhawunti"</string>
- <string name="phone_account_wifi_calling" msgid="1840272538233414629">"Ukushaya kwe-Wi-Fi"</string>
+ <string name="wifi_calling" msgid="739018212480165598">"Ukushaya kwe-Wi-Fi"</string>
<string name="wifi_calling_do_not_use" msgid="7491443219113013323">"Ungasebenzisi ukushaya nge-Wi-Fi"</string>
<string name="wifi_calling_do_not_use_call_assistant" msgid="5420257095556091770">"Ungasebenzisi umsizi wokushaya"</string>
<string name="wifi_calling_call_assistant_none" msgid="6283702349285593683">"Lutho"</string>
@@ -78,6 +78,7 @@
<string name="wifi_calling_call_assistant_configure" msgid="1092639708949670031">"Lungiselela"</string>
<string name="connection_service_default_label" msgid="1498481943805913754">"Isevisi yokuxhumeka eyakhelwe ngaphakathi"</string>
<string name="voicemail" msgid="8693759337917898954">"Ivoyisimeyili"</string>
+ <string name="voicemail_settings_with_label" msgid="152724978380748296">"Ivoyisimeyili (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
<string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
<string name="networks" msgid="8873030692174541976">"Imisebenzi yenethiwekhi"</string>
<string name="cell_broadcast_settings" msgid="8740238216690502563">"Ukusakazwa okuphuthumayo"</string>
@@ -204,7 +205,8 @@
<string name="roaming_enable" msgid="7331106985174381987">"Xhuma emasevisini edatha uma uzulazula"</string>
<string name="roaming_disable" msgid="1843417228755568110">"Xhuma emasevisini edatha lapho uzulazula"</string>
<string name="roaming_reenable_message" msgid="8913735676127858115">"Ulahlekelwe uxhumano lwedatha ngoba ushiye inethiwekhi yakho yasekhaya inokuzulazula kwedatha okuvuliwe."</string>
- <string name="roaming_warning" msgid="7126227198294007907">"Vumela ukusetshenziswa kwedatha uma kuzulwa? Izindleko ezibalulekile zingasebenza."</string>
+ <string name="roaming_warning" msgid="1603164667540144353">"Ingahle uthole izindleko ezincane."</string>
+ <string name="roaming_alert_title" msgid="3654815360303826008">"Vumela ukuhamba kwedatha?"</string>
<string name="gsm_umts_options" msgid="6538311689850981686">"Okukhethwa kukho kwe-GSM/UMTS"</string>
<string name="cdma_options" msgid="4016822858172249884">"Okukhethwa kukho kwe-CDMA"</string>
<string name="throttle_data_usage" msgid="3715677828160555808">"Ukusebenzisa idatha"</string>
@@ -354,6 +356,7 @@
<string name="tty_mode_option_summary" msgid="1073835131534808732">"Hlela imodi ye-TTY"</string>
<string name="auto_retry_mode_title" msgid="4073265511427813322">"Zama futhi ngokuzenzakalelayo"</string>
<string name="auto_retry_mode_summary" msgid="4973886004067532288">"Vumela imodi Yokuzama Futhi Okuzenzakalelayo"</string>
+ <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Ukuguqulwa kwemodi ye-TTY akuvunyelwe ngesikhathi sekholi yevidiyo"</string>
<string name="menu_add" msgid="1882023737425114762">"Engeza othintana naye"</string>
<string name="menu_edit" msgid="7143003705504672374">"Hlela othintana naye"</string>
<string name="menu_delete" msgid="3977150783449642851">"Susa othintana naye"</string>
@@ -377,7 +380,7 @@
<string name="simContacts_emptyLoading" msgid="2203331234764498011">"Ifunda ekhadini le-SIM..."</string>
<string name="simContacts_empty" msgid="5270660846489561932">"Abekho othintana nabo ekhadini lakho le-SIM"</string>
<string name="simContacts_title" msgid="1861472842524839921">"Khetha othintana nabo ozobangenisa"</string>
- <string name="simContacts_airplaneMode" msgid="1846161429087789936">"Ukufaka oxhumana nabo kusuka ekhadini le-SIM, qala ngokucima imodi yeNdiza."</string>
+ <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Vala imodi yendiza ukuze ungenise oxhumana nabo kusukela kukhadi le-SIM."</string>
<string name="enable_pin" msgid="5422767284133234860">"Vumela/Vima i-PIN ye-SI<M"</string>
<string name="change_pin" msgid="9174186126330785343">"Shintsha i-PIN ye-SIM"</string>
<string name="enter_pin_text" msgid="8532615714751931951">"I-SIM PIN:"</string>
@@ -438,9 +441,11 @@
<string name="notification_action_end_call" msgid="6069460915123531620">"Vala ikholi"</string>
<string name="notification_missedCall_call_back" msgid="2684890353590890187">"Phinda ushaye"</string>
<string name="notification_missedCall_message" msgid="3049928912736917988">"Umlayezo"</string>
- <string name="incall_error_power_off" msgid="6550191216405193368">"Ukwenza ikholi, vala kuqala imodi Yendiza."</string>
+ <string name="incall_error_power_off" msgid="2947938060513306698">"Vala imodi yendiza ukuze wenze ikholi."</string>
+ <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Vala imodi yendiza noma xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
<string name="incall_error_emergency_only" msgid="4678640422710818317">"Ayibhalisiwe kwinethiwekhi."</string>
<string name="incall_error_out_of_service" msgid="4100065333878929223">"Inethiwekhi yeselula ayitholakali."</string>
+ <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Inethiwekhi yeselula ayitholakali. Xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
<string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ukuze wenze ikholi, faka inombolo evumelekile."</string>
<string name="incall_error_call_failed" msgid="6302746943230078197">"Ayikwazi ukushaya."</string>
<string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iqalisa ukulandelana kwe-MMI..."</string>
@@ -451,6 +456,7 @@
<string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Ayikwazi ukwenza amakholi engqungquthela."</string>
<string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Ayikwazi ukunqabela ikholi."</string>
<string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ayikwazi ukukhipha amakholi."</string>
+ <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
<string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ikholi ephuthumayo"</string>
<string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ivula umsakazo..."</string>
<string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ayikho isevisi. Iyazama futhi…"</string>
@@ -512,18 +518,18 @@
<string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ingene Kwimdoi Yokuphinda Ukushayela Okuphuthumayo"</string>
<string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Imodi Yokuphinda Ukushayela Okuphuthumayo"</string>
<string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Uxhumano lwedatha luvimbelwe"</string>
- <plurals name="phone_in_ecm_notification_time">
- <item quantity="one" msgid="4866221796252472622">"Alukho uxhumano lwedatha lwamaminithi angu-<xliff:g id="COUNT">%s</xliff:g>"</item>
- <item quantity="other" msgid="3122217344579273583">"Alukho uxhumano lwamaminithi angu-<xliff:g id="COUNT">%s</xliff:g>"</item>
- </plurals>
- <plurals name="alert_dialog_exit_ecm">
- <item quantity="one" msgid="8060210887681426682">"Ucingo luzoba semodini ye-Emergency Callback amaminithi angu-<xliff:g id="COUNT">%s</xliff:g>. Ngenkathi ikule modi awekho ama-apps asebenzisa ukuxhumana kwedatha angasetshenziswa. Ufuna ukuphuma manje?"</item>
- <item quantity="other" msgid="8617116564023933114">"Ucingo luzoba semodini ye-Emergency Callback amaminithi angu-<xliff:g id="COUNT">%s</xliff:g>. Ngenkathi ikule modi azikho izinhlelo ezisebenzisa ukuxhumana kwedatha ezingasetshenziswa. Ufuna ukuphuma manje?"</item>
- </plurals>
- <plurals name="alert_dialog_not_avaialble_in_ecm">
- <item quantity="one" msgid="2585506997024726599">"Isenzo esikhethiwe asitholakali uma usemodini ye-Emergency Callback. Ucingo luzoba kule modi amaminithi angu-<xliff:g id="COUNT">%s</xliff:g>. Ufuna ukuphuma manje?"</item>
- <item quantity="other" msgid="6115622137771382224">"Isenzo esikhethiwe asitholakali ngenkathi ukumodi ye-Emergency Callback. Ucingo luzoba kule modi amaminithi angu-<xliff:g id="COUNT">%s</xliff:g>. Ufuna ukuphuma manje?"</item>
- </plurals>
+ <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+ <item quantity="one">Alukho uxhumo ledatha amaminthi angu-<xliff:g id="COUNT_1">%s</xliff:g></item>
+ <item quantity="other">Alukho uxhumo ledatha amaminthi angu-<xliff:g id="COUNT_1">%s</xliff:g></item>
+ </plurals>
+ <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+ <item quantity="one">Ifoni izoba kumodi yokushayela emuva yesimo esiphuthumayo amaminithi angu-<xliff:g id="COUNT_1">%s</xliff:g>. Ngenkathi ikule modi azikho izinhlelo zokusebenza ezisebenzisa uxhumo ledatha ezingasetshenziswa. Ufuna ukuphuma manje?</item>
+ <item quantity="other">Ifoni izoba kumodi yokushayela emuva yesimo esiphuthumayo amaminithi angu-<xliff:g id="COUNT_1">%s</xliff:g>. Ngenkathi ikule modi azikho izinhlelo zokusebenza ezisebenzisa uxhumo ledatha ezingasetshenziswa. Ufuna ukuphuma manje?</item>
+ </plurals>
+ <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+ <item quantity="one">Isenzo esikhethiwe asitholakali ngenkathi ikumodi yokushayela emuv ayesimo esiphuthumayo. Ifoni izoba kule modi amaminithi angu-<xliff:g id="COUNT_1">%s</xliff:g>. Ufuna ukuphuma manje?</item>
+ <item quantity="other">Isenzo esikhethiwe asitholakali ngenkathi ikumodi yokushayela emuv ayesimo esiphuthumayo. Ifoni izoba kule modi amaminithi angu-<xliff:g id="COUNT_1">%s</xliff:g>. Ufuna ukuphuma manje?</item>
+ </plurals>
<string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Isenzo esikhethiwe asitholakali ngenkathi usocingweni oluphuthumayo"</string>
<string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Ikhipha Imodi Yokuphinda Ukushaya Okuphuthumayo"</string>
<string name="alert_dialog_yes" msgid="6674268047820703974">"Yebo"</string>
@@ -552,4 +558,9 @@
<string name="sim_label_emergency_calls" msgid="4847699229529306397">"Amakholi aphuthumayo"</string>
<string name="sim_description_emergency_calls" msgid="7535215397212301562">"Ikholi ephuthumayo kuphela"</string>
<string name="sim_description_default" msgid="4778679519938775515">"Ikhadi le-SIM, isilothi: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+ <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Ukufinyeleleka"</string>
+ <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Ikholi ye-Wi-Fi engenayo"</string>
+ <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Ikholi ye-Wi-Fi"</string>
+ <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Thinta futhi ukuze uvule"</string>
+ <string name="message_decode_error" msgid="3456481534066924855">"Kube nephutha ngenkathi kukhishwa ikhodi kumlayezo."</string>
</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 45b984e..67572ed 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -58,4 +58,5 @@
<color name="network_operators_color_primary">#ff263238</color>
<color name="network_operators_color_primary_dark">#ff21272b</color>
+ <color name="emergency_dialer_background">#ff263238</color>
</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index b207be7..1f32b2d 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -153,6 +153,10 @@
<!-- After a CDMA conference call is merged, the swap button should be displayed. -->
<bool name="support_swap_after_merge" translatable="false">true</bool>
+ <!-- Determine whether the voicemail notification is persistent in the notification bar.
+ If true, the voicemail notifications cannot be dismissed from the notification bar. -->
+ <bool name="voicemail_notification_persistent">false</bool>
+
<!-- For IMS video over LTE calls, determines whether video pause signalling is supported. -->
<bool name="support_pause_ims_video_calls" translatable="false">true</bool>
</resources>
diff --git a/res/values/ids.xml b/res/values/ids.xml
new file mode 100644
index 0000000..82a6add
--- /dev/null
+++ b/res/values/ids.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2015 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
+ -->
+
+<resources>
+ <item type="id" name="tag_intent" />
+</resources>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0b8bcef..260de24 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -116,10 +116,16 @@
<!-- Error message for users that aren't allowed to modify Mobile Network settings [CHAR LIMIT=none] -->
<string name="mobile_network_settings_not_available">Cellular network settings are not available for this user</string>
- <!-- GSM Call settings screen, setting option name -->
+ <!-- GSM Call settings screen, setting option name. [CHAR LIMIT=40] -->
<string name="labelGSMMore">GSM call settings</string>
- <!-- CDM Call settings screen, setting option name -->
+ <!-- GSM Call settings screen, setting option name with label indicating the SIM the settings
+ are applied to. [CHAR LIMIT=40] -->
+ <string name="labelGsmMore_with_label">GSM call settings (<xliff:g id="subscriptionlabel" example="T-Mobile">%s</xliff:g>)</string>
+ <!-- CDMA Call settings screen, setting option name -->
<string name="labelCDMAMore">CDMA call settings</string>
+ <!-- CDMA Call settings screen, setting option name with label indicating the SIM the settings
+ are applied to. [CHAR LIMIT=40] -->
+ <string name="labelCdmaMore_with_label">CDMA call settings (<xliff:g id="subscriptionlabel" example="Verizon">%s</xliff:g>)</string>
<!-- Mobile network settings screen, setting option name -->
<string name="apn_settings">Access Point Names</string>
<!-- Label for the "Network settings" screen in the Settings UI -->
@@ -171,6 +177,8 @@
<string name="connection_service_default_label">Built-in connection service</string>
<!-- Call settings screen, setting option name -->
<string name="voicemail">Voicemail</string>
+ <!-- Title of the "Voicemail" settings screen, with a text label identifying which SIM the settings are for. -->
+ <string name="voicemail_settings_with_label">Voicemail (<xliff:g id="subscriptionlabel" example="Mock Carrier">%s</xliff:g>)</string>
<!-- Call forwarding dialog box, voicemail number prefix -->
<string name="voicemail_abbreviated">VM:</string>
<!-- Mobile network settings screen, setting option name -->
@@ -443,7 +451,9 @@
"data roaming" feature turned off. -->
<string name="roaming_reenable_message">You\'ve lost data connectivity because you left your home network with data roaming turned off.</string>
<!-- Mobile network settings screen, dialog message when user selects the Data roaming check box -->
- <string name="roaming_warning">Allow data usage when roaming? Significant charges may apply.</string>
+ <string name="roaming_warning">You may incur significant charges.</string>
+ <!-- Mobile network settings screen, dialog message title when user selects the Data roaming check box -->
+ <string name="roaming_alert_title">Allow data roaming?</string>
<!-- USSD aggregation dialog box: separator strings between messages (new-lines will be added before and after) -->
<string name="ussd_dialog_sep" translatable="false">----------</string>
@@ -1281,6 +1291,11 @@
<string name="sim_label_emergency_calls">Emergency calls</string>
<string name="sim_description_emergency_calls">Emergency calling only</string>
<string name="sim_description_default">SIM card, slot: <xliff:g id="slot_id">%s</xliff:g></string>
+
+ <!-- Title for activity to control accessibility settings such as TTY mode and hearing aid
+ compatability. [CHAR LIMIT=40] -->
+ <string name="accessibility_settings_activity_title">Accessibility</string>
+
<!-- Configuration setting for world mode Format is <true;GID if any to be checked>-->
<string translatable="false" name="config_world_mode"/>
@@ -1298,4 +1313,14 @@
<string name="tty_mode_key">button_tty_mode_key</string>
<!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
<string name="wifi_calling_settings_key">button_wifi_calling_settings_key</string>
+
+ <!-- Hint appearing below a selected action on the emergency dialer telling user to tap again to execute the action [CHAR LIMIT=NONE] -->
+ <string name="emergency_action_launch_hint">Touch again to open</string>
+
+ <!-- Strings for IMAP -->
+
+ <!-- String used in place of a message that could not be properly decoded (e.g. bad base64
+ data was received.) [CHAR LIMIT=none] -->
+ <string name="message_decode_error">There was an error while decoding the message.</string>
+
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 4493739..9d2d47f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -256,11 +256,12 @@
<item name="android:src">@drawable/overflow_menu</item>
</style>
- <style name="EmergencyDialerTheme" parent="@android:style/Theme.Material.Light">
- <item name="dialpad_key_button_touch_tint">@color/dialer_dialpad_touch_tint</item>
- <item name="android:actionBarStyle">@style/TelephonyActionBarStyle</item>
- <item name="android:colorPrimary">@color/dialer_theme_color</item>
- <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
+ <style name="EmergencyDialerTheme" parent="@android:style/Theme.Material.NoActionBar">
+ <item name="android:colorPrimary">@color/emergency_dialer_background</item>
+ <item name="android:colorPrimaryDark">@color/emergency_dialer_background</item>
+ <item name="android:windowBackground">@color/emergency_dialer_background</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
+ <item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
</style>
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
new file mode 100644
index 0000000..a67e2ad
--- /dev/null
+++ b/res/xml/accessibility_settings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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"
+ xmlns:phone="http://schemas.android.com/apk/res/com.android.phone"
+ android:title="@string/accessibility_settings_activity_title">
+
+ <com.android.phone.settings.TtyModeListPreference
+ android:key="@string/tty_mode_key"
+ android:title="@string/tty_mode_option_title"
+ android:summary="@string/tty_mode_option_summary"
+ android:persistent="false"
+ android:entries="@array/tty_mode_entries"
+ android:entryValues="@array/tty_mode_values"/>
+
+ <CheckBoxPreference
+ android:key="button_hac_key"
+ android:title="@string/hac_mode_title"
+ android:persistent="true"
+ android:summary="@string/hac_mode_summary"/>
+
+</PreferenceScreen>
diff --git a/res/xml/call_feature_setting.xml b/res/xml/call_feature_setting.xml
index a6e78e4..6471b16 100644
--- a/res/xml/call_feature_setting.xml
+++ b/res/xml/call_feature_setting.xml
@@ -29,53 +29,7 @@
<PreferenceScreen
android:key="button_voicemail_category_key"
- android:title="@string/voicemail"
- android:persistent="false">
-
- <com.android.phone.settings.VoicemailProviderListPreference
- android:key="button_voicemail_provider_key"
- android:title="@string/voicemail_provider"
- android:summary="@string/sum_voicemail_choose_provider"
- android:defaultValue=""
- android:persistent="true" />
-
- <PreferenceScreen
- android:key="button_voicemail_setting_key"
- android:title="@string/voicemail_settings"
- android:persistent="false">
-
- <!-- Note for all com.android.phone.EditPhoneNumberPreference objects
-
- The last several attributes are for use with the EditText field
- in the dialog. These attributes are forwarded to that field
- when the edittext is created. The attributes include:
- 1. android:singleLine
- 2. android:autoText
- 3. android:background -->
-
- <com.android.phone.EditPhoneNumberPreference
- android:key="button_voicemail_key"
- android:title="@string/voicemail_settings_number_label"
- android:persistent="false"
- android:dialogTitle="@string/voicemail"
- phone:confirmMode="confirm"
- android:singleLine="true"
- android:autoText="false" />
-
- </PreferenceScreen>
-
- <com.android.phone.settings.VoicemailRingtonePreference
- android:key="@string/voicemail_notification_ringtone_key"
- android:title="@string/voicemail_notification_ringtone_title"
- android:persistent="false"
- android:ringtoneType="notification" />
-
- <CheckBoxPreference
- android:key="@string/voicemail_notification_vibrate_key"
- android:title="@string/voicemail_notification_vibrate_when_title"
- android:persistent="true" />
-
- </PreferenceScreen>
+ android:title="@string/voicemail" />
<PreferenceScreen
android:key="button_fdn_key"
@@ -104,48 +58,16 @@
android:persistent="false"
android:summary="@string/auto_retry_mode_summary"/>
- <com.android.phone.settings.TtyModeListPreference
- android:key="@string/tty_mode_key"
- android:title="@string/tty_mode_option_title"
- android:summary="@string/tty_mode_option_summary"
- android:persistent="false"
- android:entries="@array/tty_mode_entries"
- android:entryValues="@array/tty_mode_values"/>
-
- <CheckBoxPreference
- android:key="button_hac_key"
- android:title="@string/hac_mode_title"
- android:persistent="true"
- android:summary="@string/hac_mode_summary"/>
-
- <ListPreference
- android:key="button_dtmf_settings"
- android:title="@string/dtmf_tones_title"
- android:summary="@string/dtmf_tones_summary"
- android:entries="@array/dtmf_tone_entries"
- android:entryValues="@array/dtmf_tone_values"/>
-
<PreferenceScreen
android:key="button_gsm_more_expand_key"
android:title="@string/labelGSMMore"
android:summary="@string/sum_gsm_call_settings"
- android:persistent="false">
-
- <intent android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.phone"
- android:targetClass="com.android.phone.GsmUmtsCallOptions"/>
-
- </PreferenceScreen>
+ android:persistent="false" />
<PreferenceScreen
android:key="button_cdma_more_expand_key"
android:title="@string/labelCDMAMore"
android:summary="@string/sum_cdma_call_settings"
- android:persistent="false">
+ android:persistent="false" />
- <intent android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.phone"
- android:targetClass="com.android.phone.CdmaCallOptions"/>
-
- </PreferenceScreen>
</PreferenceScreen>
diff --git a/res/xml/voicemail_settings.xml b/res/xml/voicemail_settings.xml
index f4679e5..a7d5fb4 100644
--- a/res/xml/voicemail_settings.xml
+++ b/res/xml/voicemail_settings.xml
@@ -15,9 +15,50 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:phone="http://schemas.android.com/apk/res/com.android.phone"
android:title="@string/voicemail">
- <!-- Temporary placeholder until prefs are migrated from Call Settings. -->
- <Preference android:title="@string/voicemail" />
+ <com.android.phone.settings.VoicemailProviderListPreference
+ android:key="button_voicemail_provider_key"
+ android:title="@string/voicemail_provider"
+ android:summary="@string/sum_voicemail_choose_provider"
+ android:defaultValue=""
+ android:persistent="true" />
+
+ <PreferenceScreen
+ android:key="button_voicemail_setting_key"
+ android:title="@string/voicemail_settings"
+ android:persistent="false">
+
+ <!-- Note for all com.android.phone.EditPhoneNumberPreference objects
+
+ The last several attributes are for use with the EditText field
+ in the dialog. These attributes are forwarded to that field
+ when the edittext is created. The attributes include:
+ 1. android:singleLine
+ 2. android:autoText
+ 3. android:background -->
+
+ <com.android.phone.EditPhoneNumberPreference
+ android:key="button_voicemail_key"
+ android:title="@string/voicemail_settings_number_label"
+ android:persistent="false"
+ android:dialogTitle="@string/voicemail"
+ phone:confirmMode="confirm"
+ android:singleLine="true"
+ android:autoText="false" />
+
+ </PreferenceScreen>
+
+ <com.android.phone.settings.VoicemailRingtonePreference
+ android:key="@string/voicemail_notification_ringtone_key"
+ android:title="@string/voicemail_notification_ringtone_title"
+ android:persistent="false"
+ android:ringtoneType="notification" />
+
+ <CheckBoxPreference
+ android:key="@string/voicemail_notification_vibrate_key"
+ android:title="@string/voicemail_notification_vibrate_when_title"
+ android:persistent="true" />
</PreferenceScreen>
diff --git a/sip/res/values-af/strings.xml b/sip/res/values-af/strings.xml
index b5395fc..0a3a023 100644
--- a/sip/res/values-af/strings.xml
+++ b/sip/res/values-af/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Internetoproep-instellings"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Internetoproep-rekeninge (SIP-rekeninge)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-instellings"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-rekeninge"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Rekeninge"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Ontvang inkomende oproepe"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Verminder batterylewe"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Gebruik internetoproepe"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Gebruik internetoproepe (net Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Gebruik meer batterykrag"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Gebruik SIP-oproepe"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Gebruik SIP-oproepe (net Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Vir alle oproepe wanneer datanetwerk beskikbaar is"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Net vir internetoproepe"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Vra vir elke oproep"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Net vir SIP-oproepe"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Vir alle oproepe"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Maak oproep"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Gebruik internetoproep-rekening:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Gebruik altyd om internetoproepe te maak"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Jy kan verander watter internetoproep-rekening by verstek gebruik word vanaf die Foon > Instellings > Internetoproep-instellings > Rekeningeskerm."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Selfoonoproep"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetoproep"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Geen internetoproep-rekening nie"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Daar is geen internetoproep-rekeninge op die selfoon nie. Wil jy nou een byvoeg?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Voeg by"</string>
<string name="add_sip_account" msgid="800843669753980091">"Voeg rekening by"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Verwyder rekening"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-rekeninge"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Sluit die profiel"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Goed"</string>
<string name="close_profile" msgid="3122414058856309881">"Maak toe"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primêre rekening. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Gaan tans status na …"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registreer tans …"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Probeer steeds …"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Poortnommer"</string>
<string name="transport_title" msgid="889155457465372527">"Vervoertipe"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Stuur hou lewendig"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Stel as primêre rekening"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Gebruik vir uitgaande oproepe"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Opsionele instellings"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Stawinggebruikernaam"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Gebruikernaam gebruik vir stawing"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Raak om almal te versteek"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> word vereis en kan nie leeg wees nie."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Poortnommer moet tussen 1000 en 65534 wees."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Geen internetverbinding nie"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Geen Wi-Fi-verbinding nie"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Gaan eers jou internetverbinding na om \'n internetoproep te maak."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Jy moet aan \'n Wi-Fi-netwerk gekoppel wees vir internetoproepe (gebruik Wi-Fi- en netwerkinstellings)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetoproepe word nie gesteun nie"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Gaan eers jou internetverbinding na om \'n SIP-oproep te maak."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Jy moet aan \'n Wi-Fi-netwerk gekoppel wees om SIP-oproepe te maak (gebruik die Draadlose en netwerkinstellings)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-oproepe word nie gesteun nie"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Outomaties"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Stuur altyd"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Ingeboude internetoproepe"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Ingeboude SIP-oproepe"</string>
</resources>
diff --git a/sip/res/values-am/strings.xml b/sip/res/values-am/strings.xml
index 1043466..33afdda 100644
--- a/sip/res/values-am/strings.xml
+++ b/sip/res/values-am/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"የበይነመረብ ጥሪ ቅንብሮች"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"የበይነመረብ ጥሪ (SIP) መለያዎች"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ቅንብሮች"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"የSIP መለያዎች"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"መለያዎች"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ገቢ ጥሪዎች ተቀበል"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"የባትሪ ህይወት ይቀንሳል"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"የበየነ መረብ ጥሪ ተጠቀም"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"የበይነመረብ ጥሪ (Wi-Fi ብቻ) ተጠቀም"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ተጨማሪ የባትሪ ዕድሜን ይጠቀማል"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"የSIP መደወያን ተጠቀም"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"የSIP መደወያን ተጠቀም (Wi-Fi ብቻ)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"ለሁሉም ጥሪዎች የውሂብ አውታረመረብ ሲኖር"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"ለበይነመረብ ጥሪዎች ብቻ"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ለእያንዳንዱ ጥሪ ጠይቅ"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ለSIP ጥሪዎች ብቻ"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ለሁሉም ጥሪዎች"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"ጥሪ አድርግ"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ይህንን የበይነመረብ መደወያ መለያ ይጠቀሙ፦"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"ሁልጊዜ የበይነመረብ ጥሪዎችን ለማድረግ ይጠቀሙ"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"የትኛውን የበየነመረብ የመደወያ መለያ ለመጠቀም በነባሪ ከስልኩ > ቅንብሮች > የበየነመረብ ቅንብሮች > የመለያዎች ማሳያ መለወጥ ይችላሉ።"</string>
- <string name="pstn_phone" msgid="9596332924895028">"የተንቀሳቃሽ ስልክ ጥሪ"</string>
- <string name="internet_phone" msgid="4444458244774004247">"የበይነመረብ ጥሪ"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ምንም የበይነመረብ ጥሪ መለያ የለም"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"በዚህ ስልክ ላይ ምንም የበየነ መረብ መደወያ መለያዎች የሉም። አሁን አንድ ማከል ይፈልጋሉ?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"ያክሉ"</string>
<string name="add_sip_account" msgid="800843669753980091">"መለያ ያክሉ"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"መለያ ያስወግዱ"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP መለያዎች"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"መገለጫውን ይዝጉ"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"እሺ"</string>
<string name="close_profile" msgid="3122414058856309881">"ዝጋ"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"ተቀዳሚ መለያ፦ <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"ሁኔታን በመመልከት ላይ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"በመመዝገብ ላይ…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"አሁንም በመሞከር ላይ…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"ወደብ ቁጥር"</string>
<string name="transport_title" msgid="889155457465372527">"የማጓጓዣ አይነት"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"keep-alive ላክ"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"እንደ ቀዳሚ መለያ አዘጋጅ"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"ለወደ ውጪ ጥሪዎች ይጠቅማል"</string>
<string name="advanced_settings" msgid="6622996380747040711">"አማራጭ ቅንብሮች"</string>
<string name="auth_username_title" msgid="8262491689004708265">"የማረጋገጫ የተጠቃሚ ስም"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ተጠቃሚ ስም ለማረጋገጫ ተጠቅሟል"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"ሁሉንም ለመደበቅ ▽ ይንኩ"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ይጠይቃል፣ ባዶ መተው አይቻልም።"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"የወደብ ቁጥር በ1000 እና 65534 ውስጥ መሆን አለበት።"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"ምንም የበይነመረብ ግንኙነት የለም"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"ምንም የWi-Fi ግንኙነት የለም"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"የበይነመረብ ጥሪ ለማድረግ መጀመሪያ የበይነመረብ ግንኙነትዎን ይፈትሹ።"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"ለበይነመረብ ጥሪዎች ወደ Wi-Fi አውታረ መረብ ማገናኘት አለብዎ (የገመድ አልባና አውታረ መረብ ቅንብሮችን ይጠቀሙ)።"</string>
- <string name="no_voip" msgid="1600568347241920141">"የበይነመረብ ጥሪ አይደገፍም"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"የSIP ጥሪ ለማድረግ፣ በመጀመሪያ የበይነመረብ ግንኙነትዎን ይፈትሹ።"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP ጥሪዎችን ለማድረግ ወደ Wi-Fi አውታረ መረብ መገናኘት ያስፈልግዎታል (ሽቦ አልባ እና አውታረ መረብ ቅንብሮችን ይጠቀሙ)።"</string>
+ <string name="no_voip" msgid="3038021971231952704">"የSIP መደወያ አይደገፍም"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"ራስ ሰር"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"ሁልጊዜ ላክ"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"አብሮ የተገነባ የበይመረብ ጥሪ"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"ውስጠ ግንቡ SIP መደወያ"</string>
</resources>
diff --git a/sip/res/values-ar/strings.xml b/sip/res/values-ar/strings.xml
index 40cd8cd..6c4be12 100644
--- a/sip/res/values-ar/strings.xml
+++ b/sip/res/values-ar/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"إعدادات المكالمة عبر الانترنت"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"حسابات المكالمة عبر الانترنت ( SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"إعدادات SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"حسابات SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"الحسابات"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"تلقي المكالمات الواردة"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"يقلل من عمر البطارية"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"استخدام الاتصال عبر الإنترنت"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"استخدام الاتصال عبر الإنترنت (Wi-Fi فقط)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"تستهلك المزيد من عمر البطارية"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"استخدام اتصالات SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"استخدام اتصالات SIP (Wi-Fi فقط)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"لكل المكالمات عند توفر شبكة البيانات"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"فقط للمكالمات عبر الإنترنت"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"السؤال عند كل مكالمة"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"لاتصالات SIP فقط"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"لكل المكالمات"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"إجراء اتصال"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"استخدام حساب الاتصال عبر الإنترنت:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"الاستخدام دومًا لإجراء مكالمات عبر الإنترنت"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"يمكنك تغيير حساب مكالمات الإنترنت الذي تريد استخدامه افتراضيًا من الهاتف > إعدادات > إعدادات مكالمات لإنترنت > شاشة الحسابات."</string>
- <string name="pstn_phone" msgid="9596332924895028">"اتصال عبر هاتف خلوي"</string>
- <string name="internet_phone" msgid="4444458244774004247">"مكالمة عبر الإنترنت"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ليس هناك حساب اتصال عبر الإنترنت"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"لا توجد حسابات مكالمات الإنترنت على هذا الهاتف. هل تريد إضافة حساب الآن؟"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"إضافة"</string>
<string name="add_sip_account" msgid="800843669753980091">"إضافة حساب"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"إزالة الحساب"</string>
<string name="sip_account_list" msgid="5610858485304821480">"حسابات SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"إغلاق الملف الشخصي"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"موافق"</string>
<string name="close_profile" msgid="3122414058856309881">"إغلاق"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"حساب أساسي. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"جارٍ فحص الحالة…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"جارٍ التسجيل…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"لا تزال المحاولة مستمرة…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"رقم المنفذ"</string>
<string name="transport_title" msgid="889155457465372527">"نوع النقل"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"إرسال رسالة للتحقق من الاتصال"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"تعيين كحساب أساسي"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"مستخدم للمكالمات الصادرة"</string>
<string name="advanced_settings" msgid="6622996380747040711">"الإعدادات الاختيارية"</string>
<string name="auth_username_title" msgid="8262491689004708265">"اسم المستخدِم للمصادقة"</string>
<string name="auth_username_summary" msgid="941160241371436473">"اسم المستخدِم المستخدَم للمصادقة"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ المس لإخفاء الكل"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> مطلوب ولا يمكن تركه فارغًا."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"يجب أن يكون رقم المنفذ ما بين 1000 و65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"لا اتصال بالإنترنت"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"ليس هناك اتصال Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"لإجراء مكالمة إنترنت، تحقق من اتصالك بالإنترنت أولاً."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"يلزمك الاتصال بشبكة Wi-Fi لإجراء مكالمات عبر الإنترنت (استخدم إعدادات اللاسلكي والشبكة)."</string>
- <string name="no_voip" msgid="1600568347241920141">"الاتصال عبر الإنترنت غير معتمد"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"لإجراء اتصال SIP، تحقق من الاتصال بالإنترنت أولاً."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"يجب عليك الاتصال بشبكة Wi-Fi لإجراء اتصالات SIP (استخدم إعدادات \"الشبكة واللاسلكي\")."</string>
+ <string name="no_voip" msgid="3038021971231952704">"اتصالات SIP غير متاحة"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"تلقائي"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"الإرسال دائمًا"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"اتصال مدمج بالإنترنت"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"اتصالات SIP مدمجة"</string>
</resources>
diff --git a/sip/res/values-bg/strings.xml b/sip/res/values-bg/strings.xml
index 58b0bf3..0b511c5 100644
--- a/sip/res/values-bg/strings.xml
+++ b/sip/res/values-bg/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Настройки за обаждания през интернет"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Профили за обаждане през интернет (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Настройки за SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Профили за SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Профили"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Получаване на входящи обаждания"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Намалява живота на батерията"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Използване на интернет за обаждания"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Използване на интернет за обаждания (само при Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Изразходва повече от батерията"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Използване на услуга за обаждане през SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Използване на услуга за обаждане през SIP (само при Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"За всички обаждания, когато е налице мрежа за данни"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Само за обаждания през интернет"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Извеждане на запитване за всяко обаждане"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Само за обаждания през SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"За всички обаждания"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Провеждане на обаждане"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Използване на профил за обажданe през интернет:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Използване винаги за провеждане на обаждания през интернет"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Можете да промените кой профил да се използва по подразбиране за обаждане през интернет от екрана „Телефон“ > „Настройки“ > „Настройки за интернет обаждания“ > „Профили“."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Обаждане по клетъчен телефон"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Обаждане през интернет"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Няма профил за обаждане през интернет"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Няма профили за обаждане през интернет на този телефон. Искате ли да добавите сега?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Добавяне"</string>
<string name="add_sip_account" msgid="800843669753980091">"Добавяне на профил"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Премахване на профил"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Профили за SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Затваряне на потребителския профил"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ОK"</string>
<string name="close_profile" msgid="3122414058856309881">"Затваряне"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Основен профил. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Състоянието се проверява..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Регистрира се…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Опитите продължават…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Номер на порта"</string>
<string name="transport_title" msgid="889155457465372527">"Тип транспорт"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Изпращане на съобщение за проверка на връзката"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Задаване като основен профил"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Използва се за изходящи обаждания"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Незадължителни настройки"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Потребителско име за удостоверяване"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Потребителско име, използвано за удостоверяване"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Докоснете за скриване на всички"</string>
<string name="empty_alert" msgid="6659484914371384024">"Полето „<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>“ е задължително и трябва да се попълни."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Номерът на порта трябва да е между 1000 и 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Няма връзка с интернет"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Няма връзка с Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"За да проведете обаждане през интернет, първо проверете връзката си с мрежата."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"За обаждане през интернет трябва да сте свързани с Wi-Fi мрежа (използвайте настройките в „Кабелни и безжични мрежи“)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Обаждането през интернет не се поддържа"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"За да осъществите обаждане през SIP, първо проверете връзката си с интернет."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"За да се обаждате през SIP, трябва да сте свързани с Wi-Fi мрежа (използвайте настройките „Кабелни и безжични мрежи“)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Обажданията през SIP не се поддържат"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Автоматично"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Изпращане винаги"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Вградена услуга за обаждане през интернет"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Вградена услуга за обаждане през SIP"</string>
</resources>
diff --git a/sip/res/values-bn-rBD/strings.xml b/sip/res/values-bn-rBD/strings.xml
index adeab22..3cc1e6e 100644
--- a/sip/res/values-bn-rBD/strings.xml
+++ b/sip/res/values-bn-rBD/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"ইন্টারনেট কল সেটিংস"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"ইন্টারনেট কলিং (SIP) অ্যাকাউন্টগুলি"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP সেটিংস"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP অ্যাকাউন্টগুলি"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"অ্যাকাউন্টগুলি"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"আগত কলগুলি গ্রহণ করুন"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ব্যাটারি স্থায়িত্ব কম করে"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ইন্টারনেট কলিং ব্যবহার করুন"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ইন্টারনেট কলিং ব্যবহার করুন (শুধুমাত্র Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"আরো বেশি ব্যাটারি লাইফ ব্যবহার করে"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP কলিং ব্যবহার করুন"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP কলিং ব্যবহার করুন (শুধুমাত্র Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"যখন ডেটা নেটওয়ার্ক উপলব্ধ তখন সব কলের জন্য"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"শুধুমাত্র ইন্টারনেট কলের জন্য"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"প্রতিটি কলের আগে জিজ্ঞাসা করুন"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"শুধুমাত্র SIP কলগুলির জন্য"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"সব কলের জন্য"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"কল করুন"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ইন্টারনেট কলিং অ্যাকাউন্ট ব্যবহার করুন:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"সবসময় ইন্টারনেট কল করতে ব্যবহার করুন"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"ডিফল্ট হিসাবে আপনি কোন্ ইন্টারনেট কলিং অ্যাকাউন্ট ব্যবহার করতে চান তা ফোন > সেটিংস > ইন্টারনেট কল সেটিংস > অ্যাকাউন্টের স্ক্রীন থেকে পরিবর্তন করতে পারবেন৷"</string>
- <string name="pstn_phone" msgid="9596332924895028">"সেল ফোন কল"</string>
- <string name="internet_phone" msgid="4444458244774004247">"ইন্টারনেট কল"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"কোনো ইন্টারনেট কলিং অ্যাকাউন্ট নেই"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"এই ফোনে কোনো ইন্টারনেট কলিং অ্যাকাউন্ট নেই। আপনি কি এখন একটি অ্যাকাউন্ট যোগ করতে চান?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"জুড়ুন"</string>
<string name="add_sip_account" msgid="800843669753980091">"অ্যাকাউন্ট যোগ করুন"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"অ্যাকাউন্ট সরান"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP অ্যাকাউন্টগুলি"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"প্রোফাইলটি বন্ধ করুন"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ঠিক আছে"</string>
<string name="close_profile" msgid="3122414058856309881">"বন্ধ করুন"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"প্রাথমিক অ্যাকাউন্ট। <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"স্থিতি পরীক্ষা করা হচ্ছে ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"নিবন্ধীকরণ চলছে..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"এখনও চেষ্টা করছে..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"পোর্ট নম্বর"</string>
<string name="transport_title" msgid="889155457465372527">"পরিবহনের ধরন"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"সক্রিয়-রাখুন অনুরোধ পাঠান"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"প্রাথমিক অ্যাকাউন্ট হিসাবে সেট করুন"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"বহির্গামী কলগুলির জন্য ব্যবহৃত"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ঐচ্ছিক সেটিংস"</string>
<string name="auth_username_title" msgid="8262491689004708265">"প্রমাণীকরণের ব্যবহারকারীর নাম"</string>
<string name="auth_username_summary" msgid="941160241371436473">"প্রমাণীকরণের জন্য ব্যবহৃত ব্যবহারকারী নাম"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ সবকিছু লুকানোর জন্য স্পর্শ করুন"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> প্রয়োজনীয় এবং এটিকে ফাঁকা রাখা যাবে না৷"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"পোর্ট নম্বরটিকে ১০০০ ও ৬৫৫৩৪ এর মধ্যে হতে হবে৷"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"কোনো ইন্টারনেট সংযোগ নেই"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"কোনো Wi-Fi সংযোগ নেই"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"ইন্টারনেট কল করার জন্য প্রথমে আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন।"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"ইন্টারনেট কলগুলি করার জন্য আপনাকে একটি Wi-Fi নেটওয়ার্কের সাথে সংযুক্ত হতে হবে (ওয়্যারলেস & নেটওয়ার্ক সেটিংস ব্যবহার করুন)৷"</string>
- <string name="no_voip" msgid="1600568347241920141">"ইন্টারনেট কলিং সমর্থিত নয়"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"একটি SIP কল করতে প্রথমে আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন৷"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP কলগুলি করার জন্য আপনাকে একটি Wi-Fi নেটওয়ার্কের সাথে সংযুক্ত হতে হবে (ওয়ারলেস নেটওয়ার্ক সেটিংস ব্যবহার করুন)৷"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP কলিং সমর্থিত নয়"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"স্বয়ংক্রিয়"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"সবসময় পাঠান"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"বিল্ট-ইন ইন্টারনেট কলিং"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"অন্তর্নির্মিত SIP কলিং"</string>
</resources>
diff --git a/sip/res/values-ca/strings.xml b/sip/res/values-ca/strings.xml
index 805f4b4..a744ccb 100644
--- a/sip/res/values-ca/strings.xml
+++ b/sip/res/values-ca/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Configuració de les trucades per Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Comptes per a trucades per Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Configuració de SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Comptes SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Comptes"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Rep trucades entrants"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Redueix la durada de la bateria."</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Trucades per Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Trucades per Internet (només Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Fa servir més bateria."</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Ús de les trucades SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Ús de les trucades SIP (només Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Per a totes les trucades quan hi hagi xarxes de dades disponibles"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Només trucades per Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Pregunta cada vegada"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Només per a trucades SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Per a totes les trucades"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Fes una trucada"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Utilitza el compte per a trucades per Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Utilitza-ho sempre per fer trucades per Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Per canviar el compte de trucades per Internet que vols utilitzar de manera predeterminada, vés a Telèfon > Configuració > Configuració de trucades per Internet > Comptes."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Trucada amb telèfon mòbil"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Trucada per Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"No hi ha cap compte per a trucades per Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"En aquest telèfon no hi ha comptes de trucades per Internet. Vols afegir-n\'hi un?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Afegeix"</string>
<string name="add_sip_account" msgid="800843669753980091">"Afegeix un compte"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Suprimeix el compte"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Comptes SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Tanca el perfil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"D\'acord"</string>
<string name="close_profile" msgid="3122414058856309881">"Tanca"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Compte principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"S\'està comprovant l\'estat..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"S\'està registrant..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Encara s\'està provant..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Número de port"</string>
<string name="transport_title" msgid="889155457465372527">"Tipus de transport"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Envia mantenir en línia"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Defineix com a compte principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilitzada per a trucades sortints"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Configuració opcional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nom d\'usuari per a l\'autenticació"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nom d\'usuari utilitzat per a l\'autenticació"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toca per amagar-ho tot."</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> és obligatori i no es pot deixar en blanc."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"El número de port hauria d\'estar entre 1000 i 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"No hi ha connexió a Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"No hi ha connexió Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Per fer una trucada per Internet, primer comprova la connexió a Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Has d\'estar connectat a una xarxa Wi-Fi per fer trucades per Internet (utilitza la configuració Connexions sense fil i xarxa)."</string>
- <string name="no_voip" msgid="1600568347241920141">"No s\'admeten les trucades per Internet"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Per fer una trucada SIP, comprova la connexió a Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Per fer i rebre trucades SIP, has d\'estar connectat a una xarxa Wi-Fi (fes servir la configuració Connexions sense fil i xarxes)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Les trucades SIP no són compatibles."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automàtic"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Envia sempre"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Trucades per Internet integrades"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Trucades SIP integrades"</string>
</resources>
diff --git a/sip/res/values-cs/strings.xml b/sip/res/values-cs/strings.xml
index 416aecb..7d66537 100644
--- a/sip/res/values-cs/strings.xml
+++ b/sip/res/values-cs/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Nastavení internetového volání"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Účty pro internetové hovory (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Nastavení protokolu SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Účty SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Účty"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Přijímat příchozí hovory"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Snižuje výdrž baterie"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Použít internetové volání"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Používat internetové volání (jen přes Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Více vybíjí baterii"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Použít volání SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Použít volání SIP (pouze Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Pro všechny hovory, pokud je k dispozici datová síť"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Pouze pro internetové hovory"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Pokaždé se zeptat"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Pouze pro volání SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Pro všechny hovory"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Uskutečnit hovor"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Použít účet pro internetové hovory:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Vždy používat pro internetové hovory"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Výchozí účet pro internetové hovory můžete změnit na obrazovce Telefon > Nastavení > Nastavení internetových hovorů > Účty."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Hovor z mobilního telefonu"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetový hovor"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Žádný účet pro internetové hovory:"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"V tomto telefonu není žádný účet pro internetové volání. Chcete jej nyní vytvořit?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Přidat"</string>
<string name="add_sip_account" msgid="800843669753980091">"Přidat účet"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Odebrat účet"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Účty SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Zavřít profil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Zavřít"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primární účet. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Kontrola stavu..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrace…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Probíhají další pokusy…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Číslo portu"</string>
<string name="transport_title" msgid="889155457465372527">"Typ přenosu"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Odesílat zprávy pro zachování připojení"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Nastavit jako primární účet"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Použito pro odchozí hovory"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Nepovinná nastavení"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Ověřovací uživatelské jméno"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Uživatelské jméno používané k ověření"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Výběrem této položky skryjete všechna nastavení"</string>
<string name="empty_alert" msgid="6659484914371384024">"Pole <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je povinné. Nelze je ponechat prázdné."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Číslo portu by mělo být od 1000 do 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Bez internetu"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Připojení Wi-Fi není k dispozici"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Chcete-li uskutečnit internetový hovor, zkontrolujte, zda jste připojeni k internetu."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Abyste mohli uskutečnit internetový hovor, musíte být připojeni k síti Wi-Fi (použijte sekci Nastavení bezdrátového připojení a sítě)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetové hovory nejsou podporovány"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Chcete-li uskutečnit volání SIP, nejdříve si zkontrolujte připojení k internetu."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Chcete-li použít volání SIP, musíte být připojeni k síti Wi-Fi (použijte nastavení Bezdrátová připojení a sítě)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Volání SIP není podporováno."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automaticky"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Odesílat vždy"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Vestavěné internetové volání"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Vestavěné volání SIP"</string>
</resources>
diff --git a/sip/res/values-da/strings.xml b/sip/res/values-da/strings.xml
index ed9dbd8..628a677 100644
--- a/sip/res/values-da/strings.xml
+++ b/sip/res/values-da/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Indstillinger for internetopkald"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Konti til internetopkald (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-indstillinger"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-konti"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Konti"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Modtag indgående opkald"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reducerer batteriets levetid"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Benyt internetopkald"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Benyt internetopkald (kun Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Bruger mere batteri"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Anvend SIP-opkald"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Anvend SIP-opkald (kun Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Gælder alle opkald ved tilgængeligt datanetværk"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Kun til internetopkald"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Spørg ved hvert opkald"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Kun for SIP-opkald"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Gælder alle opkald"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Foretag opkald"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Benyt internetopkaldskonto:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Benyt altid til at foretage internetopkald"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Du kan ændre, hvilken internetopkaldskonto der skal bruges som standard, ved at gå til Telefon > Indstillinger > Indstillinger for internetopkald > skærmen Konti."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobiltelefonopkald"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetopkald"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ingen internetopkaldskonto"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Der er ingen internetopkaldskonti på denne telefon. Vil du tilføje en nu?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Tilføj"</string>
<string name="add_sip_account" msgid="800843669753980091">"Tilføj konto"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Fjern konto"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-konti"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Luk profilen"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Luk"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primær konto. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Tjekker status..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrerer..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Forsøger stadig..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Portnummer"</string>
<string name="transport_title" msgid="889155457465372527">"Transporttype"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Send keepalive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Angiv som primær konto"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Bruges til udgående opkald"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Valgfri indstillinger"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Brugernavn til godkendelse"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Brugernavn bruges til godkendelse"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tryk for at skjule alle"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> skal udfyldes. Feltet må ikke være tomt."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Portnummeret skal være mellem 1000 og 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Ingen internetforbindelse"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Ingen Wi-Fi-forbindelse"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Kontrollér din internetforbindelse, før du foretager et internetopkald."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Du skal have forbindelse til et Wi-Fi-netværk for at kunne foretage internetopkald (brug Indstillinger for trådløs og netværk)"</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetopkald understøttes ikke"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Før du foretager et SIP-opkald, skal du kontrollere din internetforbindelse."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Du skal have forbindelse til et Wi-Fi-netværk for at foretage SIP-opkald (brug indstillingerne for Trådløst og netværk)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-opkald understøttes ikke."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatisk"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Send altid"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Indbygget internetopkald"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Indbygget SIP-opkald"</string>
</resources>
diff --git a/sip/res/values-de/strings.xml b/sip/res/values-de/strings.xml
index bdfcf10..cc2b857 100644
--- a/sip/res/values-de/strings.xml
+++ b/sip/res/values-de/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Einstellungen für Internetanrufe"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Konten für Internetanrufe (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-Einstellungen"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-Konten"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Konten"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Eingehende Anrufe annehmen"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Verkürzt Akkulaufzeit"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Internetanrufe verwenden"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Internetanruf verwenden (nur WLAN)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Beansprucht den Akku stärker"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-Telefonie nutzen"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-Telefonie nutzen (nur WLAN)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Für alle Anrufe mit verfügbarem Datennetzwerk"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Nur für Internetanrufe"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Bei jedem Anruf fragen"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Nur für SIP-Anrufe"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Für alle Anrufe"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Telefonieren"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Konto für Internetanrufe verwenden:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Immer für Internetanrufe verwenden"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Sie können auf Ihrem Telefon unter \"Einstellungen\" > \"Einstellungen für Internetanrufe\" > \"Konten\" festlegen, welches Konto standardmäßig für Internetanrufe verwendet werden soll."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobiltelefon"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetanruf"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Kein Konto für Internetanrufe"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Auf diesem Telefon befinden sich keine Konten für Internetanrufe. Möchten Sie jetzt ein Konto hinzufügen?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Hinzufügen"</string>
<string name="add_sip_account" msgid="800843669753980091">"Konto hinzufügen"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Konto entfernen"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-Konten"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Profil schließen"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Schließen"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primäres Konto. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Status wird überprüft…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrierung läuft…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Wird weiter versucht…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Portnummer"</string>
<string name="transport_title" msgid="889155457465372527">"Transportart"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Keep-Alive senden"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Als primäres Konto festlegen"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Für ausgehende Anrufe verwendet"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Optionale Einstellungen"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nutzername für die Authentifizierung"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Für die Authentifizierung verwendeter Nutzername"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tippen, um alle auszublenden"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ist ein Pflichtfeld. Es darf nicht leer bleiben."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Portnummer muss zwischen 1000 und 65534 liegen."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Keine Internetverbindung"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Keine WLAN-Verbindung"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Überprüfen Sie zunächst Ihre Internetverbindung, bevor Sie einen Internetanruf tätigen."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Für Internetanrufe ist eine aktive WLAN-Verbindung notwendig. Wählen Sie die entsprechenden Einstellungen unter \"Drahtlos & Netzwerke\"."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetanrufe werden nicht unterstützt"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Überprüfen Sie zunächst Ihre Internetverbindung, um einen SIP-Anruf zu tätigen."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Für SIP-Anrufe ist eine WLAN-Verbindung erforderlich. Wählen Sie die entsprechenden Einstellungen unter \"Drahtlos & Netzwerke\" aus."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-Anrufe werden nicht unterstützt."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatisch"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Immer senden"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Integrierte Internettelefonie"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Integrierte SIP-Telefonie"</string>
</resources>
diff --git a/sip/res/values-el/strings.xml b/sip/res/values-el/strings.xml
index a1c20dd..5f241ae 100644
--- a/sip/res/values-el/strings.xml
+++ b/sip/res/values-el/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Ρυθμίσεις κλήσεων διαδικτύου"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Λογαριασμοί κλήσεων διαδικτύου (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Ρυθμίσεις SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Λογαριασμοί SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Λογαριασμοί"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Λήψη εισερχόμενων κλήσεων"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Μειώνει τη διάρκεια ζωής της μπαταρίας"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Χρήση κλήσεων διαδικτύου"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Χρήση κλήσεων διαδικτύου (μόνο με Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Χρησιμοποιεί περισσότερη μπαταρία"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Χρήση κλήσεων SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Χρήση κλήσεων SIP (μόνο Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Για όλες τις κλήσεις όταν το δίκτυο δεδομένων είναι διαθέσιμο"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Μόνο για κλήσεις διαδικτύου"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Ερώτηση για κάθε κλήση"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Μόνο για κλήσεις SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Για όλες τις κλήσεις"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Πραγματοποίηση κλήσης"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Χρήση λογαριασμού κλήσης διαδικτύου:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Να χρησιμοποιείται πάντα για την πραγματοποίηση κλήσεων"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Μπορείτε να καθορίσετε ποιος λογαριασμός κλήσεων διαδικτύου θα χρησιμοποιείται από προεπιλογή, από τις επιλογές Τηλέφωνο > Ρυθμίσεις > Ρυθμίσεις κλήσεων διαδικτύου > Οθόνη λογαριασμών."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Κλήση από κινητό τηλέφωνο"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Κλήση διαδικτύου"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Δεν υπάρχει λογαριασμός κλήσης διαδικτύου"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Δεν υπάρχουν λογαριασμοί κλήσεων διαδικτύου σε αυτό το τηλέφωνο. Θέλετε να προσθέσετε έναν τώρα;"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Προσθήκη"</string>
<string name="add_sip_account" msgid="800843669753980091">"Προσθήκη λογαριασμού"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Κατάργηση λογαριασμού"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Λογαριασμοί SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Κλείσιμο του προφίλ"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ΟΚ"</string>
<string name="close_profile" msgid="3122414058856309881">"Κλείσιμο"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Κύριος λογαριασμός. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Έλεγχος κατάστασης…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Γίνεται εγγραφή…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Γίνεται ακόμη προσπάθεια…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Αριθμός θύρας"</string>
<string name="transport_title" msgid="889155457465372527">"Τύπος μεταφοράς"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Αποστολή μηνυμάτων \"keep-alive\""</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Ορισμός ως κύριος λογαριασμός"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Χρησιμοποιείται για εξερχόμενες κλήσεις"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Προαιρετικές ρυθμίσεις"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Όνομα χρήστη ελέγχου ταυτότητας"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Όνομα χρήστη που χρησιμοποιείται για έλεγχο ταυτότητας"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▷ Αγγίξτε για απόκρυψη όλων"</string>
<string name="empty_alert" msgid="6659484914371384024">"Το πεδίο <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> είναι υποχρεωτικό και δεν μπορεί να είναι κενό."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Ο αριθμός της θύρας θα πρέπει να είναι μεταξύ 1000 και 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Χωρίς σύνδεση στο διαδίκτυο"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Δεν υπάρχει σύνδεση Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Για να πραγματοποιήσετε μια κλήση διαδικτύου, ελέγξτε πρώτα τη σύνδεσή σας στο διαδίκτυο."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Για τις κλήσεις διαδικτύου πρέπει να είστε συνδεδεμένοι σε δίκτυο Wi-Fi (χρησιμοποιήστε το Ασύρματο και τις Ρυθμίσεις δικτύου)"</string>
- <string name="no_voip" msgid="1600568347241920141">"Μη υποστηριζόμενες κλήσεις διαδικτύου"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Για να πραγματοποιήσετε μια κλήση SIP, ελέγξτε πρώτα τη σύνδεση διαδικτύου."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Για να πραγματοποιήσετε κλήσεις SIP, θα πρέπει να συνδεθείτε σε δίκτυο Wi-Fi (χρησιμοποιήστε τις ρυθμίσεις Ασύρματο & δίκτυο)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Οι κλήσεις SIP δεν υποστηρίζονται"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Αυτόματα"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Να γίνεται πάντα αποστολή"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Ενσωματωμένες κλήσεις διαδικτύου"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Ενσωματωμένη υπηρεσία κλήσεων SIP"</string>
</resources>
diff --git a/sip/res/values-en-rAU/strings.xml b/sip/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..2b8c14a
--- /dev/null
+++ b/sip/res/values-en-rAU/strings.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="sip_settings" msgid="3768482698061677257">"SIP settings"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP accounts"</string>
+ <string name="sip_accounts_title" msgid="2082527045326874519">"Accounts"</string>
+ <string name="sip_receive_calls" msgid="426678617137462173">"Receive incoming calls"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Uses more battery life"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Use SIP calling"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Use SIP calling (Wi-Fi only)"</string>
+ <string name="sip_call_options_entry_1" msgid="7217659161237099900">"For all calls when data network is available"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Only for SIP calls"</string>
+ <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"For all calls"</string>
+ <string name="add_sip_account" msgid="800843669753980091">"Add account"</string>
+ <string name="remove_sip_account" msgid="1367664438506503690">"Remove account"</string>
+ <string name="sip_account_list" msgid="5610858485304821480">"SIP accounts"</string>
+ <string name="saving_account" msgid="5336529880235177448">"Saving the account…"</string>
+ <string name="removing_account" msgid="5537351356808985756">"Removing the account…"</string>
+ <string name="sip_menu_save" msgid="7882219814563869225">"Save"</string>
+ <string name="sip_menu_discard" msgid="2350421645423888438">"Discard"</string>
+ <string name="alert_dialog_close" msgid="1326011828713435134">"Close the profile"</string>
+ <string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
+ <string name="close_profile" msgid="3122414058856309881">"Close"</string>
+ <string name="registration_status_checking_status" msgid="6136793741862200337">"Checking status..."</string>
+ <string name="registration_status_registering" msgid="2677183977796278749">"Registering…"</string>
+ <string name="registration_status_still_trying" msgid="7648151061205513458">"Still trying…"</string>
+ <string name="registration_status_not_receiving" msgid="7620333886153361090">"Not receiving calls."</string>
+ <string name="registration_status_no_data" msgid="2541999976218192413">"Account registration stopped because there is no Internet connection."</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Account registration stopped because there is no Wi-Fi connection."</string>
+ <string name="registration_status_not_running" msgid="514205414303796800">"Account registration unsuccessful."</string>
+ <string name="registration_status_done" msgid="3264961069247314253">"Receiving calls."</string>
+ <string name="registration_status_failed_try_later" msgid="2199970021756384317">"Account registration unsuccessful: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); will try later"</string>
+ <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Account registration unsuccessful: Incorrect username or password."</string>
+ <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Account registration unsuccessful: Check the server name."</string>
+ <string name="third_party_account_summary" msgid="9041060473615403041">"This account is currently in use by the <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> app."</string>
+ <string name="sip_edit_title" msgid="1967247832635750410">"SIP account details"</string>
+ <string name="sip_edit_new_title" msgid="266414118302574305">"SIP account details"</string>
+ <string name="domain_address_title" msgid="1968479941328225423">"Server"</string>
+ <string name="username_title" msgid="6770064611005663470">"Username"</string>
+ <string name="password_title" msgid="5289013731515564295">"Password"</string>
+ <string name="display_name_title" msgid="579241787583079773">"Display name"</string>
+ <string name="proxy_address_title" msgid="6890163365640631841">"Outbound proxy address"</string>
+ <string name="port_title" msgid="6693965912656593862">"Port number"</string>
+ <string name="transport_title" msgid="889155457465372527">"Transport type"</string>
+ <string name="send_keepalive_title" msgid="599627072150501159">"Send keep-alive"</string>
+ <string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
+ <string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
+ <string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
+ <string name="default_preference_summary" msgid="1979249643719483249">"<Not set>"</string>
+ <string name="display_name_summary" msgid="7155076491675565407">"<Same as username>"</string>
+ <string name="optional_summary" msgid="2363105560396317624">"<Optional>"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touch to show all"</string>
+ <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Touch to hide all"</string>
+ <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is required and can\'t be left blank."</string>
+ <string name="not_a_valid_port" msgid="7931422555587011830">"Port number should be within 1000 and 65534."</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"To place a SIP call, check your Internet connection first."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"You need to be connected to a Wi-Fi network for SIP calls (use the Wireless & Network settings)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP calling not supported"</string>
+ <string name="sip_system_decide" msgid="5577696249416700671">"Automatic"</string>
+ <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Always send"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Built-in SIP calling"</string>
+</resources>
diff --git a/sip/res/values-en-rGB/strings.xml b/sip/res/values-en-rGB/strings.xml
index 5839a13..2b8c14a 100644
--- a/sip/res/values-en-rGB/strings.xml
+++ b/sip/res/values-en-rGB/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Internet call settings"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Internet calling (SIP) accounts"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP settings"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP accounts"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Accounts"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Receive incoming calls"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduces battery life"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Use Internet calling"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Use Internet calling (Wi-Fi only)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Uses more battery life"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Use SIP calling"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Use SIP calling (Wi-Fi only)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"For all calls when data network is available"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Only for Internet calls"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Ask for each call"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Only for SIP calls"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"For all calls"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Place call"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Use Internet calling account:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Always use to place Internet calls"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"You can change which Internet calling account to use by default from the Phone > Settings > Internet call settings > Accounts screen."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobile phone call"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internet call"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"No Internet calling account"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"There are no Internet calling accounts on this phone. Do you want to add one now?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Add"</string>
<string name="add_sip_account" msgid="800843669753980091">"Add account"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Remove account"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP accounts"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Close the profile"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Close"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primary account. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Checking status..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registering…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Still trying…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Port number"</string>
<string name="transport_title" msgid="889155457465372527">"Transport type"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Send keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Set as primary account"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Used for outbound calls"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Touch to hide all"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is required and can\'t be left blank."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Port number should be within 1000 and 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"No Internet connection"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"No Wi-Fi connection"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"To make an Internet call, check your Internet connection first."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"You need to be connected to a Wi-Fi network for Internet calls (use the Wireless & Network settings)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internet calling not supported"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"To place a SIP call, check your Internet connection first."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"You need to be connected to a Wi-Fi network for SIP calls (use the Wireless & Network settings)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP calling not supported"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatic"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Always send"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Built-in Internet calling"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Built-in SIP calling"</string>
</resources>
diff --git a/sip/res/values-en-rIN/strings.xml b/sip/res/values-en-rIN/strings.xml
index 5839a13..2b8c14a 100644
--- a/sip/res/values-en-rIN/strings.xml
+++ b/sip/res/values-en-rIN/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Internet call settings"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Internet calling (SIP) accounts"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP settings"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP accounts"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Accounts"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Receive incoming calls"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduces battery life"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Use Internet calling"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Use Internet calling (Wi-Fi only)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Uses more battery life"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Use SIP calling"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Use SIP calling (Wi-Fi only)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"For all calls when data network is available"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Only for Internet calls"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Ask for each call"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Only for SIP calls"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"For all calls"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Place call"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Use Internet calling account:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Always use to place Internet calls"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"You can change which Internet calling account to use by default from the Phone > Settings > Internet call settings > Accounts screen."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobile phone call"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internet call"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"No Internet calling account"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"There are no Internet calling accounts on this phone. Do you want to add one now?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Add"</string>
<string name="add_sip_account" msgid="800843669753980091">"Add account"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Remove account"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP accounts"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Close the profile"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Close"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primary account. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Checking status..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registering…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Still trying…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Port number"</string>
<string name="transport_title" msgid="889155457465372527">"Transport type"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Send keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Set as primary account"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Used for outbound calls"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Touch to hide all"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is required and can\'t be left blank."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Port number should be within 1000 and 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"No Internet connection"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"No Wi-Fi connection"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"To make an Internet call, check your Internet connection first."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"You need to be connected to a Wi-Fi network for Internet calls (use the Wireless & Network settings)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internet calling not supported"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"To place a SIP call, check your Internet connection first."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"You need to be connected to a Wi-Fi network for SIP calls (use the Wireless & Network settings)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP calling not supported"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatic"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Always send"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Built-in Internet calling"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Built-in SIP calling"</string>
</resources>
diff --git a/sip/res/values-es-rUS/strings.xml b/sip/res/values-es-rUS/strings.xml
index a667bc2..8da8d43 100644
--- a/sip/res/values-es-rUS/strings.xml
+++ b/sip/res/values-es-rUS/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Configuración de llamadas por Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Cuentas para llamadas por Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Configuración de SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Cuentas SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Cuentas"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Recibir llamadas entrantes"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduce la vida útil de la batería."</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Usar la llamada por Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Usar la llamada por Internet (solo Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Utiliza más batería"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Utilizar llamadas SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Utilizar llamadas SIP (solo Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Para todas las llamadas cuando la red de datos esté disponible"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Sólo para llamadas por Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Preguntar para cada llamada"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Solo para llamadas SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Para todas las llamadas"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Realizar una llamada"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Usa la cuenta de llamadas por Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Usar siempre para realizar llamadas por Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Para cambiar la cuenta de llamadas por Internet predeterminada, ve a Teléfono > Configuración > Configuración de llamadas de Internet > Cuentas."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Llamada de teléfono celular"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Llamada por Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Sin cuenta de llamadas por Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"No se encuentran cuentas de llamadas por Internet en este teléfono. ¿Deseas agregar una ahora?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Agregar"</string>
<string name="add_sip_account" msgid="800843669753980091">"Agregar cuenta"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Eliminar cuenta"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Cuentas SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Cerrar el perfil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Aceptar"</string>
<string name="close_profile" msgid="3122414058856309881">"Cerrar"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Cuenta principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Comprobando el estado…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrando…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Intento en curso…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Número de puerto"</string>
<string name="transport_title" msgid="889155457465372527">"Tipo de transporte"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Enviar mantenimiento de conexión"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Definir como cuenta principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Se utiliza para llamadas salientes."</string>
<string name="advanced_settings" msgid="6622996380747040711">"Configuración opcional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nombre de usuario de autenticación"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nombre de usuario utilizado para autenticación"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tocar para ocultar todo"</string>
<string name="empty_alert" msgid="6659484914371384024">"El campo <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> es obligatorio y no puede quedar en blanco."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"El número de puerto debe estar dentro de 1000 y 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"No hay conexión a Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"No hay conexión Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Para realizar una llamada por Internet, primero verifica tu conexión a Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Tienes que conectarte a una red Wi-Fi para realizar y recibir llamadas por Internet (usa la configuración de Conexiones inalámbricas y redes)"</string>
- <string name="no_voip" msgid="1600568347241920141">"No se admiten llamadas por Internet"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Para realizar una llamada SIP, primero comprueba que tienes conexión a Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Tienes que estar conectado a una red Wi-Fi para las llamadas SIP (utilizar la configuración de redes inalámbricas)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Llamada SIP no compatible"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automático"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Enviar siempre"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Llamadas por Internet integradas"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Llamadas SIP integradas"</string>
</resources>
diff --git a/sip/res/values-es/strings.xml b/sip/res/values-es/strings.xml
index 5a535f5..73deae6 100644
--- a/sip/res/values-es/strings.xml
+++ b/sip/res/values-es/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Ajustes de llamada por Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Cuentas (SIP) de llamadas por Internet"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Ajustes de SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Cuentas SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Cuentas"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Recibir llamadas"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduce la duración de la batería"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Llamadas por Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Llamadas por Internet (Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consume más batería"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Usar llamadas SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Usar llamadas SIP (solo con Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Para todas las llamadas cuando haya redes de datos disponibles"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Solo para llamadas por Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"En cada llamada"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Solo para llamadas SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"En todas las llamadas"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Hacer llamada"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Usar cuenta de llamada por Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Usar siempre para realizar llamadas de Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Para cambiar la cuenta de llamadas por Internet que quieres usar de forma predeterminada, accede a Teléfono > Ajustes > Ajustes de llamada por Internet > Cuentas."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Llamada de teléfono móvil"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Llamada por Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Sin cuentas de llamada por Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"No hay cuentas de llamadas por Internet en este teléfono. ¿Quieres añadir una cuenta ahora?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Añadir"</string>
<string name="add_sip_account" msgid="800843669753980091">"Añadir cuenta"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Eliminar cuenta"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Cuentas SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Cerrar el perfil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Aceptar"</string>
<string name="close_profile" msgid="3122414058856309881">"Cerrar"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Cuenta principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Comprobando estado..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrando..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Seguimos intentándolo..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Número de puerto"</string>
<string name="transport_title" msgid="889155457465372527">"Tipo de transporte"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Enviar mensajes de mantenimiento de la conexión"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Establecer como cuenta principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Se utiliza para llamadas salientes"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Ajustes opcionales"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nombre de usuario de autenticación"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nombre de usuario utilizado para la autenticación"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tocar para ocultar todo"</string>
<string name="empty_alert" msgid="6659484914371384024">"El campo <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> es obligatorio y no se puede dejar en blanco."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"El número de puerto debe estar comprendido entre 1.000 y 65.534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Sin conexión a Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Sin conexión Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Para hacer una llamada por Internet, comprueba tu conexión a Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Para hacer llamadas por Internet, debes estar conectado a una red Wi-Fi (usa la opción Conexiones inalámbricas y redes)."</string>
- <string name="no_voip" msgid="1600568347241920141">"No se admiten llamadas por Internet"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Antes de realizar una llamada SIP, comprueba tu conexión a Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Debes estar conectado a una red Wi-Fi para realizar llamadas SIP (usa la opción de conexiones y redes inalámbricas)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Llamada SIP no admitida"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automático"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Enviar siempre"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Llamadas por Internet integradas"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Llamadas SIP integradas"</string>
</resources>
diff --git a/sip/res/values-et-rEE/strings.xml b/sip/res/values-et-rEE/strings.xml
index bce0282..cc14644 100644
--- a/sip/res/values-et-rEE/strings.xml
+++ b/sip/res/values-et-rEE/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Interneti-kõne seaded"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Interneti-kõne (SIP) kontod"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-i seaded"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-kontod"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Kontod"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Võta vastu sissetulevad kõned"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Vähendab aku kestvust"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Interneti-kõne kasutamine"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Interneti-kõne kasutamine (ainult WiFi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Kasutab rohkem akut"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-kõnede tegemine"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-kõnede tegemine (ainult WiFi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Kõikide kõnede puhul, kui andmesidevõrk on saadaval"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Ainult Interneti-kõnede jaoks"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Küsi iga kõne puhul"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Ainult SIP-kõnede tegemiseks"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Kõikide kõnede jaoks"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Kõne valimine"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Interneti-kõne konto kasutamine:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Kasuta alati Interneti-kõnede tegemiseks"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Vaikimisi kasutatava Interneti-kõne konto muutmiseks tehke järgmised valikud: Telefon > Seaded > Interneti-kõne seaded > Kontod."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobiiltelefonikõne"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Interneti-kõne"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Interneti-kõnede kontot ei ole"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Selles telefonis pole ühtegi Interneti-kõne kontot. Kas soovite praegu ühe lisada?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Lisa"</string>
<string name="add_sip_account" msgid="800843669753980091">"Lisa konto"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Eemalda konto"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-kontod"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Profiili sulgemine"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Sule"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Peamine konto. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Oleku kontrollimine ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registreerimine ..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Registreerimine jätkub ..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Pordi number"</string>
<string name="transport_title" msgid="889155457465372527">"Protokolli tüüp"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Saada ühenduse hoidmise eelistused"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Määra peamiseks kontoks"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Kasutatakse väljuvate kõnede jaoks"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Valikulised seaded"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Autentimise kasutajanimi"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Autentimiseks kasutatav kasutajanimi"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Puudutage kõige peitmiseks"</string>
<string name="empty_alert" msgid="6659484914371384024">"Väli <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> on kohustuslik, seda ei saa tühjaks jätta."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Pordi number peab jääma vahemikku 1000 kuni 65 534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Interneti-ühenduseta"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"WiFi-ühendust ei ole"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Interneti-kõne tegemiseks kontrollige esmalt Interneti-ühendust."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Interneti-kõnede jaoks peate olema ühendatud WiFi-võrguga (kasutage traadita ühenduse ja võrgu seadeid)"</string>
- <string name="no_voip" msgid="1600568347241920141">"Interneti-kõnesid ei toetata"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP-kõne tegemiseks kontrollige esmalt Interneti-ühendust."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP-kõnede tegemiseks peate olema ühendatud WiFi-võrku (kasutage juhtmeta seadeid ja võrgustikuseadeid)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-kõnede tegemist ei toetata"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automaatne"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Saada alati"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Sisseehitatud Interneti-kõne funktsioonid"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Sisseehitatud SIP-kõnede tegemine"</string>
</resources>
diff --git a/sip/res/values-eu-rES/strings.xml b/sip/res/values-eu-rES/strings.xml
index 3607460..c62a29f 100644
--- a/sip/res/values-eu-rES/strings.xml
+++ b/sip/res/values-eu-rES/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Internet bidezko deien ezarpenak"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Internet bidez deitzeko (SIP) kontuak"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ezarpenak"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP kontuak"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Kontuak"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Jaso sarrerako deiak"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Bateriaren iraupena murrizten du"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Erabili Internet bidezko deiak"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Erabili Internet bidezko deiak (Wi-Fi soilik)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Bateria gehiago erabiltzen du"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Erabili SIP deiak"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Erabili SIP deiak (Wi-Fi bidez soilik)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Dei guztietan datu-sarea erabilgarri dagoenean"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Internet bidezko deietan soilik"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Galdetu deitzen den bakoitzean"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP deietarako soilik"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Dei guztietan"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Egin deia"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Erabili Internet bidez deitzeko kontua:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Erabili beti Internet bidezko deiak egiteko"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Internet bidezko deiak egiteko kontu lehenetsia alda dezakezu Telefonoa > Ezarpenak > Internet bidezko deien ezarpenak > Kontuak atalean."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Telefono mugikorra"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internet bidezko deia"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ez dago Internet bidez deitzeko konturik"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Ez dago Internet bidez deitzeko konturik telefono honetan. Kontu bat gehitu nahi duzu?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Gehitu"</string>
<string name="add_sip_account" msgid="800843669753980091">"Gehitu kontua"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Kendu kontua"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP kontuak"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Itxi profila"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Ados"</string>
<string name="close_profile" msgid="3122414058856309881">"Itxi"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Kontu nagusia. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Egoera egiaztatzen…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Erregistratzen…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Oraindik saiatzen…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Ataka-zenbakia"</string>
<string name="transport_title" msgid="889155457465372527">"Garraio mota"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Bidali konexioa mantentzeko mezua"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Ezarri kontu nagusi gisa"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Irteerako deiak egiteko erabiltzen da"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Aukerako ezarpenak"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Autentifikatzeko erabiltzaile-izena"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Autentifikatzeko erabili den erabiltzaile-izena"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Guztiak ezkutatzeko, ukitu"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> beharrezkoa da eta ezin da hutsik utzi."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Ataka-zenbakiak 1000 eta 65534 artean egon behar luke."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Ez duzu Interneteko konexiorik"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Ez dago Wi-Fi konexiorik"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Internet bidezko deiak egin aurretik, Interneteko konexioa egiaztatu behar duzu."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Internet bidezko deiak egiteko, Wi-Fi sare batera konektatuta egon behar duzu (erabili Hari gabekoak eta sarea ataleko ezarpenak)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Ez dira Internet bidezko deiak onartzen"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP deiak egiteko, egiaztatu Interneteko konexioa."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Wi-Fi sare batera konektatuta egon behar zara SIP deiak egiteko (erabili hari gabekoen eta sareen ezarpenak)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP deiak ez dira onartzen"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatikoa"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Bidali beti"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Internet bidezko dei bateratuak"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"SIP dei integratuak"</string>
</resources>
diff --git a/sip/res/values-fa/strings.xml b/sip/res/values-fa/strings.xml
index 3921ab8..00c5414 100644
--- a/sip/res/values-fa/strings.xml
+++ b/sip/res/values-fa/strings.xml
@@ -16,28 +16,18 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"تنظیمات تماس اینترنتی"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"حسابهای تماس اینترنتی (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"تنظیمات SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"حسابهای SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"حسابها"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"دریافت تماسهای ورودی"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"عمر باتری را کاهش میدهد"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"استفاده از تماس اینترنتی"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"استفاده از تماس اینترنتی (فقط Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"از نیروی باتری بیشتری استفاده میکند"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"استفاده از تماس SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"استفاده از تماس SIP (فقط Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"برای همه تماسها وقتی شبکه داده در دسترس است"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"فقط برای تماسهای اینترنتی"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"برای هر تماس سؤال شود"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"فقط برای تماسهای SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"برای همه تماسها"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"برقرار کردن تماس"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"استفاده از حساب تماس اینترنتی:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"همیشه برای برقراری تماسهای اینترنتی استفاده شود"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"میتوانید با رفتن به تلفن > تنظیمات > تنظیمات تماس اینترنتی > صفحه حسابها، حساب تماس اینترنتی را که میخواهید به صورت پیشفرض استفاده شود تغییر دهید."</string>
- <string name="pstn_phone" msgid="9596332924895028">"تماس با تلفن همراه"</string>
- <string name="internet_phone" msgid="4444458244774004247">"تماس اینترنتی"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"حساب تماس اینترنتی وجود ندارد"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"بر روی این تلفن حسابهای تماس اینترنتی وجود ندارد. آیا میخواهید اکنون یک حساب اضافه کنید؟"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"افزودن"</string>
<string name="add_sip_account" msgid="800843669753980091">"افزودن حساب"</string>
- <string name="remove_sip_account" msgid="1367664438506503690">"حذف حساب"</string>
+ <string name="remove_sip_account" msgid="1367664438506503690">"حذف کردن حساب"</string>
<string name="sip_account_list" msgid="5610858485304821480">"حسابهای SIP"</string>
<string name="saving_account" msgid="5336529880235177448">"در حال ذخیره حساب..."</string>
<string name="removing_account" msgid="5537351356808985756">"در حال حذف حساب..."</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"بستن نمایه"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"تأیید"</string>
<string name="close_profile" msgid="3122414058856309881">"بستن"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"حساب اصلی. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"در حال بررسی وضعیت..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"در حال ثبت..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"هنوز در حال تلاش..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"شماره درگاه"</string>
<string name="transport_title" msgid="889155457465372527">"نوع حمل و نقل"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"ارسال حفظ اتصال"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"تنظیم بهعنوان حساب اصلی"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"برای تماسهای خارج از محدوده استفاده شد"</string>
<string name="advanced_settings" msgid="6622996380747040711">"تنظیمات اختیاری"</string>
<string name="auth_username_title" msgid="8262491689004708265">"نام کاربری برای احراز هویت"</string>
<string name="auth_username_summary" msgid="941160241371436473">"نام کاربری مورد استفاده برای احراز هویت"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ جهت پنهان کردن همه لمس کنید"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ضروری است و نباید خالی بماند."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"شماره درگاه باید بین ۱۰۰۰ و ۶۵۵۳۴ باشد."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"اتصال اینترنت موجود نیست"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"اتصال Wi-Fi وجود ندارد"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"برای برقراری تماس اینترنتی، ابتدا اتصال اینترنت خودتان را بررسی کنید."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"برای تماسهای اینترنتی باید به یک شبکه Wi-Fi وصل باشید (از تنظیمات بیسیم و شبکه استفاده کنید)."</string>
- <string name="no_voip" msgid="1600568347241920141">"تماس اینترنتی پشتیبانی نمیشود"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"برای برقراری تماس SIP، ابتدا اتصال اینترنتتان را بررسی کنید."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"برای برقراری تماسهای SIP باید به شبکه Wi-Fi متصل باشید (از تنظیمات بیسیم و شبکه استفاده کنید)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"تماس SIP پشتیبانی نمیشود"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"خودکار"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"همیشه ارسال شود"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"تماس اینترنتی داخلی"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"تماس SIP درونی"</string>
</resources>
diff --git a/sip/res/values-fi/strings.xml b/sip/res/values-fi/strings.xml
index 4341259..dd0b69a 100644
--- a/sip/res/values-fi/strings.xml
+++ b/sip/res/values-fi/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Internetpuheluiden asetukset"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Internetpuhelutilit (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-asetukset"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-tilit"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Tilit"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Vastaanota saapuvia puheluita"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Vähentää akun kestoa"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Käytä internetpuheluita"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Käytä internetpuheluita (vain Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Käyttää enemmän akkua"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Käytä SIP-puheluita"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Käytä SIP-puheluita (vain Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Kaikki puhelut, kun verkko on käytettävissä"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Vain internetpuhelut"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Kysy aina"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Vain SIP-puhelut"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Kaikki puhelut"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Soita puhelu"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Käytä seuraavaa internetpuhelutiliä:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Käytä aina internetpuheluille"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Voit vaihtaa oletusarvoisesti käytettävän internetpuhelutilin valitsemalla Puhelin > Asetukset > Internetpuheluasetukset > Tilit."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Matkapuhelimen puhelu"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetpuhelu"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ei internetpuhelutiliä"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Tällä puhelimella ei ole internetpuhelutilejä. Haluatko lisätä tilin nyt?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Lisää"</string>
<string name="add_sip_account" msgid="800843669753980091">"Lisää tili"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Poista tili"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-tilit"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Sulje profiili"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Sulje"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Ensisijainen tili. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Tarkistetaan tilaa…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Rekisteröidään…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Yritetään edelleen…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Porttinumero"</string>
<string name="transport_title" msgid="889155457465372527">"Siirtotyyppi"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Lähetä tarkistusviesti"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Aseta ensisijaiseksi tiliksi"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Käytössä lähteville puheluille"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Lisäasetukset"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Todennuksessa käytettävä käyttäjänimi"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Käyttäjänimeä käytetään todennukseen"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Piilota kaikki koskettamalla"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> on pakollinen, joten se ei voi olla tyhjä."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Porttinumeron tulee olla 1 000 – 65 534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Ei internetyhteyttä"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Ei Wi-Fi-yhteyttä"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Tarkista internetyhteys ennen internetpuhelun soittamista."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Sinulla täytyy olla yhteys Wi-Fi-verkkoon, jotta voit soittaa internetpuheluita (käytä Langaton verkko ja verkot -asetuksia)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetpuheluita ei tueta"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Jos haluat soittaa SIP-puhelun, tarkista ensin internetyhteytesi."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Sinun on oltava yhteydessä Wi-Fi-verkkoon, jotta voit soittaa SIP-puheluita (vaihda asetus Langaton verkko- ja verkkoasetuksissa)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-puheluita ei tueta"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automaattinen"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Lähetä aina"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Internetpuheluiden SIP-yhteys"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Sisäänrakennetut SIP-puhelut"</string>
</resources>
diff --git a/sip/res/values-fr-rCA/strings.xml b/sip/res/values-fr-rCA/strings.xml
index 30eebfa..ea210ec 100644
--- a/sip/res/values-fr-rCA/strings.xml
+++ b/sip/res/values-fr-rCA/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Paramètres d\'appel Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Comptes d\'appels Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Paramètres SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Comptes SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Comptes"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Recevoir les appels"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Réduit l\'autonomie de la pile"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Utiliser la téléphonie Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Utiliser la téléphonie Internet (Wi-Fi uniquement)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consomme davantage d\'énergie"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Utiliser les appels SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Utiliser les appels SIP (Wi-Fi seulement)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Pour tous les appels lorsqu\'un réseau de données est accessible"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Uniquement pour les appels Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Demander chaque fois"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Uniquement pour les appels SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Pour tous les appels"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Appeler"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Utiliser un compte de téléphonie par Internet :"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Toujours utiliser pour les appels Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Vous pouvez changer le compte à utiliser par défaut pour les appels Internet à l\'écran Téléphone > Paramètres > Paramètres d\'appel Internet > Comptes."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Appel par téléphone cellulaire"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Appel Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Aucun compte d\'appel Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Aucun compte d\'appels Internet sur ce téléphone. Voulez-vous en ajouter un maintenant?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Ajouter"</string>
<string name="add_sip_account" msgid="800843669753980091">"Ajouter un compte"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Supprimer le compte"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Comptes SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Fermer le profil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Fermer"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Compte principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Vérification de l\'état en cours..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Enregistrement en cours…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Tentative en cours…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Numéro de port"</string>
<string name="transport_title" msgid="889155457465372527">"Type de transport"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Envoyer un message keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Définir comme compte principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilisé pour les appels sortants"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Paramètres facultatifs"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nom d\'utilisateur d\'authentification"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nom d\'utilisateur utilisé pour l\'authentification"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"Touchez ▽ pour tout masquer"</string>
<string name="empty_alert" msgid="6659484914371384024">"Le champ « <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> » est obligatoire. Veuillez le remplir."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Le numéro de port doit être compris entre 1000 et 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Aucune connexion Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Aucune connexion Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Pour effectuer un appel Internet, vérifiez tout d\'abord la connexion Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Les appels Internet nécessitent une connexion Wi-Fi pouvant être activée dans les paramètres « Sans fil et réseaux »."</string>
- <string name="no_voip" msgid="1600568347241920141">"Appels Internet non acceptés"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Pour faire un appel SIP, veuillez d\'abord vérifier votre connexion Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Vous devez être connecté à un réseau Wi-Fi pour faire des appels SIP (utilisez les paramètres « Sans fil et réseaux »)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Les appels SIP ne sont pas acceptés."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatique"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Toujours envoyer"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Fonctionnalité d\'appel par Internet intégrée"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Appels SIP intégrés"</string>
</resources>
diff --git a/sip/res/values-fr/strings.xml b/sip/res/values-fr/strings.xml
index b01818e..1007751 100644
--- a/sip/res/values-fr/strings.xml
+++ b/sip/res/values-fr/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Paramètres d\'appel Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Comptes d\'appels Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Paramètres SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Comptes SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Comptes"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Recevoir les appels"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Réduit la durée de vie de la batterie"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Passer des appels Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Passer des appels Internet (Wi-Fi uniquement)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consomme davantage de batterie"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Utiliser les appels SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Utiliser les appels SIP (Wi-Fi seulement)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Pour tous les appels lorsqu\'un réseau de données est disponible"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Seulement pour les appels Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Demander à chaque fois"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Pour les appels SIP seulement"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Pour tous les appels"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Passer un appel"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Utiliser un compte de téléphonie par Internet :"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Utiliser systématiquement pour passer des appels Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Vous pouvez changer le compte à utiliser par défaut pour les appels Internet depuis l\'écran Téléphone > Paramètres > Paramètres d\'appel Internet > Comptes."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Appel de mobile"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Appel Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Aucun compte de téléphonie par Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Aucun compte d\'appels Internet sur ce téléphone. Voulez-vous en ajouter un maintenant ?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Ajouter"</string>
<string name="add_sip_account" msgid="800843669753980091">"Ajouter un compte"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Supprimer le compte"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Comptes SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Fermer le profil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Fermer"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Compte principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Vérification de l\'état en cours..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Enregistrement en cours…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Tentative en cours…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Numéro de port"</string>
<string name="transport_title" msgid="889155457465372527">"Type de transport"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Envoyer un keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Définir comme compte principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilisé pour les appels sortants"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Paramètres facultatifs"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nom d\'utilisateur d\'authentification"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nom d\'utilisateur utilisé pour l\'authentification"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Appuyer ici pour tout masquer"</string>
<string name="empty_alert" msgid="6659484914371384024">"Le champ \"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>\" est obligatoire. Veuillez le renseigner."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Le numéro de port doit être compris entre 1000 et 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Aucune connexion Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Aucune connexion Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Pour effectuer un appel Internet, vérifiez tout d\'abord la connexion Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Les appels Internet nécessitent une connexion Wi-Fi pouvant être activée dans les paramètres \"Sans fil et réseaux\"."</string>
- <string name="no_voip" msgid="1600568347241920141">"Appels Internet non acceptés"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Pour passer un appel SIP, veuillez d\'abord vérifier votre connexion Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Vous devez être connecté à un réseau Wi-Fi pour passer des appels SIP (utilisez les paramètres \"Sans fil et réseaux\")."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Les appels SIP ne sont pas acceptés."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatique"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Toujours envoyer"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Fonctionnalité d\'appel Internet intégrée"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Appels SIP intégrés"</string>
</resources>
diff --git a/sip/res/values-gl-rES/strings.xml b/sip/res/values-gl-rES/strings.xml
index 2b0f0a2..5a2c4ed 100644
--- a/sip/res/values-gl-rES/strings.xml
+++ b/sip/res/values-gl-rES/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Configuración de chamadas por Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Contas de chamadas por Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Configuración SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Contas SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Contas"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Recibir chamadas entrantes"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduce a duración da batería"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Usar chamadas por Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Utilizar chamadas por Internet (só wifi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consume máis batería"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Utilizar chamadas SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Utilizar chamadas SIP (só coa wifi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Para todas as chamadas cando a rede de datos está dispoñible"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Só para chamadas de Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Preguntar para cada chamada"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Só para chamadas SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Para todas as chamadas"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Facer chamada"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Utilizar conta para chamadas por Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Utilizar sempre para realizar chamadas por Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Podes cambiar a conta de chamadas por Internet que queres usar de forma predeterminada na pantalla Teléfono > Configuración > Configuración de chamadas por Internet > Contas."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Chamada de teléfono móbil"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Chamada por Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ningunha conta de chamadas por Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Non hai contas de chamadas por Internet neste teléfono. Queres engadir unha agora?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Engadir"</string>
<string name="add_sip_account" msgid="800843669753980091">"Engadir conta"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Eliminar conta"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Contas SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Pechar o perfil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Aceptar"</string>
<string name="close_profile" msgid="3122414058856309881">"Pechar"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Conta principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Comprobando o estado..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Rexistrando..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Aínda se está tentando..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Número de porto"</string>
<string name="transport_title" msgid="889155457465372527">"Tipo de transporte"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Enviar sinal conexión"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Establecer como conta principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilizado para chamadas saíntes"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Configuración opcional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome de usuario da autenticación"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome de usuario utilizado para a autenticación"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toca aquí para ocultar todo"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> é obrigatorio e non se pode deixar en branco."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"O número do porto debe estar comprendido entre o 1000 e o 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Sen conexión a Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Sen conexión wifi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Para facer unha chamada por Internet, primeiro comproba a túa conexión a Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Tes que estar conectado a unha rede wifi para facer chamadas por Internet (utiliza a configuración de Sen fíos e Rede)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Chamadas por Internet non compatibles"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Para realizar unha chamada SIP, primeiro debes comprobar a túa conexión de Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Tes que estar conectado a unha rede wifi para facer chamadas SIP (utiliza a configuración de Sen fíos e rede)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"As chamadas SIP non son compatibles"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automático"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Enviar sempre"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Chamadas por Internet integradas"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Chamadas SIP integradas"</string>
</resources>
diff --git a/sip/res/values-gu-rIN/strings.xml b/sip/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..f1a5bca
--- /dev/null
+++ b/sip/res/values-gu-rIN/strings.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="sip_settings" msgid="3768482698061677257">"SIP સેટિંગ્સ"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP એકાઉન્ટ્સ"</string>
+ <string name="sip_accounts_title" msgid="2082527045326874519">"એકાઉન્ટ્સ"</string>
+ <string name="sip_receive_calls" msgid="426678617137462173">"આવનારા કૉલ્સ પ્રાપ્ત કરો"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"બધુ બૅટરીની આવરદાનો ઉપયોગ કરે છે"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP કૉલિંગનો ઉપયોગ કરો"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP કૉલિંગનો ઉપયોગ કરો (ફક્ત Wi-Fi)"</string>
+ <string name="sip_call_options_entry_1" msgid="7217659161237099900">"જ્યારે ડેટા નેટવર્ક ઉપલબ્ધ હોય ત્યારે બધા કૉલ્સ માટે"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ફક્ત SIP કૉલ્સ માટે"</string>
+ <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"બધા કૉલ્સ માટે"</string>
+ <string name="add_sip_account" msgid="800843669753980091">"એકાઉન્ટ ઉમેરો"</string>
+ <string name="remove_sip_account" msgid="1367664438506503690">"એકાઉન્ટ દૂર કરો"</string>
+ <string name="sip_account_list" msgid="5610858485304821480">"SIP એકાઉન્ટ્સ"</string>
+ <string name="saving_account" msgid="5336529880235177448">"એકાઉન્ટ સાચવી રહ્યાં છે…"</string>
+ <string name="removing_account" msgid="5537351356808985756">"એકાઉન્ટ દૂર કરી રહ્યાં છે…"</string>
+ <string name="sip_menu_save" msgid="7882219814563869225">"સાચવો"</string>
+ <string name="sip_menu_discard" msgid="2350421645423888438">"છોડી દો"</string>
+ <string name="alert_dialog_close" msgid="1326011828713435134">"પ્રોફાઇલ બંધ કરો"</string>
+ <string name="alert_dialog_ok" msgid="4752048404605388940">"ઑકે"</string>
+ <string name="close_profile" msgid="3122414058856309881">"બંધ કરો"</string>
+ <string name="registration_status_checking_status" msgid="6136793741862200337">"સ્થિતિ તપાસી રહ્યાં છે..."</string>
+ <string name="registration_status_registering" msgid="2677183977796278749">"નોંધણી કરી રહ્યાં છે…"</string>
+ <string name="registration_status_still_trying" msgid="7648151061205513458">"હજી પ્રયાસ કરી રહ્યાં છે..."</string>
+ <string name="registration_status_not_receiving" msgid="7620333886153361090">"કૉલ્સ પ્રાપ્ત કરી રહ્યાં નથી."</string>
+ <string name="registration_status_no_data" msgid="2541999976218192413">"કોઈ ઇન્ટરનેટ કનેક્શન ન હોવાને કારણે એકાઉન્ટની નોંધણી રોકી."</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"કોઈ Wi-Fi કનેક્શન ન હોવાને કારણે એકાઉન્ટની નોંધણી રોકી."</string>
+ <string name="registration_status_not_running" msgid="514205414303796800">"એકાઉન્ટની નોંધણી અસફળ."</string>
+ <string name="registration_status_done" msgid="3264961069247314253">"કૉલ્સ પ્રાપ્ત કરી રહ્યાં છે."</string>
+ <string name="registration_status_failed_try_later" msgid="2199970021756384317">"એકાઉન્ટની નોંધણી અસફળ: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); પછીથી પ્રયાસ કરીશું"</string>
+ <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"એકાઉન્ટની નોંધણી અસફળ: ખોટું વપરાશકર્તાનામ અથવા પાસવર્ડ."</string>
+ <string name="registration_status_server_unreachable" msgid="7710275557045148634">"એકાઉન્ટની નોંધણી અસફળ: સર્વરનું નામ તપાસો."</string>
+ <string name="third_party_account_summary" msgid="9041060473615403041">"આ એકાઉન્ટ હાલમાં <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> એપ્લિકેશન દ્વારા ઉપયોગમાં છે."</string>
+ <string name="sip_edit_title" msgid="1967247832635750410">"SIP એકાઉન્ટ વિગતો"</string>
+ <string name="sip_edit_new_title" msgid="266414118302574305">"SIP એકાઉન્ટ વિગતો"</string>
+ <string name="domain_address_title" msgid="1968479941328225423">"સર્વર"</string>
+ <string name="username_title" msgid="6770064611005663470">"વપરાશકર્તાનામ"</string>
+ <string name="password_title" msgid="5289013731515564295">"પાસવર્ડ"</string>
+ <string name="display_name_title" msgid="579241787583079773">"પ્રદર્શન નામ"</string>
+ <string name="proxy_address_title" msgid="6890163365640631841">"આઉટબાઉન્ડ પ્રોક્સી સરનામું"</string>
+ <string name="port_title" msgid="6693965912656593862">"પોર્ટ નંબર"</string>
+ <string name="transport_title" msgid="889155457465372527">"સંક્રમણ પ્રકાર"</string>
+ <string name="send_keepalive_title" msgid="599627072150501159">"જીવંત-રાખો મોકલો"</string>
+ <string name="advanced_settings" msgid="6622996380747040711">"વૈકલ્પિક સેટિંગ્સ"</string>
+ <string name="auth_username_title" msgid="8262491689004708265">"પ્રમાણીકરણ વપરાશકર્તાનામ"</string>
+ <string name="auth_username_summary" msgid="941160241371436473">"પ્રમાણીકરણ માટે ઉપયોગમાં લેવાયેલ વપરાશકર્તાનામ"</string>
+ <string name="default_preference_summary" msgid="1979249643719483249">"<સેટ કરેલ નથી>"</string>
+ <string name="display_name_summary" msgid="7155076491675565407">"<વપરાશકર્તાનામના સમાન>"</string>
+ <string name="optional_summary" msgid="2363105560396317624">"<વૈકલ્પિક>"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ બધુ દર્શાવવા માટે ટચ કરો"</string>
+ <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ બધુ છુપાવવા માટે ટચ કરો"</string>
+ <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> આવશ્યક છે અને ખાલી છોડી શકાતું નથી."</string>
+ <string name="not_a_valid_port" msgid="7931422555587011830">"પોર્ટ નંબર 1000 અને 65534 ની અંદરનો હોવો જોઈએ."</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP કૉલ કરવા માટે, પ્રથમ તમારું ઇન્ટરનેટ કનેક્શન તપાસો."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP કૉલ્સ માટે તમારે Wi-Fi નેટવર્કથી કનેક્ટ હોવું જરૂરી છે (વાયરલેસ અને નેટવર્ક સેટિંગ્સનો ઉપયોગ કરો)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP કૉલિંગ સમર્થિત નથી"</string>
+ <string name="sip_system_decide" msgid="5577696249416700671">"સ્વચલિત"</string>
+ <string name="sip_always_send_keepalive" msgid="4773022409239823318">"હંમેશાં મોકલો"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"બિલ્ટ-ઇન SIP કૉલિંગ"</string>
+</resources>
diff --git a/sip/res/values-hi/strings.xml b/sip/res/values-hi/strings.xml
index c5834c3..fbf3fd2 100644
--- a/sip/res/values-hi/strings.xml
+++ b/sip/res/values-hi/strings.xml
@@ -16,46 +16,35 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"इंटरनेट कॉल सेटिंग"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"इंटरनेट कॉलिंग (SIP) खाते"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP सेटिंग"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP खाते"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"खाते"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"इनकमिंग कॉल प्राप्त करें"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"बैटरी का जीवनकाल कम करता है"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"इंटरनेट कॉलिंग का उपयोग करें"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"इंटरनेट कॉलिंग का उपयोग करें (केवल Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"अधिक बैटरी जीवन काल का उपयोग करती है"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP कॉलिंग का उपयोग करें"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP कॉलिंग का उपयोग करें (केवल वाई-फ़ाई)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"डेटा नेटवर्क उपलब्ध होने पर सभी कॉल के लिए"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"केवल इंटरनेट कॉल के लिए"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"प्रत्येक कॉल के लिए पूछें"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"केवल SIP कॉल के लिए"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"सभी कॉल के लिए"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"कॉल करें"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"इंटरनेट कॉलिंग खाते का उपयोग करें:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"हमेशा इंटरनेट कॉल करने के लिए उपयोग करें"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"आप यह बदल सकते हैं कि फ़ोन > सेटिंग > इंटरनेट कॉल सेटिंग > खाता स्क्रीन से डिफ़ॉल्ट रूप से किस इंटरनेट कॉलिंग खाते का उपयोग करना है."</string>
- <string name="pstn_phone" msgid="9596332924895028">"सेल फ़ोन कॉल"</string>
- <string name="internet_phone" msgid="4444458244774004247">"इंटरनेट कॉल"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"कोई इंटरनेट कॉलिंग खाता नहीं"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"इस फ़ोन पर कोई इंटरनेट कॉलिंग खाता नहीं है. क्या आप अभी एक जोड़ना चाहते हैं?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"जोड़ें"</string>
<string name="add_sip_account" msgid="800843669753980091">"खाता जोड़ें"</string>
- <string name="remove_sip_account" msgid="1367664438506503690">"खाता निकालें"</string>
+ <string name="remove_sip_account" msgid="1367664438506503690">"खाता हटाएं"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP खाते"</string>
<string name="saving_account" msgid="5336529880235177448">"खाता सहेज रहा है..."</string>
<string name="removing_account" msgid="5537351356808985756">"खाता निकाल रहा है..."</string>
- <string name="sip_menu_save" msgid="7882219814563869225">"सहेजें"</string>
+ <string name="sip_menu_save" msgid="7882219814563869225">"जोड़ें"</string>
<string name="sip_menu_discard" msgid="2350421645423888438">"छोड़ें"</string>
<string name="alert_dialog_close" msgid="1326011828713435134">"प्रोफ़ाइल बंद करें"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ठीक"</string>
<string name="close_profile" msgid="3122414058856309881">"बंद करें"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"प्राथमिक खाता. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"स्थिति की जांच हो रही है..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"पंजीकरण जारी है..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"अब भी प्रयास कर रहा है..."</string>
<string name="registration_status_not_receiving" msgid="7620333886153361090">"कॉल प्राप्त नहीं हो रहे हैं."</string>
<string name="registration_status_no_data" msgid="2541999976218192413">"खाता पंजीकरण रुक गया क्योंकि कोई इंटरनेट कनेक्शन उपलब्ध नहीं है."</string>
- <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"कोई Wi-Fi कनेक्शन न होने के कारण खाता पंजीकरण रोका गया."</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"कोई वाई-फ़ाई कनेक्शन न होने के कारण खाता पंजीकरण रोका गया."</string>
<string name="registration_status_not_running" msgid="514205414303796800">"खाता पंजीकरण विफल."</string>
<string name="registration_status_done" msgid="3264961069247314253">"कॉल प्राप्त हो रहे हैं"</string>
- <string name="registration_status_failed_try_later" msgid="2199970021756384317">"खाता पंजीकरण विफल: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); बाद में पुनः प्रयास करें"</string>
+ <string name="registration_status_failed_try_later" msgid="2199970021756384317">"खाता पंजीकरण विफल: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); बाद में फिर से प्रयास करें"</string>
<string name="registration_status_invalid_credentials" msgid="8406872554323334182">"खाता पंजीकरण विफल: गलत उपयोगकर्ता नाम या पासवर्ड."</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"खाता पंजीकरण विफल: सर्वर नाम जांचें."</string>
<string name="third_party_account_summary" msgid="9041060473615403041">"वर्तमान में <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ऐप्स के द्वारा इस खाते का उपयोग किया जा रहा है."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"पोर्ट नंबर"</string>
<string name="transport_title" msgid="889155457465372527">"परिवहन का प्रकार"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"कीप अलाइव भेजें"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"प्राथमिक खाते के रूप में सेट करें"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"आउटबाउंड कॉल के लिए उपयोग किया जाता है"</string>
<string name="advanced_settings" msgid="6622996380747040711">"वैकल्पिक सेटिंग"</string>
<string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण उपयोगकर्ता नाम"</string>
<string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरण के लिए उपयोग होने वाला उपयोगकर्ता नाम"</string>
@@ -79,14 +66,12 @@
<string name="optional_summary" msgid="2363105560396317624">"<वैकल्पिक>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ सभी दिखाने के लिए स्पर्श करें"</string>
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ सभी छिपाने के लिए स्पर्श करें"</string>
- <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> आवश्यक है और इसे रिक्त नहीं छोड़ा जा सकता."</string>
+ <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> आवश्यक है और इसे खाली नहीं छोड़ा जा सकता."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"पोर्ट नंबर 1000 और 65534 के बीच होना चाहिए."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"कोई इंटरनेट कनेक्शन नहीं"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"कोई Wi-Fi कनेक्शन नहीं"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"इंटरनेट कॉल करने के लिए, पहले अपने इंटरनेट कनेक्शन की जांच करें."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"इंटरनेट कॉल के लिए आपको Wi-Fi नेटवर्क से कनेक्ट होना आवश्यक है (वायरलेस और नेटवर्क सेटिंग का उपयोग करें)."</string>
- <string name="no_voip" msgid="1600568347241920141">"इंटरनेट कॉलिंग समर्थित नहीं है"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP कॉल करने के लिए, पहले अपना इंटरनेट कनेक्शन जांचें."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP कॉल के लिए आपको किसी वाई-फ़ाई नेटवर्क से कनेक्ट रहना होगा (वायरलेस और नेटवर्क सेटिंग का उपयोग करें)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP कॉलिंग समर्थित नहीं है"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"स्वचालित"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"हमेशा भेजें"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"अंतर्निहित इंटरनेट कॉल सुविधा"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"अंतर्निहित SIP कॉलिंग"</string>
</resources>
diff --git a/sip/res/values-hr/strings.xml b/sip/res/values-hr/strings.xml
index b5e29b9..042cbae 100644
--- a/sip/res/values-hr/strings.xml
+++ b/sip/res/values-hr/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Postavke internetskih poziva"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Računi za internetske pozive (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Postavke SIP-a"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP računi"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Računi"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Primi dolazne pozive"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Skraćuje trajanje baterije"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Upotrijebi internetski poziv"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Upotrijebi internetski poziv (samo Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Troši više baterije"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Upotreba SIP poziva"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Upotreba SIP poziva (samo Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Za sve pozive kada je podatkovna mreža dostupna"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Samo za internetske pozive"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Upit za svaki poziv"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Samo za SIP pozive"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Za sve pozive"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Nazovi"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Upotrijebi račun za internetske pozive:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Uvijek upotrijebi za internetske pozive"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Možete promijeniti koji ćete internetski račun za pozivanje upotrebljavati prema zadanim postavkama iz opcije Telefon > Postavke > Postavke internetskih poziva > Zaslon računa."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Poziv mobitelom"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetski poziv"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Nema računa za internetske pozive"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Na ovom telefonu nema računa za internetske pozive. Želite li ga dodati odmah?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Dodaj"</string>
<string name="add_sip_account" msgid="800843669753980091">"Dodaj račun"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Ukloni račun"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP računi"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Zatvaranje profila"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"U redu"</string>
<string name="close_profile" msgid="3122414058856309881">"Zatvori"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primarni račun. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Provjeravanje statusa..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registracija…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Još pokušavam…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Broj priključka"</string>
<string name="transport_title" msgid="889155457465372527">"Vrsta transporta"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Pošalji postavke keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Postavi kao primarni račun"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Upotrebljava se za odlazne pozive"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Izborne postavke"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Korisničko ime za autentifikaciju"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Korisničko ime koje se upotrebljava za autentifikaciju"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dodirnite da biste sakrili sve"</string>
<string name="empty_alert" msgid="6659484914371384024">"Polje <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> obavezno je i ne može ostati prazno."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Broj priključka trebao bi biti između 1000 i 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Nema internetske veze"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Nema Wi-Fi veze"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Za uspostavu internetskog poziva prvo provjerite internetsku vezu."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Morate se povezati s Wi-Fi mrežom za internetske pozive (upotrijebite postavke Bežičnog povezivanja i mreža)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetski pozivi nisu podržani"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Da biste uputili SIP poziv, provjerite jeste li povezani s internetom."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Morate se povezati s Wi-Fi mrežom za SIP pozive (upotrijebite postavke Bežično povezivanje i mreže)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP pozivi nisu podržani"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatski"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Uvijek šalji"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Ugrađeni internetski pozivi"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Ugrađeni SIP pozivi"</string>
</resources>
diff --git a/sip/res/values-hu/strings.xml b/sip/res/values-hu/strings.xml
index c30cf61..eda6bd0 100644
--- a/sip/res/values-hu/strings.xml
+++ b/sip/res/values-hu/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Internetes hívás beállításai"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Internetes hívási (SIP) fiókok"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-beállítások"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-fiókok"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Fiókok"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Beérkező hívások fogadása"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Csökkenti a használati időt"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Internetes hívás használata"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Internetes hívás használata (csak Wi-Fi esetén)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Több energiát használ"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-hívás használata"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-hívás használata (csak Wi-Fin)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Minden hívásnál, amikor nincs elérhető adathálózat"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Csak internetes hívásoknál"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Mindig rákérdez"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Csak SIP-hívásokhoz"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Minden hívásnál"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Hívás indítása"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"A következő Internetes hívási fiók használata:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Mindig használja internetes hívás kezdeményezésekor"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Megváltoztathatja, hogy melyik internetes hívási fiókot használja alapértelmezés szerint a Telefon > Beállítások > Internetes hívásbeállítások > Fiókok képernyőn."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobiltelefonos hívás"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetes hívás"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Nincs internetes hívási fiók"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Nincsenek internetes hívási fiókok ezen a telefonon. Szeretne most hozzáadni egyet?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Hozzáadás"</string>
<string name="add_sip_account" msgid="800843669753980091">"Fiók hozzáadása"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Fiók eltávolítása"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-fiókok"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"A profil bezárása"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Bezárás"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Elsődleges fiók. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Állapot ellenőrzése…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Regisztrálás…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Még próbálkozik…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Port száma"</string>
<string name="transport_title" msgid="889155457465372527">"Átvitel típusa"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Kapcsolat megtartása"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Beállítás elsődleges fiókként"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"A kimenő hívásokhoz használatos"</string>
<string name="advanced_settings" msgid="6622996380747040711">"További beállítások"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Azonosításhoz használt felhasználónév"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Azonosításhoz használt felhasználónév"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Érintse meg az összes elrejtéséhez"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> megadása kötelező, nem maradhat üresen."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"A port számának 1000 és 65534 között kell lennie."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Nincs internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Nincs Wi-Fi-kapcsolat"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Internetes hívás kezdeményezéséhez először ellenőrizze az internetkapcsolatot."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Internetes hívásokhoz csatlakoznia kell egy Wi-Fi-hálózathoz (használja a Vezeték nélküli és hálózati beállításokat)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Az internetes hívás nem támogatott"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP-hívás indításához előbb ellenőrizze az internetkapcsolatát."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP-hívás használatához csatlakoznia kell egy Wi-Fi-hálózathoz (használja a Vezeték nélküli és egyéb hálózatok menü beállításait)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"A SIP-hívás nem támogatott"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatikus"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Mindig küldjön"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Beépített internetes hívás"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Beépített SIP-hívás"</string>
</resources>
diff --git a/sip/res/values-hy-rAM/strings.xml b/sip/res/values-hy-rAM/strings.xml
index 1fe8f98..e0eb582 100644
--- a/sip/res/values-hy-rAM/strings.xml
+++ b/sip/res/values-hy-rAM/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Ինտերնետային զանգերի կարգավորումներ"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Ինտերնետ զանգերի (SIP) հաշիվներ"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP կարգավորումներ"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP հաշիվներ"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Հաշիվներ"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Ընդունել մուտքային զանգեր"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Կրճատում է մարտկոցի կյանքը"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Օգտագործել ինտերնետային զանգը"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Օգտագործել ինտերնետային զանգը (միայն Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Ավելի արագ է սպառում մարտկոցի լիցքը"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Զանգ SIP-ի միջոցով"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Զանգ SIP-ի միջոցով (միայն Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Բոլոր զանգերի համար, երբ տվյալների ցանցը հասանելի է"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Միայն ինտերնետային զանգերի համար"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Հարցնել յուրաքանչյուր զանգի ժամանակ"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Միայն SIP-ի միջոցով զանգերի համար"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Բոլոր զանգերի համար"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Կատարել զանգ"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Օգտագործել ինտերնետային զանգի հաշիվը՝"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Միշտ օգտագործել ինտերնետային զանգեր կատարելու համար"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Դուք կարող եք փոխել, թե ինտերնետային զանգի որ հաշիվն օգտագործել որպես կանխադրված՝ հեռախոսում անցնելով > Կարգավորումներ > Ինտերնետային զանգերի կարգավորումներ > Հաշիվներ:"</string>
- <string name="pstn_phone" msgid="9596332924895028">"Բջջային հեռախոսազանգ"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Ինտերնետային զանգ"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ինտերնետային զանգի հաշիվ չկա"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Այս հեռախոսում ինտերնետային զանգերի հաշիվներ չկան: Ցանկանու՞մ եք ավելացնել մեկը հիմա:"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Ավելացնել"</string>
<string name="add_sip_account" msgid="800843669753980091">"Ավելացնել հաշիվ"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Հեռացնել հաշիվը"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP հաշիվներ"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Փակեք պրոֆիլը"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Լավ"</string>
<string name="close_profile" msgid="3122414058856309881">"Փակել"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Առաջնային հաշիվ: <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Ստուգվում է կարգավիճակը..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Գրանցում..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Սպասեք..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Միացքի համարը"</string>
<string name="transport_title" msgid="889155457465372527">"Փոխանցման միջոց"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Ուղարկել keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Օգտագործել որպես առաջնային հաշիվ"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Օգտագործել ելքային զանգերի համար"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Ընտրովի կարգավորումներ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Նույնականացման օգտանուն"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Օգտանունն օգտագործվել է նույնականացման համար"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Հպեք՝ թաքցնելու ամենը"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>-ը պարտադիր է և չի կարող լինել դատարկ:"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Միացքի համարը պետք է լինի 1000-ի և 65534-ի սահմաններում:"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Ինտերնետ կապ չկա"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi կապ չկա"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Ինտերնետային զանգի կատարման համար նախ ստուգեք ձեր ինտերնետ կապը:"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Ինտերնետային զանգերի համար դուք պետք է միացված լինեք Wi-Fi ցանցին (օգտագործեք Անլար կապի և ցանցերի կարգավորումները):"</string>
- <string name="no_voip" msgid="1600568347241920141">"Ինտերնետային զանգերը չեն սպասարկվում"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP-ի միջոցով զանգ կատարելու համար նախ ստուգեք ձեր համացանցի կապակցումը:"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP-ի միջոցով զանգեր կատարելու համար ձեզ անհրաժեշտ է կապակցվել Wi-Fi ցանցին (օգտագործեք Անլար կապի և Ցանցի կարգավորումները):"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-ի միջոցով զանգերը չեն աջակցվում"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Ավտոմատ"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Միշտ ուղարկել"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Ներկառուցված ինտերնետային զանգ"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"SIP-ի միջոցով զանգերի ներկառուցված ծառայություն"</string>
</resources>
diff --git a/sip/res/values-in/strings.xml b/sip/res/values-in/strings.xml
index 47da974..e4129a4 100644
--- a/sip/res/values-in/strings.xml
+++ b/sip/res/values-in/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Setelan panggilan internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Akun panggilan internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Setelan SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Akun SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Akun"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Terima panggilan masuk"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Mengurangi masa pakai baterai"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Gunakan panggilan internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Gunakan panggilan internet (Wi-Fi saja)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Menggunakan lebih banyak masa pakai baterai"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Gunakan panggilan SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Gunakan panggilan SIP (hanya di Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Untuk semua panggilan ketika jaringan data tersedia"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Hanya untuk panggilan internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Tanyakan pada setiap panggilan"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Hanya untuk panggilan SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Untuk semua panggilan"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Lakukan panggilan"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Gunakan akun panggilan internet"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Selalu gunakan untuk melakukan panggilan internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Anda dapat mengubah akun panggilan internet mana yang digunakan secara default dari layar Telepon > Setelan > Setelan panggilan internet > Akun."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Panggilan ponsel"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Panggilan internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Tidak ada akun panggilan internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Tidak ada akun panggilan internet di ponsel ini. Apakah Anda ingin menambahkan akun sekarang?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Tambahkan"</string>
<string name="add_sip_account" msgid="800843669753980091">"Tambahkan akun"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Buang akun"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Akun SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Tutup profil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Oke"</string>
<string name="close_profile" msgid="3122414058856309881">"Tutup"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Akun utama. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Memeriksa status..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Mendaftarkan..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Masih mencoba..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Nomor port"</string>
<string name="transport_title" msgid="889155457465372527">"Jenis transportasi"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Kirim keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Setel sebagai akun utama"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Digunakan untuk panggilan keluar"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Setelan opsional"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nama pengguna autentikasi"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nama pengguna yang digunakan untuk autentikasi"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Sentuh untuk menyembunyikan semua"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> diwajibkan dan tidak boleh kosong."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Nomor port harus dalam rentang 1000 dan 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Tidak ada sambungan internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Tidak ada sambungan Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Untuk melakukan panggilan internet, periksalah sambungan internet Anda terlebih dulu."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Anda perlu tersambung ke jaringan Wi-Fi untuk panggilan internet (gunakan setelan Nirkabel & Jaringan)"</string>
- <string name="no_voip" msgid="1600568347241920141">"Panggilan internet tidak didukung"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Untuk melakukan panggilan SIP, periksa sambungan internet terlebih dahulu."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Anda harus tersambung ke jaringan Wi-Fi untuk melakukan panggilan SIP (gunakan setelan Nirkabel & Jaringan)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Panggilan SIP tidak didukung"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Otomatis"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Selalu kirim"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Panggilan internet yang terpasang di dalamnya"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Panggilan SIP bawaan"</string>
</resources>
diff --git a/sip/res/values-is-rIS/strings.xml b/sip/res/values-is-rIS/strings.xml
index 6f15f2d..49a45e7 100644
--- a/sip/res/values-is-rIS/strings.xml
+++ b/sip/res/values-is-rIS/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Stillingar netsímtala"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Netsímtalareikningar (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-stillingar"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-reikningar"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Reikningar"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Svara símtölum"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Dregur úr endingartíma rafhlöðu"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Nota netsímtal"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Nota netsímtal (Wi-Fi eingöngu)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Notar meiri rafhlöðuorku"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Nota SIP-símtal"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Nota SIP-símtal (eingöngu Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Fyrir öll símtöl þegar gagnanet er tiltækt"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Aðeins fyrir netsímtöl"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Spyrja við hvert símtal"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Aðeins fyrir SIP-símtöl"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Fyrir öll símtöl"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Hringja símtal"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Nota netsímareikning:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Nota alltaf fyrir netsímtöl"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Þú getur breytt því hvaða netsímareikningur er notaður sjálfgefið á skjámyndinni Sími > Stillingar > Netsímastillingar > Reikningar."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Símtal í farsíma"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Netsímtal"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Enginn netsímareikningur"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Engir netsímareikningar í þessum síma. Viltu bæta reikningi við núna?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Bæta við"</string>
<string name="add_sip_account" msgid="800843669753980091">"Bæta reikningi við"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Fjarlægja reikning"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-reikningar"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Loka sniðinu"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Í lagi"</string>
<string name="close_profile" msgid="3122414058856309881">"Loka"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Aðalreikningur. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Athugar stöðu..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Skráir…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Enn að reyna…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Númer gáttar"</string>
<string name="transport_title" msgid="889155457465372527">"Flutningsgerð"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Halda tengingu opinni"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Nota sem aðalreikning"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Notað fyrir hringd símtöl"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Valfrjálsar stillingar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Notandanafn til auðkenningar"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Notandanafn notað til auðkenningar"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Snertu til að fela allt"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> er áskilið og má ekki vera autt."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Númer gáttar á að vera milli 1000 og 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Engin nettenging"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Engin Wi-Fi tenging"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Til að hringja netsímtal skaltu fyrst athuga nettenginguna."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Nettenging þarf að vera til staðar til að hægt sé að hringja netsímtöl (notaðu stillingarnar undir Þráðlaus net og símkerfi)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Netsímtöl eru ekki studd"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Til að hringja SIP-símtal skaltu fyrst athuga nettenginguna þína."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Þú þarft að tengjast Wi-Fi neti til að hringja SIP-símtöl (notaðu stillingar þráðlauss nets og símkerfa)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-símtöl ekki studd"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Sjálfvirkt"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Senda alltaf"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Innbyggð netsímtöl"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Innbyggð SIP-símtöl"</string>
</resources>
diff --git a/sip/res/values-it/strings.xml b/sip/res/values-it/strings.xml
index 5723694..97de314 100644
--- a/sip/res/values-it/strings.xml
+++ b/sip/res/values-it/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Impostazioni chiamate Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Account per chiamate Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Impostazioni SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Account SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Account"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Ricevi chiamate in arrivo"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Riduce la durata della batteria"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Usa chiamata Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Usa chiamata Internet (solo Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consuma più batteria"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Utilizza chiamate SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Utilizza chiamate SIP (solo Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Per tutte le chiamate quando è disponibile la rete dati"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Solo per chiamate Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Chiedi per ogni chiamata"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Solo per chiamate SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Per tutte le chiamate"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Effettua chiamata"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Usa account per chiamate Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Utilizza sempre per effettuare chiamate Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Puoi cambiare l\'account per chiamate Internet da utilizzare per impostazione predefinita dalla schermata Telefono > Impostazioni > Impostazioni chiamate Internet > Account."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Chiamata con telefono cellulare"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Chiamata Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Nessun account per chiamate Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Non sono presenti account per chiamate Internet su questo telefono. Aggiungerne uno adesso?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Aggiungi"</string>
<string name="add_sip_account" msgid="800843669753980091">"Aggiungi account"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Rimuovi account"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Account SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Chiudi il profilo"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Chiudi"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Account principale. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Controllo stato..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrazione..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Tentativo ancora in corso..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Numero porta"</string>
<string name="transport_title" msgid="889155457465372527">"Tipo trasporto"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Invia keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Imposta come account principale"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilizzato per chiamate in uscita"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Impostazioni facoltative"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome utente per autenticazione"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome utente utilizzato per l\'autenticazione"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tocca per nascondere tutto"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> è obbligatorio e non può essere lasciato vuoto."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Il numero della porta deve essere compreso tra 1000 e 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Nessun collegamento Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Nessuna connessione Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Prima di effettuare una chiamata via Internet, controlla il tuo collegamento Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Devi essere collegato a una rete Wi-Fi per effettuare chiamate via Internet (utilizza le impostazioni Wireless e reti)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Chiamate Internet non supportate"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Per effettuare una chiamata SIP, verifica prima la connessione Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Devi essere connesso a una rete Wi-Fi per le chiamate SIP (utilizza le impostazioni wireless e della rete)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Chiamate SIP non supportate"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatico"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Invia sempre"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Chiamate Internet integrate"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Chiamate SIP incorporate"</string>
</resources>
diff --git a/sip/res/values-iw/strings.xml b/sip/res/values-iw/strings.xml
index 309a8f2..54712b7 100644
--- a/sip/res/values-iw/strings.xml
+++ b/sip/res/values-iw/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"הגדרות שיחת אינטרנט"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"חשבונות (SIP) להתקשרות באינטרנט"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"הגדרות SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"חשבונות SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"חשבונות"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"קבל שיחות נכנסות"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"מקצר את חיי הסוללה"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"השתמש בהתקשרות באינטרנט"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"השתמש בהתקשרות באינטרנט (Wi-Fi בלבד)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"צריכת הסוללה גבוהה יותר"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"שימוש בשיחות SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"שימוש בשיחות SIP (Wi-Fi בלבד)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"לכל השיחות כאשר רשת הנתונים זמינה"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"לשיחות אינטרנט בלבד"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"שאל עבור כל שיחה"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"עבור שיחות SIP בלבד"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"לכל השיחות"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"בצע שיחה"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"השתמש בחשבון להתקשרות באינטרנט:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"השתמש תמיד כדי לבצע שיחות אינטרנט"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"ניתן לשנות את חשבון השיחות באינטרנט לשימוש כברירת מחדל דרך \'טלפון\' > \'הגדרות\' > \'הגדרות שיחת אינטרנט\' > \'חשבונות\'."</string>
- <string name="pstn_phone" msgid="9596332924895028">"שיחה בטלפון סלולרי"</string>
- <string name="internet_phone" msgid="4444458244774004247">"שיחת אינטרנט"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"אין חשבון להתקשרות באינטרנט"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"אין חשבונות שיחת אינטרנט לטלפון זה. האם אתה רוצה להוסיף חשבון כעת?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"הוסף"</string>
<string name="add_sip_account" msgid="800843669753980091">"הוסף חשבון"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"הסר חשבון"</string>
<string name="sip_account_list" msgid="5610858485304821480">"חשבונות SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"סגור את הפרופיל"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"אישור"</string>
<string name="close_profile" msgid="3122414058856309881">"סגור"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"חשבון ראשי. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"בודק מצב..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"מבצע רישום..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"עדיין מנסה..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"מספר יציאה"</string>
<string name="transport_title" msgid="889155457465372527">"סוג העברה"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"שלח אות חיבור"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"הגדר כחשבון ראשי"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"משמש לשיחות יוצאות"</string>
<string name="advanced_settings" msgid="6622996380747040711">"הגדרות אופציונליות"</string>
<string name="auth_username_title" msgid="8262491689004708265">"שם משתמש לאימות"</string>
<string name="auth_username_summary" msgid="941160241371436473">"שם משתמש המשמש לאימות"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ גע כדי להסתיר את הכל"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> הוא שדה חובה ולא ניתן להשאיר אותו ריק."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"מספר היציאה צריך להיות בין 1000 ל-65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"אין חיבור לאינטרנט"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"אין חיבור Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"כדי לבצע שיחת אינטרנט, בדוק תחילה את החיבור לאינטרנט."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"עליך להיות מחובר לרשת Wi-Fi כדי לבצע שיחות באינטרנט (השתמש בהגדרות \'רשתות ותקשורת אלחוטית\')."</string>
- <string name="no_voip" msgid="1600568347241920141">"אין תמיכה בהתקשרות באינטרנט"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"כדי לבצע שיחת SIP, ראשית בדוק את חיבור האינטרנט שלך."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"עליך להיות מחובר לרשת Wi-Fi כדי לבצע שיחות SIP (השתמש ב\'הגדרות רשת ותקשורת אלחוטית\')."</string>
+ <string name="no_voip" msgid="3038021971231952704">"שיחות SIP לא נתמכות"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"אוטומטי"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"שלח תמיד"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"שיחות אינטרנט מובנות"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"שיחות SIP מובנות"</string>
</resources>
diff --git a/sip/res/values-ja/strings.xml b/sip/res/values-ja/strings.xml
index 667798f..b89dbec 100644
--- a/sip/res/values-ja/strings.xml
+++ b/sip/res/values-ja/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"インターネット通話の設定"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"インターネット通話(SIP)アカウント"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIPの設定"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIPアカウント"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"アカウント"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"着信を受ける"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"電池使用量が増えます"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"インターネット通話を使用"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"インターネット通話を使用(Wi-Fiのみ)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"電池の使用量が増えます"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP通話の使用"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP通話の使用(Wi-Fiのみ)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"データネットワーク接続時はすべての通話"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"インターネット通話のみ"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"通話のたびに確認"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP通話のみ"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"すべての通話"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"発信"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"インターネット通話アカウントを使用:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"インターネット通話発信時に常に使用する"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"[携帯端末]>[設定]>[インターネット通話の設定]>[アカウント]画面で、デフォルトで使用するインターネット通話アカウントを変更できます。"</string>
- <string name="pstn_phone" msgid="9596332924895028">"携帯通信網での通話"</string>
- <string name="internet_phone" msgid="4444458244774004247">"インターネット通話"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"インターネット通話アカウントなし"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"この携帯端末にはインターネット通話アカウントがありません。今すぐ追加しますか?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"追加"</string>
<string name="add_sip_account" msgid="800843669753980091">"アカウントを追加"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"アカウントの削除"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIPアカウント"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"プロフィールを閉じる"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"閉じる"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"メインアカウント(<xliff:g id="REGISTRATION_STATUS">%s</xliff:g>)"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"ステータスを確認しています..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"登録しています…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"試行しています…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"ポート番号"</string>
<string name="transport_title" msgid="889155457465372527">"伝送方式"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"キープアライブを送信する"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"メインアカウントに設定"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"発信に使用する"</string>
<string name="advanced_settings" msgid="6622996380747040711">"オプション設定"</string>
<string name="auth_username_title" msgid="8262491689004708265">"認証ユーザー名"</string>
<string name="auth_username_summary" msgid="941160241371436473">"認証に使用するユーザー名"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽すべて非表示"</string>
<string name="empty_alert" msgid="6659484914371384024">"「<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>」は必須です。空欄にはできません。"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"ポート番号は1000~65534で指定してください。"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"インターネット接続なし"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi接続なし"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"インターネット通話を行うにはまずインターネットへの接続を確認してください。"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"インターネット通話にはWi-Fiネットワークへの接続が必要です([ワイヤレスとネットワークの設定]を使用)。"</string>
- <string name="no_voip" msgid="1600568347241920141">"インターネット通話には対応していません"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP通話を発信する前に、インターネット接続を確認してください。"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP通話をするにはWi-Fネットワークに接続する必要があります([無線とネットワーク]で設定)。"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP通話はサポートされていません"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"自動"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"常に送信"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"内蔵のインターネット通話"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"内蔵SIP通話機能"</string>
</resources>
diff --git a/sip/res/values-ka-rGE/strings.xml b/sip/res/values-ka-rGE/strings.xml
index 89c794f..e5dfb94 100644
--- a/sip/res/values-ka-rGE/strings.xml
+++ b/sip/res/values-ka-rGE/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"ინტერნეტით დარეკვის პარამეტრები"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"ინტერნეტით დარეკვის (SIP) ანგარიშები"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP პარამეტრები"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP ანგარიშები"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"ანგარიშები"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"შემომავალი ზარების მიღება"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ამცირებს ბატარეის ხანგრძლივობას"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ინტერნეტით დარეკვის გამოყენება"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ინტერნეტით დარეკვის გამოყენება (მხოლოდ Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"იყენებს ელემენტის მეტ ენერგიას"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP დარეკვის გამოყენება"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP დარეკვის გამოყენება (მხოლოდ Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"ყველა ზარზე, როდესაც მონაცემთა ქსელი ხელმისაწვდომია"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"მხოლოდ ინტერნეტ-ზარებზე"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"კითხვა ყოველ ზარზე"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"მხოლოდ SIP ზარებისათვის"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ყველა ზარზე"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"ზარის განხორციელება"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ინტერნეტით დარეკვის ანგარიშის გამოყენება:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"მუდამ გამოიყენე ინტერნეტ ზარების განსახორციელდებლად"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"შეგიძლიათ აირჩიოთ, თუ რომელი ინტერნეტ-დარეკვის ანგარიში გამოიყენება ნაგულისხმევად შემდეგი ეკრანიდან: ტელეფონი > პარამეტრები > ინტერნეტ-დარეკვის პარამეტრები > ანგარიშები."</string>
- <string name="pstn_phone" msgid="9596332924895028">"მობილური სატელეფონო ზარი"</string>
- <string name="internet_phone" msgid="4444458244774004247">"ინტერნეტ-ზარი"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ინტერნეტით დარეკვის ანგარიში არ არის"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"ამ ტელეფონზე ინტერნეტით დარეკვის ანგარიშები არ არის. გსურთ, დაამატოთ ახლა?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"დამატება"</string>
<string name="add_sip_account" msgid="800843669753980091">"ანგარიშის დამატება"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"ანგარიშის წაშლა"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP ანგარიშები"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"პროფილის დახურვა"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"კარგი"</string>
<string name="close_profile" msgid="3122414058856309881">"დახურვა"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"ძირითადი ანგარიში. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"სტატუსის შემოწმება..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"მიმდინარეობს რეგისტრაცია…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"ხელახალი მცდელობა…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"პორტის ნომერი"</string>
<string name="transport_title" msgid="889155457465372527">"ტრანსპორტირების ტიპი"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"keep-alive-ის გაგზავნა"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"ძირითად ანგარიშად დაყენება"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"გამოიყენება გამავალი ზარებისთვის"</string>
<string name="advanced_settings" msgid="6622996380747040711">"არასავალდებულო პარამეტრები"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ავტორიზაციის მომხმარებლის სახელი"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ავტორიზაციისათვის გამოყენებული მომხმარებლის სახელი"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ შეეხეთ ყველას დასამალად"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> აუცილებელია და ცარიელი ვერ დარჩება."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"პორტის ნომერი უნდა იყოს 1000 – 65534 არეალში."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"ინტერნეტთან კავშირი არ არის"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi კავშირი არ არის"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"ინტერნეტ-ზარის განსახორციელებლად, ჯერ გადაამოწმეთ ინტერნეტთან კავშირი."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"ინტერნეტით დარეკვისათვის დაკავშირებული უნდა იყოთ Wi-Fi ქსელთან (გამოიყენეთ უსადენო და ქსელის პარამეტრები)."</string>
- <string name="no_voip" msgid="1600568347241920141">"ინტერნეტით დარეკვა მხარდაჭერილი არ არის"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP ზარის განხორციელებისათვის, პირველ რიგში შეამოწმეთ თქვენი ინტერნეტ კავშირი."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP ზარებისათვის, დაკავშირებული უნდა იყოთ Wi-Fi ქსელთან (გამოიყენეთ უკაბელო & amp; ქსელის პარამეტრები)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP დარეკვა არ არის მხარდაჭერილი"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"ავტომატური"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"მუდამ გაგზავნა"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"ჩაშენებული ინტერნეტ-ზარი"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"ჩაშენებული SIP ზარში"</string>
</resources>
diff --git a/sip/res/values-kk-rKZ/strings.xml b/sip/res/values-kk-rKZ/strings.xml
index 074c2e8..76c54c8 100644
--- a/sip/res/values-kk-rKZ/strings.xml
+++ b/sip/res/values-kk-rKZ/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Интернет қоңыраулары параметрлері"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Интернет қоңыраулары (SIP) есептік жазбалары"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP параметрлері"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP есептік жазбалары"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Есептік жазбалар"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Кіріс қоңырауларды қабылдау"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Батарея мерзімін қысқартады"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Интернет қоңырауларын пайдалану"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Интернет қоңырауларын пайдалану (тек Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Көбірек батарея қуатын пайдаланады"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP қоңырауларын пайдалану"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP қоңырауларын пайдалану (тек Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Деректер желісі қол жетімді болғанда барлық қоңыраулар үшін"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Тек интернет қоңыраулары үшін"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Әр қоңырау үшін сұрау"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Тек SIP қоңыраулары үшін"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Барлық қоңыраулар үшін"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Қоңырау шалу"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Интернет арқылы қоңырау шалу есептік жазбасын пайдалану:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Әрқашан интернет қоңырауларын шалу үшін пайдалану"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Әдепкі бойынша интернет қоңыраулары есептік жазбаларының қайсысы пайдаланылатынын «Телефон» > «Параметрлер» > «Интернет қоңыраулары параметрлері» > «Есептік жазба экраны» арқылы өзгертуге болады."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Ұялы телефон қоңырауы"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Интернет қоңырауы"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Интернет арқылы қоңырау шалу есептік жазбасы жоқ"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Бұл телефонда интернет арқылы қоңырау шалу есептік жазбасы жоқ. Есептік жазба қосуды қалайсыз ба?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Қосу"</string>
<string name="add_sip_account" msgid="800843669753980091">"Есептік жазба қосу"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Есептік жазбаны жою"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP есептік жазбалары"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Профильді жабу"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Жарайды"</string>
<string name="close_profile" msgid="3122414058856309881">"Жабу"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Негізгі есептік жазба. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Күй тексерілуде…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Тіркелуде…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Әлі әрекеттенуде…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Порт нөмірі"</string>
<string name="transport_title" msgid="889155457465372527">"Тасымалдау түрі"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Байланыс сақтау сигналын жіберу"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Негізгі есептік жазба ретінде орнату"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Шығыс қоңыраулар үшін пайдаланылады"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Қосымша параметрлер"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Аутентификациялау пайдаланушы аты"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Аутентификациялау үшін пайдаланылатын пайдаланушы аты"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Барлығын жасыру үшін түрту"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> міндетті және оны бос қалдыруға болмайды."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Порт нөмірі 1000 және 65534 аралығында болуы керек."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Интернет байланысы жоқ"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi байланысы жоқ"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Интернет қоңырауын шалу үшін алдымен интернет байланысын тексеріңіз."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Интернет арқылы қоңырау шалу үшін Wi-Fi желісіне жалғану қажет (Сымсыз & Желі параметрлері тармақтарын қолданыңыз)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Интернет арқылы қоңырау шалу қолдауы жоқ"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP қоңырауын шалу үшін алдымен интернет қосылымын тексеріңіз."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP қоңыраулары үшін Wi-Fi желісіне қосылған болуы керек («Сымсыз желі және желі параметрлері» тармағын пайдаланыңыз)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP қоңырауларына қолдау көрсетілмейді"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Aвтоматты"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Әрқашан жіберу"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Кірістірілген интернет қоңыраулар"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Кірістірілген SIP қоңыраулары"</string>
</resources>
diff --git a/sip/res/values-km-rKH/strings.xml b/sip/res/values-km-rKH/strings.xml
index b7acdeb..c1d80b3 100644
--- a/sip/res/values-km-rKH/strings.xml
+++ b/sip/res/values-km-rKH/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"កំណត់ការហៅតាមអ៊ីនធឺណិត"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"គណនី (SIP) ការហៅតាមអ៊ីនធឺណិត"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"ការកំណត់ SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"គណនី SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"គណនី"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ទទួលការហៅចូល"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"កាត់បន្ថយអាយុថ្ម"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ប្រើការហៅតាមអ៊ីនធឺណិត"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ប្រើការហៅតាមអ៊ីនធឺណិត (តែវ៉ាយហ្វាយប៉ុណ្ណោះ)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ប្រើថាមពលថ្មច្រើន"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"ប្រើការហៅ SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"ប្រើការហៅ SIP (Wi-Fi តែប៉ុណ្ណោះ)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"សម្រាប់ការហៅទាំងអស់ នៅពេលបណ្ដាញទិន្នន័យអាចប្រើបាន"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"សម្រាប់តែការហៅតាមអ៊ីនធឺណិតប៉ុណ្ណោះ"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"សួររាល់ពេលហៅ"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"សម្រាប់ការហៅ SIP តែប៉ុណ្ណោះ"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"សម្រាប់ការហៅទាំងអស់"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"ហៅ"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ប្រើគណនីហៅតាមអ៊ីនធឺណិត៖"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"ប្រើជានិច្ច ដើម្បីហៅតាមអ៊ីនធឺណិត"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"អ្នកអាចប្ដូរគណនីហៅតាមអ៊ីនធឺណិត ដើម្បីប្រើតាមលំនាំដើមពីទូរស័ព្ទ > ការកំណត់ > កំណត់ការហៅតាមអ៊ីនធឺណិត > អេក្រង់គណនី។"</string>
- <string name="pstn_phone" msgid="9596332924895028">"ហៅតាមទូរស័ព្ទចល័ត"</string>
- <string name="internet_phone" msgid="4444458244774004247">"ការហៅតាមអ៊ីនធឺណិត"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"មិនមានគណនីហៅតាមអ៊ីនធឺណិត"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"មិនមានគណនីហៅតាមអ៊ីនធឺណិតនៅលើទូរស័ព្ទនេះទេ។ តើអ្នកចង់បន្ថែមឥឡូវនេះឬ?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"បន្ថែម"</string>
<string name="add_sip_account" msgid="800843669753980091">"បន្ថែមគណនី"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"លុបគណនី"</string>
<string name="sip_account_list" msgid="5610858485304821480">"គណនី SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"បិទប្រវត្តិរូប"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"យល់ព្រម"</string>
<string name="close_profile" msgid="3122414058856309881">"បិទ"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"គណនីចម្បង។ <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"កំពុងពិនិត្យស្ថានភាព..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"កំពុងចុះឈ្មោះ…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"នៅតែព្យាយាម…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"លេខច្រក"</string>
<string name="transport_title" msgid="889155457465372527">"ប្រភេទបញ្ជូន"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"នៅតែមានការផ្ញើ"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"កំណត់ជាគណនីចម្បង"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"បានប្រើសម្រាប់ការហៅចេញ"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ការកំណត់ជាជម្រើស"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ឈ្មោះអ្នកប្រើសម្រាប់ផ្ទៀងផ្ទាត់"</string>
<string name="auth_username_summary" msgid="941160241371436473">"បានប្រើឈ្មោះអ្នកប្រើសម្រាប់ផ្ទៀងផ្ទាត់"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"ប៉ះ ▽ ដើម្បីលាក់ទាំងអស់"</string>
<string name="empty_alert" msgid="6659484914371384024">"មិនអាចទុកឲ្យនៅទទេ និងបានទាមទារ <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ។"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"លេខច្រកគួរតែនៅចន្លោះ ១០០០ និង ៦៥៥៣៤។"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"មិនមានការភ្ជាប់អ៊ីនធឺណិត"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"មិនមានការតភ្ជាប់តាមវ៉ាយហ្វាយ"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"ដើម្បីហៅតាមអ៊ីនធឺណិត ត្រូវពិនិត្យមើលការភ្ជាប់អ៊ីនធឺណិតរបស់អ្នកសិន។"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"អ្នកត្រូវភ្ជាប់បណ្ដាញវ៉ាយហ្វាយសម្រាប់ហៅតាមអ៊ីនធឺណិត (ប្រើការកំណត់ ឥតខ្សែ & បណ្ដាញ)។"</string>
- <string name="no_voip" msgid="1600568347241920141">"មិនបានគាំទ្រការហៅតាមអ៊ីនធឺណិត"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"ដើម្បីដាក់ការហៅ SIP ពិនិត្យការភ្ជាប់អ៊ីនធឺណិតរបស់អ្នកជាមុនសិន។"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"អ្នកត្រូវភ្ជាប់ទៅបណ្តាញ Wi-Fi សម្រាប់ការហៅ SIP (ប្រើការកំណត់បណ្តាញឥតខ្សែ)។"</string>
+ <string name="no_voip" msgid="3038021971231952704">"ការហៅ SIP មិនត្រូវបានគាំទ្រទេ"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"ស្វ័យប្រវត្តិ"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"ផ្ញើជានិច្ច"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"ការហៅតាមអ៊ីនធឺណិតជាប់ជាមួយស្រាប់"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"ភ្ជាប់មកជាមួយការហៅ SIP"</string>
</resources>
diff --git a/sip/res/values-kn-rIN/strings.xml b/sip/res/values-kn-rIN/strings.xml
index 60d87cc..0e89dd2 100644
--- a/sip/res/values-kn-rIN/strings.xml
+++ b/sip/res/values-kn-rIN/strings.xml
@@ -16,27 +16,17 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"ಇಂಟರ್ನೆಟ್ ಕರೆ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡುವಿಕೆ (SIP) ಖಾತೆಗಳು"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP ಖಾತೆಗಳು"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"ಖಾತೆಗಳು"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ಒಳಬರುವ ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸು"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡುವಿಕೆ ಬಳಸಿ"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡುವಿಕೆ ಬಳಸಿ (Wi-Fi ಮಾತ್ರ)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ಹೆಚ್ಚು ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಬಳಸುತ್ತದೆ"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ (Wi-Fi ಮಾತ್ರ)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"ಡೇಟಾ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿರುವಾಗ ಎಲ್ಲ ಕರೆಗಳಿಗಾಗಿ"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"ಇಂಟರ್ನೆಟ್ ಕರೆಗಳಿಗಾಗಿ ಮಾತ್ರ"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ಪ್ರತಿಯೊಂದು ಕರೆಗೂ ಕೇಳು"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ಕೇವಲ SIP ಕರೆಗಳಿಗೆ ಮಾತ್ರ"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ಎಲ್ಲ ಕರೆಗಳಿಗಾಗಿ"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"ಕರೆ ಮಾಡಿ"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡುವಿಕೆ ಖಾತೆಯನ್ನು ಬಳಸಿ:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"ಯಾವಾಗಲೂ ಇಂಟರ್ನೆಟ್ ಕರೆಗಳನ್ನು ಬಳಸಿ"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"ಫೋನ್ > ಸೆಟ್ಟಿಂಗ್ಗಳು > ಇಂಟರ್ನೆಟ್ ಕರೆ ಸೆಟ್ಟಿಂಗ್ಗಳು > ಖಾತೆಗಳ ಪರದೆಯಿಂದ ಡೀಫಾಲ್ಟ್ ಮೂಲಕ ಯಾವ ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡುವಿಕೆ ಖಾತೆಯನ್ನು ಬಳಸಬೇಕು ಎಂಬುದನ್ನು ನೀವು ಬದಲಾಯಿಸಬಹುದು."</string>
- <string name="pstn_phone" msgid="9596332924895028">"ಸೆಲ್ ಫೋನ್ ಕರೆ"</string>
- <string name="internet_phone" msgid="4444458244774004247">"ಇಂಟರ್ನೆಟ್ ಕರೆ"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡುವ ಖಾತೆಯಿಲ್ಲ"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"ಈ ಫೋನ್ನಲ್ಲಿ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡುವ ಖಾತೆಗಳಿಲ್ಲ. ನೀವೀಗ ಖಾತೆ ಸೇರಿಸಲು ಬಯಸುವಿರಾ?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"ಸೇರಿಸು"</string>
- <string name="add_sip_account" msgid="800843669753980091">"ಖಾತೆಯನ್ನು ಸೇರಿಸಿ"</string>
+ <string name="add_sip_account" msgid="800843669753980091">"ಖಾತೆ ಸೇರಿಸು"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕು"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP ಖಾತೆಗಳು"</string>
<string name="saving_account" msgid="5336529880235177448">"ಖಾತೆಯನ್ನು ಉಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"ಪ್ರೊಫೈಲ್ ಮುಚ್ಚಿ"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ಸರಿ"</string>
<string name="close_profile" msgid="3122414058856309881">"ಮುಚ್ಚು"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"ಪ್ರಾಥಮಿಕ ಖಾತೆ. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"ನೋಂದಣಿ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"ಇನ್ನೂ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ…"</string>
@@ -67,10 +56,8 @@
<string name="display_name_title" msgid="579241787583079773">"ಹೆಸರು ಪ್ರದರ್ಶಿಸು"</string>
<string name="proxy_address_title" msgid="6890163365640631841">"ಹೊರಹೋಗುವ ಪ್ರಾಕ್ಸಿ ವಿಳಾಸ"</string>
<string name="port_title" msgid="6693965912656593862">"ಪೋರ್ಟ್ ಸಂಖ್ಯೆ"</string>
- <string name="transport_title" msgid="889155457465372527">"ಸಾಗಣೆ ಪ್ರಕಾರ"</string>
+ <string name="transport_title" msgid="889155457465372527">"ಸಾರಿಗೆ ಪ್ರಕಾರ"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"ಜೀವಂತವಾಗಿ ಇರಿಸು ಅನ್ನು ಕಳುಹಿಸಿ"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"ಪ್ರಾಥಮಿಕ ಖಾತೆಯಾಗಿ ಹೊಂದಿಸಿ"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"ಹೊರಹೋಗುವ ಕರೆಗಳಿಗಾಗಿ ಬಳಸಲಾಗಿದೆ"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ಐಚ್ಛಿಕ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ದೃಢೀಕರಣ ಬಳಕೆದಾರಹೆಸರು"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ದೃಢೀಕರಣಕ್ಕಾಗಿ ಬಳಕೆದಾರ ಹೆಸರನ್ನು ಬಳಸಲಾಗಿದೆ"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ಎಲ್ಲವನ್ನೂ ಮರೆಮಾಡಲು ಸ್ಪರ್ಶಿಸಿ"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ಅಗತ್ಯವಿದೆ ಮತ್ತು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"ಪೋರ್ಟ್ ಸಂಖ್ಯೆಯು 1000 ಮತ್ತು 65534 ರ ವ್ಯಾಪ್ತಿಯೊಳಗಿರಬೇಕು."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವಿಲ್ಲ"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"ಯಾವುದೇ Wi-Fi ಸಂಪರ್ಕವಿಲ್ಲ"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"ಇಂಟರ್ನೆಟ್ ಕರೆ ಮಾಡಲು, ಮೊದಲು ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"ಇಂಟರ್ನೆಟ್ ಕರೆಗಳಿಗಾಗಿ ನೀವು Wi-Fi ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕಗೊಳಿಸಬೇಕಾದ ಅಗತ್ಯವಿದೆ (ವೈರ್ಲೆಸ್ & ನೆಟ್ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಳಸಿ)."</string>
- <string name="no_voip" msgid="1600568347241920141">"ಇಂಟರ್ನೆಟ್ ಕರೆಗೆ ಬೆಂಬಲವಿಲ್ಲ"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP ಕರೆ ಮಾಡಲು, ಮೊದಲು ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP ಕರೆಗಳಿಗಾಗಿ ನೀವು Wi-Fi ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಅಗತ್ಯವಿದೆ (ವೈರ್ಲೆಸ್ & ನೆಟ್ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಳಸಿ)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP ಕರೆ ಮಾಡುವಿಕೆ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"ಸ್ವಯಂಚಾಲಿತ"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"ಯಾವಾಗಲೂ ಕಳುಹಿಸು"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"ಅಂತರ್ನಿರ್ಮಿತ ಇಂಟರ್ನೆಟ್ ಕರೆಮಾಡುವಿಕೆ"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"ಅಂತರ್ನಿರ್ಮಿತ SIP ಕರೆ ಮಾಡುವಿಕೆ"</string>
</resources>
diff --git a/sip/res/values-ko/strings.xml b/sip/res/values-ko/strings.xml
index 9984c89..af1ed43 100644
--- a/sip/res/values-ko/strings.xml
+++ b/sip/res/values-ko/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"인터넷 통화 설정"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"인터넷 전화(SIP) 계정"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP 설정"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP 계정"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"계정"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"수신전화 받기"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"배터리 수명이 단축됩니다."</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"인터넷 통화 사용"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"인터넷 통화 사용(Wi-Fi 전용)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"배터리가 더 많이 소모됨"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP 통화 사용"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP 통화 사용(Wi-Fi 전용)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"데이터 네트워크 사용 가능 시 모든 통화에 사용"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"인터넷 통화 전용"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"통화할 때마다 묻기"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP 통화 전용"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"모든 통화에 사용"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"발신 전화 유형"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"인터넷 전화 계정 사용:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"인터넷 전화를 걸 때 항상 사용"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"\'휴대전화 > 설정 > 인터넷 통화 설정 > 계정 화면\'에서 기본으로 사용할 인터넷 통화 계정을 변경할 수 있습니다."</string>
- <string name="pstn_phone" msgid="9596332924895028">"휴대전화 통화"</string>
- <string name="internet_phone" msgid="4444458244774004247">"인터넷 전화"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"인터넷 전화 계정 없음"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"휴대전화에 인터넷 통화 계정이 없습니다. 지금 추가하시겠습니까?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"추가"</string>
<string name="add_sip_account" msgid="800843669753980091">"계정 추가"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"계정 삭제"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP 계정"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"프로필 닫기"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"확인"</string>
<string name="close_profile" msgid="3122414058856309881">"닫기"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"기본 계정. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"상태 확인 중..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"등록 중..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"계속 시도 중..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"포트 번호"</string>
<string name="transport_title" msgid="889155457465372527">"전송 유형"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"연결 유지 메시지 보내기"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"기본 계정으로 설정"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"발신 전화에 사용됨"</string>
<string name="advanced_settings" msgid="6622996380747040711">"설정(선택사항)"</string>
<string name="auth_username_title" msgid="8262491689004708265">"인증 사용자 이름"</string>
<string name="auth_username_summary" msgid="941160241371436473">"인증에 사용된 사용자 이름"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 모두 숨기려면 터치"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>은(는) 필수이므로 비워 둘 수 없습니다."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"포트 번호는 1000~65534 사이여야 합니다."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"인터넷에 연결되지 않음"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi에 연결되지 않음"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"인터넷 전화를 걸려면 먼저 인터넷 연결을 확인하세요."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"인터넷 전화를 사용하려면 Wi-Fi 네트워크에 연결되어 있어야 합니다(무선 및 네트워크 설정 사용)."</string>
- <string name="no_voip" msgid="1600568347241920141">"인터넷 전화가 지원되지 않음"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP 통화를 하려면 먼저 인터넷 연결을 확인하세요."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP 통화를 사용하려면 Wi-Fi 네트워크에 연결해야 합니다(무선 및 네트워크 설정 사용)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP 통화가 지원되지 않습니다."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"자동"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"항상 보내기"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"내장된 인터넷 전화"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"SIP 통화 기본 지원"</string>
</resources>
diff --git a/sip/res/values-ky-rKG/strings.xml b/sip/res/values-ky-rKG/strings.xml
index df6ad5d..a61df19 100644
--- a/sip/res/values-ky-rKG/strings.xml
+++ b/sip/res/values-ky-rKG/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Интернет аркылуу чалуу жөндөөлөрү"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Интернет аркылуу чалуу (SIP) каттоо эсептери"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP жөндөөлөрү"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP эсептик жазуулары"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Каттоо эсептери"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Келген чалууларды кабыл алуу"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Батареянын кубатын көбүрөөк керектейт"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Интернет аркылуу чалуу"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Интернет аркылуу чалуу (Wi-Fi гана)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Көбүрөөк батарея кубатын колдонот"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP чалуусун пайдалануу"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP чалуусун пайдалануу (Wi-Fi гана)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Дайындар тармагы жеткиликтүү болгон учурдагы бардык чалуулар үчүн"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Интернет аркылуу чалуулар үчүн гана"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Ар бир чалуу сайын суралсын"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP чалуулар үчүн гана"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Бардык чалуулар үчүн"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Чалуу"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Интернет аркылуу чалуу каттоо эсебин колдонуңуз:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Ар дайым Интернет чалууларын пайдалануу"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Телефон > Жөндөөлөр > Интернет аркылуу чалуу жөндөөлөрү > Каттоо эсептеринин экранына өтүп, демейки Интернет чалуу каттоо эсебин өзгөртсөңүз болот."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Уюктук телефон чалуусу"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Интернет аркылуу чалуу"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Интернет аркылуу чалуу эсеби жок"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Бул телефондо бир дагы интернет аркылуу чалуу эсеби жок. Бирди кошосузбу?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Кошуу"</string>
<string name="add_sip_account" msgid="800843669753980091">"Каттоо эсебин кошуу"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Каттоо эсебин алып салуу"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP каттоо эсептери"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Профилди жабуу"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Жабуу"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Негизги каттоо эсеби. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Абалы текшерилүүдө…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Катталууда…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Дагы эле аракет жасалууда…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Порт номери"</string>
<string name="transport_title" msgid="889155457465372527">"Унаа түрү"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Туташууну текшерген билдирүүнү жөнөтүү"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Негизги каттоо эсеби катары коюу"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Чыгуучу чалуулар үчүн колдонулат"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Кошумча жөндөөлөр"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Аныктыкты текшерүүчү колдонуучунун ысымы"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Колдонуучунун ысымы аныктыкты текшерүү үчүн колдонулат"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Бардыгын жашыруу үчүн тийип коюңуз"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> талап кылынат жана бош калтырганга болбойт."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Порттун номери 1000 баштап 65534 чейин болушу керек."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Интернет байланышы жок"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi байланышы жок"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Интернет аркчалуу үчүн, алгач интернет байланышыңызды текшериңиз"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Интернет аркылуу чалуу үчүн, Wi-Fi тармагына туташуу керек (Зымсыз Тармактар жөндөөлөрүн колдонуңуз)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Интернет аркылуу чалуу колдоого алынбайт"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP чалуу жайгаштыруу үчүн, адегенде Интернет туташууңузду текшериңиз."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP чалууларын жасоо үчүн Wi-Fi тармагына туташышыңыз керек (Зымсыз & Тармак жөндөөлөрүн пайдаланыңыз)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP чалуу колдоого алынбайт"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Автоматтык"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Ар дайым жөнөтүлсүн"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Кыналган Интернет чалуусу"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Камтылган SIP чалуу"</string>
</resources>
diff --git a/sip/res/values-lo-rLA/strings.xml b/sip/res/values-lo-rLA/strings.xml
index 9e4a5e6..3bdc32c 100644
--- a/sip/res/values-lo-rLA/strings.xml
+++ b/sip/res/values-lo-rLA/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"ການຕັ້ງຄ່າການໂທຜ່ານອິນເຕີເນັດ"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"ບັນຊີໂທຜ່ານອິນເຕີເນັດ (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"ການຕັ້ງຄ່າ SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"ບັນຊີ SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"ບັນຊີ"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ຮັບສາຍໂທເຂົ້າ"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ຫຼຸດອາຍຸການນຳໃຊ້ແບັດເຕີຣີ"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ໃຊ້ການໂທຜ່ານອິນເຕີເນັດ"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ໃຊ້ການໂທຜ່ານອິນເຕີເນັດເທົ່ານັ້ນ (Wi-Fi ເທົ່ານັ້ນ)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ໃຊ້ອາຍຸແບັດເຕີຣີເພີ່ມເຕີມ"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"ໃຊ້ການໂທ SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"ໃຊ້ການໂທ SIP (Wi-Fi ເທົ່ານັ້ນ)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"ສຳລັບທຸກສາຍເມື່ອສາມາດໃຊ້ຂໍ້ມູນເຄືອຂ່າຍໄດ້"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"ສຳລັບການໂທຜ່ານອິນເຕີເນັດເທົ່ານັ້ນ"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ຖາມທຸກເທື່ອທີ່ໂທ"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ສຳລັບການໂທ SIP ເທົ່ານັ້ນ"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ສຳລັບທຸກສາຍ"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"ໂທລະສັບ"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ໃຊ້ບັນຊີໂທຜ່ານອິນເຕີເນັດ:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"ໃຊ້ການໂທຜ່ານອິນເຕີເນັດສະເໝີ"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"ທ່ານສາມາດເລືອກໄດ້ວ່າຈະໃຊ້ບັນຊີໂທຜ່ານອິນເຕີເນັດບັນຊີໃດເປັນບັນຊີເລີ່ມຕົ້ນໄດ້ ໂດຍໄປທີ່ໜ້າຈໍໂທລະສັບ > ການຕັ້ງຄ່າ > ການຕັ້ງຄ່າໂທຜ່ານອິນເຕີເນັດ > ບັນຊີ."</string>
- <string name="pstn_phone" msgid="9596332924895028">"ໂທດ້ວຍໂທລະສັບມືຖື"</string>
- <string name="internet_phone" msgid="4444458244774004247">"ໂທຜ່ານອິນເຕີເນັດ"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ບໍ່ມີບັນຊີໂທຜ່ານອິນເຕີເນັດ"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"ບໍ່ມີບັນຊີໂທຜ່ານອິນເຕີເນັດໃນໂທລະສັບໜ່ວຍນີ້. ທ່ານຕ້ອງການເພີ່ມບັນຊີໃສ່ບໍ່?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"ເພີ່ມ"</string>
<string name="add_sip_account" msgid="800843669753980091">"ເພີ່ມບັນຊີ"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"ລຶບບັນຊີ"</string>
<string name="sip_account_list" msgid="5610858485304821480">"ບັນຊີ SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"ປິດໂປຣໄຟລ໌"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ຕົກລົງ"</string>
<string name="close_profile" msgid="3122414058856309881">"ປິດ"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"ບັນຊີຫຼັກ. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"ກຳລັງກວດສອບສະຖານະ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"ກຳລັງລົງທະບຽນ..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"ຍັງຄົງພະຍາຍາມຢູ່..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"ໝາຍເລກພອດ"</string>
<string name="transport_title" msgid="889155457465372527">"ປະເພດການສົ່ງຂໍ້ມູນ"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"ສົ່ງ keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"ຕັ້ງໃຫ້ເປັນບັນຊີຫຼັກ"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"ໃຊ້ເພື່ອການໂທອອກ"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ການຕັ້ງຄ່າທາງເລືອກເສີມ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ຊື່ຜູ່ໃຊ້ສຳລັບການພິສູດຢືນຢັນໂຕ"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ຊື່ຜູ່ໃຊ້ເພື່ອການພິສູດຢືນຢັນໂຕ"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ແຕະເພື່ອເຊື່ອງທັງໝົດ"</string>
<string name="empty_alert" msgid="6659484914371384024">"ຕ້ອງລະບຸ <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ແລະບໍ່ສາມາດປ່ອຍຫວ່າງໄດ້."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"ໝາຍເລກພອດຄວນຢູ່ລະຫວ່າງ 1000 ແລະ 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"ບໍ່ມີການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"ບໍ່ມີການເຊື່ອມຕໍ່ Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"ເພື່ອໂທຜ່ານອິນເຕີເນັດ, ໃຫ້ກວດສອບການເຊື່ອມຕໍ່ອິນເຕີເນັດຂອງທ່ານກ່ອນ."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"ທ່ານຕ້ອງເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍ Wi-Fi ເພື່ອໃຊ້ການໂທຜ່ານອິນເຕີເນັດ (ໄປທີ່ເມນູ ລະບົບໄຮ້ສາຍ & ການຕັ້ງຄ່າເຄືອຂ່າຍ)"</string>
- <string name="no_voip" msgid="1600568347241920141">"ບໍ່ຮອງຮັບການໂທຜ່ານອິນເຕີເນັດ"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"ເພື່ອໃຊ້ການໂທ SIP, ກວດເບິ່ງການເຊື່ອມຕໍ່ອິນເຕີເນັດຂອງທ່ານກ່ອນ."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"ທ່ານຈຳເປັນຕ້ອງໄດ້ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍ Wi-Fi ສຳລັບການໂທ SIP (ໃຊ້ການຕັ້ງຄ່າເຄືອຂ່າຍຂອງໄວເລສ)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"ການໂທ SIP ບໍ່ຮອງຮັບ"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"ອັດຕະໂນມັດ"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"ສົ່ງຕະຫຼອດ"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"ການໂທຜ່ານອິນເຕີເນັດທີ່ມາກັບເຄື່ອງ"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"ການໂທ SIP ໃນເຄື່ອງ"</string>
</resources>
diff --git a/sip/res/values-lt/strings.xml b/sip/res/values-lt/strings.xml
index 813abb4..7ce074c 100644
--- a/sip/res/values-lt/strings.xml
+++ b/sip/res/values-lt/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Skambučio internetu nustatymai"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Skambinimo internetu (SIP) paskyros"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP nustatymai"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP paskyros"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Paskyros"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Gauti gaunamus skambučius"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Sutrumpėja akumuliatoriaus naudojimo laikas"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Naudoti skambinimo internetu paslaugą"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Naudoti skambinimo internetu paslaugą (tik „Wi-Fi“)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Eikvojama daugiau akumuliatoriaus energijos"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Naudoti SIP skambinimą"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Naudoti SIP skambinimą (tik „Wi-Fi“)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Visiems skambučiams atlikti, kai pasiekiamas duomenų tinklas"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Tik skambučiams internetu atlikti"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Klausti dėl kiekvieno skambučio"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Tik SIP skambučiams"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Visiems skambučiams atlikti"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Skambinti"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Naudoti skambinimo internetu paskyrą:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Visada naudoti skambinant internetu"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Numatytąją skambinimo internetu paskyrą galite pakeisti čia: „Telefonas“ > „Nustatymai“ > „Skambučio internetu nustatymai“ > „Paskyrų“ ekranas."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Skambutis mobiliuoju telefonu"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Skambutis internetu"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Nėra skambinimo internetu paskyros"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Šiame telefone nenustatyta nė viena skambinimo internetu paskyra. Ar norite pridėti ją dabar?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Pridėti"</string>
<string name="add_sip_account" msgid="800843669753980091">"Pridėti paskyrą"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Pašalinti paskyrą"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP paskyros"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Uždaryti profilį"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Gerai"</string>
<string name="close_profile" msgid="3122414058856309881">"Uždaryti"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Pagrindinė paskyra. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Tikrinama būsena..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registruojama..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Vis dar bandoma..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Prievado numeris"</string>
<string name="transport_title" msgid="889155457465372527">"Transportavimo tipas"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Siųsti palaikymo pranešimus"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Nustatyti kaip pagrindinę paskyrą"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Naudojama siunčiamiems skambučiams atlikti"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Pasirenkami nustatymai"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Tapatybės nustatymo naudotojo vardas"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Tapatybei nustatyti naudotas naudotojo vardas"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Jei norite viską paslėpti, palieskite"</string>
<string name="empty_alert" msgid="6659484914371384024">"Lauke „<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>“ būtina nurodyti vertę – jis negali likti tuščias."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Prievado numeris turi būti nuo 1 000 iki 65 534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Nėra interneto ryšio"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Nėra „Wi-Fi“ ryšio"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Jei norite skambinti internetu, pirmiausia patikrinkite interneto ryšį."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Jei norite skambinti internetu, turite būti prisijungę prie „Wi-Fi“ ryšio tinklo (naudokite nustatymus „Belaidis ryšys ir tinklas“)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Skambinimas internetu nepalaikomas"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Kad atliktumėte SIP skambutį, pirmiausia patikrinkite interneto ryšį."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Kad galėtumėte atlikti SIP skambučius, turite būti prisijungę prie „Wi-Fi“ tinklo (naudokite „Belaidžio ryšio ir tinklo“ nustatymus)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP skambinimas nepalaikomas"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatinis"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Visada siųsti"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Įdiegta skambučių internetu paslauga"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Integruotas SIP skambinimas"</string>
</resources>
diff --git a/sip/res/values-lv/strings.xml b/sip/res/values-lv/strings.xml
index e13090a..b1337b5 100644
--- a/sip/res/values-lv/strings.xml
+++ b/sip/res/values-lv/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Interneta zvanu iestatījumi"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Interneta zvanu (SIP) konti"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP iestatījumi"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP konti"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Konti"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Saņemt ienākošos zvanus"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Samazina akumulatora darbības mūža ilgumu"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Interneta zvanu izmantošana"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Izmantot interneta zvanus (tikai Wi-Fi tīklā)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Patērē vairāk akumulatora enerģijas"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP zvanu izmantošana"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP zvanu izmantošana (tikai Wi-Fi tīklā)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Visiem zvaniem, ja ir pieejams datu tīkls"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Tikai interneta zvaniem"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Jautāt katram zvanam"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Tikai SIP zvaniem"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Visiem zvaniem"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Veikt zvanu"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Izmantot interneta zvanu kontu:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Vienmēr izmantot interneta zvanu veikšanai"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Varat mainīt pēc noklusējuma izmantoto interneta zvanu kontu, atverot ekrānu Tālrunis > Iestatījumi > Interneta zvanu iestatījumi > Konti."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobilā tālruņa zvans"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Interneta zvans"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Nav interneta zvanu konta"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Šajā tālrunī nav neviena interneta zvanu konta. Vai vēlaties pievienot kontu tūlīt?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Pievienot"</string>
<string name="add_sip_account" msgid="800843669753980091">"Pievienot kontu"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Konta noņemšana"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP konti"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Profila aizvēršana"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Labi"</string>
<string name="close_profile" msgid="3122414058856309881">"Aizvērt"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primārais konts. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Notiek statusa pārbaude..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Notiek reģistrācija..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Joprojām mēģina..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Porta numurs"</string>
<string name="transport_title" msgid="889155457465372527">"Transporta veids"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Saites darbības pārbaudes ziņojuma sūtīšana"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Iestatīt kā primāro kontu"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Tiek izmantots izejošajiem zvaniem"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Neobligāti iestatījumi"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Autentifikācijai izmantotais lietotājvārds"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Autentifikācijai izmantotais lietotājvārds"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Pieskarieties, lai paslēptu visu"</string>
<string name="empty_alert" msgid="6659484914371384024">"Lauks <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ir jāaizpilda obligāti; tas nedrīkst būt tukšs."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Porta numuram ir jābūt skaitlim no 1000 līdz 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Nav interneta savienojuma"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Nav Wi-Fi savienojuma"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Lai veiktu interneta zvanu, vispirms pārbaudiet interneta savienojumu."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Lai veiktu interneta zvanus, ir jābūt izveidotam savienojumam ar Wi-Fi tīklu (izmantojiet iestatījumus sadaļā Bezvadu savienojumi un tīkli)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Interneta zvani netiek atbalstīti"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Pirms veicat SIP zvanu, pārbaudiet interneta savienojumu."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Lai veiktu SIP zvanus, ir jāizmanto Wi-Fi tīkls (iestatījumi Bezvadu savienojumi un tīkli)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP zvani netiek atbalstīti"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automātiski"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Vienmēr sūtīt"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Iebūvēta zvanīšanas funkcija internetā"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Iebūvēta SIP zvanu funkcija"</string>
</resources>
diff --git a/sip/res/values-mk-rMK/strings.xml b/sip/res/values-mk-rMK/strings.xml
index ce48bda..96c043c 100644
--- a/sip/res/values-mk-rMK/strings.xml
+++ b/sip/res/values-mk-rMK/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Поставки за повици на интернет"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Сметки за повикување на интернет (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Поставки на СИП"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Сметки за SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Сметки"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Примај дојдовни повици"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Го намалува животниот век на батеријата"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Користи повикување на интернет"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Користи повикување на интернет (само Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Повеќе ја троши батеријата"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Користете повикување со СИП"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Користете повикување со СИП (само преку Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"За сите повици кога е достапна мрежа на податоци"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Само за повици на интернет"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Прашај за секој повик"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Само за повици со СИП"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"За сите повици"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Воспостави повик"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Користи сметка за повикување на интернет:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Секогаш користи за воспоставување повици на интернет"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Може да промените која сметка за повикување на интернет од телефонот ќе ја користите стандардно преку > Поставки > Поставки за повици од интернет > Екран со сметки."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Повик од мобилен телефон"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Повик на интернет"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Нема сметка за повикување на интернет"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Нема сметки за повикување на интернет на овој телефон. Дали сакате да додадете една сега?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Додај"</string>
<string name="add_sip_account" msgid="800843669753980091">"Додај сметка"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Отстрани сметка"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Сметки за SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Затвори го профилот"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Во ред"</string>
<string name="close_profile" msgid="3122414058856309881">"Затвори"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Примарна сметка. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Проверување статус..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Регистрирање..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Уште се обидува..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Број на порта"</string>
<string name="transport_title" msgid="889155457465372527">"Тип превоз"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Испрати „одржувај врска“"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Постави како примарна сметка"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Се користи за излезни повици"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Изборни поставки"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Корисничко име за автентикација"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Корисничко име што се користи за автентикација"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Допрете за да се сокријат сите"</string>
<string name="empty_alert" msgid="6659484914371384024">"Потребно е <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> и не може да се остави празно."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Бројот на портата треба да биде меѓу 1000 и 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Нема интернет конекција"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Нема Wi-Fi конекција"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"За да воспоставите повик на интернет, прво проверете ја вашата интернет конекција."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Треба да сте поврзани со Wi-Fi мрежа за повици на интернет (користете ги безжичните и мрежните поставки)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Повикувањето на интернет не е поддржано"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"За да воспоставите повик со СИП, прво проверете го поврзувањето на интернет."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Треба да бидете поврзани со мрежа на Wi-Fi за повици со СИП (користете ги поставките за безжичен интернет и за мрежа)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Повикување со СИП не е поддржано"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Автоматски"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Испраќај секогаш"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Вградено повикување преку интернет"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Вградено повикување со СИП"</string>
</resources>
diff --git a/sip/res/values-ml-rIN/strings.xml b/sip/res/values-ml-rIN/strings.xml
index c3af42b..814f2a6 100644
--- a/sip/res/values-ml-rIN/strings.xml
+++ b/sip/res/values-ml-rIN/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"ഇന്റർനെറ്റ് കോൾ ക്രമീകരണങ്ങൾ"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"ഇന്റർനെറ്റ് കോൾ ചെയ്യൽ (SIP) അക്കൗണ്ടുകൾ"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ക്രമീകരണങ്ങൾ"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP അക്കൗണ്ടുകൾ"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"അക്കൗണ്ടുകൾ"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ഇൻകമിംഗ് കോളുകൾ സ്വീകരിക്കുക"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ബാറ്ററി ആയുസ്സ് കുറയ്ക്കുന്നു"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ഇന്റർനെറ്റ് കോൾ ചെയ്യൽ ഉപയോഗിക്കുക"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ഇന്റർനെറ്റ് കോൾ ചെയ്യൽ ഉപയോഗിക്കുക (Wi-Fi യിൽ മാത്രം)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"കൂടുതൽ ബാറ്ററി ആയുസ് ഉപയോഗിക്കുന്നു"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP കോൾചെയ്യൽ ഉപയോഗിക്കുക"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP കോൾചെയ്യൽ ഉപയോഗിക്കുക (Wi-Fi മാത്രം)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"ഡാറ്റ നെറ്റ്വർക്ക് ലഭ്യമാകുമ്പോൾ എല്ലാ കോളുകൾക്കായും"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"ഇന്റർനെറ്റ് കോളുകൾക്ക് മാത്രം"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ഓരോ കോളിനും ആവശ്യപ്പെടുക"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP കോളുകൾക്ക് മാത്രം"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"എല്ലാ കോളുകൾക്കും"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"കോൾ ചെയ്യുക"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ഇന്റർനെറ്റ് കോൾ ചെയ്യാനുള്ള അക്കൗണ്ട് ഉപയോഗിക്കുക:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"എല്ലായ്പ്പോഴും ഇന്റർനെറ്റ് കോളുകൾ വിളിക്കാൻ ഉപയോഗിക്കുക"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"ഫോൺ > ക്രമീകരണങ്ങൾ > ഇന്റർനെറ്റ് കോൾ ക്രമീകരണങ്ങൾ > അക്കൗണ്ട്സ് സ്ക്രീൻ എന്നതിൽ നിന്നും നിങ്ങൾക്ക് ഏത് ഇന്റർനെറ്റ് കോൾ അക്കൗണ്ട് സ്ഥിരമായി ഉപയോഗിക്കണമെന്ന് മാറ്റാം."</string>
- <string name="pstn_phone" msgid="9596332924895028">"സെൽ ഫോൺ കോൾ"</string>
- <string name="internet_phone" msgid="4444458244774004247">"ഇന്റർനെറ്റ് കോൾ"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ഇന്റർനെറ്റ് കോൾ ചെയ്യാനുള്ള അക്കൗണ്ട്"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"ഈ ഫോണിൽ ഇന്റർനെറ്റ് കോൾ ചെയ്യാനുള്ള അക്കൗണ്ടുകളൊന്നുമില്ല. പുതിയതൊന്ന് ചേർക്കണോ?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"ചേർക്കുക"</string>
<string name="add_sip_account" msgid="800843669753980091">"അക്കൗണ്ട് ചേർക്കുക"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"അക്കൗണ്ട് നീക്കംചെയ്യുക"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP അക്കൗണ്ടുകൾ"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"പ്രൊഫൈൽ അടയ്ക്കുക"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ശരി"</string>
<string name="close_profile" msgid="3122414058856309881">"അടയ്ക്കുക"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"പ്രാഥമിക അക്കൗണ്ട്. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"നില പരിശോധിക്കുന്നു..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"രജിസ്റ്റർ ചെയ്യുന്നു…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"ഇപ്പോഴും ശ്രമിക്കുന്നു…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"പോർട്ട് നമ്പർ"</string>
<string name="transport_title" msgid="889155457465372527">"ട്രാൻസ്പോർട്ട് തരം"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"സജീവമായി തുടരുക എന്നത് അയയ്ക്കുക"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"പ്രാഥമിക അക്കൗണ്ടായി സജ്ജമാക്കുക"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"ഔട്ട്ബൗണ്ട് കോളുകൾക്കായി ഉപയോഗിച്ചു"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ഓപ്ഷണൽ ക്രമീകരണങ്ങൾ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"പ്രാമാണീകരണ ഉപയോക്തൃനാമം"</string>
<string name="auth_username_summary" msgid="941160241371436473">"പ്രാമാണീകരണത്തിന് ഉപയോഗിച്ച ഉപയോക്തൃനാമം"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ എല്ലാം മറയ്ക്കാൻ സ്പർശിക്കുക"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ആവശ്യമായതിനാൽ ശൂന്യമായിടാനാകില്ല."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"പോർട്ട് നമ്പർ 1000, 65534 എന്നിവയ്ക്കിടയിലായിരിക്കണം."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"ഇന്റർനെറ്റ് കണക്ഷൻ ഇല്ല"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi കണക്ഷനൊന്നുമില്ല"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"ഒരു ഇന്റർനെറ്റ് കോൾ വിളിക്കുന്നതിന്, ആദ്യം നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"ഇന്റർനെറ്റ് കോളുകൾക്കായി നിങ്ങൾ Wi-Fi നെറ്റ്വർക്കിൽ കണക്റ്റുചെയ്യേണ്ടതുണ്ട് (വയർലെസ്, നെറ്റ്വർക്ക് ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുക)."</string>
- <string name="no_voip" msgid="1600568347241920141">"ഇന്റർനെറ്റ് കോൾ ചെയ്യുന്നതിനെ പിന്തുണയ്ക്കുന്നില്ല"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP കോൾചെയ്യുന്നതിന്, ആദ്യം നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP കോളുകൾക്കായി Wi-Fi നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്യേണ്ടതുണ്ട് (വയർലെസ്, നെറ്റ്വർക്ക് ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുക)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP കോൾചെയ്യൽ പിന്തുണയ്ക്കുന്നില്ല"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"യാന്ത്രികമായി"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"എല്ലായ്പ്പോഴും അയയ്ക്കുക"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"അന്തർനിർമ്മിത ഇന്റർനെറ്റ് കോൾ ചെയ്യൽ"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"അന്തർ നിർമ്മിത SIP കോൾചെയ്യൽ"</string>
</resources>
diff --git a/sip/res/values-mn-rMN/strings.xml b/sip/res/values-mn-rMN/strings.xml
index 2c8c334..48792c6 100644
--- a/sip/res/values-mn-rMN/strings.xml
+++ b/sip/res/values-mn-rMN/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Интернэт дуудлагын тохиргоо"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Интернэт дуудлагын (SIP) акаунт"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP тохиргоонууд"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP акаунтууд"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Акаунт"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Ирж буй дуудлага хүлээж авах"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Зайны цэнэгийг бууруулна"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Интернэт дуудлага ашиглах"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Интернэт дуудлага ашиглах (зөвхөн Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Илүү их цэнэг хэрэглэдэг"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP дуудлагыг ашигла"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP дуудлагыг ашигла (зөвхөн Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Дата сүлжээтэй үед бүх дуудлагад"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Зөвхөн Интернэт дуудлагад"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Дуудлага бүрт асуух"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP дуудлага хийхэд зориулагдсан"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Бүх дуудлагад"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Дуудлага хийх"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Интернэт дуудлагын акаунт ашиглана уу:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Интернэт дуудлага хийхэд байнга ашиглах"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Та Интернэт дуудлагын аль акаунтыг үндсэнээр ашиглахыг Утас > Тохиргоо > Интернэт дуудлагын тохиргоо > Акаунт гэснээс өөрчилж болно."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Үүрэн утасны дуудлага"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Интернет дуудлага"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Интернэт дуудлагын акаунт байхгүй"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Энэ утсан дээр Интернэт дуудлагын акаунт байхгүй байна. Та одоо нэмэх үү?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Нэмэх"</string>
<string name="add_sip_account" msgid="800843669753980091">"Акаунт нэмэх"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Акаунтыг арилгах"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP акаунт"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Профайлыг хаана уу"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Тийм"</string>
<string name="close_profile" msgid="3122414058856309881">"Хаах"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Үндсэн акаунт. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Статусыг шалгаж байна..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Бүртгэж байна…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Оролдож байна…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Портын дугаар"</string>
<string name="transport_title" msgid="889155457465372527">"Тээврийн хэлбэр"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Торгоох илгээх"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Үндсэн акаунт болгох"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Гадагш чиглэсэн дуудлагуудад ашиглагддаг"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Сонголтын тохиргоо"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Гэрчлэлийн хэрэглэгчийн нэр"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Гэрчлэлд ашигласан хэрэглэгчийн нэр"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Бүгдийг нуухын тулд хүрнэ үү"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> заавал шаардагдах бөгөөд хоосон орхиж болохгүй."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Портын дугаар 1000 болон 65534 хооронд байх ёстой."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Интернет холболт байхгүй"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi холболт байхгүй"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Интернэт дуудлага хийхийн тулд эхлээд Интернэт холболтоо шалгана уу."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Та Интернэт дуудлага хийхийн тулд Wi-Fi сүлжээнд холбогдсон байх шаардлагатай (Wireless & Сүлжээний тохиргоог ашиглана уу)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Интернэт дуудлага дэмжигдэдгүй"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP дуудлага хийхийн тулд эхлээд интернет сүлжээгээ шалгана уу"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP дуудлага хийхийн тулд Wi-Fi сүлжээнд холбогдсон байх хэрэгтэй (Wi-Fi болон Сүлжээний тохиргоог ашигла)"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP дуудлага хийхийг дэмжээгүй байна"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Автоматаар"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Байнга илгээх"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Суурилагдсан Интернет дуудлага"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"SIP дуудлага өгөгдсөн"</string>
</resources>
diff --git a/sip/res/values-mr-rIN/strings.xml b/sip/res/values-mr-rIN/strings.xml
index adc2a81..59da732 100644
--- a/sip/res/values-mr-rIN/strings.xml
+++ b/sip/res/values-mr-rIN/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"इंटरनेट कॉल सेटिंग्ज"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"इंटरनेट कॉलिंंग (SIP) खाती"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP सेटिंग्ज"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP खाती"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"खाती"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"येणारे कॉल प्राप्त करा"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"बॅटरी आयुष्य कमी करते"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"इंटरनेट कॉलिंंग वापरा"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"इंटरनेट कॉलिंंग वापरा (Wi-Fi केवळ)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"अधिक बॅटरी आयुष्य वापरते"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP कॉल करणे वापरा"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP कॉल करणे वापरा (वाय-फाय केवळ)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"डेटा नेटवर्क उपलब्ध असल्यावर सर्व कॉलसाठी"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"केवळ इंटरनेट कॉलसाठी"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"प्रत्येक कॉलसाठी विचारा"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"केवळ SIP कॉलसाठी"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"सर्व कॉलसाठी"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"कॉल करा"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"इंटरनेट कॉलिंग खात्याचा वापर करा:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"इंटरनेट कॉल करण्यासाठी नेहमी वापर करा"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"आपण फोन > सेटिंग्ज > इंटरनेट कॉल सेटिंग्ज > खाते स्क्रीन वरून डीफॉल्टनुसार कोणते इंटरनेट कॉलिंग खाते वापरावे ते बदलू शकता."</string>
- <string name="pstn_phone" msgid="9596332924895028">"सेल फोन कॉल"</string>
- <string name="internet_phone" msgid="4444458244774004247">"इंटरनेट कॉल"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"कोणतेही इंटरनेट कॉलिंग खाते नाही"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"या फोनवर कोणतीही इंटरनेट कॉलिंग खाती नाहीत. आपण आता एक जोडू इच्छिता?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"जोडा"</string>
<string name="add_sip_account" msgid="800843669753980091">"खाते जोडा"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"खाते काढा"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP खाती"</string>
@@ -46,13 +36,12 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"प्रोफाईल बंद करा"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ठीक आहे"</string>
<string name="close_profile" msgid="3122414058856309881">"बंद करा"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"प्राथमिक खाते. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"स्थिती तपासत आहे..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"नोंदणी करीत आहे..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"अद्याप प्रयत्न करीत आहे..."</string>
<string name="registration_status_not_receiving" msgid="7620333886153361090">"कॉल प्राप्त होत नाहीत."</string>
<string name="registration_status_no_data" msgid="2541999976218192413">"इंटरनेट कनेक्शन नसल्याने खाते नोंदणी थांबली."</string>
- <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Wi-Fi कनेक्शन नसल्याने खाते नोंदणी थांबली."</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"वाय-फाय कनेक्शन नसल्याने खाते नोंदणी थांबली."</string>
<string name="registration_status_not_running" msgid="514205414303796800">"खाते नोंदणी अयशस्वी."</string>
<string name="registration_status_done" msgid="3264961069247314253">"कॉल प्राप्त करीत आहे."</string>
<string name="registration_status_failed_try_later" msgid="2199970021756384317">"खाते नोंदणी अयशस्वी: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); नंतर प्रयत्न करू"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"पोर्ट नंबर"</string>
<string name="transport_title" msgid="889155457465372527">"वाहतूक प्रकार"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"चैतन्यमय-ठेवा पाठवा"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"प्राथमिक खाते म्हणून सेट करा"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"आउटबाउंड कॉलसाठी वापरले"</string>
<string name="advanced_settings" msgid="6622996380747040711">"पर्यायी सेटिंग्ज"</string>
<string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण वापरकर्तानाव"</string>
<string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरणासाठी वापरकर्तानाव वापरले"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ सर्व लपविण्यासाठी स्पर्श करा"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> आवश्यक आहे आणि रिक्त सोडले जाऊ शकत नाही."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"पोर्ट नंबर 1000 आणि 65534 मध्ये असावा."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"इंटरनेट कनेक्शन नाही"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"कोणतेही Wi-Fi कनेक्शन नाही"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"इंटरनेट कॉल करण्यासाठी, प्रथम आपले इंटरनेट कनेक्शन तपासा."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"आपल्याला इंटरनेट कॉलसाठी Wi-Fi नेटवर्कशी कनेक्ट केलेले राहणे आवश्यक आहे (वायरलेस आणि नेटवर्क सेटिंग्जचा वापर करा)."</string>
- <string name="no_voip" msgid="1600568347241920141">"इंटरनेट कॉलिंंग समर्थित नाही"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"एक SIP कॉल करण्यासाठी, प्रथम आपले इंटरनेट कनेक्शन तपासा."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP कॉलसाठी आपण वाय-फाय नेटवर्कशी कनेक्ट केलेले असणे आवश्यक आहे (वायरलेस & नेटवर्क सेटिंग्ज वापरा)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP कॉल करणे समर्थित नाही"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"स्वयंचलित"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"नेहमी पाठवा"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"अंगभूत इंटरनेट कॉलिंग"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"अंगभूत SIP कॉल करणे"</string>
</resources>
diff --git a/sip/res/values-ms-rMY/strings.xml b/sip/res/values-ms-rMY/strings.xml
index f0877d7..f41589e 100644
--- a/sip/res/values-ms-rMY/strings.xml
+++ b/sip/res/values-ms-rMY/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Tetapan panggilan Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Akaun panggilan Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Tetapan SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Akaun SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Akaun"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Menerima panggilan masuk"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Mengurangkan hayat bateri"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Guna panggilan Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Guna panggilan Internet (Wi-Fi sahaja)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Menggunakan lebih hayat bateri"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Gunakan panggilan SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Gunakan panggilan SIP (Wi-Fi sahaja)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Untuk semua panggilan semasa rangkaian data tersedia"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Hanya untuk panggilan Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Tanya untuk setiap panggilan"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Hanya untuk panggilan SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Untuk semua panggilan"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Membuat panggilan"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Gunakan akaun panggilan Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Sentiasa gunakan untuk membuat panggilan Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Anda boleh menukar akaun panggilan Internet mana untuk digunakan secara lalai daripada skrin Telefon > Tetapan > tetapan panggilan Internet > Akaun."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Panggilan telefon bimbit"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Panggilan internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Tiada akaun panggilan Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Tidak ada akaun panggilan internet pada telefon ini. Adakah anda mahu menambah satu sekarang?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Tambah"</string>
<string name="add_sip_account" msgid="800843669753980091">"Tambah akaun"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Alih keluar akaun"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Akaun SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Tutup profil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Tutup"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Akaun utama. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Menyemak status..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Mendaftar..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Masih mencuba..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Nombor port"</string>
<string name="transport_title" msgid="889155457465372527">"Jenis pengangkutan"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Hantar pengekal"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Tetapkan sebagai akaun utama"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Digunakan untuk panggilan keluar"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Tetapan pilihan"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nama pengguna pengesahan"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nama pengguna yang digunakan untuk pengesahan"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Sentuh untuk sembunyikan semua"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> diperlukan dan tidak boleh dibiarkan kosong."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Nombor port harus berada dalam lingkungan 1000 dan 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Tiada sambungan Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Tiada sambungan Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Untuk membuat panggilan Internet, semak sambungan Internet anda terlebih dahulu."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Anda perlu disambungkan kepada rangkaian Wi-Fi untuk membuat panggilan Internet (guna tetapan Wayarles & Rangkaian)"</string>
- <string name="no_voip" msgid="1600568347241920141">"Panggilan Internet tidak disokong"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Untuk membuat panggilan SIP, periksa sambungan Internet anda dahulu."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Anda perlu disambungkan ke rangkaian Wi-Fi bagi panggilan SIP(gunakan tetapan Wayarles & Rangkaian)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Panggilan SIP tidak disokong"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatik"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Sentiasa hantar"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Panggilan Internet terbina dalam"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Panggilan SIP terbina dalam"</string>
</resources>
diff --git a/sip/res/values-my-rMM/strings.xml b/sip/res/values-my-rMM/strings.xml
index 5fa017c..621d4fe 100644
--- a/sip/res/values-my-rMM/strings.xml
+++ b/sip/res/values-my-rMM/strings.xml
@@ -16,37 +16,26 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"အင်တာနက် ခေါ်ဆိုမှု ဆက်တင်များ"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"အင်တာနက် ခေါ်ဆိုမှု (SIP) အကောင့်များ"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ချိန်ညှိချက်များ"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP အကောင့်များ"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"အကောင့်များ"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"အဝင် ခေါ်ဆိုမှုများ လက်ခံရန်"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ဘတ်ထရီ သတ်တမ်းကို လျှော့ချသည်"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"အင်တာနက် ဖုန်းခေါ်မှု သုံးရန်"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"အင်တာနက် ခေါ်ဆိုမှုကို သုံးရန် (ကြိုးမဲ့ အတွက်သာ)"</string>
- <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ဒေတာ ကွန်ယက် ရှိနေစဉ် ခေါ်ဆိုမှုများ အားလုံး အတွက်"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"အင်တာနက် ခေါ်ဆိုမှုများ အတွက်သာ"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ခေါ်ဆိုမှုတိုင်း အတွက်မေးရန်"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ဘတ်ထရီ သက်တမ်းပိုသုံးပါသည်"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP ခေါ်ဆိုမှု အသုံးပြုမည်"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ခေါ်ဆိုမှု အသုံးပြုမည် (ကြိုးမဲ့ အင်တာနက်သာ)"</string>
+ <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ဒေတာ ကွန်ရက် ရှိနေစဉ် ခေါ်ဆိုမှုများ အားလုံး အတွက်"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP ခေါ်ဆိုမှုများအတွက်သာ"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ခေါ်ဆိုမှုများ အားလုံး အတွက်"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"ဖုန်း ခေါ်ဆိုမှု"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"အင်တာနက် ခေါ်ဆိုမှု အကောင့်ကို သုံးရန်:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"အင်တာနက် ခေါ်ဆိုမှုများ အတွက် အမြဲတမ်းသုံးပါ"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"သင်သည် ဖုန်း > ဆက်တင်များ > အင်တာနက် ခေါ်ဆိုမှု ဆက်တင်များ > အကောင့်များ မျက်နှာပြင်ကို ဝင်ပြီး အင်တာနက် ခေါ်ဆိုမှု အတွက် မည်သည့် အကောင့်ကို ပုံသေ သုံးမည်ကို ပြောင်းလဲ နိုင်ပါသည်။"</string>
- <string name="pstn_phone" msgid="9596332924895028">"ဆဲလ် ဖုန်း ခေါ်ဆိုမှု"</string>
- <string name="internet_phone" msgid="4444458244774004247">"အင်တာနက်မှ ခေါ်ဆိုမှု"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"အင်တာနက် ခေါ်ဆိုမှု အကောင့် မရှိပါ"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"ဤဖုန်းထဲတွင် အင်တာနက် ခေါ်ဆိုမှု အကောင့်များ မရှိပါ။ အသစ်တစ်ခု ယခု ထည့်လိုပါသလား?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"ထည့်ရန်"</string>
<string name="add_sip_account" msgid="800843669753980091">"အကောင့် ထည့်ရန်"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"အကောင့်ကို ဖယ်ရှားရန်"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP အကောင့်များ"</string>
<string name="saving_account" msgid="5336529880235177448">"အကောင့်ကို သိမ်းဆည်းနေ…"</string>
<string name="removing_account" msgid="5537351356808985756">"အကောင့်ကို ဖယ်ရှားနေ…"</string>
- <string name="sip_menu_save" msgid="7882219814563869225">"သိမ်းဆည်းရန်"</string>
+ <string name="sip_menu_save" msgid="7882219814563869225">"သိမ်းပါ"</string>
<string name="sip_menu_discard" msgid="2350421645423888438">"စွန့်ပစ်ရန်"</string>
<string name="alert_dialog_close" msgid="1326011828713435134">"ပရိုဖိုင်ကို ပိတ်ရန်"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"အိုကေ"</string>
<string name="close_profile" msgid="3122414058856309881">"ပိတ်ရန်"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"ပင်မ အကောင့်။ <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"အခြေအနေကို စစ်ဆေးနေ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"မှတ်ပုံတင်နေ…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"ကြိုးစာနေဆဲ…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"ပို့ နံပါတ်"</string>
<string name="transport_title" msgid="889155457465372527">"သယ်ယူပို့ဆောင်ရေးအမျိုးအစား"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"keep-alive ကို ပို့ပါ"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"ပင်မ အကောင့် အဖြစ် သတ်မှတ်ရန်"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"အပြင်ထွက် ခေါ်ဆိုမှုများအတွက် သုံးသည်"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ရွေးနိုင်သော ရွေးစရာများ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"အသုံးပြုသူ အမည် အထောက်အထားကို စိစစ်ခြင်း"</string>
<string name="auth_username_summary" msgid="941160241371436473">"အသုံးပြုသူ အမည်ကို အထောက်အထား စိစစ်ရန် သုံးခဲ့"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ အားလုံး ဖျောက်ရန် ထိပါ"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> မှာ လိုအပ်ပြီး ပလာထား မရပါ"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"ပို့ နံပါတ်မှာ ၁၀၀၀ မှ ၆၅၅၃၄ အတွင်းမှာ ရှိရပါမည်"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"အင်တာနက် ဆက်သွယ်မှု မရှိပါ"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"ကြိုးမဲ့ ချိတ်ဆက်မှု မရှိပါ"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"အင်တာနက် ခေါ်ဆိုရန်အတွက် အင်တာနက်ဆက်သွယ်မှုကို အရင် စစ်ဆေးပါ"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"အင်နာက်ဖုန်း ခေါ်ဆိုရန် သင်သည် ကြိုးမဲ့ ကွန်ရက်နှင့် ချိတ်ဆက်ထားရမည် (ကြိုးမဲ့ & ကွန်ရက် ဆက်တင်ကို သုံးပါ)။"</string>
- <string name="no_voip" msgid="1600568347241920141">"အင်တာနက် ခေါ်ဆိုမှုကို မပံ့ပိုးပါ"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP ခေါ်ဆိုမှု ပြုလုပ်ရန်၊ သင့်အင်တာနက် ချိတ်ဆက်မှုကိုဦးစွာ စစ်ဆေးပါ။"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"ခေါ်ဆိုမှုအတွက် ကြိုးမဲ့ကွန်ရက် ချိတ်ဆက်ရန်လိုအပ်ပါသည် (ကြိုးမဲ့ နှင့် ကွန်ရက်ချိန်ညှိချက်များကို အသုံးပြုပါ)။"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP ခေါ်ဆိုမှု မထောက်ပံံ့ပါ။"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"အလိုအလျောက်"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"အမြဲတမ်း ပို့ရန်"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"တပ်ဆင်ပြီး အင်တာနက် ခေါ်ဆိုမှု"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"SIP မူလခေါ်ဆိုမှု"</string>
</resources>
diff --git a/sip/res/values-nb/strings.xml b/sip/res/values-nb/strings.xml
index fb9b429..5f8501c 100644
--- a/sip/res/values-nb/strings.xml
+++ b/sip/res/values-nb/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Innstillinger for Internett-anrop"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"SIP-kontoer (Internett-anrop)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-innstillinger"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-kontoer"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Kontoer"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Motta innkommende anrop"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduserer batterilevetiden"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Bruk Internett-anrop"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Bruk Internett-anrop (bare Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Bruker mer batterilevetid"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Bruk SIP-oppringing"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Bruk SIP-oppringing (kun for Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"For alle anrop hvor datanettverk er tilgjengelige"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Bare for Internett-anrop"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Spør ved alle anrop"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Kun for SIP-oppringing"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Bruk ved alle anrop"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Foreta anrop"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Bruk konto for Internett-anrop:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Standardvalg for Internett-anrop"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Du kan endre hvilken konto for Internett-anrop som skal brukes som standard, under Telefon > Innstillinger > Innstillinger for Internett-anrop > Kontoer."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobiltelefonanrop"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internett-anrop"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ingen konto for Internett-anrop"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Det er ingen konto for Internett-anrop på denne telefonen. Vil du legge til en nå?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Legg til"</string>
<string name="add_sip_account" msgid="800843669753980091">"Legg til konto"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Fjern kontoen"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-kontoer"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Lukk profilen"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Lukk"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Hovedkonto. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Kontrollerer statusen …"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrerer …"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Prøver fortsatt …"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Portnummer"</string>
<string name="transport_title" msgid="889155457465372527">"Transporttype"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Send hold-aktiv-meldinger"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Angi som hovedkonto"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Brukt til utgående anrop"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Valgfrie innstillinger"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Brukernavn for autentisering"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Brukernavn brukes til autentisering"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Trykk for å skjule alle"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> er obligatorisk. Feltet kan ikke være tomt."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Portnummeret må være mellom 1000 og 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Ingen Internett-tilkobling"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Ingen Wi-Fi-tilkobling"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Kontroller Internett-tilkoblingen før du foretar et Internett-anrop."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Du må være koblet til et Wi-Fi-nettverk for å foreta Internett-anrop (gå til innstillingene Trådløst og nettverk)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internett-anrop støttes ikke"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"For å foreta en SIP-oppringing må du først sjekke internettilkoblingen din."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Du må være koblet til et Wi-Fi-nettverk for å benytte SIP-oppringing (bruk Trådløst og nettverk-innstillingene)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-oppringing støttes ikke"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatisk"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Send alltid"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Innebygd Internett-ringing"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Innebygd SIP-oppringing"</string>
</resources>
diff --git a/sip/res/values-ne-rNP/strings.xml b/sip/res/values-ne-rNP/strings.xml
index cae861b..7ef1773 100644
--- a/sip/res/values-ne-rNP/strings.xml
+++ b/sip/res/values-ne-rNP/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"इन्टरनेट कल सेटिङहरू"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"इन्टरनेट कल गर्ने (SIP) खाताहरू"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP सेटिङहरू"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP खाताहरू"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"खाताहरू"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"आगमन कलहरू प्राप्त गर्नुहोस्"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ब्याट्रिको जीवन घटाउँछ"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"इन्टरनेट कल गर्न प्रयोग गर्नुहोस्"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"इन्टरनेट कल (वाइफाइ मात्र) उपयोग गर्नुहोस्"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"बढि ब्याट्री आयु खपत गर्छ"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP कल प्रयोग गर्नुहोस्"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP कल प्रयोग गर्नुहोस् (Wi-Fi मात्र)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"डेटा नेटवर्क उपलब्ध हुँदा सबै कलहरूको लागि"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"इन्टरनेट कलहरूको लागि मात्र"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"प्रत्येक कलको लागि सोध्नुहोस्"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"मात्र SIP कलका लागि"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"सबै कलहरूको लागि"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"कल राख्नुहोस्"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"इन्टरनेट कल गर्ने खाता प्रयोग गर्नुहोस्:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"इन्टरनेट कलहरू राख्न सधैँ प्रयोग गर्नुहोस्"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"तपाईँले फोनको पूर्वनिर्धारितको प्रयोगद्वारा सेटिङहरू, इन्टरनेट कल सेटिङहरू, खाता स्क्रिन परिवर्तन गर्न सक्नु हुन्छ।"</string>
- <string name="pstn_phone" msgid="9596332924895028">"मोबाइल फोन कल"</string>
- <string name="internet_phone" msgid="4444458244774004247">"इन्टरनेट कल"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"इन्टरनेट कल गर्ने खाता छैन"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"यो फोनमा कुनै इन्टरनेट कल गर्ने खाता छैन। के तपाईँको खाता थप्न चाहनुहुन्छ?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"थप्नुहोस्"</string>
<string name="add_sip_account" msgid="800843669753980091">"खाता थप्नुहोस्"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"खाता हटाउनुहोस्"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP खाताहरू"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"प्रोफाइल बन्द गर्नुहोस्"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ठीक छ"</string>
<string name="close_profile" msgid="3122414058856309881">"बन्द गर्नुहोस्"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"प्राथमिक खाता <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"स्थिति जाँच गर्दै..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"दर्ता गर्दै..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"प्रयास गरिँदै..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"पोर्ट सङ्ख्या"</string>
<string name="transport_title" msgid="889155457465372527">"यातायात प्रकार"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"चालु राख्नको लागि पठाउनुहोस्"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"प्राथमिक खाताको रूपमा सेट गर्नुहोस्"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"बहिर्गमन कलको लागि प्रयोग भएको"</string>
<string name="advanced_settings" msgid="6622996380747040711">"वैकल्पिक सेटिङहरू"</string>
<string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण प्रयोगकर्ता नाम"</string>
<string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरणको लागि प्रयोगकर्ता नाम प्रयोग भएको"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ छोएर सबै लुकाउनुहोस्"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> चाहिन्छ र खाली छोड्न सकिँदैन।"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"पोर्ट संख्या १००० र ६५५३४ को बीचमा हुनुपर्छ।"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"कुनै इन्टरनेट जडान छैन"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"वाइफाइ जडान छैन"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"इन्टरनेट कल राख्नको लागि पहिले तपाईँको इन्टरनेट सम्पर्क जाँच्नुहोस्"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"तपाईँलाई इन्टरनेट कलहरू (वायरलेस र नेटवर्क सेटिङहरूको प्रयोग) को लागि वाइफाइ सञ्जाल जडान गर्न जरुरी हुन्छ।"</string>
- <string name="no_voip" msgid="1600568347241920141">"इन्टरनेट कल गर्न समर्थित छैन"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"एक SIP कल गर्नका लागि पहिले तपाईंको इन्टरनेट जडान जाँच गर्नुहोस्।"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP कलका लागि तपाईँ एउटा Wi-Fi सञ्जालमा जडित हुन पर्छ (ताररहित & सञ्जाल सेटिङ प्रयोग गर्नुहोस्)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP कल गर्न समर्थित छैन"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"स्वचालित"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"सधैँ पठाउनुहोस्"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"इन्टरनेट कलमा निर्मित"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"अन्तरनिर्मित SIP कल"</string>
</resources>
diff --git a/sip/res/values-nl/strings.xml b/sip/res/values-nl/strings.xml
index 0a55251..d440867 100644
--- a/sip/res/values-nl/strings.xml
+++ b/sip/res/values-nl/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Instellingen voor bellen via internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Accounts voor internetoproepen (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-instelllingen"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-accounts"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Accounts"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Binnenkomende oproepen ontvangen"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Beperkt levensduur van accu"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Internetoproepen gebruiken"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Internetoproepen gebruiken (alleen wifi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Gebruikt meer acculading"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-oproepen gebruiken"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-oproepen gebruiken (alleen wifi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Voor alle oproepen indien gegevensnetwerk beschikbaar is"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Alleen voor internetoproepen"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Vragen bij elke oproep"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Alleen voor SIP-oproepen"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Voor alle oproepen"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Bellen"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Account voor internetoproepen gebruiken:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Altijd gebruiken voor internetoproepen"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Via het scherm \'Telefoon > Instellingen > Instellingen voor bellen via internet > Accounts\' kunt u het account wijzigen dat u standaard wilt gebruiken voor bellen via internet."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Oproep met mobiele telefoon"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetoproep"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Geen account voor internetoproepen"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Er zijn geen accounts voor bellen via internet ingesteld op deze telefoon. Wilt u nu een account toevoegen?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Toevoegen"</string>
<string name="add_sip_account" msgid="800843669753980091">"Account toevoegen"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Account verwijderen"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-accounts"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Het profiel sluiten"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Sluiten"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primair account. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Status controleren..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registreren…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Nog steeds bezig…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Poortnummer"</string>
<string name="transport_title" msgid="889155457465372527">"Transporttype"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Keepalive verzenden"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Instellen als primair account"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Gebruikt voor uitgaande oproepen"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Optionele instellingen"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Gebruikersnaam voor verificatie"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Gebruikersnaam die voor de verificatie wordt gebruikt"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tikken om alles te verbergen"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is verplicht en mag niet leeg worden gelaten."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Het poortnummer moet tussen 1000 en 65534 liggen."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Geen internetverbinding"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Geen wifi-verbinding"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Controleer uw internetverbinding voordat u belt via internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Voor internetoproepen moet u verbinding hebben met een wifi-netwerk (gebruik de instellingen bij \'Draadloos en netwerken\')."</string>
- <string name="no_voip" msgid="1600568347241920141">"Bellen via internet niet ondersteund"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Als u een SIP-oproep wilt plaatsen, controleert u eerst uw internetverbinding."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"U moet verbinding hebben met een wifi-netwerk voor SIP-oproepen (gebruik de instellingen bij \'Draadloos en netwerken\')."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-oproepen worden niet ondersteund"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatisch"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Altijd verzenden"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Geïntegreerde internetoproepen"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Ingebouwde SIP-oproepen"</string>
</resources>
diff --git a/sip/res/values-pa-rIN/strings.xml b/sip/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..1db0e5c
--- /dev/null
+++ b/sip/res/values-pa-rIN/strings.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ਸੈਟਿੰਗਾਂ"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP ਖਾਤੇ"</string>
+ <string name="sip_accounts_title" msgid="2082527045326874519">"ਖਾਤੇ"</string>
+ <string name="sip_receive_calls" msgid="426678617137462173">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ਵੱਧ ਬੈਟਰੀ ਸਮਰੱਥਾ ਵਰਤਦਾ ਹੈ"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP ਕਾਲਿੰਗ ਵਰਤੋ"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ਕਾਲਿੰਗ ਵਰਤੋ (ਕੇਵਲ Wi-Fi)"</string>
+ <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ਜਦੋਂ ਡਾਟਾ ਨੈਟਵਰਕ ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ ਸਾਰੀਆਂ ਕਾਲਾਂ ਲਈ"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ਕੇਵਲ SIP ਕਾਲਾਂ ਲਈ"</string>
+ <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ਸਾਰੀਆਂ ਕਾਲਾਂ ਲਈ"</string>
+ <string name="add_sip_account" msgid="800843669753980091">"ਖਾਤਾ ਜੋੜੋ"</string>
+ <string name="remove_sip_account" msgid="1367664438506503690">"ਖਾਤਾ ਹਟਾਓ"</string>
+ <string name="sip_account_list" msgid="5610858485304821480">"SIP ਖਾਤੇ"</string>
+ <string name="saving_account" msgid="5336529880235177448">"ਖਾਤਾ ਸੁਰੱਖਿਅਤ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="removing_account" msgid="5537351356808985756">"ਖਾਤਾ ਹਟਾ ਰਿਹਾ ਹੈ…"</string>
+ <string name="sip_menu_save" msgid="7882219814563869225">"ਸੁਰੱਖਿਅਤ ਕਰੋ"</string>
+ <string name="sip_menu_discard" msgid="2350421645423888438">"ਬਰਖਾਸਤ ਕਰੋ"</string>
+ <string name="alert_dialog_close" msgid="1326011828713435134">"ਪ੍ਰੋਫਾਈਲ ਬੰਦ ਕਰੋ"</string>
+ <string name="alert_dialog_ok" msgid="4752048404605388940">"ਠੀਕ"</string>
+ <string name="close_profile" msgid="3122414058856309881">"ਬੰਦ ਕਰੋ"</string>
+ <string name="registration_status_checking_status" msgid="6136793741862200337">"ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ..."</string>
+ <string name="registration_status_registering" msgid="2677183977796278749">"ਰਜਿਸਟਰ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="registration_status_still_trying" msgid="7648151061205513458">"ਅਜੇ ਵੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+ <string name="registration_status_not_receiving" msgid="7620333886153361090">"ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਰਿਹਾ ਹੈ।"</string>
+ <string name="registration_status_no_data" msgid="2541999976218192413">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਰੁਕ ਗਿਆ ਕਿਉਂਕਿ ਕੋਈ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ।"</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਰੁਕ ਗਿਆ ਕਿਉਂਕਿ ਕੋਈ Wi-Fi ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ।"</string>
+ <string name="registration_status_not_running" msgid="514205414303796800">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ।"</string>
+ <string name="registration_status_done" msgid="3264961069247314253">"ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ।"</string>
+ <string name="registration_status_failed_try_later" msgid="2199970021756384317">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); ਬਾਅਦ ਵਿੱਚ ਕੋਸ਼ਿਸ਼ ਕਰੇਗਾ"</string>
+ <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਗ਼ਲਤ ਉਪਭੋਗਤਾ ਨਾਮ ਜਾਂ ਪਾਸਵਰਡ।"</string>
+ <string name="registration_status_server_unreachable" msgid="7710275557045148634">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਸਰਵਰ ਨਾਮ ਦੀ ਜਾਂਚ ਕਰੋ।"</string>
+ <string name="third_party_account_summary" msgid="9041060473615403041">"ਇਹ ਖਾਤਾ ਇਸ ਵੇਲੇ <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ਐਪ ਵੱਲੋਂ ਵਰਤੋਂ ਵਿੱਚ ਹੈ।"</string>
+ <string name="sip_edit_title" msgid="1967247832635750410">"SIP ਖਾਤਾ ਵੇਰਵੇ"</string>
+ <string name="sip_edit_new_title" msgid="266414118302574305">"SIP ਖਾਤਾ ਵੇਰਵੇ"</string>
+ <string name="domain_address_title" msgid="1968479941328225423">"ਸਰਵਰ"</string>
+ <string name="username_title" msgid="6770064611005663470">"ਉਪਭੋਗਤਾ ਨਾਮ"</string>
+ <string name="password_title" msgid="5289013731515564295">"ਪਾਸਵਰਡ"</string>
+ <string name="display_name_title" msgid="579241787583079773">"ਡਿਸਪਲੇ ਨਾਮ"</string>
+ <string name="proxy_address_title" msgid="6890163365640631841">"ਆਊਟਬਾਊਂਡ ਪ੍ਰੌਕਸੀ ਪਤਾ"</string>
+ <string name="port_title" msgid="6693965912656593862">"ਪੋਰਟ ਨੰਬਰ"</string>
+ <string name="transport_title" msgid="889155457465372527">"ਟ੍ਰਾਂਸਪੋਰਟ ਪ੍ਰਕਾਰ"</string>
+ <string name="send_keepalive_title" msgid="599627072150501159">"ਕੀਪ-ਅਲਾਈਵ ਭੇਜੋ"</string>
+ <string name="advanced_settings" msgid="6622996380747040711">"ਚੋਣ ਸੰਬੰਧੀ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="auth_username_title" msgid="8262491689004708265">"ਪ੍ਰਮਾਣੀਕਰਨ ਉਪਭੋਗਤਾ ਨਾਮ"</string>
+ <string name="auth_username_summary" msgid="941160241371436473">"ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਉਪਭੋਗਤਾ ਨਾਮ"</string>
+ <string name="default_preference_summary" msgid="1979249643719483249">"<ਸੈਟ ਨਹੀਂ ਕੀਤਾ>"</string>
+ <string name="display_name_summary" msgid="7155076491675565407">"<ਉਪਭੋਗਤਾ ਨਾਮ ਦੇ ਸਮਾਨ>"</string>
+ <string name="optional_summary" msgid="2363105560396317624">"<ਚੋਣਵਾਂ>"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ ਸਾਰੇ ਦਿਖਾਉਣ ਲਈ ਛੋਹਵੋ"</string>
+ <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ਸਾਰੇ ਲੁਕਾਉਣ ਲਈ ਛੋਹਵੋ"</string>
+ <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ਲੁੜੀਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਖਾਲੀ ਨਹੀਂ ਛੱਡਿਆ ਜਾ ਸਕਦਾ।"</string>
+ <string name="not_a_valid_port" msgid="7931422555587011830">"ਪੋਰਟ ਨੰਬਰ 1000 ਅਤੇ 65534 ਵਿਚਕਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"ਇੱਕ SIP ਕਾਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਆਪਣੇ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ।"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP ਕਾਲਾਂ ਲਈ ਤੁਹਾਨੂੰ ਇੱਕ Wi-Fi ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ (ਵਾਇਰਲੈਸ & ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ ਵਰਤੋ)।"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP ਕਾਲਿੰਗ ਸਮਰਥਿਤ ਨਹੀਂ"</string>
+ <string name="sip_system_decide" msgid="5577696249416700671">"ਆਟੋਮੈਟਿਕ"</string>
+ <string name="sip_always_send_keepalive" msgid="4773022409239823318">"ਹਮੇਸ਼ਾਂ ਭੇਜੋ"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"ਬਿਲਟ-ਇਨ SIP ਕਾਲਿੰਗ"</string>
+</resources>
diff --git a/sip/res/values-pl/strings.xml b/sip/res/values-pl/strings.xml
index 28f82e2..b8b94f7 100644
--- a/sip/res/values-pl/strings.xml
+++ b/sip/res/values-pl/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Ustawienia dzwonienia przez internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Konta do połączeń przez internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Ustawienia SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Konta SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Konta"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Odbieraj połączenia przychodzące"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Skraca czas pracy baterii"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Dzwoń przez internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Dzwoń przez internet (tylko Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Zużywa więcej energii baterii"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Użyj połączenia SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Użyj połączenia SIP (tylko przez Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Przy wszystkich połączeniach, gdy sieć transmisji danych jest dostępna"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Tylko internetowe"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Pytaj przy każdym połączeniu"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Tylko do połączeń SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Wszystkie połączenia"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Połącz"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Użyj konta do dzwonienia przez internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Zawsze używaj do połączeń przez internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Konto używane domyślnie do dzwonienia przez internet możesz zmienić w sekcji Telefon > Ustawienia > Dzwonienie przez internet > Konta."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Komórkowe połączenie telefoniczne"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Rozmowa internetowa"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Brak konta do połączeń przez internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Na tym telefonie nie ma jeszcze kont do dzwonienia przez internet. Czy chcesz dodać takie konto teraz?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Dodaj"</string>
<string name="add_sip_account" msgid="800843669753980091">"Dodaj konto"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Usuń konto"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Konta SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Zamknij profil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Zamknij"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Konto podstawowe. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Sprawdzam stan..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Rejestruję…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Nadal próbuję…"</string>
@@ -67,26 +56,22 @@
<string name="display_name_title" msgid="579241787583079773">"Wyświetlana nazwa"</string>
<string name="proxy_address_title" msgid="6890163365640631841">"Proxy połączeń wychodzących"</string>
<string name="port_title" msgid="6693965912656593862">"Numer portu"</string>
- <string name="transport_title" msgid="889155457465372527">"Typ transportu"</string>
+ <string name="transport_title" msgid="889155457465372527">"Protokół"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Utrzymuj połączenie"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Ustaw jako konto podstawowe"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Używane do połączeń wychodzących"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Ustawienia opcjonalne"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nazwa do uwierzytelniania"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nazwa użytkownika używana do uwierzytelniania"</string>
<string name="default_preference_summary" msgid="1979249643719483249">"<Nie ustawiono>"</string>
- <string name="display_name_summary" msgid="7155076491675565407">"<Taka jak nazwa użytkownika>"</string>
+ <string name="display_name_summary" msgid="7155076491675565407">"<Taka sama jak nazwa użytkownika>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcjonalny>"</string>
- <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dotknij, by pokazać wszystko"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dotknij, by wyświetlić wszystkie ustawienia"</string>
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dotknij, by ukryć wszystko"</string>
<string name="empty_alert" msgid="6659484914371384024">"Pole <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> jest wymagane i nie może pozostać puste."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Numer portu powinien mieć wartość od 1000 do 65 534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Brak internetu"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Brak połączenia Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Aby zadzwonić przez internet, sprawdź najpierw połączenie internetowe."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Aby dzwonić przez internet, musisz połączyć się z siecią Wi-Fi (użyj ustawień w sekcji Sieci zwykłe i bezprzewodowe)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Brak obsługi połączeń przez internet"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Aby nawiązać połączenie SIP, najpierw sprawdź połączenie internetowe."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Połączenia SIP wymagają nawiązania połączenia z siecią Wi-Fi (użyj ustawień sieci zwykłych i bezprzewodowych)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Połączenia SIP nie są obsługiwane"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatycznie"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Zawsze wysyłaj"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Wbudowana funkcja telefonii internetowej"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Wbudowanie połączenia SIP"</string>
</resources>
diff --git a/sip/res/values-pt-rPT/strings.xml b/sip/res/values-pt-rPT/strings.xml
index c115d2d..6c4fa54 100644
--- a/sip/res/values-pt-rPT/strings.xml
+++ b/sip/res/values-pt-rPT/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Definições de chamadas por Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Contas de chamadas por Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Definições SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Contas SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Contas"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Obter chamadas recebidas"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduz a vida útil da bateria"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Utilizar chamadas por Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Utilizar chamadas por Internet (apenas Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Utiliza mais bateria"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Utilizar chamadas SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Utilizar chamadas SIP (apenas Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Para todas as chamadas quando a rede de dados estiver disponível"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Apenas para chamadas por Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Perguntar em cada chamada"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Apenas para chamadas SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Para todas as chamadas"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Fazer chamada"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Utilizar conta de chamadas por Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Utilizar sempre para fazer chamadas por Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Pode alterar a conta de chamadas por Internet a utilizar por predefinição a partir do ecrã Telemóvel > Definições > Definições de chamadas por Internet > Contas."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Chamada por telemóvel"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Chamada por Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Sem conta de chamadas por Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Não há contas de chamadas por Internet neste telemóvel. Pretende adicionar uma agora?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Adicionar"</string>
<string name="add_sip_account" msgid="800843669753980091">"Adicionar conta"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Remover conta"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Contas SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Fechar o perfil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Fechar"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Conta principal: <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"A verificar estado..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"A registar..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Ainda a tentar..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Número da porta"</string>
<string name="transport_title" msgid="889155457465372527">"Tipo de transporte"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Enviar mensagem keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Definir como conta principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilizado para chamadas enviadas"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Definições opcionais"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome de utilizador para autenticação"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome de utilizador usado para autenticação"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toque para ocultar tudo"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> é obrigatório e tem de ser preenchido."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"O número da porta deve estar entre 1000 e 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Sem ligação à Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Sem ligação Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Para fazer uma chamada por Internet, verifique primeiro a ligação à Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Para fazer chamadas por Internet, é preciso estar ligado a uma rede Wi-Fi (use as definições de Redes sem fios e outras)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Não são suportadas cham. por Internet"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Para efetuar uma chamada SIP, verifique primeiro a ligação à Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Precisa de uma ligação a uma rede Wi-Fi para efetuar chamadas SIP (utilize as definições Redes sem fios e outras)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Chamadas SIP não suportadas"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automático"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Enviar sempre"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Chamadas por Internet incorporadas"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Chamadas SIP incorporadas"</string>
</resources>
diff --git a/sip/res/values-pt/strings.xml b/sip/res/values-pt/strings.xml
index 0e59e61..fabe5ad 100644
--- a/sip/res/values-pt/strings.xml
+++ b/sip/res/values-pt/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Configurações de chamada pela Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Contas para chamada pela Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Configurações SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Contas SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Contas"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Receber chamadas"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduz a vida útil da bateria"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Usar chamada pela Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Usar chamada pela Internet (somente Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Usa mais bateria"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Usar chamadas SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Usar chamadas SIP (apenas Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Para todas as chamadas, quando a rede de dados estiver disponível"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Apenas para chamadas pela Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Perguntar toda chamada"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Apenas para chamadas SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Para todas as chamadas"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Chamar"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Usar a conta para chamada pela Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Sempre usar para realizar chamadas pela Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Você pode alterar qual conta de chamada pela Internet será usada por padrão na tela Telefone > Configurações > Configurações de chamada pela Internet > Contas."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Chamada para celular"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Chamada pela Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Não há conta para chamada pela Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Não há contas de chamada pela Internet neste telefone. Você deseja adicionar uma conta agora?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Adicionar"</string>
<string name="add_sip_account" msgid="800843669753980091">"Adicionar conta"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Remover conta"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Contas SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Fechar o perfil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Ok"</string>
<string name="close_profile" msgid="3122414058856309881">"Fechar"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Conta principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Verificando status..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrando..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Ainda tentando..."</string>
@@ -58,7 +47,7 @@
<string name="registration_status_failed_try_later" msgid="2199970021756384317">"Falha no registro da conta: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>). Nova tentativa mais tarde"</string>
<string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Falha no registro da conta: nome de usuário ou senha incorretos."</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"Falha no registro da conta: verifique o nome do servidor."</string>
- <string name="third_party_account_summary" msgid="9041060473615403041">"No momento, esta conta é usada pelo aplicativo <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
+ <string name="third_party_account_summary" msgid="9041060473615403041">"No momento, esta conta é usada pelo app <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
<string name="sip_edit_title" msgid="1967247832635750410">"Detalhes da conta SIP"</string>
<string name="sip_edit_new_title" msgid="266414118302574305">"Detalhes da conta SIP"</string>
<string name="domain_address_title" msgid="1968479941328225423">"Servidor"</string>
@@ -69,24 +58,20 @@
<string name="port_title" msgid="6693965912656593862">"Número da porta"</string>
<string name="transport_title" msgid="889155457465372527">"Tipo de transporte"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Enviar sinal de atividade"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Definir como conta principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilizado para chamadas de saída"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Configurações opcionais"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nome de usuário da autenticação"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Nome de usuário utilizado para autenticação"</string>
<string name="default_preference_summary" msgid="1979249643719483249">"<Não definido>"</string>
<string name="display_name_summary" msgid="7155076491675565407">"<Igual ao nome de usuário>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<Opcional>"</string>
- <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toque para mostrar todos"</string>
- <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toque para ocultar todos"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toque para mostrar todas"</string>
+ <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toque para ocultar todas"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> é um campo obrigatório e não pode ser deixado em branco."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"O número da porta deve estar entre 1000 e 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Nenhuma conexão à internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Nenhuma conexão Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Antes de fazer uma chamada pela Internet, primeiro verifique a conexão com a Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Você precisa estar conectado a uma rede Wi-Fi para realizar chamadas pela Internet (use as Configurações de redes sem fio e outras)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Chamada pela Internet não suportada"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Para fazer uma chamada SIP, verifique sua conexão com a Internet primeiro."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Você precisa estar conectado a uma rede Wi-Fi para chamadas SIP (use as configurações sem fio e de rede)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Chamada SIP não suportada"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automático"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Sempre enviar"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Chamadas pela Internet integradas"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Chamadas SIP incorporadas"</string>
</resources>
diff --git a/sip/res/values-ro/strings.xml b/sip/res/values-ro/strings.xml
index ee5a634..d900fd8 100644
--- a/sip/res/values-ro/strings.xml
+++ b/sip/res/values-ro/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Setări pentru apeluri prin internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Conturi pentru apelare prin internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Setări SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Conturi SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Conturi"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Primiți apeluri"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Reduce durata de funcţionare a bateriei"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Utilizaţi apelarea prin internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Utilizaţi apelarea prin internet (numai Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consumă mai multă baterie"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Folosiți apelarea SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Folosiți apelarea SIP (numai prin Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Pentru toate apelurile, când reţeaua de date este disponibilă"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Numai pentru apeluri prin internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Întrebați la fiecare apel"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Numai pentru apeluri SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Pentru toate apelurile"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Efectuaţi apel"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Utilizaţi contul pentru apelare prin internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Utilizaţi întotdeauna pentru a efectua apeluri prin internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Puteţi să schimbaţi contul de apelare prin internet pe care îl utilizaţi în mod prestabilit, din ecranul Telefon > Setări > Setări apeluri prin internet > Conturi."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Apel de pe mobil"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Apel prin internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Nu există conturi de apelare prin internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Nu există conturi de apelare prin internet pe acest telefon. Adăugați unul acum?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Adăugați"</string>
<string name="add_sip_account" msgid="800843669753980091">"Adăugați un cont"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Eliminaţi contul"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Conturi SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Închideţi profilul"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Închideți"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Cont principal. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Se verifică starea..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Se înregistrează..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Se încearcă în continuare..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Numărul portului"</string>
<string name="transport_title" msgid="889155457465372527">"Tip de transport"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Trimiteţi mesaje keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Setaţi drept cont principal"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Utilizat pentru apelurile de ieşire"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Setări opţionale"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Nume de utilizator pentru autentificare"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Numele de utilizator folosit pentru autentificare"</string>
@@ -80,13 +67,11 @@
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ Atingeți pentru a afișa tot"</string>
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Atingeți pentru a ascunde tot"</string>
<string name="empty_alert" msgid="6659484914371384024">"Câmpul <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> este obligatoriu și nu poate fi lăsat necompletat."</string>
- <string name="not_a_valid_port" msgid="7931422555587011830">"Numărul portului trebuie să fie cuprins între 1000 şi 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Nu aveți conexiune la internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Nu există conexiune Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Pentru a efectua un apel prin internet, verificaţi mai întâi conexiunea la internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Trebuie să fiţi conectat(ă) la o reţea Wi-Fi pentru a efectua apeluri prin internet (utilizaţi setările pentru Reţele wireless)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Apelarea prin internet neacceptată"</string>
+ <string name="not_a_valid_port" msgid="7931422555587011830">"Numărul portului trebuie să fie cuprins între 1000 și 65534."</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Pentru a efectua un apel SIP, mai întâi verificați conexiunea la internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Pentru apeluri SIP trebuie să fiți conectat(ă) la o rețea Wi-Fi (folosiți setările din Wireless și rețea)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Apelarea SIP nu este acceptată"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automat"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Se trimite întotdeauna"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Apeluri pe internet integrate"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Apelare SIP integrată"</string>
</resources>
diff --git a/sip/res/values-ru/strings.xml b/sip/res/values-ru/strings.xml
index cd1538f..4a1c7be 100644
--- a/sip/res/values-ru/strings.xml
+++ b/sip/res/values-ru/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Настройки интернет-вызовов"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Аккаунты для интернет-вызовов (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Настройки SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-аккаунты"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Аккаунты"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Принимать входящие"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Повышает расход заряда батареи"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Интернет-вызовы"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Интернет-соединение (Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Заряд батареи расходуется быстрее"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Звонок через SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Звонок через SIP (только Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Для всех вызовов при возможности передачи данных"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Только для интернет-вызовов"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Спрашивать при каждом вызове"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Только для звонков через SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Для всех вызовов"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Исходящий вызов"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Аккаунт для интернет-вызовов:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Использовать для всех интернет-вызовов"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Изменить аккаунт интернет-вызовов, используемый по умолчанию, можно в настройках интернет-вызовов на экране \"Аккаунты\"."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Вызов по сотовой сети"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Интернет-вызов"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Нет аккаунтов для интернет-вызовов"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"На телефоне нет аккаунтов для интернет-вызовов. Добавить?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Добавить"</string>
<string name="add_sip_account" msgid="800843669753980091">"Добавить аккаунт"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Удалить аккаунт"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-аккаунты"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Закрытие профиля"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ОК"</string>
<string name="close_profile" msgid="3122414058856309881">"Закрыть"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Основной аккаунт. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Проверка состояния..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Регистрация..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Подождите..."</string>
@@ -59,8 +48,8 @@
<string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Не удалось зарегистрировать аккаунт. Неверное имя пользователя или пароль."</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"Не удалось зарегистрировать аккаунт. Неверное имя сервера."</string>
<string name="third_party_account_summary" msgid="9041060473615403041">"Аккаунт используется приложением \"<xliff:g id="ACCOUNT_OWNER">%s</xliff:g>\"."</string>
- <string name="sip_edit_title" msgid="1967247832635750410">"Настройки SIP-аккаунта"</string>
- <string name="sip_edit_new_title" msgid="266414118302574305">"Настройки SIP-аккаунта"</string>
+ <string name="sip_edit_title" msgid="1967247832635750410">"SIP-аккаунт"</string>
+ <string name="sip_edit_new_title" msgid="266414118302574305">"SIP-аккаунт"</string>
<string name="domain_address_title" msgid="1968479941328225423">"Сервер"</string>
<string name="username_title" msgid="6770064611005663470">"Имя пользователя"</string>
<string name="password_title" msgid="5289013731515564295">"Пароль"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Номер порта"</string>
<string name="transport_title" msgid="889155457465372527">"Протокол"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Отправлять keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Основной аккаунт"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Использовать этот аккаунт по умолчанию для исходящих вызовов"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Расширенные настройки"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Имя пользователя"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Имя пользователя для аутентификации"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Нажмите, чтобы скрыть все"</string>
<string name="empty_alert" msgid="6659484914371384024">"Поле \"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>\" должно быть заполнено."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Номер порта должен быть от 1000 до 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Нет подключения"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Отсутствует подключение Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Перед звонком проверьте подключение к Интернету"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Чтобы выполнить интернет-вызов, подключитесь к сети Wi-Fi (см. настройки беспроводной сети)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Интернет-вызов не поддерживается"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Чтобы сделать звонок через SIP, проверьте подключение к Интернету."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Чтобы звонить через SIP, требуется подключение к сети Wi-Fi (его можно настроить в разделе \"Беспроводные сети\")."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Звонки через SIP не поддерживаются"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Автоматически"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Отправлять всегда"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Встроенный сервис интернет-вызовов"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Встроенный сервис звонков через SIP"</string>
</resources>
diff --git a/sip/res/values-si-rLK/strings.xml b/sip/res/values-si-rLK/strings.xml
index e52d27f..cee3923 100644
--- a/sip/res/values-si-rLK/strings.xml
+++ b/sip/res/values-si-rLK/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"අන්තර්ජාල ඇමතුම් සැකසුම්"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"අන්තර්ජාල ඇමතීමේ (SIP) ගිණුම්"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP සැකසීම්"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP ගිණුම්"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"ගිණුම්"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ලේබන ඇමතුම් ලබා ගන්න"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"බැටරි ආයු කාලය අඩුකරන්න"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"අන්තර්ජාල ඇමතීම භාවිතා කරන්න"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"අන්තර්ජාල ඇමතීම භාවිතා කරන්න (Wi-Fi පමණි)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"තව බැටරි ආයු කාලය භාවිතා කරන්න"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP ඇමතුම් භාවිතය"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ඇමතුම් භාවිතය (Wi-Fi පමණයි)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"දත්ත ජාලය තිබෙන විට සියලුම ඇමතුම් සඳහා"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"අන්තර්ජාල ඇමතුම් සඳහා පමණි"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"සෑම ඇමතුමකටම අසන්න"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP ඇමතුම් සඳහා පමණි"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"සියලුම ඇමතුම් සඳහා"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"ඇමතුම ලබා ගන්න"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"අන්තර්ජාල ඇමතුම් ගිණුම භාවිතා කරන්න:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"අන්තර්ජාල ඇමතුම් ලබාගැනීමට සැමවිටම භාවිතා කරන්න"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"දුරකතනයෙන් සුපුරුදු ලෙස භාවිතා කළ යුත්තේ කුමන අන්තර්ජාල ඇමතුම් ගිනුමදැයි වෙනස් කළ හැක > සැකසුම් > අන්තර්ජාල ඇමතුම් සැකසුම් > ගිණුම් තිරය."</string>
- <string name="pstn_phone" msgid="9596332924895028">"සෙල් දුරකථන ඇමතුම"</string>
- <string name="internet_phone" msgid="4444458244774004247">"අන්තර්ජාල ඇමතුම"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"අන්තර්ජාල ඇමතුම් ගිණුමක් නොමැත"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"මෙම දුරකථනයෙහි අන්තර්ජාල ඇමතුම් ගිණුම් නොමැත. එකක් එක් කිරීමට ඔබට අවශ්යද?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"එක් කරන්න"</string>
<string name="add_sip_account" msgid="800843669753980091">"ගිණුම එක් කරන්න"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"ගිණුම ඉවත් කරන්න"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP ගිණුම්"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"පැතිකඩ වසන්න"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"හරි"</string>
<string name="close_profile" msgid="3122414058856309881">"වසන්න"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"මුලික ගිණුම. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"තත්වය පිරික්සමින්..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"ලියාපදිංචි වෙමින්..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"තවමත් උත්සාහ කරමින්..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"කවුළුවේ අංකය"</string>
<string name="transport_title" msgid="889155457465372527">"ගමනාගමන වර්ගය"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"සජීවී-තබාගන්නා යවන්න"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"මුලික ගිණුම ලෙස සකසන්න"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"පිටතට යන ඇමතුම් සඳහා භාවිතා කෙරේ"</string>
<string name="advanced_settings" msgid="6622996380747040711">"වෛකල්පිත සැකසුම්"</string>
<string name="auth_username_title" msgid="8262491689004708265">"සත්යාපන පරිශීලක නාමය"</string>
<string name="auth_username_summary" msgid="941160241371436473">"සත්යාපනය සඳහා භාවිතා වන පරිශීලක නාමය"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ සියල්ල සැඟවීමට ස්පර්ශ කරන්න"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> අවශ්ය වන අතර හිස්ව තැබිය නොහැක."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"කවුළුවේ අංකය 1000 ත් 65534 ත් අතර විය යුතුය."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"අන්තර්ජාල සම්බන්ධතාවයක් නැත"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi සම්බන්ධතාවයක් නොමැත"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"අන්තර්ජාල ඇමතුමක් ගැනීමට, මුලින්ම ඔබගේ අන්තර්ජාල සම්බන්ධතාවය පරික්ෂා කර බලන්න."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"අන්තර්ජාල ඇමතුම් සඳහා ඔබ Wi-Fi ජාලයකට සම්බන්ධ විය යුතුය (රැහැන් රහිත සහ ජාල සැකසුම් භාවිතා කරන්න)"</string>
- <string name="no_voip" msgid="1600568347241920141">"අන්තර්ජාල ඇමතීම සඳහා සහාය නොදක්වයි"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP ඇමතුමක් ලබාගැනීමට, ඔබගේ අන්තර්ජාල සම්බන්ධතාව මුලින් පරික්ෂා කරන්න."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP ඇමතුම් සඳහා Wi-Fi ජාලයට ඔබට සම්බන්ධ වීමට අවශ්යය වේ (රැහැන් රහිත සහ ජාල සැකසීම්)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP ඇමතීම් වලට සහාය දක්වන්නේ නැත"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"ස්වයංක්රිය"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"සැමවිටම යවන්න"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"තිළැලි අන්තර්ජාල ඇමතීම"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"තැනූ SIP ඇමතුම්"</string>
</resources>
diff --git a/sip/res/values-sk/strings.xml b/sip/res/values-sk/strings.xml
index 8ef071b..f55227d 100644
--- a/sip/res/values-sk/strings.xml
+++ b/sip/res/values-sk/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Nastavenie internetových hovorov"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Účty pre internetové hovory (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Nastavenia SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Účty SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Účty"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Prijímať prichádzajúce hovory"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Znižuje výdrž batérie"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Použiť internetové volanie"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Použiť internetový hovor (iba s pripojením Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Má väčšiu spotrebu batérie"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Používanie hovorov SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Používanie hovorov SIP (iba sieť Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Pre všetky hovory, pokiaľ je k dispozícii dátová sieť"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Iba pre internetové hovory"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Zakaždým sa spýtať"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Iba pre hovory SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Pre všetky hovory"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Volanie prostredníctvom"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Použiť účet na internetové hovory:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Vždy používať pri internetových hovoroch"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Predvolený účet na internetové hovory môžete zvoliť na obrazovke Telefón > Nastavenia > Nastavenia internetového hovoru > Účty."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Hovor z mobilného telefónu"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetový hovor"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Žiadny účet na internetové hovory"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"V tomto telefóne neexistujú žiadne účty internetového hovoru. Chcete jeden pridať?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Pridať"</string>
<string name="add_sip_account" msgid="800843669753980091">"Pridať účet"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Odstrániť účet"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Účty SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Zavrieť profil"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Zavrieť"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primárny účet. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Prebieha kontrola stavu..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Prebieha registrácia..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Prebiehajú ďalšie pokusy..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Číslo portu"</string>
<string name="transport_title" msgid="889155457465372527">"Typ prenosu"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Odosielať správy na zachovanie pripojenia"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Nastaviť ako primárny účet"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Použité pre odchádzajúce hovory"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Voliteľné nastavenia"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Používateľské meno na overenie"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Používateľské meno použité na overenie"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Klepnutím všetko skryjete"</string>
<string name="empty_alert" msgid="6659484914371384024">"Pole <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je povinné a nemôže zostať prázdne."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Číslo portu by malo byť od 1 000 do 65 534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Žiadne internetové pripojenie"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Pripojenie Wi-Fi nie je k dispozícii"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Ak chcete uskutočniť internetový hovor, skontrolujte, či máte pripojenie k internetu."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Ak chcete uskutočniť internetový hovor, musíte mať pripojenie k sieti Wi-Fi (použite sekciu Nastavenia bezdrôtového pripojenia a siete)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetové hovory nie sú podporované"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Ak chcete uskutočniť hovor SIP, najprv skontrolujte svoje internetové pripojenie."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Uskutočnenie hovorov SIP vyžaduje pripojenie k sieti Wi-Fi (použite nastavenia bezdrôtovej siete)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Volanie SIP nie je podporované"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automaticky"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Vždy odoslať"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Vstavané internetové volanie"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Vstavané hovory SIP"</string>
</resources>
diff --git a/sip/res/values-sl/strings.xml b/sip/res/values-sl/strings.xml
index 4b11e4b..1768705 100644
--- a/sip/res/values-sl/strings.xml
+++ b/sip/res/values-sl/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Nastavitve internetnega klicanja"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Računi za internetno klicanje (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Nastavitve SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Računi SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Računi"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Sprejmi dohodne klice"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Skrajša čas delovanja akumulatorja"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Uporaba internetnega klicanja"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Uporaba internetnega klicanja (samo Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Poraba akumulatorja je večja"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Uporaba klicanja SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Uporaba klicanja SIP (samo v omrežju Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Za vse klice, ko podatkovno omrežje ni na voljo"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Samo za internetne klice"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Vprašaj za vsak klic"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Samo za klice SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Za vse klice"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Klicanje"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Uporaba računa za internetno klicanje"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Vedno uporabi za internetno klicanje"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Na zaslonu Telefon > Nastavitve > Nastavitve internetnega klicanja > Računi lahko spremenite privzeti račun za internetno klicanje."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Klic z mobilnim telefonom"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetni klic"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ni računa za internetno klicanje"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"V tem telefonu ni računov za internetno klicanje. Ali želite dodati račun zdaj?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Dodaj"</string>
<string name="add_sip_account" msgid="800843669753980091">"Dodajanje računa"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Odstrani račun"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Računi SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Zapiranje profila"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"V redu"</string>
<string name="close_profile" msgid="3122414058856309881">"Zapri"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primarni račun. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Preverjanje stanja ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registriranje ..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Še vedno poskušamo ..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Številka vrat"</string>
<string name="transport_title" msgid="889155457465372527">"Vrsta prevoza"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Pošlji ohranjanje povezave"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Nastavi kot primarni račun"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Za odhodne klice"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Izbirne nastavitve"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Uporabniško ime za preverjanje pristnosti"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Uporabniško ime za preverjanje pristnosti"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dotaknite se, če želite skriti vse"</string>
<string name="empty_alert" msgid="6659484914371384024">"Polje <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je obvezno in ne sme biti prazno."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Številka vrat mora biti med 1000 in 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Brez internetne povezave"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Ni povezave Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Če želite opraviti internetni klic, najprej preverite internetno povezavo."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Če želite opravljati internetne klice, morate imeti vzpostavljeno povezavo Wi-Fi (nastavite v razdelku »Brezžično in omrežja«)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internetno klicanje ni podprto"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Če želite opraviti klic SIP, najprej preverite internetno povezavo."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Za klice SIP morate biti povezani v omrežje Wi-Fi (uporabite nastavitve »Brezžično in omrežja«)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Klicanje SIP ni podprto"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Samodejno"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Vedno pošlji"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Vgrajeno internetno klicanje"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Vgrajeno klicanje SIP"</string>
</resources>
diff --git a/sip/res/values-sq-rAL/strings.xml b/sip/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..f64c270
--- /dev/null
+++ b/sip/res/values-sq-rAL/strings.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="sip_settings" msgid="3768482698061677257">"Cilësimet SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Llogaritë SIP"</string>
+ <string name="sip_accounts_title" msgid="2082527045326874519">"Llogaritë"</string>
+ <string name="sip_receive_calls" msgid="426678617137462173">"Merr telefonata hyrëse"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Pakëson jetëgjatësinë e baterisë"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Përdor \"telefonatat SIP\""</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Përdor \"telefonatat SIP\" (vetëm Wi-Fi)"</string>
+ <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Për të gjitha telefonat kur rrjeti i të dhënave mund të përdoret"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Vetëm për telefonatat SIP"</string>
+ <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Për të gjitha telefonatat"</string>
+ <string name="add_sip_account" msgid="800843669753980091">"Shto llogari"</string>
+ <string name="remove_sip_account" msgid="1367664438506503690">"Hiq llogarinë"</string>
+ <string name="sip_account_list" msgid="5610858485304821480">"Llogaritë SIP"</string>
+ <string name="saving_account" msgid="5336529880235177448">"Po ruan llogarinë…"</string>
+ <string name="removing_account" msgid="5537351356808985756">"Po heq llogarinë…"</string>
+ <string name="sip_menu_save" msgid="7882219814563869225">"Ruaj"</string>
+ <string name="sip_menu_discard" msgid="2350421645423888438">"Hidh poshtë"</string>
+ <string name="alert_dialog_close" msgid="1326011828713435134">"Mbyll profilin"</string>
+ <string name="alert_dialog_ok" msgid="4752048404605388940">"Në rregull!"</string>
+ <string name="close_profile" msgid="3122414058856309881">"Mbyll"</string>
+ <string name="registration_status_checking_status" msgid="6136793741862200337">"Po kontrollon statusin..."</string>
+ <string name="registration_status_registering" msgid="2677183977796278749">"Po regjistron..."</string>
+ <string name="registration_status_still_trying" msgid="7648151061205513458">"Vazhdon të riprovojë…"</string>
+ <string name="registration_status_not_receiving" msgid="7620333886153361090">"Nuk merr telefonata."</string>
+ <string name="registration_status_no_data" msgid="2541999976218192413">"Regjistrimi i llogarisë ndaloi sepse nuk ka lidhje interneti."</string>
+ <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Regjistrimi i llogarisë ndaloi sepse nuk ka lidhje Wi-Fi."</string>
+ <string name="registration_status_not_running" msgid="514205414303796800">"Regjistrimi i llogarisë ishte i pasuksesshëm."</string>
+ <string name="registration_status_done" msgid="3264961069247314253">"Pranimi i telefonatave."</string>
+ <string name="registration_status_failed_try_later" msgid="2199970021756384317">"Regjistrimi i llogarisë ishte i pasuksesshëm: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); do të provohet sërish"</string>
+ <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Regjistrimi i llogarisë ishte i pasuksesshëm: emri i përdoruesit ose fjalëkalimi ishte i pasaktë."</string>
+ <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Regjistrimi i llogarisë ishte i pasuksesshëm. Kontrollo emrin e serverit."</string>
+ <string name="third_party_account_summary" msgid="9041060473615403041">"Kjo llogari është aktualisht në përdorim nga aplikacioni <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
+ <string name="sip_edit_title" msgid="1967247832635750410">"Detajet e llogarisë SIP"</string>
+ <string name="sip_edit_new_title" msgid="266414118302574305">"Detajet e llogarisë SIP"</string>
+ <string name="domain_address_title" msgid="1968479941328225423">"Serveri"</string>
+ <string name="username_title" msgid="6770064611005663470">"Emri i përdoruesit"</string>
+ <string name="password_title" msgid="5289013731515564295">"Fjalëkalimi"</string>
+ <string name="display_name_title" msgid="579241787583079773">"Shfaq emrin"</string>
+ <string name="proxy_address_title" msgid="6890163365640631841">"Adresa e përfaqësuesit dalës"</string>
+ <string name="port_title" msgid="6693965912656593862">"Numri i portës"</string>
+ <string name="transport_title" msgid="889155457465372527">"Lloji i transportit"</string>
+ <string name="send_keepalive_title" msgid="599627072150501159">"Dërgo preferencën e kontrollit të operimit"</string>
+ <string name="advanced_settings" msgid="6622996380747040711">"Cilësimet opsionale"</string>
+ <string name="auth_username_title" msgid="8262491689004708265">"Emri i përdoruesit për vërtetim"</string>
+ <string name="auth_username_summary" msgid="941160241371436473">"Emri i përdoruesit i përdorur për vërtetim"</string>
+ <string name="default_preference_summary" msgid="1979249643719483249">"<I pavendosur>"</string>
+ <string name="display_name_summary" msgid="7155076491675565407">"<Njësoj si emri i përdoruesit>"</string>
+ <string name="optional_summary" msgid="2363105560396317624">"<Jo e detyrueshme>"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Prek për t\'i shfaqur të gjitha"</string>
+ <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Prek për t\'i fshehur të gjitha"</string>
+ <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> është e detyrueshme dhe nuk mund të lihet bosh."</string>
+ <string name="not_a_valid_port" msgid="7931422555587011830">"Numri i portës duhet të jetë brenda 1 000 dhe 65 534."</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Për të kryer një telefonatë SIP, kontrollo lidhjen e internetit së pari."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Duhet të jesh i lidhur me rrjetin Wi-Fi për telefonata SIP (përdor \"Me valë dhe cilësimet e rrjetit\")."</string>
+ <string name="no_voip" msgid="3038021971231952704">"\"Telefonata SIP\" nuk mbështetet"</string>
+ <string name="sip_system_decide" msgid="5577696249416700671">"Automatik"</string>
+ <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Dërgo gjithmonë"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Telefonata SIP e integruar"</string>
+</resources>
diff --git a/sip/res/values-sr/strings.xml b/sip/res/values-sr/strings.xml
index 92c9e40..18ae28f 100644
--- a/sip/res/values-sr/strings.xml
+++ b/sip/res/values-sr/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Подешавања интернет позива"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Налози за интернет позиве (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Подешавања SIP-а"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP налози"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Налози"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Примај долазне позиве"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Смањује трајање батерије"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Користите интернет позиве"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Користите интернет позиве (само Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Више троши батерију"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Користите SIP позиве"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Користите SIP позиве (само за Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"За све позиве када је мрежа за пренос података доступна"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Само за интернет позиве"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Питај за сваки позив"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Само за SIP позиве"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"За све позиве"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Упутите позив"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Користите налог за интернет позиве:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Увек користи за упућивање интернет позива"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Можете да промените налог за интернет позиве који ће се подразумевано користити на екрану Телефон > Подешавања > Подешавања интернет позива > Налози."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Позив ка мобилном телефону"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Интернет позив"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Нема налога за интернет позиве"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Нема налога за интернет позиве на овом телефону. Да ли желите сада да додате један?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Додај"</string>
<string name="add_sip_account" msgid="800843669753980091">"Додај налог"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Уклони налог"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP налози"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Затворите профил"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Потврди"</string>
<string name="close_profile" msgid="3122414058856309881">"Затвори"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Примарни налог. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Провера статуса..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Регистровање..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"И даље покушава..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Број порта"</string>
<string name="transport_title" msgid="889155457465372527">"Тип преноса"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Пошаљи keep-alive поруку"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Подеси као примарни налог"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Користи се за одлазне позиве"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Опционална подешавања"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Корисничко име за потврду идентитета"</string>
<string name="auth_username_summary" msgid="941160241371436473">"За потврду идентитета користи се корисничко име"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Додирните да бисте сакрили све"</string>
<string name="empty_alert" msgid="6659484914371384024">"Поље <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> је обавезно и не може да буде празно."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Број порта би требало да буде између 1000 и 65.534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Нема интернет везе"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Не постоји Wi-Fi веза"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Да бисте упутили интернет позив, прво проверите интернет везу."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Потребно је да се повежете са Wi-Fi мрежом за интернет позиве (користите Подешавања бежичне везе и мреже)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Интернет позиви нису подржани"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Да бисте упутили SIP позив, прво проверите интернет везу."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Треба да будете повезани са Wi-Fi мрежом да бисте упућивали SIP позиве (користите Подешавања бежичних веза и мрежа)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP позивање није подржано"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Аутоматски"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Увек шаљи"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Уграђено позивање преко интернета"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Уграђена функција SIP позива"</string>
</resources>
diff --git a/sip/res/values-sv/strings.xml b/sip/res/values-sv/strings.xml
index 86eaea2..685efd2 100644
--- a/sip/res/values-sv/strings.xml
+++ b/sip/res/values-sv/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Inställningar för internetsamtal"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Konton för internetsamtal (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP-inställningar"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP-konton"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Konton"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Ta emot inkommande samtal"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Sänker batteriförbrukningen"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Använd internetsamtal"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Använd internetsamtal (endast Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Drar mer batteri"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Använd SIP-samtal"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Använd SIP-samtal (endast Wi-FI)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"För alla samtal när datanätverk är tillgängligt"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Endast för internetsamtal"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Fråga för varje samtal"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Endast för SIP-samtal"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"För alla samtal"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Ring samtal"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Använd detta konto för internetsamtal:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Använd för alla internetsamtal"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Du kan ändra vilket konto som ska användas som standard för internetsamtal. Valet görs under Telefon > Inställningar > Inställningar för internetsamtal > Konton."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Mobilsamtal"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internetsamtal"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Inget konto för internetsamtal"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Det finns inget konto för internetsamtal på den här mobilen. Vill du lägga till ett nu?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Lägg till"</string>
<string name="add_sip_account" msgid="800843669753980091">"Lägg till ett konto"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Ta bort konto"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP-konton"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Stäng profilen"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Stäng"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Primärt konto. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Kontrollerar status ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Registrerar ..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Försöker fortfarande ..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Portnummer"</string>
<string name="transport_title" msgid="889155457465372527">"Transporttyp"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Skicka \"behåll aktiv\""</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Använd som primärt konto"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Används för utgående samtal"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Valfria inställningar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Användarnamn vid autentisering"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Användarnamn som används vid autentisering"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tryck om du vill dölja alla"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> är ett obligatoriskt fält som måste fyllas i."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Portnumret ska vara mellan 1000 och 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Ingen internetanslutning"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Ingen Wi-Fi-anslutning"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Kontrollera internetanslutningen om du vill ringa internetsamtal."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Enheten måste vara ansluten till ett Wi-Fi-nätverk för att du ska kunna ringa internetsamtal (använd inställningarna under Trådlöst och nätverk)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Inget stöd för internetsamtal"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Om du vill ringa ett SIP-samtal kontrollerar du först att du är ansluten till internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Du måste vara ansluten till Wi-Fi för att kunna ringa SIP-samtal (du ändrar detta i inställningarna för Trådlöst och nätverk)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP-samtal stöds inte"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Automatiskt"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Skicka alltid"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Inbyggd internettelefoni"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Inbyggd tjänst för SIP-samtal"</string>
</resources>
diff --git a/sip/res/values-sw/strings.xml b/sip/res/values-sw/strings.xml
index 1974859..714b7b2 100644
--- a/sip/res/values-sw/strings.xml
+++ b/sip/res/values-sw/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Mipangilio ya simu za Intaneti"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Akaunti za upigaji simu za Intaneti (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Mipangilio ya SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Akaunti za SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Akaunti"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Pokea simu zinazoingia"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Hupunguza maisha ya betri"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Tumia upigaji simu wa Intaneti"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Tumia upigaji simu ya Intaneti (Wi-Fi tu)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Hutumia betri zaidi"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Tumia upigaji simu wa SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Tumia upigaji simu wa SIP (Wi-Fi pekee)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Kwa simu zote wakati mtandao wa data unapatikana"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Kwa simu za Intaneti tu"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Uliza kwa kila simu"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Kwa simu za SIP pekee"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Kwa simu zote"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Piga simu"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Tumia akaunti ya upigaji simu za Intaneti:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Tumia kila wakati kupiga simu za Intaneti"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Unaweza kubadilisha ni akaunti gani ya kupiga simu ya Intaneti itatumika kwa chaguo-msingi kwenye Simu > Mipangilio > mipangilio ya kupiga simu ya Intaneti > Skrini ya akaunti."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Kupiga simu ya mkononi"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Simu ya Intaneti"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Hakuna akaunti ya upigaji simu wa Intaneti"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Hakuna akaunti za kupiga simu za Intaneti kwenye simu hii. Je, ungependa kuongeza akaunti sasa?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Ongeza"</string>
<string name="add_sip_account" msgid="800843669753980091">"Ongeza akaunti"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Ondoa akaunti"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Akaunti za SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Funga wasifu"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Sawa"</string>
<string name="close_profile" msgid="3122414058856309881">"Funga"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Akaunti ya msingi: <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Inakagua hali..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Inasajili..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Bado inajaribu..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Nambari ya mlango"</string>
<string name="transport_title" msgid="889155457465372527">"Aina ya usafiri"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Tuma weka-hai"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Weka kama akaunti ya msingi"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Ilitumika kwa simu zinazotoka"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Mipangilio ya hiari"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Jina la mtumiaji la uthibitishaji"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Jina la mtumiaji hutumika kwa uthibitishaji"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Gusa ili ufiche zote"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> sharti ijazwe na haiwezi kuachwa wazi."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Nambari ya mlango inafaa kuwa kati ya 1000 na 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Hakuna muunganisho wa Intaneti"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Hakuna muunganisho wa Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Ili upige simu ya Intaneti, kagua muunganisho wako wa Intaneti kwanza."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Lazima uwe umeunganishwa kwenye mtandao wa Wi-Fi ili upige simu za Intaneti (tumia bila waya na Mipangilio ya mtandao)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Haina uwezo wa kupiga simu za Intaneti"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Ili upige simu ya SIP, kwanza kagua muunganisho wako wa Intaneti."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Inabidi uwe umeunganishwa kwenye mtandao wa Wi-Fi ili upige simu za SIP (tumia mipangilio ya Bila Kutumia Waya na Mtandao)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Upigaji simu ya SIP hauwezi kutumika."</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Otomatiki"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Tuma kila wakati"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Upigaji simu kupitia Intaneti uliojengewa ndani"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Upigaji simu wa SIP uliojengewa ndani ya kifaa"</string>
</resources>
diff --git a/sip/res/values-ta-rIN/strings.xml b/sip/res/values-ta-rIN/strings.xml
index 43309a2..c4c2982 100644
--- a/sip/res/values-ta-rIN/strings.xml
+++ b/sip/res/values-ta-rIN/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"இணைய அழைப்பு அமைப்புகள்"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"இணைய அழைப்பிற்கான (SIP) கணக்குகள்"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP அமைப்புகள்"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP கணக்குகள்"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"கணக்குகள்"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"உள்வரும் அழைப்புகளைப் பெறு"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"பேட்டரி அளவைக் குறைக்கிறது"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"இணைய அழைப்பைப் பயன்படுத்து"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"இணைய அழைப்பிற்குப் பயன்படுத்து (Wi-Fi மட்டும்)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"பேட்டரியை அதிகமாகப் பயன்படுத்தும்"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP அழைப்பைப் பயன்படுத்து"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP அழைப்பைப் பயன்படுத்து (வைஃபை மட்டும்)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"தரவு நெட்வொர்க் கிடைக்கும்போது எல்லா அழைப்புகளுக்கும்"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"இணைய அழைப்புகளுக்கு மட்டும்"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ஒவ்வொரு அழைப்பிற்கும் கேள்"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP அழைப்புகளுக்கு மட்டும்"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"எல்லா அழைப்புகளுக்கும்"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"அழை"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"இணைய அழைப்பிற்கான கணக்கைப் பயன்படுத்துக:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"இணைய அழைப்புகளை மேற்கொள்ள எப்போதும் பயன்படுத்து"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"மொபைல் > அமைப்புகள் > இணைய அழைப்பு அமைப்புகள் > கணக்குகள் திரையிலிருந்து இயல்புநிலையாகப் பயன்படுத்துவதற்கான இணைய அழைப்பிற்கான கணக்கை நீங்கள் மாற்றலாம்."</string>
- <string name="pstn_phone" msgid="9596332924895028">"செல்ஃபோன் அழைப்பு"</string>
- <string name="internet_phone" msgid="4444458244774004247">"இணைய அழைப்பு"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"இணைய அழைப்பிற்கான கணக்கு எதுவுமில்லை"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"மொபைலில், இணைய அழைப்பிற்கான கணக்குகள் எதுவுமில்லை. இப்போது புதிதாக ஒன்றைச் சேர்க்க விருப்பமா?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"சேர்"</string>
<string name="add_sip_account" msgid="800843669753980091">"கணக்கைச் சேர்"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"கணக்கை அகற்று"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP கணக்குகள்"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"சுயவிவரத்தை மூடு"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"சரி"</string>
<string name="close_profile" msgid="3122414058856309881">"மூடு"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"முதன்மை கணக்கு. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"நிலையைச் சரிபார்க்கிறது..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"பதிவுசெய்கிறது…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"இன்னும் முயற்சிக்கிறது…"</string>
@@ -69,9 +58,7 @@
<string name="port_title" msgid="6693965912656593862">"போர்ட் எண்"</string>
<string name="transport_title" msgid="889155457465372527">"பரிமாற்ற வகை"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"எப்போதும் விழிப்புடன் அனுப்பு"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"முதன்மை கணக்காக அமை"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"வெளிச்செல்லும் அழைப்புகளுக்குப் பயன்படுத்தப்பட்டது"</string>
- <string name="advanced_settings" msgid="6622996380747040711">"விருப்ப அமைப்புகள்"</string>
+ <string name="advanced_settings" msgid="6622996380747040711">"விருப்ப அமைப்பு"</string>
<string name="auth_username_title" msgid="8262491689004708265">"அங்கீகாரப் பயனர்பெயர்"</string>
<string name="auth_username_summary" msgid="941160241371436473">"அங்கீகரிப்பிற்குப் பயனர்பெயர் பயன்படுத்தப்பட்டது"</string>
<string name="default_preference_summary" msgid="1979249643719483249">"<அமைக்கப்படவில்லை>"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ எல்லாவற்றையும் மறைக்கத் தொடவும்"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> அவசியமானது மற்றும் வெறுமையாக விடக்கூடாது."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"போர்ட் எண் 1000 இலிருந்து 65534 க்குள் இருக்க வேண்டும்."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"இணைய இணைப்பு இல்லை"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi இணைப்பு இல்லை"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"இணைய அழைப்பிற்கு, முதலில் இணைய இணைப்பைச் சரிபார்க்கவும்."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"இணைய அழைப்புகளுக்கு Wi-Fi நெட்வொர்க்குடன் இணைக்கப்பட வேண்டும் (வயர்லெஸ் & நெட்வொர்க் அமைப்புகளைப் பயன்படுத்தவும்)."</string>
- <string name="no_voip" msgid="1600568347241920141">"இணைய அழைப்பு ஆதரிக்கப்படவில்லை"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP மூலம் அழைக்க, முதலில் இணைய இணைப்பைச் சரிபார்க்கவும்."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP அழைப்புகளைச் செய்ய, வைஃபை நெட்வொர்க்குடன் இணைக்கப்பட்டிருக்க வேண்டும் (வயர்லெஸ் & நெட்வொர்க் அமைப்புகளைப் பயன்படுத்தவும்)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP அழைப்பு ஆதரிக்கப்படாது"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"தானியங்கு"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"எப்போதும் அனுப்பு"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"உள்ளிணைந்த இணைய அழைப்பு"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"உள்கட்டமைக்கப்பட்ட SIP அழைப்பு"</string>
</resources>
diff --git a/sip/res/values-te-rIN/strings.xml b/sip/res/values-te-rIN/strings.xml
index 71c4abe..713f42b 100644
--- a/sip/res/values-te-rIN/strings.xml
+++ b/sip/res/values-te-rIN/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"ఇంటర్నెట్ కాల్ సెట్టింగ్లు"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"ఇంటర్నెట్ కాలింగ్ (SIP) ఖాతాలు"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP సెట్టింగ్లు"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP ఖాతాలు"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"ఖాతాలు"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"ఇన్కమింగ్ కాల్లను స్వీకరించు"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"బ్యాటరీ సామర్థ్యాన్ని తగ్గిస్తుంది"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ఇంటర్నెట్ కాలింగ్ను ఉపయోగించండి"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ఇంటర్నెట్ కాలింగ్ను (Wi-Fi మాత్రమే) ఉపయోగించండి"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ఎక్కువ బ్యాటరీ జీవితకాలాన్ని ఉపయోగిస్తుంది"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP కాలింగ్ను ఉపయోగించండి"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP కాలింగ్ను (Wi-Fi మాత్రమే) ఉపయోగించండి"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"డేటా నెట్వర్క్ అందుబాటులో ఉన్నప్పుడు అన్ని కాల్ల కోసం"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"ఇంటర్నెట్ కాల్ల కోసం మాత్రమే"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ప్రతి కాల్కి అడుగు"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP కాల్ల కోసం మాత్రమే"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"అన్ని కాల్ల కోసం"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"కాల్ చేయండి"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ఈ ఇంటర్నెట్ కాలింగ్ ఖాతాను ఉపయోగించండి:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"ఇంటర్నెట్ కాల్లు చేయడానికి ఎల్లప్పుడూ ఉపయోగించు"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"మీరు ఫోన్ > సెట్టింగ్లు > ఇంటర్నెట్ కాల్ సెట్టింగ్లు > ఖాతాలు స్క్రీన్లో డిఫాల్ట్గా ఉపయోగించాల్సిన ఇంటర్నెట్ కాలింగ్ ఖాతాను మార్చవచ్చు."</string>
- <string name="pstn_phone" msgid="9596332924895028">"సెల్ ఫోన్ కాల్"</string>
- <string name="internet_phone" msgid="4444458244774004247">"ఇంటర్నెట్ కాల్"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ఇంటర్నెట్ కాలింగ్ ఖాతా లేదు"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"ఈ ఫోన్లో ఇంటర్నెట్ కాలింగ్ ఖాతాలు ఏవీ లేవు. మీరు ఇప్పుడు ఒకదాన్ని జోడించాలనుకుంటున్నారా?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"జోడించు"</string>
<string name="add_sip_account" msgid="800843669753980091">"ఖాతాను జోడించు"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"ఖాతాను తీసివేయి"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP ఖాతాలు"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"ప్రొఫైల్ను మూసివేయండి"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"సరే"</string>
<string name="close_profile" msgid="3122414058856309881">"మూసివేయి"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"ప్రాథమిక ఖాతా. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"స్థితిని తనిఖీ చేస్తోంది..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"నమోదు చేస్తోంది…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"ఇప్పటికీ ప్రయత్నిస్తోంది..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"పోర్ట్ సంఖ్య"</string>
<string name="transport_title" msgid="889155457465372527">"రవాణా రకం"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"సక్రియంగా ఉంచే సందేశం పంపండి"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"ప్రాథమిక ఖాతాగా సెట్ చేయండి"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"అవుట్బౌండ్ కాల్ల కోసం ఉపయోగించబడుతుంది"</string>
<string name="advanced_settings" msgid="6622996380747040711">"ఐచ్ఛిక సెట్టింగ్లు"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ప్రామాణీకరణ వినియోగదారు పేరు"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ప్రామాణీకరణ కోసం వినియోగదారు పేరు ఉపయోగించబడింది"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ అన్నీ దాచడానికి తాకండి"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> అవసరం కావున ఖాళీగా వదిలిపెట్టకూడదు."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"పోర్ట్ సంఖ్య 1000 మరియు 65534 మధ్య ఉండాలి."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"ఇంటర్నెట్ కనెక్షన్ లేదు"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi కనెక్షన్ లేదు"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"ఇంటర్నెట్ కాల్ చేయడానికి, మొదట మీ ఇంటర్నెట్ కనెక్షన్ను తనిఖీ చేయండి."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"ఇంటర్నెట్ కాల్ల కోసం మీరు Wi-Fi నెట్వర్క్కు కనెక్ట్ అయ్యి ఉండాలి (వైర్లెస్ & నెట్వర్క్ సెట్టింగ్లను ఉపయోగించండి)."</string>
- <string name="no_voip" msgid="1600568347241920141">"ఇంటర్నెట్ కాలింగ్కు మద్దతు లేదు"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP కాల్ చేయడానికి, ముందుగా మీ ఇంటర్నెట్ కనెక్షన్ను తనిఖీ చేయండి."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"మీరు SIP కాల్లు చేయడం కోసం Wi-Fi నెట్వర్క్కు కనెక్ట్ అవ్వడం అవసరం (వైర్లెస్ & నెట్వర్క్ సెట్టింగ్లను ఉపయోగించండి)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP కాలింగ్కి మద్దతు లేదు"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"స్వయంచాలకం"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"ఎల్లప్పుడూ పంపు"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"అంతర్నిర్మిత ఇంటర్నెట్ కాలింగ్"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"అంతర్నిర్మిత SIP కాలింగ్"</string>
</resources>
diff --git a/sip/res/values-th/strings.xml b/sip/res/values-th/strings.xml
index fd346d0..c3e4e89 100644
--- a/sip/res/values-th/strings.xml
+++ b/sip/res/values-th/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"การตั้งค่าการโทรทางอินเทอร์เน็ต"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"บัญชีการโทรทางอินเทอร์เน็ต (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"การตั้งค่า SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"บัญชี SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"บัญชี"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"รับสายเรียกเข้า"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"ลดอายุการใช้งานแบตเตอรี่"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"ใช้การโทรทางอินเทอร์เน็ต"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"ใช้การโทรทางอินเทอร์เน็ต (Wi-Fi เท่านั้น)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"ใช้อายุการใช้งานแบตเตอรี่มากขึ้น"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"ใช้การโทรผ่าน SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"ใช้การโทรผ่าน SIP (Wi-Fi เท่านั้น)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"สำหรับทุกสายเมื่อเครือข่ายข้อมูลใช้งานได้"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"สำหรับโทรทางอินเทอร์เน็ตเท่านั้น"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ถามทุกครั้งที่โทรออก"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"สำหรับการโทรผ่าน SIP เท่านั้น"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"สำหรับการโทรออกทั้งหมด"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"โทรออก"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"ใช้บัญชีการโทรทางอินเทอร์เน็ต:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"ใช้ทุกครั้งที่โทรออกทางอินเทอร์เน็ต"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"คุณสามารถเปลี่ยนบัญชีการโทรทางอินเทอร์เน็ตที่จะใช้เป็นค่าเริ่มต้นได้จากหน้าจอโทรศัพท์ > ตั้งค่า > การตั้งค่าการโทรทางอินเทอร์เน็ต > บัญชี"</string>
- <string name="pstn_phone" msgid="9596332924895028">"โทรออกด้วยโทรศัพท์มือถือ"</string>
- <string name="internet_phone" msgid="4444458244774004247">"โทรทางอินเทอร์เน็ต"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"ไม่มีบัญชีการโทรทางอินเทอร์เน็ต"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"ไม่มีบัญชีโทรทางอินเทอร์เน็ตสำหรับโทรศัพท์นี้ คุณต้องการเพิ่มบัญชีเลยไหม"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"เพิ่ม"</string>
<string name="add_sip_account" msgid="800843669753980091">"เพิ่มบัญชี"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"นำบัญชีออก"</string>
<string name="sip_account_list" msgid="5610858485304821480">"บัญชี SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"ปิดโปรไฟล์"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ตกลง"</string>
<string name="close_profile" msgid="3122414058856309881">"ปิด"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"บัญชีหลัก <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"กำลังตรวจสอบสถานะ..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"กำลังลงทะเบียน…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"กำลังพยายาม…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"หมายเลขพอร์ต"</string>
<string name="transport_title" msgid="889155457465372527">"ประเภทการส่งผ่านข้อมูล"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"ส่งแบบ keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"ตั้งค่าเป็นบัญชีหลัก"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"ใช้สำหรับการโทรออก"</string>
<string name="advanced_settings" msgid="6622996380747040711">"การตั้งค่าที่ไม่บังคับ"</string>
<string name="auth_username_title" msgid="8262491689004708265">"ชื่อผู้ใช้สำหรับตรวจสอบสิทธิ์"</string>
<string name="auth_username_summary" msgid="941160241371436473">"ชื่อผู้ใช้ที่ใช้ในการตรวจสอบสิทธิ์"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ แตะเพื่อซ่อนทั้งหมด"</string>
<string name="empty_alert" msgid="6659484914371384024">"ต้องระบุ <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> และไม่สามารถปล่อยว่างได้"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"หมายเลขพอร์ตควรอยู่ระหว่าง 1000 ถึง 65534"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"ไม่มีการเชื่อมต่ออินเทอร์เน็ต"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"ไม่มีการเชื่อมต่อ Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"หากต้องการโทรออกทางอินเทอร์เน็ต ให้ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณก่อน"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"คุณจำเป็นต้องเชื่อมต่อกับเครือข่าย Wi-Fi สำหรับการโทรทางอินเทอร์เน็ต (ใช้การตั้งค่าระบบไร้สายและเครือข่าย)"</string>
- <string name="no_voip" msgid="1600568347241920141">"ไม่สนับสนุนการโทรทางอินเทอร์เน็ต"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"หากต้องการโทรผ่าน SIP ให้ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตก่อน"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"คุณต้องเชื่อมต่อเครือข่าย Wi-Fi เพื่อโทรผ่าน SIP (ใช้การตั้งค่าระบบไร้สายและเครือข่าย)"</string>
+ <string name="no_voip" msgid="3038021971231952704">"ไม่สนับสนุนการโทรผ่าน SIP"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"อัตโนมัติ"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"ส่งเสมอ"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"การโทรทางอินเทอร์เน็ตในตัว"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"การโทรผ่าน SIP ในตัว"</string>
</resources>
diff --git a/sip/res/values-tl/strings.xml b/sip/res/values-tl/strings.xml
index 4f4b9e8..bcc2ae5 100644
--- a/sip/res/values-tl/strings.xml
+++ b/sip/res/values-tl/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Mga setting ng tawag sa Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Mga account sa pagtawag sa Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Mga setting ng SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Mga SIP account"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Mga Account"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Tumanggap ng mga papasok na tawag"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Binabawasan ang buhay ng baterya"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Gumamit ng pagtawag sa Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Gumamit ng pagtawag sa Internet (Wi-Fi lang)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Gumagamit ng higit na tagal ng baterya"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Gamitin ang pagtawag sa pamamagitan ng SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Gamitin ang pagtawag sa pamamagitan ng SIP (Wi-Fi lang)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Para sa lahat ng mga tawag kapag available ang data network"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Para sa mga tawag sa Internet lang"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Hingin ang bawat tawag"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Para lang sa mga tawag sa pamamagitan ng SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Para sa lahat ng tawag"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Tumawag"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Gumamit ng account sa pagtawag sa Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Palaging gamitin upang gumawa ng mga tawag sa Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Maaari mong baguhin kung anong account ng pagtawag sa Internet ang default na gagamitin mula sa Telepono > Mga Setting > Mga setting ng tawag sa internet > screen ng Mga account."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Tawag sa cell phone"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Tawag sa internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Walang account sa pagtawag sa Internet"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Walang mga account sa pagtawag sa Internet sa teleponong ito. Gusto mo bang magdagdag ng isa ngayon?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Idagdag"</string>
<string name="add_sip_account" msgid="800843669753980091">"Magdagdag ng account"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Alisin ang account"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Mga SIP account"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Isara ang profile"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Ayos"</string>
<string name="close_profile" msgid="3122414058856309881">"Isara"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Pangunahing account. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Tinitingnan ang status..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Inirerehistro..."</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Sinusubukan pa rin..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Numero ng port"</string>
<string name="transport_title" msgid="889155457465372527">"Uri ng paglilipat"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Magpadala ng keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Itakda bilang pangunahing account"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Ginagamit para sa mga papalabas na tawag"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Mga opsyonal na setting"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Username sa pagpapatotoo"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Ginamit ang username para sa pagpapatotoo"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Pindutin upang itago ang lahat"</string>
<string name="empty_alert" msgid="6659484914371384024">"Kinakailangan ang <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> at hindi maaaring iwanang blangko."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Dapat na nasa pagitan ng 1000 at 65534 ang numero ng port."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Wala koneksyon net"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Walang koneksyon sa Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Upang tumawag sa Internet, suriin muna ang iyong koneksyon sa Internet."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Kailangan mong maging konektado sa isang Wi-Fi network para sa mga tawag sa Internet (gamitin ang mga setting ng Wireless & Network)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Hindi suportado ang pagtawag sa Internet"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Upang tumawag sa pamamagitan ng SIP, suriin muna ang iyong koneksyon sa Internet."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Kailangang nakakonekta ka sa isang Wi-Fi network para sa mga tawag sa pamamagitan ng SIP (gamitin ang mga setting ng Wireless at Network)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Hindi sinusuportahan ang pagtawag sa pamamagitan ng SIP"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Awtomatiko"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Palaging ipadala"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Built-in na pagtawag sa Internet"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Built-in na pagtawag sa pamamagitan ng SIP"</string>
</resources>
diff --git a/sip/res/values-tr/strings.xml b/sip/res/values-tr/strings.xml
index 958302c..dad7ab6 100644
--- a/sip/res/values-tr/strings.xml
+++ b/sip/res/values-tr/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"İnternet çağrısı ayarları"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"İnternet çağrısı (SIP) hesapları"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ayarları"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP hesapları"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Hesaplar"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Gelen çağrıları al"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Pil ömrünü kısaltır"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"İnternet çağrısını kullan"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"İnternet çağrısı kullan (yalnızca kablosuz)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Daha fazla pil kullanır"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP aramayı kullan"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP aramayı kullan (sadece Kablosuz)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Veri ağı uygun durumdayken yapılan tüm çağrılar için"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Yalnızca İnternet numaraları için"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Her çağrı için sor"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Sadece SIP çağrıları için"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Tüm çağrılar için"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Çağrı yap"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"İnternet çağrısı hesabını kullan:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Her zaman İnternet çağrıları yapmak için kullan"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Varsayılan olarak hangi İnternet çağrısı hesabının kullanılacağını Telefon > Ayarlar > İnternet çağrısı ayarları > Hesaplar ekranını kullanarak değiştirebilirsiniz."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Cep telefonu çağrısı"</string>
- <string name="internet_phone" msgid="4444458244774004247">"İnternet çağrısı"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"İnternet çağrısı hesabı yok"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Bu telefonda hiç İnternet çağrısı hesabı yok. Şimdi eklemek ister misiniz?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Ekle"</string>
<string name="add_sip_account" msgid="800843669753980091">"Hesap ekle"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Hesabı kaldır"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP hesapları"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Profili kapat"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"Tamam"</string>
<string name="close_profile" msgid="3122414058856309881">"Kapat"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Birincil hesap. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Durum denetleniyor..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Kayıt olunuyor…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Denemeye devam ediliyor…"</string>
@@ -59,34 +48,30 @@
<string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Hesap kaydı başarısız oldu: Yanlış kullanıcı adı veya şifre."</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"Hesap kaydı başarısız oldu: Sunucu adını kontrol edin."</string>
<string name="third_party_account_summary" msgid="9041060473615403041">"Bu hesap şu anda <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> uygulaması tarafından kullanılıyor."</string>
- <string name="sip_edit_title" msgid="1967247832635750410">"SIP hesabı ayrıntıları"</string>
- <string name="sip_edit_new_title" msgid="266414118302574305">"SIP hesabı ayrıntıları"</string>
+ <string name="sip_edit_title" msgid="1967247832635750410">"SIP hesabı"</string>
+ <string name="sip_edit_new_title" msgid="266414118302574305">"SIP hesabı"</string>
<string name="domain_address_title" msgid="1968479941328225423">"Sunucu"</string>
<string name="username_title" msgid="6770064611005663470">"Kullanıcı adı"</string>
<string name="password_title" msgid="5289013731515564295">"Şifre"</string>
- <string name="display_name_title" msgid="579241787583079773">"Adı görüntüle"</string>
+ <string name="display_name_title" msgid="579241787583079773">"Görüntülenen ad"</string>
<string name="proxy_address_title" msgid="6890163365640631841">"Giden proxy adresi"</string>
<string name="port_title" msgid="6693965912656593862">"Bağlantı noktası numarası"</string>
<string name="transport_title" msgid="889155457465372527">"Aktarım türü"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Canlı tutma mesajı gönder"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Birincil hesap olarak ayarla"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Giden çağrılar için kullanılır"</string>
<string name="advanced_settings" msgid="6622996380747040711">"İsteğe bağlı ayarlar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Kimlik doğrulama kullanıcı adı"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Kimlik doğrulama için kullanılan kullanıcı adı"</string>
<string name="default_preference_summary" msgid="1979249643719483249">"<Ayarlanmadı>"</string>
<string name="display_name_summary" msgid="7155076491675565407">"<Kullanıcı adıyla aynı>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<İsteğe bağlı>"</string>
- <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tümünü göstermek için dokunun"</string>
+ <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tümünü görmek için dokunun"</string>
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tümünü gizlemek için dokunun"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> gerekli, bu alan boş bırakılamaz."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Bağlantı noktası numarası 1000 ile 65534 arasında olmalıdır."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"İnternet bağlantısı yok"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Kablosuz bağlantı yok"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"İnternet çağrısı yapmak için öncelikle İnternet bağlantınızı denetleyin."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"İnternet çağrıları için bir Kablosuz ağa bağlı olmalısınız (Kablosuz ve Ağ ayarlarını kullanın)."</string>
- <string name="no_voip" msgid="1600568347241920141">"İnternet çağrısı desteklenmiyor"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Bir SIP çağrısı yapmak için önce İnternet bağlantınızı kontrol edin."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP çağrıları için bir Kablosuz ağa bağlı olmanız (Kablosuz ve Ağ ayarlarını kullanın) gerekir."</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP çağrısı desteklenmiyor"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Otomatik"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Her zaman gönder"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Yerleşik İnternet çağrısı"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Yerleşik SIP arama"</string>
</resources>
diff --git a/sip/res/values-uk/strings.xml b/sip/res/values-uk/strings.xml
index 230630b..f577451 100644
--- a/sip/res/values-uk/strings.xml
+++ b/sip/res/values-uk/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Налаштування інтернет-дзвінків"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Облікові записи для інтернет-дзвінків (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Налаштування SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Облікові записи SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Облікові записи"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Отримувати вхідні дзвінки"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Зменшує тривалість роботи акумулятора"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Використовувати інтернет-дзвінки"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Використовувати інтернет-дзвінки (лише Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Використовує більше заряду акумулятора"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Використання викликів SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Використання викликів SIP (лише Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Для всіх дзвінків, коли доступна мережа передавання даних"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Лише для інтернет-дзвінків"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Запитувати для кожного дзвінка"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Лише для викликів SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Для всіх дзвінків"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Здійснити дзвінок"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Використовувати обліковий запис для інтернет-дзвінків:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Завжди використовувати для здійснення інтернет-дзвінків"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Обліковий запис за умовчанням для інтернет-дзвінків можна змінити на екрані \"Телефон\" > \"Налаштування\" > \"Налаштування інтернет-дзвінків\" > \"Облікові записи\"."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Дзвінок із мобільного телефона"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Інтернет-дзвінок"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Немає облікового запису для інтернет-дзвінків"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"У цьому телефоні немає облікових записів для інтернет-дзвінків. Додати зараз?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Додати"</string>
<string name="add_sip_account" msgid="800843669753980091">"Додати обліковий запис"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Видалити обліковий запис"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Облікові записи SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Закрити профіль"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ОК"</string>
<string name="close_profile" msgid="3122414058856309881">"Закрити"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Основний обліковий запис. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Перевірка статусу…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Реєстрація…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Повторна спроба…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Номер порту"</string>
<string name="transport_title" msgid="889155457465372527">"Тип транспортування"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Надсилання повідомлення для підтримки з’єднання"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Зробити основним обліковим записом"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Використовується для вихідних дзвінків"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Додаткові налаштування"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Ім’я користувача для автентифікації"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Ім’я користувача, використане для автентифікації"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Торкніться, щоб сховати все"</string>
<string name="empty_alert" msgid="6659484914371384024">"Поле <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> обов’язкове. Воно не може бути порожнім."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Введіть номер порту між 1000 та 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Немає з’єднання з Інтернетом"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Немає з’єднання Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Щоб здійснити інтернет-дзвінок, спершу перевірте своє з’єднання з Інтернетом."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Для інтернет-дзвінків потрібне з’єднання з мережею Wi-Fi (скористайтеся налаштуваннями бездротових і дротових мереж)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Інтернет-дзвінки не підтримуються"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Щоб здійснити виклик SIP, спершу перевірте своє з’єднання з Інтернетом."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Для викликів SIP потрібне з’єднання з мережею Wi-Fi (скористайтеся налаштуваннями бездротового зв’язку та мереж)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Виклики SIP не підтримуються"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Автоматично"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Завжди надсилати"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Вбудована функція інтернет-дзвінків"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Вбудована функція викликів SIP"</string>
</resources>
diff --git a/sip/res/values-ur-rPK/strings.xml b/sip/res/values-ur-rPK/strings.xml
index 6b67d49..ed3d891 100644
--- a/sip/res/values-ur-rPK/strings.xml
+++ b/sip/res/values-ur-rPK/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"انٹرنیٹ کال کی ترتیبات"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"انٹرنیٹ کالنگ (SIP) اکاؤنٹس"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP ترتیبات"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP اکاؤنٹس"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"اکاؤنٹس"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"اِن کمنگ کالیں وصول کریں"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"بیٹری کی میعاد کم کر دیتا ہے"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"انٹرنیٹ کالنگ کا استعمال کریں"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"انٹرنیٹ کالنگ کا استعمال کریں (صرف Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"مزید بیٹری استعمال کرتا ہے"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP کالنگ استعمال کریں"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP کالنگ استعمال کریں (صرف Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"ڈیٹا نیٹ ورک دستیاب ہونے پر سبھی کالوں کیلئے"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"صرف انٹرنیٹ کالوں کیلئے"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"ہر کال کیلئے پوچھیں"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"صرف SIP کالز کیلئے"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"سبھی کالوں کیلئے"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"کال کریں"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"انٹرنیٹ کالنگ اکاؤنٹ کا استعمال کریں:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"انٹرنیٹ کالیں کرنے کیلئے ہمیشہ استعمال کریں"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"کونسا انٹرنیٹ کالنگ اکاؤنٹ بطور ڈیفالٹ استعمال کرنا ہے آپ اسے فون > ترتیبات > انٹرنیٹ کال کی ترتیبات > اکاؤنٹس کی اسکرین سے تبدیل کرسکتے ہیں۔"</string>
- <string name="pstn_phone" msgid="9596332924895028">"سیل فون کال"</string>
- <string name="internet_phone" msgid="4444458244774004247">"انٹرنیٹ کال"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"کوئی انٹرنیٹ کالنگ اکاؤنٹ نہیں ہے"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"اس فون پر کوئی انٹرنیٹ کالنگ اکاؤنٹس نہیں ہیں۔ کیا آپ ابھی ایک شامل کرنا چاہتے ہیں؟"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"شامل کریں"</string>
<string name="add_sip_account" msgid="800843669753980091">"اکاؤنٹ شامل کریں"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"اکاؤنٹ ہٹائیں"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP اکاؤنٹس"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"پروفائل بند کریں"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"ٹھیک ہے"</string>
<string name="close_profile" msgid="3122414058856309881">"بند کریں"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"بنیادی اکاؤنٹ۔ <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"اسٹیٹس کو چیک کیا جا رہا ہے…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"رجسٹر کیا جا رہا ہے…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"اب بھی کوشش کی جا رہی ہے…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"پورٹ نمبر"</string>
<string name="transport_title" msgid="889155457465372527">"ٹرانسپورٹ کی قسم"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"keep-alive بھیجیں"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"بنیادی اکاؤنٹ کے بطور سیٹ کریں"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"آؤٹ باؤنڈ کالوں کیلئے استعمال کیا گیا"</string>
<string name="advanced_settings" msgid="6622996380747040711">"اختیاری ترتیبات"</string>
<string name="auth_username_title" msgid="8262491689004708265">"توثیق کیلئے صارف نام"</string>
<string name="auth_username_summary" msgid="941160241371436473">"توثیق کیلئے استعمال کردہ صارف نام"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ سبھی کو چھپانے کیلئے ٹچ کریں"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> مطلوب ہے اور خالی نہیں چھوڑا جا سکتا۔"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"پورٹ نمبر 1000 اور 65534 کے اندر ہونا چاہیے۔"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"کوئی انٹرنیٹ کنکشن نہیں ہے"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"کوئی Wi-Fi کنکشن نہیں ہے"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"انٹرنیٹ کال کرنے کیلئے، پہلے اپنا انٹرنیٹ کنکشن چیک کریں۔"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"انٹرنیٹ کالز کیلئے آپ کو ایک Wi-Fi نیٹ ورک سے مربوط ہونے کی ضرورت ہے (وائرلیس اور نیٹ ورک کی ترتیبات کا استعمال کریں)۔"</string>
- <string name="no_voip" msgid="1600568347241920141">"انٹرنیٹ کالنگ تعاون یافتہ نہیں ہے"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"ایک SIP کال کرنے کیلئے، پہلے اپنا انٹرنیٹ کنکشن چیک کریں۔"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP کالز کیلئے آپ کو ایک Wi-Fi نیٹ ورک سے منسلک ہونے کی ضرورت ہے (وائرلیس اور نیٹ ورک ترتیبات استعمال کریں)۔"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP کالنگ تعاون یافتہ نہیں ہے"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"خودکار"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"ہمیشہ بھیجیں"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"پہلے سے شامل انٹرنیٹ کالنگ"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"پہلے سے شامل SIP کالنگ"</string>
</resources>
diff --git a/sip/res/values-uz-rUZ/strings.xml b/sip/res/values-uz-rUZ/strings.xml
index f2f3bbe..a82b606 100644
--- a/sip/res/values-uz-rUZ/strings.xml
+++ b/sip/res/values-uz-rUZ/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Internet qo‘ng‘irog‘i sozlamalari"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Internet qo‘ng‘iroqlari (SIP) hisoblari"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP sozlamalari"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP hisoblari"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Hisoblar"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Kiruvchi qo‘ng‘iroqlarni qabul qilish"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Batareya quvvati sarfini oshiradi"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Internet qo‘ng‘iroqlaridan foydalanish"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Internet qo‘ng‘iroqlaridan foydalanish (faqat Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Batareya quvvatini ko‘p sarflaydi"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"SIP qo‘ng‘iroqlaridan foydalanish"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP qo‘ng‘iroqlaridan foydalanish (faqat Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Tarmoq trafigi mavjud bo‘lganda barcha qo‘ng‘iroqlar uchun"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Faqat internet qo‘ng‘iroqlari uchun"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Har bir qo‘ng‘iroq uchun so‘ralsin"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Faqat SIP qo‘ng‘iroqlari uchun"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Barcha qo‘ng‘iroqlar uchun"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Qo‘ng‘iroq qilish"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Internet qo‘ng‘irog‘i hisobidan foydalaning:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Doimo internetdan qo‘ng‘iroq qilish uchun foydalanilsin"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Siz internet qo‘ng‘iroqlari hisobini standart holatda quyidagilardan foydalanib o‘zgartirishingiz mumkin: Telefon > Sozlamalar > Internet qo‘ng‘iroqlari sozlamalari > Hisoblar ekrani."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Qo‘l telefonga qo‘ng‘roq"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Internet qo‘ng‘irog‘i"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Internet qo‘ng‘irog‘i hisobi mavjud emas"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Ushbu telefonda internet qo‘ng‘iroqlari hisoblari mavjud emas. Yangi hisob qo‘shishni xohlaysizmi?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Qo‘shish"</string>
<string name="add_sip_account" msgid="800843669753980091">"Yangi hisob qo‘shish"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Hisobni o‘chirish"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP hisoblari"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Profilni yoping"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Yopish"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Asosiy hisob. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Holati tekshirilmoqda…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Ro‘yxatdan o‘tkazilmoqda…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Hanuzgacha urinilmoqda…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Port raqami"</string>
<string name="transport_title" msgid="889155457465372527">"Transport turi"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Faollikni saqlash tanlovini jo‘natish"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Asosiy hisob sifatida o‘rnatish"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Chiquvchi qo‘ng‘iroqlar uchun foydalanilmoqda"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Ixtiyoriy sozlamalar"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Foydalanuvchi nomini tasdiqdan o‘tkazish"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Foydalanuvchi nomi tasdiqdan o‘tish uchun foydalaniladi"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Barchasini yashirish uchun bosing"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>ni to‘ldirish shart, u bo‘sh qolmasligi kerak."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Port raqami 1000 va 65534 oralig‘ida bo‘lishi kerak."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Internetga ulanmagan"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Wi-Fi ulanishi yo‘q"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Internet qo‘ng‘iroqlarini amalga oshirish uchun, avval internetga ulanishni tekshirib ko‘ring."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Internet qo‘ng‘iroqlarini amalga oshirish uchun Wi-FI tarmoqqa ulanishingiz kerak (Simsiz & tarmoq sozlamalaridan foydalaning)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Internet qo‘ng‘iroqlari ishlamaydi"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"SIP qo‘ng‘irog‘ini amalga oshirish uchun avval internetga ulanishni tekshiring."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"SIP qo‘ng‘iroqlarini amalga oshirish uchun biror Wi-Fi tarmog‘iga ulanish lozim (“Simsiz tarmoqlar” sozlamalaridan foydalaning)"</string>
+ <string name="no_voip" msgid="3038021971231952704">"SIP qo‘ng‘iroqlari qo‘llab-quvvatlanmaydi"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Avtomatik"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Doimo jo‘natilsin"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Ichki o‘rnatilgan internet qo‘ng‘iroq xizmati"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Ichki o‘rnatilgan SIP qo‘ng‘iroqlari"</string>
</resources>
diff --git a/sip/res/values-vi/strings.xml b/sip/res/values-vi/strings.xml
index c044cb1..04a1908 100644
--- a/sip/res/values-vi/strings.xml
+++ b/sip/res/values-vi/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Cài đặt cuộc gọi qua Internet"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Tài khoản gọi qua Internet (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Cài đặt SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Tài khoản SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Tài khoản"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Nhận cuộc gọi đến"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Giảm tuổi thọ pin"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Sử dụng tính năng gọi qua Internet"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Sử dụng tính năng gọi qua Internet (chỉ Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Sử dụng nhiều thời lượng pin hơn"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Sử dụng tính năng gọi điện SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Sử dụng tính năng gọi điện SIP (chỉ Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Dành cho tất cả các cuộc gọi khi mạng dữ liệu sẵn có"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Chỉ dành cho các cuộc gọi qua Internet"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Hỏi cho mỗi cuộc gọi"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Chỉ dành cho cuộc gọi SIP"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Dành cho tất cả các cuộc gọi"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Thực hiện cuộc gọi"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Sử dụng tài khoản gọi qua Internet:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Luôn sử dụng để thực hiện cuộc gọi qua Internet"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Bạn có thể thay đổi tài khoản gọi qua Internet nào sử dụng theo mặc định từ màn hình Điện thoại > Cài đặt > Cài đặt gọi qua Internet > Tài khoản."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Cuộc gọi qua điện thoại di động"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Cuộc gọi qua Internet"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Không có tài khoản gọi qua Internet nào"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Không có tài khoản gọi qua Internet nào trên điện thoại này. Bạn có muốn thêm một tài khoản gọi qua Internet ngay bây giờ không?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Thêm"</string>
<string name="add_sip_account" msgid="800843669753980091">"Thêm tài khoản"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Xóa tài khoản"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Tài khoản SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Đóng tiểu sử"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
<string name="close_profile" msgid="3122414058856309881">"Đóng"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"Tài khoản chính. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Đang kiểm tra trạng thái..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Đang đăng ký…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Vẫn đang thử..."</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Số cổng"</string>
<string name="transport_title" msgid="889155457465372527">"Loại truyền tải"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Gửi giữ kết nối"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Đặt làm tài khoản chính"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Được sử dụng cho các cuộc gọi đi"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Cài đặt tùy chọn"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Tên người dùng xác thực"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Tên người dùng được sử dụng để xác thực"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Chạm để ẩn tất cả"</string>
<string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> là bắt buộc và không thể để trống."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Số cổng phải trong khoảng từ 1000 đến 65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Không có kết nối Internet"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Không có kết nối Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Để thực hiện cuộc gọi qua Internet, hãy kiểm tra kết nối Internet của bạn trước tiên."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Bạn cần kết nối với mạng Wi-Fi để thực hiện các cuộc gọi qua Internet (sử dụng cài đặt Mạng không dây và mạng)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Không hỗ trợ gọi qua Internet"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Để thực hiện cuộc gọi SIP, trước tiên hãy kiểm tra kết nối Internet của bạn."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Bạn cần kết nối với mạng Wi-Fi cho cuộc gọi SIP (hãy sử dụng cài đặt Không dây và Mạng)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Tính năng gọi điện SIP không được hỗ trợ"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Tự động"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Luôn luôn gửi"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Tích hợp sẵn gọi điện qua Internet"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Tính năng gọi điện SIP tích hợp sẵn"</string>
</resources>
diff --git a/sip/res/values-zh-rCN/strings.xml b/sip/res/values-zh-rCN/strings.xml
index 80cc401..2d073c1 100644
--- a/sip/res/values-zh-rCN/strings.xml
+++ b/sip/res/values-zh-rCN/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"互联网电话设置"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"互联网电话帐户"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP 设置"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP 帐户"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"帐户"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"接听来电"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"会缩短电池的续航时间"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"使用互联网电话"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"使用互联网电话(仅限WLAN)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"会消耗更多电量"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"使用 SIP 通话功能"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"使用 SIP 通话功能(仅通过 WLAN 网络)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"所有通话(数据网络可用时)"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"仅限互联网电话"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"每次都询问"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"仅用于 SIP 通话"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"所有通话"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"拨打电话"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"使用互联网电话帐户:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"一律用于拨打互联网电话"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"要更改默认使用的互联网电话帐户,请转到“电话”>“设置”>“互联网电话设置”>“帐户”屏幕进行调整。"</string>
- <string name="pstn_phone" msgid="9596332924895028">"手机电话"</string>
- <string name="internet_phone" msgid="4444458244774004247">"互联网电话"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"没有互联网电话帐户"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"此手机上没有互联网电话帐户,要立即添加一个吗?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"添加"</string>
<string name="add_sip_account" msgid="800843669753980091">"添加帐户"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"移除帐户"</string>
<string name="sip_account_list" msgid="5610858485304821480">"互联网电话帐户"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"关闭个人资料"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"确定"</string>
<string name="close_profile" msgid="3122414058856309881">"关闭"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"主帐户。<xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"正在检查状态…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"正在注册…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"仍在尝试…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"端口号"</string>
<string name="transport_title" msgid="889155457465372527">"传输类型"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"发送持续连接消息"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"设置为主帐户"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"用于外拨电话"</string>
<string name="advanced_settings" msgid="6622996380747040711">"可选设置"</string>
<string name="auth_username_title" msgid="8262491689004708265">"身份验证用户名"</string>
<string name="auth_username_summary" msgid="941160241371436473">"用于身份验证的用户名"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 触摸可全部隐藏"</string>
<string name="empty_alert" msgid="6659484914371384024">"“<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>”属于必填字段,不得留空。"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"端口号应在1000与65534之间。"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"未连接到互联网"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"无WLAN连接"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"要拨打互联网电话,请先检查互联网连接情况。"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"您需要连接到WLAN网络才能拨打互联网电话(使用“无线和网络”设置)。"</string>
- <string name="no_voip" msgid="1600568347241920141">"不支持互联网电话"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"要拨打 SIP 电话,请先检查您的互联网连接。"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"您需要连接到 WLAN 网络才能拨打 SIP 电话(使用“无线和网络”设置)。"</string>
+ <string name="no_voip" msgid="3038021971231952704">"不支持 SIP 通话功能"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"自动"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"一律发送"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"内置互联网电话服务"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"内置 SIP 通话功能"</string>
</resources>
diff --git a/sip/res/values-zh-rHK/strings.xml b/sip/res/values-zh-rHK/strings.xml
index f702063..84fbcf0 100644
--- a/sip/res/values-zh-rHK/strings.xml
+++ b/sip/res/values-zh-rHK/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"網絡通話設定"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"網絡通話 (SIP) 帳戶"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP 設定"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP 帳戶"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"帳戶"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"接聽來電"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"縮短電池壽命"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"使用網絡通話"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"使用網絡通話 (僅限 Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"消耗更多電量"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"使用 SIP 通話"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"使用 SIP 通話 (只限 Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"數據網絡可用時,適用於所有通話"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"僅適用於網絡通話"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"每次通話都詢問"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"只限 SIP 通話"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"適用於所有通話"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"撥打電話"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"使用網絡通話帳戶:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"永遠用於撥打網絡電話"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"如要更改預設使用的網絡通話帳戶,請前往 [手機] > [設定] > [網絡通話設定] > [帳戶] 畫面加以設定。"</string>
- <string name="pstn_phone" msgid="9596332924895028">"手機電話"</string>
- <string name="internet_phone" msgid="4444458244774004247">"網絡通話"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"沒有網絡通話帳戶"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"這部手機沒有設定任何網絡通話帳戶。您要立即新增帳戶嗎?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"新增"</string>
<string name="add_sip_account" msgid="800843669753980091">"新增帳戶"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"移除帳戶"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP 帳戶"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"關閉個人檔案"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"確定"</string>
<string name="close_profile" msgid="3122414058856309881">"關閉"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"主要帳戶。<xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"正在檢查狀態…"</string>
<string name="registration_status_registering" msgid="2677183977796278749">"正在註冊…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"仍在嘗試…"</string>
@@ -56,37 +45,33 @@
<string name="registration_status_not_running" msgid="514205414303796800">"帳戶註冊失敗。"</string>
<string name="registration_status_done" msgid="3264961069247314253">"可以接聽電話。"</string>
<string name="registration_status_failed_try_later" msgid="2199970021756384317">"帳戶註冊失敗:(<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>);將於稍後重試"</string>
- <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"帳戶註冊失敗:用戶名稱或密碼不正確。"</string>
+ <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"帳戶註冊失敗:使用者名稱或密碼不正確。"</string>
<string name="registration_status_server_unreachable" msgid="7710275557045148634">"帳戶註冊失敗:請查看伺服器名稱。"</string>
<string name="third_party_account_summary" msgid="9041060473615403041">"這個帳戶目前正由 <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> 應用程式使用。"</string>
<string name="sip_edit_title" msgid="1967247832635750410">"SIP 帳戶詳情"</string>
<string name="sip_edit_new_title" msgid="266414118302574305">"SIP 帳戶詳情"</string>
<string name="domain_address_title" msgid="1968479941328225423">"伺服器"</string>
- <string name="username_title" msgid="6770064611005663470">"用戶名稱"</string>
+ <string name="username_title" msgid="6770064611005663470">"使用者名稱"</string>
<string name="password_title" msgid="5289013731515564295">"密碼"</string>
<string name="display_name_title" msgid="579241787583079773">"顯示名稱"</string>
<string name="proxy_address_title" msgid="6890163365640631841">"對外代理伺服器位址"</string>
<string name="port_title" msgid="6693965912656593862">"通訊埠號碼"</string>
<string name="transport_title" msgid="889155457465372527">"傳輸類型"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"傳送 keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"設為主要帳戶"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"用於外撥通話"</string>
<string name="advanced_settings" msgid="6622996380747040711">"選用設定"</string>
- <string name="auth_username_title" msgid="8262491689004708265">"驗證用戶名稱"</string>
- <string name="auth_username_summary" msgid="941160241371436473">"用於驗證的用戶名稱"</string>
+ <string name="auth_username_title" msgid="8262491689004708265">"驗證使用者名稱"</string>
+ <string name="auth_username_summary" msgid="941160241371436473">"用於驗證的使用者名稱"</string>
<string name="default_preference_summary" msgid="1979249643719483249">"<未設定>"</string>
- <string name="display_name_summary" msgid="7155076491675565407">"<與用戶名稱相同>"</string>
+ <string name="display_name_summary" msgid="7155076491675565407">"<與使用者名稱相同>"</string>
<string name="optional_summary" msgid="2363105560396317624">"<非必填>"</string>
<string name="advanced_settings_show" msgid="7838761602853998622">"▷ 輕觸即可全部顯示"</string>
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 輕觸即可全部隱藏"</string>
<string name="empty_alert" msgid="6659484914371384024">"「<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>」為必填欄位,不得留空。"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"通訊埠號碼必須介乎 1000 至 65534 之間。"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"沒有互聯網連線"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"沒有 Wi-Fi 連線"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"如要撥打網絡電話,請先檢查您的互聯網連線。"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"您必須連接 Wi-Fi 網絡,才能使用網絡通話 (使用 [無線網絡和網絡] 設定)。"</string>
- <string name="no_voip" msgid="1600568347241920141">"不支援網絡通話"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"如要進行 SIP 通話,請先檢查您的互聯網連線。"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"如要進行 SIP 通話,您需要連線至 Wi-Fi 網絡 (使用無線和網絡設定)。"</string>
+ <string name="no_voip" msgid="3038021971231952704">"不支援 SIP 通話"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"自動"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"永遠傳送"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"內置網絡通話服務"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"內置 SIP 通話"</string>
</resources>
diff --git a/sip/res/values-zh-rTW/strings.xml b/sip/res/values-zh-rTW/strings.xml
index f513f85..70a08dd 100644
--- a/sip/res/values-zh-rTW/strings.xml
+++ b/sip/res/values-zh-rTW/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"網路電話設定"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"網路電話 (SIP) 帳戶"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"SIP 設定"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"SIP 帳戶"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"帳戶"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"接聽來電"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"會減少電池電量"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"使用網路通話"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"使用網路通話 (僅限 Wi-Fi)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"耗電量會因此增加"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"使用 SIP 通話功能"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"使用 SIP 通話功能 (僅限 Wi-Fi)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"數據網路可用時,適用於所有通話"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"僅適用於網路電話"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"每次通話都詢問"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"僅適用於 SIP 通話"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"適用於所有通話"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"撥打電話"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"使用網路電話帳戶:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"一律用於撥打網路電話"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"如要變更預設使用的網路電話帳戶,請前往 [手機] > [設定] > [網路電話設定] > [帳戶] 畫面調整設定。"</string>
- <string name="pstn_phone" msgid="9596332924895028">"手機電話"</string>
- <string name="internet_phone" msgid="4444458244774004247">"網路通話"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"沒有網路通話帳戶"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"這支手機沒有設定任何網路電話帳戶,您要立即新增帳戶嗎?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"新增"</string>
<string name="add_sip_account" msgid="800843669753980091">"新增帳戶"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"移除帳戶"</string>
<string name="sip_account_list" msgid="5610858485304821480">"SIP 帳戶"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"關閉個人資料"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"確定"</string>
<string name="close_profile" msgid="3122414058856309881">"關閉"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"主要帳戶。<xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"正在檢查狀態..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"註冊中…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"仍在嘗試中…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"通訊埠號碼"</string>
<string name="transport_title" msgid="889155457465372527">"傳輸類型"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"傳送 keep-alive"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"設為主要帳戶"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"用於外撥通話"</string>
<string name="advanced_settings" msgid="6622996380747040711">"選用設定"</string>
<string name="auth_username_title" msgid="8262491689004708265">"驗證使用者名稱"</string>
<string name="auth_username_summary" msgid="941160241371436473">"用於進行驗證的使用者名稱"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 輕觸即可全部隱藏"</string>
<string name="empty_alert" msgid="6659484914371384024">"「<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>」為必填欄位,不得留空。"</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"通訊埠號碼必須介於 1000 到 65534 間。"</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"沒有網路連線"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"沒有 Wi-Fi 連線"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"如要撥打網路電話,請先檢查您的網際網路連線。"</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"您必須連上 Wi-Fi 網路才能使用網路電話 (使用 [無線網路與網路設定])。"</string>
- <string name="no_voip" msgid="1600568347241920141">"不支援網路電話"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"如要撥打 SIP 電話,請先檢查您的網際網路連線。"</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"您必須連上 Wi-Fi 網路,才能使用 SIP 通話功能 (透過「無線與網路」設定)。"</string>
+ <string name="no_voip" msgid="3038021971231952704">"不支援 SIP 通話功能"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"自動"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"一律傳送"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"內建網路通話服務"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"內建 SIP 通話功能"</string>
</resources>
diff --git a/sip/res/values-zu/strings.xml b/sip/res/values-zu/strings.xml
index 264792d..8e79375 100644
--- a/sip/res/values-zu/strings.xml
+++ b/sip/res/values-zu/strings.xml
@@ -16,26 +16,16 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sip_settings" msgid="7083411056842490982">"Izilungiselelo zekholi ye-inthanethi"</string>
- <string name="sip_accounts" msgid="5575635218475814144">"Ama-akhawunti wokushaya nge-inthanethi (SIP)"</string>
+ <string name="sip_settings" msgid="3768482698061677257">"Izilungiselelo ze-SIP"</string>
+ <string name="sip_accounts" msgid="85559497282185405">"Ama-akhawunti we-SIP"</string>
<string name="sip_accounts_title" msgid="2082527045326874519">"Ama-akhawunti"</string>
<string name="sip_receive_calls" msgid="426678617137462173">"Thola amakholi angenayo"</string>
- <string name="sip_receive_calls_summary" msgid="7390078407518633658">"Yehlisa impilo yebhethri"</string>
- <string name="sip_call_options_title" msgid="1140346343222696780">"Sebenzisa ukushaya kwe-inthanethi"</string>
- <string name="sip_call_options_wifi_only_title" msgid="6659725576735517138">"Sebenzisa ukushaya kwe-inthanethi (i-Wi-Fi kuphela)"</string>
+ <string name="sip_receive_calls_summary" msgid="946161517528227523">"Isebenzisa impilo yebhethri eningi"</string>
+ <string name="sip_call_options_title" msgid="8421210494703869806">"Sebenzisa ukushaya kwe-SIP"</string>
+ <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Sebenzisa ukushaya kwe-SIP (i-Wi-Fi kuphela)"</string>
<string name="sip_call_options_entry_1" msgid="7217659161237099900">"Yawo wonke amakholi uma inethiwekhi yedatha itholakala"</string>
- <string name="sip_call_options_entry_2" msgid="3432624809972300467">"Kumakholi we-inthanethi kuphela"</string>
- <string name="sip_call_options_entry_3" msgid="1493464396638124047">"Celela kukholi ngayinye"</string>
+ <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Ngeyamakholi we-SIP kuphela"</string>
<string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Yamakholi wonke"</string>
- <string name="pick_outgoing_call_phone_type" msgid="7140865415705473564">"Yenza ikholi"</string>
- <string name="pick_outgoing_sip_phone" msgid="635431914692273175">"Sebenzisa i-akhawunti yokushaya ye-inthanethi:"</string>
- <string name="remember_my_choice" msgid="6204557816977242680">"Njalo sebenzisa ukwenza amakholi nge-inthanethi"</string>
- <string name="reset_my_choice_hint" msgid="5681276499400166714">"Ungaguqula ukuthi iyiphi i-akhawunti yokushaya kwe-inthanethi engasetshenziswa ngokuzenzakalela kusuka ku-Ifoni > Izilungiselelo > Izilungiselelo zekholi ye-inthanethi > Isikrini sama-akhawunti."</string>
- <string name="pstn_phone" msgid="9596332924895028">"Ikholi yeselula foni"</string>
- <string name="internet_phone" msgid="4444458244774004247">"Ikholi ye-inthanethi"</string>
- <string name="no_sip_account_found_title" msgid="1930267380483259657">"Ayikho i-akhawunti yokushaya kwe-inthanethi"</string>
- <string name="no_sip_account_found" msgid="2584609532663311723">"Awekho ama-akhawunti wokushaya kwe-inthanethi kule foni. Ingabe ufuna ukungeza eyodwa manje?"</string>
- <string name="sip_menu_add" msgid="220996859802365311">"Engeza"</string>
<string name="add_sip_account" msgid="800843669753980091">"Engeza i-akhawunti"</string>
<string name="remove_sip_account" msgid="1367664438506503690">"Susa i-akhawunti"</string>
<string name="sip_account_list" msgid="5610858485304821480">"Ama-akhawunti we-SIP"</string>
@@ -46,7 +36,6 @@
<string name="alert_dialog_close" msgid="1326011828713435134">"Vala iphrofayela"</string>
<string name="alert_dialog_ok" msgid="4752048404605388940">"KULUNGILE"</string>
<string name="close_profile" msgid="3122414058856309881">"Vala"</string>
- <string name="primary_account_summary_with" msgid="3590771303761149724">"I-akhawunti eyinhloko. <xliff:g id="REGISTRATION_STATUS">%s</xliff:g>"</string>
<string name="registration_status_checking_status" msgid="6136793741862200337">"Ihlola isimo..."</string>
<string name="registration_status_registering" msgid="2677183977796278749">"Iyabhalisa…"</string>
<string name="registration_status_still_trying" msgid="7648151061205513458">"Isazama namanje…"</string>
@@ -69,8 +58,6 @@
<string name="port_title" msgid="6693965912656593862">"Inombolo yembobo"</string>
<string name="transport_title" msgid="889155457465372527">"Uhlobo lwendlela yezokuthutha"</string>
<string name="send_keepalive_title" msgid="599627072150501159">"Thumula igcina kuphila"</string>
- <string name="set_primary_title" msgid="4418523822344363725">"Setha njenge-akhawunti eyinhloko"</string>
- <string name="set_primary_summary" msgid="8917913711425551278">"Setshenziselwa amakholi aphumayo"</string>
<string name="advanced_settings" msgid="6622996380747040711">"Izilungiselelo ongazikhetha"</string>
<string name="auth_username_title" msgid="8262491689004708265">"Igama lomsebenzisi lokufakazela ubuqiniso"</string>
<string name="auth_username_summary" msgid="941160241371436473">"Igama lomsebenzisi elisetshenziselwa ukufakazela ubuqiniso"</string>
@@ -81,12 +68,10 @@
<string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Thinta ukuze ufihle konke"</string>
<string name="empty_alert" msgid="6659484914371384024">"I-<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> iyadingeka futhi ayikwazi ukungabi nalutho."</string>
<string name="not_a_valid_port" msgid="7931422555587011830">"Inombolo yembobo kumele ibe phakathi kokungu-1000 nokungu-65534."</string>
- <string name="no_internet_available_title" msgid="5967612364991972539">"Akukho ukuxhumeka kwe-inthanethi"</string>
- <string name="no_wifi_available_title" msgid="3560623175076099410">"Akukho ukuxhumeka kwe-Wi-Fi"</string>
- <string name="no_internet_available" msgid="3166751740849243568">"Ukuze wenze ikholi ye-inthanethi, hlola ukuxhumeka kwakho kwe-inthanethi kuqala."</string>
- <string name="no_wifi_available" msgid="8786934834522321080">"Kuzomele uxhumeke kunethiwekhi ye-Wi-Fi ngamakholi we-inthanethi (sebenzisa izilungiselelo zenethiwekhi nokungenantambo)."</string>
- <string name="no_voip" msgid="1600568347241920141">"Ukushaya kwe-inthanethi akusekelwe"</string>
+ <string name="no_internet_available" msgid="5523747991760017298">"Ukuze wenze ikholi ye-SIP, hlola ukuxhumeka kwe-inthanethi yakho kuqala."</string>
+ <string name="no_wifi_available" msgid="1955023904229673488">"Kuzomele uxhumeke kunethiwekhi ye-Wi-Fi ngamakholi we-SIP (sebenzisa izilungiselelo ezingenantambo nenethiwekhi)."</string>
+ <string name="no_voip" msgid="3038021971231952704">"Ukushaya kwe-SIP akusekelwe"</string>
<string name="sip_system_decide" msgid="5577696249416700671">"Okuzenzakalelayo"</string>
<string name="sip_always_send_keepalive" msgid="4773022409239823318">"Thumela njalo"</string>
- <string name="sip_connection_service_label" msgid="9214942431972794760">"Ukushaya kwe-inthanethi okwakhelwe ngaphakathi"</string>
+ <string name="sip_connection_service_label" msgid="6935325004265884453">"Ukushaya okwakhelwe ngaphakathi kwe-SIP"</string>
</resources>
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 4fa28ab..1b8f96f 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -25,28 +25,20 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.database.Cursor;
-import android.media.AudioManager;
-import android.os.AsyncResult;
import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
import android.os.UserHandle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
-import android.provider.ContactsContract.CommonDataKinds;
import android.provider.Settings;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
-import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
-import android.widget.ListAdapter;
import android.widget.Toast;
import com.android.ims.ImsConfig;
@@ -56,26 +48,13 @@
import com.android.internal.telephony.PhoneConstants;
import com.android.phone.common.util.SettingsUtil;
import com.android.phone.settings.AccountSelectionPreference;
-import com.android.phone.settings.CallForwardInfoUtil;
-import com.android.phone.settings.TtyModeListPreference;
-import com.android.phone.settings.VoicemailDialogUtil;
-import com.android.phone.settings.VoicemailNotificationSettingsUtil;
-import com.android.phone.settings.VoicemailProviderListPreference;
-import com.android.phone.settings.VoicemailProviderListPreference.VoicemailProvider;
-import com.android.phone.settings.VoicemailProviderSettings;
-import com.android.phone.settings.VoicemailProviderSettingsUtil;
-import com.android.phone.settings.VoicemailRingtonePreference;
+import com.android.phone.settings.VoicemailSettingsActivity;
import com.android.phone.settings.fdn.FdnSetting;
import com.android.services.telephony.sip.SipUtil;
import java.lang.String;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
/**
* Top level "Call settings" UI; see res/xml/call_feature_setting.xml
@@ -92,57 +71,15 @@
* For the "Mobile network settings" screen under the main Settings app,
* See {@link MobileNetworkSettings}.
*
- * TODO: Settings should be split into PreferenceFragments where possible (ie. voicemail).
- *
* @see com.android.phone.MobileNetworkSettings
*/
public class CallFeaturesSetting extends PreferenceActivity
- implements DialogInterface.OnClickListener,
- Preference.OnPreferenceChangeListener,
- EditPhoneNumberPreference.OnDialogClosedListener,
- EditPhoneNumberPreference.GetDefaultNumberListener {
+ implements Preference.OnPreferenceChangeListener {
private static final String LOG_TAG = "CallFeaturesSetting";
private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
// STOPSHIP if true. Flag to override behavior default behavior to hide VT setting.
private static final boolean ENABLE_VT_FLAG = false;
- /**
- * Intent action to bring up Voicemail Provider settings.
- *
- * @see #IGNORE_PROVIDER_EXTRA
- */
- public static final String ACTION_ADD_VOICEMAIL =
- "com.android.phone.CallFeaturesSetting.ADD_VOICEMAIL";
- // intent action sent by this activity to a voice mail provider
- // to trigger its configuration UI
- public static final String ACTION_CONFIGURE_VOICEMAIL =
- "com.android.phone.CallFeaturesSetting.CONFIGURE_VOICEMAIL";
- // Extra put in the return from VM provider config containing voicemail number to set
- public static final String VM_NUMBER_EXTRA = "com.android.phone.VoicemailNumber";
- // Extra put in the return from VM provider config containing call forwarding number to set
- public static final String FWD_NUMBER_EXTRA = "com.android.phone.ForwardingNumber";
- // Extra put in the return from VM provider config containing call forwarding number to set
- public static final String FWD_NUMBER_TIME_EXTRA = "com.android.phone.ForwardingNumberTime";
- // If the VM provider returns non null value in this extra we will force the user to
- // choose another VM provider
- public static final String SIGNOUT_EXTRA = "com.android.phone.Signout";
-
- /**
- * String Extra put into ACTION_ADD_VOICEMAIL call to indicate which provider should be hidden
- * in the list of providers presented to the user. This allows a provider which is being
- * disabled (e.g. GV user logging out) to force the user to pick some other provider.
- */
- public static final String IGNORE_PROVIDER_EXTRA = "com.android.phone.ProviderToIgnore";
-
- /**
- * String Extra put into ACTION_ADD_VOICEMAIL to indicate that the voicemail setup screen should
- * be opened.
- */
- public static final String SETUP_VOICEMAIL_EXTRA = "com.android.phone.SetupVoicemail";
-
- // string constants
- private static final String NUM_PROJECTION[] = {CommonDataKinds.Phone.NUMBER};
-
// String keys for preference lookup
// TODO: Naming these "BUTTON_*" is confusing since they're not actually buttons(!)
// TODO: Consider moving these strings to strings.xml, so that they are not duplicated here and
@@ -150,180 +87,23 @@
// persistent, they are used as the key to store shared preferences and the name should not be
// changed unless the settings are also migrated.
private static final String VOICEMAIL_SETTING_SCREEN_PREF_KEY = "button_voicemail_category_key";
- private static final String BUTTON_VOICEMAIL_KEY = "button_voicemail_key";
- private static final String BUTTON_VOICEMAIL_PROVIDER_KEY = "button_voicemail_provider_key";
- private static final String BUTTON_VOICEMAIL_SETTING_KEY = "button_voicemail_setting_key";
private static final String BUTTON_FDN_KEY = "button_fdn_key";
-
- private static final String BUTTON_DTMF_KEY = "button_dtmf_settings";
private static final String BUTTON_RETRY_KEY = "button_auto_retry_key";
- private static final String BUTTON_TTY_KEY = "button_tty_mode_key";
- private static final String BUTTON_HAC_KEY = "button_hac_key";
-
private static final String BUTTON_GSM_UMTS_OPTIONS = "button_gsm_more_expand_key";
private static final String BUTTON_CDMA_OPTIONS = "button_cdma_more_expand_key";
- private static final String CALL_FORWARDING_KEY = "call_forwarding_key";
- private static final String ADDITIONAL_GSM_SETTINGS_KEY = "additional_gsm_call_settings_key";
private static final String PHONE_ACCOUNT_SETTINGS_KEY =
"phone_account_settings_preference_screen";
private static final String ENABLE_VIDEO_CALLING_KEY = "button_enable_video_calling";
- /** Event for Async voicemail change call */
- private static final int EVENT_VOICEMAIL_CHANGED = 500;
- private static final int EVENT_FORWARDING_CHANGED = 501;
- private static final int EVENT_FORWARDING_GET_COMPLETED = 502;
-
- public static final String HAC_KEY = "HACSetting";
- public static final String HAC_VAL_ON = "ON";
- public static final String HAC_VAL_OFF = "OFF";
-
- /** Handle to voicemail pref */
- private static final int VOICEMAIL_PREF_ID = 1;
- private static final int VOICEMAIL_PROVIDER_CFG_ID = 2;
-
private Phone mPhone;
- private AudioManager mAudioManager;
-
private SubscriptionInfoHelper mSubscriptionInfoHelper;
- private EditPhoneNumberPreference mSubMenuVoicemailSettings;
-
- /** Whether dialpad plays DTMF tone or not. */
private CheckBoxPreference mButtonAutoRetry;
- private CheckBoxPreference mButtonHAC;
- private ListPreference mButtonDTMF;
- private TtyModeListPreference mButtonTTY;
- private VoicemailProviderListPreference mVoicemailProviders;
private PreferenceScreen mVoicemailSettingsScreen;
- private PreferenceScreen mVoicemailSettings;
- private VoicemailRingtonePreference mVoicemailNotificationRingtone;
- private CheckBoxPreference mVoicemailNotificationVibrate;
private CheckBoxPreference mEnableVideoCalling;
- /**
- * Results of reading forwarding settings
- */
- private CallForwardInfo[] mForwardingReadResults = null;
-
- /**
- * Result of forwarding number change.
- * Keys are reasons (eg. unconditional forwarding).
- */
- private Map<Integer, AsyncResult> mForwardingChangeResults = null;
-
- /**
- * Expected CF read result types.
- * This set keeps track of the CF types for which we've issued change
- * commands so we can tell when we've received all of the responses.
- */
- private Collection<Integer> mExpectedChangeResultReasons = null;
-
- /**
- * Result of vm number change
- */
- private AsyncResult mVoicemailChangeResult = null;
-
- /**
- * Previous VM provider setting so we can return to it in case of failure.
- */
- private String mPreviousVMProviderKey = null;
-
- /**
- * Id of the dialog being currently shown.
- */
- private int mCurrentDialogId = 0;
-
- /**
- * Flag indicating that we are invoking settings for the voicemail provider programmatically
- * due to vm provider change.
- */
- private boolean mVMProviderSettingsForced = false;
-
- /**
- * Flag indicating that we are making changes to vm or fwd numbers
- * due to vm provider change.
- */
- private boolean mChangingVMorFwdDueToProviderChange = false;
-
- /**
- * True if we are in the process of vm & fwd number change and vm has already been changed.
- * This is used to decide what to do in case of rollback.
- */
- private boolean mVMChangeCompletedSuccessfully = false;
-
- /**
- * True if we had full or partial failure setting forwarding numbers and so need to roll them
- * back.
- */
- private boolean mFwdChangesRequireRollback = false;
-
- /**
- * Id of error msg to display to user once we are done reverting the VM provider to the previous
- * one.
- */
- private int mVMOrFwdSetError = 0;
-
- /** string to hold old voicemail number as it is being updated. */
- private String mOldVmNumber;
-
- // New call forwarding settings and vm number we will be setting
- // Need to save these since before we get to saving we need to asynchronously
- // query the existing forwarding settings.
- private CallForwardInfo[] mNewFwdSettings;
- private String mNewVMNumber;
-
- private boolean mForeground;
-
- @Override
- public void onPause() {
- super.onPause();
- mForeground = false;
-
- if (ImsManager.isVolteEnabledByPlatform(this) &&
- !mPhone.getContext().getResources().getBoolean(
- com.android.internal.R.bool.config_carrier_volte_tty_supported)) {
- TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
- tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
- }
- }
-
- /**
- * We have to pull current settings from the network for all kinds of
- * voicemail providers so we can tell whether we have to update them,
- * so use this bit to keep track of whether we're reading settings for the
- * default provider and should therefore save them out when done.
- */
- private boolean mReadingSettingsForDefaultProvider = false;
-
- /**
- * Used to indicate that the voicemail preference should be shown.
- */
- private boolean mShowVoicemailPreference = false;
-
- /**
- * Used to indicate that the voicemail setup screen should be shown.
- */
- private boolean mSetupVoicemail = false;
-
- private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
- /**
- * Enable/disable the TTY setting when in/out of a call (and if carrier doesn't
- * support VoLTE with TTY).
- * @see android.telephony.PhoneStateListener#onCallStateChanged(int,
- * java.lang.String)
- */
- @Override
- public void onCallStateChanged(int state, String incomingNumber) {
- if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state);
- Preference pref = getPreferenceScreen().findPreference(BUTTON_TTY_KEY);
- if (pref != null) {
- pref.setEnabled(state == TelephonyManager.CALL_STATE_IDLE);
- }
- }
- };
-
/*
* Click Listeners, handle click based on objects attached to UI.
*/
@@ -331,61 +111,11 @@
// Click listener for all toggle events
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
- if (preference == mSubMenuVoicemailSettings) {
- return true;
- } else if (preference == mButtonDTMF) {
- return true;
- } else if (preference == mButtonTTY) {
- if(mPhone.isVideoCallPresent()) {
- // TTY Mode change is not allowed during a VT call
- showDialogIfForeground(VoicemailDialogUtil.TTY_SET_RESPONSE_ERROR);
- }
- return true;
- } else if (preference == mButtonAutoRetry) {
+ if (preference == mButtonAutoRetry) {
android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
android.provider.Settings.Global.CALL_AUTO_RETRY,
mButtonAutoRetry.isChecked() ? 1 : 0);
return true;
- } else if (preference == mButtonHAC) {
- int hac = mButtonHAC.isChecked() ? 1 : 0;
- // Update HAC value in Settings database
- Settings.System.putInt(mPhone.getContext().getContentResolver(),
- Settings.System.HEARING_AID, hac);
-
- // Update HAC Value in AudioManager
- mAudioManager.setParameter(HAC_KEY, hac != 0 ? HAC_VAL_ON : HAC_VAL_OFF);
- return true;
- } else if (preference.getKey().equals(mVoicemailSettings.getKey())) {
- // Check key instead of comparing reference because closing the voicemail notification
- // ringtone dialog invokes onResume(), but leaves the old preference screen up,
- // TODO: Revert to checking reference after migrating voicemail to its own activity.
- if (DBG) log("onPreferenceTreeClick: Voicemail Settings Preference is clicked.");
-
- final Dialog dialog = ((PreferenceScreen) preference).getDialog();
- if (dialog != null) {
- dialog.getActionBar().setDisplayHomeAsUpEnabled(false);
- }
-
- if (preference.getIntent() != null) {
- if (DBG) log("Invoking cfg intent " + preference.getIntent().getPackage());
-
- // onActivityResult() will be responsible for resetting some of variables.
- this.startActivityForResult(preference.getIntent(), VOICEMAIL_PROVIDER_CFG_ID);
- return true;
- } else {
- if (DBG) log("onPreferenceTreeClick(). No intent; use default behavior in xml.");
-
- // onActivityResult() will not be called, so reset variables here.
- mPreviousVMProviderKey = VoicemailProviderListPreference.DEFAULT_KEY;
- mVMProviderSettingsForced = false;
- return false;
- }
- } else if (preference == mVoicemailSettingsScreen) {
- final Dialog dialog = mVoicemailSettingsScreen.getDialog();
- if (dialog != null) {
- dialog.getActionBar().setDisplayHomeAsUpEnabled(false);
- }
- return false;
}
return false;
}
@@ -402,44 +132,7 @@
public boolean onPreferenceChange(Preference preference, Object objValue) {
if (DBG) log("onPreferenceChange: \"" + preference + "\" changed to \"" + objValue + "\"");
- if (preference == mButtonDTMF) {
- int index = mButtonDTMF.findIndexOfValue((String) objValue);
- Settings.System.putInt(mPhone.getContext().getContentResolver(),
- Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, index);
- } else if (preference == mVoicemailProviders) {
- final String newProviderKey = (String) objValue;
-
- // If previous provider key and the new one is same, we don't need to handle it.
- if (mPreviousVMProviderKey.equals(newProviderKey)) {
- if (DBG) log("No change is made to the VM provider setting.");
- return true;
- }
- updateVMPreferenceWidgets(newProviderKey);
-
- final VoicemailProviderSettings newProviderSettings =
- VoicemailProviderSettingsUtil.load(this, newProviderKey);
-
- // If the user switches to a voice mail provider and we have numbers stored for it we
- // will automatically change the phone's voice mail and forwarding number to the stored
- // ones. Otherwise we will bring up provider's configuration UI.
- if (newProviderSettings == null) {
- // Force the user into a configuration of the chosen provider
- Log.w(LOG_TAG, "Saved preferences not found - invoking config");
- mVMProviderSettingsForced = true;
- simulatePreferenceClick(mVoicemailSettings);
- } else {
- if (DBG) log("Saved preferences found - switching to them");
- // Set this flag so if we get a failure we revert to previous provider
- mChangingVMorFwdDueToProviderChange = true;
- saveVoiceMailAndForwardingNumber(newProviderKey, newProviderSettings);
- }
- } else if (preference.getKey().equals(mVoicemailNotificationVibrate.getKey())) {
- // Check key instead of comparing reference because closing the voicemail notification
- // ringtone dialog invokes onResume(), but leaves the old preference screen up,
- // TODO: Revert to checking reference after migrating voicemail to its own activity.
- VoicemailNotificationSettingsUtil.setVibrationEnabled(
- mPhone, Boolean.TRUE.equals(objValue));
- } else if (preference == mEnableVideoCalling) {
+ if (preference == mEnableVideoCalling) {
if (ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())) {
PhoneGlobals.getInstance().phoneMgr.enableVideoCalling((boolean) objValue);
} else {
@@ -468,674 +161,6 @@
}
@Override
- public void onDialogClosed(EditPhoneNumberPreference preference, int buttonClicked) {
- if (DBG) log("onDialogClosed: Button clicked is " + buttonClicked);
-
- if (buttonClicked == DialogInterface.BUTTON_NEGATIVE) {
- return;
- }
-
- if (preference == mSubMenuVoicemailSettings) {
- VoicemailProviderSettings newSettings = new VoicemailProviderSettings(
- mSubMenuVoicemailSettings.getPhoneNumber(),
- VoicemailProviderSettings.NO_FORWARDING);
- saveVoiceMailAndForwardingNumber(mVoicemailProviders.getKey(), newSettings);
- }
- }
-
- /**
- * Implemented for EditPhoneNumberPreference.GetDefaultNumberListener.
- * This method set the default values for the various
- * EditPhoneNumberPreference dialogs.
- */
- @Override
- public String onGetDefaultNumber(EditPhoneNumberPreference preference) {
- if (preference == mSubMenuVoicemailSettings) {
- // update the voicemail number field, which takes care of the
- // mSubMenuVoicemailSettings itself, so we should return null.
- if (DBG) log("updating default for voicemail dialog");
- updateVoiceNumberField();
- return null;
- }
-
- String vmDisplay = mPhone.getVoiceMailNumber();
- if (TextUtils.isEmpty(vmDisplay)) {
- // if there is no voicemail number, we just return null to
- // indicate no contribution.
- return null;
- }
-
- // Return the voicemail number prepended with "VM: "
- if (DBG) log("updating default for call forwarding dialogs");
- return getString(R.string.voicemail_abbreviated) + " " + vmDisplay;
- }
-
- private void switchToPreviousVoicemailProvider() {
- if (DBG) log("switchToPreviousVoicemailProvider " + mPreviousVMProviderKey);
-
- if (mPreviousVMProviderKey == null) {
- return;
- }
-
- if (mVMChangeCompletedSuccessfully || mFwdChangesRequireRollback) {
- showDialogIfForeground(VoicemailDialogUtil.VM_REVERTING_DIALOG);
- final VoicemailProviderSettings prevSettings =
- VoicemailProviderSettingsUtil.load(this, mPreviousVMProviderKey);
- if (prevSettings == null) {
- Log.e(LOG_TAG, "VoicemailProviderSettings for the key \""
- + mPreviousVMProviderKey + "\" is null but should be loaded.");
- }
-
- if (mVMChangeCompletedSuccessfully) {
- mNewVMNumber = prevSettings.getVoicemailNumber();
- Log.i(LOG_TAG, "VM change is already completed successfully."
- + "Have to revert VM back to " + mNewVMNumber + " again.");
- mPhone.setVoiceMailNumber(
- mPhone.getVoiceMailAlphaTag().toString(),
- mNewVMNumber,
- Message.obtain(mRevertOptionComplete, EVENT_VOICEMAIL_CHANGED));
- }
-
- if (mFwdChangesRequireRollback) {
- Log.i(LOG_TAG, "Requested to rollback forwarding changes.");
-
- final CallForwardInfo[] prevFwdSettings = prevSettings.getForwardingSettings();
- if (prevFwdSettings != null) {
- Map<Integer, AsyncResult> results = mForwardingChangeResults;
- resetForwardingChangeState();
- for (int i = 0; i < prevFwdSettings.length; i++) {
- CallForwardInfo fi = prevFwdSettings[i];
- if (DBG) log("Reverting fwd #: " + i + ": " + fi.toString());
- // Only revert the settings for which the update succeeded.
- AsyncResult result = results.get(fi.reason);
- if (result != null && result.exception == null) {
- mExpectedChangeResultReasons.add(fi.reason);
- CallForwardInfoUtil.setCallForwardingOption(mPhone, fi,
- mRevertOptionComplete.obtainMessage(
- EVENT_FORWARDING_CHANGED, i, 0));
- }
- }
- }
- }
- } else {
- if (DBG) log("No need to revert");
- onRevertDone();
- }
- }
-
- private void onRevertDone() {
- if (DBG) log("onRevertDone: Changing provider key back to " + mPreviousVMProviderKey);
-
- updateVMPreferenceWidgets(mPreviousVMProviderKey);
- updateVoiceNumberField();
- if (mVMOrFwdSetError != 0) {
- showDialogIfForeground(mVMOrFwdSetError);
- mVMOrFwdSetError = 0;
- }
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (DBG) {
- log("onActivityResult: requestCode: " + requestCode
- + ", resultCode: " + resultCode
- + ", data: " + data);
- }
-
- // there are cases where the contact picker may end up sending us more than one
- // request. We want to ignore the request if we're not in the correct state.
- if (requestCode == VOICEMAIL_PROVIDER_CFG_ID) {
- boolean failure = false;
-
- // No matter how the processing of result goes lets clear the flag
- if (DBG) log("mVMProviderSettingsForced: " + mVMProviderSettingsForced);
- final boolean isVMProviderSettingsForced = mVMProviderSettingsForced;
- mVMProviderSettingsForced = false;
-
- String vmNum = null;
- if (resultCode != RESULT_OK) {
- if (DBG) log("onActivityResult: vm provider cfg result not OK.");
- failure = true;
- } else {
- if (data == null) {
- if (DBG) log("onActivityResult: vm provider cfg result has no data");
- failure = true;
- } else {
- if (data.getBooleanExtra(SIGNOUT_EXTRA, false)) {
- if (DBG) log("Provider requested signout");
- if (isVMProviderSettingsForced) {
- if (DBG) log("Going back to previous provider on signout");
- switchToPreviousVoicemailProvider();
- } else {
- final String victim = mVoicemailProviders.getKey();
- if (DBG) log("Relaunching activity and ignoring " + victim);
- Intent i = new Intent(ACTION_ADD_VOICEMAIL);
- i.putExtra(IGNORE_PROVIDER_EXTRA, victim);
- i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- this.startActivity(i);
- }
- return;
- }
- vmNum = data.getStringExtra(VM_NUMBER_EXTRA);
- if (vmNum == null || vmNum.length() == 0) {
- if (DBG) log("onActivityResult: vm provider cfg result has no vmnum");
- failure = true;
- }
- }
- }
- if (failure) {
- if (DBG) log("Failure in return from voicemail provider.");
- if (isVMProviderSettingsForced) {
- switchToPreviousVoicemailProvider();
- }
-
- return;
- }
- mChangingVMorFwdDueToProviderChange = isVMProviderSettingsForced;
- final String fwdNum = data.getStringExtra(FWD_NUMBER_EXTRA);
-
- // TODO: It would be nice to load the current network setting for this and
- // send it to the provider when it's config is invoked so it can use this as default
- final int fwdNumTime = data.getIntExtra(FWD_NUMBER_TIME_EXTRA, 20);
-
- if (DBG) log("onActivityResult: cfg result has forwarding number " + fwdNum);
- saveVoiceMailAndForwardingNumber(mVoicemailProviders.getKey(),
- new VoicemailProviderSettings(vmNum, fwdNum, fwdNumTime));
- return;
- }
-
- if (requestCode == VOICEMAIL_PREF_ID) {
- if (resultCode != RESULT_OK) {
- if (DBG) log("onActivityResult: contact picker result not OK.");
- return;
- }
-
- Cursor cursor = null;
- try {
- cursor = getContentResolver().query(data.getData(),
- NUM_PROJECTION, null, null, null);
- if ((cursor == null) || (!cursor.moveToFirst())) {
- if (DBG) log("onActivityResult: bad contact data, no results found.");
- return;
- }
- mSubMenuVoicemailSettings.onPickActivityResult(cursor.getString(0));
- return;
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- }
-
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- /**
- * Wrapper around showDialog() that will silently do nothing if we're
- * not in the foreground.
- *
- * This is useful here because most of the dialogs we display from
- * this class are triggered by asynchronous events (like
- * success/failure messages from the telephony layer) and it's
- * possible for those events to come in even after the user has gone
- * to a different screen.
- */
- // TODO: this is too brittle: it's still easy to accidentally add new
- // code here that calls showDialog() directly (which will result in a
- // WindowManager$BadTokenException if called after the activity has
- // been stopped.)
- //
- // It would be cleaner to do the "if (mForeground)" check in one
- // central place, maybe by using a single Handler for all asynchronous
- // events (and have *that* discard events if we're not in the
- // foreground.)
- //
- // Unfortunately it's not that simple, since we sometimes need to do
- // actual work to handle these events whether or not we're in the
- // foreground (see the Handler code in mSetOptionComplete for
- // example.)
- //
- // TODO: It's a bit worrisome that we don't do anything in error cases when we're not in the
- // foreground. Consider displaying a toast instead.
- private void showDialogIfForeground(int id) {
- if (mForeground) {
- showDialog(id);
- }
- }
-
- private void dismissDialogSafely(int id) {
- try {
- dismissDialog(id);
- } catch (IllegalArgumentException e) {
- // This is expected in the case where we were in the background
- // at the time we would normally have shown the dialog, so we didn't
- // show it.
- }
- }
-
- /**
- * TODO: Refactor to make it easier to understand what's done in the different stages.
- */
- private void saveVoiceMailAndForwardingNumber(
- String key, VoicemailProviderSettings newSettings) {
- if (DBG) log("saveVoiceMailAndForwardingNumber: " + newSettings.toString());
- mNewVMNumber = newSettings.getVoicemailNumber();
- mNewVMNumber = (mNewVMNumber == null) ? "" : mNewVMNumber;
- mNewFwdSettings = newSettings.getForwardingSettings();
-
- // No fwd settings on CDMA.
- boolean isCdma = mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA;
- if (isCdma) {
- if (DBG) log("ignoring forwarding setting since this is CDMA phone");
- mNewFwdSettings = VoicemailProviderSettings.NO_FORWARDING;
- }
-
- // Throw a warning if the voicemail is the same and we did not change forwarding.
- if (mNewVMNumber.equals(mOldVmNumber)
- && mNewFwdSettings == VoicemailProviderSettings.NO_FORWARDING) {
- showDialogIfForeground(VoicemailDialogUtil.VM_NOCHANGE_ERROR_DIALOG);
- return;
- }
-
- VoicemailProviderSettingsUtil.save(this, key, newSettings);
- mVMChangeCompletedSuccessfully = false;
- mFwdChangesRequireRollback = false;
- mVMOrFwdSetError = 0;
-
- // Don't read call forwarding settings if CDMA. Call forwarding is not supported by CDMA.
- if (!key.equals(mPreviousVMProviderKey) && !isCdma) {
- mReadingSettingsForDefaultProvider =
- mPreviousVMProviderKey.equals(VoicemailProviderListPreference.DEFAULT_KEY);
- if (DBG) log("Reading current forwarding settings");
- int numSettingsReasons = VoicemailProviderSettings.FORWARDING_SETTINGS_REASONS.length;
- mForwardingReadResults = new CallForwardInfo[numSettingsReasons];
- for (int i = 0; i < mForwardingReadResults.length; i++) {
- mPhone.getCallForwardingOption(
- VoicemailProviderSettings.FORWARDING_SETTINGS_REASONS[i],
- mGetOptionComplete.obtainMessage(EVENT_FORWARDING_GET_COMPLETED, i, 0));
- }
- showDialogIfForeground(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
- } else {
- saveVoiceMailAndForwardingNumberStage2();
- }
-
- // Refresh the MWI indicator if it is already showing.
- PhoneGlobals.getInstance().refreshMwiIndicator(mSubscriptionInfoHelper.getSubId());
- }
-
- private final Handler mGetOptionComplete = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- AsyncResult result = (AsyncResult) msg.obj;
- switch (msg.what) {
- case EVENT_FORWARDING_GET_COMPLETED:
- handleForwardingSettingsReadResult(result, msg.arg1);
- break;
- }
- }
- };
-
- private void handleForwardingSettingsReadResult(AsyncResult ar, int idx) {
- if (DBG) Log.d(LOG_TAG, "handleForwardingSettingsReadResult: " + idx);
-
- Throwable error = null;
- if (ar.exception != null) {
- error = ar.exception;
- if (DBG) Log.d(LOG_TAG, "FwdRead: ar.exception=" + error.getMessage());
- }
- if (ar.userObj instanceof Throwable) {
- error = (Throwable) ar.userObj;
- if (DBG) Log.d(LOG_TAG, "FwdRead: userObj=" + error.getMessage());
- }
-
- // We may have already gotten an error and decided to ignore the other results.
- if (mForwardingReadResults == null) {
- if (DBG) Log.d(LOG_TAG, "Ignoring fwd reading result: " + idx);
- return;
- }
-
- // In case of error ignore other results, show an error dialog
- if (error != null) {
- if (DBG) Log.d(LOG_TAG, "Error discovered for fwd read : " + idx);
- mForwardingReadResults = null;
- dismissDialogSafely(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
- showDialogIfForeground(VoicemailDialogUtil.FWD_GET_RESPONSE_ERROR_DIALOG);
- return;
- }
-
- // Get the forwarding info.
- mForwardingReadResults[idx] = CallForwardInfoUtil.getCallForwardInfo(
- (CallForwardInfo[]) ar.result,
- VoicemailProviderSettings.FORWARDING_SETTINGS_REASONS[idx]);
-
- // Check if we got all the results already
- boolean done = true;
- for (int i = 0; i < mForwardingReadResults.length; i++) {
- if (mForwardingReadResults[i] == null) {
- done = false;
- break;
- }
- }
-
- if (done) {
- if (DBG) Log.d(LOG_TAG, "Done receiving fwd info");
- dismissDialogSafely(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
-
- if (mReadingSettingsForDefaultProvider) {
- VoicemailProviderSettingsUtil.save(mPhone.getContext(),
- VoicemailProviderListPreference.DEFAULT_KEY,
- new VoicemailProviderSettings(mOldVmNumber, mForwardingReadResults));
- mReadingSettingsForDefaultProvider = false;
- }
- saveVoiceMailAndForwardingNumberStage2();
- }
- }
-
- private void resetForwardingChangeState() {
- mForwardingChangeResults = new HashMap<Integer, AsyncResult>();
- mExpectedChangeResultReasons = new HashSet<Integer>();
- }
-
- // Called after we are done saving the previous forwarding settings if we needed.
- private void saveVoiceMailAndForwardingNumberStage2() {
- mForwardingChangeResults = null;
- mVoicemailChangeResult = null;
- if (mNewFwdSettings != VoicemailProviderSettings.NO_FORWARDING) {
- resetForwardingChangeState();
- for (int i = 0; i < mNewFwdSettings.length; i++) {
- CallForwardInfo fi = mNewFwdSettings[i];
- CallForwardInfo fiForReason =
- CallForwardInfoUtil.infoForReason(mForwardingReadResults, fi.reason);
- final boolean doUpdate = CallForwardInfoUtil.isUpdateRequired(fiForReason, fi);
-
- if (doUpdate) {
- if (DBG) log("Setting fwd #: " + i + ": " + fi.toString());
- mExpectedChangeResultReasons.add(i);
-
- CallForwardInfoUtil.setCallForwardingOption(mPhone, fi,
- mSetOptionComplete.obtainMessage(
- EVENT_FORWARDING_CHANGED, fi.reason, 0));
- }
- }
- showDialogIfForeground(VoicemailDialogUtil.VM_FWD_SAVING_DIALOG);
- } else {
- if (DBG) log("Not touching fwd #");
- setVMNumberWithCarrier();
- }
- }
-
- private void setVMNumberWithCarrier() {
- if (DBG) log("save voicemail #: " + mNewVMNumber);
-
- mPhone.setVoiceMailNumber(
- mPhone.getVoiceMailAlphaTag().toString(),
- mNewVMNumber,
- Message.obtain(mSetOptionComplete, EVENT_VOICEMAIL_CHANGED));
- }
-
- /**
- * Callback to handle option update completions
- */
- private final Handler mSetOptionComplete = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- AsyncResult result = (AsyncResult) msg.obj;
- boolean done = false;
- switch (msg.what) {
- case EVENT_VOICEMAIL_CHANGED:
- mVoicemailChangeResult = result;
- mVMChangeCompletedSuccessfully = isVmChangeSuccess();
- done = true;
- break;
- case EVENT_FORWARDING_CHANGED:
- mForwardingChangeResults.put(msg.arg1, result);
- if (result.exception != null) {
- Log.w(LOG_TAG, "Error in setting fwd# " + msg.arg1 + ": " +
- result.exception.getMessage());
- }
- if (isForwardingCompleted()) {
- if (isFwdChangeSuccess()) {
- if (DBG) log("Overall fwd changes completed ok, starting vm change");
- setVMNumberWithCarrier();
- } else {
- Log.w(LOG_TAG, "Overall fwd changes completed in failure. " +
- "Check if we need to try rollback for some settings.");
- mFwdChangesRequireRollback = false;
- Iterator<Map.Entry<Integer,AsyncResult>> it =
- mForwardingChangeResults.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry<Integer,AsyncResult> entry = it.next();
- if (entry.getValue().exception == null) {
- // If at least one succeeded we have to revert
- Log.i(LOG_TAG, "Rollback will be required");
- mFwdChangesRequireRollback = true;
- break;
- }
- }
- if (!mFwdChangesRequireRollback) {
- Log.i(LOG_TAG, "No rollback needed.");
- }
- done = true;
- }
- }
- break;
- default:
- // TODO: should never reach this, may want to throw exception
- }
-
- if (done) {
- if (DBG) log("All VM provider related changes done");
- if (mForwardingChangeResults != null) {
- dismissDialogSafely(VoicemailDialogUtil.VM_FWD_SAVING_DIALOG);
- }
- handleSetVmOrFwdMessage();
- }
- }
- };
-
- /**
- * Callback to handle option revert completions
- */
- private final Handler mRevertOptionComplete = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- AsyncResult result = (AsyncResult) msg.obj;
- switch (msg.what) {
- case EVENT_VOICEMAIL_CHANGED:
- if (DBG) log("VM revert complete msg");
- mVoicemailChangeResult = result;
- break;
-
- case EVENT_FORWARDING_CHANGED:
- if (DBG) log("FWD revert complete msg ");
- mForwardingChangeResults.put(msg.arg1, result);
- if (result.exception != null) {
- if (DBG) log("Error in reverting fwd# " + msg.arg1 + ": " +
- result.exception.getMessage());
- }
- break;
-
- default:
- // TODO: should never reach this, may want to throw exception
- }
-
- final boolean done = (!mVMChangeCompletedSuccessfully || mVoicemailChangeResult != null)
- && (!mFwdChangesRequireRollback || isForwardingCompleted());
- if (done) {
- if (DBG) log("All VM reverts done");
- dismissDialogSafely(VoicemailDialogUtil.VM_REVERTING_DIALOG);
- onRevertDone();
- }
- }
- };
-
- /**
- * Return true if there is a change result for every reason for which we expect a result.
- */
- private boolean isForwardingCompleted() {
- if (mForwardingChangeResults == null) {
- return true;
- }
-
- for (Integer reason : mExpectedChangeResultReasons) {
- if (mForwardingChangeResults.get(reason) == null) {
- return false;
- }
- }
-
- return true;
- }
-
- private boolean isFwdChangeSuccess() {
- if (mForwardingChangeResults == null) {
- return true;
- }
-
- for (AsyncResult result : mForwardingChangeResults.values()) {
- Throwable exception = result.exception;
- if (exception != null) {
- String msg = exception.getMessage();
- msg = (msg != null) ? msg : "";
- Log.w(LOG_TAG, "Failed to change forwarding setting. Reason: " + msg);
- return false;
- }
- }
- return true;
- }
-
- private boolean isVmChangeSuccess() {
- if (mVoicemailChangeResult.exception != null) {
- String msg = mVoicemailChangeResult.exception.getMessage();
- msg = (msg != null) ? msg : "";
- Log.w(LOG_TAG, "Failed to change voicemail. Reason: " + msg);
- return false;
- }
- return true;
- }
-
- private void handleSetVmOrFwdMessage() {
- if (DBG) log("handleSetVMMessage: set VM request complete");
-
- if (!isFwdChangeSuccess()) {
- handleVmOrFwdSetError(VoicemailDialogUtil.FWD_SET_RESPONSE_ERROR_DIALOG);
- } else if (!isVmChangeSuccess()) {
- handleVmOrFwdSetError(VoicemailDialogUtil.VM_RESPONSE_ERROR_DIALOG);
- } else {
- handleVmAndFwdSetSuccess(VoicemailDialogUtil.VM_CONFIRM_DIALOG);
- }
- }
-
- /**
- * Called when Voicemail Provider or its forwarding settings failed. Rolls back partly made
- * changes to those settings and show "failure" dialog.
- *
- * @param dialogId ID of the dialog to show for the specific error case. Either
- * {@link #FWD_SET_RESPONSE_ERROR_DIALOG} or {@link #VM_RESPONSE_ERROR_DIALOG}
- */
- private void handleVmOrFwdSetError(int dialogId) {
- if (mChangingVMorFwdDueToProviderChange) {
- mVMOrFwdSetError = dialogId;
- mChangingVMorFwdDueToProviderChange = false;
- switchToPreviousVoicemailProvider();
- return;
- }
- mChangingVMorFwdDueToProviderChange = false;
- showDialogIfForeground(dialogId);
- updateVoiceNumberField();
- }
-
- /**
- * Called when Voicemail Provider and its forwarding settings were successfully finished.
- * This updates a bunch of variables and show "success" dialog.
- */
- private void handleVmAndFwdSetSuccess(int dialogId) {
- if (DBG) log("handleVmAndFwdSetSuccess: key is " + mVoicemailProviders.getKey());
-
- mPreviousVMProviderKey = mVoicemailProviders.getKey();
- mChangingVMorFwdDueToProviderChange = false;
- showDialogIfForeground(dialogId);
- updateVoiceNumberField();
- }
-
- /**
- * Update the voicemail number from what we've recorded on the sim.
- */
- private void updateVoiceNumberField() {
- if (DBG) log("updateVoiceNumberField()");
-
- mOldVmNumber = mPhone.getVoiceMailNumber();
- if (TextUtils.isEmpty(mOldVmNumber)) {
- mSubMenuVoicemailSettings.setPhoneNumber("");
- mSubMenuVoicemailSettings.setSummary(getString(R.string.voicemail_number_not_set));
- } else {
- mSubMenuVoicemailSettings.setPhoneNumber(mOldVmNumber);
- mSubMenuVoicemailSettings.setSummary(mOldVmNumber);
- }
- }
-
- /*
- * Helper Methods for Activity class.
- * The initial query commands are split into two pieces now
- * for individual expansion. This combined with the ability
- * to cancel queries allows for a much better user experience,
- * and also ensures that the user only waits to update the
- * data that is relevant.
- */
-
- @Override
- protected void onPrepareDialog(int id, Dialog dialog) {
- super.onPrepareDialog(id, dialog);
- mCurrentDialogId = id;
- }
-
- // dialog creation method, called by showDialog()
- @Override
- protected Dialog onCreateDialog(int dialogId) {
- return VoicemailDialogUtil.getDialog(this, dialogId);
- }
-
- // This is a method implemented for DialogInterface.OnClickListener.
- // Used with the error dialog to close the app, voicemail dialog to just dismiss.
- // Close button is mapped to BUTTON_POSITIVE for the errors that close the activity,
- // while those that are mapped to BUTTON_NEUTRAL only move the preference focus.
- public void onClick(DialogInterface dialog, int which) {
- if (DBG) log("onClick: button clicked is " + which);
-
- dialog.dismiss();
- switch (which){
- case DialogInterface.BUTTON_NEGATIVE:
- if (mCurrentDialogId == VoicemailDialogUtil.FWD_GET_RESPONSE_ERROR_DIALOG) {
- // We failed to get current forwarding settings and the user
- // does not wish to continue.
- switchToPreviousVoicemailProvider();
- }
- break;
- case DialogInterface.BUTTON_POSITIVE:
- if (mCurrentDialogId == VoicemailDialogUtil.FWD_GET_RESPONSE_ERROR_DIALOG) {
- // We failed to get current forwarding settings but the user
- // wishes to continue changing settings to the new vm provider
- saveVoiceMailAndForwardingNumberStage2();
- } else {
- finish();
- }
- return;
- default:
- // just let the dialog close and go back to the input
- }
-
- // In all dialogs, all buttons except BUTTON_POSITIVE lead to the end of user interaction
- // with settings UI. If we were called to explicitly configure voice mail then
- // we finish the settings activity here to come back to whatever the user was doing.
- if (getIntent().getAction().equals(ACTION_ADD_VOICEMAIL)) {
- finish();
- }
- }
-
- /*
- * Activity class methods
- */
-
- @Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
if (DBG) log("onCreate: Intent is " + getIntent());
@@ -1148,15 +173,6 @@
return;
}
- mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
-
- // Show the voicemail preference in onResume if the calling intent specifies the
- // ACTION_ADD_VOICEMAIL action.
- mShowVoicemailPreference = (icicle == null) &&
- TextUtils.equals(getIntent().getAction(), ACTION_ADD_VOICEMAIL);
- mSetupVoicemail = mShowVoicemailPreference &&
- getIntent().getBooleanExtra(SETUP_VOICEMAIL_EXTRA, false);
-
mSubscriptionInfoHelper = new SubscriptionInfoHelper(this, getIntent());
mSubscriptionInfoHelper.setActionBarTitle(
getActionBar(), getResources(), R.string.call_settings_with_label);
@@ -1166,7 +182,6 @@
@Override
protected void onResume() {
super.onResume();
- mForeground = true;
PreferenceScreen preferenceScreen = getPreferenceScreen();
if (preferenceScreen != null) {
@@ -1186,49 +201,15 @@
}
PreferenceScreen prefSet = getPreferenceScreen();
- mSubMenuVoicemailSettings = (EditPhoneNumberPreference) findPreference(BUTTON_VOICEMAIL_KEY);
- mSubMenuVoicemailSettings.setParentActivity(this, VOICEMAIL_PREF_ID, this);
- mSubMenuVoicemailSettings.setDialogOnClosedListener(this);
- mSubMenuVoicemailSettings.setDialogTitle(R.string.voicemail_settings_number_label);
-
- mButtonDTMF = (ListPreference) findPreference(BUTTON_DTMF_KEY);
- mButtonAutoRetry = (CheckBoxPreference) findPreference(BUTTON_RETRY_KEY);
- mButtonHAC = (CheckBoxPreference) findPreference(BUTTON_HAC_KEY);
- mButtonTTY = (TtyModeListPreference) findPreference(
- getResources().getString(R.string.tty_mode_key));
-
- mVoicemailProviders = (VoicemailProviderListPreference) findPreference(
- BUTTON_VOICEMAIL_PROVIDER_KEY);
- mVoicemailProviders.init(mPhone, getIntent());
- mVoicemailProviders.setOnPreferenceChangeListener(this);
- mPreviousVMProviderKey = mVoicemailProviders.getValue();
-
mVoicemailSettingsScreen =
(PreferenceScreen) findPreference(VOICEMAIL_SETTING_SCREEN_PREF_KEY);
- mVoicemailSettings = (PreferenceScreen) findPreference(BUTTON_VOICEMAIL_SETTING_KEY);
+ mVoicemailSettingsScreen.setIntent(mSubscriptionInfoHelper.getIntent(
+ VoicemailSettingsActivity.class));
- mVoicemailNotificationRingtone = (VoicemailRingtonePreference) findPreference(
- getResources().getString(R.string.voicemail_notification_ringtone_key));
- mVoicemailNotificationRingtone.init(mPhone);
-
- mVoicemailNotificationVibrate = (CheckBoxPreference) findPreference(
- getResources().getString(R.string.voicemail_notification_vibrate_key));
- mVoicemailNotificationVibrate.setOnPreferenceChangeListener(this);
-
- updateVMPreferenceWidgets(mVoicemailProviders.getValue());
+ mButtonAutoRetry = (CheckBoxPreference) findPreference(BUTTON_RETRY_KEY);
mEnableVideoCalling = (CheckBoxPreference) findPreference(ENABLE_VIDEO_CALLING_KEY);
- if (getResources().getBoolean(R.bool.dtmf_type_enabled)) {
- mButtonDTMF.setOnPreferenceChangeListener(this);
- int dtmf = Settings.System.getInt(getContentResolver(),
- Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, Constants.DTMF_TONE_TYPE_NORMAL);
- mButtonDTMF.setValueIndex(dtmf);
- } else {
- prefSet.removePreference(mButtonDTMF);
- mButtonDTMF = null;
- }
-
if (getResources().getBoolean(R.bool.auto_retry_enabled)) {
mButtonAutoRetry.setOnPreferenceChangeListener(this);
int autoretry = Settings.Global.getInt(
@@ -1239,28 +220,13 @@
mButtonAutoRetry = null;
}
- if (getResources().getBoolean(R.bool.hac_enabled)) {
- mButtonHAC.setOnPreferenceChangeListener(this);
- int hac = Settings.System.getInt(getContentResolver(), Settings.System.HEARING_AID, 0);
- mButtonHAC.setChecked(hac != 0);
+ Preference cdmaOptions = prefSet.findPreference(BUTTON_CDMA_OPTIONS);
+ Preference gsmOptions = prefSet.findPreference(BUTTON_GSM_UMTS_OPTIONS);
+ if (getResources().getBoolean(R.bool.world_phone)) {
+ cdmaOptions.setIntent(mSubscriptionInfoHelper.getIntent(CdmaCallOptions.class));
+ gsmOptions.setIntent(mSubscriptionInfoHelper.getIntent(GsmUmtsCallOptions.class));
} else {
- prefSet.removePreference(mButtonHAC);
- mButtonHAC = null;
- }
-
- if (!telephonyManager.isMultiSimEnabled() && telecomManager.isTtySupported()) {
- mButtonTTY.init();
- } else {
- prefSet.removePreference(mButtonTTY);
- mButtonTTY = null;
- }
-
- if (!getResources().getBoolean(R.bool.world_phone)) {
- Preference cdmaOptions = prefSet.findPreference(BUTTON_CDMA_OPTIONS);
prefSet.removePreference(cdmaOptions);
-
- // TODO: Support MSIM for this preference option.
- Preference gsmOptions = prefSet.findPreference(BUTTON_GSM_UMTS_OPTIONS);
prefSet.removePreference(gsmOptions);
int phoneType = mPhone.getPhoneType();
@@ -1269,9 +235,6 @@
getContentResolver(), Settings.Global.HIDE_CARRIER_NETWORK_SETTINGS, 0) == 1;
if (shouldHideCarrierSettings) {
prefSet.removePreference(fdnButton);
- if (mButtonDTMF != null) {
- prefSet.removePreference(mButtonDTMF);
- }
} else {
if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
prefSet.removePreference(fdnButton);
@@ -1284,15 +247,7 @@
if (getResources().getBoolean(R.bool.config_additional_call_setting)) {
addPreferencesFromResource(R.xml.gsm_umts_call_options);
-
- Preference callForwardingPref = prefSet.findPreference(CALL_FORWARDING_KEY);
- callForwardingPref.setIntent(mSubscriptionInfoHelper.getIntent(
- GsmUmtsCallForwardOptions.class));
-
- Preference additionalGsmSettingsPref =
- prefSet.findPreference(ADDITIONAL_GSM_SETTINGS_KEY);
- additionalGsmSettingsPref.setIntent(mSubscriptionInfoHelper.getIntent(
- GsmUmtsAdditionalCallOptions.class));
+ GsmUmtsCallOptions.init(prefSet, mSubscriptionInfoHelper);
}
} else {
throw new IllegalStateException("Unexpected phone type: " + phoneType);
@@ -1300,36 +255,11 @@
}
}
- // check the intent that started this activity and pop up the voicemail
- // dialog if we've been asked to.
- // If we have at least one non default VM provider registered then bring up
- // the selection for the VM provider, otherwise bring up a VM number dialog.
- // We only bring up the dialog the first time we are called (not after orientation change)
- if (mShowVoicemailPreference) {
- if (DBG) log("ACTION_ADD_VOICEMAIL Intent is thrown");
- if (mSetupVoicemail) {
- simulatePreferenceClick(mVoicemailSettingsScreen);
- mSetupVoicemail = false;
- } else if (mVoicemailProviders.hasMoreThanOneVoicemailProvider()) {
- if (DBG) log("Voicemail data has more than one provider.");
- simulatePreferenceClick(mVoicemailProviders);
- } else {
- onPreferenceChange(mVoicemailProviders, VoicemailProviderListPreference.DEFAULT_KEY);
- mVoicemailProviders.setValue(VoicemailProviderListPreference.DEFAULT_KEY);
- }
- mShowVoicemailPreference = false;
- }
-
- updateVoiceNumberField();
- mVMProviderSettingsForced = false;
-
- mVoicemailNotificationVibrate.setChecked(
- VoicemailNotificationSettingsUtil.isVibrationEnabled(mPhone));
-
if (ImsManager.isVtEnabledByPlatform(mPhone.getContext()) && ENABLE_VT_FLAG) {
boolean currentValue =
ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())
- ? PhoneGlobals.getInstance().phoneMgr.isVideoCallingEnabled() : false;
+ ? PhoneGlobals.getInstance().phoneMgr.isVideoCallingEnabled(
+ getOpPackageName()) : false;
mEnableVideoCalling.setChecked(currentValue);
mEnableVideoCalling.setOnPreferenceChangeListener(this);
} else {
@@ -1340,7 +270,7 @@
!mPhone.getContext().getResources().getBoolean(
com.android.internal.R.bool.config_carrier_volte_tty_supported)) {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
- tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
+ /* tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); */
}
Preference wifiCallingSettings = findPreference(
@@ -1383,58 +313,6 @@
Log.d(LOG_TAG, msg);
}
- /**
- * Updates the look of the VM preference widgets based on current VM provider settings.
- * Note that the provider name is loaded fxrorm the found activity via loadLabel in
- * {@link VoicemailProviderListPreference#initVoiceMailProviders()} in order for it to be
- * localizable.
- */
- private void updateVMPreferenceWidgets(String currentProviderSetting) {
- final String key = currentProviderSetting;
- final VoicemailProvider provider = mVoicemailProviders.getVoicemailProvider(key);
-
- /* This is the case when we are coming up on a freshly wiped phone and there is no
- persisted value for the list preference mVoicemailProviders.
- In this case we want to show the UI asking the user to select a voicemail provider as
- opposed to silently falling back to default one. */
- if (provider == null) {
- if (DBG) log("updateVMPreferenceWidget: key: " + key + " -> null.");
-
- mVoicemailProviders.setSummary(getString(R.string.sum_voicemail_choose_provider));
- mVoicemailSettings.setEnabled(false);
- mVoicemailSettings.setIntent(null);
- mVoicemailNotificationVibrate.setEnabled(false);
- } else {
- if (DBG) log("updateVMPreferenceWidget: key: " + key + " -> " + provider.toString());
-
- final String providerName = provider.name;
- mVoicemailProviders.setSummary(providerName);
- mVoicemailSettings.setEnabled(true);
- mVoicemailSettings.setIntent(provider.intent);
- mVoicemailNotificationVibrate.setEnabled(true);
- }
- }
-
-
- /**
- * Simulates user clicking on a passed preference.
- * Usually needed when the preference is a dialog preference and we want to invoke
- * a dialog for this preference programmatically.
- * TODO: figure out if there is a cleaner way to cause preference dlg to come up
- */
- private void simulatePreferenceClick(Preference preference) {
- // Go through settings until we find our setting
- // and then simulate a click on it to bring up the dialog
- final ListAdapter adapter = getPreferenceScreen().getRootAdapter();
- for (int idx = 0; idx < adapter.getCount(); idx++) {
- if (adapter.getItem(idx) == preference) {
- getPreferenceScreen().onItemClick(this.getListView(),
- null, idx, adapter.getItemId(idx));
- break;
- }
- }
- }
-
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final int itemId = item.getItemId();
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 185aea0..c6a1921 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -270,7 +270,8 @@
String gid2 = "";
String spn = TelephonyManager.from(mContext).getSimOperatorNameForPhone(phoneId);
String simOperator = TelephonyManager.from(mContext).getSimOperatorNumericForPhone(phoneId);
- if (simOperator != null) {
+ // A valid simOperator should be 5 or 6 digits, depending on the length of the MNC.
+ if (simOperator != null && simOperator.length() >= 3) {
mcc = simOperator.substring(0, 3);
mnc = simOperator.substring(3);
}
diff --git a/src/com/android/phone/CdmaCallOptions.java b/src/com/android/phone/CdmaCallOptions.java
index 8eecd27..8f7b1b1 100644
--- a/src/com/android/phone/CdmaCallOptions.java
+++ b/src/com/android/phone/CdmaCallOptions.java
@@ -29,6 +29,7 @@
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.util.Log;
+import android.view.MenuItem;
public class CdmaCallOptions extends PreferenceActivity {
private static final String LOG_TAG = "CdmaCallOptions";
@@ -43,8 +44,12 @@
addPreferencesFromResource(R.xml.cdma_call_privacy);
+ SubscriptionInfoHelper subInfoHelper = new SubscriptionInfoHelper(this, getIntent());
+ subInfoHelper.setActionBarTitle(
+ getActionBar(), getResources(), R.string.labelCdmaMore_with_label);
+
mButtonVoicePrivacy = (CheckBoxPreference) findPreference(BUTTON_VP_KEY);
- if (PhoneGlobals.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA
+ if (subInfoHelper.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA
|| getResources().getBoolean(R.bool.config_voice_privacy_disable)) {
//disable the entire screen
getPreferenceScreen().setEnabled(false);
@@ -52,6 +57,16 @@
}
@Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ final int itemId = item.getItemId();
+ if (itemId == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference.getKey().equals(BUTTON_VP_KEY)) {
return true;
diff --git a/src/com/android/phone/Constants.java b/src/com/android/phone/Constants.java
index 79a1e9a..64414e9 100644
--- a/src/com/android/phone/Constants.java
+++ b/src/com/android/phone/Constants.java
@@ -130,7 +130,4 @@
// OutgoingCallBroadcaster, OtaUtils, etc.)
//
- // Dtmf tone type setting value for CDMA phone
- public static final int DTMF_TONE_TYPE_NORMAL = 0;
- public static final int DTMF_TONE_TYPE_LONG = 1;
}
diff --git a/src/com/android/phone/EditPhoneNumberPreference.java b/src/com/android/phone/EditPhoneNumberPreference.java
index 86671a8..8a672f1 100644
--- a/src/com/android/phone/EditPhoneNumberPreference.java
+++ b/src/com/android/phone/EditPhoneNumberPreference.java
@@ -94,7 +94,7 @@
* DialogPreference.onDialogClosed(), except we also pass in a buttonClicked
* value indicating which of the three possible buttons were pressed.
*/
- interface OnDialogClosedListener {
+ public interface OnDialogClosedListener {
void onDialogClosed(EditPhoneNumberPreference preference, int buttonClicked);
}
@@ -102,7 +102,7 @@
* Interface for the default number setting listener. Handles requests for
* the default display number for the dialog.
*/
- interface GetDefaultNumberListener {
+ public interface GetDefaultNumberListener {
/**
* Notify that we are looking for a default display value.
* @return null if there is no contribution from this interface,
diff --git a/src/com/android/phone/EmergencyActionGroup.java b/src/com/android/phone/EmergencyActionGroup.java
new file mode 100644
index 0000000..b8d17c9
--- /dev/null
+++ b/src/com/android/phone/EmergencyActionGroup.java
@@ -0,0 +1,351 @@
+/*
+ * Copyright (C) 2015 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.phone;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewAnimationUtils;
+import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityManager;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+import android.widget.Button;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import java.util.List;
+
+public class EmergencyActionGroup extends FrameLayout implements View.OnClickListener {
+
+ private static final long HIDE_DELAY = 3000;
+ private static final int RIPPLE_DURATION = 600;
+ private static final long RIPPLE_PAUSE = 1000;
+
+ private final Interpolator mFastOutLinearInInterpolator;
+
+ private ViewGroup mSelectedContainer;
+ private TextView mSelectedLabel;
+ private View mRippleView;
+ private View mLaunchHint;
+
+ private View mLastRevealed;
+
+ private MotionEvent mPendingTouchEvent;
+
+ private boolean mHiding;
+
+ public EmergencyActionGroup(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context,
+ android.R.interpolator.fast_out_linear_in);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+
+ setupAssistActions();
+
+ mSelectedContainer = (ViewGroup) findViewById(R.id.selected_container);
+ mSelectedContainer.setOnClickListener(this);
+ mSelectedLabel = (TextView) findViewById(R.id.selected_label);
+ mRippleView = findViewById(R.id.ripple_view);
+ mLaunchHint = findViewById(R.id.launch_hint);
+ }
+
+ /**
+ * Called by the activity before a touch event is dispatched to the view hierarchy.
+ */
+ public void onPreTouchEvent(MotionEvent event) {
+ mPendingTouchEvent = event;
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent event) {
+ boolean handled = super.dispatchTouchEvent(event);
+ if (mPendingTouchEvent == event && handled) {
+ mPendingTouchEvent = null;
+ }
+ return handled;
+ }
+
+ /**
+ * Called by the activity after a touch event is dispatched to the view hierarchy.
+ */
+ public void onPostTouchEvent(MotionEvent event) {
+ // Hide the confirmation button if a touch event was delivered to the activity but not to
+ // this view.
+ if (mPendingTouchEvent != null) {
+ hideTheButton();
+ }
+ mPendingTouchEvent = null;
+ }
+
+
+
+ private void setupAssistActions() {
+ int[] buttonIds = new int[] {R.id.action1, R.id.action2, R.id.action3};
+
+ List<ResolveInfo> infos = resolveAssistPackageAndQueryActivites();
+
+ for (int i = 0; i < 3; i++) {
+ Button button = (Button) findViewById(buttonIds[i]);
+ boolean visible = false;
+
+ button.setOnClickListener(this);
+
+ if (infos != null && infos.size() > i && infos.get(i) != null) {
+ ResolveInfo info = infos.get(i);
+ ComponentName name = getComponentName(info);
+
+ button.setTag(R.id.tag_intent,
+ new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)
+ .setComponent(name));
+ button.setText(info.loadLabel(getContext().getPackageManager()));
+ visible = true;
+ }
+
+ button.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+ }
+
+ private List<ResolveInfo> resolveAssistPackageAndQueryActivites() {
+ List<ResolveInfo> infos = queryAssistActivities();
+
+ if (infos == null || infos.isEmpty()) {
+ PackageManager packageManager = getContext().getPackageManager();
+ Intent queryIntent = new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE);
+ infos = packageManager.queryIntentActivities(queryIntent, 0);
+
+ PackageInfo bestMatch = null;
+ for (int i = 0; i < infos.size(); i++) {
+ if (infos.get(i).activityInfo == null) continue;
+ String packageName = infos.get(i).activityInfo.packageName;
+ PackageInfo packageInfo;
+ try {
+ packageInfo = packageManager.getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ continue;
+ }
+ // Get earliest installed app, but prioritize system apps.
+ if (bestMatch == null
+ || !isSystemApp(bestMatch) && isSystemApp(packageInfo)
+ || isSystemApp(bestMatch) == isSystemApp(packageInfo)
+ && bestMatch.firstInstallTime > packageInfo.firstInstallTime) {
+ bestMatch = packageInfo;
+ }
+ }
+
+ if (bestMatch != null) {
+ Settings.Secure.putString(getContext().getContentResolver(),
+ Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION,
+ bestMatch.packageName);
+ return queryAssistActivities();
+ } else {
+ return null;
+ }
+ } else {
+ return infos;
+ }
+ }
+
+ private List<ResolveInfo> queryAssistActivities() {
+ String assistPackage = Settings.Secure.getString(
+ getContext().getContentResolver(),
+ Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
+ List<ResolveInfo> infos = null;
+
+ if (!TextUtils.isEmpty(assistPackage)) {
+ Intent queryIntent = new Intent(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)
+ .setPackage(assistPackage);
+ infos = getContext().getPackageManager().queryIntentActivities(queryIntent, 0);
+ }
+ return infos;
+ }
+
+ private boolean isSystemApp(PackageInfo info) {
+ return info.applicationInfo != null
+ && (info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+ }
+
+ private ComponentName getComponentName(ResolveInfo resolveInfo) {
+ if (resolveInfo == null || resolveInfo.activityInfo == null) return null;
+ return new ComponentName(resolveInfo.activityInfo.packageName,
+ resolveInfo.activityInfo.name);
+ }
+
+ @Override
+ public void onClick(View v) {
+ Intent intent = (Intent) v.getTag(R.id.tag_intent);
+
+ switch (v.getId()) {
+ case R.id.action1:
+ case R.id.action2:
+ case R.id.action3:
+ if (AccessibilityManager.getInstance(mContext).isTouchExplorationEnabled()) {
+ getContext().startActivity(intent);
+ } else {
+ revealTheButton(v);
+ }
+ break;
+ case R.id.selected_container:
+ if (!mHiding) {
+ getContext().startActivity(intent);
+ }
+ break;
+ }
+ }
+
+ private void revealTheButton(View v) {
+ mSelectedContainer.setVisibility(VISIBLE);
+ int centerX = v.getLeft() + v.getWidth() / 2;
+ int centerY = v.getTop() + v.getHeight() / 2;
+ Animator reveal = ViewAnimationUtils.createCircularReveal(
+ mSelectedContainer,
+ centerX,
+ centerY,
+ 0,
+ Math.max(centerX, mSelectedContainer.getWidth() - centerX)
+ + Math.max(centerY, mSelectedContainer.getHeight() - centerY));
+ reveal.start();
+
+ animateHintText(mSelectedLabel, v, reveal);
+ animateHintText(mLaunchHint, v, reveal);
+
+ mSelectedLabel.setText(((Button) v).getText());
+ mSelectedContainer.setTag(R.id.tag_intent, v.getTag(R.id.tag_intent));
+ mLastRevealed = v;
+ postDelayed(mHideRunnable, HIDE_DELAY);
+ postDelayed(mRippleRunnable, RIPPLE_PAUSE / 2);
+
+ // Transfer focus from the originally clicked button to the expanded button.
+ mSelectedContainer.requestFocus();
+ }
+
+ private void animateHintText(View selectedView, View v, Animator reveal) {
+ selectedView.setTranslationX(
+ (v.getLeft() + v.getWidth() / 2 - mSelectedContainer.getWidth() / 2) / 5);
+ selectedView.animate()
+ .setDuration(reveal.getDuration() / 3)
+ .setStartDelay(reveal.getDuration() / 5)
+ .translationX(0)
+ .setInterpolator(mFastOutLinearInInterpolator)
+ .start();
+ }
+
+ private void hideTheButton() {
+ if (mHiding || mSelectedContainer.getVisibility() != VISIBLE) {
+ return;
+ }
+
+ mHiding = true;
+
+ removeCallbacks(mHideRunnable);
+
+ View v = mLastRevealed;
+ int centerX = v.getLeft() + v.getWidth() / 2;
+ int centerY = v.getTop() + v.getHeight() / 2;
+ Animator reveal = ViewAnimationUtils.createCircularReveal(
+ mSelectedContainer,
+ centerX,
+ centerY,
+ Math.max(centerX, mSelectedContainer.getWidth() - centerX)
+ + Math.max(centerY, mSelectedContainer.getHeight() - centerY),
+ 0);
+ reveal.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mSelectedContainer.setVisibility(INVISIBLE);
+ removeCallbacks(mRippleRunnable);
+ mHiding = false;
+ }
+ });
+ reveal.start();
+
+ // Transfer focus back to the originally clicked button.
+ if (mSelectedContainer.isFocused()) {
+ v.requestFocus();
+ }
+ }
+
+ private void startRipple() {
+ final View ripple = mRippleView;
+ ripple.animate().cancel();
+ ripple.setVisibility(VISIBLE);
+ Animator reveal = ViewAnimationUtils.createCircularReveal(
+ ripple,
+ ripple.getLeft() + ripple.getWidth() / 2,
+ ripple.getTop() + ripple.getHeight() / 2,
+ 0,
+ ripple.getWidth() / 2);
+ reveal.setDuration(RIPPLE_DURATION);
+ reveal.start();
+
+ ripple.setAlpha(0);
+ ripple.animate().alpha(1).setDuration(RIPPLE_DURATION / 2)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ ripple.animate().alpha(0).setDuration(RIPPLE_DURATION / 2)
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ ripple.setVisibility(INVISIBLE);
+ postDelayed(mRippleRunnable, RIPPLE_PAUSE);
+ }
+ }).start();
+ }
+ }).start();
+ }
+
+ private final Runnable mHideRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if (!isAttachedToWindow()) return;
+ hideTheButton();
+ }
+ };
+
+ private final Runnable mRippleRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if (!isAttachedToWindow()) return;
+ startRipple();
+ }
+ };
+
+
+}
diff --git a/src/com/android/phone/EmergencyDialer.java b/src/com/android/phone/EmergencyDialer.java
index 6995d89..c7dd1e9 100644
--- a/src/com/android/phone/EmergencyDialer.java
+++ b/src/com/android/phone/EmergencyDialer.java
@@ -40,6 +40,7 @@
import android.util.Log;
import android.view.KeyEvent;
import android.view.MenuItem;
+import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
@@ -115,12 +116,14 @@
// Haptic feedback (vibration) for dialer key presses.
private HapticFeedback mHaptic = new HapticFeedback();
+ private EmergencyActionGroup mEmergencyActionGroup;
+
// close activity when screen turns off
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {
- finish();
+ finishAndRemoveTask();
}
}
};
@@ -239,6 +242,8 @@
} catch (Resources.NotFoundException nfe) {
Log.e(LOG_TAG, "Vibrate control bool missing.", nfe);
}
+
+ mEmergencyActionGroup = (EmergencyActionGroup) findViewById(R.id.emergency_action_group);
}
@Override
@@ -340,6 +345,14 @@
}
@Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ mEmergencyActionGroup.onPreTouchEvent(ev);
+ boolean handled = super.dispatchTouchEvent(ev);
+ mEmergencyActionGroup.onPostTouchEvent(ev);
+ return handled;
+ }
+
+ @Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.deleteButton: {
diff --git a/src/com/android/phone/ErrorDialogActivity.java b/src/com/android/phone/ErrorDialogActivity.java
index 4635f86..bf09376 100644
--- a/src/com/android/phone/ErrorDialogActivity.java
+++ b/src/com/android/phone/ErrorDialogActivity.java
@@ -23,6 +23,8 @@
import android.os.Bundle;
import android.util.Log;
+import com.android.phone.settings.VoicemailSettingsActivity;
+
/**
* Used to display an error dialog from within the Telephony service when an outgoing call fails
*/
@@ -105,8 +107,8 @@
}
// navigate to the Voicemail setting in the Call Settings activity.
- Intent intent = new Intent(CallFeaturesSetting.ACTION_ADD_VOICEMAIL);
- intent.setClass(this, CallFeaturesSetting.class);
+ Intent intent = new Intent(VoicemailSettingsActivity.ACTION_ADD_VOICEMAIL);
+ intent.setClass(this, VoicemailSettingsActivity.class);
startActivity(intent);
finish();
}
diff --git a/src/com/android/phone/GsmUmtsCallOptions.java b/src/com/android/phone/GsmUmtsCallOptions.java
index a9a1940..419e72c 100644
--- a/src/com/android/phone/GsmUmtsCallOptions.java
+++ b/src/com/android/phone/GsmUmtsCallOptions.java
@@ -21,6 +21,7 @@
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
+import android.view.MenuItem;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
@@ -29,15 +30,43 @@
private static final String LOG_TAG = "GsmUmtsCallOptions";
private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
+ private static final String CALL_FORWARDING_KEY = "call_forwarding_key";
+ private static final String ADDITIONAL_GSM_SETTINGS_KEY = "additional_gsm_call_settings_key";
+
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.gsm_umts_call_options);
- if (PhoneGlobals.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_GSM) {
+ SubscriptionInfoHelper subInfoHelper = new SubscriptionInfoHelper(this, getIntent());
+ subInfoHelper.setActionBarTitle(
+ getActionBar(), getResources(), R.string.labelGsmMore_with_label);
+ init(getPreferenceScreen(), subInfoHelper);
+
+ if (subInfoHelper.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_GSM) {
//disable the entire screen
getPreferenceScreen().setEnabled(false);
}
}
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ final int itemId = item.getItemId();
+ if (itemId == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ public static void init(PreferenceScreen prefScreen, SubscriptionInfoHelper subInfoHelper) {
+ Preference callForwardingPref = prefScreen.findPreference(CALL_FORWARDING_KEY);
+ callForwardingPref.setIntent(subInfoHelper.getIntent(GsmUmtsCallForwardOptions.class));
+
+ Preference additionalGsmSettingsPref =
+ prefScreen.findPreference(ADDITIONAL_GSM_SETTINGS_KEY);
+ additionalGsmSettingsPref.setIntent(
+ subInfoHelper.getIntent(GsmUmtsAdditionalCallOptions.class));
+ }
}
diff --git a/src/com/android/phone/MMIDialogActivity.java b/src/com/android/phone/MMIDialogActivity.java
index 24179b8..10ec6a3 100644
--- a/src/com/android/phone/MMIDialogActivity.java
+++ b/src/com/android/phone/MMIDialogActivity.java
@@ -69,6 +69,20 @@
showMMIDialog();
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ if (mMMIDialog != null) {
+ mMMIDialog.dismiss();
+ mMMIDialog = null;
+ }
+ if (mHandler != null) {
+ mCM.unregisterForMmiComplete(mHandler);
+ mHandler = null;
+ }
+ }
+
private void showMMIDialog() {
final List<? extends MmiCode> codes = mPhone.getPendingMmiCodes();
if (codes.size() > 0) {
@@ -127,9 +141,11 @@
private void dismissDialogsAndFinish() {
if (mMMIDialog != null) {
mMMIDialog.dismiss();
+ mMMIDialog = null;
}
if (mHandler != null) {
mCM.unregisterForMmiComplete(mHandler);
+ mHandler = null;
}
finish();
}
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index bccddeb..571f32f 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -387,7 +387,8 @@
};
private void updatePhone(int slotId) {
- final SubscriptionInfo sir = findRecordBySlotId(slotId);
+ final SubscriptionInfo sir = mSubscriptionManager
+ .getActiveSubscriptionInfoForSimSlotIndex(slotId);
if (sir != null) {
mPhone = PhoneFactory.getPhone(
SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
@@ -485,14 +486,9 @@
// and the UI state would be inconsistent with actual state
mButtonDataRoam.setChecked(mPhone.getDataRoamingEnabled());
- if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null) {
- mPhone.getPreferredNetworkType(mHandler.obtainMessage(
- MyHandler.MESSAGE_GET_PREFERRED_NETWORK_TYPE));
- }
-
- if (getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null) {
- mPhone.getPreferredNetworkType(mHandler.obtainMessage(
- MyHandler.MESSAGE_GET_PREFERRED_NETWORK_TYPE));
+ if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null
+ || getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null) {
+ updatePreferredNetworkUIFromDb();
}
if (ImsManager.isVolteEnabledByPlatform(this)
@@ -858,7 +854,7 @@
mOkClicked = false;
new AlertDialog.Builder(this).setMessage(
getResources().getString(R.string.roaming_warning))
- .setTitle(android.R.string.dialog_alert_title)
+ .setTitle(R.string.roaming_alert_title)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setPositiveButton(android.R.string.yes, this)
.setNegativeButton(android.R.string.no, this)
@@ -877,121 +873,63 @@
private class MyHandler extends Handler {
- static final int MESSAGE_GET_PREFERRED_NETWORK_TYPE = 0;
- static final int MESSAGE_SET_PREFERRED_NETWORK_TYPE = 1;
+ static final int MESSAGE_SET_PREFERRED_NETWORK_TYPE = 0;
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
- case MESSAGE_GET_PREFERRED_NETWORK_TYPE:
- handleGetPreferredNetworkTypeResponse(msg);
- break;
-
case MESSAGE_SET_PREFERRED_NETWORK_TYPE:
handleSetPreferredNetworkTypeResponse(msg);
break;
}
}
- private void handleGetPreferredNetworkTypeResponse(Message msg) {
- final int phoneSubId = mPhone.getSubId();
- AsyncResult ar = (AsyncResult) msg.obj;
-
- if (ar.exception == null) {
- int modemNetworkMode = ((int[])ar.result)[0];
-
- if (DBG) {
- log ("handleGetPreferredNetworkTypeResponse: modemNetworkMode = " +
- modemNetworkMode);
- }
-
- int settingsNetworkMode = android.provider.Settings.Global.getInt(
- mPhone.getContext().getContentResolver(),
- android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
- preferredNetworkMode);
-
- if (DBG) {
- log("handleGetPreferredNetworkTypeReponse: settingsNetworkMode = " +
- settingsNetworkMode);
- }
-
- //check that modemNetworkMode is from an accepted value
- if (modemNetworkMode == Phone.NT_MODE_WCDMA_PREF ||
- modemNetworkMode == Phone.NT_MODE_GSM_ONLY ||
- modemNetworkMode == Phone.NT_MODE_WCDMA_ONLY ||
- modemNetworkMode == Phone.NT_MODE_GSM_UMTS ||
- modemNetworkMode == Phone.NT_MODE_CDMA ||
- modemNetworkMode == Phone.NT_MODE_CDMA_NO_EVDO ||
- modemNetworkMode == Phone.NT_MODE_EVDO_NO_CDMA ||
- modemNetworkMode == Phone.NT_MODE_GLOBAL ||
- modemNetworkMode == Phone.NT_MODE_LTE_CDMA_AND_EVDO ||
- modemNetworkMode == Phone.NT_MODE_LTE_GSM_WCDMA ||
- modemNetworkMode == Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA ||
- modemNetworkMode == Phone.NT_MODE_LTE_ONLY ||
- modemNetworkMode == Phone.NT_MODE_LTE_WCDMA) {
- if (DBG) {
- log("handleGetPreferredNetworkTypeResponse: if 1: modemNetworkMode = " +
- modemNetworkMode);
- }
-
- //check changes in modemNetworkMode
- if (modemNetworkMode != settingsNetworkMode) {
- if (DBG) {
- log("handleGetPreferredNetworkTypeResponse: if 2: " +
- "modemNetworkMode != settingsNetworkMode");
- }
-
- settingsNetworkMode = modemNetworkMode;
-
- if (DBG) { log("handleGetPreferredNetworkTypeResponse: if 2: " +
- "settingsNetworkMode = " + settingsNetworkMode);
- }
- }
-
- UpdatePreferredNetworkModeSummary(modemNetworkMode);
- UpdateEnabledNetworksValueAndSummary(modemNetworkMode);
- // changes the mButtonPreferredNetworkMode accordingly to modemNetworkMode
- mButtonPreferredNetworkMode.setValue(Integer.toString(modemNetworkMode));
- } else {
- if (DBG) log("handleGetPreferredNetworkTypeResponse: else: reset to default");
- resetNetworkModeToDefault();
- }
- }
- }
-
private void handleSetPreferredNetworkTypeResponse(Message msg) {
AsyncResult ar = (AsyncResult) msg.obj;
final int phoneSubId = mPhone.getSubId();
if (ar.exception == null) {
- int networkMode = Integer.valueOf(
- mButtonPreferredNetworkMode.getValue()).intValue();
- android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
- android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
- networkMode );
- networkMode = Integer.valueOf(
- mButtonEnabledNetworks.getValue()).intValue();
- android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
- android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
- networkMode );
+ int networkMode;
+ if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null) {
+ networkMode = Integer.valueOf(
+ mButtonPreferredNetworkMode.getValue()).intValue();
+ android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
+ android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+ networkMode );
+ }
+ if (getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null) {
+ networkMode = Integer.valueOf(
+ mButtonEnabledNetworks.getValue()).intValue();
+ android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
+ android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+ networkMode );
+ }
} else {
- mPhone.getPreferredNetworkType(obtainMessage(MESSAGE_GET_PREFERRED_NETWORK_TYPE));
+ if (DBG) {
+ log("handleSetPreferredNetworkTypeResponse: exception in setting network mode.");
+ }
+ updatePreferredNetworkUIFromDb();
}
}
+ }
- private void resetNetworkModeToDefault() {
- final int phoneSubId = mPhone.getSubId();
- //set the mButtonPreferredNetworkMode
- mButtonPreferredNetworkMode.setValue(Integer.toString(preferredNetworkMode));
- mButtonEnabledNetworks.setValue(Integer.toString(preferredNetworkMode));
- //set the Settings.System
- android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
- android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
- preferredNetworkMode );
- //Set the Modem
- mPhone.setPreferredNetworkType(preferredNetworkMode,
- this.obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
+ private void updatePreferredNetworkUIFromDb() {
+ final int phoneSubId = mPhone.getSubId();
+
+ int settingsNetworkMode = android.provider.Settings.Global.getInt(
+ mPhone.getContext().getContentResolver(),
+ android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+ preferredNetworkMode);
+
+ if (DBG) {
+ log("updatePreferredNetworkUIFromDb: settingsNetworkMode = " +
+ settingsNetworkMode);
}
+
+ UpdatePreferredNetworkModeSummary(settingsNetworkMode);
+ UpdateEnabledNetworksValueAndSummary(settingsNetworkMode);
+ // changes the mButtonPreferredNetworkMode accordingly to settingsNetworkMode
+ mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode));
}
private void UpdatePreferredNetworkModeSummary(int NetworkMode) {
@@ -1274,23 +1212,4 @@
}
}
- /**
- * finds a record with slotId.
- * Since the number of SIMs are few, an array is fine.
- */
- public SubscriptionInfo findRecordBySlotId(final int slotId) {
- if (mActiveSubInfos != null) {
- final int subInfoLength = mActiveSubInfos.size();
-
- for (int i = 0; i < subInfoLength; ++i) {
- final SubscriptionInfo sir = mActiveSubInfos.get(i);
- if (sir.getSimSlotIndex() == slotId) {
- //Right now we take the first subscription on a SIM.
- return sir;
- }
- }
- }
-
- return null;
- }
}
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index c38be71..1460d63 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -25,6 +25,7 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.UserInfo;
+import android.content.res.Resources;
import android.net.Uri;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -48,6 +49,7 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.TelephonyCapabilities;
+import com.android.phone.settings.VoicemailSettingsActivity;
import com.android.phone.settings.VoicemailNotificationSettingsUtil;
import com.android.phone.settings.VoicemailProviderSettingsUtil;
@@ -357,10 +359,9 @@
// to the voicemail settings.
notificationText = mContext.getString(
R.string.notification_voicemail_no_vm_number);
- intent = new Intent(CallFeaturesSetting.ACTION_ADD_VOICEMAIL);
- intent.putExtra(CallFeaturesSetting.SETUP_VOICEMAIL_EXTRA, true);
+ intent = new Intent(VoicemailSettingsActivity.ACTION_ADD_VOICEMAIL);
intent.putExtra(SubscriptionInfoHelper.SUB_ID_EXTRA, subId);
- intent.setClass(mContext, CallFeaturesSetting.class);
+ intent.setClass(mContext, VoicemailSettingsActivity.class);
} else {
if (mTelephonyManager.getPhoneCount() > 1) {
notificationText = subInfo.getDisplayName().toString();
@@ -383,6 +384,7 @@
ringtoneUri = VoicemailNotificationSettingsUtil.getRingtoneUri(mPhone);
}
+ Resources res = mContext.getResources();
Notification.Builder builder = new Notification.Builder(mContext);
builder.setSmallIcon(resId)
.setWhen(System.currentTimeMillis())
@@ -391,8 +393,8 @@
.setContentText(notificationText)
.setContentIntent(pendingIntent)
.setSound(ringtoneUri)
- .setColor(mContext.getResources().getColor(R.color.dialer_theme_color))
- .setOngoing(true);
+ .setColor(res.getColor(R.color.dialer_theme_color))
+ .setOngoing(res.getBoolean(R.bool.voicemail_notification_persistent));
if (VoicemailNotificationSettingsUtil.isVibrationEnabled(phone)) {
builder.setDefaults(Notification.DEFAULT_VIBRATE);
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index c3a8d0c..48b2bf9 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -64,7 +64,9 @@
import com.android.internal.telephony.TelephonyCapabilities;
import com.android.internal.telephony.TelephonyIntents;
import com.android.phone.common.CallLogAsync;
+import com.android.phone.settings.SettingsConstants;
import com.android.server.sip.SipService;
+import com.android.services.telephony.activation.SimActivationManager;
import java.util.ArrayList;
import java.util.List;
@@ -143,7 +145,8 @@
CallNotifier notifier;
CallerInfoCache callerInfoCache;
NotificationMgr notificationMgr;
- PhoneInterfaceManager phoneMgr;
+ public PhoneInterfaceManager phoneMgr;
+ public SimActivationManager simActivationManager;
CarrierConfigLoader configLoader;
private BluetoothManager bluetoothManager;
@@ -443,6 +446,8 @@
cdmaOtaScreenState = new OtaUtils.CdmaOtaScreenState();
cdmaOtaInCallScreenUiState = new OtaUtils.CdmaOtaInCallScreenUiState();
+ simActivationManager = new SimActivationManager();
+
// XXX pre-load the SimProvider so that it's ready
resolver.getType(Uri.parse("content://icc/adn"));
@@ -459,9 +464,9 @@
android.provider.Settings.System.HEARING_AID,
0);
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
- audioManager.setParameter(CallFeaturesSetting.HAC_KEY, hac != 0 ?
- CallFeaturesSetting.HAC_VAL_ON :
- CallFeaturesSetting.HAC_VAL_OFF);
+ audioManager.setParameter(SettingsConstants.HAC_KEY,
+ hac == SettingsConstants.HAC_ENABLED
+ ? SettingsConstants.HAC_VAL_ON : SettingsConstants.HAC_VAL_OFF);
}
}
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 9369b6a..3045903 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -36,6 +36,7 @@
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.telecom.PhoneAccount;
+import android.telecom.TelecomManager;
import android.telephony.CellInfo;
import android.telephony.IccOpenLogicalChannelResponse;
import android.telephony.NeighboringCellInfo;
@@ -61,6 +62,7 @@
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.ProxyController;
import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.uicc.IccIoResult;
import com.android.internal.telephony.uicc.IccUtils;
@@ -121,6 +123,8 @@
private static final int EVENT_EXCHANGE_SIM_IO_DONE = 32;
private static final int CMD_SET_VOICEMAIL_NUMBER = 33;
private static final int EVENT_SET_VOICEMAIL_NUMBER_DONE = 34;
+ private static final int CMD_SET_NETWORK_SELECTION_MODE_AUTOMATIC = 35;
+ private static final int EVENT_SET_NETWORK_SELECTION_MODE_AUTOMATIC_DONE = 36;
/** The singleton instance. */
private static PhoneInterfaceManager sInstance;
@@ -554,7 +558,7 @@
case CMD_GET_PREFERRED_NETWORK_TYPE:
request = (MainThreadRequest) msg.obj;
onCompleted = obtainMessage(EVENT_GET_PREFERRED_NETWORK_TYPE_DONE, request);
- mPhone.getPreferredNetworkType(onCompleted);
+ getPhoneFromRequest(request).getPreferredNetworkType(onCompleted);
break;
case EVENT_GET_PREFERRED_NETWORK_TYPE_DONE:
@@ -582,7 +586,7 @@
request = (MainThreadRequest) msg.obj;
onCompleted = obtainMessage(EVENT_SET_PREFERRED_NETWORK_TYPE_DONE, request);
int networkType = (Integer) request.argument;
- mPhone.setPreferredNetworkType(networkType, onCompleted);
+ getPhoneFromRequest(request).setPreferredNetworkType(networkType, onCompleted);
break;
case EVENT_SET_PREFERRED_NETWORK_TYPE_DONE:
@@ -616,6 +620,17 @@
handleNullReturnEvent(msg, "setVoicemailNumber");
break;
+ case CMD_SET_NETWORK_SELECTION_MODE_AUTOMATIC:
+ request = (MainThreadRequest) msg.obj;
+ onCompleted = obtainMessage(EVENT_SET_NETWORK_SELECTION_MODE_AUTOMATIC_DONE,
+ request);
+ getPhoneFromRequest(request).setNetworkSelectionModeAutomatic(onCompleted);
+ break;
+
+ case EVENT_SET_NETWORK_SELECTION_MODE_AUTOMATIC_DONE:
+ handleNullReturnEvent(msg, "setNetworkSelectionModeAutomatic");
+ break;
+
default:
Log.w(LOG_TAG, "MainThreadHandler: unexpected message code: " + msg.what);
break;
@@ -791,7 +806,16 @@
}
boolean isValid = false;
- List<SubscriptionInfo> slist = mSubscriptionController.getActiveSubscriptionInfoList();
+ List<SubscriptionInfo> slist;
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ slist = mSubscriptionController.getActiveSubscriptionInfoList(
+ mPhone.getContext().getOpPackageName());
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+
if (slist != null) {
for (SubscriptionInfo subInfoRecord : slist) {
if (subInfoRecord.getSubscriptionId() == subId) {
@@ -909,8 +933,11 @@
return (getPhone(subId).getState() == PhoneConstants.State.IDLE);
}
- public boolean isSimPinEnabled() {
- enforceReadPermission();
+ public boolean isSimPinEnabled(String callingPackage) {
+ if (!canReadPhoneState(callingPackage, "isSimPinEnabled")) {
+ return false;
+ }
+
return (PhoneGlobals.getInstance().isSimPinEnabled());
}
@@ -1186,16 +1213,13 @@
}
@Override
- public Bundle getCellLocation() {
- try {
- mApp.enforceCallingOrSelfPermission(
- android.Manifest.permission.ACCESS_FINE_LOCATION, null);
- } catch (SecurityException e) {
- // If we have ACCESS_FINE_LOCATION permission, skip the check for ACCESS_COARSE_LOCATION
- // A failure should throw the SecurityException from ACCESS_COARSE_LOCATION since this
- // is the weaker precondition
- mApp.enforceCallingOrSelfPermission(
- android.Manifest.permission.ACCESS_COARSE_LOCATION, null);
+ public Bundle getCellLocation(String callingPackage) {
+ enforceFineOrCoarseLocationPermission("getCellLocation");
+
+ // OP_COARSE_LOCATION controls both fine and coarse location.
+ if (mAppOps.noteOp(AppOpsManager.OP_COARSE_LOCATION, Binder.getCallingUid(),
+ callingPackage) != AppOpsManager.MODE_ALLOWED) {
+ return null;
}
if (checkIfCallerIsSelfOrForegroundUser()) {
@@ -1210,6 +1234,20 @@
}
}
+ private void enforceFineOrCoarseLocationPermission(String message) {
+ try {
+ mApp.enforceCallingOrSelfPermission(
+ android.Manifest.permission.ACCESS_FINE_LOCATION, null);
+ } catch (SecurityException e) {
+ // If we have ACCESS_FINE_LOCATION permission, skip the check for ACCESS_COARSE_LOCATION
+ // A failure should throw the SecurityException from ACCESS_COARSE_LOCATION since this
+ // is the weaker precondition
+ mApp.enforceCallingOrSelfPermission(
+ android.Manifest.permission.ACCESS_COARSE_LOCATION, message);
+ }
+ }
+
+
@Override
public void enableLocationUpdates() {
enableLocationUpdatesForSubscriber(getDefaultSubscription());
@@ -1235,22 +1273,19 @@
@Override
@SuppressWarnings("unchecked")
public List<NeighboringCellInfo> getNeighboringCellInfo(String callingPackage) {
- try {
- mApp.enforceCallingOrSelfPermission(
- android.Manifest.permission.ACCESS_FINE_LOCATION, null);
- } catch (SecurityException e) {
- // If we have ACCESS_FINE_LOCATION permission, skip the check
- // for ACCESS_COARSE_LOCATION
- // A failure should throw the SecurityException from
- // ACCESS_COARSE_LOCATION since this is the weaker precondition
- mApp.enforceCallingOrSelfPermission(
- android.Manifest.permission.ACCESS_COARSE_LOCATION, null);
+ enforceFineOrCoarseLocationPermission("getNeighboringCellInfo");
+
+ // OP_COARSE_LOCATION controls both fine and coarse location.
+ if (mAppOps.noteOp(AppOpsManager.OP_COARSE_LOCATION, Binder.getCallingUid(),
+ callingPackage) != AppOpsManager.MODE_ALLOWED) {
+ return null;
}
if (mAppOps.noteOp(AppOpsManager.OP_NEIGHBORING_CELLS, Binder.getCallingUid(),
callingPackage) != AppOpsManager.MODE_ALLOWED) {
return null;
}
+
if (checkIfCallerIsSelfOrForegroundUser()) {
if (DBG_LOC) log("getNeighboringCellInfo: is active user");
@@ -1271,16 +1306,13 @@
@Override
- public List<CellInfo> getAllCellInfo() {
- try {
- mApp.enforceCallingOrSelfPermission(
- android.Manifest.permission.ACCESS_FINE_LOCATION, null);
- } catch (SecurityException e) {
- // If we have ACCESS_FINE_LOCATION permission, skip the check for ACCESS_COARSE_LOCATION
- // A failure should throw the SecurityException from ACCESS_COARSE_LOCATION since this
- // is the weaker precondition
- mApp.enforceCallingOrSelfPermission(
- android.Manifest.permission.ACCESS_COARSE_LOCATION, null);
+ public List<CellInfo> getAllCellInfo(String callingPackage) {
+ enforceFineOrCoarseLocationPermission("getAllCellInfo");
+
+ // OP_COARSE_LOCATION controls both fine and coarse location.
+ if (mAppOps.noteOp(AppOpsManager.OP_COARSE_LOCATION, Binder.getCallingUid(),
+ callingPackage) != AppOpsManager.MODE_ALLOWED) {
+ return null;
}
if (checkIfCallerIsSelfOrForegroundUser()) {
@@ -1338,15 +1370,6 @@
}
/**
- * Make sure the caller has the READ_PHONE_STATE permission.
- *
- * @throws SecurityException if the caller does not have the required permission
- */
- private void enforceReadPermission() {
- mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PHONE_STATE, null);
- }
-
- /**
* Make sure the caller has the MODIFY_PHONE_STATE permission.
*
* @throws SecurityException if the caller does not have the required permission
@@ -1405,6 +1428,12 @@
null);
}
+ private void enforceConnectivityInternalPermission() {
+ mApp.enforceCallingOrSelfPermission(
+ android.Manifest.permission.CONNECTIVITY_INTERNAL,
+ "ConnectivityService");
+ }
+
private String createTelUrl(String number) {
if (TextUtils.isEmpty(number)) {
return null;
@@ -1848,8 +1877,12 @@
return 0;
}
- public String[] getPcscfAddress(String apnType) {
- enforceReadPermission();
+ public String[] getPcscfAddress(String apnType, String callingPackage) {
+ if (!canReadPhoneState(callingPackage, "getPcscfAddress")) {
+ return new String[0];
+ }
+
+
return mPhone.getPcscfAddress(apnType);
}
@@ -1859,14 +1892,28 @@
}
/**
+ * Set the network selection mode to automatic.
+ *
+ */
+ @Override
+ public void setNetworkSelectionModeAutomatic(int subId) {
+ enforceModifyPermissionOrCarrierPrivilege();
+ if (DBG) log("setNetworkSelectionModeAutomatic: subId " + subId);
+ sendRequest(CMD_SET_NETWORK_SELECTION_MODE_AUTOMATIC, null, subId);
+ }
+
+ /**
* Get the calculated preferred network type.
* Used for debugging incorrect network type.
*
* @return the preferred network type, defined in RILConstants.java.
*/
@Override
- public int getCalculatedPreferredNetworkType() {
- enforceReadPermission();
+ public int getCalculatedPreferredNetworkType(String callingPackage) {
+ if (!canReadPhoneState(callingPackage, "getCalculatedPreferredNetworkType")) {
+ return RILConstants.PREFERRED_NETWORK_MODE;
+ }
+
return PhoneFactory.calculatePreferredNetworkType(mPhone.getContext(), 0); // wink FIXME: need to get SubId from somewhere.
}
@@ -1877,10 +1924,10 @@
* @return the preferred network type, defined in RILConstants.java.
*/
@Override
- public int getPreferredNetworkType() {
+ public int getPreferredNetworkType(int subId) {
enforceModifyPermissionOrCarrierPrivilege();
if (DBG) log("getPreferredNetworkType");
- int[] result = (int[]) sendRequest(CMD_GET_PREFERRED_NETWORK_TYPE, null);
+ int[] result = (int[]) sendRequest(CMD_GET_PREFERRED_NETWORK_TYPE, null, subId);
int networkType = (result != null ? result[0] : -1);
if (DBG) log("getPreferredNetworkType: " + networkType);
return networkType;
@@ -1894,15 +1941,14 @@
* @return true on success; false on any failure.
*/
@Override
- public boolean setPreferredNetworkType(int networkType) {
+ public boolean setPreferredNetworkType(int subId, int networkType) {
enforceModifyPermissionOrCarrierPrivilege();
- final int phoneSubId = mPhone.getSubId();
- if (DBG) log("setPreferredNetworkType: type " + networkType);
- Boolean success = (Boolean) sendRequest(CMD_SET_PREFERRED_NETWORK_TYPE, networkType);
+ if (DBG) log("setPreferredNetworkType: subId " + subId + " type " + networkType);
+ Boolean success = (Boolean) sendRequest(CMD_SET_PREFERRED_NETWORK_TYPE, networkType, subId);
if (DBG) log("setPreferredNetworkType: " + (success ? "ok" : "fail"));
if (success) {
Settings.Global.putInt(mPhone.getContext().getContentResolver(),
- Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, networkType);
+ Settings.Global.PREFERRED_NETWORK_MODE + subId, networkType);
}
return success;
}
@@ -2001,14 +2047,18 @@
}
@Override
- public List<String> getCarrierPackageNamesForIntent(Intent intent) {
- UiccCard card = UiccController.getInstance().getUiccCard(mPhone.getPhoneId());
+ public List<String> getCarrierPackageNamesForIntentAndPhone(Intent intent, int phoneId) {
+ if (!SubscriptionManager.isValidPhoneId(phoneId)) {
+ loge("phoneId " + phoneId + " is not valid.");
+ return null;
+ }
+ UiccCard card = UiccController.getInstance().getUiccCard(phoneId);
if (card == null) {
loge("getCarrierPackageNamesForIntent: No UICC");
return null ;
}
return card.getCarrierPackageNamesForIntent(
- mPhone.getContext().getPackageManager(), intent);
+ mPhone.getContext().getPackageManager(), intent);
}
private String getIccId(int subId) {
@@ -2068,8 +2118,10 @@
}
@Override
- public String getLine1NumberForDisplay(int subId) {
- enforceReadPermission();
+ public String getLine1NumberForDisplay(int subId, String callingPackage) {
+ if (!canReadPhoneState(callingPackage, "getLine1NumberForDisplay")) {
+ return null;
+ }
String iccId = getIccId(subId);
if (iccId != null) {
@@ -2080,8 +2132,10 @@
}
@Override
- public String getLine1AlphaTagForDisplay(int subId) {
- enforceReadPermission();
+ public String getLine1AlphaTagForDisplay(int subId, String callingPackage) {
+ if (!canReadPhoneState(callingPackage, "getLine1AlphaTagForDisplay")) {
+ return null;
+ }
String iccId = getIccId(subId);
if (iccId != null) {
@@ -2224,8 +2278,11 @@
}
@Override
- public boolean isVideoCallingEnabled() {
- enforceReadPermission();
+ public boolean isVideoCallingEnabled(String callingPackage) {
+ if (!canReadPhoneState(callingPackage, "isVideoCallingEnabled")) {
+ return false;
+ }
+
// Check the user preference and the system-level IMS setting. Even if the user has
// enabled video calling, if IMS is disabled we aren't able to support video calling.
// In the long run, we may instead need to check if there exists a connection service
@@ -2235,6 +2292,29 @@
&& mTelephonySharedPreferences.getBoolean(PREF_ENABLE_VIDEO_CALLING, true);
}
+ @Override
+ public boolean canChangeDtmfToneLength() {
+ return mPhone.getContext().getResources().getBoolean(R.bool.dtmf_type_enabled);
+ }
+
+ @Override
+ public boolean isWorldPhone() {
+ return mPhone.getContext().getResources().getBoolean(R.bool.world_phone);
+ }
+
+ @Override
+ public boolean isTtyModeSupported() {
+ TelecomManager telecomManager = TelecomManager.from(mPhone.getContext());
+ TelephonyManager telephonyManager =
+ (TelephonyManager) mPhone.getContext().getSystemService(Context.TELEPHONY_SERVICE);
+ return !telephonyManager.isMultiSimEnabled() && telecomManager.isTtySupported();
+ }
+
+ @Override
+ public boolean isHearingAidCompatibilitySupported() {
+ return mPhone.getContext().getResources().getBoolean(R.bool.hac_enabled);
+ }
+
/**
* Returns the unique device ID of phone, for example, the IMEI for
* GSM and the MEID for CDMA phones. Return null if device ID is not available.
@@ -2243,8 +2323,11 @@
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
*/
@Override
- public String getDeviceId() {
- enforceReadPermission();
+ public String getDeviceId(String callingPackage) {
+ if (!canReadPhoneState(callingPackage, "getDeviceId")) {
+ return null;
+ }
+
final Phone phone = PhoneFactory.getPhone(0);
if (phone != null) {
return phone.getDeviceId();
@@ -2282,4 +2365,31 @@
public boolean isVolteEnabled() {
return mPhone.isVolteEnabled();
}
+
+ private boolean canReadPhoneState(String callingPackage, String message) {
+ mApp.enforceCallingOrSelfPermission(
+ android.Manifest.permission.READ_PHONE_STATE, message);
+
+ if (mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(),
+ callingPackage) != AppOpsManager.MODE_ALLOWED) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public void factoryReset(int subId) {
+ enforceConnectivityInternalPermission();
+ if (SubscriptionManager.isUsableSubIdValue(subId)) {
+ // Enable data
+ setDataEnabled(subId, true);
+ // Set network selection mode to automatic
+ setNetworkSelectionModeAutomatic(subId);
+ // Set preferred mobile network type to the best available
+ setPreferredNetworkType(subId, Phone.PREFERRED_NT_MODE);
+ // Turn off roaming
+ SubscriptionManager.from(mApp).setDataRoaming(0, subId);
+ }
+ }
}
diff --git a/src/com/android/phone/PhoneUtils.java b/src/com/android/phone/PhoneUtils.java
index f7c5939..b9135c8 100644
--- a/src/com/android/phone/PhoneUtils.java
+++ b/src/com/android/phone/PhoneUtils.java
@@ -36,6 +36,7 @@
import android.telecom.PhoneAccountHandle;
import android.telecom.VideoProfile;
import android.telephony.PhoneNumberUtils;
+import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.text.TextUtils;
import android.util.Log;
@@ -981,7 +982,7 @@
.create();
sUssdDialog.getWindow().setType(
- WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
+ WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
sUssdDialog.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
@@ -2449,6 +2450,10 @@
== Configuration.ORIENTATION_LANDSCAPE;
}
+ public static PhoneAccountHandle makePstnPhoneAccountHandle(String id) {
+ return makePstnPhoneAccountHandleWithPrefix(id, "", false);
+ }
+
public static PhoneAccountHandle makePstnPhoneAccountHandle(int phoneId) {
return makePstnPhoneAccountHandle(PhoneFactory.getPhone(phoneId));
}
@@ -2459,10 +2464,15 @@
public static PhoneAccountHandle makePstnPhoneAccountHandleWithPrefix(
Phone phone, String prefix, boolean isEmergency) {
- ComponentName pstnConnectionServiceName = getPstnConnectionServiceName();
// TODO: Should use some sort of special hidden flag to decorate this account as
// an emergency-only account
String id = isEmergency ? "E" : prefix + String.valueOf(phone.getIccSerialNumber());
+ return makePstnPhoneAccountHandleWithPrefix(id, prefix, isEmergency);
+ }
+
+ public static PhoneAccountHandle makePstnPhoneAccountHandleWithPrefix(
+ String id, String prefix, boolean isEmergency) {
+ ComponentName pstnConnectionServiceName = getPstnConnectionServiceName();
return new PhoneAccountHandle(pstnConnectionServiceName, id);
}
@@ -2484,6 +2494,19 @@
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
}
+ /**
+ * Determine if a given phone account corresponds to an active SIM
+ *
+ * @param sm An instance of the subscription manager so it is not recreated for each calling of
+ * this method.
+ * @param handle The handle for the phone account to check
+ * @return {@code true} If there is an active SIM for this phone account,
+ * {@code false} otherwise.
+ */
+ public static boolean isPhoneAccountActive(SubscriptionManager sm, PhoneAccountHandle handle) {
+ return sm.getActiveSubscriptionInfoForIccIndex(handle.getId()) != null;
+ }
+
private static ComponentName getPstnConnectionServiceName() {
return new ComponentName(PhoneGlobals.getInstance(), TelephonyConnectionService.class);
}
@@ -2497,7 +2520,6 @@
}
}
}
-
return null;
}
diff --git a/src/com/android/phone/common/mail/Address.java b/src/com/android/phone/common/mail/Address.java
new file mode 100644
index 0000000..5928b63
--- /dev/null
+++ b/src/com/android/phone/common/mail/Address.java
@@ -0,0 +1,544 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.Html;
+import android.text.TextUtils;
+import android.text.util.Rfc822Token;
+import android.text.util.Rfc822Tokenizer;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.phone.common.mail.utils.LogUtils;
+
+import org.apache.james.mime4j.codec.EncoderUtil;
+import org.apache.james.mime4j.decoder.DecoderUtil;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+/**
+ * This class represent email address.
+ *
+ * RFC822 email address may have following format.
+ * "name" <address> (comment)
+ * "name" <address>
+ * name <address>
+ * address
+ * Name and comment part should be MIME/base64 encoded in header if necessary.
+ *
+ */
+public class Address implements Parcelable {
+ public static final String ADDRESS_DELIMETER = ",";
+ /**
+ * Address part, in the form local_part@domain_part. No surrounding angle brackets.
+ */
+ private String mAddress;
+
+ /**
+ * Name part. No surrounding double quote, and no MIME/base64 encoding.
+ * This must be null if Address has no name part.
+ */
+ private String mPersonal;
+
+ /**
+ * When personal is set, it will return the first token of the personal
+ * string. Otherwise, it will return the e-mail address up to the '@' sign.
+ */
+ private String mSimplifiedName;
+
+ // Regex that matches address surrounded by '<>' optionally. '^<?([^>]+)>?$'
+ private static final Pattern REMOVE_OPTIONAL_BRACKET = Pattern.compile("^<?([^>]+)>?$");
+ // Regex that matches personal name surrounded by '""' optionally. '^"?([^"]+)"?$'
+ private static final Pattern REMOVE_OPTIONAL_DQUOTE = Pattern.compile("^\"?([^\"]*)\"?$");
+ // Regex that matches escaped character '\\([\\"])'
+ private static final Pattern UNQUOTE = Pattern.compile("\\\\([\\\\\"])");
+
+ // TODO: LOCAL_PART and DOMAIN_PART_PART are too permissive and can be improved.
+ // TODO: Fix this to better constrain comments.
+ /** Regex for the local part of an email address. */
+ private static final String LOCAL_PART = "[^@]+";
+ /** Regex for each part of the domain part, i.e. the thing between the dots. */
+ private static final String DOMAIN_PART_PART = "[[\\w][\\d]\\-\\(\\)\\[\\]]+";
+ /** Regex for the domain part, which is two or more {@link #DOMAIN_PART_PART} separated by . */
+ private static final String DOMAIN_PART =
+ "(" + DOMAIN_PART_PART + "\\.)+" + DOMAIN_PART_PART;
+
+ /** Pattern to check if an email address is valid. */
+ private static final Pattern EMAIL_ADDRESS =
+ Pattern.compile("\\A" + LOCAL_PART + "@" + DOMAIN_PART + "\\z");
+
+ private static final Address[] EMPTY_ADDRESS_ARRAY = new Address[0];
+
+ // delimiters are chars that do not appear in an email address, used by fromHeader
+ private static final char LIST_DELIMITER_EMAIL = '\1';
+ private static final char LIST_DELIMITER_PERSONAL = '\2';
+
+ private static final String LOG_TAG = "Email Address";
+
+ @VisibleForTesting
+ public Address(String address) {
+ setAddress(address);
+ }
+
+ public Address(String address, String personal) {
+ setPersonal(personal);
+ setAddress(address);
+ }
+
+ /**
+ * Returns a simplified string for this e-mail address.
+ * When a name is known, it will return the first token of that name. Otherwise, it will
+ * return the e-mail address up to the '@' sign.
+ */
+ public String getSimplifiedName() {
+ if (mSimplifiedName == null) {
+ if (TextUtils.isEmpty(mPersonal) && !TextUtils.isEmpty(mAddress)) {
+ int atSign = mAddress.indexOf('@');
+ mSimplifiedName = (atSign != -1) ? mAddress.substring(0, atSign) : "";
+ } else if (!TextUtils.isEmpty(mPersonal)) {
+
+ // TODO: use Contacts' NameSplitter for more reliable first-name extraction
+
+ int end = mPersonal.indexOf(' ');
+ while (end > 0 && mPersonal.charAt(end - 1) == ',') {
+ end--;
+ }
+ mSimplifiedName = (end < 1) ? mPersonal : mPersonal.substring(0, end);
+
+ } else {
+ LogUtils.w(LOG_TAG, "Unable to get a simplified name");
+ mSimplifiedName = "";
+ }
+ }
+ return mSimplifiedName;
+ }
+
+ public static synchronized Address getEmailAddress(String rawAddress) {
+ if (TextUtils.isEmpty(rawAddress)) {
+ return null;
+ }
+ String name, address;
+ final Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(rawAddress);
+ if (tokens.length > 0) {
+ final String tokenizedName = tokens[0].getName();
+ name = tokenizedName != null ? Html.fromHtml(tokenizedName.trim()).toString()
+ : "";
+ address = Html.fromHtml(tokens[0].getAddress()).toString();
+ } else {
+ name = "";
+ address = rawAddress == null ?
+ "" : Html.fromHtml(rawAddress).toString();
+ }
+ return new Address(address, name);
+ }
+
+ public String getAddress() {
+ return mAddress;
+ }
+
+ public void setAddress(String address) {
+ mAddress = REMOVE_OPTIONAL_BRACKET.matcher(address).replaceAll("$1");
+ }
+
+ /**
+ * Get name part as UTF-16 string. No surrounding double quote, and no MIME/base64 encoding.
+ *
+ * @return Name part of email address. Returns null if it is omitted.
+ */
+ public String getPersonal() {
+ return mPersonal;
+ }
+
+ /**
+ * Set personal part from UTF-16 string. Optional surrounding double quote will be removed.
+ * It will be also unquoted and MIME/base64 decoded.
+ *
+ * @param personal name part of email address as UTF-16 string. Null is acceptable.
+ */
+ public void setPersonal(String personal) {
+ mPersonal = decodeAddressPersonal(personal);
+ }
+
+ /**
+ * Decodes name from UTF-16 string. Optional surrounding double quote will be removed.
+ * It will be also unquoted and MIME/base64 decoded.
+ *
+ * @param personal name part of email address as UTF-16 string. Null is acceptable.
+ */
+ public static String decodeAddressPersonal(String personal) {
+ if (personal != null) {
+ personal = REMOVE_OPTIONAL_DQUOTE.matcher(personal).replaceAll("$1");
+ personal = UNQUOTE.matcher(personal).replaceAll("$1");
+ personal = DecoderUtil.decodeEncodedWords(personal);
+ if (personal.length() == 0) {
+ personal = null;
+ }
+ }
+ return personal;
+ }
+
+ /**
+ * This method is used to check that all the addresses that the user
+ * entered in a list (e.g. To:) are valid, so that none is dropped.
+ */
+ @VisibleForTesting
+ public static boolean isAllValid(String addressList) {
+ // This code mimics the parse() method below.
+ // I don't know how to better avoid the code-duplication.
+ if (addressList != null && addressList.length() > 0) {
+ Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(addressList);
+ for (int i = 0, length = tokens.length; i < length; ++i) {
+ Rfc822Token token = tokens[i];
+ String address = token.getAddress();
+ if (!TextUtils.isEmpty(address) && !isValidAddress(address)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Parse a comma-delimited list of addresses in RFC822 format and return an
+ * array of Address objects.
+ *
+ * @param addressList Address list in comma-delimited string.
+ * @return An array of 0 or more Addresses.
+ */
+ public static Address[] parse(String addressList) {
+ if (addressList == null || addressList.length() == 0) {
+ return EMPTY_ADDRESS_ARRAY;
+ }
+ Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(addressList);
+ ArrayList<Address> addresses = new ArrayList<Address>();
+ for (int i = 0, length = tokens.length; i < length; ++i) {
+ Rfc822Token token = tokens[i];
+ String address = token.getAddress();
+ if (!TextUtils.isEmpty(address)) {
+ if (isValidAddress(address)) {
+ String name = token.getName();
+ if (TextUtils.isEmpty(name)) {
+ name = null;
+ }
+ addresses.add(new Address(address, name));
+ }
+ }
+ }
+ return addresses.toArray(new Address[addresses.size()]);
+ }
+
+ /**
+ * Checks whether a string email address is valid.
+ * E.g. name@domain.com is valid.
+ */
+ @VisibleForTesting
+ static boolean isValidAddress(final String address) {
+ return EMAIL_ADDRESS.matcher(address).find();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof Address) {
+ // It seems that the spec says that the "user" part is case-sensitive,
+ // while the domain part in case-insesitive.
+ // So foo@yahoo.com and Foo@yahoo.com are different.
+ // This may seem non-intuitive from the user POV, so we
+ // may re-consider it if it creates UI trouble.
+ // A problem case is "replyAll" sending to both
+ // a@b.c and to A@b.c, which turn out to be the same on the server.
+ // Leave unchanged for now (i.e. case-sensitive).
+ return getAddress().equals(((Address) o).getAddress());
+ }
+ return super.equals(o);
+ }
+
+ @Override
+ public int hashCode() {
+ return getAddress().hashCode();
+ }
+
+ /**
+ * Get human readable address string.
+ * Do not use this for email header.
+ *
+ * @return Human readable address string. Not quoted and not encoded.
+ */
+ @Override
+ public String toString() {
+ if (mPersonal != null && !mPersonal.equals(mAddress)) {
+ if (mPersonal.matches(".*[\\(\\)<>@,;:\\\\\".\\[\\]].*")) {
+ return ensureQuotedString(mPersonal) + " <" + mAddress + ">";
+ } else {
+ return mPersonal + " <" + mAddress + ">";
+ }
+ } else {
+ return mAddress;
+ }
+ }
+
+ /**
+ * Ensures that the given string starts and ends with the double quote character. The string is
+ * not modified in any way except to add the double quote character to start and end if it's not
+ * already there.
+ *
+ * sample -> "sample"
+ * "sample" -> "sample"
+ * ""sample"" -> "sample"
+ * "sample"" -> "sample"
+ * sa"mp"le -> "sa"mp"le"
+ * "sa"mp"le" -> "sa"mp"le"
+ * (empty string) -> ""
+ * " -> ""
+ */
+ private static String ensureQuotedString(String s) {
+ if (s == null) {
+ return null;
+ }
+ if (!s.matches("^\".*\"$")) {
+ return "\"" + s + "\"";
+ } else {
+ return s;
+ }
+ }
+
+ /**
+ * Get human readable comma-delimited address string.
+ *
+ * @param addresses Address array
+ * @return Human readable comma-delimited address string.
+ */
+ @VisibleForTesting
+ public static String toString(Address[] addresses) {
+ return toString(addresses, ADDRESS_DELIMETER);
+ }
+
+ /**
+ * Get human readable address strings joined with the specified separator.
+ *
+ * @param addresses Address array
+ * @param separator Separator
+ * @return Human readable comma-delimited address string.
+ */
+ public static String toString(Address[] addresses, String separator) {
+ if (addresses == null || addresses.length == 0) {
+ return null;
+ }
+ if (addresses.length == 1) {
+ return addresses[0].toString();
+ }
+ StringBuilder sb = new StringBuilder(addresses[0].toString());
+ for (int i = 1; i < addresses.length; i++) {
+ sb.append(separator);
+ // TODO: investigate why this .trim() is needed.
+ sb.append(addresses[i].toString().trim());
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Get RFC822/MIME compatible address string.
+ *
+ * @return RFC822/MIME compatible address string.
+ * It may be surrounded by double quote or quoted and MIME/base64 encoded if necessary.
+ */
+ public String toHeader() {
+ if (mPersonal != null) {
+ return EncoderUtil.encodeAddressDisplayName(mPersonal) + " <" + mAddress + ">";
+ } else {
+ return mAddress;
+ }
+ }
+
+ /**
+ * Get RFC822/MIME compatible comma-delimited address string.
+ *
+ * @param addresses Address array
+ * @return RFC822/MIME compatible comma-delimited address string.
+ * it may be surrounded by double quoted or quoted and MIME/base64 encoded if necessary.
+ */
+ public static String toHeader(Address[] addresses) {
+ if (addresses == null || addresses.length == 0) {
+ return null;
+ }
+ if (addresses.length == 1) {
+ return addresses[0].toHeader();
+ }
+ StringBuilder sb = new StringBuilder(addresses[0].toHeader());
+ for (int i = 1; i < addresses.length; i++) {
+ // We need space character to be able to fold line.
+ sb.append(", ");
+ sb.append(addresses[i].toHeader());
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Get Human friendly address string.
+ *
+ * @return the personal part of this Address, or the address part if the
+ * personal part is not available
+ */
+ @VisibleForTesting
+ public String toFriendly() {
+ if (mPersonal != null && mPersonal.length() > 0) {
+ return mPersonal;
+ } else {
+ return mAddress;
+ }
+ }
+
+ /**
+ * Creates a comma-delimited list of addresses in the "friendly" format (see toFriendly() for
+ * details on the per-address conversion).
+ *
+ * @param addresses Array of Address[] values
+ * @return A comma-delimited string listing all of the addresses supplied. Null if source
+ * was null or empty.
+ */
+ @VisibleForTesting
+ public static String toFriendly(Address[] addresses) {
+ if (addresses == null || addresses.length == 0) {
+ return null;
+ }
+ if (addresses.length == 1) {
+ return addresses[0].toFriendly();
+ }
+ StringBuilder sb = new StringBuilder(addresses[0].toFriendly());
+ for (int i = 1; i < addresses.length; i++) {
+ sb.append(", ");
+ sb.append(addresses[i].toFriendly());
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Returns exactly the same result as Address.toString(Address.fromHeader(addressList)).
+ */
+ @VisibleForTesting
+ public static String fromHeaderToString(String addressList) {
+ return toString(fromHeader(addressList));
+ }
+
+ /**
+ * Returns exactly the same result as Address.toHeader(Address.parse(addressList)).
+ */
+ @VisibleForTesting
+ public static String parseToHeader(String addressList) {
+ return Address.toHeader(Address.parse(addressList));
+ }
+
+ /**
+ * Returns null if the addressList has 0 addresses, otherwise returns the first address.
+ * The same as Address.fromHeader(addressList)[0] for non-empty list.
+ * This is an utility method that offers some performance optimization opportunities.
+ */
+ @VisibleForTesting
+ public static Address firstAddress(String addressList) {
+ Address[] array = fromHeader(addressList);
+ return array.length > 0 ? array[0] : null;
+ }
+
+ /**
+ * This method exists to convert an address list formatted in a deprecated legacy format to the
+ * standard RFC822 header format. {@link #fromHeader(String)} is capable of reading the legacy
+ * format and the RFC822 format. {@link #toHeader()} always produces the RFC822 format.
+ *
+ * This implementation is brute-force, and could be replaced with a more efficient version
+ * if desired.
+ */
+ public static String reformatToHeader(String addressList) {
+ return toHeader(fromHeader(addressList));
+ }
+
+ /**
+ * @param addressList a CSV of RFC822 addresses or the deprecated legacy string format
+ * @return array of addresses parsed from <code>addressList</code>
+ */
+ @VisibleForTesting
+ public static Address[] fromHeader(String addressList) {
+ if (addressList == null || addressList.length() == 0) {
+ return EMPTY_ADDRESS_ARRAY;
+ }
+ // IF we're CSV, just parse
+ if ((addressList.indexOf(LIST_DELIMITER_PERSONAL) == -1) &&
+ (addressList.indexOf(LIST_DELIMITER_EMAIL) == -1)) {
+ return Address.parse(addressList);
+ }
+ // Otherwise, do backward-compatible unpack
+ ArrayList<Address> addresses = new ArrayList<Address>();
+ int length = addressList.length();
+ int pairStartIndex = 0;
+ int pairEndIndex;
+
+ /* addressEndIndex is only re-scanned (indexOf()) when a LIST_DELIMITER_PERSONAL
+ is used, not for every email address; i.e. not for every iteration of the while().
+ This reduces the theoretical complexity from quadratic to linear,
+ and provides some speed-up in practice by removing redundant scans of the string.
+ */
+ int addressEndIndex = addressList.indexOf(LIST_DELIMITER_PERSONAL);
+
+ while (pairStartIndex < length) {
+ pairEndIndex = addressList.indexOf(LIST_DELIMITER_EMAIL, pairStartIndex);
+ if (pairEndIndex == -1) {
+ pairEndIndex = length;
+ }
+ Address address;
+ if (addressEndIndex == -1 || pairEndIndex <= addressEndIndex) {
+ // in this case the DELIMITER_PERSONAL is in a future pair,
+ // so don't use personal, and don't update addressEndIndex
+ address = new Address(addressList.substring(pairStartIndex, pairEndIndex), null);
+ } else {
+ address = new Address(addressList.substring(pairStartIndex, addressEndIndex),
+ addressList.substring(addressEndIndex + 1, pairEndIndex));
+ // only update addressEndIndex when we use the LIST_DELIMITER_PERSONAL
+ addressEndIndex = addressList.indexOf(LIST_DELIMITER_PERSONAL, pairEndIndex + 1);
+ }
+ addresses.add(address);
+ pairStartIndex = pairEndIndex + 1;
+ }
+ return addresses.toArray(new Address[addresses.size()]);
+ }
+
+ public static final Creator<Address> CREATOR = new Creator<Address>() {
+ @Override
+ public Address createFromParcel(Parcel parcel) {
+ return new Address(parcel);
+ }
+
+ @Override
+ public Address[] newArray(int size) {
+ return new Address[size];
+ }
+ };
+
+ public Address(Parcel in) {
+ setPersonal(in.readString());
+ setAddress(in.readString());
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeString(mPersonal);
+ out.writeString(mAddress);
+ }
+}
diff --git a/src/com/android/phone/common/mail/AuthenticationFailedException.java b/src/com/android/phone/common/mail/AuthenticationFailedException.java
new file mode 100644
index 0000000..f13ab45
--- /dev/null
+++ b/src/com/android/phone/common/mail/AuthenticationFailedException.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+public class AuthenticationFailedException extends MessagingException {
+ public static final long serialVersionUID = -1;
+
+ public AuthenticationFailedException(String message) {
+ super(MessagingException.AUTHENTICATION_FAILED, message);
+ }
+
+ public AuthenticationFailedException(int exceptionType, String message) {
+ super(exceptionType, message);
+ }
+
+ public AuthenticationFailedException(String message, Throwable throwable) {
+ super(MessagingException.AUTHENTICATION_FAILED, message, throwable);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/Base64Body.java b/src/com/android/phone/common/mail/Base64Body.java
new file mode 100644
index 0000000..757b4b7
--- /dev/null
+++ b/src/com/android/phone/common/mail/Base64Body.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import android.util.Base64;
+import android.util.Base64OutputStream;
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class Base64Body implements Body {
+ private final InputStream mSource;
+ // Because we consume the input stream, we can only write out once
+ private boolean mAlreadyWritten;
+
+ public Base64Body(InputStream source) {
+ mSource = source;
+ }
+
+ @Override
+ public InputStream getInputStream() throws MessagingException {
+ return mSource;
+ }
+
+ /**
+ * This method consumes the input stream, so can only be called once
+ * @param out Stream to write to
+ * @throws IllegalStateException If called more than once
+ * @throws IOException
+ * @throws MessagingException
+ */
+ @Override
+ public void writeTo(OutputStream out)
+ throws IllegalStateException, IOException, MessagingException {
+ if (mAlreadyWritten) {
+ throw new IllegalStateException("Base64Body can only be written once");
+ }
+ mAlreadyWritten = true;
+ try {
+ final Base64OutputStream b64out = new Base64OutputStream(out, Base64.DEFAULT);
+ IOUtils.copyLarge(mSource, b64out);
+ } finally {
+ mSource.close();
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/Body.java b/src/com/android/phone/common/mail/Body.java
new file mode 100644
index 0000000..8625ef2
--- /dev/null
+++ b/src/com/android/phone/common/mail/Body.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public interface Body {
+ public InputStream getInputStream() throws MessagingException;
+ public void writeTo(OutputStream out) throws IOException, MessagingException;
+}
diff --git a/src/com/android/phone/common/mail/BodyPart.java b/src/com/android/phone/common/mail/BodyPart.java
new file mode 100644
index 0000000..78140c8
--- /dev/null
+++ b/src/com/android/phone/common/mail/BodyPart.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+public abstract class BodyPart implements Part {
+ protected Multipart mParent;
+
+ public Multipart getParent() {
+ return mParent;
+ }
+}
diff --git a/src/com/android/phone/common/mail/CertificateValidationException.java b/src/com/android/phone/common/mail/CertificateValidationException.java
new file mode 100644
index 0000000..d8ae9b4
--- /dev/null
+++ b/src/com/android/phone/common/mail/CertificateValidationException.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+public class CertificateValidationException extends MessagingException {
+ public static final long serialVersionUID = -1;
+
+ public CertificateValidationException(String message) {
+ super(MessagingException.CERTIFICATE_VALIDATION_ERROR, message);
+ }
+
+ public CertificateValidationException(String message, Throwable throwable) {
+ super(MessagingException.CERTIFICATE_VALIDATION_ERROR, message, throwable);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/FetchProfile.java b/src/com/android/phone/common/mail/FetchProfile.java
new file mode 100644
index 0000000..01c1fcf
--- /dev/null
+++ b/src/com/android/phone/common/mail/FetchProfile.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.util.ArrayList;
+
+/**
+ * <pre>
+ * A FetchProfile is a list of items that should be downloaded in bulk for a set of messages.
+ * FetchProfile can contain the following objects:
+ * FetchProfile.Item: Described below.
+ * Message: Indicates that the body of the entire message should be fetched.
+ * Synonymous with FetchProfile.Item.BODY.
+ * Part: Indicates that the given Part should be fetched. The provider
+ * is expected have previously created the given BodyPart and stored
+ * any information it needs to download the content.
+ * </pre>
+ */
+public class FetchProfile extends ArrayList<Fetchable> {
+ /**
+ * Default items available for pre-fetching. It should be expected that any
+ * item fetched by using these items could potentially include all of the
+ * previous items.
+ */
+ public enum Item implements Fetchable {
+ /**
+ * Download the flags of the message.
+ */
+ FLAGS,
+
+ /**
+ * Download the envelope of the message. This should include at minimum
+ * the size and the following headers: date, subject, from, content-type, to, cc
+ */
+ ENVELOPE,
+
+ /**
+ * Download the structure of the message. This maps directly to IMAP's BODYSTRUCTURE
+ * and may map to other providers.
+ * The provider should, if possible, fill in a properly formatted MIME structure in
+ * the message without actually downloading any message data. If the provider is not
+ * capable of this operation it should specifically set the body of the message to null
+ * so that upper levels can detect that a full body download is needed.
+ */
+ STRUCTURE,
+
+ /**
+ * A sane portion of the entire message, cut off at a provider determined limit.
+ * This should generaly be around 50kB.
+ */
+ BODY_SANE,
+
+ /**
+ * The entire message.
+ */
+ BODY,
+ }
+
+ /**
+ * @return the first {@link Part} in this collection, or null if it doesn't contain
+ * {@link Part}.
+ */
+ public Part getFirstPart() {
+ for (Fetchable o : this) {
+ if (o instanceof Part) {
+ return (Part) o;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/com/android/phone/common/mail/Fetchable.java b/src/com/android/phone/common/mail/Fetchable.java
new file mode 100644
index 0000000..829c672
--- /dev/null
+++ b/src/com/android/phone/common/mail/Fetchable.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+/**
+ * Interface for classes that can be added to {@link FetchProfile}.
+ * i.e. {@link Part} and its subclasses, and {@link FetchProfile.Item}.
+ */
+public interface Fetchable {
+}
diff --git a/src/com/android/phone/common/mail/FixedLengthInputStream.java b/src/com/android/phone/common/mail/FixedLengthInputStream.java
new file mode 100644
index 0000000..499feca
--- /dev/null
+++ b/src/com/android/phone/common/mail/FixedLengthInputStream.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * A filtering InputStream that stops allowing reads after the given length has been read. This
+ * is used to allow a client to read directly from an underlying protocol stream without reading
+ * past where the protocol handler intended the client to read.
+ */
+public class FixedLengthInputStream extends InputStream {
+ private final InputStream mIn;
+ private final int mLength;
+ private int mCount;
+
+ public FixedLengthInputStream(InputStream in, int length) {
+ this.mIn = in;
+ this.mLength = length;
+ }
+
+ @Override
+ public int available() throws IOException {
+ return mLength - mCount;
+ }
+
+ @Override
+ public int read() throws IOException {
+ if (mCount < mLength) {
+ mCount++;
+ return mIn.read();
+ } else {
+ return -1;
+ }
+ }
+
+ @Override
+ public int read(byte[] b, int offset, int length) throws IOException {
+ if (mCount < mLength) {
+ int d = mIn.read(b, offset, Math.min(mLength - mCount, length));
+ if (d == -1) {
+ return -1;
+ } else {
+ mCount += d;
+ return d;
+ }
+ } else {
+ return -1;
+ }
+ }
+
+ @Override
+ public int read(byte[] b) throws IOException {
+ return read(b, 0, b.length);
+ }
+
+ public int getLength() {
+ return mLength;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("FixedLengthInputStream(in=%s, length=%d)", mIn.toString(), mLength);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/Flag.java b/src/com/android/phone/common/mail/Flag.java
new file mode 100644
index 0000000..aa5d7e9
--- /dev/null
+++ b/src/com/android/phone/common/mail/Flag.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+/**
+ * Flags that can be applied to Messages.
+ */
+public class Flag {
+ // If adding new flags: ALL FLAGS MUST BE UPPER CASE.
+ public static final String DELETED = "deleted";
+ public static final String SEEN = "seen";
+ public static final String ANSWERED = "answered";
+ public static final String FLAGGED = "flagged";
+ public static final String DRAFT = "draft";
+ public static final String RECENT = "recent";
+}
diff --git a/src/com/android/phone/common/mail/MailTransport.java b/src/com/android/phone/common/mail/MailTransport.java
new file mode 100644
index 0000000..c66130c
--- /dev/null
+++ b/src/com/android/phone/common/mail/MailTransport.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import android.content.Context;
+
+import com.android.phone.common.mail.store.ImapStore;
+import com.android.phone.common.mail.utils.LogUtils;
+
+import java.net.SocketAddress;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLPeerUnverifiedException;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocket;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+
+/**
+ * Make connection and perform operations on mail server by reading and writing lines.
+ */
+public class MailTransport {
+ private static final String TAG = "MailTransport";
+
+ // TODO protected eventually
+ /*protected*/ public static final int SOCKET_CONNECT_TIMEOUT = 10000;
+ /*protected*/ public static final int SOCKET_READ_TIMEOUT = 60000;
+
+ private static final HostnameVerifier HOSTNAME_VERIFIER =
+ HttpsURLConnection.getDefaultHostnameVerifier();
+
+ private Context mContext;
+ private String mHost;
+ private int mPort;
+ private Socket mSocket;
+ private BufferedInputStream mIn;
+ private BufferedOutputStream mOut;
+ private int mFlags;
+
+ public MailTransport(Context context, String address, int port, int flags) {
+ mContext = context;
+ mHost = address;
+ mPort = port;
+ mFlags = flags;
+ }
+
+ /**
+ * Returns a new transport, using the current transport as a model. The new transport is
+ * configured identically, but not opened or connected in any way.
+ */
+ @Override
+ public MailTransport clone() {
+ return new MailTransport(mContext, mHost, mPort, mFlags);
+ }
+
+ public boolean canTrySslSecurity() {
+ return (mFlags & ImapStore.FLAG_SSL) != 0;
+ }
+
+ public boolean canTrustAllCertificates() {
+ return (mFlags & ImapStore.FLAG_TRUST_ALL) != 0;
+ }
+
+ /**
+ * Attempts to open a connection using the Uri supplied for connection parameters. Will attempt
+ * an SSL connection if indicated.
+ */
+ public void open() throws MessagingException, CertificateValidationException {
+ LogUtils.d(TAG, "*** IMAP open " + mHost + ":" + String.valueOf(mPort));
+
+ try {
+ SocketAddress socketAddress = new InetSocketAddress(mHost, mPort);
+ if (canTrySslSecurity()) {
+ mSocket = HttpsURLConnection.getDefaultSSLSocketFactory().createSocket();
+ } else {
+ mSocket = new Socket();
+ }
+ mSocket.connect(socketAddress, SOCKET_CONNECT_TIMEOUT);
+ // After the socket connects to an SSL server, confirm that the hostname is as expected
+ if (canTrySslSecurity() && !canTrustAllCertificates()) {
+ verifyHostname(mSocket, mHost);
+ }
+
+ mIn = new BufferedInputStream(mSocket.getInputStream(), 1024);
+ mOut = new BufferedOutputStream(mSocket.getOutputStream(), 512);
+ mSocket.setSoTimeout(SOCKET_READ_TIMEOUT);
+ } catch (SSLException e) {
+ LogUtils.d(TAG, e.toString());
+ throw new CertificateValidationException(e.getMessage(), e);
+ } catch (IOException ioe) {
+ LogUtils.d(TAG, ioe.toString());
+ throw new MessagingException(MessagingException.IOERROR, ioe.toString());
+ } catch (IllegalArgumentException iae) {
+ LogUtils.d(TAG, iae.toString());
+ throw new MessagingException(MessagingException.UNSPECIFIED_EXCEPTION, iae.toString());
+ }
+ }
+
+ /**
+ * Lightweight version of SSLCertificateSocketFactory.verifyHostname, which provides this
+ * service but is not in the public API.
+ *
+ * Verify the hostname of the certificate used by the other end of a
+ * connected socket. It is harmless to call this method redundantly if the hostname has already
+ * been verified.
+ *
+ * <p>Wildcard certificates are allowed to verify any matching hostname,
+ * so "foo.bar.example.com" is verified if the peer has a certificate
+ * for "*.example.com".
+ *
+ * @param socket An SSL socket which has been connected to a server
+ * @param hostname The expected hostname of the remote server
+ * @throws IOException if something goes wrong handshaking with the server
+ * @throws SSLPeerUnverifiedException if the server cannot prove its identity
+ */
+ private static void verifyHostname(Socket socket, String hostname) throws IOException {
+ // The code at the start of OpenSSLSocketImpl.startHandshake()
+ // ensures that the call is idempotent, so we can safely call it.
+ SSLSocket ssl = (SSLSocket) socket;
+ ssl.startHandshake();
+
+ SSLSession session = ssl.getSession();
+ if (session == null) {
+ throw new SSLException("Cannot verify SSL socket without session");
+ }
+ // TODO: Instead of reporting the name of the server we think we're connecting to,
+ // we should be reporting the bad name in the certificate. Unfortunately this is buried
+ // in the verifier code and is not available in the verifier API, and extracting the
+ // CN & alts is beyond the scope of this patch.
+ if (!HOSTNAME_VERIFIER.verify(hostname, session)) {
+ throw new SSLPeerUnverifiedException(
+ "Certificate hostname not useable for server: " + hostname);
+ }
+ }
+
+ public boolean isOpen() {
+ return (mIn != null && mOut != null &&
+ mSocket != null && mSocket.isConnected() && !mSocket.isClosed());
+ }
+
+ /**
+ * Close the connection. MUST NOT return any exceptions - must be "best effort" and safe.
+ */
+ public void close() {
+ try {
+ mIn.close();
+ } catch (Exception e) {
+ // May fail if the connection is already closed.
+ }
+ try {
+ mOut.close();
+ } catch (Exception e) {
+ // May fail if the connection is already closed.
+ }
+ try {
+ mSocket.close();
+ } catch (Exception e) {
+ // May fail if the connection is already closed.
+ }
+ mIn = null;
+ mOut = null;
+ mSocket = null;
+ }
+
+ public InputStream getInputStream() {
+ return mIn;
+ }
+
+ public OutputStream getOutputStream() {
+ return mOut;
+ }
+
+ /**
+ * Writes a single line to the server using \r\n termination.
+ */
+ public void writeLine(String s, String sensitiveReplacement) throws IOException {
+ if (sensitiveReplacement != null) {
+ LogUtils.d(TAG, ">>> " + sensitiveReplacement);
+ } else {
+ LogUtils.d(TAG, ">>> " + s);
+ }
+
+ OutputStream out = getOutputStream();
+ out.write(s.getBytes());
+ out.write('\r');
+ out.write('\n');
+ out.flush();
+ }
+
+ /**
+ * Reads a single line from the server, using either \r\n or \n as the delimiter. The
+ * delimiter char(s) are not included in the result.
+ */
+ public String readLine(boolean loggable) throws IOException {
+ StringBuffer sb = new StringBuffer();
+ InputStream in = getInputStream();
+ int d;
+ while ((d = in.read()) != -1) {
+ if (((char)d) == '\r') {
+ continue;
+ } else if (((char)d) == '\n') {
+ break;
+ } else {
+ sb.append((char)d);
+ }
+ }
+ if (d == -1) {
+ LogUtils.d(TAG, "End of stream reached while trying to read line.");
+ }
+ String ret = sb.toString();
+ if (loggable) {
+ LogUtils.d(TAG, "<<< " + ret);
+ }
+ return ret;
+ }
+}
diff --git a/src/com/android/phone/common/mail/MeetingInfo.java b/src/com/android/phone/common/mail/MeetingInfo.java
new file mode 100644
index 0000000..9fbafe7
--- /dev/null
+++ b/src/com/android/phone/common/mail/MeetingInfo.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+public class MeetingInfo {
+ // Predefined tags; others can be added
+ public static final String MEETING_DTSTAMP = "DTSTAMP";
+ public static final String MEETING_UID = "UID";
+ public static final String MEETING_ORGANIZER_EMAIL = "ORGMAIL";
+ public static final String MEETING_DTSTART = "DTSTART";
+ public static final String MEETING_DTEND = "DTEND";
+ public static final String MEETING_TITLE = "TITLE";
+ public static final String MEETING_LOCATION = "LOC";
+ public static final String MEETING_RESPONSE_REQUESTED = "RESPONSE";
+ public static final String MEETING_ALL_DAY = "ALLDAY";
+}
diff --git a/src/com/android/phone/common/mail/Message.java b/src/com/android/phone/common/mail/Message.java
new file mode 100644
index 0000000..0a5ed35
--- /dev/null
+++ b/src/com/android/phone/common/mail/Message.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.Date;
+import java.util.HashSet;
+
+public abstract class Message implements Part, Body {
+ public static final Message[] EMPTY_ARRAY = new Message[0];
+
+ public static final String RECIPIENT_TYPE_TO = "to";
+ public static final String RECIPIENT_TYPE_CC = "cc";
+ public static final String RECIPIENT_TYPE_BCC = "bcc";
+ public enum RecipientType {
+ TO, CC, BCC,
+ }
+
+ protected String mUid;
+
+ private HashSet<String> mFlags = null;
+
+ protected Date mInternalDate;
+
+ public String getUid() {
+ return mUid;
+ }
+
+ public void setUid(String uid) {
+ this.mUid = uid;
+ }
+
+ public abstract String getSubject() throws MessagingException;
+
+ public abstract void setSubject(String subject) throws MessagingException;
+
+ public Date getInternalDate() {
+ return mInternalDate;
+ }
+
+ public void setInternalDate(Date internalDate) {
+ this.mInternalDate = internalDate;
+ }
+
+ public abstract Date getReceivedDate() throws MessagingException;
+
+ public abstract Date getSentDate() throws MessagingException;
+
+ public abstract void setSentDate(Date sentDate) throws MessagingException;
+
+ public abstract Address[] getRecipients(String type) throws MessagingException;
+
+ public abstract void setRecipients(String type, Address[] addresses)
+ throws MessagingException;
+
+ public void setRecipient(String type, Address address) throws MessagingException {
+ setRecipients(type, new Address[] {
+ address
+ });
+ }
+
+ public abstract Address[] getFrom() throws MessagingException;
+
+ public abstract void setFrom(Address from) throws MessagingException;
+
+ public abstract Address[] getReplyTo() throws MessagingException;
+
+ public abstract void setReplyTo(Address[] from) throws MessagingException;
+
+ // Always use these instead of getHeader("Message-ID") or setHeader("Message-ID");
+ public abstract void setMessageId(String messageId) throws MessagingException;
+ public abstract String getMessageId() throws MessagingException;
+
+ @Override
+ public boolean isMimeType(String mimeType) throws MessagingException {
+ return getContentType().startsWith(mimeType);
+ }
+
+ private HashSet<String> getFlagSet() {
+ if (mFlags == null) {
+ mFlags = new HashSet<String>();
+ }
+ return mFlags;
+ }
+
+ /*
+ * TODO Refactor Flags at some point to be able to store user defined flags.
+ */
+ public String[] getFlags() {
+ return getFlagSet().toArray(new String[] {});
+ }
+
+ /**
+ * Set/clear a flag directly, without involving overrides of {@link #setFlag} in subclasses.
+ * Only used for testing.
+ */
+ @VisibleForTesting
+ private final void setFlagDirectlyForTest(String flag, boolean set) throws MessagingException {
+ if (set) {
+ getFlagSet().add(flag);
+ } else {
+ getFlagSet().remove(flag);
+ }
+ }
+
+ public void setFlag(String flag, boolean set) throws MessagingException {
+ setFlagDirectlyForTest(flag, set);
+ }
+
+ /**
+ * This method calls setFlag(String, boolean)
+ * @param flags
+ * @param set
+ */
+ public void setFlags(String[] flags, boolean set) throws MessagingException {
+ for (String flag : flags) {
+ setFlag(flag, set);
+ }
+ }
+
+ public boolean isSet(String flag) {
+ return getFlagSet().contains(flag);
+ }
+
+ public abstract void saveChanges() throws MessagingException;
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + ':' + mUid;
+ }
+}
diff --git a/src/com/android/phone/common/mail/MessageDateComparator.java b/src/com/android/phone/common/mail/MessageDateComparator.java
new file mode 100644
index 0000000..5d8baa7
--- /dev/null
+++ b/src/com/android/phone/common/mail/MessageDateComparator.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.util.Comparator;
+
+public class MessageDateComparator implements Comparator<Message> {
+ @Override
+ public int compare(Message o1, Message o2) {
+ try {
+ if (o1.getSentDate() == null) {
+ return 1;
+ } else if (o2.getSentDate() == null) {
+ return -1;
+ } else
+ return o2.getSentDate().compareTo(o1.getSentDate());
+ } catch (Exception e) {
+ return 0;
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/MessagingException.java b/src/com/android/phone/common/mail/MessagingException.java
new file mode 100644
index 0000000..e4c674a
--- /dev/null
+++ b/src/com/android/phone/common/mail/MessagingException.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+/**
+ * This exception is used for most types of failures that occur during server interactions.
+ *
+ * Data passed through this exception should be considered non-localized. Any strings should
+ * either be internal-only (for debugging) or server-generated.
+ *
+ * TO DO: Does it make sense to further collapse AuthenticationFailedException and
+ * CertificateValidationException and any others into this?
+ */
+public class MessagingException extends Exception {
+ public static final long serialVersionUID = -1;
+
+ public static final int NO_ERROR = -1;
+ /** Any exception that does not specify a specific issue */
+ public static final int UNSPECIFIED_EXCEPTION = 0;
+ /** Connection or IO errors */
+ public static final int IOERROR = 1;
+ /** The configuration requested TLS but the server did not support it. */
+ public static final int TLS_REQUIRED = 2;
+ /** Authentication is required but the server did not support it. */
+ public static final int AUTH_REQUIRED = 3;
+ /** General security failures */
+ public static final int GENERAL_SECURITY = 4;
+ /** Authentication failed */
+ public static final int AUTHENTICATION_FAILED = 5;
+ /** Attempt to create duplicate account */
+ public static final int DUPLICATE_ACCOUNT = 6;
+ /** Required security policies reported - advisory only */
+ public static final int SECURITY_POLICIES_REQUIRED = 7;
+ /** Required security policies not supported */
+ public static final int SECURITY_POLICIES_UNSUPPORTED = 8;
+ /** The protocol (or protocol version) isn't supported */
+ public static final int PROTOCOL_VERSION_UNSUPPORTED = 9;
+ /** The server's SSL certificate couldn't be validated */
+ public static final int CERTIFICATE_VALIDATION_ERROR = 10;
+ /** Authentication failed during autodiscover */
+ public static final int AUTODISCOVER_AUTHENTICATION_FAILED = 11;
+ /** Autodiscover completed with a result (non-error) */
+ public static final int AUTODISCOVER_AUTHENTICATION_RESULT = 12;
+ /** Ambiguous failure; server error or bad credentials */
+ public static final int AUTHENTICATION_FAILED_OR_SERVER_ERROR = 13;
+ /** The server refused access */
+ public static final int ACCESS_DENIED = 14;
+ /** The server refused access */
+ public static final int ATTACHMENT_NOT_FOUND = 15;
+ /** A client SSL certificate is required for connections to the server */
+ public static final int CLIENT_CERTIFICATE_REQUIRED = 16;
+ /** The client SSL certificate specified is invalid */
+ public static final int CLIENT_CERTIFICATE_ERROR = 17;
+ /** The server indicates it does not support OAuth authentication */
+ public static final int OAUTH_NOT_SUPPORTED = 18;
+ /** The server indicates it experienced an internal error */
+ public static final int SERVER_ERROR = 19;
+
+ protected int mExceptionType;
+ // Exception type-specific data
+ protected Object mExceptionData;
+
+ public MessagingException(String message, Throwable throwable) {
+ this(UNSPECIFIED_EXCEPTION, message, throwable);
+ }
+
+ public MessagingException(int exceptionType, String message, Throwable throwable) {
+ super(message, throwable);
+ mExceptionType = exceptionType;
+ mExceptionData = null;
+ }
+
+ /**
+ * Constructs a MessagingException with an exceptionType and a null message.
+ * @param exceptionType The exception type to set for this exception.
+ */
+ public MessagingException(int exceptionType) {
+ this(exceptionType, null, null);
+ }
+
+ /**
+ * Constructs a MessagingException with a message.
+ * @param message the message for this exception
+ */
+ public MessagingException(String message) {
+ this(UNSPECIFIED_EXCEPTION, message, null);
+ }
+
+ /**
+ * Constructs a MessagingException with an exceptionType and a message.
+ * @param exceptionType The exception type to set for this exception.
+ */
+ public MessagingException(int exceptionType, String message) {
+ this(exceptionType, message, null);
+ }
+
+ /**
+ * Constructs a MessagingException with an exceptionType, a message, and data
+ * @param exceptionType The exception type to set for this exception.
+ * @param message the message for the exception (or null)
+ * @param data exception-type specific data for the exception (or null)
+ */
+ public MessagingException(int exceptionType, String message, Object data) {
+ super(message);
+ mExceptionType = exceptionType;
+ mExceptionData = data;
+ }
+
+ /**
+ * Return the exception type. Will be OTHER_EXCEPTION if not explicitly set.
+ *
+ * @return Returns the exception type.
+ */
+ public int getExceptionType() {
+ return mExceptionType;
+ }
+ /**
+ * Return the exception data. Will be null if not explicitly set.
+ *
+ * @return Returns the exception data.
+ */
+ public Object getExceptionData() {
+ return mExceptionData;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/Multipart.java b/src/com/android/phone/common/mail/Multipart.java
new file mode 100644
index 0000000..77963c8
--- /dev/null
+++ b/src/com/android/phone/common/mail/Multipart.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.util.ArrayList;
+
+public abstract class Multipart implements Body {
+ protected Part mParent;
+
+ protected ArrayList<BodyPart> mParts = new ArrayList<BodyPart>();
+
+ protected String mContentType;
+
+ public void addBodyPart(BodyPart part) throws MessagingException {
+ mParts.add(part);
+ }
+
+ public void addBodyPart(BodyPart part, int index) throws MessagingException {
+ mParts.add(index, part);
+ }
+
+ public BodyPart getBodyPart(int index) throws MessagingException {
+ return mParts.get(index);
+ }
+
+ public String getContentType() throws MessagingException {
+ return mContentType;
+ }
+
+ public int getCount() throws MessagingException {
+ return mParts.size();
+ }
+
+ public boolean removeBodyPart(BodyPart part) throws MessagingException {
+ return mParts.remove(part);
+ }
+
+ public void removeBodyPart(int index) throws MessagingException {
+ mParts.remove(index);
+ }
+
+ public Part getParent() throws MessagingException {
+ return mParent;
+ }
+
+ public void setParent(Part parent) throws MessagingException {
+ this.mParent = parent;
+ }
+}
diff --git a/src/com/android/phone/common/mail/PackedString.java b/src/com/android/phone/common/mail/PackedString.java
new file mode 100644
index 0000000..6cbba9e
--- /dev/null
+++ b/src/com/android/phone/common/mail/PackedString.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A utility class for creating and modifying Strings that are tagged and packed together.
+ *
+ * Uses non-printable (control chars) for internal delimiters; Intended for regular displayable
+ * strings only, so please use base64 or other encoding if you need to hide any binary data here.
+ *
+ * Binary compatible with Address.pack() format, which should migrate to use this code.
+ */
+public class PackedString {
+
+ /**
+ * Packing format is:
+ * element : [ value ] or [ value TAG-DELIMITER tag ]
+ * packed-string : [ element ] [ ELEMENT-DELIMITER [ element ] ]*
+ */
+ private static final char DELIMITER_ELEMENT = '\1';
+ private static final char DELIMITER_TAG = '\2';
+
+ private String mString;
+ private HashMap<String, String> mExploded;
+ private static final HashMap<String, String> EMPTY_MAP = new HashMap<String, String>();
+
+ /**
+ * Create a packed string using an already-packed string (e.g. from database)
+ * @param string packed string
+ */
+ public PackedString(String string) {
+ mString = string;
+ mExploded = null;
+ }
+
+ /**
+ * Get the value referred to by a given tag. If the tag does not exist, return null.
+ * @param tag identifier of string of interest
+ * @return returns value, or null if no string is found
+ */
+ public String get(String tag) {
+ if (mExploded == null) {
+ mExploded = explode(mString);
+ }
+ return mExploded.get(tag);
+ }
+
+ /**
+ * Return a map of all of the values referred to by a given tag. This is a shallow
+ * copy, don't edit the values.
+ * @return a map of the values in the packed string
+ */
+ public Map<String, String> unpack() {
+ if (mExploded == null) {
+ mExploded = explode(mString);
+ }
+ return new HashMap<String,String>(mExploded);
+ }
+
+ /**
+ * Read out all values into a map.
+ */
+ private static HashMap<String, String> explode(String packed) {
+ if (packed == null || packed.length() == 0) {
+ return EMPTY_MAP;
+ }
+ HashMap<String, String> map = new HashMap<String, String>();
+
+ int length = packed.length();
+ int elementStartIndex = 0;
+ int elementEndIndex = 0;
+ int tagEndIndex = packed.indexOf(DELIMITER_TAG);
+
+ while (elementStartIndex < length) {
+ elementEndIndex = packed.indexOf(DELIMITER_ELEMENT, elementStartIndex);
+ if (elementEndIndex == -1) {
+ elementEndIndex = length;
+ }
+ String tag;
+ String value;
+ if (tagEndIndex == -1 || elementEndIndex <= tagEndIndex) {
+ // in this case the DELIMITER_PERSONAL is in a future pair (or not found)
+ // so synthesize a positional tag for the value, and don't update tagEndIndex
+ value = packed.substring(elementStartIndex, elementEndIndex);
+ tag = Integer.toString(map.size());
+ } else {
+ value = packed.substring(elementStartIndex, tagEndIndex);
+ tag = packed.substring(tagEndIndex + 1, elementEndIndex);
+ // scan forward for next tag, if any
+ tagEndIndex = packed.indexOf(DELIMITER_TAG, elementEndIndex + 1);
+ }
+ map.put(tag, value);
+ elementStartIndex = elementEndIndex + 1;
+ }
+
+ return map;
+ }
+
+ /**
+ * Builder class for creating PackedString values. Can also be used for editing existing
+ * PackedString representations.
+ */
+ static public class Builder {
+ HashMap<String, String> mMap;
+
+ /**
+ * Create a builder that's empty (for filling)
+ */
+ public Builder() {
+ mMap = new HashMap<String, String>();
+ }
+
+ /**
+ * Create a builder using the values of an existing PackedString (for editing).
+ */
+ public Builder(String packed) {
+ mMap = explode(packed);
+ }
+
+ /**
+ * Add a tagged value
+ * @param tag identifier of string of interest
+ * @param value the value to record in this position. null to delete entry.
+ */
+ public void put(String tag, String value) {
+ if (value == null) {
+ mMap.remove(tag);
+ } else {
+ mMap.put(tag, value);
+ }
+ }
+
+ /**
+ * Get the value referred to by a given tag. If the tag does not exist, return null.
+ * @param tag identifier of string of interest
+ * @return returns value, or null if no string is found
+ */
+ public String get(String tag) {
+ return mMap.get(tag);
+ }
+
+ /**
+ * Pack the values and return a single, encoded string
+ */
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ for (Map.Entry<String,String> entry : mMap.entrySet()) {
+ if (sb.length() > 0) {
+ sb.append(DELIMITER_ELEMENT);
+ }
+ sb.append(entry.getValue());
+ sb.append(DELIMITER_TAG);
+ sb.append(entry.getKey());
+ }
+ return sb.toString();
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/Part.java b/src/com/android/phone/common/mail/Part.java
new file mode 100644
index 0000000..d064e2a
--- /dev/null
+++ b/src/com/android/phone/common/mail/Part.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+public interface Part extends Fetchable {
+ public void addHeader(String name, String value) throws MessagingException;
+
+ public void removeHeader(String name) throws MessagingException;
+
+ public void setHeader(String name, String value) throws MessagingException;
+
+ public Body getBody() throws MessagingException;
+
+ public String getContentType() throws MessagingException;
+
+ public String getDisposition() throws MessagingException;
+
+ public String getContentId() throws MessagingException;
+
+ public String[] getHeader(String name) throws MessagingException;
+
+ public void setExtendedHeader(String name, String value) throws MessagingException;
+
+ public String getExtendedHeader(String name) throws MessagingException;
+
+ public int getSize() throws MessagingException;
+
+ public boolean isMimeType(String mimeType) throws MessagingException;
+
+ public String getMimeType() throws MessagingException;
+
+ public void setBody(Body body) throws MessagingException;
+
+ public void writeTo(OutputStream out) throws IOException, MessagingException;
+}
diff --git a/src/com/android/phone/common/mail/PeekableInputStream.java b/src/com/android/phone/common/mail/PeekableInputStream.java
new file mode 100644
index 0000000..d29fc6b
--- /dev/null
+++ b/src/com/android/phone/common/mail/PeekableInputStream.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * A filtering InputStream that allows single byte "peeks" without consuming the byte. The
+ * client of this stream can call peek() to see the next available byte in the stream
+ * and a subsequent read will still return the peeked byte.
+ */
+public class PeekableInputStream extends InputStream {
+ private final InputStream mIn;
+ private boolean mPeeked;
+ private int mPeekedByte;
+
+ public PeekableInputStream(InputStream in) {
+ this.mIn = in;
+ }
+
+ @Override
+ public int read() throws IOException {
+ if (!mPeeked) {
+ return mIn.read();
+ } else {
+ mPeeked = false;
+ return mPeekedByte;
+ }
+ }
+
+ public int peek() throws IOException {
+ if (!mPeeked) {
+ mPeekedByte = read();
+ mPeeked = true;
+ }
+ return mPeekedByte;
+ }
+
+ @Override
+ public int read(byte[] b, int offset, int length) throws IOException {
+ if (!mPeeked) {
+ return mIn.read(b, offset, length);
+ } else {
+ b[0] = (byte)mPeekedByte;
+ mPeeked = false;
+ int r = mIn.read(b, offset + 1, length - 1);
+ if (r == -1) {
+ return 1;
+ } else {
+ return r + 1;
+ }
+ }
+ }
+
+ @Override
+ public int read(byte[] b) throws IOException {
+ return read(b, 0, b.length);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("PeekableInputStream(in=%s, peeked=%b, peekedByte=%d)",
+ mIn.toString(), mPeeked, mPeekedByte);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/TempDirectory.java b/src/com/android/phone/common/mail/TempDirectory.java
new file mode 100644
index 0000000..8fa0e44
--- /dev/null
+++ b/src/com/android/phone/common/mail/TempDirectory.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail;
+
+import android.content.Context;
+
+import java.io.File;
+
+/**
+ * TempDirectory caches the directory used for caching file. It is set up during application
+ * initialization.
+ */
+public class TempDirectory {
+ private static File sTempDirectory = null;
+
+ public static void setTempDirectory(Context context) {
+ sTempDirectory = context.getCacheDir();
+ }
+
+ public static File getTempDirectory() {
+ if (sTempDirectory == null) {
+ throw new RuntimeException(
+ "TempDirectory not set. " +
+ "If in a unit test, call Email.setTempDirectory(context) in setUp().");
+ }
+ return sTempDirectory;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/internet/BinaryTempFileBody.java b/src/com/android/phone/common/mail/internet/BinaryTempFileBody.java
new file mode 100644
index 0000000..e2bdd89
--- /dev/null
+++ b/src/com/android/phone/common/mail/internet/BinaryTempFileBody.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.internet;
+
+import com.android.phone.common.mail.Body;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.TempDirectory;
+
+import org.apache.commons.io.IOUtils;
+
+import android.util.Base64;
+import android.util.Base64OutputStream;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * A Body that is backed by a temp file. The Body exposes a getOutputStream method that allows
+ * the user to write to the temp file. After the write the body is available via getInputStream
+ * and writeTo one time. After writeTo is called, or the InputStream returned from
+ * getInputStream is closed the file is deleted and the Body should be considered disposed of.
+ */
+public class BinaryTempFileBody implements Body {
+ private File mFile;
+
+ /**
+ * An alternate way to put data into a BinaryTempFileBody is to simply supply an already-
+ * created file. Note that this file will be deleted after it is read.
+ * @param filePath The file containing the data to be stored on disk temporarily
+ */
+ public void setFile(String filePath) {
+ mFile = new File(filePath);
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+ mFile = File.createTempFile("body", null, TempDirectory.getTempDirectory());
+ mFile.deleteOnExit();
+ return new FileOutputStream(mFile);
+ }
+
+ @Override
+ public InputStream getInputStream() throws MessagingException {
+ try {
+ return new BinaryTempFileBodyInputStream(new FileInputStream(mFile));
+ }
+ catch (IOException ioe) {
+ throw new MessagingException("Unable to open body", ioe);
+ }
+ }
+
+ @Override
+ public void writeTo(OutputStream out) throws IOException, MessagingException {
+ InputStream in = getInputStream();
+ Base64OutputStream base64Out = new Base64OutputStream(
+ out, Base64.CRLF | Base64.NO_CLOSE);
+ IOUtils.copy(in, base64Out);
+ base64Out.close();
+ mFile.delete();
+ in.close();
+ }
+
+ class BinaryTempFileBodyInputStream extends FilterInputStream {
+ public BinaryTempFileBodyInputStream(InputStream in) {
+ super(in);
+ }
+
+ @Override
+ public void close() throws IOException {
+ super.close();
+ mFile.delete();
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/internet/MimeBodyPart.java b/src/com/android/phone/common/mail/internet/MimeBodyPart.java
new file mode 100644
index 0000000..286a4f2
--- /dev/null
+++ b/src/com/android/phone/common/mail/internet/MimeBodyPart.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.internet;
+
+import com.android.phone.common.mail.Body;
+import com.android.phone.common.mail.BodyPart;
+import com.android.phone.common.mail.MessagingException;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.util.regex.Pattern;
+
+/**
+ * TODO this is a close approximation of Message, need to update along with
+ * Message.
+ */
+public class MimeBodyPart extends BodyPart {
+ protected MimeHeader mHeader = new MimeHeader();
+ protected MimeHeader mExtendedHeader;
+ protected Body mBody;
+ protected int mSize;
+
+ // regex that matches content id surrounded by "<>" optionally.
+ private static final Pattern REMOVE_OPTIONAL_BRACKETS = Pattern.compile("^<?([^>]+)>?$");
+ // regex that matches end of line.
+ private static final Pattern END_OF_LINE = Pattern.compile("\r?\n");
+
+ public MimeBodyPart() throws MessagingException {
+ this(null);
+ }
+
+ public MimeBodyPart(Body body) throws MessagingException {
+ this(body, null);
+ }
+
+ public MimeBodyPart(Body body, String mimeType) throws MessagingException {
+ if (mimeType != null) {
+ setHeader(MimeHeader.HEADER_CONTENT_TYPE, mimeType);
+ }
+ setBody(body);
+ }
+
+ protected String getFirstHeader(String name) throws MessagingException {
+ return mHeader.getFirstHeader(name);
+ }
+
+ @Override
+ public void addHeader(String name, String value) throws MessagingException {
+ mHeader.addHeader(name, value);
+ }
+
+ @Override
+ public void setHeader(String name, String value) throws MessagingException {
+ mHeader.setHeader(name, value);
+ }
+
+ @Override
+ public String[] getHeader(String name) throws MessagingException {
+ return mHeader.getHeader(name);
+ }
+
+ @Override
+ public void removeHeader(String name) throws MessagingException {
+ mHeader.removeHeader(name);
+ }
+
+ @Override
+ public Body getBody() throws MessagingException {
+ return mBody;
+ }
+
+ @Override
+ public void setBody(Body body) throws MessagingException {
+ this.mBody = body;
+ if (body instanceof com.android.phone.common.mail.Multipart) {
+ com.android.phone.common.mail.Multipart multipart =
+ ((com.android.phone.common.mail.Multipart)body);
+ multipart.setParent(this);
+ setHeader(MimeHeader.HEADER_CONTENT_TYPE, multipart.getContentType());
+ }
+ else if (body instanceof TextBody) {
+ String contentType = String.format("%s;\n charset=utf-8", getMimeType());
+ String name = MimeUtility.getHeaderParameter(getContentType(), "name");
+ if (name != null) {
+ contentType += String.format(";\n name=\"%s\"", name);
+ }
+ setHeader(MimeHeader.HEADER_CONTENT_TYPE, contentType);
+ setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING, "base64");
+ }
+ }
+
+ @Override
+ public String getContentType() throws MessagingException {
+ String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE);
+ if (contentType == null) {
+ return "text/plain";
+ } else {
+ return contentType;
+ }
+ }
+
+ @Override
+ public String getDisposition() throws MessagingException {
+ String contentDisposition = getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
+ if (contentDisposition == null) {
+ return null;
+ } else {
+ return contentDisposition;
+ }
+ }
+
+ @Override
+ public String getContentId() throws MessagingException {
+ String contentId = getFirstHeader(MimeHeader.HEADER_CONTENT_ID);
+ if (contentId == null) {
+ return null;
+ } else {
+ // remove optionally surrounding brackets.
+ return REMOVE_OPTIONAL_BRACKETS.matcher(contentId).replaceAll("$1");
+ }
+ }
+
+ @Override
+ public String getMimeType() throws MessagingException {
+ return MimeUtility.getHeaderParameter(getContentType(), null);
+ }
+
+ @Override
+ public boolean isMimeType(String mimeType) throws MessagingException {
+ return getMimeType().equals(mimeType);
+ }
+
+ public void setSize(int size) {
+ this.mSize = size;
+ }
+
+ @Override
+ public int getSize() throws MessagingException {
+ return mSize;
+ }
+
+ /**
+ * Set extended header
+ *
+ * @param name Extended header name
+ * @param value header value - flattened by removing CR-NL if any
+ * remove header if value is null
+ * @throws MessagingException
+ */
+ @Override
+ public void setExtendedHeader(String name, String value) throws MessagingException {
+ if (value == null) {
+ if (mExtendedHeader != null) {
+ mExtendedHeader.removeHeader(name);
+ }
+ return;
+ }
+ if (mExtendedHeader == null) {
+ mExtendedHeader = new MimeHeader();
+ }
+ mExtendedHeader.setHeader(name, END_OF_LINE.matcher(value).replaceAll(""));
+ }
+
+ /**
+ * Get extended header
+ *
+ * @param name Extended header name
+ * @return header value - null if header does not exist
+ * @throws MessagingException
+ */
+ @Override
+ public String getExtendedHeader(String name) throws MessagingException {
+ if (mExtendedHeader == null) {
+ return null;
+ }
+ return mExtendedHeader.getFirstHeader(name);
+ }
+
+ /**
+ * Write the MimeMessage out in MIME format.
+ */
+ @Override
+ public void writeTo(OutputStream out) throws IOException, MessagingException {
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
+ mHeader.writeTo(out);
+ writer.write("\r\n");
+ writer.flush();
+ if (mBody != null) {
+ mBody.writeTo(out);
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/internet/MimeHeader.java b/src/com/android/phone/common/mail/internet/MimeHeader.java
new file mode 100644
index 0000000..7e6a07f
--- /dev/null
+++ b/src/com/android/phone/common/mail/internet/MimeHeader.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.internet;
+
+import com.android.phone.common.mail.MessagingException;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+
+public class MimeHeader {
+ /**
+ * Application specific header that contains Store specific information about an attachment.
+ * In IMAP this contains the IMAP BODYSTRUCTURE part id so that the ImapStore can later
+ * retrieve the attachment at will from the server.
+ * The info is recorded from this header on LocalStore.appendMessage and is put back
+ * into the MIME data by LocalStore.fetch.
+ */
+ public static final String HEADER_ANDROID_ATTACHMENT_STORE_DATA = "X-Android-Attachment-StoreData";
+
+ public static final String HEADER_CONTENT_TYPE = "Content-Type";
+ public static final String HEADER_CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
+ public static final String HEADER_CONTENT_DISPOSITION = "Content-Disposition";
+ public static final String HEADER_CONTENT_ID = "Content-ID";
+
+ /**
+ * Fields that should be omitted when writing the header using writeTo()
+ */
+ private static final String[] WRITE_OMIT_FIELDS = {
+// HEADER_ANDROID_ATTACHMENT_DOWNLOADED,
+// HEADER_ANDROID_ATTACHMENT_ID,
+ HEADER_ANDROID_ATTACHMENT_STORE_DATA
+ };
+
+ protected final ArrayList<Field> mFields = new ArrayList<Field>();
+
+ public void clear() {
+ mFields.clear();
+ }
+
+ public String getFirstHeader(String name) throws MessagingException {
+ String[] header = getHeader(name);
+ if (header == null) {
+ return null;
+ }
+ return header[0];
+ }
+
+ public void addHeader(String name, String value) throws MessagingException {
+ mFields.add(new Field(name, value));
+ }
+
+ public void setHeader(String name, String value) throws MessagingException {
+ if (name == null || value == null) {
+ return;
+ }
+ removeHeader(name);
+ addHeader(name, value);
+ }
+
+ public String[] getHeader(String name) throws MessagingException {
+ ArrayList<String> values = new ArrayList<String>();
+ for (Field field : mFields) {
+ if (field.name.equalsIgnoreCase(name)) {
+ values.add(field.value);
+ }
+ }
+ if (values.size() == 0) {
+ return null;
+ }
+ return values.toArray(new String[] {});
+ }
+
+ public void removeHeader(String name) throws MessagingException {
+ ArrayList<Field> removeFields = new ArrayList<Field>();
+ for (Field field : mFields) {
+ if (field.name.equalsIgnoreCase(name)) {
+ removeFields.add(field);
+ }
+ }
+ mFields.removeAll(removeFields);
+ }
+
+ /**
+ * Write header into String
+ *
+ * @return CR-NL separated header string except the headers in writeOmitFields
+ * null if header is empty
+ */
+ public String writeToString() {
+ if (mFields.size() == 0) {
+ return null;
+ }
+ StringBuilder builder = new StringBuilder();
+ for (Field field : mFields) {
+ if (!arrayContains(WRITE_OMIT_FIELDS, field.name)) {
+ builder.append(field.name + ": " + field.value + "\r\n");
+ }
+ }
+ return builder.toString();
+ }
+
+ public void writeTo(OutputStream out) throws IOException, MessagingException {
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
+ for (Field field : mFields) {
+ if (!arrayContains(WRITE_OMIT_FIELDS, field.name)) {
+ writer.write(field.name + ": " + field.value + "\r\n");
+ }
+ }
+ writer.flush();
+ }
+
+ private static class Field {
+ final String name;
+ final String value;
+
+ public Field(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return name + "=" + value;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return (mFields == null) ? null : mFields.toString();
+ }
+
+ public final static boolean arrayContains(Object[] a, Object o) {
+ int index = arrayIndex(a, o);
+ return (index >= 0);
+ }
+
+ public final static int arrayIndex(Object[] a, Object o) {
+ for (int i = 0, count = a.length; i < count; i++) {
+ if (a[i].equals(o)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+}
diff --git a/src/com/android/phone/common/mail/internet/MimeMessage.java b/src/com/android/phone/common/mail/internet/MimeMessage.java
new file mode 100644
index 0000000..f4c6c88
--- /dev/null
+++ b/src/com/android/phone/common/mail/internet/MimeMessage.java
@@ -0,0 +1,675 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.internet;
+
+import com.android.phone.common.mail.Address;
+import com.android.phone.common.mail.Body;
+import com.android.phone.common.mail.BodyPart;
+import com.android.phone.common.mail.Message;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.Multipart;
+import com.android.phone.common.mail.Part;
+import com.android.phone.common.mail.utils.LogUtils;
+
+import org.apache.james.mime4j.BodyDescriptor;
+import org.apache.james.mime4j.ContentHandler;
+import org.apache.james.mime4j.EOLConvertingInputStream;
+import org.apache.james.mime4j.MimeStreamParser;
+import org.apache.james.mime4j.field.DateTimeField;
+import org.apache.james.mime4j.field.Field;
+
+import android.text.TextUtils;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Stack;
+import java.util.regex.Pattern;
+
+/**
+ * An implementation of Message that stores all of its metadata in RFC 822 and
+ * RFC 2045 style headers.
+ *
+ * NOTE: Automatic generation of a local message-id is becoming unwieldy and should be removed.
+ * It would be better to simply do it explicitly on local creation of new outgoing messages.
+ */
+public class MimeMessage extends Message {
+ private MimeHeader mHeader;
+ private MimeHeader mExtendedHeader;
+
+ // NOTE: The fields here are transcribed out of headers, and values stored here will supersede
+ // the values found in the headers. Use caution to prevent any out-of-phase errors. In
+ // particular, any adds/changes/deletes here must be echoed by changes in the parse() function.
+ private Address[] mFrom;
+ private Address[] mTo;
+ private Address[] mCc;
+ private Address[] mBcc;
+ private Address[] mReplyTo;
+ private Date mSentDate;
+ private Body mBody;
+ protected int mSize;
+ private boolean mInhibitLocalMessageId = false;
+ private boolean mComplete = true;
+
+ // Shared random source for generating local message-id values
+ private static final java.util.Random sRandom = new java.util.Random();
+
+ // In MIME, en_US-like date format should be used. In other words "MMM" should be encoded to
+ // "Jan", not the other localized format like "Ene" (meaning January in locale es).
+ // This conversion is used when generating outgoing MIME messages. Incoming MIME date
+ // headers are parsed by org.apache.james.mime4j.field.DateTimeField which does not have any
+ // localization code.
+ private static final SimpleDateFormat DATE_FORMAT =
+ new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
+
+ // regex that matches content id surrounded by "<>" optionally.
+ private static final Pattern REMOVE_OPTIONAL_BRACKETS = Pattern.compile("^<?([^>]+)>?$");
+ // regex that matches end of line.
+ private static final Pattern END_OF_LINE = Pattern.compile("\r?\n");
+
+ public MimeMessage() {
+ mHeader = null;
+ }
+
+ /**
+ * Generate a local message id. This is only used when none has been assigned, and is
+ * installed lazily. Any remote (typically server-assigned) message id takes precedence.
+ * @return a long, locally-generated message-ID value
+ */
+ private static String generateMessageId() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("<");
+ for (int i = 0; i < 24; i++) {
+ // We'll use a 5-bit range (0..31)
+ final int value = sRandom.nextInt() & 31;
+ final char c = "0123456789abcdefghijklmnopqrstuv".charAt(value);
+ sb.append(c);
+ }
+ sb.append(".");
+ sb.append(Long.toString(System.currentTimeMillis()));
+ sb.append("@email.android.com>");
+ return sb.toString();
+ }
+
+ /**
+ * Parse the given InputStream using Apache Mime4J to build a MimeMessage.
+ *
+ * @param in InputStream providing message content
+ * @throws IOException
+ * @throws MessagingException
+ */
+ public MimeMessage(InputStream in) throws IOException, MessagingException {
+ parse(in);
+ }
+
+ private MimeStreamParser init() {
+ // Before parsing the input stream, clear all local fields that may be superceded by
+ // the new incoming message.
+ getMimeHeaders().clear();
+ mInhibitLocalMessageId = true;
+ mFrom = null;
+ mTo = null;
+ mCc = null;
+ mBcc = null;
+ mReplyTo = null;
+ mSentDate = null;
+ mBody = null;
+
+ final MimeStreamParser parser = new MimeStreamParser();
+ parser.setContentHandler(new MimeMessageBuilder());
+ return parser;
+ }
+
+ protected void parse(InputStream in) throws IOException, MessagingException {
+ final MimeStreamParser parser = init();
+ parser.parse(new EOLConvertingInputStream(in));
+ mComplete = !parser.getPrematureEof();
+ }
+
+ public void parse(InputStream in, EOLConvertingInputStream.Callback callback)
+ throws IOException, MessagingException {
+ final MimeStreamParser parser = init();
+ parser.parse(new EOLConvertingInputStream(in, getSize(), callback));
+ mComplete = !parser.getPrematureEof();
+ }
+
+ /**
+ * Return the internal mHeader value, with very lazy initialization.
+ * The goal is to save memory by not creating the headers until needed.
+ */
+ private MimeHeader getMimeHeaders() {
+ if (mHeader == null) {
+ mHeader = new MimeHeader();
+ }
+ return mHeader;
+ }
+
+ @Override
+ public Date getReceivedDate() throws MessagingException {
+ return null;
+ }
+
+ @Override
+ public Date getSentDate() throws MessagingException {
+ if (mSentDate == null) {
+ try {
+ DateTimeField field = (DateTimeField)Field.parse("Date: "
+ + MimeUtility.unfoldAndDecode(getFirstHeader("Date")));
+ mSentDate = field.getDate();
+ // TODO: We should make it more clear what exceptions can be thrown here,
+ // and whether they reflect a normal or error condition.
+ } catch (Exception e) {
+ LogUtils.v(LogUtils.TAG, "Message missing Date header");
+ }
+ }
+ if (mSentDate == null) {
+ // If we still don't have a date, fall back to "Delivery-date"
+ try {
+ DateTimeField field = (DateTimeField)Field.parse("Date: "
+ + MimeUtility.unfoldAndDecode(getFirstHeader("Delivery-date")));
+ mSentDate = field.getDate();
+ // TODO: We should make it more clear what exceptions can be thrown here,
+ // and whether they reflect a normal or error condition.
+ } catch (Exception e) {
+ LogUtils.v(LogUtils.TAG, "Message also missing Delivery-Date header");
+ }
+ }
+ return mSentDate;
+ }
+
+ @Override
+ public void setSentDate(Date sentDate) throws MessagingException {
+ setHeader("Date", DATE_FORMAT.format(sentDate));
+ this.mSentDate = sentDate;
+ }
+
+ @Override
+ public String getContentType() throws MessagingException {
+ final String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE);
+ if (contentType == null) {
+ return "text/plain";
+ } else {
+ return contentType;
+ }
+ }
+
+ @Override
+ public String getDisposition() throws MessagingException {
+ return getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
+ }
+
+ @Override
+ public String getContentId() throws MessagingException {
+ final String contentId = getFirstHeader(MimeHeader.HEADER_CONTENT_ID);
+ if (contentId == null) {
+ return null;
+ } else {
+ // remove optionally surrounding brackets.
+ return REMOVE_OPTIONAL_BRACKETS.matcher(contentId).replaceAll("$1");
+ }
+ }
+
+ public boolean isComplete() {
+ return mComplete;
+ }
+
+ @Override
+ public String getMimeType() throws MessagingException {
+ return MimeUtility.getHeaderParameter(getContentType(), null);
+ }
+
+ @Override
+ public int getSize() throws MessagingException {
+ return mSize;
+ }
+
+ /**
+ * Returns a list of the given recipient type from this message. If no addresses are
+ * found the method returns an empty array.
+ */
+ @Override
+ public Address[] getRecipients(String type) throws MessagingException {
+ if (type == RECIPIENT_TYPE_TO) {
+ if (mTo == null) {
+ mTo = Address.parse(MimeUtility.unfold(getFirstHeader("To")));
+ }
+ return mTo;
+ } else if (type == RECIPIENT_TYPE_CC) {
+ if (mCc == null) {
+ mCc = Address.parse(MimeUtility.unfold(getFirstHeader("CC")));
+ }
+ return mCc;
+ } else if (type == RECIPIENT_TYPE_BCC) {
+ if (mBcc == null) {
+ mBcc = Address.parse(MimeUtility.unfold(getFirstHeader("BCC")));
+ }
+ return mBcc;
+ } else {
+ throw new MessagingException("Unrecognized recipient type.");
+ }
+ }
+
+ @Override
+ public void setRecipients(String type, Address[] addresses) throws MessagingException {
+ final int TO_LENGTH = 4; // "To: "
+ final int CC_LENGTH = 4; // "Cc: "
+ final int BCC_LENGTH = 5; // "Bcc: "
+ if (type == RECIPIENT_TYPE_TO) {
+ if (addresses == null || addresses.length == 0) {
+ removeHeader("To");
+ this.mTo = null;
+ } else {
+ setHeader("To", MimeUtility.fold(Address.toHeader(addresses), TO_LENGTH));
+ this.mTo = addresses;
+ }
+ } else if (type == RECIPIENT_TYPE_CC) {
+ if (addresses == null || addresses.length == 0) {
+ removeHeader("CC");
+ this.mCc = null;
+ } else {
+ setHeader("CC", MimeUtility.fold(Address.toHeader(addresses), CC_LENGTH));
+ this.mCc = addresses;
+ }
+ } else if (type == RECIPIENT_TYPE_BCC) {
+ if (addresses == null || addresses.length == 0) {
+ removeHeader("BCC");
+ this.mBcc = null;
+ } else {
+ setHeader("BCC", MimeUtility.fold(Address.toHeader(addresses), BCC_LENGTH));
+ this.mBcc = addresses;
+ }
+ } else {
+ throw new MessagingException("Unrecognized recipient type.");
+ }
+ }
+
+ /**
+ * Returns the unfolded, decoded value of the Subject header.
+ */
+ @Override
+ public String getSubject() throws MessagingException {
+ return MimeUtility.unfoldAndDecode(getFirstHeader("Subject"));
+ }
+
+ @Override
+ public void setSubject(String subject) throws MessagingException {
+ final int HEADER_NAME_LENGTH = 9; // "Subject: "
+ setHeader("Subject", MimeUtility.foldAndEncode2(subject, HEADER_NAME_LENGTH));
+ }
+
+ @Override
+ public Address[] getFrom() throws MessagingException {
+ if (mFrom == null) {
+ String list = MimeUtility.unfold(getFirstHeader("From"));
+ if (list == null || list.length() == 0) {
+ list = MimeUtility.unfold(getFirstHeader("Sender"));
+ }
+ mFrom = Address.parse(list);
+ }
+ return mFrom;
+ }
+
+ @Override
+ public void setFrom(Address from) throws MessagingException {
+ final int FROM_LENGTH = 6; // "From: "
+ if (from != null) {
+ setHeader("From", MimeUtility.fold(from.toHeader(), FROM_LENGTH));
+ this.mFrom = new Address[] {
+ from
+ };
+ } else {
+ this.mFrom = null;
+ }
+ }
+
+ @Override
+ public Address[] getReplyTo() throws MessagingException {
+ if (mReplyTo == null) {
+ mReplyTo = Address.parse(MimeUtility.unfold(getFirstHeader("Reply-to")));
+ }
+ return mReplyTo;
+ }
+
+ @Override
+ public void setReplyTo(Address[] replyTo) throws MessagingException {
+ final int REPLY_TO_LENGTH = 10; // "Reply-to: "
+ if (replyTo == null || replyTo.length == 0) {
+ removeHeader("Reply-to");
+ mReplyTo = null;
+ } else {
+ setHeader("Reply-to", MimeUtility.fold(Address.toHeader(replyTo), REPLY_TO_LENGTH));
+ mReplyTo = replyTo;
+ }
+ }
+
+ /**
+ * Set the mime "Message-ID" header
+ * @param messageId the new Message-ID value
+ * @throws MessagingException
+ */
+ @Override
+ public void setMessageId(String messageId) throws MessagingException {
+ setHeader("Message-ID", messageId);
+ }
+
+ /**
+ * Get the mime "Message-ID" header. This value will be preloaded with a locally-generated
+ * random ID, if the value has not previously been set. Local generation can be inhibited/
+ * overridden by explicitly clearing the headers, removing the message-id header, etc.
+ * @return the Message-ID header string, or null if explicitly has been set to null
+ */
+ @Override
+ public String getMessageId() throws MessagingException {
+ String messageId = getFirstHeader("Message-ID");
+ if (messageId == null && !mInhibitLocalMessageId) {
+ messageId = generateMessageId();
+ setMessageId(messageId);
+ }
+ return messageId;
+ }
+
+ @Override
+ public void saveChanges() throws MessagingException {
+ throw new MessagingException("saveChanges not yet implemented");
+ }
+
+ @Override
+ public Body getBody() throws MessagingException {
+ return mBody;
+ }
+
+ @Override
+ public void setBody(Body body) throws MessagingException {
+ this.mBody = body;
+ if (body instanceof Multipart) {
+ final Multipart multipart = ((Multipart)body);
+ multipart.setParent(this);
+ setHeader(MimeHeader.HEADER_CONTENT_TYPE, multipart.getContentType());
+ setHeader("MIME-Version", "1.0");
+ }
+ else if (body instanceof TextBody) {
+ setHeader(MimeHeader.HEADER_CONTENT_TYPE, String.format("%s;\n charset=utf-8",
+ getMimeType()));
+ setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING, "base64");
+ }
+ }
+
+ protected String getFirstHeader(String name) throws MessagingException {
+ return getMimeHeaders().getFirstHeader(name);
+ }
+
+ @Override
+ public void addHeader(String name, String value) throws MessagingException {
+ getMimeHeaders().addHeader(name, value);
+ }
+
+ @Override
+ public void setHeader(String name, String value) throws MessagingException {
+ getMimeHeaders().setHeader(name, value);
+ }
+
+ @Override
+ public String[] getHeader(String name) throws MessagingException {
+ return getMimeHeaders().getHeader(name);
+ }
+
+ @Override
+ public void removeHeader(String name) throws MessagingException {
+ getMimeHeaders().removeHeader(name);
+ if ("Message-ID".equalsIgnoreCase(name)) {
+ mInhibitLocalMessageId = true;
+ }
+ }
+
+ /**
+ * Set extended header
+ *
+ * @param name Extended header name
+ * @param value header value - flattened by removing CR-NL if any
+ * remove header if value is null
+ * @throws MessagingException
+ */
+ @Override
+ public void setExtendedHeader(String name, String value) throws MessagingException {
+ if (value == null) {
+ if (mExtendedHeader != null) {
+ mExtendedHeader.removeHeader(name);
+ }
+ return;
+ }
+ if (mExtendedHeader == null) {
+ mExtendedHeader = new MimeHeader();
+ }
+ mExtendedHeader.setHeader(name, END_OF_LINE.matcher(value).replaceAll(""));
+ }
+
+ /**
+ * Get extended header
+ *
+ * @param name Extended header name
+ * @return header value - null if header does not exist
+ * @throws MessagingException
+ */
+ @Override
+ public String getExtendedHeader(String name) throws MessagingException {
+ if (mExtendedHeader == null) {
+ return null;
+ }
+ return mExtendedHeader.getFirstHeader(name);
+ }
+
+ /**
+ * Set entire extended headers from String
+ *
+ * @param headers Extended header and its value - "CR-NL-separated pairs
+ * if null or empty, remove entire extended headers
+ * @throws MessagingException
+ */
+ public void setExtendedHeaders(String headers) throws MessagingException {
+ if (TextUtils.isEmpty(headers)) {
+ mExtendedHeader = null;
+ } else {
+ mExtendedHeader = new MimeHeader();
+ for (final String header : END_OF_LINE.split(headers)) {
+ final String[] tokens = header.split(":", 2);
+ if (tokens.length != 2) {
+ throw new MessagingException("Illegal extended headers: " + headers);
+ }
+ mExtendedHeader.setHeader(tokens[0].trim(), tokens[1].trim());
+ }
+ }
+ }
+
+ /**
+ * Get entire extended headers as String
+ *
+ * @return "CR-NL-separated extended headers - null if extended header does not exist
+ */
+ public String getExtendedHeaders() {
+ if (mExtendedHeader != null) {
+ return mExtendedHeader.writeToString();
+ }
+ return null;
+ }
+
+ /**
+ * Write message header and body to output stream
+ *
+ * @param out Output steam to write message header and body.
+ */
+ @Override
+ public void writeTo(OutputStream out) throws IOException, MessagingException {
+ final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
+ // Force creation of local message-id
+ getMessageId();
+ getMimeHeaders().writeTo(out);
+ // mExtendedHeader will not be write out to external output stream,
+ // because it is intended to internal use.
+ writer.write("\r\n");
+ writer.flush();
+ if (mBody != null) {
+ mBody.writeTo(out);
+ }
+ }
+
+ @Override
+ public InputStream getInputStream() throws MessagingException {
+ return null;
+ }
+
+ class MimeMessageBuilder implements ContentHandler {
+ private final Stack<Object> stack = new Stack<Object>();
+
+ public MimeMessageBuilder() {
+ }
+
+ private void expect(Class<?> c) {
+ if (!c.isInstance(stack.peek())) {
+ throw new IllegalStateException("Internal stack error: " + "Expected '"
+ + c.getName() + "' found '" + stack.peek().getClass().getName() + "'");
+ }
+ }
+
+ @Override
+ public void startMessage() {
+ if (stack.isEmpty()) {
+ stack.push(MimeMessage.this);
+ } else {
+ expect(Part.class);
+ try {
+ final MimeMessage m = new MimeMessage();
+ ((Part)stack.peek()).setBody(m);
+ stack.push(m);
+ } catch (MessagingException me) {
+ throw new Error(me);
+ }
+ }
+ }
+
+ @Override
+ public void endMessage() {
+ expect(MimeMessage.class);
+ stack.pop();
+ }
+
+ @Override
+ public void startHeader() {
+ expect(Part.class);
+ }
+
+ @Override
+ public void field(String fieldData) {
+ expect(Part.class);
+ try {
+ final String[] tokens = fieldData.split(":", 2);
+ ((Part)stack.peek()).addHeader(tokens[0], tokens[1].trim());
+ } catch (MessagingException me) {
+ throw new Error(me);
+ }
+ }
+
+ @Override
+ public void endHeader() {
+ expect(Part.class);
+ }
+
+ @Override
+ public void startMultipart(BodyDescriptor bd) {
+ expect(Part.class);
+
+ final Part e = (Part)stack.peek();
+ try {
+ final MimeMultipart multiPart = new MimeMultipart(e.getContentType());
+ e.setBody(multiPart);
+ stack.push(multiPart);
+ } catch (MessagingException me) {
+ throw new Error(me);
+ }
+ }
+
+ @Override
+ public void body(BodyDescriptor bd, InputStream in) throws IOException {
+ expect(Part.class);
+ final Body body = MimeUtility.decodeBody(in, bd.getTransferEncoding());
+ try {
+ ((Part)stack.peek()).setBody(body);
+ } catch (MessagingException me) {
+ throw new Error(me);
+ }
+ }
+
+ @Override
+ public void endMultipart() {
+ stack.pop();
+ }
+
+ @Override
+ public void startBodyPart() {
+ expect(MimeMultipart.class);
+
+ try {
+ final MimeBodyPart bodyPart = new MimeBodyPart();
+ ((MimeMultipart)stack.peek()).addBodyPart(bodyPart);
+ stack.push(bodyPart);
+ } catch (MessagingException me) {
+ throw new Error(me);
+ }
+ }
+
+ @Override
+ public void endBodyPart() {
+ expect(BodyPart.class);
+ stack.pop();
+ }
+
+ @Override
+ public void epilogue(InputStream is) throws IOException {
+ expect(MimeMultipart.class);
+ final StringBuilder sb = new StringBuilder();
+ int b;
+ while ((b = is.read()) != -1) {
+ sb.append((char)b);
+ }
+ // TODO: why is this commented out?
+ // ((Multipart) stack.peek()).setEpilogue(sb.toString());
+ }
+
+ @Override
+ public void preamble(InputStream is) throws IOException {
+ expect(MimeMultipart.class);
+ final StringBuilder sb = new StringBuilder();
+ int b;
+ while ((b = is.read()) != -1) {
+ sb.append((char)b);
+ }
+ try {
+ ((MimeMultipart)stack.peek()).setPreamble(sb.toString());
+ } catch (MessagingException me) {
+ throw new Error(me);
+ }
+ }
+
+ @Override
+ public void raw(InputStream is) throws IOException {
+ throw new UnsupportedOperationException("Not supported");
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/internet/MimeMultipart.java b/src/com/android/phone/common/mail/internet/MimeMultipart.java
new file mode 100644
index 0000000..3e118e4
--- /dev/null
+++ b/src/com/android/phone/common/mail/internet/MimeMultipart.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.internet;
+
+import com.android.phone.common.mail.BodyPart;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.Multipart;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+
+public class MimeMultipart extends Multipart {
+ protected String mPreamble;
+
+ protected String mContentType;
+
+ protected String mBoundary;
+
+ protected String mSubType;
+
+ public MimeMultipart() throws MessagingException {
+ mBoundary = generateBoundary();
+ setSubType("mixed");
+ }
+
+ public MimeMultipart(String contentType) throws MessagingException {
+ this.mContentType = contentType;
+ try {
+ mSubType = MimeUtility.getHeaderParameter(contentType, null).split("/")[1];
+ mBoundary = MimeUtility.getHeaderParameter(contentType, "boundary");
+ if (mBoundary == null) {
+ throw new MessagingException("MultiPart does not contain boundary: " + contentType);
+ }
+ } catch (Exception e) {
+ throw new MessagingException(
+ "Invalid MultiPart Content-Type; must contain subtype and boundary. ("
+ + contentType + ")", e);
+ }
+ }
+
+ public String generateBoundary() {
+ StringBuffer sb = new StringBuffer();
+ sb.append("----");
+ for (int i = 0; i < 30; i++) {
+ sb.append(Integer.toString((int)(Math.random() * 35), 36));
+ }
+ return sb.toString().toUpperCase();
+ }
+
+ public String getPreamble() throws MessagingException {
+ return mPreamble;
+ }
+
+ public void setPreamble(String preamble) throws MessagingException {
+ this.mPreamble = preamble;
+ }
+
+ @Override
+ public String getContentType() throws MessagingException {
+ return mContentType;
+ }
+
+ public void setSubType(String subType) throws MessagingException {
+ this.mSubType = subType;
+ mContentType = String.format("multipart/%s; boundary=\"%s\"", subType, mBoundary);
+ }
+
+ @Override
+ public void writeTo(OutputStream out) throws IOException, MessagingException {
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
+
+ if (mPreamble != null) {
+ writer.write(mPreamble + "\r\n");
+ }
+
+ for (int i = 0, count = mParts.size(); i < count; i++) {
+ BodyPart bodyPart = mParts.get(i);
+ writer.write("--" + mBoundary + "\r\n");
+ writer.flush();
+ bodyPart.writeTo(out);
+ writer.write("\r\n");
+ }
+
+ writer.write("--" + mBoundary + "--\r\n");
+ writer.flush();
+ }
+
+ @Override
+ public InputStream getInputStream() throws MessagingException {
+ return null;
+ }
+
+ public String getSubTypeForTest() {
+ return mSubType;
+ }
+}
diff --git a/src/com/android/phone/common/mail/internet/MimeUtility.java b/src/com/android/phone/common/mail/internet/MimeUtility.java
new file mode 100644
index 0000000..ba5036f
--- /dev/null
+++ b/src/com/android/phone/common/mail/internet/MimeUtility.java
@@ -0,0 +1,416 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.internet;
+
+import android.text.TextUtils;
+import android.util.Base64;
+import android.util.Base64DataException;
+import android.util.Base64InputStream;
+import android.util.Log;
+
+import com.android.phone.common.mail.Body;
+import com.android.phone.common.mail.BodyPart;
+import com.android.phone.common.mail.Message;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.Multipart;
+import com.android.phone.common.mail.Part;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.james.mime4j.codec.EncoderUtil;
+import org.apache.james.mime4j.decoder.DecoderUtil;
+import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
+import org.apache.james.mime4j.util.CharsetUtil;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class MimeUtility {
+ private static final String LOG_TAG = "Email";
+
+ public static final String MIME_TYPE_RFC822 = "message/rfc822";
+ private final static Pattern PATTERN_CR_OR_LF = Pattern.compile("\r|\n");
+
+ /**
+ * Replace sequences of CRLF+WSP with WSP. Tries to preserve original string
+ * object whenever possible.
+ */
+ public static String unfold(String s) {
+ if (s == null) {
+ return null;
+ }
+ Matcher patternMatcher = PATTERN_CR_OR_LF.matcher(s);
+ if (patternMatcher.find()) {
+ patternMatcher.reset();
+ s = patternMatcher.replaceAll("");
+ }
+ return s;
+ }
+
+ public static String decode(String s) {
+ if (s == null) {
+ return null;
+ }
+ return DecoderUtil.decodeEncodedWords(s);
+ }
+
+ public static String unfoldAndDecode(String s) {
+ return decode(unfold(s));
+ }
+
+ // TODO implement proper foldAndEncode
+ // NOTE: When this really works, we *must* remove all calls to foldAndEncode2() to prevent
+ // duplication of encoding.
+ public static String foldAndEncode(String s) {
+ return s;
+ }
+
+ /**
+ * INTERIM version of foldAndEncode that will be used only by Subject: headers.
+ * This is safer than implementing foldAndEncode() (see above) and risking unknown damage
+ * to other headers.
+ *
+ * TODO: Copy this code to foldAndEncode(), get rid of this function, confirm all working OK.
+ *
+ * @param s original string to encode and fold
+ * @param usedCharacters number of characters already used up by header name
+
+ * @return the String ready to be transmitted
+ */
+ public static String foldAndEncode2(String s, int usedCharacters) {
+ // james.mime4j.codec.EncoderUtil.java
+ // encode: encodeIfNecessary(text, usage, numUsedInHeaderName)
+ // Usage.TEXT_TOKENlooks like the right thing for subjects
+ // use WORD_ENTITY for address/names
+
+ String encoded = EncoderUtil.encodeIfNecessary(s, EncoderUtil.Usage.TEXT_TOKEN,
+ usedCharacters);
+
+ return fold(encoded, usedCharacters);
+ }
+
+ /**
+ * INTERIM: From newer version of org.apache.james (but we don't want to import
+ * the entire MimeUtil class).
+ *
+ * Splits the specified string into a multiple-line representation with
+ * lines no longer than 76 characters (because the line might contain
+ * encoded words; see <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC
+ * 2047</a> section 2). If the string contains non-whitespace sequences
+ * longer than 76 characters a line break is inserted at the whitespace
+ * character following the sequence resulting in a line longer than 76
+ * characters.
+ *
+ * @param s
+ * string to split.
+ * @param usedCharacters
+ * number of characters already used up. Usually the number of
+ * characters for header field name plus colon and one space.
+ * @return a multiple-line representation of the given string.
+ */
+ public static String fold(String s, int usedCharacters) {
+ final int maxCharacters = 76;
+
+ final int length = s.length();
+ if (usedCharacters + length <= maxCharacters)
+ return s;
+
+ StringBuilder sb = new StringBuilder();
+
+ int lastLineBreak = -usedCharacters;
+ int wspIdx = indexOfWsp(s, 0);
+ while (true) {
+ if (wspIdx == length) {
+ sb.append(s.substring(Math.max(0, lastLineBreak)));
+ return sb.toString();
+ }
+
+ int nextWspIdx = indexOfWsp(s, wspIdx + 1);
+
+ if (nextWspIdx - lastLineBreak > maxCharacters) {
+ sb.append(s.substring(Math.max(0, lastLineBreak), wspIdx));
+ sb.append("\r\n");
+ lastLineBreak = wspIdx;
+ }
+
+ wspIdx = nextWspIdx;
+ }
+ }
+
+ /**
+ * INTERIM: From newer version of org.apache.james (but we don't want to import
+ * the entire MimeUtil class).
+ *
+ * Search for whitespace.
+ */
+ private static int indexOfWsp(String s, int fromIndex) {
+ final int len = s.length();
+ for (int index = fromIndex; index < len; index++) {
+ char c = s.charAt(index);
+ if (c == ' ' || c == '\t')
+ return index;
+ }
+ return len;
+ }
+
+ /**
+ * Returns the named parameter of a header field. If name is null the first
+ * parameter is returned, or if there are no additional parameters in the
+ * field the entire field is returned. Otherwise the named parameter is
+ * searched for in a case insensitive fashion and returned. If the parameter
+ * cannot be found the method returns null.
+ *
+ * TODO: quite inefficient with the inner trimming & splitting.
+ * TODO: Also has a latent bug: uses "startsWith" to match the name, which can false-positive.
+ * TODO: The doc says that for a null name you get the first param, but you get the header.
+ * Should probably just fix the doc, but if other code assumes that behavior, fix the code.
+ * TODO: Need to decode %-escaped strings, as in: filename="ab%22d".
+ * ('+' -> ' ' conversion too? check RFC)
+ *
+ * @param header
+ * @param name
+ * @return the entire header (if name=null), the found parameter, or null
+ */
+ public static String getHeaderParameter(String header, String name) {
+ if (header == null) {
+ return null;
+ }
+ String[] parts = unfold(header).split(";");
+ if (name == null) {
+ return parts[0].trim();
+ }
+ String lowerCaseName = name.toLowerCase();
+ for (String part : parts) {
+ if (part.trim().toLowerCase().startsWith(lowerCaseName)) {
+ String[] parameterParts = part.split("=", 2);
+ if (parameterParts.length < 2) {
+ return null;
+ }
+ String parameter = parameterParts[1].trim();
+ if (parameter.startsWith("\"") && parameter.endsWith("\"")) {
+ return parameter.substring(1, parameter.length() - 1);
+ } else {
+ return parameter;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Reads the Part's body and returns a String based on any charset conversion that needed
+ * to be done.
+ * @param part The part containing a body
+ * @return a String containing the converted text in the body, or null if there was no text
+ * or an error during conversion.
+ */
+ public static String getTextFromPart(Part part) {
+ try {
+ if (part != null && part.getBody() != null) {
+ InputStream in = part.getBody().getInputStream();
+ String mimeType = part.getMimeType();
+ if (mimeType != null && MimeUtility.mimeTypeMatches(mimeType, "text/*")) {
+ /*
+ * Now we read the part into a buffer for further processing. Because
+ * the stream is now wrapped we'll remove any transfer encoding at this point.
+ */
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ IOUtils.copy(in, out);
+ in.close();
+ in = null; // we want all of our memory back, and close might not release
+
+ /*
+ * We've got a text part, so let's see if it needs to be processed further.
+ */
+ String charset = getHeaderParameter(part.getContentType(), "charset");
+ if (charset != null) {
+ /*
+ * See if there is conversion from the MIME charset to the Java one.
+ */
+ charset = CharsetUtil.toJavaCharset(charset);
+ }
+ /*
+ * No encoding, so use us-ascii, which is the standard.
+ */
+ if (charset == null) {
+ charset = "ASCII";
+ }
+ /*
+ * Convert and return as new String
+ */
+ String result = out.toString(charset);
+ out.close();
+ return result;
+ }
+ }
+
+ }
+ catch (OutOfMemoryError oom) {
+ /*
+ * If we are not able to process the body there's nothing we can do about it. Return
+ * null and let the upper layers handle the missing content.
+ */
+ Log.e(LOG_TAG, "Unable to getTextFromPart " + oom.toString());
+ }
+ catch (Exception e) {
+ /*
+ * If we are not able to process the body there's nothing we can do about it. Return
+ * null and let the upper layers handle the missing content.
+ */
+ Log.e(LOG_TAG, "Unable to getTextFromPart " + e.toString());
+ }
+ return null;
+ }
+
+ /**
+ * Returns true if the given mimeType matches the matchAgainst specification. The comparison
+ * ignores case and the matchAgainst string may include "*" for a wildcard (e.g. "image/*").
+ *
+ * @param mimeType A MIME type to check.
+ * @param matchAgainst A MIME type to check against. May include wildcards.
+ * @return true if the mimeType matches
+ */
+ public static boolean mimeTypeMatches(String mimeType, String matchAgainst) {
+ Pattern p = Pattern.compile(matchAgainst.replaceAll("\\*", "\\.\\*"),
+ Pattern.CASE_INSENSITIVE);
+ return p.matcher(mimeType).matches();
+ }
+
+ /**
+ * Returns true if the given mimeType matches any of the matchAgainst specifications. The
+ * comparison ignores case and the matchAgainst strings may include "*" for a wildcard
+ * (e.g. "image/*").
+ *
+ * @param mimeType A MIME type to check.
+ * @param matchAgainst An array of MIME types to check against. May include wildcards.
+ * @return true if the mimeType matches any of the matchAgainst strings
+ */
+ public static boolean mimeTypeMatches(String mimeType, String[] matchAgainst) {
+ for (String matchType : matchAgainst) {
+ if (mimeTypeMatches(mimeType, matchType)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Given an input stream and a transfer encoding, return a wrapped input stream for that
+ * encoding (or the original if none is required)
+ * @param in the input stream
+ * @param contentTransferEncoding the content transfer encoding
+ * @return a properly wrapped stream
+ */
+ public static InputStream getInputStreamForContentTransferEncoding(InputStream in,
+ String contentTransferEncoding) {
+ if (contentTransferEncoding != null) {
+ contentTransferEncoding =
+ MimeUtility.getHeaderParameter(contentTransferEncoding, null);
+ if ("quoted-printable".equalsIgnoreCase(contentTransferEncoding)) {
+ in = new QuotedPrintableInputStream(in);
+ }
+ else if ("base64".equalsIgnoreCase(contentTransferEncoding)) {
+ in = new Base64InputStream(in, Base64.DEFAULT);
+ }
+ }
+ return in;
+ }
+
+ /**
+ * Removes any content transfer encoding from the stream and returns a Body.
+ */
+ public static Body decodeBody(InputStream in, String contentTransferEncoding)
+ throws IOException {
+ /*
+ * We'll remove any transfer encoding by wrapping the stream.
+ */
+ in = getInputStreamForContentTransferEncoding(in, contentTransferEncoding);
+ BinaryTempFileBody tempBody = new BinaryTempFileBody();
+ OutputStream out = tempBody.getOutputStream();
+ try {
+ IOUtils.copy(in, out);
+ } catch (Base64DataException bde) {
+ // TODO Need to fix this somehow
+ //String warning = "\n\n" + Email.getMessageDecodeErrorString();
+ //out.write(warning.getBytes());
+ } finally {
+ out.close();
+ }
+ return tempBody;
+ }
+
+ /**
+ * Recursively scan a Part (usually a Message) and sort out which of its children will be
+ * "viewable" and which will be attachments.
+ *
+ * @param part The part to be broken down
+ * @param viewables This arraylist will be populated with all parts that appear to be
+ * the "message" (e.g. text/plain & text/html)
+ * @param attachments This arraylist will be populated with all parts that appear to be
+ * attachments (including inlines)
+ * @throws MessagingException
+ */
+ public static void collectParts(Part part, ArrayList<Part> viewables,
+ ArrayList<Part> attachments) throws MessagingException {
+ String disposition = part.getDisposition();
+ String dispositionType = MimeUtility.getHeaderParameter(disposition, null);
+ // If a disposition is not specified, default to "inline"
+ boolean inline =
+ TextUtils.isEmpty(dispositionType) || "inline".equalsIgnoreCase(dispositionType);
+ // The lower-case mime type
+ String mimeType = part.getMimeType().toLowerCase();
+
+ if (part.getBody() instanceof Multipart) {
+ // If the part is Multipart but not alternative it's either mixed or
+ // something we don't know about, which means we treat it as mixed
+ // per the spec. We just process its pieces recursively.
+ MimeMultipart mp = (MimeMultipart)part.getBody();
+ boolean foundHtml = false;
+ if (mp.getSubTypeForTest().equals("alternative")) {
+ for (int i = 0; i < mp.getCount(); i++) {
+ if (mp.getBodyPart(i).isMimeType("text/html")) {
+ foundHtml = true;
+ break;
+ }
+ }
+ }
+ for (int i = 0; i < mp.getCount(); i++) {
+ // See if we have text and html
+ BodyPart bp = mp.getBodyPart(i);
+ // If there's html, don't bother loading text
+ if (foundHtml && bp.isMimeType("text/plain")) {
+ continue;
+ }
+ collectParts(bp, viewables, attachments);
+ }
+ } else if (part.getBody() instanceof Message) {
+ // If the part is an embedded message we just continue to process
+ // it, pulling any viewables or attachments into the running list.
+ Message message = (Message)part.getBody();
+ collectParts(message, viewables, attachments);
+ } else if (inline && (mimeType.startsWith("text") || (mimeType.startsWith("image")))) {
+ // We'll treat text and images as viewables
+ viewables.add(part);
+ } else {
+ // Everything else is an attachment.
+ attachments.add(part);
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/internet/TextBody.java b/src/com/android/phone/common/mail/internet/TextBody.java
new file mode 100644
index 0000000..77bbd65
--- /dev/null
+++ b/src/com/android/phone/common/mail/internet/TextBody.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.internet;
+
+import android.util.Base64;
+
+import com.android.phone.common.mail.Body;
+import com.android.phone.common.mail.MessagingException;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+
+public class TextBody implements Body {
+ String mBody;
+
+ public TextBody(String body) {
+ this.mBody = body;
+ }
+
+ @Override
+ public void writeTo(OutputStream out) throws IOException, MessagingException {
+ byte[] bytes = mBody.getBytes("UTF-8");
+ out.write(Base64.encode(bytes, Base64.CRLF));
+ }
+
+ /**
+ * Get the text of the body in it's unencoded format.
+ * @return
+ */
+ public String getText() {
+ return mBody;
+ }
+
+ /**
+ * Returns an InputStream that reads this body's text in UTF-8 format.
+ */
+ @Override
+ public InputStream getInputStream() throws MessagingException {
+ try {
+ byte[] b = mBody.getBytes("UTF-8");
+ return new ByteArrayInputStream(b);
+ }
+ catch (UnsupportedEncodingException usee) {
+ return null;
+ }
+ }
+}
diff --git a/src/com/android/phone/common/mail/store/ImapConnection.java b/src/com/android/phone/common/mail/store/ImapConnection.java
new file mode 100644
index 0000000..ace7029
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/ImapConnection.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store;
+
+import android.text.TextUtils;
+
+import com.android.phone.common.mail.AuthenticationFailedException;
+import com.android.phone.common.mail.CertificateValidationException;
+import com.android.phone.common.mail.MailTransport;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.store.imap.ImapConstants;
+import com.android.phone.common.mail.store.imap.ImapResponse;
+import com.android.phone.common.mail.store.imap.ImapResponseParser;
+import com.android.phone.common.mail.store.imap.ImapUtility;
+import com.android.phone.common.mail.utils.LogUtils;
+import com.android.phone.common.mail.store.ImapStore.ImapException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.net.ssl.SSLException;
+
+/**
+ * A cacheable class that stores the details for a single IMAP connection.
+ */
+public class ImapConnection {
+ private final String TAG = "ImapConnection";
+
+ private String mLoginPhrase;
+ private ImapStore mImapStore;
+ private MailTransport mTransport;
+ private ImapResponseParser mParser;
+
+ static final String IMAP_REDACTED_LOG = "[IMAP command redacted]";
+
+ /**
+ * Next tag to use. All connections associated to the same ImapStore instance share the same
+ * counter to make tests simpler.
+ * (Some of the tests involve multiple connections but only have a single counter to track the
+ * tag.)
+ */
+ private final AtomicInteger mNextCommandTag = new AtomicInteger(0);
+
+ ImapConnection(ImapStore store) {
+ setStore(store);
+ }
+
+ void setStore(ImapStore store) {
+ // TODO: maybe we should throw an exception if the connection is not closed here,
+ // if it's not currently closed, then we won't reopen it, so if the credentials have
+ // changed, the connection will not be reestablished.
+ mImapStore = store;
+ mLoginPhrase = null;
+ }
+
+ /**
+ * Generates and returns the phrase to be used for authentication. This will be a LOGIN with
+ * username and password.
+ *
+ * @return the login command string to sent to the IMAP server
+ */
+ String getLoginPhrase() {
+ if (mLoginPhrase == null) {
+ if (mImapStore.getUsername() != null && mImapStore.getPassword() != null) {
+ // build the LOGIN string once (instead of over-and-over again.)
+ // apply the quoting here around the built-up password
+ mLoginPhrase = ImapConstants.LOGIN + " " + mImapStore.getUsername() + " "
+ + ImapUtility.imapQuoted(mImapStore.getPassword());
+ }
+ }
+ return mLoginPhrase;
+ }
+
+ void open() throws IOException, MessagingException {
+ if (mTransport != null && mTransport.isOpen()) {
+ return;
+ }
+
+ try {
+ // copy configuration into a clean transport, if necessary
+ if (mTransport == null) {
+ mTransport = mImapStore.cloneTransport();
+ }
+
+ mTransport.open();
+
+ createParser();
+
+ // LOGIN
+ doLogin();
+ } catch (SSLException e) {
+ LogUtils.d(TAG, "SSLException ", e);
+ throw new CertificateValidationException(e.getMessage(), e);
+ } catch (IOException ioe) {
+ LogUtils.d(TAG, "IOException", ioe);
+ throw ioe;
+ } finally {
+ destroyResponses();
+ }
+ }
+
+ /**
+ * Closes the connection and releases all resources. This connection can not be used again
+ * until {@link #setStore(ImapStore)} is called.
+ */
+ void close() {
+ if (mTransport != null) {
+ mTransport.close();
+ mTransport = null;
+ }
+ destroyResponses();
+ mParser = null;
+ mImapStore = null;
+ }
+
+ /**
+ * Logs into the IMAP server
+ */
+ private void doLogin() throws IOException, MessagingException, AuthenticationFailedException {
+ try {
+ executeSimpleCommand(getLoginPhrase(), true);
+ } catch (ImapException ie) {
+ LogUtils.d(TAG, "ImapException", ie);
+ final String status = ie.getStatus();
+ final String code = ie.getResponseCode();
+ final String alertText = ie.getAlertText();
+
+ // if the response code indicates expired or bad credentials, throw a special exception
+ if (ImapConstants.AUTHENTICATIONFAILED.equals(code) ||
+ ImapConstants.EXPIRED.equals(code) ||
+ (ImapConstants.NO.equals(status) && TextUtils.isEmpty(code))) {
+ throw new AuthenticationFailedException(alertText, ie);
+ }
+
+ throw new MessagingException(alertText, ie);
+ }
+ }
+
+ /**
+ * Create an {@link ImapResponseParser} from {@code mTransport.getInputStream()} and
+ * set it to {@link #mParser}.
+ *
+ * If we already have an {@link ImapResponseParser}, we
+ * {@link #destroyResponses()} and throw it away.
+ */
+ private void createParser() {
+ destroyResponses();
+ mParser = new ImapResponseParser(mTransport.getInputStream());
+ }
+
+
+ void destroyResponses() {
+ if (mParser != null) {
+ mParser.destroyResponses();
+ }
+ }
+
+ ImapResponse readResponse() throws IOException, MessagingException {
+ return mParser.readResponse();
+ }
+
+ List<ImapResponse> executeSimpleCommand(String command)
+ throws IOException, MessagingException{
+ return executeSimpleCommand(command, false);
+ }
+
+ /**
+ * Send a single command to the server. The command will be preceded by an IMAP command
+ * tag and followed by \r\n (caller need not supply them).
+ * Execute a simple command at the server, a simple command being one that is sent in a single
+ * line of text
+ *
+ * @param command the command to send to the server
+ * @param sensitive whether the command should be redacted in logs (used for login)
+ * @return a list of ImapResponses
+ * @throws IOException
+ * @throws MessagingException
+ */
+ List<ImapResponse> executeSimpleCommand(String command, boolean sensitive)
+ throws IOException, MessagingException {
+ // TODO: It may be nice to catch IOExceptions and close the connection here.
+ // Currently, we expect callers to do that, but if they fail to we'll be in a broken state.
+ sendCommand(command, sensitive);
+ return getCommandResponses();
+ }
+
+ String sendCommand(String command, boolean sensitive) throws IOException, MessagingException {
+ open();
+
+ if (mTransport == null) {
+ throw new IOException("Null transport");
+ }
+ String tag = Integer.toString(mNextCommandTag.incrementAndGet());
+ String commandToSend = tag + " " + command;
+ mTransport.writeLine(commandToSend, (sensitive ? IMAP_REDACTED_LOG : command));
+
+ return tag;
+ }
+
+ /**
+ * Read and return all of the responses from the most recent command sent to the server
+ *
+ * @return a list of ImapResponses
+ * @throws IOException
+ * @throws MessagingException
+ */
+ List<ImapResponse> getCommandResponses() throws IOException, MessagingException {
+ final List<ImapResponse> responses = new ArrayList<ImapResponse>();
+ ImapResponse response;
+ do {
+ response = mParser.readResponse();
+ responses.add(response);
+ } while (!response.isTagged());
+
+ if (!response.isOk()) {
+ final String toString = response.toString();
+ final String status = response.getStatusOrEmpty().getString();
+ final String alert = response.getAlertTextOrEmpty().getString();
+ final String responseCode = response.getResponseCodeOrEmpty().getString();
+ destroyResponses();
+
+ // if the response code indicates an error occurred within the server, indicate that
+ if (ImapConstants.UNAVAILABLE.equals(responseCode)) {
+ throw new MessagingException(MessagingException.SERVER_ERROR, alert);
+ }
+
+ throw new ImapException(toString, status, alert, responseCode);
+ }
+ return responses;
+ }
+}
diff --git a/src/com/android/phone/common/mail/store/ImapFolder.java b/src/com/android/phone/common/mail/store/ImapFolder.java
new file mode 100644
index 0000000..faeb93f
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/ImapFolder.java
@@ -0,0 +1,767 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Base64DataException;
+
+import com.android.phone.common.mail.store.ImapStore.ImapException;
+import com.android.phone.common.mail.store.ImapStore.ImapMessage;
+import com.android.phone.common.mail.store.imap.ImapConstants;
+import com.android.phone.common.mail.store.imap.ImapElement;
+import com.android.phone.common.mail.store.imap.ImapList;
+import com.android.phone.common.mail.store.imap.ImapResponse;
+import com.android.phone.common.mail.store.imap.ImapString;
+import com.android.phone.common.mail.store.imap.ImapUtility;
+import com.android.phone.common.mail.AuthenticationFailedException;
+import com.android.phone.common.mail.Body;
+import com.android.phone.common.mail.FetchProfile;
+import com.android.phone.common.mail.Flag;
+import com.android.phone.common.mail.Message;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.Part;
+import com.android.phone.common.mail.internet.BinaryTempFileBody;
+import com.android.phone.common.mail.internet.MimeBodyPart;
+import com.android.phone.common.mail.internet.MimeHeader;
+import com.android.phone.common.mail.internet.MimeMultipart;
+import com.android.phone.common.mail.internet.MimeUtility;
+import com.android.phone.common.mail.utility.CountingOutputStream;
+import com.android.phone.common.mail.utility.EOLConvertingOutputStream;
+import com.android.phone.common.mail.utils.Utility;
+import com.android.phone.common.mail.utils.LogUtils;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.phone.common.R;
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class ImapFolder {
+ private static final String TAG = "ImapFolder";
+ private final static String[] PERMANENT_FLAGS =
+ { Flag.DELETED, Flag.SEEN, Flag.FLAGGED, Flag.ANSWERED };
+ private static final int COPY_BUFFER_SIZE = 16*1024;
+
+ private final ImapStore mStore;
+ private final String mName;
+ private int mMessageCount = -1;
+ private ImapConnection mConnection;
+ private String mMode;
+ private boolean mExists;
+ /** A set of hashes that can be used to track dirtiness */
+ Object mHash[];
+
+ public static final String MODE_READ_ONLY = "mode_read_only";
+ public static final String MODE_READ_WRITE = "mode_read_write";
+
+ public ImapFolder(ImapStore store, String name) {
+ mStore = store;
+ mName = name;
+ }
+
+ /**
+ * Callback for each message retrieval.
+ */
+ public interface MessageRetrievalListener {
+ public void messageRetrieved(Message message);
+ }
+
+ private void destroyResponses() {
+ if (mConnection != null) {
+ mConnection.destroyResponses();
+ }
+ }
+
+ public void open(String mode) throws MessagingException {
+ try {
+ if (isOpen()) {
+ if (mMode == mode) {
+ // Make sure the connection is valid.
+ // If it's not we'll close it down and continue on to get a new one.
+ try {
+ mConnection.executeSimpleCommand(ImapConstants.NOOP);
+ return;
+
+ } catch (IOException ioe) {
+ ioExceptionHandler(mConnection, ioe);
+ } finally {
+ destroyResponses();
+ }
+ } else {
+ // Return the connection to the pool, if exists.
+ close(false);
+ }
+ }
+ synchronized (this) {
+ mConnection = mStore.getConnection();
+ }
+ // * FLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk
+ // $MDNSent)
+ // * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft
+ // NonJunk $MDNSent \*)] Flags permitted.
+ // * 23 EXISTS
+ // * 0 RECENT
+ // * OK [UIDVALIDITY 1125022061] UIDs valid
+ // * OK [UIDNEXT 57576] Predicted next UID
+ // 2 OK [READ-WRITE] Select completed.
+ try {
+ doSelect();
+ } catch (IOException ioe) {
+ throw ioExceptionHandler(mConnection, ioe);
+ } finally {
+ destroyResponses();
+ }
+ } catch (AuthenticationFailedException e) {
+ // Don't cache this connection, so we're forced to try connecting/login again
+ mConnection = null;
+ close(false);
+ throw e;
+ } catch (MessagingException e) {
+ mExists = false;
+ close(false);
+ throw e;
+ }
+ }
+
+ public boolean isOpen() {
+ return mExists && mConnection != null;
+ }
+
+ public String getMode() {
+ return mMode;
+ }
+
+ public void close(boolean expunge) {
+ if (expunge) {
+ try {
+ expunge();
+ } catch (MessagingException e) {
+ LogUtils.e(TAG, e, "Messaging Exception");
+ }
+ }
+ mMessageCount = -1;
+ synchronized (this) {
+ mStore.closeConnection();
+ mConnection = null;
+ }
+ }
+
+ public int getMessageCount() {
+ return mMessageCount;
+ }
+
+ String[] getSearchUids(List<ImapResponse> responses) {
+ // S: * SEARCH 2 3 6
+ final ArrayList<String> uids = new ArrayList<String>();
+ for (ImapResponse response : responses) {
+ if (!response.isDataResponse(0, ImapConstants.SEARCH)) {
+ continue;
+ }
+ // Found SEARCH response data
+ for (int i = 1; i < response.size(); i++) {
+ ImapString s = response.getStringOrEmpty(i);
+ if (s.isString()) {
+ uids.add(s.getString());
+ }
+ }
+ }
+ return uids.toArray(Utility.EMPTY_STRINGS);
+ }
+
+ @VisibleForTesting
+ String[] searchForUids(String searchCriteria) throws MessagingException {
+ checkOpen();
+ try {
+ try {
+ final String command = ImapConstants.UID_SEARCH + " " + searchCriteria;
+ final String[] result = getSearchUids(mConnection.executeSimpleCommand(command));
+ LogUtils.d(TAG, "searchForUids '" + searchCriteria + "' results: " +
+ result.length);
+ return result;
+ } catch (ImapException me) {
+ LogUtils.d(TAG, "ImapException in search: " + searchCriteria, me);
+ return Utility.EMPTY_STRINGS; // Not found
+ } catch (IOException ioe) {
+ LogUtils.d(TAG, "IOException in search: " + searchCriteria, ioe);
+ throw ioExceptionHandler(mConnection, ioe);
+ }
+ } finally {
+ destroyResponses();
+ }
+ }
+
+
+ public Message getMessage(String uid) throws MessagingException {
+ checkOpen();
+
+ final String[] uids = searchForUids(ImapConstants.UID + " " + uid);
+ for (int i = 0; i < uids.length; i++) {
+ if (uids[i].equals(uid)) {
+ return new ImapMessage(uid, this);
+ }
+ }
+ return null;
+ }
+
+ @VisibleForTesting
+ protected static boolean isAsciiString(String str) {
+ int len = str.length();
+ for (int i = 0; i < len; i++) {
+ char c = str.charAt(i);
+ if (c >= 128) return false;
+ }
+ return true;
+ }
+
+ public Message[] getMessages(String[] uids) throws MessagingException {
+ if (uids == null) {
+ uids = searchForUids("1:* NOT DELETED");
+ }
+ return getMessagesInternal(uids);
+ }
+
+ public Message[] getMessagesInternal(String[] uids) {
+ final ArrayList<Message> messages = new ArrayList<Message>(uids.length);
+ for (int i = 0; i < uids.length; i++) {
+ final String uid = uids[i];
+ final ImapMessage message = new ImapMessage(uid, this);
+ messages.add(message);
+ }
+ return messages.toArray(Message.EMPTY_ARRAY);
+ }
+
+ public void fetch(Message[] messages, FetchProfile fp,
+ MessageRetrievalListener listener) throws MessagingException {
+ try {
+ fetchInternal(messages, fp, listener);
+ } catch (RuntimeException e) { // Probably a parser error.
+ LogUtils.w(TAG, "Exception detected: " + e.getMessage());
+ throw e;
+ }
+ }
+
+ public void fetchInternal(Message[] messages, FetchProfile fp,
+ MessageRetrievalListener listener) throws MessagingException {
+ if (messages.length == 0) {
+ return;
+ }
+ checkOpen();
+ HashMap<String, Message> messageMap = new HashMap<String, Message>();
+ for (Message m : messages) {
+ messageMap.put(m.getUid(), m);
+ }
+
+ /*
+ * Figure out what command we are going to run:
+ * FLAGS - UID FETCH (FLAGS)
+ * ENVELOPE - UID FETCH (INTERNALDATE UID RFC822.SIZE FLAGS BODY.PEEK[
+ * HEADER.FIELDS (date subject from content-type to cc)])
+ * STRUCTURE - UID FETCH (BODYSTRUCTURE)
+ * BODY_SANE - UID FETCH (BODY.PEEK[]<0.N>) where N = max bytes returned
+ * BODY - UID FETCH (BODY.PEEK[])
+ * Part - UID FETCH (BODY.PEEK[ID]) where ID = mime part ID
+ */
+
+ final LinkedHashSet<String> fetchFields = new LinkedHashSet<String>();
+
+ fetchFields.add(ImapConstants.UID);
+ if (fp.contains(FetchProfile.Item.FLAGS)) {
+ fetchFields.add(ImapConstants.FLAGS);
+ }
+ if (fp.contains(FetchProfile.Item.ENVELOPE)) {
+ fetchFields.add(ImapConstants.INTERNALDATE);
+ fetchFields.add(ImapConstants.RFC822_SIZE);
+ fetchFields.add(ImapConstants.FETCH_FIELD_HEADERS);
+ }
+ if (fp.contains(FetchProfile.Item.STRUCTURE)) {
+ fetchFields.add(ImapConstants.BODYSTRUCTURE);
+ }
+
+ if (fp.contains(FetchProfile.Item.BODY_SANE)) {
+ fetchFields.add(ImapConstants.FETCH_FIELD_BODY_PEEK_SANE);
+ }
+ if (fp.contains(FetchProfile.Item.BODY)) {
+ fetchFields.add(ImapConstants.FETCH_FIELD_BODY_PEEK);
+ }
+
+ // TODO Why are we only fetching the first part given?
+ final Part fetchPart = fp.getFirstPart();
+ if (fetchPart != null) {
+ final String[] partIds =
+ fetchPart.getHeader(MimeHeader.HEADER_ANDROID_ATTACHMENT_STORE_DATA);
+ // TODO Why can a single part have more than one Id? And why should we only fetch
+ // the first id if there are more than one?
+ if (partIds != null) {
+ fetchFields.add(ImapConstants.FETCH_FIELD_BODY_PEEK_BARE
+ + "[" + partIds[0] + "]");
+ }
+ }
+
+ try {
+ mConnection.sendCommand(String.format(Locale.US,
+ ImapConstants.UID_FETCH + " %s (%s)", ImapStore.joinMessageUids(messages),
+ Utility.combine(fetchFields.toArray(new String[fetchFields.size()]), ' ')
+ ), false);
+ ImapResponse response;
+ do {
+ response = null;
+ try {
+ response = mConnection.readResponse();
+
+ if (!response.isDataResponse(1, ImapConstants.FETCH)) {
+ continue; // Ignore
+ }
+ final ImapList fetchList = response.getListOrEmpty(2);
+ final String uid = fetchList.getKeyedStringOrEmpty(ImapConstants.UID)
+ .getString();
+ if (TextUtils.isEmpty(uid)) continue;
+
+ ImapMessage message = (ImapMessage) messageMap.get(uid);
+ if (message == null) continue;
+
+ if (fp.contains(FetchProfile.Item.FLAGS)) {
+ final ImapList flags =
+ fetchList.getKeyedListOrEmpty(ImapConstants.FLAGS);
+ for (int i = 0, count = flags.size(); i < count; i++) {
+ final ImapString flag = flags.getStringOrEmpty(i);
+ if (flag.is(ImapConstants.FLAG_DELETED)) {
+ message.setFlagInternal(Flag.DELETED, true);
+ } else if (flag.is(ImapConstants.FLAG_ANSWERED)) {
+ message.setFlagInternal(Flag.ANSWERED, true);
+ } else if (flag.is(ImapConstants.FLAG_SEEN)) {
+ message.setFlagInternal(Flag.SEEN, true);
+ } else if (flag.is(ImapConstants.FLAG_FLAGGED)) {
+ message.setFlagInternal(Flag.FLAGGED, true);
+ }
+ }
+ }
+ if (fp.contains(FetchProfile.Item.ENVELOPE)) {
+ final Date internalDate = fetchList.getKeyedStringOrEmpty(
+ ImapConstants.INTERNALDATE).getDateOrNull();
+ final int size = fetchList.getKeyedStringOrEmpty(
+ ImapConstants.RFC822_SIZE).getNumberOrZero();
+ final String header = fetchList.getKeyedStringOrEmpty(
+ ImapConstants.BODY_BRACKET_HEADER, true).getString();
+
+ message.setInternalDate(internalDate);
+ message.setSize(size);
+ message.parse(Utility.streamFromAsciiString(header));
+ }
+ if (fp.contains(FetchProfile.Item.STRUCTURE)) {
+ ImapList bs = fetchList.getKeyedListOrEmpty(
+ ImapConstants.BODYSTRUCTURE);
+ if (!bs.isEmpty()) {
+ try {
+ parseBodyStructure(bs, message, ImapConstants.TEXT);
+ } catch (MessagingException e) {
+ LogUtils.v(TAG, e, "Error handling message");
+ message.setBody(null);
+ }
+ }
+ }
+ if (fp.contains(FetchProfile.Item.BODY)
+ || fp.contains(FetchProfile.Item.BODY_SANE)) {
+ // Body is keyed by "BODY[]...".
+ // Previously used "BODY[..." but this can be confused with "BODY[HEADER..."
+ // TODO Should we accept "RFC822" as well??
+ ImapString body = fetchList.getKeyedStringOrEmpty("BODY[]", true);
+ InputStream bodyStream = body.getAsStream();
+ message.parse(bodyStream);
+ }
+ if (fetchPart != null) {
+ InputStream bodyStream =
+ fetchList.getKeyedStringOrEmpty("BODY[", true).getAsStream();
+ String encodings[] = fetchPart.getHeader(
+ MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING);
+
+ String contentTransferEncoding = null;
+ if (encodings != null && encodings.length > 0) {
+ contentTransferEncoding = encodings[0];
+ } else {
+ // According to http://tools.ietf.org/html/rfc2045#section-6.1
+ // "7bit" is the default.
+ contentTransferEncoding = "7bit";
+ }
+
+ try {
+ // TODO Don't create 2 temp files.
+ // decodeBody creates BinaryTempFileBody, but we could avoid this
+ // if we implement ImapStringBody.
+ // (We'll need to share a temp file. Protect it with a ref-count.)
+ fetchPart.setBody(decodeBody(mStore.getContext(), bodyStream,
+ contentTransferEncoding, fetchPart.getSize(), listener));
+ } catch(Exception e) {
+ // TODO: Figure out what kinds of exceptions might actually be thrown
+ // from here. This blanket catch-all is because we're not sure what to
+ // do if we don't have a contentTransferEncoding, and we don't have
+ // time to figure out what exceptions might be thrown.
+ LogUtils.e(TAG, "Error fetching body %s", e);
+ }
+ }
+
+ if (listener != null) {
+ listener.messageRetrieved(message);
+ }
+ } finally {
+ destroyResponses();
+ }
+ } while (!response.isTagged());
+ } catch (IOException ioe) {
+ throw ioExceptionHandler(mConnection, ioe);
+ }
+ }
+
+ /**
+ * Removes any content transfer encoding from the stream and returns a Body.
+ * This code is taken/condensed from MimeUtility.decodeBody
+ */
+ private static Body decodeBody(Context context,InputStream in, String contentTransferEncoding,
+ int size, MessageRetrievalListener listener) throws IOException {
+ // Get a properly wrapped input stream
+ in = MimeUtility.getInputStreamForContentTransferEncoding(in, contentTransferEncoding);
+ BinaryTempFileBody tempBody = new BinaryTempFileBody();
+ OutputStream out = tempBody.getOutputStream();
+ try {
+ byte[] buffer = new byte[COPY_BUFFER_SIZE];
+ int n = 0;
+ int count = 0;
+ while (-1 != (n = in.read(buffer))) {
+ out.write(buffer, 0, n);
+ count += n;
+ }
+ } catch (Base64DataException bde) {
+ String warning = "\n\n" + context.getString(R.string.message_decode_error);
+ out.write(warning.getBytes());
+ } finally {
+ out.close();
+ }
+ return tempBody;
+ }
+
+ public String[] getPermanentFlags() {
+ return PERMANENT_FLAGS;
+ }
+
+ /**
+ * Handle any untagged responses that the caller doesn't care to handle themselves.
+ * @param responses
+ */
+ private void handleUntaggedResponses(List<ImapResponse> responses) {
+ for (ImapResponse response : responses) {
+ handleUntaggedResponse(response);
+ }
+ }
+
+ /**
+ * Handle an untagged response that the caller doesn't care to handle themselves.
+ * @param response
+ */
+ private void handleUntaggedResponse(ImapResponse response) {
+ if (response.isDataResponse(1, ImapConstants.EXISTS)) {
+ mMessageCount = response.getStringOrEmpty(0).getNumberOrZero();
+ }
+ }
+
+ private static void parseBodyStructure(ImapList bs, Part part, String id)
+ throws MessagingException {
+ if (bs.getElementOrNone(0).isList()) {
+ /*
+ * This is a multipart/*
+ */
+ MimeMultipart mp = new MimeMultipart();
+ for (int i = 0, count = bs.size(); i < count; i++) {
+ ImapElement e = bs.getElementOrNone(i);
+ if (e.isList()) {
+ /*
+ * For each part in the message we're going to add a new BodyPart and parse
+ * into it.
+ */
+ MimeBodyPart bp = new MimeBodyPart();
+ if (id.equals(ImapConstants.TEXT)) {
+ parseBodyStructure(bs.getListOrEmpty(i), bp, Integer.toString(i + 1));
+
+ } else {
+ parseBodyStructure(bs.getListOrEmpty(i), bp, id + "." + (i + 1));
+ }
+ mp.addBodyPart(bp);
+
+ } else {
+ if (e.isString()) {
+ mp.setSubType(bs.getStringOrEmpty(i).getString().toLowerCase(Locale.US));
+ }
+ break; // Ignore the rest of the list.
+ }
+ }
+ part.setBody(mp);
+ } else {
+ /*
+ * This is a body. We need to add as much information as we can find out about
+ * it to the Part.
+ */
+
+ /*
+ body type
+ body subtype
+ body parameter parenthesized list
+ body id
+ body description
+ body encoding
+ body size
+ */
+
+ final ImapString type = bs.getStringOrEmpty(0);
+ final ImapString subType = bs.getStringOrEmpty(1);
+ final String mimeType =
+ (type.getString() + "/" + subType.getString()).toLowerCase(Locale.US);
+
+ final ImapList bodyParams = bs.getListOrEmpty(2);
+ final ImapString cid = bs.getStringOrEmpty(3);
+ final ImapString encoding = bs.getStringOrEmpty(5);
+ final int size = bs.getStringOrEmpty(6).getNumberOrZero();
+
+ if (MimeUtility.mimeTypeMatches(mimeType, MimeUtility.MIME_TYPE_RFC822)) {
+ // A body type of type MESSAGE and subtype RFC822
+ // contains, immediately after the basic fields, the
+ // envelope structure, body structure, and size in
+ // text lines of the encapsulated message.
+ // [MESSAGE, RFC822, [NAME, filename.eml], NIL, NIL, 7BIT, 5974, NIL,
+ // [INLINE, [FILENAME*0, Fwd: Xxx..., FILENAME*1, filename.eml]], NIL]
+ /*
+ * This will be caught by fetch and handled appropriately.
+ */
+ throw new MessagingException("BODYSTRUCTURE " + MimeUtility.MIME_TYPE_RFC822
+ + " not yet supported.");
+ }
+
+ /*
+ * Set the content type with as much information as we know right now.
+ */
+ final StringBuilder contentType = new StringBuilder(mimeType);
+
+ /*
+ * If there are body params we might be able to get some more information out
+ * of them.
+ */
+ for (int i = 1, count = bodyParams.size(); i < count; i += 2) {
+
+ // TODO We need to convert " into %22, but
+ // because MimeUtility.getHeaderParameter doesn't recognize it,
+ // we can't fix it for now.
+ contentType.append(String.format(";\n %s=\"%s\"",
+ bodyParams.getStringOrEmpty(i - 1).getString(),
+ bodyParams.getStringOrEmpty(i).getString()));
+ }
+
+ part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, contentType.toString());
+
+ // Extension items
+ final ImapList bodyDisposition;
+
+ if (type.is(ImapConstants.TEXT) && bs.getElementOrNone(9).isList()) {
+ // If media-type is TEXT, 9th element might be: [body-fld-lines] := number
+ // So, if it's not a list, use 10th element.
+ // (Couldn't find evidence in the RFC if it's ALWAYS 10th element.)
+ bodyDisposition = bs.getListOrEmpty(9);
+ } else {
+ bodyDisposition = bs.getListOrEmpty(8);
+ }
+
+ final StringBuilder contentDisposition = new StringBuilder();
+
+ if (bodyDisposition.size() > 0) {
+ final String bodyDisposition0Str =
+ bodyDisposition.getStringOrEmpty(0).getString().toLowerCase(Locale.US);
+ if (!TextUtils.isEmpty(bodyDisposition0Str)) {
+ contentDisposition.append(bodyDisposition0Str);
+ }
+
+ final ImapList bodyDispositionParams = bodyDisposition.getListOrEmpty(1);
+ if (!bodyDispositionParams.isEmpty()) {
+ /*
+ * If there is body disposition information we can pull some more
+ * information about the attachment out.
+ */
+ for (int i = 1, count = bodyDispositionParams.size(); i < count; i += 2) {
+
+ // TODO We need to convert " into %22. See above.
+ contentDisposition.append(String.format(Locale.US, ";\n %s=\"%s\"",
+ bodyDispositionParams.getStringOrEmpty(i - 1)
+ .getString().toLowerCase(Locale.US),
+ bodyDispositionParams.getStringOrEmpty(i).getString()));
+ }
+ }
+ }
+
+ if ((size > 0)
+ && (MimeUtility.getHeaderParameter(contentDisposition.toString(), "size")
+ == null)) {
+ contentDisposition.append(String.format(Locale.US, ";\n size=%d", size));
+ }
+
+ if (contentDisposition.length() > 0) {
+ /*
+ * Set the content disposition containing at least the size. Attachment
+ * handling code will use this down the road.
+ */
+ part.setHeader(MimeHeader.HEADER_CONTENT_DISPOSITION,
+ contentDisposition.toString());
+ }
+
+ /*
+ * Set the Content-Transfer-Encoding header. Attachment code will use this
+ * to parse the body.
+ */
+ if (!encoding.isEmpty()) {
+ part.setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING,
+ encoding.getString());
+ }
+
+ /*
+ * Set the Content-ID header.
+ */
+ if (!cid.isEmpty()) {
+ part.setHeader(MimeHeader.HEADER_CONTENT_ID, cid.getString());
+ }
+
+ if (size > 0) {
+ if (part instanceof ImapMessage) {
+ ((ImapMessage) part).setSize(size);
+ } else if (part instanceof MimeBodyPart) {
+ ((MimeBodyPart) part).setSize(size);
+ } else {
+ throw new MessagingException("Unknown part type " + part.toString());
+ }
+ }
+ part.setHeader(MimeHeader.HEADER_ANDROID_ATTACHMENT_STORE_DATA, id);
+ }
+
+ }
+
+ public Message[] expunge() throws MessagingException {
+ checkOpen();
+ try {
+ handleUntaggedResponses(mConnection.executeSimpleCommand(ImapConstants.EXPUNGE));
+ } catch (IOException ioe) {
+ throw ioExceptionHandler(mConnection, ioe);
+ } finally {
+ destroyResponses();
+ }
+ return null;
+ }
+
+ public void setFlags(Message[] messages, String[] flags, boolean value)
+ throws MessagingException {
+ checkOpen();
+
+ String allFlags = "";
+ if (flags.length > 0) {
+ StringBuilder flagList = new StringBuilder();
+ for (int i = 0, count = flags.length; i < count; i++) {
+ String flag = flags[i];
+ if (flag == Flag.SEEN) {
+ flagList.append(" " + ImapConstants.FLAG_SEEN);
+ } else if (flag == Flag.DELETED) {
+ flagList.append(" " + ImapConstants.FLAG_DELETED);
+ } else if (flag == Flag.FLAGGED) {
+ flagList.append(" " + ImapConstants.FLAG_FLAGGED);
+ } else if (flag == Flag.ANSWERED) {
+ flagList.append(" " + ImapConstants.FLAG_ANSWERED);
+ }
+ }
+ allFlags = flagList.substring(1);
+ }
+ try {
+ mConnection.executeSimpleCommand(String.format(Locale.US,
+ ImapConstants.UID_STORE + " %s %s" + ImapConstants.FLAGS_SILENT + " (%s)",
+ ImapStore.joinMessageUids(messages),
+ value ? "+" : "-",
+ allFlags));
+
+ } catch (IOException ioe) {
+ throw ioExceptionHandler(mConnection, ioe);
+ } finally {
+ destroyResponses();
+ }
+ }
+
+ /**
+ * Selects the folder for use. Before performing any operations on this folder, it
+ * must be selected.
+ */
+ private void doSelect() throws IOException, MessagingException {
+ final List<ImapResponse> responses = mConnection.executeSimpleCommand(
+ String.format(Locale.US, ImapConstants.SELECT + " \"%s\"", mName));
+
+ // Assume the folder is opened read-write; unless we are notified otherwise
+ mMode = MODE_READ_WRITE;
+ int messageCount = -1;
+ for (ImapResponse response : responses) {
+ if (response.isDataResponse(1, ImapConstants.EXISTS)) {
+ messageCount = response.getStringOrEmpty(0).getNumberOrZero();
+ } else if (response.isOk()) {
+ final ImapString responseCode = response.getResponseCodeOrEmpty();
+ if (responseCode.is(ImapConstants.READ_ONLY)) {
+ mMode = MODE_READ_ONLY;
+ } else if (responseCode.is(ImapConstants.READ_WRITE)) {
+ mMode = MODE_READ_WRITE;
+ }
+ } else if (response.isTagged()) { // Not OK
+ throw new MessagingException("Can't open mailbox: "
+ + response.getStatusResponseTextOrEmpty());
+ }
+ }
+ if (messageCount == -1) {
+ throw new MessagingException("Did not find message count during select");
+ }
+ mMessageCount = messageCount;
+ mExists = true;
+ }
+
+ private void checkOpen() throws MessagingException {
+ if (!isOpen()) {
+ throw new MessagingException("Folder " + mName + " is not open.");
+ }
+ }
+
+ private MessagingException ioExceptionHandler(ImapConnection connection, IOException ioe) {
+ LogUtils.d(TAG, "IO Exception detected: ", ioe);
+ connection.close();
+ if (connection == mConnection) {
+ mConnection = null; // To prevent close() from returning the connection to the pool.
+ close(false);
+ }
+ return new MessagingException(MessagingException.IOERROR, "IO Error", ioe);
+ }
+
+ public Message createMessage(String uid) {
+ return new ImapMessage(uid, this);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/ImapStore.java b/src/com/android/phone/common/mail/store/ImapStore.java
new file mode 100644
index 0000000..1c91e76
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/ImapStore.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store;
+
+import android.content.Context;
+
+import com.android.phone.common.mail.internet.MimeMessage;
+import com.android.phone.common.mail.MailTransport;
+import com.android.phone.common.mail.Message;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.store.ImapFolder;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ImapStore {
+ /**
+ * A global suggestion to Store implementors on how much of the body
+ * should be returned on FetchProfile.Item.BODY_SANE requests. We'll use 125k now.
+ */
+ public static final int FETCH_BODY_SANE_SUGGESTED_SIZE = (125 * 1024);
+ private Context mContext;
+ private String mUsername;
+ private String mPassword;
+ private MailTransport mTransport;
+ private ImapConnection mConnection;
+
+ public static final int FLAG_NONE = 0x00; // No flags
+ public static final int FLAG_SSL = 0x01; // Use SSL
+ public static final int FLAG_TLS = 0x02; // Use TLS
+ public static final int FLAG_AUTHENTICATE = 0x04; // Use name/password for authentication
+ public static final int FLAG_TRUST_ALL = 0x08; // Trust all certificates
+ public static final int FLAG_OAUTH = 0x10; // Use OAuth for authentication
+
+ /**
+ * Contains all the information necessary to log into an imap server
+ */
+ public ImapStore(Context context, String username, String password, int port,
+ String serverName, int flags) {
+ mContext = context;
+ mUsername = username;
+ mPassword = password;
+ mTransport = new MailTransport(context, serverName, port, flags);
+ }
+
+ public Context getContext() {
+ return mContext;
+ }
+
+ public String getUsername() {
+ return mUsername;
+ }
+
+ public String getPassword() {
+ return mPassword;
+ }
+
+ /** Returns a clone of the transport associated with this store. */
+ MailTransport cloneTransport() {
+ return mTransport.clone();
+ }
+
+ /**
+ * Returns UIDs of Messages joined with "," as the separator.
+ */
+ static String joinMessageUids(Message[] messages) {
+ StringBuilder sb = new StringBuilder();
+ boolean notFirst = false;
+ for (Message m : messages) {
+ if (notFirst) {
+ sb.append(',');
+ }
+ sb.append(m.getUid());
+ notFirst = true;
+ }
+ return sb.toString();
+ }
+
+ static class ImapMessage extends MimeMessage {
+ private ImapFolder mFolder;
+
+ ImapMessage(String uid, ImapFolder folder) {
+ mUid = uid;
+ mFolder = folder;
+ }
+
+ public void setSize(int size) {
+ mSize = size;
+ }
+
+ @Override
+ public void parse(InputStream in) throws IOException, MessagingException {
+ super.parse(in);
+ }
+
+ public void setFlagInternal(String flag, boolean set) throws MessagingException {
+ super.setFlag(flag, set);
+ }
+
+ @Override
+ public void setFlag(String flag, boolean set) throws MessagingException {
+ super.setFlag(flag, set);
+ mFolder.setFlags(new Message[] { this }, new String[] { flag }, set);
+ }
+ }
+
+ static class ImapException extends MessagingException {
+ private static final long serialVersionUID = 1L;
+
+ private final String mStatus;
+ private final String mAlertText;
+ private final String mResponseCode;
+
+ public ImapException(String message, String status, String alertText,
+ String responseCode) {
+ super(message);
+ mStatus = status;
+ mAlertText = alertText;
+ mResponseCode = responseCode;
+ }
+
+ public String getStatus() {
+ return mStatus;
+ }
+
+ public String getAlertText() {
+ return mAlertText;
+ }
+
+ public String getResponseCode() {
+ return mResponseCode;
+ }
+ }
+
+ public void closeConnection() {
+ if (mConnection != null) {
+ mConnection.close();
+ mConnection = null;
+ }
+ }
+
+ public ImapConnection getConnection() {
+ if (mConnection == null) {
+ mConnection = new ImapConnection(this);
+ }
+ return mConnection;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapConstants.java b/src/com/android/phone/common/mail/store/imap/ImapConstants.java
new file mode 100644
index 0000000..cde1616
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapConstants.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+import com.android.phone.common.mail.store.ImapStore;
+
+import java.util.Locale;
+
+public final class ImapConstants {
+ private ImapConstants() {}
+
+ public static final String FETCH_FIELD_BODY_PEEK_BARE = "BODY.PEEK";
+ public static final String FETCH_FIELD_BODY_PEEK = FETCH_FIELD_BODY_PEEK_BARE + "[]";
+ public static final String FETCH_FIELD_BODY_PEEK_SANE = String.format(
+ Locale.US, "BODY.PEEK[]<0.%d>", ImapStore.FETCH_BODY_SANE_SUGGESTED_SIZE);
+ public static final String FETCH_FIELD_HEADERS =
+ "BODY.PEEK[HEADER.FIELDS (date subject from content-type to cc message-id)]";
+
+ public static final String ALERT = "ALERT";
+ public static final String APPEND = "APPEND";
+ public static final String AUTHENTICATE = "AUTHENTICATE";
+ public static final String BAD = "BAD";
+ public static final String BADCHARSET = "BADCHARSET";
+ public static final String BODY = "BODY";
+ public static final String BODY_BRACKET_HEADER = "BODY[HEADER";
+ public static final String BODYSTRUCTURE = "BODYSTRUCTURE";
+ public static final String BYE = "BYE";
+ public static final String CAPABILITY = "CAPABILITY";
+ public static final String CHECK = "CHECK";
+ public static final String CLOSE = "CLOSE";
+ public static final String COPY = "COPY";
+ public static final String COPYUID = "COPYUID";
+ public static final String CREATE = "CREATE";
+ public static final String DELETE = "DELETE";
+ public static final String EXAMINE = "EXAMINE";
+ public static final String EXISTS = "EXISTS";
+ public static final String EXPUNGE = "EXPUNGE";
+ public static final String FETCH = "FETCH";
+ public static final String FLAG_ANSWERED = "\\ANSWERED";
+ public static final String FLAG_DELETED = "\\DELETED";
+ public static final String FLAG_FLAGGED = "\\FLAGGED";
+ public static final String FLAG_NO_SELECT = "\\NOSELECT";
+ public static final String FLAG_SEEN = "\\SEEN";
+ public static final String FLAGS = "FLAGS";
+ public static final String FLAGS_SILENT = "FLAGS.SILENT";
+ public static final String ID = "ID";
+ public static final String INBOX = "INBOX";
+ public static final String INTERNALDATE = "INTERNALDATE";
+ public static final String LIST = "LIST";
+ public static final String LOGIN = "LOGIN";
+ public static final String LOGOUT = "LOGOUT";
+ public static final String LSUB = "LSUB";
+ public static final String NAMESPACE = "NAMESPACE";
+ public static final String NO = "NO";
+ public static final String NOOP = "NOOP";
+ public static final String OK = "OK";
+ public static final String PARSE = "PARSE";
+ public static final String PERMANENTFLAGS = "PERMANENTFLAGS";
+ public static final String PREAUTH = "PREAUTH";
+ public static final String READ_ONLY = "READ-ONLY";
+ public static final String READ_WRITE = "READ-WRITE";
+ public static final String RENAME = "RENAME";
+ public static final String RFC822_SIZE = "RFC822.SIZE";
+ public static final String SEARCH = "SEARCH";
+ public static final String SELECT = "SELECT";
+ public static final String STARTTLS = "STARTTLS";
+ public static final String STATUS = "STATUS";
+ public static final String STORE = "STORE";
+ public static final String SUBSCRIBE = "SUBSCRIBE";
+ public static final String TEXT = "TEXT";
+ public static final String TRYCREATE = "TRYCREATE";
+ public static final String UID = "UID";
+ public static final String UID_COPY = "UID COPY";
+ public static final String UID_FETCH = "UID FETCH";
+ public static final String UID_SEARCH = "UID SEARCH";
+ public static final String UID_STORE = "UID STORE";
+ public static final String UIDNEXT = "UIDNEXT";
+ public static final String UIDPLUS = "UIDPLUS";
+ public static final String UIDVALIDITY = "UIDVALIDITY";
+ public static final String UNSEEN = "UNSEEN";
+ public static final String UNSUBSCRIBE = "UNSUBSCRIBE";
+ public static final String XOAUTH2 = "XOAUTH2";
+ public static final String APPENDUID = "APPENDUID";
+ public static final String NIL = "NIL";
+
+ /** response codes within IMAP responses */
+ public static final String EXPIRED = "EXPIRED";
+ public static final String AUTHENTICATIONFAILED = "AUTHENTICATIONFAILED";
+ public static final String UNAVAILABLE = "UNAVAILABLE";
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapElement.java b/src/com/android/phone/common/mail/store/imap/ImapElement.java
new file mode 100644
index 0000000..2d1824e
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapElement.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+/**
+ * Class representing "element"s in IMAP responses.
+ *
+ * <p>Class hierarchy:
+ * <pre>
+ * ImapElement
+ * |
+ * |-- ImapElement.NONE (for 'index out of range')
+ * |
+ * |-- ImapList (isList() == true)
+ * | |
+ * | |-- ImapList.EMPTY
+ * | |
+ * | --- ImapResponse
+ * |
+ * --- ImapString (isString() == true)
+ * |
+ * |-- ImapString.EMPTY
+ * |
+ * |-- ImapSimpleString
+ * |
+ * |-- ImapMemoryLiteral
+ * |
+ * --- ImapTempFileLiteral
+ * </pre>
+ */
+public abstract class ImapElement {
+ /**
+ * An element that is returned by {@link ImapList#getElementOrNone} to indicate an index
+ * is out of range.
+ */
+ public static final ImapElement NONE = new ImapElement() {
+ @Override public void destroy() {
+ // Don't call super.destroy().
+ // It's a shared object. We don't want the mDestroyed to be set on this.
+ }
+
+ @Override public boolean isList() {
+ return false;
+ }
+
+ @Override public boolean isString() {
+ return false;
+ }
+
+ @Override public String toString() {
+ return "[NO ELEMENT]";
+ }
+
+ @Override
+ public boolean equalsForTest(ImapElement that) {
+ return super.equalsForTest(that);
+ }
+ };
+
+ private boolean mDestroyed = false;
+
+ public abstract boolean isList();
+
+ public abstract boolean isString();
+
+ protected boolean isDestroyed() {
+ return mDestroyed;
+ }
+
+ /**
+ * Clean up the resources used by the instance.
+ * It's for removing a temp file used by {@link ImapTempFileLiteral}.
+ */
+ public void destroy() {
+ mDestroyed = true;
+ }
+
+ /**
+ * Throws {@link RuntimeException} if it's already destroyed.
+ */
+ protected final void checkNotDestroyed() {
+ if (mDestroyed) {
+ throw new RuntimeException("Already destroyed");
+ }
+ }
+
+ /**
+ * Return a string that represents this object; it's purely for the debug purpose. Don't
+ * mistake it for {@link ImapString#getString}.
+ *
+ * Abstract to force subclasses to implement it.
+ */
+ @Override
+ public abstract String toString();
+
+ /**
+ * The equals implementation that is intended to be used only for unit testing.
+ * (Because it may be heavy and has a special sense of "equal" for testing.)
+ */
+ public boolean equalsForTest(ImapElement that) {
+ if (that == null) {
+ return false;
+ }
+ return this.getClass() == that.getClass(); // Has to be the same class.
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapList.java b/src/com/android/phone/common/mail/store/imap/ImapList.java
new file mode 100644
index 0000000..93adc4f
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapList.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+import java.util.ArrayList;
+
+/**
+ * Class represents an IMAP list.
+ */
+public class ImapList extends ImapElement {
+ /**
+ * {@link ImapList} representing an empty list.
+ */
+ public static final ImapList EMPTY = new ImapList() {
+ @Override public void destroy() {
+ // Don't call super.destroy().
+ // It's a shared object. We don't want the mDestroyed to be set on this.
+ }
+
+ @Override void add(ImapElement e) {
+ throw new RuntimeException();
+ }
+ };
+
+ private ArrayList<ImapElement> mList = new ArrayList<ImapElement>();
+
+ /* package */ void add(ImapElement e) {
+ if (e == null) {
+ throw new RuntimeException("Can't add null");
+ }
+ mList.add(e);
+ }
+
+ @Override
+ public final boolean isString() {
+ return false;
+ }
+
+ @Override
+ public final boolean isList() {
+ return true;
+ }
+
+ public final int size() {
+ return mList.size();
+ }
+
+ public final boolean isEmpty() {
+ return size() == 0;
+ }
+
+ /**
+ * Return true if the element at {@code index} exists, is string, and equals to {@code s}.
+ * (case insensitive)
+ */
+ public final boolean is(int index, String s) {
+ return is(index, s, false);
+ }
+
+ /**
+ * Same as {@link #is(int, String)}, but does the prefix match if {@code prefixMatch}.
+ */
+ public final boolean is(int index, String s, boolean prefixMatch) {
+ if (!prefixMatch) {
+ return getStringOrEmpty(index).is(s);
+ } else {
+ return getStringOrEmpty(index).startsWith(s);
+ }
+ }
+
+ /**
+ * Return the element at {@code index}.
+ * If {@code index} is out of range, returns {@link ImapElement#NONE}.
+ */
+ public final ImapElement getElementOrNone(int index) {
+ return (index >= mList.size()) ? ImapElement.NONE : mList.get(index);
+ }
+
+ /**
+ * Return the element at {@code index} if it's a list.
+ * If {@code index} is out of range or not a list, returns {@link ImapList#EMPTY}.
+ */
+ public final ImapList getListOrEmpty(int index) {
+ ImapElement el = getElementOrNone(index);
+ return el.isList() ? (ImapList) el : EMPTY;
+ }
+
+ /**
+ * Return the element at {@code index} if it's a string.
+ * If {@code index} is out of range or not a string, returns {@link ImapString#EMPTY}.
+ */
+ public final ImapString getStringOrEmpty(int index) {
+ ImapElement el = getElementOrNone(index);
+ return el.isString() ? (ImapString) el : ImapString.EMPTY;
+ }
+
+ /**
+ * Return an element keyed by {@code key}. Return null if not found. {@code key} has to be
+ * at an even index.
+ */
+ /* package */ final ImapElement getKeyedElementOrNull(String key, boolean prefixMatch) {
+ for (int i = 1; i < size(); i += 2) {
+ if (is(i-1, key, prefixMatch)) {
+ return mList.get(i);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return an {@link ImapList} keyed by {@code key}.
+ * Return {@link ImapList#EMPTY} if not found.
+ */
+ public final ImapList getKeyedListOrEmpty(String key) {
+ return getKeyedListOrEmpty(key, false);
+ }
+
+ /**
+ * Return an {@link ImapList} keyed by {@code key}.
+ * Return {@link ImapList#EMPTY} if not found.
+ */
+ public final ImapList getKeyedListOrEmpty(String key, boolean prefixMatch) {
+ ImapElement e = getKeyedElementOrNull(key, prefixMatch);
+ return (e != null) ? ((ImapList) e) : ImapList.EMPTY;
+ }
+
+ /**
+ * Return an {@link ImapString} keyed by {@code key}.
+ * Return {@link ImapString#EMPTY} if not found.
+ */
+ public final ImapString getKeyedStringOrEmpty(String key) {
+ return getKeyedStringOrEmpty(key, false);
+ }
+
+ /**
+ * Return an {@link ImapString} keyed by {@code key}.
+ * Return {@link ImapString#EMPTY} if not found.
+ */
+ public final ImapString getKeyedStringOrEmpty(String key, boolean prefixMatch) {
+ ImapElement e = getKeyedElementOrNull(key, prefixMatch);
+ return (e != null) ? ((ImapString) e) : ImapString.EMPTY;
+ }
+
+ /**
+ * Return true if it contains {@code s}.
+ */
+ public final boolean contains(String s) {
+ for (int i = 0; i < size(); i++) {
+ if (getStringOrEmpty(i).is(s)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void destroy() {
+ if (mList != null) {
+ for (ImapElement e : mList) {
+ e.destroy();
+ }
+ mList = null;
+ }
+ super.destroy();
+ }
+
+ @Override
+ public String toString() {
+ return mList.toString();
+ }
+
+ /**
+ * Return the text representations of the contents concatenated with ",".
+ */
+ public final String flatten() {
+ return flatten(new StringBuilder()).toString();
+ }
+
+ /**
+ * Returns text representations (i.e. getString()) of contents joined together with
+ * "," as the separator.
+ *
+ * Only used for building the capability string passed to vendor policies.
+ *
+ * We can't use toString(), because it's for debugging (meaning the format may change any time),
+ * and it won't expand literals.
+ */
+ private final StringBuilder flatten(StringBuilder sb) {
+ sb.append('[');
+ for (int i = 0; i < mList.size(); i++) {
+ if (i > 0) {
+ sb.append(',');
+ }
+ final ImapElement e = getElementOrNone(i);
+ if (e.isList()) {
+ getListOrEmpty(i).flatten(sb);
+ } else if (e.isString()) {
+ sb.append(getStringOrEmpty(i).getString());
+ }
+ }
+ sb.append(']');
+ return sb;
+ }
+
+ @Override
+ public boolean equalsForTest(ImapElement that) {
+ if (!super.equalsForTest(that)) {
+ return false;
+ }
+ ImapList thatList = (ImapList) that;
+ if (size() != thatList.size()) {
+ return false;
+ }
+ for (int i = 0; i < size(); i++) {
+ if (!mList.get(i).equalsForTest(thatList.getElementOrNone(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapMemoryLiteral.java b/src/com/android/phone/common/mail/store/imap/ImapMemoryLiteral.java
new file mode 100644
index 0000000..aac66c2
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapMemoryLiteral.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2010 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.phone.common.mail.store.imap;
+
+import android.util.Log;
+
+import com.android.phone.common.mail.FixedLengthInputStream;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * Subclass of {@link ImapString} used for literals backed by an in-memory byte array.
+ */
+public class ImapMemoryLiteral extends ImapString {
+ private final String TAG = "ImapMemoryLiteral";
+ private byte[] mData;
+
+ /* package */ ImapMemoryLiteral(FixedLengthInputStream in) throws IOException {
+ // We could use ByteArrayOutputStream and IOUtils.copy, but it'd perform an unnecessary
+ // copy....
+ mData = new byte[in.getLength()];
+ int pos = 0;
+ while (pos < mData.length) {
+ int read = in.read(mData, pos, mData.length - pos);
+ if (read < 0) {
+ break;
+ }
+ pos += read;
+ }
+ if (pos != mData.length) {
+ Log.w(TAG, "");
+ }
+ }
+
+ @Override
+ public void destroy() {
+ mData = null;
+ super.destroy();
+ }
+
+ @Override
+ public String getString() {
+ try {
+ return new String(mData, "US-ASCII");
+ } catch (UnsupportedEncodingException e) {
+ Log.e(TAG, "Unsupported encoding: ", e);
+ }
+ return null;
+ }
+
+ @Override
+ public InputStream getAsStream() {
+ return new ByteArrayInputStream(mData);
+ }
+
+ @Override
+ public String toString() {
+ return String.format("{%d byte literal(memory)}", mData.length);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapResponse.java b/src/com/android/phone/common/mail/store/imap/ImapResponse.java
new file mode 100644
index 0000000..4891966
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapResponse.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+/**
+ * Class represents an IMAP response.
+ */
+public class ImapResponse extends ImapList {
+ private final String mTag;
+ private final boolean mIsContinuationRequest;
+
+ /* package */ ImapResponse(String tag, boolean isContinuationRequest) {
+ mTag = tag;
+ mIsContinuationRequest = isContinuationRequest;
+ }
+
+ /* package */ static boolean isStatusResponse(String symbol) {
+ return ImapConstants.OK.equalsIgnoreCase(symbol)
+ || ImapConstants.NO.equalsIgnoreCase(symbol)
+ || ImapConstants.BAD.equalsIgnoreCase(symbol)
+ || ImapConstants.PREAUTH.equalsIgnoreCase(symbol)
+ || ImapConstants.BYE.equalsIgnoreCase(symbol);
+ }
+
+ /**
+ * @return whether it's a tagged response.
+ */
+ public boolean isTagged() {
+ return mTag != null;
+ }
+
+ /**
+ * @return whether it's a continuation request.
+ */
+ public boolean isContinuationRequest() {
+ return mIsContinuationRequest;
+ }
+
+ public boolean isStatusResponse() {
+ return isStatusResponse(getStringOrEmpty(0).getString());
+ }
+
+ /**
+ * @return whether it's an OK response.
+ */
+ public boolean isOk() {
+ return is(0, ImapConstants.OK);
+ }
+
+ /**
+ * @return whether it's an BAD response.
+ */
+ public boolean isBad() {
+ return is(0, ImapConstants.BAD);
+ }
+
+ /**
+ * @return whether it's an NO response.
+ */
+ public boolean isNo() {
+ return is(0, ImapConstants.NO);
+ }
+
+ /**
+ * @return whether it's an {@code responseType} data response. (i.e. not tagged).
+ * @param index where {@code responseType} should appear. e.g. 1 for "FETCH"
+ * @param responseType e.g. "FETCH"
+ */
+ public final boolean isDataResponse(int index, String responseType) {
+ return !isTagged() && getStringOrEmpty(index).is(responseType);
+ }
+
+ /**
+ * @return Response code (RFC 3501 7.1) if it's a status response.
+ *
+ * e.g. "ALERT" for "* OK [ALERT] System shutdown in 10 minutes"
+ */
+ public ImapString getResponseCodeOrEmpty() {
+ if (!isStatusResponse()) {
+ return ImapString.EMPTY; // Not a status response.
+ }
+ return getListOrEmpty(1).getStringOrEmpty(0);
+ }
+
+ /**
+ * @return Alert message it it has ALERT response code.
+ *
+ * e.g. "System shutdown in 10 minutes" for "* OK [ALERT] System shutdown in 10 minutes"
+ */
+ public ImapString getAlertTextOrEmpty() {
+ if (!getResponseCodeOrEmpty().is(ImapConstants.ALERT)) {
+ return ImapString.EMPTY; // Not an ALERT
+ }
+ // The 3rd element contains all the rest of line.
+ return getStringOrEmpty(2);
+ }
+
+ /**
+ * @return Response text in a status response.
+ */
+ public ImapString getStatusResponseTextOrEmpty() {
+ if (!isStatusResponse()) {
+ return ImapString.EMPTY;
+ }
+ return getStringOrEmpty(getElementOrNone(1).isList() ? 2 : 1);
+ }
+
+ public ImapString getStatusOrEmpty() {
+ if (!isStatusResponse()) {
+ return ImapString.EMPTY;
+ }
+ return getStringOrEmpty(0);
+ }
+
+ @Override
+ public String toString() {
+ String tag = mTag;
+ if (isContinuationRequest()) {
+ tag = "+";
+ }
+ return "#" + tag + "# " + super.toString();
+ }
+
+ @Override
+ public boolean equalsForTest(ImapElement that) {
+ if (!super.equalsForTest(that)) {
+ return false;
+ }
+ final ImapResponse thatResponse = (ImapResponse) that;
+ if (mTag == null) {
+ if (thatResponse.mTag != null) {
+ return false;
+ }
+ } else {
+ if (!mTag.equals(thatResponse.mTag)) {
+ return false;
+ }
+ }
+ if (mIsContinuationRequest != thatResponse.mIsContinuationRequest) {
+ return false;
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapResponseParser.java b/src/com/android/phone/common/mail/store/imap/ImapResponseParser.java
new file mode 100644
index 0000000..d0413df
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapResponseParser.java
@@ -0,0 +1,434 @@
+/*
+ * Copyright (C) 2010 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.phone.common.mail.store.imap;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.phone.common.mail.FixedLengthInputStream;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.PeekableInputStream;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+
+/**
+ * IMAP response parser.
+ */
+public class ImapResponseParser {
+ private static final String TAG = "ImapResponseParser";
+
+ /**
+ * Literal larger than this will be stored in temp file.
+ */
+ public static final int LITERAL_KEEP_IN_MEMORY_THRESHOLD = 2 * 1024 * 1024;
+
+ /** Input stream */
+ private final PeekableInputStream mIn;
+
+ private final int mLiteralKeepInMemoryThreshold;
+
+ /** StringBuilder used by readUntil() */
+ private final StringBuilder mBufferReadUntil = new StringBuilder();
+
+ /** StringBuilder used by parseBareString() */
+ private final StringBuilder mParseBareString = new StringBuilder();
+
+ /**
+ * We store all {@link ImapResponse} in it. {@link #destroyResponses()} must be called from
+ * time to time to destroy them and clear it.
+ */
+ private final ArrayList<ImapResponse> mResponsesToDestroy = new ArrayList<ImapResponse>();
+
+ /**
+ * Exception thrown when we receive BYE. It derives from IOException, so it'll be treated
+ * in the same way EOF does.
+ */
+ public static class ByeException extends IOException {
+ public static final String MESSAGE = "Received BYE";
+ public ByeException() {
+ super(MESSAGE);
+ }
+ }
+
+ /**
+ * Public constructor for normal use.
+ */
+ public ImapResponseParser(InputStream in) {
+ this(in, LITERAL_KEEP_IN_MEMORY_THRESHOLD);
+ }
+
+ /**
+ * Constructor for testing to override the literal size threshold.
+ */
+ /* package for test */ ImapResponseParser(InputStream in, int literalKeepInMemoryThreshold) {
+ mIn = new PeekableInputStream(in);
+ mLiteralKeepInMemoryThreshold = literalKeepInMemoryThreshold;
+ }
+
+ private static IOException newEOSException() {
+ final String message = "End of stream reached";
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, message);
+ }
+ return new IOException(message);
+ }
+
+ /**
+ * Peek next one byte.
+ *
+ * Throws IOException() if reaches EOF. As long as logical response lines end with \r\n,
+ * we shouldn't see EOF during parsing.
+ */
+ private int peek() throws IOException {
+ final int next = mIn.peek();
+ if (next == -1) {
+ throw newEOSException();
+ }
+ return next;
+ }
+
+ /**
+ * Read and return one byte from {@link #mIn}, and put it in {@link #mDiscourseLogger}.
+ *
+ * Throws IOException() if reaches EOF. As long as logical response lines end with \r\n,
+ * we shouldn't see EOF during parsing.
+ */
+ private int readByte() throws IOException {
+ int next = mIn.read();
+ if (next == -1) {
+ throw newEOSException();
+ }
+ return next;
+ }
+
+ /**
+ * Destroy all the {@link ImapResponse}s stored in the internal storage and clear it.
+ *
+ * @see #readResponse()
+ */
+ public void destroyResponses() {
+ for (ImapResponse r : mResponsesToDestroy) {
+ r.destroy();
+ }
+ mResponsesToDestroy.clear();
+ }
+
+ /**
+ * Reads the next response available on the stream and returns an
+ * {@link ImapResponse} object that represents it.
+ *
+ * <p>When this method successfully returns an {@link ImapResponse}, the {@link ImapResponse}
+ * is stored in the internal storage. When the {@link ImapResponse} is no longer used
+ * {@link #destroyResponses} should be called to destroy all the responses in the array.
+ *
+ * @return the parsed {@link ImapResponse} object.
+ * @exception ByeException when detects BYE.
+ */
+ public ImapResponse readResponse() throws IOException, MessagingException {
+ ImapResponse response = null;
+ try {
+ response = parseResponse();
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "<<< " + response.toString());
+ }
+ } catch (RuntimeException e) {
+ // Parser crash -- log network activities.
+ onParseError(e);
+ throw e;
+ } catch (IOException e) {
+ // Network error, or received an unexpected char.
+ onParseError(e);
+ throw e;
+ }
+
+ // Handle this outside of try-catch. We don't have to dump protocol log when getting BYE.
+ if (response.is(0, ImapConstants.BYE)) {
+ Log.w(TAG, ByeException.MESSAGE);
+ response.destroy();
+ throw new ByeException();
+ }
+ mResponsesToDestroy.add(response);
+ return response;
+ }
+
+ private void onParseError(Exception e) {
+ // Read a few more bytes, so that the log will contain some more context, even if the parser
+ // crashes in the middle of a response.
+ // This also makes sure the byte in question will be logged, no matter where it crashes.
+ // e.g. when parseAtom() peeks and finds at an unexpected char, it throws an exception
+ // before actually reading it.
+ // However, we don't want to read too much, because then it may get into an email message.
+ try {
+ for (int i = 0; i < 4; i++) {
+ int b = readByte();
+ if (b == -1 || b == '\n') {
+ break;
+ }
+ }
+ } catch (IOException ignore) {
+ }
+ Log.w(TAG, "Exception detected: " + e.getMessage());
+ }
+
+ /**
+ * Read next byte from stream and throw it away. If the byte is different from {@code expected}
+ * throw {@link MessagingException}.
+ */
+ /* package for test */ void expect(char expected) throws IOException {
+ final int next = readByte();
+ if (expected != next) {
+ throw new IOException(String.format("Expected %04x (%c) but got %04x (%c)",
+ (int) expected, expected, next, (char) next));
+ }
+ }
+
+ /**
+ * Read bytes until we find {@code end}, and return all as string.
+ * The {@code end} will be read (rather than peeked) and won't be included in the result.
+ */
+ /* package for test */ String readUntil(char end) throws IOException {
+ mBufferReadUntil.setLength(0);
+ for (;;) {
+ final int ch = readByte();
+ if (ch != end) {
+ mBufferReadUntil.append((char) ch);
+ } else {
+ return mBufferReadUntil.toString();
+ }
+ }
+ }
+
+ /**
+ * Read all bytes until \r\n.
+ */
+ /* package */ String readUntilEol() throws IOException {
+ String ret = readUntil('\r');
+ expect('\n'); // TODO Should this really be error?
+ return ret;
+ }
+
+ /**
+ * Parse and return the response line.
+ */
+ private ImapResponse parseResponse() throws IOException, MessagingException {
+ // We need to destroy the response if we get an exception.
+ // So, we first store the response that's being built in responseToDestroy, until it's
+ // completely built, at which point we copy it into responseToReturn and null out
+ // responseToDestroyt.
+ // If responseToDestroy is not null in finally, we destroy it because that means
+ // we got an exception somewhere.
+ ImapResponse responseToDestroy = null;
+ final ImapResponse responseToReturn;
+
+ try {
+ final int ch = peek();
+ if (ch == '+') { // Continuation request
+ readByte(); // skip +
+ expect(' ');
+ responseToDestroy = new ImapResponse(null, true);
+
+ // If it's continuation request, we don't really care what's in it.
+ responseToDestroy.add(new ImapSimpleString(readUntilEol()));
+
+ // Response has successfully been built. Let's return it.
+ responseToReturn = responseToDestroy;
+ responseToDestroy = null;
+ } else {
+ // Status response or response data
+ final String tag;
+ if (ch == '*') {
+ tag = null;
+ readByte(); // skip *
+ expect(' ');
+ } else {
+ tag = readUntil(' ');
+ }
+ responseToDestroy = new ImapResponse(tag, false);
+
+ final ImapString firstString = parseBareString();
+ responseToDestroy.add(firstString);
+
+ // parseBareString won't eat a space after the string, so we need to skip it,
+ // if exists.
+ // If the next char is not ' ', it should be EOL.
+ if (peek() == ' ') {
+ readByte(); // skip ' '
+
+ if (responseToDestroy.isStatusResponse()) { // It's a status response
+
+ // Is there a response code?
+ final int next = peek();
+ if (next == '[') {
+ responseToDestroy.add(parseList('[', ']'));
+ if (peek() == ' ') { // Skip following space
+ readByte();
+ }
+ }
+
+ String rest = readUntilEol();
+ if (!TextUtils.isEmpty(rest)) {
+ // The rest is free-form text.
+ responseToDestroy.add(new ImapSimpleString(rest));
+ }
+ } else { // It's a response data.
+ parseElements(responseToDestroy, '\0');
+ }
+ } else {
+ expect('\r');
+ expect('\n');
+ }
+
+ // Response has successfully been built. Let's return it.
+ responseToReturn = responseToDestroy;
+ responseToDestroy = null;
+ }
+ } finally {
+ if (responseToDestroy != null) {
+ // We get an exception.
+ responseToDestroy.destroy();
+ }
+ }
+
+ return responseToReturn;
+ }
+
+ private ImapElement parseElement() throws IOException, MessagingException {
+ final int next = peek();
+ switch (next) {
+ case '(':
+ return parseList('(', ')');
+ case '[':
+ return parseList('[', ']');
+ case '"':
+ readByte(); // Skip "
+ return new ImapSimpleString(readUntil('"'));
+ case '{':
+ return parseLiteral();
+ case '\r': // CR
+ readByte(); // Consume \r
+ expect('\n'); // Should be followed by LF.
+ return null;
+ case '\n': // LF // There shouldn't be a bare LF, but just in case.
+ readByte(); // Consume \n
+ return null;
+ default:
+ return parseBareString();
+ }
+ }
+
+ /**
+ * Parses an atom.
+ *
+ * Special case: If an atom contains '[', everything until the next ']' will be considered
+ * a part of the atom.
+ * (e.g. "BODY[HEADER.FIELDS ("DATE" ...)]" will become a single ImapString)
+ *
+ * If the value is "NIL", returns an empty string.
+ */
+ private ImapString parseBareString() throws IOException, MessagingException {
+ mParseBareString.setLength(0);
+ for (;;) {
+ final int ch = peek();
+
+ // TODO Can we clean this up? (This condition is from the old parser.)
+ if (ch == '(' || ch == ')' || ch == '{' || ch == ' ' ||
+ // ']' is not part of atom (it's in resp-specials)
+ ch == ']' ||
+ // docs claim that flags are \ atom but atom isn't supposed to
+ // contain
+ // * and some flags contain *
+ // ch == '%' || ch == '*' ||
+ ch == '%' ||
+ // TODO probably should not allow \ and should recognize
+ // it as a flag instead
+ // ch == '"' || ch == '\' ||
+ ch == '"' || (0x00 <= ch && ch <= 0x1f) || ch == 0x7f) {
+ if (mParseBareString.length() == 0) {
+ throw new MessagingException("Expected string, none found.");
+ }
+ String s = mParseBareString.toString();
+
+ // NIL will be always converted into the empty string.
+ if (ImapConstants.NIL.equalsIgnoreCase(s)) {
+ return ImapString.EMPTY;
+ }
+ return new ImapSimpleString(s);
+ } else if (ch == '[') {
+ // Eat all until next ']'
+ mParseBareString.append((char) readByte());
+ mParseBareString.append(readUntil(']'));
+ mParseBareString.append(']'); // readUntil won't include the end char.
+ } else {
+ mParseBareString.append((char) readByte());
+ }
+ }
+ }
+
+ private void parseElements(ImapList list, char end)
+ throws IOException, MessagingException {
+ for (;;) {
+ for (;;) {
+ final int next = peek();
+ if (next == end) {
+ return;
+ }
+ if (next != ' ') {
+ break;
+ }
+ // Skip space
+ readByte();
+ }
+ final ImapElement el = parseElement();
+ if (el == null) { // EOL
+ return;
+ }
+ list.add(el);
+ }
+ }
+
+ private ImapList parseList(char opening, char closing)
+ throws IOException, MessagingException {
+ expect(opening);
+ final ImapList list = new ImapList();
+ parseElements(list, closing);
+ expect(closing);
+ return list;
+ }
+
+ private ImapString parseLiteral() throws IOException, MessagingException {
+ expect('{');
+ final int size;
+ try {
+ size = Integer.parseInt(readUntil('}'));
+ } catch (NumberFormatException nfe) {
+ throw new MessagingException("Invalid length in literal");
+ }
+ if (size < 0) {
+ throw new MessagingException("Invalid negative length in literal");
+ }
+ expect('\r');
+ expect('\n');
+ FixedLengthInputStream in = new FixedLengthInputStream(mIn, size);
+ if (size > mLiteralKeepInMemoryThreshold) {
+ return new ImapTempFileLiteral(in);
+ } else {
+ return new ImapMemoryLiteral(in);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapSimpleString.java b/src/com/android/phone/common/mail/store/imap/ImapSimpleString.java
new file mode 100644
index 0000000..3d5263b
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapSimpleString.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+import android.util.Log;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * Subclass of {@link ImapString} used for non literals.
+ */
+public class ImapSimpleString extends ImapString {
+ private final String TAG = "ImapSimpleString";
+ private String mString;
+
+ /* package */ ImapSimpleString(String string) {
+ mString = (string != null) ? string : "";
+ }
+
+ @Override
+ public void destroy() {
+ mString = null;
+ super.destroy();
+ }
+
+ @Override
+ public String getString() {
+ return mString;
+ }
+
+ @Override
+ public InputStream getAsStream() {
+ try {
+ return new ByteArrayInputStream(mString.getBytes("US-ASCII"));
+ } catch (UnsupportedEncodingException e) {
+ Log.e(TAG, "Unsupported encoding: ", e);
+ }
+ return null;
+ }
+
+ @Override
+ public String toString() {
+ // Purposefully not return just mString, in order to prevent using it instead of getString.
+ return "\"" + mString + "\"";
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapString.java b/src/com/android/phone/common/mail/store/imap/ImapString.java
new file mode 100644
index 0000000..f38a993
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapString.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+import android.util.Log;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Class represents an IMAP "element" that is not a list.
+ *
+ * An atom, quoted string, literal, are all represented by this. Values like OK, STATUS are too.
+ * Also, this class class may contain more arbitrary value like "BODY[HEADER.FIELDS ("DATE")]".
+ * See {@link ImapResponseParser}.
+ */
+public abstract class ImapString extends ImapElement {
+ private static final byte[] EMPTY_BYTES = new byte[0];
+
+ public static final ImapString EMPTY = new ImapString() {
+ @Override public void destroy() {
+ // Don't call super.destroy().
+ // It's a shared object. We don't want the mDestroyed to be set on this.
+ }
+
+ @Override public String getString() {
+ return "";
+ }
+
+ @Override public InputStream getAsStream() {
+ return new ByteArrayInputStream(EMPTY_BYTES);
+ }
+
+ @Override public String toString() {
+ return "";
+ }
+ };
+
+ // This is used only for parsing IMAP's FETCH ENVELOPE command, in which
+ // en_US-like date format is used like "01-Jan-2009 11:20:39 -0800", so this should be
+ // handled by Locale.US
+ private final static SimpleDateFormat DATE_TIME_FORMAT =
+ new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss Z", Locale.US);
+
+ private boolean mIsInteger;
+ private int mParsedInteger;
+ private Date mParsedDate;
+
+ @Override
+ public final boolean isList() {
+ return false;
+ }
+
+ @Override
+ public final boolean isString() {
+ return true;
+ }
+
+ /**
+ * @return true if and only if the length of the string is larger than 0.
+ *
+ * Note: IMAP NIL is considered an empty string. See {@link ImapResponseParser
+ * #parseBareString}.
+ * On the other hand, a quoted/literal string with value NIL (i.e. "NIL" and {3}\r\nNIL) is
+ * treated literally.
+ */
+ public final boolean isEmpty() {
+ return getString().length() == 0;
+ }
+
+ public abstract String getString();
+
+ public abstract InputStream getAsStream();
+
+ /**
+ * @return whether it can be parsed as a number.
+ */
+ public final boolean isNumber() {
+ if (mIsInteger) {
+ return true;
+ }
+ try {
+ mParsedInteger = Integer.parseInt(getString());
+ mIsInteger = true;
+ return true;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ /**
+ * @return value parsed as a number.
+ */
+ public final int getNumberOrZero() {
+ if (!isNumber()) {
+ return 0;
+ }
+ return mParsedInteger;
+ }
+
+ /**
+ * @return whether it can be parsed as a date using {@link #DATE_TIME_FORMAT}.
+ */
+ public final boolean isDate() {
+ if (mParsedDate != null) {
+ return true;
+ }
+ if (isEmpty()) {
+ return false;
+ }
+ try {
+ mParsedDate = DATE_TIME_FORMAT.parse(getString());
+ return true;
+ } catch (ParseException e) {
+ Log.w("ImapString", getString() + " can't be parsed as a date.");
+ return false;
+ }
+ }
+
+ /**
+ * @return value it can be parsed as a {@link Date}, or null otherwise.
+ */
+ public final Date getDateOrNull() {
+ if (!isDate()) {
+ return null;
+ }
+ return mParsedDate;
+ }
+
+ /**
+ * @return whether the value case-insensitively equals to {@code s}.
+ */
+ public final boolean is(String s) {
+ if (s == null) {
+ return false;
+ }
+ return getString().equalsIgnoreCase(s);
+ }
+
+
+ /**
+ * @return whether the value case-insensitively starts with {@code s}.
+ */
+ public final boolean startsWith(String prefix) {
+ if (prefix == null) {
+ return false;
+ }
+ final String me = this.getString();
+ if (me.length() < prefix.length()) {
+ return false;
+ }
+ return me.substring(0, prefix.length()).equalsIgnoreCase(prefix);
+ }
+
+ // To force subclasses to implement it.
+ @Override
+ public abstract String toString();
+
+ @Override
+ public final boolean equalsForTest(ImapElement that) {
+ if (!super.equalsForTest(that)) {
+ return false;
+ }
+ ImapString thatString = (ImapString) that;
+ return getString().equals(thatString.getString());
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapTempFileLiteral.java b/src/com/android/phone/common/mail/store/imap/ImapTempFileLiteral.java
new file mode 100644
index 0000000..67d5026
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapTempFileLiteral.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+import com.android.phone.common.mail.FixedLengthInputStream;
+import com.android.phone.common.mail.TempDirectory;
+import com.android.phone.common.mail.utils.Utility;
+import com.android.phone.common.mail.utils.LogUtils;
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * Subclass of {@link ImapString} used for literals backed by a temp file.
+ */
+public class ImapTempFileLiteral extends ImapString {
+ private final String TAG = "ImapTempFileLiteral";
+
+ /* package for test */ final File mFile;
+
+ /** Size is purely for toString() */
+ private final int mSize;
+
+ /* package */ ImapTempFileLiteral(FixedLengthInputStream stream) throws IOException {
+ mSize = stream.getLength();
+ mFile = File.createTempFile("imap", ".tmp", TempDirectory.getTempDirectory());
+
+ // Unfortunately, we can't really use deleteOnExit(), because temp filenames are random
+ // so it'd simply cause a memory leak.
+ // deleteOnExit() simply adds filenames to a static list and the list will never shrink.
+ // mFile.deleteOnExit();
+ OutputStream out = new FileOutputStream(mFile);
+ IOUtils.copy(stream, out);
+ out.close();
+ }
+
+ /**
+ * Make sure we delete the temp file.
+ *
+ * We should always be calling {@link ImapResponse#destroy()}, but it's here as a last resort.
+ */
+ @Override
+ protected void finalize() throws Throwable {
+ try {
+ destroy();
+ } finally {
+ super.finalize();
+ }
+ }
+
+ @Override
+ public InputStream getAsStream() {
+ checkNotDestroyed();
+ try {
+ return new FileInputStream(mFile);
+ } catch (FileNotFoundException e) {
+ // It's probably possible if we're low on storage and the system clears the cache dir.
+ LogUtils.w(TAG, "ImapTempFileLiteral: Temp file not found");
+
+ // Return 0 byte stream as a dummy...
+ return new ByteArrayInputStream(new byte[0]);
+ }
+ }
+
+ @Override
+ public String getString() {
+ checkNotDestroyed();
+ try {
+ byte[] bytes = IOUtils.toByteArray(getAsStream());
+ // Prevent crash from OOM; we've seen this, but only rarely and not reproducibly
+ if (bytes.length > ImapResponseParser.LITERAL_KEEP_IN_MEMORY_THRESHOLD) {
+ throw new IOException();
+ }
+ return Utility.fromAscii(bytes);
+ } catch (IOException e) {
+ LogUtils.w(TAG, "ImapTempFileLiteral: Error while reading temp file", e);
+ return "";
+ }
+ }
+
+ @Override
+ public void destroy() {
+ try {
+ if (!isDestroyed() && mFile.exists()) {
+ mFile.delete();
+ }
+ } catch (RuntimeException re) {
+ // Just log and ignore.
+ LogUtils.w(TAG, "Failed to remove temp file: " + re.getMessage());
+ }
+ super.destroy();
+ }
+
+ @Override
+ public String toString() {
+ return String.format("{%d byte literal(file)}", mSize);
+ }
+
+ public boolean tempFileExistsForTest() {
+ return mFile.exists();
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapUtility.java b/src/com/android/phone/common/mail/store/imap/ImapUtility.java
new file mode 100644
index 0000000..8551d44
--- /dev/null
+++ b/src/com/android/phone/common/mail/store/imap/ImapUtility.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.store.imap;
+
+import com.android.phone.common.mail.utils.LogUtils;
+
+import java.util.ArrayList;
+
+/**
+ * Utility methods for use with IMAP.
+ */
+public class ImapUtility {
+ public static final String TAG = "ImapUtility";
+ /**
+ * Apply quoting rules per IMAP RFC,
+ * quoted = DQUOTE *QUOTED-CHAR DQUOTE
+ * QUOTED-CHAR = <any TEXT-CHAR except quoted-specials> / "\" quoted-specials
+ * quoted-specials = DQUOTE / "\"
+ *
+ * This is used primarily for IMAP login, but might be useful elsewhere.
+ *
+ * NOTE: Not very efficient - you may wish to preflight this, or perhaps it should check
+ * for trouble chars before calling the replace functions.
+ *
+ * @param s The string to be quoted.
+ * @return A copy of the string, having undergone quoting as described above
+ */
+ public static String imapQuoted(String s) {
+
+ // First, quote any backslashes by replacing \ with \\
+ // regex Pattern: \\ (Java string const = \\\\)
+ // Substitute: \\\\ (Java string const = \\\\\\\\)
+ String result = s.replaceAll("\\\\", "\\\\\\\\");
+
+ // Then, quote any double-quotes by replacing " with \"
+ // regex Pattern: " (Java string const = \")
+ // Substitute: \\" (Java string const = \\\\\")
+ result = result.replaceAll("\"", "\\\\\"");
+
+ // return string with quotes around it
+ return "\"" + result + "\"";
+ }
+
+ /**
+ * Gets all of the values in a sequence set per RFC 3501. Any ranges are expanded into a
+ * list of individual numbers. If the set is invalid, an empty array is returned.
+ * <pre>
+ * sequence-number = nz-number / "*"
+ * sequence-range = sequence-number ":" sequence-number
+ * sequence-set = (sequence-number / sequence-range) *("," sequence-set)
+ * </pre>
+ */
+ public static String[] getImapSequenceValues(String set) {
+ ArrayList<String> list = new ArrayList<String>();
+ if (set != null) {
+ String[] setItems = set.split(",");
+ for (String item : setItems) {
+ if (item.indexOf(':') == -1) {
+ // simple item
+ try {
+ Integer.parseInt(item); // Don't need the value; just ensure it's valid
+ list.add(item);
+ } catch (NumberFormatException e) {
+ LogUtils.d(TAG, "Invalid UID value", e);
+ }
+ } else {
+ // range
+ for (String rangeItem : getImapRangeValues(item)) {
+ list.add(rangeItem);
+ }
+ }
+ }
+ }
+ String[] stringList = new String[list.size()];
+ return list.toArray(stringList);
+ }
+
+ /**
+ * Expand the given number range into a list of individual numbers. If the range is not valid,
+ * an empty array is returned.
+ * <pre>
+ * sequence-number = nz-number / "*"
+ * sequence-range = sequence-number ":" sequence-number
+ * sequence-set = (sequence-number / sequence-range) *("," sequence-set)
+ * </pre>
+ */
+ public static String[] getImapRangeValues(String range) {
+ ArrayList<String> list = new ArrayList<String>();
+ try {
+ if (range != null) {
+ int colonPos = range.indexOf(':');
+ if (colonPos > 0) {
+ int first = Integer.parseInt(range.substring(0, colonPos));
+ int second = Integer.parseInt(range.substring(colonPos + 1));
+ if (first < second) {
+ for (int i = first; i <= second; i++) {
+ list.add(Integer.toString(i));
+ }
+ } else {
+ for (int i = first; i >= second; i--) {
+ list.add(Integer.toString(i));
+ }
+ }
+ }
+ }
+ } catch (NumberFormatException e) {
+ LogUtils.d(TAG, "Invalid range value", e);
+ }
+ String[] stringList = new String[list.size()];
+ return list.toArray(stringList);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utility/CountingOutputStream.java b/src/com/android/phone/common/mail/utility/CountingOutputStream.java
new file mode 100644
index 0000000..f631c3e
--- /dev/null
+++ b/src/com/android/phone/common/mail/utility/CountingOutputStream.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.utility;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * A simple pass-thru OutputStream that also counts how many bytes are written to it and
+ * makes that count available to callers.
+ */
+public class CountingOutputStream extends OutputStream {
+ private long mCount;
+ private final OutputStream mOutputStream;
+
+ public CountingOutputStream(OutputStream outputStream) {
+ mOutputStream = outputStream;
+ }
+
+ public long getCount() {
+ return mCount;
+ }
+
+ @Override
+ public void write(byte[] buffer, int offset, int count) throws IOException {
+ mOutputStream.write(buffer, offset, count);
+ mCount += count;
+ }
+
+ @Override
+ public void write(int oneByte) throws IOException {
+ mOutputStream.write(oneByte);
+ mCount++;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utility/EOLConvertingOutputStream.java b/src/com/android/phone/common/mail/utility/EOLConvertingOutputStream.java
new file mode 100644
index 0000000..1d55152
--- /dev/null
+++ b/src/com/android/phone/common/mail/utility/EOLConvertingOutputStream.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 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.phone.common.mail.utility;
+
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class EOLConvertingOutputStream extends FilterOutputStream {
+ int lastChar;
+
+ public EOLConvertingOutputStream(OutputStream out) {
+ super(out);
+ }
+
+ @Override
+ public void write(int oneByte) throws IOException {
+ if (oneByte == '\n') {
+ if (lastChar != '\r') {
+ super.write('\r');
+ }
+ }
+ super.write(oneByte);
+ lastChar = oneByte;
+ }
+
+ @Override
+ public void flush() throws IOException {
+ if (lastChar == '\r') {
+ super.write('\n');
+ lastChar = '\n';
+ }
+ super.flush();
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utils/LogUtils.java b/src/com/android/phone/common/mail/utils/LogUtils.java
new file mode 100644
index 0000000..711af9b
--- /dev/null
+++ b/src/com/android/phone/common/mail/utils/LogUtils.java
@@ -0,0 +1,416 @@
+/**
+ * Copyright (c) 2015 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.phone.common.mail.utils;
+
+import android.net.Uri;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.List;
+import java.util.regex.Pattern;
+
+public class LogUtils {
+ public static final String TAG = "Email Log";
+
+ // "GMT" + "+" or "-" + 4 digits
+ private static final Pattern DATE_CLEANUP_PATTERN_WRONG_TIMEZONE =
+ Pattern.compile("GMT([-+]\\d{4})$");
+
+ private static final String ACCOUNT_PREFIX = "account:";
+
+ /**
+ * Priority constant for the println method; use LogUtils.v.
+ */
+ public static final int VERBOSE = Log.VERBOSE;
+
+ /**
+ * Priority constant for the println method; use LogUtils.d.
+ */
+ public static final int DEBUG = Log.DEBUG;
+
+ /**
+ * Priority constant for the println method; use LogUtils.i.
+ */
+ public static final int INFO = Log.INFO;
+
+ /**
+ * Priority constant for the println method; use LogUtils.w.
+ */
+ public static final int WARN = Log.WARN;
+
+ /**
+ * Priority constant for the println method; use LogUtils.e.
+ */
+ public static final int ERROR = Log.ERROR;
+
+ /**
+ * Used to enable/disable logging that we don't want included in
+ * production releases. This should be set to DEBUG for production releases, and VERBOSE for
+ * internal builds.
+ */
+ // STOPSHIP: ship with DEBUG set
+ private static final int MAX_ENABLED_LOG_LEVEL = VERBOSE;
+
+ private static Boolean sDebugLoggingEnabledForTests = null;
+
+ /**
+ * Enable debug logging for unit tests.
+ */
+ @VisibleForTesting
+ public static void setDebugLoggingEnabledForTests(boolean enabled) {
+ setDebugLoggingEnabledForTestsInternal(enabled);
+ }
+
+ protected static void setDebugLoggingEnabledForTestsInternal(boolean enabled) {
+ sDebugLoggingEnabledForTests = Boolean.valueOf(enabled);
+ }
+
+ /**
+ * Returns true if the build configuration prevents debug logging.
+ */
+ @VisibleForTesting
+ public static boolean buildPreventsDebugLogging() {
+ return MAX_ENABLED_LOG_LEVEL > VERBOSE;
+ }
+
+ /**
+ * Returns a boolean indicating whether debug logging is enabled.
+ */
+ protected static boolean isDebugLoggingEnabled(String tag) {
+ if (buildPreventsDebugLogging()) {
+ return false;
+ }
+ if (sDebugLoggingEnabledForTests != null) {
+ return sDebugLoggingEnabledForTests.booleanValue();
+ }
+ return Log.isLoggable(tag, Log.DEBUG) || Log.isLoggable(TAG, Log.DEBUG);
+ }
+
+ /**
+ * Returns a String for the specified content provider uri. This will do
+ * sanitation of the uri to remove PII if debug logging is not enabled.
+ */
+ public static String contentUriToString(final Uri uri) {
+ return contentUriToString(TAG, uri);
+ }
+
+ /**
+ * Returns a String for the specified content provider uri. This will do
+ * sanitation of the uri to remove PII if debug logging is not enabled.
+ */
+ public static String contentUriToString(String tag, Uri uri) {
+ if (isDebugLoggingEnabled(tag)) {
+ // Debug logging has been enabled, so log the uri as is
+ return uri.toString();
+ } else {
+ // Debug logging is not enabled, we want to remove the email address from the uri.
+ List<String> pathSegments = uri.getPathSegments();
+
+ Uri.Builder builder = new Uri.Builder()
+ .scheme(uri.getScheme())
+ .authority(uri.getAuthority())
+ .query(uri.getQuery())
+ .fragment(uri.getFragment());
+
+ // This assumes that the first path segment is the account
+ final String account = pathSegments.get(0);
+
+ builder = builder.appendPath(sanitizeAccountName(account));
+ for (int i = 1; i < pathSegments.size(); i++) {
+ builder.appendPath(pathSegments.get(i));
+ }
+ return builder.toString();
+ }
+ }
+
+ /**
+ * Sanitizes an account name. If debug logging is not enabled, a sanitized name
+ * is returned.
+ */
+ public static String sanitizeAccountName(String accountName) {
+ if (TextUtils.isEmpty(accountName)) {
+ return "";
+ }
+
+ return ACCOUNT_PREFIX + sanitizeName(TAG, accountName);
+ }
+
+ public static String sanitizeName(final String tag, final String name) {
+ if (TextUtils.isEmpty(name)) {
+ return "";
+ }
+
+ if (isDebugLoggingEnabled(tag)) {
+ return name;
+ }
+
+ return String.valueOf(name.hashCode());
+ }
+
+ /**
+ * Checks to see whether or not a log for the specified tag is loggable at the specified level.
+ */
+ public static boolean isLoggable(String tag, int level) {
+ if (MAX_ENABLED_LOG_LEVEL > level) {
+ return false;
+ }
+ return Log.isLoggable(tag, level) || Log.isLoggable(TAG, level);
+ }
+
+ /**
+ * Send a {@link #VERBOSE} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int v(String tag, String format, Object... args) {
+ if (isLoggable(tag, VERBOSE)) {
+ return Log.v(tag, String.format(format, args));
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #VERBOSE} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param tr An exception to log
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int v(String tag, Throwable tr, String format, Object... args) {
+ if (isLoggable(tag, VERBOSE)) {
+ return Log.v(tag, String.format(format, args), tr);
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #DEBUG} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int d(String tag, String format, Object... args) {
+ if (isLoggable(tag, DEBUG)) {
+ return Log.d(tag, String.format(format, args));
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #DEBUG} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param tr An exception to log
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int d(String tag, Throwable tr, String format, Object... args) {
+ if (isLoggable(tag, DEBUG)) {
+ return Log.d(tag, String.format(format, args), tr);
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #INFO} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int i(String tag, String format, Object... args) {
+ if (isLoggable(tag, INFO)) {
+ return Log.i(tag, String.format(format, args));
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #INFO} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param tr An exception to log
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int i(String tag, Throwable tr, String format, Object... args) {
+ if (isLoggable(tag, INFO)) {
+ return Log.i(tag, String.format(format, args), tr);
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #WARN} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int w(String tag, String format, Object... args) {
+ if (isLoggable(tag, WARN)) {
+ return Log.w(tag, String.format(format, args));
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #WARN} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param tr An exception to log
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int w(String tag, Throwable tr, String format, Object... args) {
+ if (isLoggable(tag, WARN)) {
+ return Log.w(tag, String.format(format, args), tr);
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #ERROR} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int e(String tag, String format, Object... args) {
+ if (isLoggable(tag, ERROR)) {
+ return Log.e(tag, String.format(format, args));
+ }
+ return 0;
+ }
+
+ /**
+ * Send a {@link #ERROR} log message.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param tr An exception to log
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int e(String tag, Throwable tr, String format, Object... args) {
+ if (isLoggable(tag, ERROR)) {
+ return Log.e(tag, String.format(format, args), tr);
+ }
+ return 0;
+ }
+
+ /**
+ * What a Terrible Failure: Report a condition that should never happen.
+ * The error will always be logged at level ASSERT with the call stack.
+ * Depending on system configuration, a report may be added to the
+ * {@link android.os.DropBoxManager} and/or the process may be terminated
+ * immediately with an error dialog.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int wtf(String tag, String format, Object... args) {
+ return Log.wtf(tag, String.format(format, args), new Error());
+ }
+
+ /**
+ * What a Terrible Failure: Report a condition that should never happen.
+ * The error will always be logged at level ASSERT with the call stack.
+ * Depending on system configuration, a report may be added to the
+ * {@link android.os.DropBoxManager} and/or the process may be terminated
+ * immediately with an error dialog.
+ * @param tag Used to identify the source of a log message. It usually identifies
+ * the class or activity where the log call occurs.
+ * @param tr An exception to log
+ * @param format the format string (see {@link java.util.Formatter#format})
+ * @param args
+ * the list of arguments passed to the formatter. If there are
+ * more arguments than required by {@code format},
+ * additional arguments are ignored.
+ */
+ public static int wtf(String tag, Throwable tr, String format, Object... args) {
+ return Log.wtf(tag, String.format(format, args), tr);
+ }
+
+
+ /**
+ * Try to make a date MIME(RFC 2822/5322)-compliant.
+ *
+ * It fixes:
+ * - "Thu, 10 Dec 09 15:08:08 GMT-0700" to "Thu, 10 Dec 09 15:08:08 -0700"
+ * (4 digit zone value can't be preceded by "GMT")
+ * We got a report saying eBay sends a date in this format
+ */
+ public static String cleanUpMimeDate(String date) {
+ if (TextUtils.isEmpty(date)) {
+ return date;
+ }
+ date = DATE_CLEANUP_PATTERN_WRONG_TIMEZONE.matcher(date).replaceFirst("$1");
+ return date;
+ }
+
+
+ public static String byteToHex(int b) {
+ return byteToHex(new StringBuilder(), b).toString();
+ }
+
+ public static StringBuilder byteToHex(StringBuilder sb, int b) {
+ b &= 0xFF;
+ sb.append("0123456789ABCDEF".charAt(b >> 4));
+ sb.append("0123456789ABCDEF".charAt(b & 0xF));
+ return sb;
+ }
+
+}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utils/Utility.java b/src/com/android/phone/common/mail/utils/Utility.java
new file mode 100644
index 0000000..d71b25e
--- /dev/null
+++ b/src/com/android/phone/common/mail/utils/Utility.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2015 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.phone.common.mail.utils;
+
+import java.io.ByteArrayInputStream;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+
+/**
+ * Simple utility methods used in email functions.
+ */
+public class Utility {
+ public static final Charset ASCII = Charset.forName("US-ASCII");
+
+ public static final String[] EMPTY_STRINGS = new String[0];
+
+ /**
+ * Returns a concatenated string containing the output of every Object's
+ * toString() method, each separated by the given separator character.
+ */
+ public static String combine(Object[] parts, char separator) {
+ if (parts == null) {
+ return null;
+ }
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < parts.length; i++) {
+ sb.append(parts[i].toString());
+ if (i < parts.length - 1) {
+ sb.append(separator);
+ }
+ }
+ return sb.toString();
+ }
+
+ /** Converts a String to ASCII bytes */
+ public static byte[] toAscii(String s) {
+ return encode(ASCII, s);
+ }
+
+ /** Builds a String from ASCII bytes */
+ public static String fromAscii(byte[] b) {
+ return decode(ASCII, b);
+ }
+
+ private static byte[] encode(Charset charset, String s) {
+ if (s == null) {
+ return null;
+ }
+ final ByteBuffer buffer = charset.encode(CharBuffer.wrap(s));
+ final byte[] bytes = new byte[buffer.limit()];
+ buffer.get(bytes);
+ return bytes;
+ }
+
+ private static String decode(Charset charset, byte[] b) {
+ if (b == null) {
+ return null;
+ }
+ final CharBuffer cb = charset.decode(ByteBuffer.wrap(b));
+ return new String(cb.array(), 0, cb.length());
+ }
+
+ public static ByteArrayInputStream streamFromAsciiString(String ascii) {
+ return new ByteArrayInputStream(toAscii(ascii));
+ }
+}
diff --git a/src/com/android/phone/settings/AccessibilitySettingsActivity.java b/src/com/android/phone/settings/AccessibilitySettingsActivity.java
new file mode 100644
index 0000000..769ef61
--- /dev/null
+++ b/src/com/android/phone/settings/AccessibilitySettingsActivity.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2015 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.phone.settings;
+
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.view.MenuItem;
+
+import com.android.phone.R;
+
+public class AccessibilitySettingsActivity extends PreferenceActivity {
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ getActionBar().setTitle(R.string.accessibility_settings_activity_title);
+ getFragmentManager().beginTransaction().replace(
+ android.R.id.content, new AccessibilitySettingsFragment()).commit();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/src/com/android/phone/settings/AccessibilitySettingsFragment.java b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
new file mode 100644
index 0000000..fdb0cd5
--- /dev/null
+++ b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2015 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.phone.settings;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.telecom.TelecomManager;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import com.android.ims.ImsManager;
+import com.android.phone.PhoneGlobals;
+import com.android.phone.R;
+import com.android.phone.settings.TtyModeListPreference;
+
+public class AccessibilitySettingsFragment extends PreferenceFragment {
+ private static final String LOG_TAG = AccessibilitySettingsFragment.class.getSimpleName();
+ private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
+
+ private static final String BUTTON_TTY_KEY = "button_tty_mode_key";
+ private static final String BUTTON_HAC_KEY = "button_hac_key";
+
+ private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+ /**
+ * Disable the TTY setting when in/out of a call (and if carrier doesn't
+ * support VoLTE with TTY).
+ * @see android.telephony.PhoneStateListener#onCallStateChanged(int,
+ * java.lang.String)
+ */
+ @Override
+ public void onCallStateChanged(int state, String incomingNumber) {
+ if (DBG) Log.d(LOG_TAG, "PhoneStateListener.onCallStateChanged: state=" + state);
+ Preference pref = getPreferenceScreen().findPreference(BUTTON_TTY_KEY);
+ if (pref != null) {
+ pref.setEnabled(state == TelephonyManager.CALL_STATE_IDLE);
+ }
+ }
+ };
+
+ private Context mContext;
+ private AudioManager mAudioManager;
+
+ private TtyModeListPreference mButtonTty;
+ private CheckBoxPreference mButtonHac;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mContext = getActivity().getApplicationContext();
+ mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+
+ addPreferencesFromResource(R.xml.accessibility_settings);
+
+ mButtonTty = (TtyModeListPreference) findPreference(
+ getResources().getString(R.string.tty_mode_key));
+ mButtonHac = (CheckBoxPreference) findPreference(BUTTON_HAC_KEY);
+
+ if (PhoneGlobals.getInstance().phoneMgr.isTtyModeSupported()) {
+ mButtonTty.init();
+ } else {
+ getPreferenceScreen().removePreference(mButtonTty);
+ mButtonTty = null;
+ }
+
+ if (PhoneGlobals.getInstance().phoneMgr.isHearingAidCompatibilitySupported()) {
+ int hac = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.HEARING_AID, SettingsConstants.HAC_DISABLED);
+ mButtonHac.setChecked(hac == SettingsConstants.HAC_ENABLED);
+ } else {
+ getPreferenceScreen().removePreference(mButtonHac);
+ mButtonHac = null;
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ if (ImsManager.isVolteEnabledByPlatform(mContext) &&
+ !mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_carrier_volte_tty_supported)) {
+ TelephonyManager tm =
+ (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+ tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+
+ if (ImsManager.isVolteEnabledByPlatform(mContext) &&
+ !mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_carrier_volte_tty_supported)) {
+ TelephonyManager tm =
+ (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+ tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
+ }
+ }
+
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+ if (preference == mButtonTty) {
+ return true;
+ } else if (preference == mButtonHac) {
+ int hac = mButtonHac.isChecked()
+ ? SettingsConstants.HAC_ENABLED : SettingsConstants.HAC_DISABLED;
+ // Update HAC value in Settings database.
+ Settings.System.putInt(mContext.getContentResolver(), Settings.System.HEARING_AID, hac);
+
+ // Update HAC Value in AudioManager.
+ mAudioManager.setParameter(SettingsConstants.HAC_KEY,
+ hac == SettingsConstants.HAC_ENABLED
+ ? SettingsConstants.HAC_VAL_ON : SettingsConstants.HAC_VAL_OFF);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/com/android/phone/settings/SettingsConstants.java b/src/com/android/phone/settings/SettingsConstants.java
new file mode 100644
index 0000000..c17e6df
--- /dev/null
+++ b/src/com/android/phone/settings/SettingsConstants.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 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.phone.settings;
+
+/**
+ * Constants related to settings which are shared by two or more classes.
+ */
+public class SettingsConstants {
+ // Dtmf tone type setting value for CDMA phone
+ public static final int DTMF_TONE_TYPE_NORMAL = 0;
+ public static final int DTMF_TONE_TYPE_LONG = 1;
+
+ // Hearing Aid Compatability settings values.
+ public static final String HAC_KEY = "HACSetting";
+ public static final int HAC_DISABLED = 0;
+ public static final int HAC_ENABLED = 1;
+ public static final String HAC_VAL_ON = "ON";
+ public static final String HAC_VAL_OFF = "OFF";
+}
diff --git a/src/com/android/phone/settings/VoicemailDialogUtil.java b/src/com/android/phone/settings/VoicemailDialogUtil.java
index f1e7fa7..32cb37a 100644
--- a/src/com/android/phone/settings/VoicemailDialogUtil.java
+++ b/src/com/android/phone/settings/VoicemailDialogUtil.java
@@ -21,7 +21,6 @@
import android.app.ProgressDialog;
import android.view.WindowManager;
-import com.android.phone.CallFeaturesSetting;
import com.android.phone.R;
public class VoicemailDialogUtil {
@@ -37,7 +36,7 @@
public static final int VM_REVERTING_DIALOG = 603;
public static final int TTY_SET_RESPONSE_ERROR = 800;
- public static Dialog getDialog(CallFeaturesSetting parent, int id) {
+ public static Dialog getDialog(VoicemailSettingsActivity parent, int id) {
if ((id == VM_RESPONSE_ERROR_DIALOG) || (id == VM_NOCHANGE_ERROR_DIALOG) ||
(id == FWD_SET_RESPONSE_ERROR_DIALOG) || (id == FWD_GET_RESPONSE_ERROR_DIALOG) ||
(id == VM_CONFIRM_DIALOG) || (id == TTY_SET_RESPONSE_ERROR)) {
diff --git a/src/com/android/phone/settings/VoicemailProviderListPreference.java b/src/com/android/phone/settings/VoicemailProviderListPreference.java
index 44a1c7c..d9f1a55 100644
--- a/src/com/android/phone/settings/VoicemailProviderListPreference.java
+++ b/src/com/android/phone/settings/VoicemailProviderListPreference.java
@@ -30,7 +30,6 @@
import android.util.Log;
import com.android.internal.telephony.Phone;
-import com.android.phone.CallFeaturesSetting;
import com.android.phone.PhoneGlobals;
import com.android.phone.R;
@@ -95,12 +94,14 @@
if (DBG) log("initVoicemailProviders()");
String providerToIgnore = null;
- if (activityIntent.getAction().equals(CallFeaturesSetting.ACTION_ADD_VOICEMAIL)
- && activityIntent.hasExtra(CallFeaturesSetting.IGNORE_PROVIDER_EXTRA)) {
+ String action = activityIntent.getAction();
+ if (!TextUtils.isEmpty(action)
+ && action.equals(VoicemailSettingsActivity.ACTION_ADD_VOICEMAIL)
+ && activityIntent.hasExtra(VoicemailSettingsActivity.IGNORE_PROVIDER_EXTRA)) {
// Remove this provider from the list.
if (DBG) log("Found ACTION_ADD_VOICEMAIL.");
providerToIgnore =
- activityIntent.getStringExtra(CallFeaturesSetting.IGNORE_PROVIDER_EXTRA);
+ activityIntent.getStringExtra(VoicemailSettingsActivity.IGNORE_PROVIDER_EXTRA);
VoicemailProviderSettingsUtil.delete(mPhone.getContext(), providerToIgnore);
}
@@ -119,7 +120,7 @@
// Add other voicemail providers.
PackageManager pm = mPhone.getContext().getPackageManager();
- Intent intent = new Intent(CallFeaturesSetting.ACTION_CONFIGURE_VOICEMAIL);
+ Intent intent = new Intent(VoicemailSettingsActivity.ACTION_CONFIGURE_VOICEMAIL);
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
for (int i = 0; i < resolveInfos.size(); i++) {
final ResolveInfo ri= resolveInfos.get(i);
@@ -137,7 +138,7 @@
}
String nameForDisplay = (label != null) ? label.toString() : "";
Intent providerIntent = new Intent();
- providerIntent.setAction(CallFeaturesSetting.ACTION_CONFIGURE_VOICEMAIL);
+ providerIntent.setAction(VoicemailSettingsActivity.ACTION_CONFIGURE_VOICEMAIL);
providerIntent.setClassName(currentActivityInfo.packageName, currentActivityInfo.name);
VoicemailProvider vmProvider = new VoicemailProvider(nameForDisplay, providerIntent);
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index a94c27a..27349fe 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -16,21 +16,268 @@
package com.android.phone.settings;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.AsyncResult;
import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.provider.ContactsContract.CommonDataKinds;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.MenuItem;
+import android.widget.ListAdapter;
+import com.android.internal.telephony.CallForwardInfo;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
import com.android.phone.R;
+import com.android.phone.EditPhoneNumberPreference;
+import com.android.phone.PhoneGlobals;
+import com.android.phone.SubscriptionInfoHelper;
-public class VoicemailSettingsActivity extends PreferenceActivity {
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+
+public class VoicemailSettingsActivity extends PreferenceActivity
+ implements DialogInterface.OnClickListener,
+ Preference.OnPreferenceChangeListener,
+ EditPhoneNumberPreference.OnDialogClosedListener,
+ EditPhoneNumberPreference.GetDefaultNumberListener {
+ private static final String LOG_TAG = VoicemailSettingsActivity.class.getSimpleName();
+ private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
+
+ /**
+ * Intent action to bring up Voicemail Provider settings
+ * DO NOT RENAME. There are existing apps which use this intent value.
+ */
+ public static final String ACTION_ADD_VOICEMAIL =
+ "com.android.phone.CallFeaturesSetting.ADD_VOICEMAIL";
+
+ /**
+ * Intent action to bring up the {@code VoicemailSettingsActivity}.
+ * DO NOT RENAME. There are existing apps which use this intent value.
+ */
+ public static final String ACTION_CONFIGURE_VOICEMAIL =
+ "com.android.phone.CallFeaturesSetting.CONFIGURE_VOICEMAIL";
+
+ // Extra put in the return from VM provider config containing voicemail number to set
+ public static final String VM_NUMBER_EXTRA = "com.android.phone.VoicemailNumber";
+ // Extra put in the return from VM provider config containing call forwarding number to set
+ public static final String FWD_NUMBER_EXTRA = "com.android.phone.ForwardingNumber";
+ // Extra put in the return from VM provider config containing call forwarding number to set
+ public static final String FWD_NUMBER_TIME_EXTRA = "com.android.phone.ForwardingNumberTime";
+ // If the VM provider returns non null value in this extra we will force the user to
+ // choose another VM provider
+ public static final String SIGNOUT_EXTRA = "com.android.phone.Signout";
+
+ /**
+ * String Extra put into ACTION_ADD_VOICEMAIL call to indicate which provider should be hidden
+ * in the list of providers presented to the user. This allows a provider which is being
+ * disabled (e.g. GV user logging out) to force the user to pick some other provider.
+ */
+ public static final String IGNORE_PROVIDER_EXTRA = "com.android.phone.ProviderToIgnore";
+
+ /**
+ * String Extra put into ACTION_ADD_VOICEMAIL to indicate that the voicemail setup screen should
+ * be opened.
+ */
+ public static final String SETUP_VOICEMAIL_EXTRA = "com.android.phone.SetupVoicemail";
+
+ // TODO: Define these preference keys in XML.
+ private static final String BUTTON_VOICEMAIL_KEY = "button_voicemail_key";
+ private static final String BUTTON_VOICEMAIL_PROVIDER_KEY = "button_voicemail_provider_key";
+ private static final String BUTTON_VOICEMAIL_SETTING_KEY = "button_voicemail_setting_key";
+
+ /** Event for Async voicemail change call */
+ private static final int EVENT_VOICEMAIL_CHANGED = 500;
+ private static final int EVENT_FORWARDING_CHANGED = 501;
+ private static final int EVENT_FORWARDING_GET_COMPLETED = 502;
+
+ /** Handle to voicemail pref */
+ private static final int VOICEMAIL_PREF_ID = 1;
+ private static final int VOICEMAIL_PROVIDER_CFG_ID = 2;
+
+ /**
+ * Results of reading forwarding settings
+ */
+ private CallForwardInfo[] mForwardingReadResults = null;
+
+ /**
+ * Result of forwarding number change.
+ * Keys are reasons (eg. unconditional forwarding).
+ */
+ private Map<Integer, AsyncResult> mForwardingChangeResults = null;
+
+ /**
+ * Expected CF read result types.
+ * This set keeps track of the CF types for which we've issued change
+ * commands so we can tell when we've received all of the responses.
+ */
+ private Collection<Integer> mExpectedChangeResultReasons = null;
+
+ /**
+ * Result of vm number change
+ */
+ private AsyncResult mVoicemailChangeResult = null;
+
+ /**
+ * Previous VM provider setting so we can return to it in case of failure.
+ */
+ private String mPreviousVMProviderKey = null;
+
+ /**
+ * Id of the dialog being currently shown.
+ */
+ private int mCurrentDialogId = 0;
+
+ /**
+ * Flag indicating that we are invoking settings for the voicemail provider programmatically
+ * due to vm provider change.
+ */
+ private boolean mVMProviderSettingsForced = false;
+
+ /**
+ * Flag indicating that we are making changes to vm or fwd numbers
+ * due to vm provider change.
+ */
+ private boolean mChangingVMorFwdDueToProviderChange = false;
+
+ /**
+ * True if we are in the process of vm & fwd number change and vm has already been changed.
+ * This is used to decide what to do in case of rollback.
+ */
+ private boolean mVMChangeCompletedSuccessfully = false;
+
+ /**
+ * True if we had full or partial failure setting forwarding numbers and so need to roll them
+ * back.
+ */
+ private boolean mFwdChangesRequireRollback = false;
+
+ /**
+ * Id of error msg to display to user once we are done reverting the VM provider to the previous
+ * one.
+ */
+ private int mVMOrFwdSetError = 0;
+
+ /** string to hold old voicemail number as it is being updated. */
+ private String mOldVmNumber;
+
+ // New call forwarding settings and vm number we will be setting
+ // Need to save these since before we get to saving we need to asynchronously
+ // query the existing forwarding settings.
+ private CallForwardInfo[] mNewFwdSettings;
+ private String mNewVMNumber;
+
+ /**
+ * Used to indicate that the voicemail preference should be shown.
+ */
+ private boolean mShowVoicemailPreference = false;
+
+ private boolean mForeground;
+ private Phone mPhone;
+ private SubscriptionInfoHelper mSubscriptionInfoHelper;
+
+ private EditPhoneNumberPreference mSubMenuVoicemailSettings;
+ private VoicemailProviderListPreference mVoicemailProviders;
+ private PreferenceScreen mVoicemailSettings;
+ private VoicemailRingtonePreference mVoicemailNotificationRingtone;
+ private CheckBoxPreference mVoicemailNotificationVibrate;
+
+
+ //*********************************************************************************************
+ // Preference Activity Methods
+ //*********************************************************************************************
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
- getActionBar().setTitle(R.string.voicemail);
- getFragmentManager().beginTransaction().replace(
- android.R.id.content, new VoicemailSettingsFragment()).commit();
+ // Show the voicemail preference in onResume if the calling intent specifies the
+ // ACTION_ADD_VOICEMAIL action.
+ mShowVoicemailPreference = (icicle == null) &&
+ TextUtils.equals(getIntent().getAction(), ACTION_ADD_VOICEMAIL);
+
+ mSubscriptionInfoHelper = new SubscriptionInfoHelper(this, getIntent());
+ mSubscriptionInfoHelper.setActionBarTitle(
+ getActionBar(), getResources(), R.string.voicemail_settings_with_label);
+ mPhone = mSubscriptionInfoHelper.getPhone();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ mForeground = true;
+
+ PreferenceScreen preferenceScreen = getPreferenceScreen();
+ if (preferenceScreen != null) {
+ preferenceScreen.removeAll();
+ }
+
+ addPreferencesFromResource(R.xml.voicemail_settings);
+
+ PreferenceScreen prefSet = getPreferenceScreen();
+ mSubMenuVoicemailSettings = (EditPhoneNumberPreference) findPreference(BUTTON_VOICEMAIL_KEY);
+ mSubMenuVoicemailSettings.setParentActivity(this, VOICEMAIL_PREF_ID, this);
+ mSubMenuVoicemailSettings.setDialogOnClosedListener(this);
+ mSubMenuVoicemailSettings.setDialogTitle(R.string.voicemail_settings_number_label);
+
+ mVoicemailProviders = (VoicemailProviderListPreference) findPreference(
+ BUTTON_VOICEMAIL_PROVIDER_KEY);
+ mVoicemailProviders.init(mPhone, getIntent());
+ mVoicemailProviders.setOnPreferenceChangeListener(this);
+ mPreviousVMProviderKey = mVoicemailProviders.getValue();
+
+ mVoicemailSettings = (PreferenceScreen) findPreference(BUTTON_VOICEMAIL_SETTING_KEY);
+
+ mVoicemailNotificationRingtone = (VoicemailRingtonePreference) findPreference(
+ getResources().getString(R.string.voicemail_notification_ringtone_key));
+ mVoicemailNotificationRingtone.init(mPhone);
+
+ mVoicemailNotificationVibrate = (CheckBoxPreference) findPreference(
+ getResources().getString(R.string.voicemail_notification_vibrate_key));
+ mVoicemailNotificationVibrate.setOnPreferenceChangeListener(this);
+
+ updateVMPreferenceWidgets(mVoicemailProviders.getValue());
+
+ // check the intent that started this activity and pop up the voicemail
+ // dialog if we've been asked to.
+ // If we have at least one non default VM provider registered then bring up
+ // the selection for the VM provider, otherwise bring up a VM number dialog.
+ // We only bring up the dialog the first time we are called (not after orientation change)
+ if (mShowVoicemailPreference) {
+ if (DBG) log("ACTION_ADD_VOICEMAIL Intent is thrown");
+ if (mVoicemailProviders.hasMoreThanOneVoicemailProvider()) {
+ if (DBG) log("Voicemail data has more than one provider.");
+ simulatePreferenceClick(mVoicemailProviders);
+ } else {
+ onPreferenceChange(mVoicemailProviders, VoicemailProviderListPreference.DEFAULT_KEY);
+ mVoicemailProviders.setValue(VoicemailProviderListPreference.DEFAULT_KEY);
+ }
+ mShowVoicemailPreference = false;
+ }
+
+ updateVoiceNumberField();
+ mVMProviderSettingsForced = false;
+
+ mVoicemailNotificationVibrate.setChecked(
+ VoicemailNotificationSettingsUtil.isVibrationEnabled(mPhone));
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ mForeground = false;
}
@Override
@@ -41,4 +288,812 @@
}
return super.onOptionsItemSelected(item);
}
+
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+ if (preference == mSubMenuVoicemailSettings) {
+ return true;
+ } else if (preference.getKey().equals(mVoicemailSettings.getKey())) {
+ // Check key instead of comparing reference because closing the voicemail notification
+ // ringtone dialog invokes onResume(), but leaves the old preference screen up,
+ // TODO: Revert to checking reference after migrating voicemail to its own activity.
+ if (DBG) log("onPreferenceTreeClick: Voicemail Settings Preference is clicked.");
+
+ final Dialog dialog = ((PreferenceScreen) preference).getDialog();
+ if (dialog != null) {
+ dialog.getActionBar().setDisplayHomeAsUpEnabled(false);
+ }
+
+ if (preference.getIntent() != null) {
+ if (DBG) log("Invoking cfg intent " + preference.getIntent().getPackage());
+
+ // onActivityResult() will be responsible for resetting some of variables.
+ this.startActivityForResult(preference.getIntent(), VOICEMAIL_PROVIDER_CFG_ID);
+ return true;
+ } else {
+ if (DBG) log("onPreferenceTreeClick(). No intent; use default behavior in xml.");
+
+ // onActivityResult() will not be called, so reset variables here.
+ mPreviousVMProviderKey = VoicemailProviderListPreference.DEFAULT_KEY;
+ mVMProviderSettingsForced = false;
+ return false;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Implemented to support onPreferenceChangeListener to look for preference changes.
+ *
+ * @param preference is the preference to be changed
+ * @param objValue should be the value of the selection, NOT its localized
+ * display value.
+ */
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object objValue) {
+ if (DBG) log("onPreferenceChange: \"" + preference + "\" changed to \"" + objValue + "\"");
+
+ if (preference == mVoicemailProviders) {
+ final String newProviderKey = (String) objValue;
+
+ // If previous provider key and the new one is same, we don't need to handle it.
+ if (mPreviousVMProviderKey.equals(newProviderKey)) {
+ if (DBG) log("No change is made to the VM provider setting.");
+ return true;
+ }
+ updateVMPreferenceWidgets(newProviderKey);
+
+ final VoicemailProviderSettings newProviderSettings =
+ VoicemailProviderSettingsUtil.load(this, newProviderKey);
+
+ // If the user switches to a voice mail provider and we have numbers stored for it we
+ // will automatically change the phone's voice mail and forwarding number to the stored
+ // ones. Otherwise we will bring up provider's configuration UI.
+ if (newProviderSettings == null) {
+ // Force the user into a configuration of the chosen provider
+ Log.w(LOG_TAG, "Saved preferences not found - invoking config");
+ mVMProviderSettingsForced = true;
+ simulatePreferenceClick(mVoicemailSettings);
+ } else {
+ if (DBG) log("Saved preferences found - switching to them");
+ // Set this flag so if we get a failure we revert to previous provider
+ mChangingVMorFwdDueToProviderChange = true;
+ saveVoiceMailAndForwardingNumber(newProviderKey, newProviderSettings);
+ }
+ } else if (preference.getKey().equals(mVoicemailNotificationVibrate.getKey())) {
+ // Check key instead of comparing reference because closing the voicemail notification
+ // ringtone dialog invokes onResume(), but leaves the old preference screen up,
+ // TODO: Revert to checking reference after migrating voicemail to its own activity.
+ VoicemailNotificationSettingsUtil.setVibrationEnabled(
+ mPhone, Boolean.TRUE.equals(objValue));
+ }
+
+ // Always let the preference setting proceed.
+ return true;
+ }
+
+ /**
+ * Implemented for EditPhoneNumberPreference.GetDefaultNumberListener.
+ * This method set the default values for the various
+ * EditPhoneNumberPreference dialogs.
+ */
+ @Override
+ public String onGetDefaultNumber(EditPhoneNumberPreference preference) {
+ if (preference == mSubMenuVoicemailSettings) {
+ // update the voicemail number field, which takes care of the
+ // mSubMenuVoicemailSettings itself, so we should return null.
+ if (DBG) log("updating default for voicemail dialog");
+ updateVoiceNumberField();
+ return null;
+ }
+
+ String vmDisplay = mPhone.getVoiceMailNumber();
+ if (TextUtils.isEmpty(vmDisplay)) {
+ // if there is no voicemail number, we just return null to
+ // indicate no contribution.
+ return null;
+ }
+
+ // Return the voicemail number prepended with "VM: "
+ if (DBG) log("updating default for call forwarding dialogs");
+ return getString(R.string.voicemail_abbreviated) + " " + vmDisplay;
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (DBG) {
+ log("onActivityResult: requestCode: " + requestCode
+ + ", resultCode: " + resultCode
+ + ", data: " + data);
+ }
+
+ // there are cases where the contact picker may end up sending us more than one
+ // request. We want to ignore the request if we're not in the correct state.
+ if (requestCode == VOICEMAIL_PROVIDER_CFG_ID) {
+ boolean failure = false;
+
+ // No matter how the processing of result goes lets clear the flag
+ if (DBG) log("mVMProviderSettingsForced: " + mVMProviderSettingsForced);
+ final boolean isVMProviderSettingsForced = mVMProviderSettingsForced;
+ mVMProviderSettingsForced = false;
+
+ String vmNum = null;
+ if (resultCode != RESULT_OK) {
+ if (DBG) log("onActivityResult: vm provider cfg result not OK.");
+ failure = true;
+ } else {
+ if (data == null) {
+ if (DBG) log("onActivityResult: vm provider cfg result has no data");
+ failure = true;
+ } else {
+ if (data.getBooleanExtra(SIGNOUT_EXTRA, false)) {
+ if (DBG) log("Provider requested signout");
+ if (isVMProviderSettingsForced) {
+ if (DBG) log("Going back to previous provider on signout");
+ switchToPreviousVoicemailProvider();
+ } else {
+ final String victim = mVoicemailProviders.getKey();
+ if (DBG) log("Relaunching activity and ignoring " + victim);
+ Intent i = new Intent(ACTION_ADD_VOICEMAIL);
+ i.putExtra(IGNORE_PROVIDER_EXTRA, victim);
+ i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ this.startActivity(i);
+ }
+ return;
+ }
+ vmNum = data.getStringExtra(VM_NUMBER_EXTRA);
+ if (vmNum == null || vmNum.length() == 0) {
+ if (DBG) log("onActivityResult: vm provider cfg result has no vmnum");
+ failure = true;
+ }
+ }
+ }
+ if (failure) {
+ if (DBG) log("Failure in return from voicemail provider.");
+ if (isVMProviderSettingsForced) {
+ switchToPreviousVoicemailProvider();
+ }
+
+ return;
+ }
+ mChangingVMorFwdDueToProviderChange = isVMProviderSettingsForced;
+ final String fwdNum = data.getStringExtra(FWD_NUMBER_EXTRA);
+
+ // TODO: It would be nice to load the current network setting for this and
+ // send it to the provider when it's config is invoked so it can use this as default
+ final int fwdNumTime = data.getIntExtra(FWD_NUMBER_TIME_EXTRA, 20);
+
+ if (DBG) log("onActivityResult: cfg result has forwarding number " + fwdNum);
+ saveVoiceMailAndForwardingNumber(mVoicemailProviders.getKey(),
+ new VoicemailProviderSettings(vmNum, fwdNum, fwdNumTime));
+ return;
+ }
+
+ if (requestCode == VOICEMAIL_PREF_ID) {
+ if (resultCode != RESULT_OK) {
+ if (DBG) log("onActivityResult: contact picker result not OK.");
+ return;
+ }
+
+ Cursor cursor = null;
+ try {
+ cursor = getContentResolver().query(data.getData(),
+ new String[] { CommonDataKinds.Phone.NUMBER }, null, null, null);
+ if ((cursor == null) || (!cursor.moveToFirst())) {
+ if (DBG) log("onActivityResult: bad contact data, no results found.");
+ return;
+ }
+ mSubMenuVoicemailSettings.onPickActivityResult(cursor.getString(0));
+ return;
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ }
+
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+
+ /**
+ * Simulates user clicking on a passed preference.
+ * Usually needed when the preference is a dialog preference and we want to invoke
+ * a dialog for this preference programmatically.
+ * TODO: figure out if there is a cleaner way to cause preference dlg to come up
+ */
+ private void simulatePreferenceClick(Preference preference) {
+ // Go through settings until we find our setting
+ // and then simulate a click on it to bring up the dialog
+ final ListAdapter adapter = getPreferenceScreen().getRootAdapter();
+ for (int idx = 0; idx < adapter.getCount(); idx++) {
+ if (adapter.getItem(idx) == preference) {
+ getPreferenceScreen().onItemClick(this.getListView(),
+ null, idx, adapter.getItemId(idx));
+ break;
+ }
+ }
+ }
+
+
+ //*********************************************************************************************
+ // Activity Dialog Methods
+ //*********************************************************************************************
+
+ @Override
+ protected void onPrepareDialog(int id, Dialog dialog) {
+ super.onPrepareDialog(id, dialog);
+ mCurrentDialogId = id;
+ }
+
+ // dialog creation method, called by showDialog()
+ @Override
+ protected Dialog onCreateDialog(int dialogId) {
+ return VoicemailDialogUtil.getDialog(this, dialogId);
+ }
+
+ @Override
+ public void onDialogClosed(EditPhoneNumberPreference preference, int buttonClicked) {
+ if (DBG) log("onDialogClosed: Button clicked is " + buttonClicked);
+
+ if (buttonClicked == DialogInterface.BUTTON_NEGATIVE) {
+ return;
+ }
+
+ if (preference == mSubMenuVoicemailSettings) {
+ VoicemailProviderSettings newSettings = new VoicemailProviderSettings(
+ mSubMenuVoicemailSettings.getPhoneNumber(),
+ VoicemailProviderSettings.NO_FORWARDING);
+ saveVoiceMailAndForwardingNumber(mVoicemailProviders.getKey(), newSettings);
+ }
+ }
+
+ /**
+ * Wrapper around showDialog() that will silently do nothing if we're
+ * not in the foreground.
+ *
+ * This is useful here because most of the dialogs we display from
+ * this class are triggered by asynchronous events (like
+ * success/failure messages from the telephony layer) and it's
+ * possible for those events to come in even after the user has gone
+ * to a different screen.
+ */
+ // TODO: this is too brittle: it's still easy to accidentally add new
+ // code here that calls showDialog() directly (which will result in a
+ // WindowManager$BadTokenException if called after the activity has
+ // been stopped.)
+ //
+ // It would be cleaner to do the "if (mForeground)" check in one
+ // central place, maybe by using a single Handler for all asynchronous
+ // events (and have *that* discard events if we're not in the
+ // foreground.)
+ //
+ // Unfortunately it's not that simple, since we sometimes need to do
+ // actual work to handle these events whether or not we're in the
+ // foreground (see the Handler code in mSetOptionComplete for
+ // example.)
+ //
+ // TODO: It's a bit worrisome that we don't do anything in error cases when we're not in the
+ // foreground. Consider displaying a toast instead.
+ private void showDialogIfForeground(int id) {
+ if (mForeground) {
+ showDialog(id);
+ }
+ }
+
+ private void dismissDialogSafely(int id) {
+ try {
+ dismissDialog(id);
+ } catch (IllegalArgumentException e) {
+ // This is expected in the case where we were in the background
+ // at the time we would normally have shown the dialog, so we didn't
+ // show it.
+ }
+ }
+
+ // This is a method implemented for DialogInterface.OnClickListener.
+ // Used with the error dialog to close the app, voicemail dialog to just dismiss.
+ // Close button is mapped to BUTTON_POSITIVE for the errors that close the activity,
+ // while those that are mapped to BUTTON_NEUTRAL only move the preference focus.
+ public void onClick(DialogInterface dialog, int which) {
+ if (DBG) log("onClick: button clicked is " + which);
+
+ dialog.dismiss();
+ switch (which){
+ case DialogInterface.BUTTON_NEGATIVE:
+ if (mCurrentDialogId == VoicemailDialogUtil.FWD_GET_RESPONSE_ERROR_DIALOG) {
+ // We failed to get current forwarding settings and the user
+ // does not wish to continue.
+ switchToPreviousVoicemailProvider();
+ }
+ break;
+ case DialogInterface.BUTTON_POSITIVE:
+ if (mCurrentDialogId == VoicemailDialogUtil.FWD_GET_RESPONSE_ERROR_DIALOG) {
+ // We failed to get current forwarding settings but the user
+ // wishes to continue changing settings to the new vm provider
+ setVoicemailNumberWithCarrier();
+ } else {
+ finish();
+ }
+ return;
+ default:
+ // just let the dialog close and go back to the input
+ }
+
+ // In all dialogs, all buttons except BUTTON_POSITIVE lead to the end of user interaction
+ // with settings UI. If we were called to explicitly configure voice mail then
+ // we finish the settings activity here to come back to whatever the user was doing.
+ if (getIntent().getAction().equals(ACTION_ADD_VOICEMAIL)) {
+ finish();
+ }
+ }
+
+
+ //*********************************************************************************************
+ // Voicemail Methods
+ //*********************************************************************************************
+
+ /**
+ * TODO: Refactor to make it easier to understand what's done in the different stages.
+ */
+ private void saveVoiceMailAndForwardingNumber(
+ String key, VoicemailProviderSettings newSettings) {
+ if (DBG) log("saveVoiceMailAndForwardingNumber: " + newSettings.toString());
+ mNewVMNumber = newSettings.getVoicemailNumber();
+ mNewVMNumber = (mNewVMNumber == null) ? "" : mNewVMNumber;
+ mNewFwdSettings = newSettings.getForwardingSettings();
+
+ // Call forwarding is not suppported on CDMA.
+ if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
+ if (DBG) log("Ignoring forwarding setting since this is CDMA phone");
+ mNewFwdSettings = VoicemailProviderSettings.NO_FORWARDING;
+ }
+
+ // Throw a warning if the voicemail is the same and we did not change forwarding.
+ if (mNewVMNumber.equals(mOldVmNumber)
+ && mNewFwdSettings == VoicemailProviderSettings.NO_FORWARDING) {
+ showDialogIfForeground(VoicemailDialogUtil.VM_NOCHANGE_ERROR_DIALOG);
+ return;
+ }
+
+ VoicemailProviderSettingsUtil.save(this, key, newSettings);
+ mVMChangeCompletedSuccessfully = false;
+ mFwdChangesRequireRollback = false;
+ mVMOrFwdSetError = 0;
+
+ if (mNewFwdSettings == VoicemailProviderSettings.NO_FORWARDING
+ || key.equals(mPreviousVMProviderKey)) {
+ if (DBG) log("Set voicemail number. No changes to forwarding number.");
+ setVoicemailNumberWithCarrier();
+ } else {
+ if (DBG) log("Reading current forwarding settings.");
+ int numSettingsReasons = VoicemailProviderSettings.FORWARDING_SETTINGS_REASONS.length;
+ mForwardingReadResults = new CallForwardInfo[numSettingsReasons];
+ for (int i = 0; i < mForwardingReadResults.length; i++) {
+ mPhone.getCallForwardingOption(
+ VoicemailProviderSettings.FORWARDING_SETTINGS_REASONS[i],
+ mGetOptionComplete.obtainMessage(EVENT_FORWARDING_GET_COMPLETED, i, 0));
+ }
+ showDialogIfForeground(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
+ }
+
+ PhoneGlobals.getInstance().refreshMwiIndicator(mSubscriptionInfoHelper.getSubId());
+ }
+
+ private final Handler mGetOptionComplete = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ AsyncResult result = (AsyncResult) msg.obj;
+ switch (msg.what) {
+ case EVENT_FORWARDING_GET_COMPLETED:
+ handleForwardingSettingsReadResult(result, msg.arg1);
+ break;
+ }
+ }
+ };
+
+ private void handleForwardingSettingsReadResult(AsyncResult ar, int idx) {
+ if (DBG) Log.d(LOG_TAG, "handleForwardingSettingsReadResult: " + idx);
+
+ Throwable error = null;
+ if (ar.exception != null) {
+ error = ar.exception;
+ if (DBG) Log.d(LOG_TAG, "FwdRead: ar.exception=" + error.getMessage());
+ }
+ if (ar.userObj instanceof Throwable) {
+ error = (Throwable) ar.userObj;
+ if (DBG) Log.d(LOG_TAG, "FwdRead: userObj=" + error.getMessage());
+ }
+
+ // We may have already gotten an error and decided to ignore the other results.
+ if (mForwardingReadResults == null) {
+ if (DBG) Log.d(LOG_TAG, "Ignoring fwd reading result: " + idx);
+ return;
+ }
+
+ // In case of error ignore other results, show an error dialog
+ if (error != null) {
+ if (DBG) Log.d(LOG_TAG, "Error discovered for fwd read : " + idx);
+ mForwardingReadResults = null;
+ dismissDialogSafely(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
+ showDialogIfForeground(VoicemailDialogUtil.FWD_GET_RESPONSE_ERROR_DIALOG);
+ return;
+ }
+
+ // Get the forwarding info.
+ mForwardingReadResults[idx] = CallForwardInfoUtil.getCallForwardInfo(
+ (CallForwardInfo[]) ar.result,
+ VoicemailProviderSettings.FORWARDING_SETTINGS_REASONS[idx]);
+
+ // Check if we got all the results already
+ boolean done = true;
+ for (int i = 0; i < mForwardingReadResults.length; i++) {
+ if (mForwardingReadResults[i] == null) {
+ done = false;
+ break;
+ }
+ }
+
+ if (done) {
+ if (DBG) Log.d(LOG_TAG, "Done receiving fwd info");
+ dismissDialogSafely(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
+
+ if (mPreviousVMProviderKey.equals(VoicemailProviderListPreference.DEFAULT_KEY)) {
+ VoicemailProviderSettingsUtil.save(mPhone.getContext(),
+ VoicemailProviderListPreference.DEFAULT_KEY,
+ new VoicemailProviderSettings(mOldVmNumber, mForwardingReadResults));
+ }
+ saveVoiceMailAndForwardingNumberStage2();
+ }
+ }
+
+ private void resetForwardingChangeState() {
+ mForwardingChangeResults = new HashMap<Integer, AsyncResult>();
+ mExpectedChangeResultReasons = new HashSet<Integer>();
+ }
+
+ // Called after we are done saving the previous forwarding settings if we needed.
+ private void saveVoiceMailAndForwardingNumberStage2() {
+ mForwardingChangeResults = null;
+ mVoicemailChangeResult = null;
+
+ resetForwardingChangeState();
+ for (int i = 0; i < mNewFwdSettings.length; i++) {
+ CallForwardInfo fi = mNewFwdSettings[i];
+ CallForwardInfo fiForReason =
+ CallForwardInfoUtil.infoForReason(mForwardingReadResults, fi.reason);
+ final boolean doUpdate = CallForwardInfoUtil.isUpdateRequired(fiForReason, fi);
+
+ if (doUpdate) {
+ if (DBG) log("Setting fwd #: " + i + ": " + fi.toString());
+ mExpectedChangeResultReasons.add(i);
+
+ CallForwardInfoUtil.setCallForwardingOption(mPhone, fi,
+ mSetOptionComplete.obtainMessage(
+ EVENT_FORWARDING_CHANGED, fi.reason, 0));
+ }
+ }
+ showDialogIfForeground(VoicemailDialogUtil.VM_FWD_SAVING_DIALOG);
+ }
+
+
+ /**
+ * Callback to handle option update completions
+ */
+ private final Handler mSetOptionComplete = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ AsyncResult result = (AsyncResult) msg.obj;
+ boolean done = false;
+ switch (msg.what) {
+ case EVENT_VOICEMAIL_CHANGED:
+ mVoicemailChangeResult = result;
+ mVMChangeCompletedSuccessfully = isVmChangeSuccess();
+ done = true;
+ break;
+ case EVENT_FORWARDING_CHANGED:
+ mForwardingChangeResults.put(msg.arg1, result);
+ if (result.exception != null) {
+ Log.w(LOG_TAG, "Error in setting fwd# " + msg.arg1 + ": " +
+ result.exception.getMessage());
+ }
+ if (isForwardingCompleted()) {
+ if (isFwdChangeSuccess()) {
+ if (DBG) log("Overall fwd changes completed ok, starting vm change");
+ setVoicemailNumberWithCarrier();
+ } else {
+ Log.w(LOG_TAG, "Overall fwd changes completed in failure. " +
+ "Check if we need to try rollback for some settings.");
+ mFwdChangesRequireRollback = false;
+ Iterator<Map.Entry<Integer,AsyncResult>> it =
+ mForwardingChangeResults.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<Integer,AsyncResult> entry = it.next();
+ if (entry.getValue().exception == null) {
+ // If at least one succeeded we have to revert
+ Log.i(LOG_TAG, "Rollback will be required");
+ mFwdChangesRequireRollback = true;
+ break;
+ }
+ }
+ if (!mFwdChangesRequireRollback) {
+ Log.i(LOG_TAG, "No rollback needed.");
+ }
+ done = true;
+ }
+ }
+ break;
+ default:
+ // TODO: should never reach this, may want to throw exception
+ }
+
+ if (done) {
+ if (DBG) log("All VM provider related changes done");
+ if (mForwardingChangeResults != null) {
+ dismissDialogSafely(VoicemailDialogUtil.VM_FWD_SAVING_DIALOG);
+ }
+ handleSetVmOrFwdMessage();
+ }
+ }
+ };
+
+ /**
+ * Callback to handle option revert completions
+ */
+ private final Handler mRevertOptionComplete = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ AsyncResult result = (AsyncResult) msg.obj;
+ switch (msg.what) {
+ case EVENT_VOICEMAIL_CHANGED:
+ if (DBG) log("VM revert complete msg");
+ mVoicemailChangeResult = result;
+ break;
+
+ case EVENT_FORWARDING_CHANGED:
+ if (DBG) log("FWD revert complete msg ");
+ mForwardingChangeResults.put(msg.arg1, result);
+ if (result.exception != null) {
+ if (DBG) log("Error in reverting fwd# " + msg.arg1 + ": " +
+ result.exception.getMessage());
+ }
+ break;
+
+ default:
+ // TODO: should never reach this, may want to throw exception
+ }
+
+ final boolean done = (!mVMChangeCompletedSuccessfully || mVoicemailChangeResult != null)
+ && (!mFwdChangesRequireRollback || isForwardingCompleted());
+ if (done) {
+ if (DBG) log("All VM reverts done");
+ dismissDialogSafely(VoicemailDialogUtil.VM_REVERTING_DIALOG);
+ onRevertDone();
+ }
+ }
+ };
+
+ private void setVoicemailNumberWithCarrier() {
+ if (DBG) log("save voicemail #: " + mNewVMNumber);
+
+ mVoicemailChangeResult = null;
+ mPhone.setVoiceMailNumber(
+ mPhone.getVoiceMailAlphaTag().toString(),
+ mNewVMNumber,
+ Message.obtain(mSetOptionComplete, EVENT_VOICEMAIL_CHANGED));
+ }
+
+ private void switchToPreviousVoicemailProvider() {
+ if (DBG) log("switchToPreviousVoicemailProvider " + mPreviousVMProviderKey);
+
+ if (mPreviousVMProviderKey == null) {
+ return;
+ }
+
+ if (mVMChangeCompletedSuccessfully || mFwdChangesRequireRollback) {
+ showDialogIfForeground(VoicemailDialogUtil.VM_REVERTING_DIALOG);
+ final VoicemailProviderSettings prevSettings =
+ VoicemailProviderSettingsUtil.load(this, mPreviousVMProviderKey);
+ if (prevSettings == null) {
+ Log.e(LOG_TAG, "VoicemailProviderSettings for the key \""
+ + mPreviousVMProviderKey + "\" is null but should be loaded.");
+ }
+
+ if (mVMChangeCompletedSuccessfully) {
+ mNewVMNumber = prevSettings.getVoicemailNumber();
+ Log.i(LOG_TAG, "VM change is already completed successfully."
+ + "Have to revert VM back to " + mNewVMNumber + " again.");
+ mPhone.setVoiceMailNumber(
+ mPhone.getVoiceMailAlphaTag().toString(),
+ mNewVMNumber,
+ Message.obtain(mRevertOptionComplete, EVENT_VOICEMAIL_CHANGED));
+ }
+
+ if (mFwdChangesRequireRollback) {
+ Log.i(LOG_TAG, "Requested to rollback forwarding changes.");
+
+ final CallForwardInfo[] prevFwdSettings = prevSettings.getForwardingSettings();
+ if (prevFwdSettings != null) {
+ Map<Integer, AsyncResult> results = mForwardingChangeResults;
+ resetForwardingChangeState();
+ for (int i = 0; i < prevFwdSettings.length; i++) {
+ CallForwardInfo fi = prevFwdSettings[i];
+ if (DBG) log("Reverting fwd #: " + i + ": " + fi.toString());
+ // Only revert the settings for which the update succeeded.
+ AsyncResult result = results.get(fi.reason);
+ if (result != null && result.exception == null) {
+ mExpectedChangeResultReasons.add(fi.reason);
+ CallForwardInfoUtil.setCallForwardingOption(mPhone, fi,
+ mRevertOptionComplete.obtainMessage(
+ EVENT_FORWARDING_CHANGED, i, 0));
+ }
+ }
+ }
+ }
+ } else {
+ if (DBG) log("No need to revert");
+ onRevertDone();
+ }
+ }
+
+
+ //*********************************************************************************************
+ // Voicemail Handler Helpers
+ //*********************************************************************************************
+
+ /**
+ * Updates the look of the VM preference widgets based on current VM provider settings.
+ * Note that the provider name is loaded fxrorm the found activity via loadLabel in
+ * {@link VoicemailProviderListPreference#initVoiceMailProviders()} in order for it to be
+ * localizable.
+ */
+ private void updateVMPreferenceWidgets(String currentProviderSetting) {
+ final String key = currentProviderSetting;
+ final VoicemailProviderListPreference.VoicemailProvider provider =
+ mVoicemailProviders.getVoicemailProvider(key);
+
+ /* This is the case when we are coming up on a freshly wiped phone and there is no
+ persisted value for the list preference mVoicemailProviders.
+ In this case we want to show the UI asking the user to select a voicemail provider as
+ opposed to silently falling back to default one. */
+ if (provider == null) {
+ if (DBG) log("updateVMPreferenceWidget: key: " + key + " -> null.");
+
+ mVoicemailProviders.setSummary(getString(R.string.sum_voicemail_choose_provider));
+ mVoicemailSettings.setEnabled(false);
+ mVoicemailSettings.setIntent(null);
+ mVoicemailNotificationVibrate.setEnabled(false);
+ } else {
+ if (DBG) log("updateVMPreferenceWidget: key: " + key + " -> " + provider.toString());
+
+ final String providerName = provider.name;
+ mVoicemailProviders.setSummary(providerName);
+ mVoicemailSettings.setEnabled(true);
+ mVoicemailSettings.setIntent(provider.intent);
+ mVoicemailNotificationVibrate.setEnabled(true);
+ }
+ }
+
+ /**
+ * Update the voicemail number from what we've recorded on the sim.
+ */
+ private void updateVoiceNumberField() {
+ if (DBG) log("updateVoiceNumberField()");
+
+ mOldVmNumber = mPhone.getVoiceMailNumber();
+ if (TextUtils.isEmpty(mOldVmNumber)) {
+ mSubMenuVoicemailSettings.setPhoneNumber("");
+ mSubMenuVoicemailSettings.setSummary(getString(R.string.voicemail_number_not_set));
+ } else {
+ mSubMenuVoicemailSettings.setPhoneNumber(mOldVmNumber);
+ mSubMenuVoicemailSettings.setSummary(mOldVmNumber);
+ }
+ }
+
+ private void handleSetVmOrFwdMessage() {
+ if (DBG) log("handleSetVMMessage: set VM request complete");
+
+ if (!isFwdChangeSuccess()) {
+ handleVmOrFwdSetError(VoicemailDialogUtil.FWD_SET_RESPONSE_ERROR_DIALOG);
+ } else if (!isVmChangeSuccess()) {
+ handleVmOrFwdSetError(VoicemailDialogUtil.VM_RESPONSE_ERROR_DIALOG);
+ } else {
+ handleVmAndFwdSetSuccess(VoicemailDialogUtil.VM_CONFIRM_DIALOG);
+ }
+ }
+
+ /**
+ * Called when Voicemail Provider or its forwarding settings failed. Rolls back partly made
+ * changes to those settings and show "failure" dialog.
+ *
+ * @param dialogId ID of the dialog to show for the specific error case. Either
+ * {@link #FWD_SET_RESPONSE_ERROR_DIALOG} or {@link #VM_RESPONSE_ERROR_DIALOG}
+ */
+ private void handleVmOrFwdSetError(int dialogId) {
+ if (mChangingVMorFwdDueToProviderChange) {
+ mVMOrFwdSetError = dialogId;
+ mChangingVMorFwdDueToProviderChange = false;
+ switchToPreviousVoicemailProvider();
+ return;
+ }
+ mChangingVMorFwdDueToProviderChange = false;
+ showDialogIfForeground(dialogId);
+ updateVoiceNumberField();
+ }
+
+ /**
+ * Called when Voicemail Provider and its forwarding settings were successfully finished.
+ * This updates a bunch of variables and show "success" dialog.
+ */
+ private void handleVmAndFwdSetSuccess(int dialogId) {
+ if (DBG) log("handleVmAndFwdSetSuccess: key is " + mVoicemailProviders.getKey());
+
+ mPreviousVMProviderKey = mVoicemailProviders.getKey();
+ mChangingVMorFwdDueToProviderChange = false;
+ showDialogIfForeground(dialogId);
+ updateVoiceNumberField();
+ }
+
+ private void onRevertDone() {
+ if (DBG) log("onRevertDone: Changing provider key back to " + mPreviousVMProviderKey);
+
+ updateVMPreferenceWidgets(mPreviousVMProviderKey);
+ updateVoiceNumberField();
+ if (mVMOrFwdSetError != 0) {
+ showDialogIfForeground(mVMOrFwdSetError);
+ mVMOrFwdSetError = 0;
+ }
+ }
+
+
+ //*********************************************************************************************
+ // Voicemail State Helpers
+ //*********************************************************************************************
+
+ /**
+ * Return true if there is a change result for every reason for which we expect a result.
+ */
+ private boolean isForwardingCompleted() {
+ if (mForwardingChangeResults == null) {
+ return true;
+ }
+
+ for (Integer reason : mExpectedChangeResultReasons) {
+ if (mForwardingChangeResults.get(reason) == null) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private boolean isFwdChangeSuccess() {
+ if (mForwardingChangeResults == null) {
+ return true;
+ }
+
+ for (AsyncResult result : mForwardingChangeResults.values()) {
+ Throwable exception = result.exception;
+ if (exception != null) {
+ String msg = exception.getMessage();
+ msg = (msg != null) ? msg : "";
+ Log.w(LOG_TAG, "Failed to change forwarding setting. Reason: " + msg);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean isVmChangeSuccess() {
+ if (mVoicemailChangeResult.exception != null) {
+ String msg = mVoicemailChangeResult.exception.getMessage();
+ msg = (msg != null) ? msg : "";
+ Log.w(LOG_TAG, "Failed to change voicemail. Reason: " + msg);
+ return false;
+ }
+ return true;
+ }
+
+ private static void log(String msg) {
+ Log.d(LOG_TAG, msg);
+ }
}
diff --git a/src/com/android/phone/settings/VoicemailSettingsFragment.java b/src/com/android/phone/settings/VoicemailSettingsFragment.java
deleted file mode 100644
index fef3e8c..0000000
--- a/src/com/android/phone/settings/VoicemailSettingsFragment.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (C) 2014 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.phone.settings;
-
-import android.os.Bundle;
-import android.preference.PreferenceFragment;
-
-import com.android.phone.R;
-
-public class VoicemailSettingsFragment extends PreferenceFragment {
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- addPreferencesFromResource(R.xml.voicemail_settings);
- }
-}
diff --git a/src/com/android/phone/settings/fdn/GetPin2Screen.java b/src/com/android/phone/settings/fdn/GetPin2Screen.java
index 5959a51..2394a69 100644
--- a/src/com/android/phone/settings/fdn/GetPin2Screen.java
+++ b/src/com/android/phone/settings/fdn/GetPin2Screen.java
@@ -25,6 +25,7 @@
import android.text.method.DigitsKeyListener;
import android.util.Log;
import android.view.KeyEvent;
+import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
@@ -60,6 +61,15 @@
mOkButton.setOnClickListener(mClicked);
}
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
private String getPin2() {
return mPin2Field.getText().toString();
}
diff --git a/src/com/android/phone/vvm/omtp/OmtpVvmSyncAccountManager.java b/src/com/android/phone/vvm/omtp/OmtpVvmSyncAccountManager.java
index de39745..b891c70 100644
--- a/src/com/android/phone/vvm/omtp/OmtpVvmSyncAccountManager.java
+++ b/src/com/android/phone/vvm/omtp/OmtpVvmSyncAccountManager.java
@@ -19,8 +19,14 @@
import android.accounts.AccountManager;
import android.content.ContentResolver;
import android.content.Context;
+import android.provider.VoicemailContract;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.SubscriptionManager;
import android.util.Log;
+import com.android.phone.PhoneUtils;
+import com.android.phone.vvm.omtp.sms.StatusMessage;
+
/**
* A singleton class designed to assist in OMTP visual voicemail sync behavior.
*/
@@ -34,6 +40,8 @@
private static OmtpVvmSyncAccountManager sInstance = new OmtpVvmSyncAccountManager();
+ private Context mContext;
+ private SubscriptionManager mSubscriptionManager;
private AccountManager mAccountManager;
/**
@@ -42,16 +50,18 @@
private OmtpVvmSyncAccountManager() {}
public static OmtpVvmSyncAccountManager getInstance(Context context) {
- sInstance.setAccountManager(context);
+ sInstance.setup(context);
return sInstance;
}
/**
- * Set the account manager so it does not need to be retrieved every time.
- * @param context The context to get the account manager for.
+ * Set the context and system services so they do not need to be retrieved every time.
+ * @param context The context to get the account manager and subscription manager for.
*/
- private void setAccountManager(Context context) {
- if (mAccountManager == null) {
+ private void setup(Context context) {
+ if (mContext == null) {
+ mContext = context;
+ mSubscriptionManager = SubscriptionManager.from(context);
mAccountManager = AccountManager.get(context);
}
}
@@ -74,6 +84,26 @@
}
/**
+ * When a voicemail source is removed, we don't always know which one was removed. Check the
+ * list of registered sync accounts against the active subscriptions list and remove the
+ * inactive accounts.
+ */
+ public void removeInactiveAccounts() {
+ Account[] registeredAccounts = mAccountManager.getAccountsByType(ACCOUNT_TYPE);
+ for (int i = 0; i < registeredAccounts.length; i++) {
+ PhoneAccountHandle handle = PhoneUtils.makePstnPhoneAccountHandle(
+ registeredAccounts[i].name);
+ if (!PhoneUtils.isPhoneAccountActive(mSubscriptionManager, handle)) {
+ mAccountManager.removeAccount(registeredAccounts[i], null, null, null);
+ VoicemailContract.Status.setStatus(mContext, handle,
+ VoicemailContract.Status.CONFIGURATION_STATE_NOT_CONFIGURED,
+ VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION,
+ VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
+ }
+ }
+ }
+
+ /**
* Check if a certain account is registered.
*
* @param account The account to look for.
@@ -89,4 +119,20 @@
}
return false;
}
+
+ /**
+ * Set the IMAP credentials as extra fields in the account.
+ *
+ * @param account The account to add credentials to.
+ * @param message The status message to extract the fields from.
+ */
+ public void setAccountCredentialsFromStatusMessage(Account account, StatusMessage message) {
+ mAccountManager.setUserData(account, OmtpConstants.IMAP_PORT, message.getImapPort());
+ mAccountManager.setUserData(account, OmtpConstants.SERVER_ADDRESS,
+ message.getServerAddress());
+ mAccountManager.setUserData(account, OmtpConstants.IMAP_USER_NAME,
+ message.getImapUserName());
+ mAccountManager.setUserData(account, OmtpConstants.IMAP_PASSWORD,
+ message.getImapPassword());
+ }
}
diff --git a/src/com/android/phone/vvm/omtp/OmtpVvmSyncService.java b/src/com/android/phone/vvm/omtp/OmtpVvmSyncService.java
index 811e7e6..fc444ba 100644
--- a/src/com/android/phone/vvm/omtp/OmtpVvmSyncService.java
+++ b/src/com/android/phone/vvm/omtp/OmtpVvmSyncService.java
@@ -25,11 +25,25 @@
import android.app.Service;
import android.content.AbstractThreadedSyncAdapter;
import android.content.ContentProviderClient;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SyncResult;
+import android.database.Cursor;
+import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
+import android.provider.VoicemailContract;
+import android.provider.VoicemailContract.Voicemails;
+import android.telecom.Voicemail;
+
+import com.android.phone.vvm.omtp.imap.ImapHelper;
+import com.android.phone.vvm.omtp.sync.DirtyVoicemailQuery;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* A service to run the VvmSyncAdapter.
@@ -55,14 +69,110 @@
}
public class OmtpVvmSyncAdapter extends AbstractThreadedSyncAdapter {
+ /**
+ * Sync triggers should pass this extra to clear the database and freshly populate from the
+ * server.
+ */
+ public static final String SYNC_EXTRAS_CLEAR_AND_RELOAD = "extra_clear_and_reload";
+
+ private Context mContext;
+ private ContentResolver mContentResolver;
+
public OmtpVvmSyncAdapter(Context context, boolean autoInitialize) {
super(context, autoInitialize);
+ mContext = context;
+ mContentResolver = context.getContentResolver();
}
@Override
public void onPerformSync(Account account, Bundle extras, String authority,
ContentProviderClient provider, SyncResult syncResult) {
- // TODO: Write code necessary for syncing.
+ ImapHelper imapHelper = new ImapHelper(mContext, account);
+
+ if (extras.getBoolean(ContentResolver.SYNC_EXTRAS_UPLOAD, false)) {
+ List<Voicemail> readVoicemails = new ArrayList<Voicemail>();
+ List<Voicemail> deletedVoicemails = new ArrayList<Voicemail>();
+
+ Cursor cursor = DirtyVoicemailQuery.getDirtyVoicemails(mContext);
+ if (cursor == null) {
+ return;
+ }
+ try {
+ while (cursor.moveToNext()) {
+ final long id = cursor.getLong(DirtyVoicemailQuery._ID);
+ final String sourceData = cursor.getString(DirtyVoicemailQuery.SOURCE_DATA);
+ final boolean isRead = cursor.getInt(DirtyVoicemailQuery.IS_READ) == 1;
+ final boolean deleted = cursor.getInt(DirtyVoicemailQuery.DELETED) == 1;
+ Voicemail voicemail = Voicemail.createForUpdate(id, sourceData).build();
+ if (deleted) {
+ // Check deleted first because if the voicemail is deleted, there's no
+ // need to mark as read.
+ deletedVoicemails.add(voicemail);
+ } else if (isRead) {
+ readVoicemails.add(voicemail);
+ }
+ }
+ } finally {
+ cursor.close();
+ }
+ if (imapHelper.markMessagesAsDeleted(deletedVoicemails)) {
+ // We want to delete selectively instead of all the voicemails for this provider
+ // in case the state changed since the IMAP query was completed.
+ deleteFromDatabase(deletedVoicemails);
+ }
+
+ if (imapHelper.markMessagesAsRead(readVoicemails)) {
+ markReadInDatabase(readVoicemails);
+ }
+ }
+
+ if (extras.getBoolean(SYNC_EXTRAS_CLEAR_AND_RELOAD, false)) {
+ // Fetch voicemails first before deleting local copy, the fetching may take awhile.
+ List<Voicemail> voicemails = imapHelper.fetchAllVoicemails();
+
+ // Deleting current local messages ensure that we start with a fresh copy
+ // and also don't need to deal with comparing between local and server.
+ VoicemailContract.Voicemails.deleteAll(mContext);
+
+ if (voicemails != null) {
+ VoicemailContract.Voicemails.insert(mContext, voicemails);
+ }
+ }
+ }
+
+ /**
+ * Deletes a list of voicemails from the voicemail content provider.
+ *
+ * @param voicemails The list of voicemails to delete
+ * @return The number of voicemails deleted
+ */
+ public int deleteFromDatabase(List<Voicemail> voicemails) {
+ int count = voicemails.size();
+ for (int i = 0; i < count; i++) {
+ mContentResolver.delete(Voicemails.CONTENT_URI, Voicemails._ID + "=?",
+ new String[] { Long.toString(voicemails.get(i).getId()) });
+ }
+ return count;
+ }
+
+ /**
+ * Sends an update command to the voicemail content provider for a list of voicemails.
+ * From the view of the provider, since the updater is the owner of the entry, a blank
+ * "update" means that the voicemail source is indicating that the server has up-to-date
+ * information on the voicemail. This flips the "dirty" bit to "0".
+ *
+ * @param voicemails The list of voicemails to update
+ * @return The number of voicemails updated
+ */
+ public int markReadInDatabase(List<Voicemail> voicemails) {
+ int count = voicemails.size();
+ for (int i = 0; i < count; i++) {
+ Uri uri = ContentUris.withAppendedId(
+ VoicemailContract.Voicemails.buildSourceUri(mContext.getPackageName()),
+ voicemails.get(i).getId());
+ mContentResolver.update(uri, new ContentValues(), null, null);
+ }
+ return count;
}
}
}
diff --git a/src/com/android/phone/vvm/omtp/SimChangeReceiver.java b/src/com/android/phone/vvm/omtp/SimChangeReceiver.java
new file mode 100644
index 0000000..e607d60
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/SimChangeReceiver.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2015 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.phone.vvm.omtp;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SmsManager;
+import android.telephony.SubscriptionManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.internal.telephony.IccCardConstants;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.phone.vvm.omtp.sms.OmtpMessageSender;
+
+/**
+ * This class listens to the {@link CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED} and
+ * {@link TelephonyIntents#ACTION_SIM_STATE_CHANGED} to determine when a SIM is added, replaced,
+ * or removed.
+ *
+ * When a SIM is added, send an activate SMS. When a SIM is removed, remove the sync accounts and
+ * change the status in the voicemail_status table.
+ */
+public class SimChangeReceiver extends BroadcastReceiver {
+ private final String TAG = "SimChangeReceiver";
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ if (action == null) {
+ Log.w(TAG, "Null action for intent.");
+ return;
+ }
+
+ switch (action) {
+ case TelephonyIntents.ACTION_SIM_STATE_CHANGED:
+ if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(
+ intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE))) {
+ Log.i(TAG, "Sim removed, removing inactive accounts");
+ OmtpVvmSyncAccountManager.getInstance(context).removeInactiveAccounts();
+ }
+ break;
+ case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:
+ handleCarrierConfigChange(context, intent);
+ break;
+ }
+ }
+
+ private void handleCarrierConfigChange(Context context, Intent intent) {
+ int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ Log.w(TAG, "subscriptionId not provided in intent.");
+ return;
+ }
+
+ CarrierConfigManager carrierConfigManager = (CarrierConfigManager)
+ context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ if (carrierConfigManager == null) {
+ Log.w(TAG, "No carrier config service found.");
+ return;
+ }
+
+ Bundle carrierConfig = carrierConfigManager.getConfigForSubId(subId);
+ if (carrierConfig == null) {
+ Log.w(TAG, "Empty carrier config.");
+ return;
+ }
+ String vvmType = carrierConfig.getString(
+ CarrierConfigManager.STRING_VVM_TYPE, null);
+
+ if (!CarrierConfigManager.VVM_TYPE_OMTP.equals(vvmType)) {
+ // This is not an OMTP visual voicemail compatible carrier.
+ return;
+ }
+
+ int applicationPort = carrierConfig.getInt(
+ CarrierConfigManager.INT_VVM_PORT_NUMBER, 0);
+ String destinationNumber = carrierConfig.getString(
+ CarrierConfigManager.STRING_VVM_DESTINATION_NUMBER);
+ if (TextUtils.isEmpty(destinationNumber)) {
+ Log.w(TAG, "No destination number for this carrier.");
+ return;
+ }
+
+ Log.i(TAG, "Requesting VVM activation for subId: " + subId);
+ SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
+ OmtpMessageSender messageSender = new OmtpMessageSender(smsManager,
+ (short) applicationPort, destinationNumber, null,
+ OmtpConstants.PROTOCOL_VERSION1_1, null);
+ messageSender.requestVvmActivation(null);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/imap/ImapHelper.java b/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
new file mode 100644
index 0000000..eae6cac
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
@@ -0,0 +1,376 @@
+/*
+ * Copyright (C) 2015 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.phone.vvm.omtp.imap;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.content.Context;
+import android.telecom.Voicemail;
+
+import android.util.Base64;
+
+import com.android.phone.common.mail.Address;
+import com.android.phone.common.mail.Body;
+import com.android.phone.common.mail.BodyPart;
+import com.android.phone.common.mail.FetchProfile;
+import com.android.phone.common.mail.Flag;
+import com.android.phone.common.mail.Message;
+import com.android.phone.common.mail.MessagingException;
+import com.android.phone.common.mail.Multipart;
+import com.android.phone.common.mail.TempDirectory;
+import com.android.phone.common.mail.internet.MimeMessage;
+import com.android.phone.common.mail.store.ImapFolder;
+import com.android.phone.common.mail.store.ImapStore;
+import com.android.phone.common.mail.store.imap.ImapConstants;
+import com.android.phone.common.mail.utils.LogUtils;
+import com.android.phone.vvm.omtp.OmtpConstants;
+import com.android.phone.vvm.omtp.sync.VoicemailFetchedCallback;
+
+import libcore.io.IoUtils;
+
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * A helper interface to abstract commands sent across IMAP interface for a given account.
+ */
+public class ImapHelper {
+ private final String TAG = "ImapHelper";
+
+ private ImapFolder mFolder;
+ private ImapStore mImapStore;
+ private Context mContext;
+
+ public ImapHelper(Context context, Account account) {
+ try {
+ mContext = context;
+ TempDirectory.setTempDirectory(context);
+
+ AccountManager accountManager = AccountManager.get(context);
+ String username = accountManager.getUserData(account, OmtpConstants.IMAP_USER_NAME);
+ String password = accountManager.getUserData(account, OmtpConstants.IMAP_PASSWORD);
+ String serverName = accountManager.getUserData(account, OmtpConstants.SERVER_ADDRESS);
+ int port = Integer.parseInt(
+ accountManager.getUserData(account, OmtpConstants.IMAP_PORT));
+ // TODO: determine the security protocol (e.g. ssl, tls, none, etc.)
+ mImapStore = new ImapStore(
+ context, username, password, port, serverName, ImapStore.FLAG_NONE);
+ } catch (NumberFormatException e) {
+ LogUtils.e(TAG, e, "Could not parse port number");
+ }
+ }
+
+ /** The caller thread will block until the method returns. */
+ public boolean markMessagesAsRead(List<Voicemail> voicemails) {
+ return setFlags(voicemails, Flag.SEEN);
+ }
+
+ /** The caller thread will block until the method returns. */
+ public boolean markMessagesAsDeleted(List<Voicemail> voicemails) {
+ return setFlags(voicemails, Flag.DELETED);
+ }
+
+ /**
+ * Set flags on the server for a given set of voicemails.
+ *
+ * @param voicemails The voicemails to set flags for.
+ * @param flags The flags to set on the voicemails.
+ * @return {@code true} if the operation completes successfully, {@code false} otherwise.
+ */
+ private boolean setFlags(List<Voicemail> voicemails, String... flags) {
+ if (voicemails.size() == 0) {
+ return false;
+ }
+ try {
+ mFolder = openImapFolder(ImapFolder.MODE_READ_WRITE);
+ if (mFolder != null) {
+ mFolder.setFlags(convertToImapMessages(voicemails), flags, true);
+ return true;
+ }
+ return false;
+ } catch (MessagingException e) {
+ LogUtils.e(TAG, e, "Messaging exception");
+ return false;
+ } finally {
+ closeImapFolder();
+ }
+ }
+
+ /**
+ * Fetch a list of voicemails from the server.
+ *
+ * @return A list of voicemail objects containing data about voicemails stored on the server.
+ */
+ public List<Voicemail> fetchAllVoicemails() {
+ List<Voicemail> result = new ArrayList<Voicemail>();
+ Message[] messages;
+ try {
+ mFolder = openImapFolder(ImapFolder.MODE_READ_WRITE);
+ if (mFolder == null) {
+ // This means we were unable to successfully open the folder.
+ return null;
+ }
+
+ // This method retrieves lightweight messages containing only the uid of the message.
+ messages = mFolder.getMessages(null);
+
+ for (Message message : messages) {
+ // Get the voicemail details.
+ Voicemail voicemail = fetchVoicemail(message);
+ if (voicemail != null) {
+ result.add(voicemail);
+ }
+ }
+ return result;
+ } catch (MessagingException e) {
+ LogUtils.e(TAG, e, "Messaging Exception");
+ return null;
+ } finally {
+ closeImapFolder();
+ }
+ }
+
+ /**
+ * Fetches the structure of the given message and returns the voicemail parsed from it.
+ *
+ * @throws MessagingException if fetching the structure of the message fails
+ */
+ private Voicemail fetchVoicemail(Message message)
+ throws MessagingException {
+ LogUtils.d(TAG, "Fetching message structure for " + message.getUid());
+
+ MessageStructureFetchedListener listener = new MessageStructureFetchedListener();
+
+ FetchProfile fetchProfile = new FetchProfile();
+ fetchProfile.addAll(Arrays.asList(FetchProfile.Item.FLAGS, FetchProfile.Item.ENVELOPE,
+ FetchProfile.Item.STRUCTURE));
+
+ // The IMAP folder fetch method will call "messageRetrieved" on the listener when the
+ // message is successfully retrieved.
+ mFolder.fetch(new Message[] {message}, fetchProfile, listener);
+ return listener.getVoicemail();
+ }
+
+
+ public void fetchVoicemailPayload(VoicemailFetchedCallback callback, final String uid) {
+ Message message;
+ try {
+ mFolder = openImapFolder(ImapFolder.MODE_READ_WRITE);
+ if (mFolder == null) {
+ // This means we were unable to successfully open the folder.
+ return;
+ }
+ message = mFolder.getMessage(uid);
+ VoicemailPayload voicemailPayload = fetchVoicemailPayload(message);
+ callback.setVoicemailContent(voicemailPayload);
+ } catch (MessagingException e) {
+ } finally {
+ closeImapFolder();
+ }
+ }
+
+ /**
+ * Fetches the body of the given message and returns the parsed voicemail payload.
+ *
+ * @throws MessagingException if fetching the body of the message fails
+ */
+ private VoicemailPayload fetchVoicemailPayload(Message message)
+ throws MessagingException {
+ LogUtils.d(TAG, "Fetching message body for " + message.getUid());
+
+ MessageBodyFetchedListener listener = new MessageBodyFetchedListener();
+
+ FetchProfile fetchProfile = new FetchProfile();
+ fetchProfile.add(FetchProfile.Item.BODY);
+
+ mFolder.fetch(new Message[] {message}, fetchProfile, listener);
+ return listener.getVoicemailPayload();
+ }
+
+ /**
+ * Listener for the message structure being fetched.
+ */
+ private final class MessageStructureFetchedListener
+ implements ImapFolder.MessageRetrievalListener {
+ private Voicemail mVoicemail;
+
+ public MessageStructureFetchedListener() {
+ }
+
+ public Voicemail getVoicemail() {
+ return mVoicemail;
+ }
+
+ @Override
+ public void messageRetrieved(Message message) {
+ LogUtils.d(TAG, "Fetched message structure for " + message.getUid());
+ LogUtils.d(TAG, "Message retrieved: " + message);
+ try {
+ mVoicemail = getVoicemailFromMessage(message);
+ if (mVoicemail == null) {
+ LogUtils.d(TAG, "This voicemail does not have an attachment...");
+ return;
+ }
+ } catch (MessagingException e) {
+ LogUtils.e(TAG, e, "Messaging Exception");
+ closeImapFolder();
+ }
+ }
+
+ /**
+ * Convert an IMAP message to a voicemail object.
+ *
+ * @param message The IMAP message.
+ * @return The voicemail object corresponding to an IMAP message.
+ * @throws MessagingException
+ */
+ private Voicemail getVoicemailFromMessage(Message message) throws MessagingException {
+ if (!message.getMimeType().startsWith("multipart/")) {
+ LogUtils.w(TAG, "Ignored non multi-part message");
+ return null;
+ }
+
+ Multipart multipart = (Multipart) message.getBody();
+ for (int i = 0; i < multipart.getCount(); ++i) {
+ BodyPart bodyPart = multipart.getBodyPart(i);
+ String bodyPartMimeType = bodyPart.getMimeType().toLowerCase();
+ LogUtils.d(TAG, "bodyPart mime type: " + bodyPartMimeType);
+
+ if (bodyPartMimeType.startsWith("audio/")) {
+ // Found an audio attachment, this is a valid voicemail.
+ long time = message.getSentDate().getTime();
+ String number = getNumber(message.getFrom());
+ boolean isRead = Arrays.asList(message.getFlags()).contains(Flag.SEEN);
+
+ return Voicemail.createForInsertion(time, number)
+ .setSourcePackage(mContext.getPackageName())
+ .setSourceData(message.getUid())
+ .setIsRead(isRead)
+ .build();
+ }
+ }
+ // No attachment found, this is not a voicemail.
+ return null;
+ }
+
+ /**
+ * The "from" field of a visual voicemail IMAP message is the number of the caller who left
+ * the message. Extract this number from the list of "from" addresses.
+ *
+ * @param fromAddresses A list of addresses that comprise the "from" line.
+ * @return The number of the voicemail sender.
+ */
+ private String getNumber(Address[] fromAddresses) {
+ if (fromAddresses != null && fromAddresses.length > 0) {
+ if (fromAddresses.length != 1) {
+ LogUtils.w(TAG, "More than one from addresses found. Using the first one.");
+ }
+ String sender = fromAddresses[0].getAddress();
+ int atPos = sender.indexOf('@');
+ if (atPos != -1) {
+ // Strip domain part of the address.
+ sender = sender.substring(0, atPos);
+ }
+ return sender;
+ }
+ return null;
+ }
+ }
+
+ /**
+ * Listener for the message body being fetched.
+ */
+ private final class MessageBodyFetchedListener implements ImapFolder.MessageRetrievalListener {
+ private VoicemailPayload mVoicemailPayload;
+
+ /** Returns the fetch voicemail payload. */
+ public VoicemailPayload getVoicemailPayload() {
+ return mVoicemailPayload;
+ }
+
+ @Override
+ public void messageRetrieved(Message message) {
+ LogUtils.d(TAG, "Fetched message body for " + message.getUid());
+ LogUtils.d(TAG, "Message retrieved: " + message);
+ try {
+ mVoicemailPayload = getVoicemailPayloadFromMessage(message);
+ } catch (MessagingException e) {
+ LogUtils.e(TAG, "Messaging Exception:", e);
+ } catch (IOException e) {
+ LogUtils.e(TAG, "IO Exception:", e);
+ }
+ }
+
+ private VoicemailPayload getVoicemailPayloadFromMessage(Message message)
+ throws MessagingException, IOException {
+ Multipart multipart = (Multipart) message.getBody();
+ for (int i = 0; i < multipart.getCount(); ++i) {
+ BodyPart bodyPart = multipart.getBodyPart(i);
+ String bodyPartMimeType = bodyPart.getMimeType().toLowerCase();
+ LogUtils.d(TAG, "bodyPart mime type: " + bodyPartMimeType);
+
+ if (bodyPartMimeType.startsWith("audio/")) {
+ byte[] bytes = getAudioDataFromBody(bodyPart.getBody());
+ LogUtils.d(TAG, String.format("Fetched %s bytes of data", bytes.length));
+ return new VoicemailPayload(bodyPartMimeType, bytes);
+ }
+ }
+ LogUtils.e(TAG, "No audio attachment found on this voicemail");
+ return null;
+ }
+
+ private byte[] getAudioDataFromBody(Body body) throws IOException, MessagingException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ BufferedOutputStream bufferedOut = new BufferedOutputStream(out);
+ try {
+ body.writeTo(bufferedOut);
+ } finally {
+ IoUtils.closeQuietly(bufferedOut);
+ }
+ return Base64.decode(out.toByteArray(), Base64.DEFAULT);
+ }
+ }
+
+ private ImapFolder openImapFolder(String modeReadWrite) {
+ try {
+ ImapFolder folder = new ImapFolder(mImapStore, ImapConstants.INBOX);
+ folder.open(modeReadWrite);
+ return folder;
+ } catch (MessagingException e) {
+ LogUtils.e(TAG, e, "Messaging Exception");
+ }
+ return null;
+ }
+
+ private Message[] convertToImapMessages(List<Voicemail> voicemails) {
+ Message[] messages = new Message[voicemails.size()];
+ for (int i = 0; i < voicemails.size(); ++i) {
+ messages[i] = new MimeMessage();
+ messages[i].setUid(voicemails.get(i).getSourceData());
+ }
+ return messages;
+ }
+
+ private void closeImapFolder() {
+ if (mFolder != null) {
+ mFolder.close(true);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/imap/VoicemailPayload.java b/src/com/android/phone/vvm/omtp/imap/VoicemailPayload.java
new file mode 100644
index 0000000..0ffa018
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/imap/VoicemailPayload.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2015 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.phone.vvm.omtp.imap;
+
+/**
+ * The payload for a voicemail, usually audio data.
+ */
+public class VoicemailPayload {
+ private final String mMimeType;
+ private final byte[] mBytes;
+
+ public VoicemailPayload(String mimeType, byte[] bytes) {
+ mMimeType = mimeType;
+ mBytes = bytes;
+ }
+
+ public byte[] getBytes() {
+ return mBytes;
+ }
+
+ public String getMimeType() {
+ return mMimeType;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java b/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
index 932fb1a..57979ff 100644
--- a/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
+++ b/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
@@ -24,6 +24,7 @@
import android.provider.Telephony;
import android.provider.VoicemailContract;
import android.telecom.PhoneAccountHandle;
+import android.telecom.Voicemail;
import android.telephony.SmsMessage;
import android.util.Log;
@@ -31,6 +32,7 @@
import com.android.phone.PhoneUtils;
import com.android.phone.vvm.omtp.OmtpConstants;
import com.android.phone.vvm.omtp.OmtpVvmSyncAccountManager;
+import com.android.phone.vvm.omtp.OmtpVvmSyncService.OmtpVvmSyncAdapter;
import java.io.UnsupportedEncodingException;
@@ -50,22 +52,20 @@
intent.getExtras().getInt(PhoneConstants.PHONE_KEY));
SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
- StringBuilder userData = new StringBuilder();
StringBuilder messageBody = new StringBuilder();
for (int i = 0; i < messages.length; i++) {
messageBody.append(messages[i].getMessageBody());
- userData.append(extractUserData(messages[i]));
}
WrappedMessageData messageData = OmtpSmsParser.parse(messageBody.toString());
if (messageData != null) {
if (messageData.getPrefix() == OmtpConstants.SYNC_SMS_PREFIX) {
SyncMessage message = new SyncMessage(messageData);
- //TODO: handle message
+ processSync(message);
} else if (messageData.getPrefix() == OmtpConstants.STATUS_SMS_PREFIX) {
StatusMessage message = new StatusMessage(messageData);
- handleStatusMessage(message);
+ updateAccount(message);
} else {
Log.e(TAG, "This should never have happened");
}
@@ -73,33 +73,66 @@
// Let this fall through: this is not a message we're interested in.
}
- private String extractUserData(SmsMessage sms) {
- try {
- // OMTP spec does not tell about the encoding. We assume ASCII.
- // UTF-8 sounds safer as it can handle ascii as well as other charsets.
- return new String(sms.getUserData(), "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new IllegalStateException("This should have never happened", e);
+ /**
+ * A sync message has two purposes: to signal a new voicemail message, and to indicate the
+ * voicemails on the server have changed remotely (usually through the TUI). Save the new
+ * message to the voicemail provider if it is the former case and perform a full sync in the
+ * latter case.
+ *
+ * @param message The sync message to extract data from.
+ */
+ private void processSync(SyncMessage message) {
+ switch (message.getSyncTriggerEvent()) {
+ case OmtpConstants.NEW_MESSAGE:
+ Voicemail voicemail = Voicemail.createForInsertion(
+ message.getTimestampMillis(), message.getSender())
+ .setSourceData(message.getId())
+ .setDuration(message.getLength())
+ .setSourcePackage(mContext.getPackageName())
+ .build();
+
+ VoicemailContract.Voicemails.insert(mContext, voicemail);
+ break;
+ case OmtpConstants.MAILBOX_UPDATE:
+ // Needs a total resync
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(OmtpVvmSyncAdapter.SYNC_EXTRAS_CLEAR_AND_RELOAD, true);
+ ContentResolver.requestSync(
+ new Account(mPhoneAccount.getId(), OmtpVvmSyncAccountManager.ACCOUNT_TYPE),
+ VoicemailContract.AUTHORITY, bundle);
+ break;
+ case OmtpConstants.GREETINGS_UPDATE:
+ // Not implemented in V1
+ break;
+ default:
+ Log.e(TAG, "Unrecognized sync trigger event: "+message.getSyncTriggerEvent());
+ break;
}
}
- private void handleStatusMessage(StatusMessage message) {
- OmtpVvmSyncAccountManager vvmSyncManager = OmtpVvmSyncAccountManager.getInstance(mContext);
+ private void updateAccount(StatusMessage message) {
+ OmtpVvmSyncAccountManager vvmAccountSyncManager =
+ OmtpVvmSyncAccountManager.getInstance(mContext);
Account account = new Account(mPhoneAccount.getId(),
OmtpVvmSyncAccountManager.ACCOUNT_TYPE);
- if (!vvmSyncManager.isAccountRegistered(account)) {
+ if (!vvmAccountSyncManager.isAccountRegistered(account)) {
// If the account has not been previously registered, it means that this STATUS sms
// is a result of the ACTIVATE sms, so register the voicemail source.
- vvmSyncManager.createSyncAccount(account);
+ vvmAccountSyncManager.createSyncAccount(account);
VoicemailContract.Status.setStatus(mContext, mPhoneAccount,
VoicemailContract.Status.CONFIGURATION_STATE_OK,
VoicemailContract.Status.DATA_CHANNEL_STATE_OK,
VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK);
+
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(OmtpVvmSyncAdapter.SYNC_EXTRAS_CLEAR_AND_RELOAD, true);
+ bundle.putBoolean(ContentResolver.SYNC_EXTRAS_UPLOAD, true);
+ ContentResolver.requestSync(account, VoicemailContract.AUTHORITY, bundle);
}
- //TODO: figure out how to pass IMAP credentials to sync adapter
-
- ContentResolver.requestSync(account, VoicemailContract.AUTHORITY, new Bundle());
+ // Save the IMAP credentials in the corresponding account object so they are
+ // persistent and can be retrieved.
+ vvmAccountSyncManager.setAccountCredentialsFromStatusMessage(account, message);
}
}
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpMessageSender.java b/src/com/android/phone/vvm/omtp/sms/OmtpMessageSender.java
index f7cfb86..0011ac3 100644
--- a/src/com/android/phone/vvm/omtp/sms/OmtpMessageSender.java
+++ b/src/com/android/phone/vvm/omtp/sms/OmtpMessageSender.java
@@ -18,36 +18,156 @@
import android.annotation.Nullable;
import android.app.PendingIntent;
import android.telephony.SmsManager;
+import android.text.TextUtils;
+
+import com.android.phone.vvm.omtp.OmtpConstants;
+import com.android.services.telephony.Log;
+
+import java.io.UnsupportedEncodingException;
/**
- * Interface to send client originated OMTP messages to the OMTP server.
+ * Send client originated OMTP messages to the OMTP server.
* <p>
- * The interface uses {@link PendingIntent} instead of a call back to notify when the message is
+ * Uses {@link PendingIntent} instead of a call back to notify when the message is
* sent. This is primarily to keep the implementation simple and reuse what the underlying
* {@link SmsManager} interface provides.
+ * <p>
+ * Provides simple APIs to send different types of mobile originated OMTP SMS to the VVM server.
*/
-public interface OmtpMessageSender {
+public class OmtpMessageSender {
+ private static final String TAG = "OmtpMessageSender";
+ private final SmsManager mSmsManager;
+ private final short mApplicationPort;
+ private final String mDestinationNumber;
+ private final String mClientType;
+ private final String mProtocolVersion;
+ private final String mClientPrefix;
+
+ /**
+ * Creates a new instance of OmtpMessageSenderImpl.
+ *
+ * @param smsManager SMS sending library. There is a different SmsManager for each SIM.
+ * @param applicationPort If set to a value > 0 then a binary sms is sent to this port number.
+ * Otherwise, a standard text SMS is sent.
+ * @param destinationNumber Destination number to be used.
+ * @param clientType The "ct" field to be set in the MO message. This is the value used by the
+ * VVM server to identify the client. Certain VVM servers require a specific agreed
+ * value for this field.
+ * @param protocolVersion OMTP protocol version.
+ * @param clientPrefix The client prefix requested to be used by the server in its MT messages.
+ */
+ public OmtpMessageSender(SmsManager smsManager, short applicationPort,
+ String destinationNumber, String clientType, String protocolVersion,
+ String clientPrefix) {
+ mSmsManager = smsManager;
+ mApplicationPort = applicationPort;
+ mDestinationNumber = destinationNumber;
+ mClientType = clientType;
+ mProtocolVersion = protocolVersion;
+ mClientPrefix = clientPrefix;
+ }
+
+
+ // Activate message:
+ // V1.1: Activate:pv=<value>;ct=<value>
+ // V1.2: Activate:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
+ // V1.3: Activate:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
/**
* Sends a request to the VVM server to activate VVM for the current subscriber.
*
* @param sentIntent If not NULL this PendingIntent is broadcast when the message is
* successfully sent, or failed.
*/
- public void requestVvmActivation(@Nullable PendingIntent sentIntent);
+ public void requestVvmActivation(@Nullable PendingIntent sentIntent) {
+ StringBuilder sb = new StringBuilder().append(OmtpConstants.ACTIVATE_REQUEST);
+ appendProtocolVersionAndClientType(sb);
+ if (TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_2) ||
+ TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_3)) {
+ appendApplicationPort(sb);
+ appendClientPrefix(sb);
+ }
+
+ sendSms(sb.toString(), sentIntent);
+ }
+
+ // Deactivate message:
+ // V1.1: Deactivate:pv=<value>;ct=<string>
+ // V1.2: Deactivate:pv=<value>;ct=<string>
+ // V1.3: Deactivate:pv=<value>;ct=<string>
/**
* Sends a request to the VVM server to deactivate VVM for the current subscriber.
*
* @param sentIntent If not NULL this PendingIntent is broadcast when the message is
* successfully sent, or failed.
*/
- public void requestVvmDeactivation(@Nullable PendingIntent sentIntent);
+ public void requestVvmDeactivation(@Nullable PendingIntent sentIntent) {
+ StringBuilder sb = new StringBuilder().append(OmtpConstants.DEACTIVATE_REQUEST);
+ appendProtocolVersionAndClientType(sb);
+ sendSms(sb.toString(), sentIntent);
+ }
+
+ // Status message:
+ // V1.1: STATUS
+ // V1.2: STATUS
+ // V1.3: STATUS:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
/**
* Send a request to the VVM server to get account status of the current subscriber.
*
* @param sentIntent If not NULL this PendingIntent is broadcast when the message is
* successfully sent, or failed.
*/
- public void requestVvmStatus(@Nullable PendingIntent sentIntent);
-}
\ No newline at end of file
+ public void requestVvmStatus(@Nullable PendingIntent sentIntent) {
+ StringBuilder sb = new StringBuilder().append(OmtpConstants.STATUS_REQUEST);
+
+ if (TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_3)) {
+ appendProtocolVersionAndClientType(sb);
+ appendApplicationPort(sb);
+ appendClientPrefix(sb);
+ }
+
+ sendSms(sb.toString(), sentIntent);
+ }
+
+ private void sendSms(String text, PendingIntent sentIntent) {
+ // If application port is set to 0 then send simple text message, else send data message.
+ if (mApplicationPort == 0) {
+ Log.v(TAG, String.format("Sending TEXT sms '%s' to %s", text, mDestinationNumber));
+ mSmsManager.sendTextMessageWithSelfPermissions(mDestinationNumber, null, text,
+ sentIntent, null);
+ } else {
+ byte[] data;
+ try {
+ data = text.getBytes("UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new IllegalStateException("Failed to encode: " + text);
+ }
+ Log.v(TAG, String.format("Sending BINARY sms '%s' to %s:%d", text, mDestinationNumber,
+ mApplicationPort));
+ mSmsManager.sendDataMessageWithSelfPermissions(mDestinationNumber, null,
+ mApplicationPort, data, sentIntent, null);
+ }
+ }
+
+ private void appendProtocolVersionAndClientType(StringBuilder sb) {
+ sb.append(OmtpConstants.SMS_PREFIX_SEPARATOR);
+ appendField(sb, OmtpConstants.PROTOCOL_VERSION, mProtocolVersion);
+ sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
+ appendField(sb, OmtpConstants.CLIENT_TYPE, mClientType);
+ }
+
+ private void appendApplicationPort(StringBuilder sb) {
+ sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
+ appendField(sb, OmtpConstants.APPLICATION_PORT, mApplicationPort);
+ }
+
+ private void appendClientPrefix(StringBuilder sb) {
+ sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
+ sb.append(mClientPrefix);
+ }
+
+ private void appendField(StringBuilder sb, String field, Object value) {
+ sb.append(field).append(OmtpConstants.SMS_KEY_VALUE_SEPARATOR).append(value);
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpMessageSenderImpl.java b/src/com/android/phone/vvm/omtp/sms/OmtpMessageSenderImpl.java
deleted file mode 100644
index 15e8e3a..0000000
--- a/src/com/android/phone/vvm/omtp/sms/OmtpMessageSenderImpl.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2015 Google Inc. All Rights Reserved.
- *
- * 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.phone.vvm.omtp.sms;
-
-import android.annotation.Nullable;
-import android.app.PendingIntent;
-import android.telephony.SmsManager;
-import android.text.TextUtils;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-import com.android.services.telephony.Log;
-
-import java.io.UnsupportedEncodingException;
-
-/**
- * Implementation of {@link OmtpMessageSender} interface.
- * <p>
- * Provides simple APIs to send different types of mobile originated OMTP SMS to the VVM server.
- */
-public class OmtpMessageSenderImpl implements OmtpMessageSender {
- private static final String TAG = "OmtpMessageSender";
- private final SmsManager mSmsManager;
- private final short mApplicationPort;
- private final String mDestinationNumber;
- private final String mClientType;
- private final String mProtocolVersion;
- private final String mClientPrefix;
-
- /**
- * Creates a new instance of OmtpMessageSenderImpl.
- *
- * @param smsManager SMS sending library. There is a different SmsManager for each SIM.
- * @param applicationPort If set to a value > 0 then a binary sms is sent to this port number.
- * Otherwise, a standard text SMS is sent.
- * @param defaultDestinationNumber Destination number to be used.
- * @param clientType The "ct" field to be set in the MO message. This is the value used by the
- * VVM server to identify the client. Certain VVM servers require a specific agreed
- * value for this field.
- * @param protocolVersion OMTP protocol version.
- * @param clientPrefix The client prefix requested to be used by the server in its MT messages.
- */
- public OmtpMessageSenderImpl(SmsManager smsManager, short applicationPort,
- String defaultDestinationNumber, String clientType, String protocolVersion,
- String clientPrefix) {
- mSmsManager = smsManager;
- mApplicationPort = applicationPort;
- mDestinationNumber = defaultDestinationNumber;
- mClientType = clientType;
- mProtocolVersion = protocolVersion;
- mClientPrefix = clientPrefix;
- }
-
-
- // Activate message:
- // V1.1: Activate:pv=<value>;ct=<value>
- // V1.2: Activate:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
- // V1.3: Activate:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
- @Override
- public void requestVvmActivation(@Nullable PendingIntent sentIntent) {
- StringBuilder sb = new StringBuilder().append(OmtpConstants.ACTIVATE_REQUEST);
-
- appendProtocolVersionAndClientType(sb);
- if (TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_2) ||
- TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_3)) {
- appendApplicationPort(sb);
- appendClientPrefix(sb);
- }
-
- sendSms(sb.toString(), sentIntent);
- }
-
- // Deactivate message:
- // V1.1: Deactivate:pv=<value>;ct=<string>
- // V1.2: Deactivate:pv=<value>;ct=<string>
- // V1.3: Deactivate:pv=<value>;ct=<string>
- @Override
- public void requestVvmDeactivation(@Nullable PendingIntent sentIntent) {
- StringBuilder sb = new StringBuilder().append(OmtpConstants.DEACTIVATE_REQUEST);
- appendProtocolVersionAndClientType(sb);
-
- sendSms(sb.toString(), sentIntent);
- }
-
- // Status message:
- // V1.1: STATUS
- // V1.2: STATUS
- // V1.3: STATUS:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
- @Override
- public void requestVvmStatus(@Nullable PendingIntent sentIntent) {
- StringBuilder sb = new StringBuilder().append(OmtpConstants.STATUS_REQUEST);
-
- if (TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_3)) {
- appendProtocolVersionAndClientType(sb);
- appendApplicationPort(sb);
- appendClientPrefix(sb);
- }
-
- sendSms(sb.toString(), sentIntent);
- }
-
- private void sendSms(String text, PendingIntent sentIntent) {
- // If application port is set to 0 then send simple text message, else send data message.
- if (mApplicationPort == 0) {
- Log.v(TAG, String.format("Sending TEXT sms '%s' to %s", text, mDestinationNumber));
- mSmsManager.sendTextMessage(mDestinationNumber, null, text, sentIntent, null);
- } else {
- byte[] data;
- try {
- data = text.getBytes("UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new IllegalStateException("Failed to encode: " + text);
- }
- Log.v(TAG, String.format("Sending BINARY sms '%s' to %s:%d", text, mDestinationNumber,
- mApplicationPort));
- mSmsManager.sendDataMessage(mDestinationNumber, null, mApplicationPort, data,
- sentIntent, null);
- }
- }
-
- private void appendProtocolVersionAndClientType(StringBuilder sb) {
- sb.append(OmtpConstants.SMS_PREFIX_SEPARATOR);
- appendField(sb, OmtpConstants.PROTOCOL_VERSION, mProtocolVersion);
- sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
- appendField(sb, OmtpConstants.CLIENT_TYPE, mClientType);
- }
-
- private void appendApplicationPort(StringBuilder sb) {
- sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
- appendField(sb, OmtpConstants.APPLICATION_PORT, mApplicationPort);
- }
-
- private void appendClientPrefix(StringBuilder sb) {
- sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
- sb.append(mClientPrefix);
- }
-
- private void appendField(StringBuilder sb, String field, Object value) {
- sb.append(field).append(OmtpConstants.SMS_KEY_VALUE_SEPARATOR).append(value);
- }
-}
diff --git a/src/com/android/phone/vvm/omtp/sync/DirtyVoicemailQuery.java b/src/com/android/phone/vvm/omtp/sync/DirtyVoicemailQuery.java
new file mode 100644
index 0000000..8c70372
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sync/DirtyVoicemailQuery.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 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.phone.vvm.omtp.sync;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.VoicemailContract;
+import android.provider.VoicemailContract.Voicemails;
+
+/**
+ * Construct a query to get dirty voicemails.
+ */
+public class DirtyVoicemailQuery {
+ final static String[] PROJECTION = new String[] {
+ Voicemails._ID, // 0
+ Voicemails.SOURCE_DATA, // 1
+ Voicemails.IS_READ, // 2
+ Voicemails.DELETED, // 3
+ };
+
+ public static final int _ID = 0;
+ public static final int SOURCE_DATA = 1;
+ public static final int IS_READ = 2;
+ public static final int DELETED = 3;
+
+ final static String SELECTION = Voicemails.DIRTY + "=1";
+
+ /**
+ * Get all the locally modified voicemails that have not been synced to the server.
+ *
+ * @param context The context from the package calling the method. This will be the source.
+ * @return A list of all locally modified voicemails.
+ */
+ public static Cursor getDirtyVoicemails(Context context) {
+ ContentResolver contentResolver = context.getContentResolver();
+ Uri sourceUri = VoicemailContract.Voicemails.buildSourceUri(context.getPackageName());
+ return contentResolver.query(sourceUri, PROJECTION, SELECTION, null, null);
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/sync/FetchVoicemailReceiver.java b/src/com/android/phone/vvm/omtp/sync/FetchVoicemailReceiver.java
new file mode 100644
index 0000000..66fed16
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sync/FetchVoicemailReceiver.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2015 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.phone.vvm.omtp.sync;
+
+import android.accounts.Account;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.VoicemailContract;
+import android.provider.VoicemailContract.Voicemails;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.phone.vvm.omtp.OmtpVvmSyncAccountManager;
+import com.android.phone.vvm.omtp.imap.ImapHelper;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+
+public class FetchVoicemailReceiver extends BroadcastReceiver {
+ private static final String TAG = "FetchVoicemailReceiver";
+
+ final static String[] PROJECTION = new String[] {
+ Voicemails.SOURCE_DATA, // 0
+ Voicemails.PHONE_ACCOUNT_ID, // 1
+ };
+
+ public static final int SOURCE_DATA = 0;
+ public static final int PHONE_ACCOUNT_ID = 1;
+
+ private ContentResolver mContentResolver;
+ private Uri mUri;
+
+ @Override
+ public void onReceive(final Context context, Intent intent) {
+ if (VoicemailContract.ACTION_FETCH_VOICEMAIL.equals(intent.getAction())) {
+ mContentResolver = context.getContentResolver();
+ mUri = intent.getData();
+
+ if (mUri == null) {
+ Log.w(TAG, VoicemailContract.ACTION_FETCH_VOICEMAIL + " intent sent with no data");
+ return;
+ }
+
+ if (!context.getPackageName().equals(
+ mUri.getQueryParameter(VoicemailContract.PARAM_KEY_SOURCE_PACKAGE))) {
+ // Ignore if the fetch request is for a voicemail not from this package.
+ return;
+ }
+
+ Cursor cursor = mContentResolver.query(mUri, PROJECTION, null, null, null);
+ if (cursor == null) {
+ return;
+ }
+ try {
+ if (cursor.moveToFirst()) {
+ final String uid = cursor.getString(SOURCE_DATA);
+ String accountId = cursor.getString(PHONE_ACCOUNT_ID);
+ if (TextUtils.isEmpty(accountId)) {
+ TelephonyManager telephonyManager = (TelephonyManager)
+ context.getSystemService(Context.TELEPHONY_SERVICE);
+ accountId = telephonyManager.getSimSerialNumber();
+
+ if (TextUtils.isEmpty(accountId)) {
+ Log.e(TAG, "Account null and no default sim found.");
+ return;
+ }
+ }
+ final Account account = new Account(accountId,
+ OmtpVvmSyncAccountManager.ACCOUNT_TYPE);
+ Executor executor = Executors.newCachedThreadPool();
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ new ImapHelper(context, account).fetchVoicemailPayload(
+ new VoicemailFetchedCallback(context, mUri), uid);
+ }
+ });
+ }
+ } finally {
+ cursor.close();
+ }
+ }
+ }
+}
diff --git a/src/com/android/phone/vvm/omtp/sync/VoicemailFetchedCallback.java b/src/com/android/phone/vvm/omtp/sync/VoicemailFetchedCallback.java
new file mode 100644
index 0000000..006e83f
--- /dev/null
+++ b/src/com/android/phone/vvm/omtp/sync/VoicemailFetchedCallback.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2015 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.phone.vvm.omtp.sync;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.net.Uri;
+import android.provider.VoicemailContract.Voicemails;
+import android.util.Log;
+
+import com.android.phone.vvm.omtp.imap.VoicemailPayload;
+
+import libcore.io.IoUtils;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * Callback for when a voicemail payload is fetched. It copies the returned stream to the data
+ * file corresponding to the voicemail.
+ */
+public class VoicemailFetchedCallback {
+ private static final String TAG = "VoicemailFetchedCallback";
+
+ private ContentResolver mContentResolver;
+ private Uri mUri;
+
+ VoicemailFetchedCallback(Context context, Uri uri) {
+ mContentResolver = context.getContentResolver();
+ mUri = uri;
+ }
+
+ /**
+ * Saves the voicemail payload data into the voicemail provider then sets the "has_content" bit
+ * of the voicemail to "1".
+ *
+ * @param voicemailPayload The object containing the content data for the voicemail
+ */
+ public void setVoicemailContent(VoicemailPayload voicemailPayload) {
+ Log.d(TAG, String.format("Writing new voicemail content: %s", mUri));
+ OutputStream outputStream = null;
+
+ try {
+ outputStream = mContentResolver.openOutputStream(mUri);
+ byte[] inputBytes = voicemailPayload.getBytes();
+ if (inputBytes != null) {
+ outputStream.write(inputBytes);
+ }
+ } catch (IOException e) {
+ Log.e(TAG, "Error writing to file: ", e);
+ } finally {
+ IoUtils.closeQuietly(outputStream);
+ }
+
+ // Update mime_type & has_content after we are done with file update.
+ ContentValues values = new ContentValues();
+ values.put(Voicemails.MIME_TYPE, voicemailPayload.getMimeType());
+ values.put(Voicemails.HAS_CONTENT, true);
+ int updatedCount = mContentResolver.update(mUri, values, null, null);
+ if (updatedCount != 1) {
+ Log.e(TAG, "Updating voicemail should have updated 1 row, was: " + updatedCount);
+ }
+ }
+}
diff --git a/src/com/android/services/telephony/CdmaConnection.java b/src/com/android/services/telephony/CdmaConnection.java
index 3016039..d2250d4 100644
--- a/src/com/android/services/telephony/CdmaConnection.java
+++ b/src/com/android/services/telephony/CdmaConnection.java
@@ -27,7 +27,7 @@
import com.android.internal.telephony.CallStateException;
import com.android.internal.telephony.Connection;
import com.android.internal.telephony.Phone;
-import com.android.phone.Constants;
+import com.android.phone.settings.SettingsConstants;
import java.util.LinkedList;
import java.util.Queue;
@@ -237,8 +237,8 @@
int dtmfTypeSetting = Settings.System.getInt(
getPhone().getContext().getContentResolver(),
Settings.System.DTMF_TONE_TYPE_WHEN_DIALING,
- Constants.DTMF_TONE_TYPE_NORMAL);
- return dtmfTypeSetting == Constants.DTMF_TONE_TYPE_NORMAL;
+ SettingsConstants.DTMF_TONE_TYPE_NORMAL);
+ return dtmfTypeSetting == SettingsConstants.DTMF_TONE_TYPE_NORMAL;
}
private void sendShortDtmfToNetwork(char digit) {
diff --git a/src/com/android/services/telephony/ImsConferenceController.java b/src/com/android/services/telephony/ImsConferenceController.java
index 21c61f8..b266b81 100644
--- a/src/com/android/services/telephony/ImsConferenceController.java
+++ b/src/com/android/services/telephony/ImsConferenceController.java
@@ -23,7 +23,7 @@
import android.telecom.Connection;
import android.telecom.ConnectionService;
import android.telecom.DisconnectCause;
-import android.telecom.IConferenceable;
+import android.telecom.Conferenceable;
import java.util.ArrayList;
import java.util.Collections;
@@ -148,8 +148,8 @@
*/
private void recalculateConferenceable() {
Log.v(this, "recalculateConferenceable : %d", mTelephonyConnections.size());
- List<IConferenceable> activeConnections = new ArrayList<>(mTelephonyConnections.size());
- List<IConferenceable> backgroundConnections = new ArrayList<>(mTelephonyConnections.size());
+ List<Conferenceable> activeConnections = new ArrayList<>(mTelephonyConnections.size());
+ List<Conferenceable> backgroundConnections = new ArrayList<>(mTelephonyConnections.size());
// Loop through and collect all calls which are active or holding
for (Connection connection : mTelephonyConnections) {
@@ -208,7 +208,7 @@
// Go through all the active connections and set the background connections as
// conferenceable.
- for (IConferenceable conferenceable : activeConnections) {
+ for (Conferenceable conferenceable : activeConnections) {
if (conferenceable instanceof Connection) {
Connection connection = (Connection) conferenceable;
connection.setConferenceables(backgroundConnections);
@@ -217,7 +217,7 @@
// Go through all the background connections and set the active connections as
// conferenceable.
- for (IConferenceable conferenceable : backgroundConnections) {
+ for (Conferenceable conferenceable : backgroundConnections) {
if (conferenceable instanceof Connection) {
Connection connection = (Connection) conferenceable;
connection.setConferenceables(activeConnections);
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 518224b..3beabf4 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -50,7 +50,6 @@
private static final int MSG_RINGBACK_TONE = 2;
private static final int MSG_HANDOVER_STATE_CHANGED = 3;
private static final int MSG_DISCONNECT = 4;
- private static final int MSG_MULTIPARTY_STATE_CHANGED = 5;
private final Handler mHandler = new Handler() {
@Override
@@ -88,14 +87,6 @@
case MSG_DISCONNECT:
updateState();
break;
- case MSG_MULTIPARTY_STATE_CHANGED:
- boolean isMultiParty = (Boolean) msg.obj;
- Log.i(this, "Update multiparty state to %s", isMultiParty ? "Y" : "N");
- mIsMultiParty = isMultiParty;
- if (isMultiParty) {
- notifyConferenceStarted();
- }
- break;
}
}
};
@@ -122,7 +113,7 @@
public void onPostDialChar(char c) {
Log.v(TelephonyConnection.this, "onPostDialChar: %s", c);
if (mOriginalConnection != null) {
- setNextPostDialWaitChar(c);
+ setNextPostDialChar(c);
}
}
};
@@ -191,7 +182,6 @@
public void onAudioQualityChanged(int audioQuality) {
setAudioQuality(audioQuality);
}
-
/**
* Handles a change in the state of conference participant(s), as reported by the
* {@link com.android.internal.telephony.Connection}.
@@ -202,17 +192,6 @@
public void onConferenceParticipantsChanged(List<ConferenceParticipant> participants) {
updateConferenceParticipants(participants);
}
-
- /*
- * Handles a change to the multiparty state for this connection.
- *
- * @param isMultiParty {@code true} if the call became multiparty, {@code false}
- * otherwise.
- */
- @Override
- public void onMultipartyStateChanged(boolean isMultiParty) {
- handleMultipartyStateChange(isMultiParty);
- }
};
private com.android.internal.telephony.Connection mOriginalConnection;
@@ -730,24 +709,6 @@
}
}
- /**
- * Handles requests to update the multiparty state received via the
- * {@link com.android.internal.telephony.Connection.Listener#onMultipartyStateChanged(boolean)}
- * listener.
- * <p>
- * Note: We post this to the mHandler to ensure that if a conference must be created as a
- * result of the multiparty state change, the conference creation happens on the correct
- * thread. This ensures that the thread check in
- * {@link com.android.internal.telephony.PhoneBase#checkCorrectThread(android.os.Handler)}
- * does not fire.
- *
- * @param isMultiParty {@code true} if this connection is multiparty, {@code false} otherwise.
- */
- private void handleMultipartyStateChange(boolean isMultiParty) {
- Log.i(this, "Update multiparty state to %s", isMultiParty ? "Y" : "N");
- mHandler.obtainMessage(MSG_MULTIPARTY_STATE_CHANGED, isMultiParty).sendToTarget();
- }
-
private void setActiveInternal() {
if (getState() == STATE_ACTIVE) {
Log.w(this, "Should not be called if this is already ACTIVE");
diff --git a/src/com/android/services/telephony/activation/Activator.java b/src/com/android/services/telephony/activation/Activator.java
new file mode 100644
index 0000000..7dee5b3
--- /dev/null
+++ b/src/com/android/services/telephony/activation/Activator.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2015 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.services.telephony.activation;
+
+/**
+ * SIM Activation implementation generic interface.
+ */
+public interface Activator {
+ void onActivate();
+}
diff --git a/src/com/android/services/telephony/activation/OtaspActivator.java b/src/com/android/services/telephony/activation/OtaspActivator.java
new file mode 100644
index 0000000..11ba726
--- /dev/null
+++ b/src/com/android/services/telephony/activation/OtaspActivator.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2015 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.services.telephony.activation;
+
+/**
+ * Over-The-Air SIM Provisioning (OTASP) activation implementation.
+ *
+ * Handles OTASP activation requests and returns status updates as activation progresses.
+ */
+public class OtaspActivator implements Activator {
+ @Override
+ public void onActivate() {
+ // TODO: handle otasp activation
+ }
+}
diff --git a/src/com/android/services/telephony/activation/SimActivationActivity.java b/src/com/android/services/telephony/activation/SimActivationActivity.java
new file mode 100644
index 0000000..ae11a3f
--- /dev/null
+++ b/src/com/android/services/telephony/activation/SimActivationActivity.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2015 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.services.telephony.activation;
+
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.app.PendingIntent.CanceledException;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telephony.TelephonyManager;
+
+import com.android.phone.PhoneGlobals;
+import com.android.services.telephony.Log;
+
+/**
+ * Invisible activity that handles the android.intent.action.SIM_ACTIVATION_REQUEST intent.
+ * This activity is protected by the android.permission.PERFORM_SIM_ACTIVATION permission.
+ */
+public class SimActivationActivity extends Activity {
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ Log.i(this, "onCreate");
+
+ Intent intent = getIntent();
+ if (Intent.ACTION_SIM_ACTIVATION_REQUEST.equals(intent.getAction())) {
+ Log.i(this, "Activation requested " + intent);
+
+ runActivation(intent);
+ }
+ finish();
+ }
+
+ private void runActivation(Intent intent) {
+ final PendingIntent response =
+ intent.getParcelableExtra(Intent.EXTRA_SIM_ACTIVATION_RESPONSE);
+
+ Log.i(this, "Running activation w/ response " + response);
+
+ PhoneGlobals app = PhoneGlobals.getInstance();
+ app.simActivationManager.runActivation(SimActivationManager.Triggers.EXPLICIT_REQUEST,
+ new SimActivationManager.Response() {
+ @Override
+ public void onResponse(int status) {
+ if (response != null) {
+ try {
+ response.send();
+ } catch (CanceledException e) {
+ Log.w(this, "Could not respond to SIM Activation.");
+ }
+ }
+ }
+ });
+
+ // TODO: Set this status to the return value of runActivation
+ // Return the response as an activity result and the pending intent.
+ setResult(TelephonyManager.SIM_ACTIVATION_RESULT_IN_PROGRESS);
+ }
+}
diff --git a/src/com/android/services/telephony/activation/SimActivationManager.java b/src/com/android/services/telephony/activation/SimActivationManager.java
new file mode 100644
index 0000000..ce9e508
--- /dev/null
+++ b/src/com/android/services/telephony/activation/SimActivationManager.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2015 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.services.telephony.activation;
+
+import android.app.PendingIntent;
+import android.telephony.TelephonyManager;
+
+/**
+ * Handles SIM activation requests and runs the appropriate activation process until it completes
+ * or fails. When done, sends back a response if needed.
+ */
+public class SimActivationManager {
+ public static final class Triggers {
+ public static final int SYSTEM_START = 1;
+ public static final int EXPLICIT_REQUEST = 2;
+ }
+
+ public interface Response {
+ /**
+ * @param status See {@link android.telephony.TelephonyManager} for SIM_ACTIVATION_RESULT_*
+ * constants.
+ */
+ void onResponse(int status);
+ }
+
+ public void runActivation(int trigger, Response response) {
+ Activator activator = selectActivator(trigger);
+
+ activator.onActivate();
+
+ // TODO: Specify some way to determine if activation is even necessary.
+
+ // TODO: specify some way to return the result.
+
+ if (response != null) {
+ response.onResponse(TelephonyManager.SIM_ACTIVATION_RESULT_COMPLETE);
+ }
+ }
+
+ private Activator selectActivator(int trigger) {
+ // TODO: Select among all activator types
+
+ // For now, pick a do-nothing activator
+ return new Activator() {
+
+ /** ${inheritDoc} */
+ @Override
+ public void onActivate() {
+ // do something
+ }
+ };
+ }
+}
diff --git a/src/org/apache/commons/io/IOUtils.java b/src/org/apache/commons/io/IOUtils.java
new file mode 100644
index 0000000..b414507
--- /dev/null
+++ b/src/org/apache/commons/io/IOUtils.java
@@ -0,0 +1,1202 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.commons.io;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.CharArrayWriter;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * General IO stream manipulation utilities.
+ * <p>
+ * This class provides static utility methods for input/output operations.
+ * <ul>
+ * <li>closeQuietly - these methods close a stream ignoring nulls and exceptions
+ * <li>toXxx/read - these methods read data from a stream
+ * <li>write - these methods write data to a stream
+ * <li>copy - these methods copy all the data from one stream to another
+ * <li>contentEquals - these methods compare the content of two streams
+ * </ul>
+ * <p>
+ * The byte-to-char methods and char-to-byte methods involve a conversion step.
+ * Two methods are provided in each case, one that uses the platform default
+ * encoding and the other which allows you to specify an encoding. You are
+ * encouraged to always specify an encoding because relying on the platform
+ * default can lead to unexpected results, for example when moving from
+ * development to production.
+ * <p>
+ * All the methods in this class that read a stream are buffered internally.
+ * This means that there is no cause to use a <code>BufferedInputStream</code>
+ * or <code>BufferedReader</code>. The default buffer size of 4K has been shown
+ * to be efficient in tests.
+ * <p>
+ * Wherever possible, the methods in this class do <em>not</em> flush or close
+ * the stream. This is to avoid making non-portable assumptions about the
+ * streams' origin and further use. Thus the caller is still responsible for
+ * closing streams after use.
+ * <p>
+ * Origin of code: Excalibur.
+ *
+ * @author Peter Donald
+ * @author Jeff Turner
+ * @author Matthew Hawthorne
+ * @author Stephen Colebourne
+ * @author Gareth Davis
+ * @author Ian Springer
+ * @author Niall Pemberton
+ * @author Sandy McArthur
+ * @version $Id: IOUtils.java 481854 2006-12-03 18:30:07Z scolebourne $
+ */
+public class IOUtils {
+ // NOTE: This class is focussed on InputStream, OutputStream, Reader and
+ // Writer. Each method should take at least one of these as a parameter,
+ // or return one of them.
+
+ /**
+ * The Unix directory separator character.
+ */
+ public static final char DIR_SEPARATOR_UNIX = '/';
+ /**
+ * The Windows directory separator character.
+ */
+ public static final char DIR_SEPARATOR_WINDOWS = '\\';
+ /**
+ * The system directory separator character.
+ */
+ public static final char DIR_SEPARATOR = File.separatorChar;
+ /**
+ * The Unix line separator string.
+ */
+ public static final String LINE_SEPARATOR_UNIX = "\n";
+ /**
+ * The Windows line separator string.
+ */
+ public static final String LINE_SEPARATOR_WINDOWS = "\r\n";
+ /**
+ * The system line separator string.
+ */
+ public static final String LINE_SEPARATOR;
+ static {
+ // avoid security issues
+ StringWriter buf = new StringWriter(4);
+ PrintWriter out = new PrintWriter(buf);
+ out.println();
+ LINE_SEPARATOR = buf.toString();
+ }
+
+ /**
+ * The default buffer size to use.
+ */
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
+
+ /**
+ * Instances should NOT be constructed in standard programming.
+ */
+ public IOUtils() {
+ super();
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Unconditionally close an <code>Reader</code>.
+ * <p>
+ * Equivalent to {@link Reader#close()}, except any exceptions will be ignored.
+ * This is typically used in finally blocks.
+ *
+ * @param input the Reader to close, may be null or already closed
+ */
+ public static void closeQuietly(Reader input) {
+ try {
+ if (input != null) {
+ input.close();
+ }
+ } catch (IOException ioe) {
+ // ignore
+ }
+ }
+
+ /**
+ * Unconditionally close a <code>Writer</code>.
+ * <p>
+ * Equivalent to {@link Writer#close()}, except any exceptions will be ignored.
+ * This is typically used in finally blocks.
+ *
+ * @param output the Writer to close, may be null or already closed
+ */
+ public static void closeQuietly(Writer output) {
+ try {
+ if (output != null) {
+ output.close();
+ }
+ } catch (IOException ioe) {
+ // ignore
+ }
+ }
+
+ /**
+ * Unconditionally close an <code>InputStream</code>.
+ * <p>
+ * Equivalent to {@link InputStream#close()}, except any exceptions will be ignored.
+ * This is typically used in finally blocks.
+ *
+ * @param input the InputStream to close, may be null or already closed
+ */
+ public static void closeQuietly(InputStream input) {
+ try {
+ if (input != null) {
+ input.close();
+ }
+ } catch (IOException ioe) {
+ // ignore
+ }
+ }
+
+ /**
+ * Unconditionally close an <code>OutputStream</code>.
+ * <p>
+ * Equivalent to {@link OutputStream#close()}, except any exceptions will be ignored.
+ * This is typically used in finally blocks.
+ *
+ * @param output the OutputStream to close, may be null or already closed
+ */
+ public static void closeQuietly(OutputStream output) {
+ try {
+ if (output != null) {
+ output.close();
+ }
+ } catch (IOException ioe) {
+ // ignore
+ }
+ }
+
+ // read toByteArray
+ //-----------------------------------------------------------------------
+ /**
+ * Get the contents of an <code>InputStream</code> as a <code>byte[]</code>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param input the <code>InputStream</code> to read from
+ * @return the requested byte array
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ */
+ public static byte[] toByteArray(InputStream input) throws IOException {
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+ copy(input, output);
+ return output.toByteArray();
+ }
+
+ /**
+ * Get the contents of a <code>Reader</code> as a <code>byte[]</code>
+ * using the default character encoding of the platform.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @return the requested byte array
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ */
+ public static byte[] toByteArray(Reader input) throws IOException {
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+ copy(input, output);
+ return output.toByteArray();
+ }
+
+ /**
+ * Get the contents of a <code>Reader</code> as a <code>byte[]</code>
+ * using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @param encoding the encoding to use, null means platform default
+ * @return the requested byte array
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static byte[] toByteArray(Reader input, String encoding)
+ throws IOException {
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+ copy(input, output, encoding);
+ return output.toByteArray();
+ }
+
+ /**
+ * Get the contents of a <code>String</code> as a <code>byte[]</code>
+ * using the default character encoding of the platform.
+ * <p>
+ * This is the same as {@link String#getBytes()}.
+ *
+ * @param input the <code>String</code> to convert
+ * @return the requested byte array
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs (never occurs)
+ * @deprecated Use {@link String#getBytes()}
+ */
+ @Deprecated
+ public static byte[] toByteArray(String input) throws IOException {
+ return input.getBytes();
+ }
+
+ // read char[]
+ //-----------------------------------------------------------------------
+ /**
+ * Get the contents of an <code>InputStream</code> as a character array
+ * using the default character encoding of the platform.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param is the <code>InputStream</code> to read from
+ * @return the requested character array
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static char[] toCharArray(InputStream is) throws IOException {
+ CharArrayWriter output = new CharArrayWriter();
+ copy(is, output);
+ return output.toCharArray();
+ }
+
+ /**
+ * Get the contents of an <code>InputStream</code> as a character array
+ * using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param is the <code>InputStream</code> to read from
+ * @param encoding the encoding to use, null means platform default
+ * @return the requested character array
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static char[] toCharArray(InputStream is, String encoding)
+ throws IOException {
+ CharArrayWriter output = new CharArrayWriter();
+ copy(is, output, encoding);
+ return output.toCharArray();
+ }
+
+ /**
+ * Get the contents of a <code>Reader</code> as a character array.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @return the requested character array
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static char[] toCharArray(Reader input) throws IOException {
+ CharArrayWriter sw = new CharArrayWriter();
+ copy(input, sw);
+ return sw.toCharArray();
+ }
+
+ // read toString
+ //-----------------------------------------------------------------------
+ /**
+ * Get the contents of an <code>InputStream</code> as a String
+ * using the default character encoding of the platform.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param input the <code>InputStream</code> to read from
+ * @return the requested String
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ */
+ public static String toString(InputStream input) throws IOException {
+ StringWriter sw = new StringWriter();
+ copy(input, sw);
+ return sw.toString();
+ }
+
+ /**
+ * Get the contents of an <code>InputStream</code> as a String
+ * using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param input the <code>InputStream</code> to read from
+ * @param encoding the encoding to use, null means platform default
+ * @return the requested String
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ */
+ public static String toString(InputStream input, String encoding)
+ throws IOException {
+ StringWriter sw = new StringWriter();
+ copy(input, sw, encoding);
+ return sw.toString();
+ }
+
+ /**
+ * Get the contents of a <code>Reader</code> as a String.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @return the requested String
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ */
+ public static String toString(Reader input) throws IOException {
+ StringWriter sw = new StringWriter();
+ copy(input, sw);
+ return sw.toString();
+ }
+
+ /**
+ * Get the contents of a <code>byte[]</code> as a String
+ * using the default character encoding of the platform.
+ *
+ * @param input the byte array to read from
+ * @return the requested String
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs (never occurs)
+ * @deprecated Use {@link String#String(byte[])}
+ */
+ @Deprecated
+ public static String toString(byte[] input) throws IOException {
+ return new String(input);
+ }
+
+ /**
+ * Get the contents of a <code>byte[]</code> as a String
+ * using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ *
+ * @param input the byte array to read from
+ * @param encoding the encoding to use, null means platform default
+ * @return the requested String
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs (never occurs)
+ * @deprecated Use {@link String#String(byte[],String)}
+ */
+ @Deprecated
+ public static String toString(byte[] input, String encoding)
+ throws IOException {
+ if (encoding == null) {
+ return new String(input);
+ } else {
+ return new String(input, encoding);
+ }
+ }
+
+ // readLines
+ //-----------------------------------------------------------------------
+ /**
+ * Get the contents of an <code>InputStream</code> as a list of Strings,
+ * one entry per line, using the default character encoding of the platform.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param input the <code>InputStream</code> to read from, not null
+ * @return the list of Strings, never null
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static List<String> readLines(InputStream input) throws IOException {
+ InputStreamReader reader = new InputStreamReader(input);
+ return readLines(reader);
+ }
+
+ /**
+ * Get the contents of an <code>InputStream</code> as a list of Strings,
+ * one entry per line, using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param input the <code>InputStream</code> to read from, not null
+ * @param encoding the encoding to use, null means platform default
+ * @return the list of Strings, never null
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static List<String> readLines(InputStream input, String encoding) throws IOException {
+ if (encoding == null) {
+ return readLines(input);
+ } else {
+ InputStreamReader reader = new InputStreamReader(input, encoding);
+ return readLines(reader);
+ }
+ }
+
+ /**
+ * Get the contents of a <code>Reader</code> as a list of Strings,
+ * one entry per line.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ *
+ * @param input the <code>Reader</code> to read from, not null
+ * @return the list of Strings, never null
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static List<String> readLines(Reader input) throws IOException {
+ BufferedReader reader = new BufferedReader(input);
+ List<String> list = new ArrayList<String>();
+ String line = reader.readLine();
+ while (line != null) {
+ list.add(line);
+ line = reader.readLine();
+ }
+ return list;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Convert the specified string to an input stream, encoded as bytes
+ * using the default character encoding of the platform.
+ *
+ * @param input the string to convert
+ * @return an input stream
+ * @since Commons IO 1.1
+ */
+ public static InputStream toInputStream(String input) {
+ byte[] bytes = input.getBytes();
+ return new ByteArrayInputStream(bytes);
+ }
+
+ /**
+ * Convert the specified string to an input stream, encoded as bytes
+ * using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ *
+ * @param input the string to convert
+ * @param encoding the encoding to use, null means platform default
+ * @throws IOException if the encoding is invalid
+ * @return an input stream
+ * @since Commons IO 1.1
+ */
+ public static InputStream toInputStream(String input, String encoding) throws IOException {
+ byte[] bytes = encoding != null ? input.getBytes(encoding) : input.getBytes();
+ return new ByteArrayInputStream(bytes);
+ }
+
+ // write byte[]
+ //-----------------------------------------------------------------------
+ /**
+ * Writes bytes from a <code>byte[]</code> to an <code>OutputStream</code>.
+ *
+ * @param data the byte array to write, do not modify during output,
+ * null ignored
+ * @param output the <code>OutputStream</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(byte[] data, OutputStream output)
+ throws IOException {
+ if (data != null) {
+ output.write(data);
+ }
+ }
+
+ /**
+ * Writes bytes from a <code>byte[]</code> to chars on a <code>Writer</code>
+ * using the default character encoding of the platform.
+ * <p>
+ * This method uses {@link String#String(byte[])}.
+ *
+ * @param data the byte array to write, do not modify during output,
+ * null ignored
+ * @param output the <code>Writer</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(byte[] data, Writer output) throws IOException {
+ if (data != null) {
+ output.write(new String(data));
+ }
+ }
+
+ /**
+ * Writes bytes from a <code>byte[]</code> to chars on a <code>Writer</code>
+ * using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method uses {@link String#String(byte[], String)}.
+ *
+ * @param data the byte array to write, do not modify during output,
+ * null ignored
+ * @param output the <code>Writer</code> to write to
+ * @param encoding the encoding to use, null means platform default
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(byte[] data, Writer output, String encoding)
+ throws IOException {
+ if (data != null) {
+ if (encoding == null) {
+ write(data, output);
+ } else {
+ output.write(new String(data, encoding));
+ }
+ }
+ }
+
+ // write char[]
+ //-----------------------------------------------------------------------
+ /**
+ * Writes chars from a <code>char[]</code> to a <code>Writer</code>
+ * using the default character encoding of the platform.
+ *
+ * @param data the char array to write, do not modify during output,
+ * null ignored
+ * @param output the <code>Writer</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(char[] data, Writer output) throws IOException {
+ if (data != null) {
+ output.write(data);
+ }
+ }
+
+ /**
+ * Writes chars from a <code>char[]</code> to bytes on an
+ * <code>OutputStream</code>.
+ * <p>
+ * This method uses {@link String#String(char[])} and
+ * {@link String#getBytes()}.
+ *
+ * @param data the char array to write, do not modify during output,
+ * null ignored
+ * @param output the <code>OutputStream</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(char[] data, OutputStream output)
+ throws IOException {
+ if (data != null) {
+ output.write(new String(data).getBytes());
+ }
+ }
+
+ /**
+ * Writes chars from a <code>char[]</code> to bytes on an
+ * <code>OutputStream</code> using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method uses {@link String#String(char[])} and
+ * {@link String#getBytes(String)}.
+ *
+ * @param data the char array to write, do not modify during output,
+ * null ignored
+ * @param output the <code>OutputStream</code> to write to
+ * @param encoding the encoding to use, null means platform default
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(char[] data, OutputStream output, String encoding)
+ throws IOException {
+ if (data != null) {
+ if (encoding == null) {
+ write(data, output);
+ } else {
+ output.write(new String(data).getBytes(encoding));
+ }
+ }
+ }
+
+ // write String
+ //-----------------------------------------------------------------------
+ /**
+ * Writes chars from a <code>String</code> to a <code>Writer</code>.
+ *
+ * @param data the <code>String</code> to write, null ignored
+ * @param output the <code>Writer</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(String data, Writer output) throws IOException {
+ if (data != null) {
+ output.write(data);
+ }
+ }
+
+ /**
+ * Writes chars from a <code>String</code> to bytes on an
+ * <code>OutputStream</code> using the default character encoding of the
+ * platform.
+ * <p>
+ * This method uses {@link String#getBytes()}.
+ *
+ * @param data the <code>String</code> to write, null ignored
+ * @param output the <code>OutputStream</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(String data, OutputStream output)
+ throws IOException {
+ if (data != null) {
+ output.write(data.getBytes());
+ }
+ }
+
+ /**
+ * Writes chars from a <code>String</code> to bytes on an
+ * <code>OutputStream</code> using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method uses {@link String#getBytes(String)}.
+ *
+ * @param data the <code>String</code> to write, null ignored
+ * @param output the <code>OutputStream</code> to write to
+ * @param encoding the encoding to use, null means platform default
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(String data, OutputStream output, String encoding)
+ throws IOException {
+ if (data != null) {
+ if (encoding == null) {
+ write(data, output);
+ } else {
+ output.write(data.getBytes(encoding));
+ }
+ }
+ }
+
+ // write StringBuffer
+ //-----------------------------------------------------------------------
+ /**
+ * Writes chars from a <code>StringBuffer</code> to a <code>Writer</code>.
+ *
+ * @param data the <code>StringBuffer</code> to write, null ignored
+ * @param output the <code>Writer</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(StringBuffer data, Writer output)
+ throws IOException {
+ if (data != null) {
+ output.write(data.toString());
+ }
+ }
+
+ /**
+ * Writes chars from a <code>StringBuffer</code> to bytes on an
+ * <code>OutputStream</code> using the default character encoding of the
+ * platform.
+ * <p>
+ * This method uses {@link String#getBytes()}.
+ *
+ * @param data the <code>StringBuffer</code> to write, null ignored
+ * @param output the <code>OutputStream</code> to write to
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(StringBuffer data, OutputStream output)
+ throws IOException {
+ if (data != null) {
+ output.write(data.toString().getBytes());
+ }
+ }
+
+ /**
+ * Writes chars from a <code>StringBuffer</code> to bytes on an
+ * <code>OutputStream</code> using the specified character encoding.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method uses {@link String#getBytes(String)}.
+ *
+ * @param data the <code>StringBuffer</code> to write, null ignored
+ * @param output the <code>OutputStream</code> to write to
+ * @param encoding the encoding to use, null means platform default
+ * @throws NullPointerException if output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void write(StringBuffer data, OutputStream output,
+ String encoding) throws IOException {
+ if (data != null) {
+ if (encoding == null) {
+ write(data, output);
+ } else {
+ output.write(data.toString().getBytes(encoding));
+ }
+ }
+ }
+
+ // writeLines
+ //-----------------------------------------------------------------------
+ /**
+ * Writes the <code>toString()</code> value of each item in a collection to
+ * an <code>OutputStream</code> line by line, using the default character
+ * encoding of the platform and the specified line ending.
+ *
+ * @param lines the lines to write, null entries produce blank lines
+ * @param lineEnding the line separator to use, null is system default
+ * @param output the <code>OutputStream</code> to write to, not null, not closed
+ * @throws NullPointerException if the output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void writeLines(Collection<Object> lines, String lineEnding,
+ OutputStream output) throws IOException {
+ if (lines == null) {
+ return;
+ }
+ if (lineEnding == null) {
+ lineEnding = LINE_SEPARATOR;
+ }
+ for (Iterator<Object> it = lines.iterator(); it.hasNext(); ) {
+ Object line = it.next();
+ if (line != null) {
+ output.write(line.toString().getBytes());
+ }
+ output.write(lineEnding.getBytes());
+ }
+ }
+
+ /**
+ * Writes the <code>toString()</code> value of each item in a collection to
+ * an <code>OutputStream</code> line by line, using the specified character
+ * encoding and the specified line ending.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ *
+ * @param lines the lines to write, null entries produce blank lines
+ * @param lineEnding the line separator to use, null is system default
+ * @param output the <code>OutputStream</code> to write to, not null, not closed
+ * @param encoding the encoding to use, null means platform default
+ * @throws NullPointerException if the output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void writeLines(Collection<Object> lines, String lineEnding,
+ OutputStream output, String encoding) throws IOException {
+ if (encoding == null) {
+ writeLines(lines, lineEnding, output);
+ } else {
+ if (lines == null) {
+ return;
+ }
+ if (lineEnding == null) {
+ lineEnding = LINE_SEPARATOR;
+ }
+ for (Iterator<Object> it = lines.iterator(); it.hasNext(); ) {
+ Object line = it.next();
+ if (line != null) {
+ output.write(line.toString().getBytes(encoding));
+ }
+ output.write(lineEnding.getBytes(encoding));
+ }
+ }
+ }
+
+ /**
+ * Writes the <code>toString()</code> value of each item in a collection to
+ * a <code>Writer</code> line by line, using the specified line ending.
+ *
+ * @param lines the lines to write, null entries produce blank lines
+ * @param lineEnding the line separator to use, null is system default
+ * @param writer the <code>Writer</code> to write to, not null, not closed
+ * @throws NullPointerException if the input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void writeLines(Collection<Object> lines, String lineEnding,
+ Writer writer) throws IOException {
+ if (lines == null) {
+ return;
+ }
+ if (lineEnding == null) {
+ lineEnding = LINE_SEPARATOR;
+ }
+ for (Iterator<Object> it = lines.iterator(); it.hasNext(); ) {
+ Object line = it.next();
+ if (line != null) {
+ writer.write(line.toString());
+ }
+ writer.write(lineEnding);
+ }
+ }
+
+ // copy from InputStream
+ //-----------------------------------------------------------------------
+ /**
+ * Copy bytes from an <code>InputStream</code> to an
+ * <code>OutputStream</code>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ * <p>
+ * Large streams (over 2GB) will return a bytes copied value of
+ * <code>-1</code> after the copy has completed since the correct
+ * number of bytes cannot be returned as an int. For large streams
+ * use the <code>copyLarge(InputStream, OutputStream)</code> method.
+ *
+ * @param input the <code>InputStream</code> to read from
+ * @param output the <code>OutputStream</code> to write to
+ * @return the number of bytes copied
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @throws ArithmeticException if the byte count is too large
+ * @since Commons IO 1.1
+ */
+ public static int copy(InputStream input, OutputStream output) throws IOException {
+ long count = copyLarge(input, output);
+ if (count > Integer.MAX_VALUE) {
+ return -1;
+ }
+ return (int) count;
+ }
+
+ /**
+ * Copy bytes from a large (over 2GB) <code>InputStream</code> to an
+ * <code>OutputStream</code>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ *
+ * @param input the <code>InputStream</code> to read from
+ * @param output the <code>OutputStream</code> to write to
+ * @return the number of bytes copied
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.3
+ */
+ public static long copyLarge(InputStream input, OutputStream output)
+ throws IOException {
+ byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
+ long count = 0;
+ int n = 0;
+ while (-1 != (n = input.read(buffer))) {
+ output.write(buffer, 0, n);
+ count += n;
+ }
+ return count;
+ }
+
+ /**
+ * Copy bytes from an <code>InputStream</code> to chars on a
+ * <code>Writer</code> using the default character encoding of the platform.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ * <p>
+ * This method uses {@link InputStreamReader}.
+ *
+ * @param input the <code>InputStream</code> to read from
+ * @param output the <code>Writer</code> to write to
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void copy(InputStream input, Writer output)
+ throws IOException {
+ InputStreamReader in = new InputStreamReader(input);
+ copy(in, output);
+ }
+
+ /**
+ * Copy bytes from an <code>InputStream</code> to chars on a
+ * <code>Writer</code> using the specified character encoding.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedInputStream</code>.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * This method uses {@link InputStreamReader}.
+ *
+ * @param input the <code>InputStream</code> to read from
+ * @param output the <code>Writer</code> to write to
+ * @param encoding the encoding to use, null means platform default
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void copy(InputStream input, Writer output, String encoding)
+ throws IOException {
+ if (encoding == null) {
+ copy(input, output);
+ } else {
+ InputStreamReader in = new InputStreamReader(input, encoding);
+ copy(in, output);
+ }
+ }
+
+ // copy from Reader
+ //-----------------------------------------------------------------------
+ /**
+ * Copy chars from a <code>Reader</code> to a <code>Writer</code>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ * <p>
+ * Large streams (over 2GB) will return a chars copied value of
+ * <code>-1</code> after the copy has completed since the correct
+ * number of chars cannot be returned as an int. For large streams
+ * use the <code>copyLarge(Reader, Writer)</code> method.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @param output the <code>Writer</code> to write to
+ * @return the number of characters copied
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @throws ArithmeticException if the character count is too large
+ * @since Commons IO 1.1
+ */
+ public static int copy(Reader input, Writer output) throws IOException {
+ long count = copyLarge(input, output);
+ if (count > Integer.MAX_VALUE) {
+ return -1;
+ }
+ return (int) count;
+ }
+
+ /**
+ * Copy chars from a large (over 2GB) <code>Reader</code> to a <code>Writer</code>.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @param output the <code>Writer</code> to write to
+ * @return the number of characters copied
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.3
+ */
+ public static long copyLarge(Reader input, Writer output) throws IOException {
+ char[] buffer = new char[DEFAULT_BUFFER_SIZE];
+ long count = 0;
+ int n = 0;
+ while (-1 != (n = input.read(buffer))) {
+ output.write(buffer, 0, n);
+ count += n;
+ }
+ return count;
+ }
+
+ /**
+ * Copy chars from a <code>Reader</code> to bytes on an
+ * <code>OutputStream</code> using the default character encoding of the
+ * platform, and calling flush.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ * <p>
+ * Due to the implementation of OutputStreamWriter, this method performs a
+ * flush.
+ * <p>
+ * This method uses {@link OutputStreamWriter}.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @param output the <code>OutputStream</code> to write to
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void copy(Reader input, OutputStream output)
+ throws IOException {
+ OutputStreamWriter out = new OutputStreamWriter(output);
+ copy(input, out);
+ // XXX Unless anyone is planning on rewriting OutputStreamWriter, we
+ // have to flush here.
+ out.flush();
+ }
+
+ /**
+ * Copy chars from a <code>Reader</code> to bytes on an
+ * <code>OutputStream</code> using the specified character encoding, and
+ * calling flush.
+ * <p>
+ * This method buffers the input internally, so there is no need to use a
+ * <code>BufferedReader</code>.
+ * <p>
+ * Character encoding names can be found at
+ * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
+ * <p>
+ * Due to the implementation of OutputStreamWriter, this method performs a
+ * flush.
+ * <p>
+ * This method uses {@link OutputStreamWriter}.
+ *
+ * @param input the <code>Reader</code> to read from
+ * @param output the <code>OutputStream</code> to write to
+ * @param encoding the encoding to use, null means platform default
+ * @throws NullPointerException if the input or output is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static void copy(Reader input, OutputStream output, String encoding)
+ throws IOException {
+ if (encoding == null) {
+ copy(input, output);
+ } else {
+ OutputStreamWriter out = new OutputStreamWriter(output, encoding);
+ copy(input, out);
+ // XXX Unless anyone is planning on rewriting OutputStreamWriter,
+ // we have to flush here.
+ out.flush();
+ }
+ }
+
+ // content equals
+ //-----------------------------------------------------------------------
+ /**
+ * Compare the contents of two Streams to determine if they are equal or
+ * not.
+ * <p>
+ * This method buffers the input internally using
+ * <code>BufferedInputStream</code> if they are not already buffered.
+ *
+ * @param input1 the first stream
+ * @param input2 the second stream
+ * @return true if the content of the streams are equal or they both don't
+ * exist, false otherwise
+ * @throws NullPointerException if either input is null
+ * @throws IOException if an I/O error occurs
+ */
+ public static boolean contentEquals(InputStream input1, InputStream input2)
+ throws IOException {
+ if (!(input1 instanceof BufferedInputStream)) {
+ input1 = new BufferedInputStream(input1);
+ }
+ if (!(input2 instanceof BufferedInputStream)) {
+ input2 = new BufferedInputStream(input2);
+ }
+
+ int ch = input1.read();
+ while (-1 != ch) {
+ int ch2 = input2.read();
+ if (ch != ch2) {
+ return false;
+ }
+ ch = input1.read();
+ }
+
+ int ch2 = input2.read();
+ return (ch2 == -1);
+ }
+
+ /**
+ * Compare the contents of two Readers to determine if they are equal or
+ * not.
+ * <p>
+ * This method buffers the input internally using
+ * <code>BufferedReader</code> if they are not already buffered.
+ *
+ * @param input1 the first reader
+ * @param input2 the second reader
+ * @return true if the content of the readers are equal or they both don't
+ * exist, false otherwise
+ * @throws NullPointerException if either input is null
+ * @throws IOException if an I/O error occurs
+ * @since Commons IO 1.1
+ */
+ public static boolean contentEquals(Reader input1, Reader input2)
+ throws IOException {
+ if (!(input1 instanceof BufferedReader)) {
+ input1 = new BufferedReader(input1);
+ }
+ if (!(input2 instanceof BufferedReader)) {
+ input2 = new BufferedReader(input2);
+ }
+
+ int ch = input1.read();
+ while (-1 != ch) {
+ int ch2 = input2.read();
+ if (ch != ch2) {
+ return false;
+ }
+ ch = input1.read();
+ }
+
+ int ch2 = input2.read();
+ return (ch2 == -1);
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/BodyDescriptor.java b/src/org/apache/james/mime4j/BodyDescriptor.java
new file mode 100644
index 0000000..867c43d
--- /dev/null
+++ b/src/org/apache/james/mime4j/BodyDescriptor.java
@@ -0,0 +1,392 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Encapsulates the values of the MIME-specific header fields
+ * (which starts with <code>Content-</code>).
+ *
+ *
+ * @version $Id: BodyDescriptor.java,v 1.4 2005/02/11 10:08:37 ntherning Exp $
+ */
+public class BodyDescriptor {
+ private static Log log = LogFactory.getLog(BodyDescriptor.class);
+
+ private String mimeType = "text/plain";
+ private String boundary = null;
+ private String charset = "us-ascii";
+ private String transferEncoding = "7bit";
+ private Map<String, String> parameters = new HashMap<String, String>();
+ private boolean contentTypeSet = false;
+ private boolean contentTransferEncSet = false;
+
+ /**
+ * Creates a new root <code>BodyDescriptor</code> instance.
+ */
+ public BodyDescriptor() {
+ this(null);
+ }
+
+ /**
+ * Creates a new <code>BodyDescriptor</code> instance.
+ *
+ * @param parent the descriptor of the parent or <code>null</code> if this
+ * is the root descriptor.
+ */
+ public BodyDescriptor(BodyDescriptor parent) {
+ if (parent != null && parent.isMimeType("multipart/digest")) {
+ mimeType = "message/rfc822";
+ } else {
+ mimeType = "text/plain";
+ }
+ }
+
+ /**
+ * Should be called for each <code>Content-</code> header field of
+ * a MIME message or part.
+ *
+ * @param name the field name.
+ * @param value the field value.
+ */
+ public void addField(String name, String value) {
+
+ name = name.trim().toLowerCase();
+
+ if (name.equals("content-transfer-encoding") && !contentTransferEncSet) {
+ contentTransferEncSet = true;
+
+ value = value.trim().toLowerCase();
+ if (value.length() > 0) {
+ transferEncoding = value;
+ }
+
+ } else if (name.equals("content-type") && !contentTypeSet) {
+ contentTypeSet = true;
+
+ value = value.trim();
+
+ /*
+ * Unfold Content-Type value
+ */
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+ if (c == '\r' || c == '\n') {
+ continue;
+ }
+ sb.append(c);
+ }
+
+ Map<String, String> params = getHeaderParams(sb.toString());
+
+ String main = params.get("");
+ if (main != null) {
+ main = main.toLowerCase().trim();
+ int index = main.indexOf('/');
+ boolean valid = false;
+ if (index != -1) {
+ String type = main.substring(0, index).trim();
+ String subtype = main.substring(index + 1).trim();
+ if (type.length() > 0 && subtype.length() > 0) {
+ main = type + "/" + subtype;
+ valid = true;
+ }
+ }
+
+ if (!valid) {
+ main = null;
+ }
+ }
+ String b = params.get("boundary");
+
+ if (main != null
+ && ((main.startsWith("multipart/") && b != null)
+ || !main.startsWith("multipart/"))) {
+
+ mimeType = main;
+ }
+
+ if (isMultipart()) {
+ boundary = b;
+ }
+
+ String c = params.get("charset");
+ if (c != null) {
+ c = c.trim();
+ if (c.length() > 0) {
+ charset = c.toLowerCase();
+ }
+ }
+
+ /*
+ * Add all other parameters to parameters.
+ */
+ parameters.putAll(params);
+ parameters.remove("");
+ parameters.remove("boundary");
+ parameters.remove("charset");
+ }
+ }
+
+ private Map<String, String> getHeaderParams(String headerValue) {
+ Map<String, String> result = new HashMap<String, String>();
+
+ // split main value and parameters
+ String main;
+ String rest;
+ if (headerValue.indexOf(";") == -1) {
+ main = headerValue;
+ rest = null;
+ } else {
+ main = headerValue.substring(0, headerValue.indexOf(";"));
+ rest = headerValue.substring(main.length() + 1);
+ }
+
+ result.put("", main);
+ if (rest != null) {
+ char[] chars = rest.toCharArray();
+ StringBuffer paramName = new StringBuffer();
+ StringBuffer paramValue = new StringBuffer();
+
+ final byte READY_FOR_NAME = 0;
+ final byte IN_NAME = 1;
+ final byte READY_FOR_VALUE = 2;
+ final byte IN_VALUE = 3;
+ final byte IN_QUOTED_VALUE = 4;
+ final byte VALUE_DONE = 5;
+ final byte ERROR = 99;
+
+ byte state = READY_FOR_NAME;
+ boolean escaped = false;
+ for (int i = 0; i < chars.length; i++) {
+ char c = chars[i];
+
+ switch (state) {
+ case ERROR:
+ if (c == ';')
+ state = READY_FOR_NAME;
+ break;
+
+ case READY_FOR_NAME:
+ if (c == '=') {
+ log.error("Expected header param name, got '='");
+ state = ERROR;
+ break;
+ }
+
+ paramName = new StringBuffer();
+ paramValue = new StringBuffer();
+
+ state = IN_NAME;
+ // $FALL-THROUGH$
+
+ case IN_NAME:
+ if (c == '=') {
+ if (paramName.length() == 0)
+ state = ERROR;
+ else
+ state = READY_FOR_VALUE;
+ break;
+ }
+
+ // not '='... just add to name
+ paramName.append(c);
+ break;
+
+ case READY_FOR_VALUE:
+ boolean fallThrough = false;
+ switch (c) {
+ case ' ':
+ case '\t':
+ break; // ignore spaces, especially before '"'
+
+ case '"':
+ state = IN_QUOTED_VALUE;
+ break;
+
+ default:
+ state = IN_VALUE;
+ fallThrough = true;
+ break;
+ }
+ if (!fallThrough)
+ break;
+
+ // $FALL-THROUGH$
+
+ case IN_VALUE:
+ fallThrough = false;
+ switch (c) {
+ case ';':
+ case ' ':
+ case '\t':
+ result.put(
+ paramName.toString().trim().toLowerCase(),
+ paramValue.toString().trim());
+ state = VALUE_DONE;
+ fallThrough = true;
+ break;
+ default:
+ paramValue.append(c);
+ break;
+ }
+ if (!fallThrough)
+ break;
+
+ // $FALL-THROUGH$
+
+ case VALUE_DONE:
+ switch (c) {
+ case ';':
+ state = READY_FOR_NAME;
+ break;
+
+ case ' ':
+ case '\t':
+ break;
+
+ default:
+ state = ERROR;
+ break;
+ }
+ break;
+
+ case IN_QUOTED_VALUE:
+ switch (c) {
+ case '"':
+ if (!escaped) {
+ // don't trim quoted strings; the spaces could be intentional.
+ result.put(
+ paramName.toString().trim().toLowerCase(),
+ paramValue.toString());
+ state = VALUE_DONE;
+ } else {
+ escaped = false;
+ paramValue.append(c);
+ }
+ break;
+
+ case '\\':
+ if (escaped) {
+ paramValue.append('\\');
+ }
+ escaped = !escaped;
+ break;
+
+ default:
+ if (escaped) {
+ paramValue.append('\\');
+ }
+ escaped = false;
+ paramValue.append(c);
+ break;
+ }
+ break;
+
+ }
+ }
+
+ // done looping. check if anything is left over.
+ if (state == IN_VALUE) {
+ result.put(
+ paramName.toString().trim().toLowerCase(),
+ paramValue.toString().trim());
+ }
+ }
+
+ return result;
+ }
+
+
+ public boolean isMimeType(String mimeType) {
+ return this.mimeType.equals(mimeType.toLowerCase());
+ }
+
+ /**
+ * Return true if the BodyDescriptor belongs to a message
+ */
+ public boolean isMessage() {
+ return mimeType.equals("message/rfc822");
+ }
+
+ /**
+ * Return true if the BodyDescripotro belongs to a multipart
+ */
+ public boolean isMultipart() {
+ return mimeType.startsWith("multipart/");
+ }
+
+ /**
+ * Return the MimeType
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Return the boundary
+ */
+ public String getBoundary() {
+ return boundary;
+ }
+
+ /**
+ * Return the charset
+ */
+ public String getCharset() {
+ return charset;
+ }
+
+ /**
+ * Return all parameters for the BodyDescriptor
+ */
+ public Map<String, String> getParameters() {
+ return parameters;
+ }
+
+ /**
+ * Return the TransferEncoding
+ */
+ public String getTransferEncoding() {
+ return transferEncoding;
+ }
+
+ /**
+ * Return true if it's base64 encoded
+ */
+ public boolean isBase64Encoded() {
+ return "base64".equals(transferEncoding);
+ }
+
+ /**
+ * Return true if it's quoted-printable
+ */
+ public boolean isQuotedPrintableEncoded() {
+ return "quoted-printable".equals(transferEncoding);
+ }
+
+ @Override
+ public String toString() {
+ return mimeType;
+ }
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/CloseShieldInputStream.java b/src/org/apache/james/mime4j/CloseShieldInputStream.java
new file mode 100644
index 0000000..d9f3b07
--- /dev/null
+++ b/src/org/apache/james/mime4j/CloseShieldInputStream.java
@@ -0,0 +1,129 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+/**
+ * InputStream that shields its underlying input stream from
+ * being closed.
+ *
+ *
+ * @version $Id: CloseShieldInputStream.java,v 1.2 2004/10/02 12:41:10 ntherning Exp $
+ */
+public class CloseShieldInputStream extends InputStream {
+
+ /**
+ * Underlying InputStream
+ */
+ private InputStream is;
+
+ public CloseShieldInputStream(InputStream is) {
+ this.is = is;
+ }
+
+ public InputStream getUnderlyingStream() {
+ return is;
+ }
+
+ /**
+ * @see java.io.InputStream#read()
+ */
+ public int read() throws IOException {
+ checkIfClosed();
+ return is.read();
+ }
+
+ /**
+ * @see java.io.InputStream#available()
+ */
+ public int available() throws IOException {
+ checkIfClosed();
+ return is.available();
+ }
+
+
+ /**
+ * Set the underlying InputStream to null
+ */
+ public void close() throws IOException {
+ is = null;
+ }
+
+ /**
+ * @see java.io.FilterInputStream#reset()
+ */
+ public synchronized void reset() throws IOException {
+ checkIfClosed();
+ is.reset();
+ }
+
+ /**
+ * @see java.io.FilterInputStream#markSupported()
+ */
+ public boolean markSupported() {
+ if (is == null)
+ return false;
+ return is.markSupported();
+ }
+
+ /**
+ * @see java.io.FilterInputStream#mark(int)
+ */
+ public synchronized void mark(int readlimit) {
+ if (is != null)
+ is.mark(readlimit);
+ }
+
+ /**
+ * @see java.io.FilterInputStream#skip(long)
+ */
+ public long skip(long n) throws IOException {
+ checkIfClosed();
+ return is.skip(n);
+ }
+
+ /**
+ * @see java.io.FilterInputStream#read(byte[])
+ */
+ public int read(byte b[]) throws IOException {
+ checkIfClosed();
+ return is.read(b);
+ }
+
+ /**
+ * @see java.io.FilterInputStream#read(byte[], int, int)
+ */
+ public int read(byte b[], int off, int len) throws IOException {
+ checkIfClosed();
+ return is.read(b, off, len);
+ }
+
+ /**
+ * Check if the underlying InputStream is null. If so throw an Exception
+ *
+ * @throws IOException if the underlying InputStream is null
+ */
+ private void checkIfClosed() throws IOException {
+ if (is == null)
+ throw new IOException("Stream is closed");
+ }
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/ContentHandler.java b/src/org/apache/james/mime4j/ContentHandler.java
new file mode 100644
index 0000000..b437e73
--- /dev/null
+++ b/src/org/apache/james/mime4j/ContentHandler.java
@@ -0,0 +1,177 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * <p>
+ * Receives notifications of the content of a plain RFC822 or MIME message.
+ * Implement this interface and register an instance of that implementation
+ * with a <code>MimeStreamParser</code> instance using its
+ * {@link org.apache.james.mime4j.MimeStreamParser#setContentHandler(ContentHandler)}
+ * method. The parser uses the <code>ContentHandler</code> instance to report
+ * basic message-related events like the start and end of the body of a
+ * part in a multipart MIME entity.
+ * </p>
+ * <p>
+ * Events will be generated in the order the corresponding elements occur in
+ * the message stream parsed by the parser. E.g.:
+ * <pre>
+ * startMessage()
+ * startHeader()
+ * field(...)
+ * field(...)
+ * ...
+ * endHeader()
+ * startMultipart()
+ * preamble(...)
+ * startBodyPart()
+ * startHeader()
+ * field(...)
+ * field(...)
+ * ...
+ * endHeader()
+ * body()
+ * endBodyPart()
+ * startBodyPart()
+ * startHeader()
+ * field(...)
+ * field(...)
+ * ...
+ * endHeader()
+ * body()
+ * endBodyPart()
+ * epilogue(...)
+ * endMultipart()
+ * endMessage()
+ * </pre>
+ * The above shows an example of a MIME message consisting of a multipart
+ * body containing two body parts.
+ * </p>
+ * <p>
+ * See MIME RFCs 2045-2049 for more information on the structure of MIME
+ * messages and RFC 822 and 2822 for the general structure of Internet mail
+ * messages.
+ * </p>
+ *
+ *
+ * @version $Id: ContentHandler.java,v 1.3 2004/10/02 12:41:10 ntherning Exp $
+ */
+public interface ContentHandler {
+ /**
+ * Called when a new message starts (a top level message or an embedded
+ * rfc822 message).
+ */
+ void startMessage();
+
+ /**
+ * Called when a message ends.
+ */
+ void endMessage();
+
+ /**
+ * Called when a new body part starts inside a
+ * <code>multipart/*</code> entity.
+ */
+ void startBodyPart();
+
+ /**
+ * Called when a body part ends.
+ */
+ void endBodyPart();
+
+ /**
+ * Called when a header (of a message or body part) is about to be parsed.
+ */
+ void startHeader();
+
+ /**
+ * Called for each field of a header.
+ *
+ * @param fieldData the raw contents of the field
+ * (<code>Field-Name: field value</code>). The value will not be
+ * unfolded.
+ */
+ void field(String fieldData);
+
+ /**
+ * Called when there are no more header fields in a message or body part.
+ */
+ void endHeader();
+
+ /**
+ * Called for the preamble (whatever comes before the first body part)
+ * of a <code>multipart/*</code> entity.
+ *
+ * @param is used to get the contents of the preamble.
+ * @throws IOException should be thrown on I/O errors.
+ */
+ void preamble(InputStream is) throws IOException;
+
+ /**
+ * Called for the epilogue (whatever comes after the final body part)
+ * of a <code>multipart/*</code> entity.
+ *
+ * @param is used to get the contents of the epilogue.
+ * @throws IOException should be thrown on I/O errors.
+ */
+ void epilogue(InputStream is) throws IOException;
+
+ /**
+ * Called when the body of a multipart entity is about to be parsed.
+ *
+ * @param bd encapsulates the values (either read from the
+ * message stream or, if not present, determined implictly
+ * as described in the
+ * MIME rfc:s) of the <code>Content-Type</code> and
+ * <code>Content-Transfer-Encoding</code> header fields.
+ */
+ void startMultipart(BodyDescriptor bd);
+
+ /**
+ * Called when the body of an entity has been parsed.
+ */
+ void endMultipart();
+
+ /**
+ * Called when the body of a discrete (non-multipart) entity is about to
+ * be parsed.
+ *
+ * @param bd see {@link #startMultipart(BodyDescriptor)}
+ * @param is the contents of the body. NOTE: this is the raw body contents
+ * - it will not be decoded if encoded. The <code>bd</code>
+ * parameter should be used to determine how the stream data
+ * should be decoded.
+ * @throws IOException should be thrown on I/O errors.
+ */
+ void body(BodyDescriptor bd, InputStream is) throws IOException;
+
+ /**
+ * Called when a new entity (message or body part) starts and the
+ * parser is in <code>raw</code> mode.
+ *
+ * @param is the raw contents of the entity.
+ * @throws IOException should be thrown on I/O errors.
+ * @see MimeStreamParser#setRaw(boolean)
+ */
+ void raw(InputStream is) throws IOException;
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/EOLConvertingInputStream.java b/src/org/apache/james/mime4j/EOLConvertingInputStream.java
new file mode 100644
index 0000000..d6ef706
--- /dev/null
+++ b/src/org/apache/james/mime4j/EOLConvertingInputStream.java
@@ -0,0 +1,139 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PushbackInputStream;
+
+/**
+ * InputStream which converts <code>\r</code>
+ * bytes not followed by <code>\n</code> and <code>\n</code> not
+ * preceded by <code>\r</code> to <code>\r\n</code>.
+ *
+ *
+ * @version $Id: EOLConvertingInputStream.java,v 1.4 2004/11/29 13:15:42 ntherning Exp $
+ */
+public class EOLConvertingInputStream extends InputStream {
+ /** Converts single '\r' to '\r\n' */
+ public static final int CONVERT_CR = 1;
+ /** Converts single '\n' to '\r\n' */
+ public static final int CONVERT_LF = 2;
+ /** Converts single '\r' and '\n' to '\r\n' */
+ public static final int CONVERT_BOTH = 3;
+
+ private PushbackInputStream in = null;
+ private int previous = 0;
+ private int flags = CONVERT_BOTH;
+ private int size = 0;
+ private int pos = 0;
+ private int nextTenPctPos;
+ private int tenPctSize;
+ private Callback callback;
+
+ public interface Callback {
+ public void report(int bytesRead);
+ }
+
+ /**
+ * Creates a new <code>EOLConvertingInputStream</code>
+ * instance converting bytes in the given <code>InputStream</code>.
+ * The flag <code>CONVERT_BOTH</code> is the default.
+ *
+ * @param in the <code>InputStream</code> to read from.
+ */
+ public EOLConvertingInputStream(InputStream _in) {
+ super();
+ in = new PushbackInputStream(_in, 2);
+ }
+
+ /**
+ * Creates a new <code>EOLConvertingInputStream</code>
+ * instance converting bytes in the given <code>InputStream</code>.
+ *
+ * @param _in the <code>InputStream</code> to read from.
+ * @param _size the size of the input stream (need not be exact)
+ * @param _callback a callback reporting when each 10% of stream's size is reached
+ */
+ public EOLConvertingInputStream(InputStream _in, int _size, Callback _callback) {
+ this(_in);
+ size = _size;
+ tenPctSize = size / 10;
+ nextTenPctPos = tenPctSize;
+ callback = _callback;
+ }
+
+ /**
+ * Closes the underlying stream.
+ *
+ * @throws IOException on I/O errors.
+ */
+ public void close() throws IOException {
+ in.close();
+ }
+
+ private int readByte() throws IOException {
+ int b = in.read();
+ if (b != -1) {
+ if (callback != null && pos++ == nextTenPctPos) {
+ nextTenPctPos += tenPctSize;
+ if (callback != null) {
+ callback.report(pos);
+ }
+ }
+ }
+ return b;
+ }
+
+ private void unreadByte(int c) throws IOException {
+ in.unread(c);
+ pos--;
+ }
+
+ /**
+ * @see java.io.InputStream#read()
+ */
+ public int read() throws IOException {
+ int b = readByte();
+
+ if (b == -1) {
+ pos = size;
+ return -1;
+ }
+
+ if ((flags & CONVERT_CR) != 0 && b == '\r') {
+ int c = readByte();
+ if (c != -1) {
+ unreadByte(c);
+ }
+ if (c != '\n') {
+ unreadByte('\n');
+ }
+ } else if ((flags & CONVERT_LF) != 0 && b == '\n' && previous != '\r') {
+ b = '\r';
+ unreadByte('\n');
+ }
+
+ previous = b;
+
+ return b;
+ }
+
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/Log.java b/src/org/apache/james/mime4j/Log.java
new file mode 100644
index 0000000..5eeead5
--- /dev/null
+++ b/src/org/apache/james/mime4j/Log.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.james.mime4j;
+
+/**
+ * Empty stub for the apache logging library.
+ */
+public class Log {
+ private static final String LOG_TAG = "Email Log";
+
+ public Log(Class mClazz) {
+ }
+
+ public boolean isDebugEnabled() {
+ return false;
+ }
+
+ public boolean isErrorEnabled() {
+ return true;
+ }
+
+ public boolean isFatalEnabled() {
+ return true;
+ }
+
+ public boolean isInfoEnabled() {
+ return false;
+ }
+
+ public boolean isTraceEnabled() {
+ return false;
+ }
+
+ public boolean isWarnEnabled() {
+ return true;
+ }
+
+ public void trace(Object message) {
+ if (!isTraceEnabled()) return;
+ android.util.Log.v(LOG_TAG, toString(message, null));
+ }
+
+ public void trace(Object message, Throwable t) {
+ if (!isTraceEnabled()) return;
+ android.util.Log.v(LOG_TAG, toString(message, t));
+ }
+
+ public void debug(Object message) {
+ if (!isDebugEnabled()) return;
+ android.util.Log.d(LOG_TAG, toString(message, null));
+ }
+
+ public void debug(Object message, Throwable t) {
+ if (!isDebugEnabled()) return;
+ android.util.Log.d(LOG_TAG, toString(message, t));
+ }
+
+ public void info(Object message) {
+ if (!isInfoEnabled()) return;
+ android.util.Log.i(LOG_TAG, toString(message, null));
+ }
+
+ public void info(Object message, Throwable t) {
+ if (!isInfoEnabled()) return;
+ android.util.Log.i(LOG_TAG, toString(message, t));
+ }
+
+ public void warn(Object message) {
+ android.util.Log.w(LOG_TAG, toString(message, null));
+ }
+
+ public void warn(Object message, Throwable t) {
+ android.util.Log.w(LOG_TAG, toString(message, t));
+ }
+
+ public void error(Object message) {
+ android.util.Log.e(LOG_TAG, toString(message, null));
+ }
+
+ public void error(Object message, Throwable t) {
+ android.util.Log.e(LOG_TAG, toString(message, t));
+ }
+
+ public void fatal(Object message) {
+ android.util.Log.e(LOG_TAG, toString(message, null));
+ }
+
+ public void fatal(Object message, Throwable t) {
+ android.util.Log.e(LOG_TAG, toString(message, t));
+ }
+
+ private static String toString(Object o, Throwable t) {
+ String m = (o == null) ? "(null)" : o.toString();
+ if (t == null) {
+ return m;
+ } else {
+ return m + " " + t.getMessage();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/LogFactory.java b/src/org/apache/james/mime4j/LogFactory.java
new file mode 100644
index 0000000..ed6e3de
--- /dev/null
+++ b/src/org/apache/james/mime4j/LogFactory.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.james.mime4j;
+
+/**
+ * Empty stub for the apache logging library.
+ */
+public final class LogFactory {
+ private LogFactory() {
+ }
+
+ public static Log getLog(Class clazz) {
+ return new Log(clazz);
+ }
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/MimeBoundaryInputStream.java b/src/org/apache/james/mime4j/MimeBoundaryInputStream.java
new file mode 100644
index 0000000..c6d6f24
--- /dev/null
+++ b/src/org/apache/james/mime4j/MimeBoundaryInputStream.java
@@ -0,0 +1,184 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PushbackInputStream;
+
+/**
+ * Stream that constrains itself to a single MIME body part.
+ * After the stream ends (i.e. read() returns -1) {@link #hasMoreParts()}
+ * can be used to determine if a final boundary has been seen or not.
+ * If {@link #parentEOF()} is <code>true</code> an unexpected end of stream
+ * has been detected in the parent stream.
+ *
+ *
+ *
+ * @version $Id: MimeBoundaryInputStream.java,v 1.2 2004/11/29 13:15:42 ntherning Exp $
+ */
+public class MimeBoundaryInputStream extends InputStream {
+
+ private PushbackInputStream s = null;
+ private byte[] boundary = null;
+ private boolean first = true;
+ private boolean eof = false;
+ private boolean parenteof = false;
+ private boolean moreParts = true;
+
+ /**
+ * Creates a new MimeBoundaryInputStream.
+ * @param s The underlying stream.
+ * @param boundary Boundary string (not including leading hyphens).
+ */
+ public MimeBoundaryInputStream(InputStream s, String boundary)
+ throws IOException {
+
+ this.s = new PushbackInputStream(s, boundary.length() + 4);
+
+ boundary = "--" + boundary;
+ this.boundary = new byte[boundary.length()];
+ for (int i = 0; i < this.boundary.length; i++) {
+ this.boundary[i] = (byte) boundary.charAt(i);
+ }
+
+ /*
+ * By reading one byte we will update moreParts to be as expected
+ * before any bytes have been read.
+ */
+ int b = read();
+ if (b != -1) {
+ this.s.unread(b);
+ }
+ }
+
+ /**
+ * Closes the underlying stream.
+ *
+ * @throws IOException on I/O errors.
+ */
+ public void close() throws IOException {
+ s.close();
+ }
+
+ /**
+ * Determines if the underlying stream has more parts (this stream has
+ * not seen an end boundary).
+ *
+ * @return <code>true</code> if there are more parts in the underlying
+ * stream, <code>false</code> otherwise.
+ */
+ public boolean hasMoreParts() {
+ return moreParts;
+ }
+
+ /**
+ * Determines if the parent stream has reached EOF
+ *
+ * @return <code>true</code> if EOF has been reached for the parent stream,
+ * <code>false</code> otherwise.
+ */
+ public boolean parentEOF() {
+ return parenteof;
+ }
+
+ /**
+ * Consumes all unread bytes of this stream. After a call to this method
+ * this stream will have reached EOF.
+ *
+ * @throws IOException on I/O errors.
+ */
+ public void consume() throws IOException {
+ while (read() != -1) {
+ }
+ }
+
+ /**
+ * @see java.io.InputStream#read()
+ */
+ public int read() throws IOException {
+ if (eof) {
+ return -1;
+ }
+
+ if (first) {
+ first = false;
+ if (matchBoundary()) {
+ return -1;
+ }
+ }
+
+ int b1 = s.read();
+ int b2 = s.read();
+
+ if (b1 == '\r' && b2 == '\n') {
+ if (matchBoundary()) {
+ return -1;
+ }
+ }
+
+ if (b2 != -1) {
+ s.unread(b2);
+ }
+
+ parenteof = b1 == -1;
+ eof = parenteof;
+
+ return b1;
+ }
+
+ private boolean matchBoundary() throws IOException {
+
+ for (int i = 0; i < boundary.length; i++) {
+ int b = s.read();
+ if (b != boundary[i]) {
+ if (b != -1) {
+ s.unread(b);
+ }
+ for (int j = i - 1; j >= 0; j--) {
+ s.unread(boundary[j]);
+ }
+ return false;
+ }
+ }
+
+ /*
+ * We have a match. Is it an end boundary?
+ */
+ int prev = s.read();
+ int curr = s.read();
+ moreParts = !(prev == '-' && curr == '-');
+ do {
+ if (curr == '\n' && prev == '\r') {
+ break;
+ }
+ prev = curr;
+ } while ((curr = s.read()) != -1);
+
+ if (curr == -1) {
+ moreParts = false;
+ parenteof = true;
+ }
+
+ eof = true;
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/MimeStreamParser.java b/src/org/apache/james/mime4j/MimeStreamParser.java
new file mode 100644
index 0000000..a8aad5a
--- /dev/null
+++ b/src/org/apache/james/mime4j/MimeStreamParser.java
@@ -0,0 +1,324 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j;
+
+import org.apache.james.mime4j.decoder.Base64InputStream;
+import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.BitSet;
+import java.util.LinkedList;
+
+/**
+ * <p>
+ * Parses MIME (or RFC822) message streams of bytes or characters and reports
+ * parsing events to a <code>ContentHandler</code> instance.
+ * </p>
+ * <p>
+ * Typical usage:<br/>
+ * <pre>
+ * ContentHandler handler = new MyHandler();
+ * MimeStreamParser parser = new MimeStreamParser();
+ * parser.setContentHandler(handler);
+ * parser.parse(new BufferedInputStream(new FileInputStream("mime.msg")));
+ * </pre>
+ * <strong>NOTE:</strong> All lines must end with CRLF
+ * (<code>\r\n</code>). If you are unsure of the line endings in your stream
+ * you should wrap it in a {@link org.apache.james.mime4j.EOLConvertingInputStream} instance.
+ *
+ *
+ * @version $Id: MimeStreamParser.java,v 1.8 2005/02/11 10:12:02 ntherning Exp $
+ */
+public class MimeStreamParser {
+ private static final Log log = LogFactory.getLog(MimeStreamParser.class);
+
+ private static BitSet fieldChars = null;
+
+ private RootInputStream rootStream = null;
+ private LinkedList<BodyDescriptor> bodyDescriptors = new LinkedList<BodyDescriptor>();
+ private ContentHandler handler = null;
+ private boolean raw = false;
+ private boolean prematureEof = false;
+
+ static {
+ fieldChars = new BitSet();
+ for (int i = 0x21; i <= 0x39; i++) {
+ fieldChars.set(i);
+ }
+ for (int i = 0x3b; i <= 0x7e; i++) {
+ fieldChars.set(i);
+ }
+ }
+
+ /**
+ * Creates a new <code>MimeStreamParser</code> instance.
+ */
+ public MimeStreamParser() {
+ }
+
+ /**
+ * Parses a stream of bytes containing a MIME message.
+ *
+ * @param is the stream to parse.
+ * @throws IOException on I/O errors.
+ */
+ public void parse(InputStream is) throws IOException {
+ rootStream = new RootInputStream(is);
+ parseMessage(rootStream);
+ }
+
+ /**
+ * Determines if this parser is currently in raw mode.
+ *
+ * @return <code>true</code> if in raw mode, <code>false</code>
+ * otherwise.
+ * @see #setRaw(boolean)
+ */
+ public boolean isRaw() {
+ return raw;
+ }
+
+ /**
+ * Enables or disables raw mode. In raw mode all future entities
+ * (messages or body parts) in the stream will be reported to the
+ * {@link ContentHandler#raw(InputStream)} handler method only.
+ * The stream will contain the entire unparsed entity contents
+ * including header fields and whatever is in the body.
+ *
+ * @param raw <code>true</code> enables raw mode, <code>false</code>
+ * disables it.
+ */
+ public void setRaw(boolean raw) {
+ this.raw = raw;
+ }
+
+ /**
+ * Finishes the parsing and stops reading lines.
+ * NOTE: No more lines will be parsed but the parser
+ * will still call
+ * {@link ContentHandler#endMultipart()},
+ * {@link ContentHandler#endBodyPart()},
+ * {@link ContentHandler#endMessage()}, etc to match previous calls
+ * to
+ * {@link ContentHandler#startMultipart(BodyDescriptor)},
+ * {@link ContentHandler#startBodyPart()},
+ * {@link ContentHandler#startMessage()}, etc.
+ */
+ public void stop() {
+ rootStream.truncate();
+ }
+
+ /**
+ * Parses an entity which consists of a header followed by a body containing
+ * arbitrary data, body parts or an embedded message.
+ *
+ * @param is the stream to parse.
+ * @throws IOException on I/O errors.
+ */
+ private void parseEntity(InputStream is) throws IOException {
+ BodyDescriptor bd = parseHeader(is);
+
+ if (bd.isMultipart()) {
+ bodyDescriptors.addFirst(bd);
+
+ handler.startMultipart(bd);
+
+ MimeBoundaryInputStream tempIs =
+ new MimeBoundaryInputStream(is, bd.getBoundary());
+ handler.preamble(new CloseShieldInputStream(tempIs));
+ tempIs.consume();
+
+ while (tempIs.hasMoreParts()) {
+ tempIs = new MimeBoundaryInputStream(is, bd.getBoundary());
+ parseBodyPart(tempIs);
+ tempIs.consume();
+ if (tempIs.parentEOF()) {
+ prematureEof = true;
+// if (log.isWarnEnabled()) {
+// log.warn("Line " + rootStream.getLineNumber()
+// + ": Body part ended prematurely. "
+// + "Higher level boundary detected or "
+// + "EOF reached.");
+// }
+ break;
+ }
+ }
+
+ handler.epilogue(new CloseShieldInputStream(is));
+
+ handler.endMultipart();
+
+ bodyDescriptors.removeFirst();
+
+ } else if (bd.isMessage()) {
+ if (bd.isBase64Encoded()) {
+ log.warn("base64 encoded message/rfc822 detected");
+ is = new EOLConvertingInputStream(
+ new Base64InputStream(is));
+ } else if (bd.isQuotedPrintableEncoded()) {
+ log.warn("quoted-printable encoded message/rfc822 detected");
+ is = new EOLConvertingInputStream(
+ new QuotedPrintableInputStream(is));
+ }
+ bodyDescriptors.addFirst(bd);
+ parseMessage(is);
+ bodyDescriptors.removeFirst();
+ } else {
+ handler.body(bd, new CloseShieldInputStream(is));
+ }
+
+ /*
+ * Make sure the stream has been consumed.
+ */
+ while (is.read() != -1) {
+ }
+ }
+
+ private void parseMessage(InputStream is) throws IOException {
+ if (raw) {
+ handler.raw(new CloseShieldInputStream(is));
+ } else {
+ handler.startMessage();
+ parseEntity(is);
+ handler.endMessage();
+ }
+ }
+
+ public boolean getPrematureEof() {
+ return prematureEof;
+ }
+
+ private void parseBodyPart(InputStream is) throws IOException {
+ if (raw) {
+ handler.raw(new CloseShieldInputStream(is));
+ } else {
+ handler.startBodyPart();
+ parseEntity(is);
+ handler.endBodyPart();
+ }
+ }
+
+ /**
+ * Parses a header.
+ *
+ * @param is the stream to parse.
+ * @return a <code>BodyDescriptor</code> describing the body following
+ * the header.
+ */
+ private BodyDescriptor parseHeader(InputStream is) throws IOException {
+ BodyDescriptor bd = new BodyDescriptor(bodyDescriptors.isEmpty()
+ ? null : (BodyDescriptor) bodyDescriptors.getFirst());
+
+ handler.startHeader();
+
+ int lineNumber = rootStream.getLineNumber();
+
+ StringBuffer sb = new StringBuffer();
+ int curr = 0;
+ int prev = 0;
+ while ((curr = is.read()) != -1) {
+ if (curr == '\n' && (prev == '\n' || prev == 0)) {
+ /*
+ * [\r]\n[\r]\n or an immediate \r\n have been seen.
+ */
+ sb.deleteCharAt(sb.length() - 1);
+ break;
+ }
+ sb.append((char) curr);
+ prev = curr == '\r' ? prev : curr;
+ }
+
+// if (curr == -1 && log.isWarnEnabled()) {
+// log.warn("Line " + rootStream.getLineNumber()
+// + ": Unexpected end of headers detected. "
+// + "Boundary detected in header or EOF reached.");
+// }
+
+ int start = 0;
+ int pos = 0;
+ int startLineNumber = lineNumber;
+ while (pos < sb.length()) {
+ while (pos < sb.length() && sb.charAt(pos) != '\r') {
+ pos++;
+ }
+ if (pos < sb.length() - 1 && sb.charAt(pos + 1) != '\n') {
+ pos++;
+ continue;
+ }
+
+ if (pos >= sb.length() - 2 || fieldChars.get(sb.charAt(pos + 2))) {
+
+ /*
+ * field should be the complete field data excluding the
+ * trailing \r\n.
+ */
+ String field = sb.substring(start, pos);
+ start = pos + 2;
+
+ /*
+ * Check for a valid field.
+ */
+ int index = field.indexOf(':');
+ boolean valid = false;
+ if (index != -1 && fieldChars.get(field.charAt(0))) {
+ valid = true;
+ String fieldName = field.substring(0, index).trim();
+ for (int i = 0; i < fieldName.length(); i++) {
+ if (!fieldChars.get(fieldName.charAt(i))) {
+ valid = false;
+ break;
+ }
+ }
+
+ if (valid) {
+ handler.field(field);
+ bd.addField(fieldName, field.substring(index + 1));
+ }
+ }
+
+ if (!valid && log.isWarnEnabled()) {
+ log.warn("Line " + startLineNumber
+ + ": Ignoring invalid field: '" + field.trim() + "'");
+ }
+
+ startLineNumber = lineNumber;
+ }
+
+ pos += 2;
+ lineNumber++;
+ }
+
+ handler.endHeader();
+
+ return bd;
+ }
+
+ /**
+ * Sets the <code>ContentHandler</code> to use when reporting
+ * parsing events.
+ *
+ * @param h the <code>ContentHandler</code>.
+ */
+ public void setContentHandler(ContentHandler h) {
+ this.handler = h;
+ }
+
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/RootInputStream.java b/src/org/apache/james/mime4j/RootInputStream.java
new file mode 100644
index 0000000..cc8b241
--- /dev/null
+++ b/src/org/apache/james/mime4j/RootInputStream.java
@@ -0,0 +1,111 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * <code>InputStream</code> used by the parser to wrap the original user
+ * supplied stream. This stream keeps track of the current line number and
+ * can also be truncated. When truncated the stream will appear to have
+ * reached end of file. This is used by the parser's
+ * {@link org.apache.james.mime4j.MimeStreamParser#stop()} method.
+ *
+ *
+ * @version $Id: RootInputStream.java,v 1.2 2004/10/02 12:41:10 ntherning Exp $
+ */
+class RootInputStream extends InputStream {
+ private InputStream is = null;
+ private int lineNumber = 1;
+ private int prev = -1;
+ private boolean truncated = false;
+
+ /**
+ * Creates a new <code>RootInputStream</code>.
+ *
+ * @param in the stream to read from.
+ */
+ public RootInputStream(InputStream is) {
+ this.is = is;
+ }
+
+ /**
+ * Gets the current line number starting at 1
+ * (the number of <code>\r\n</code> read so far plus 1).
+ *
+ * @return the current line number.
+ */
+ public int getLineNumber() {
+ return lineNumber;
+ }
+
+ /**
+ * Truncates this <code>InputStream</code>. After this call any
+ * call to {@link #read()}, {@link #read(byte[]) or
+ * {@link #read(byte[], int, int)} will return
+ * -1 as if end-of-file had been reached.
+ */
+ public void truncate() {
+ this.truncated = true;
+ }
+
+ /**
+ * @see java.io.InputStream#read()
+ */
+ public int read() throws IOException {
+ if (truncated) {
+ return -1;
+ }
+
+ int b = is.read();
+ if (prev == '\r' && b == '\n') {
+ lineNumber++;
+ }
+ prev = b;
+ return b;
+ }
+
+ /**
+ *
+ * @see java.io.InputStream#read(byte[], int, int)
+ */
+ public int read(byte[] b, int off, int len) throws IOException {
+ if (truncated) {
+ return -1;
+ }
+
+ int n = is.read(b, off, len);
+ for (int i = off; i < off + n; i++) {
+ if (prev == '\r' && b[i] == '\n') {
+ lineNumber++;
+ }
+ prev = b[i];
+ }
+ return n;
+ }
+
+ /**
+ * @see java.io.InputStream#read(byte[])
+ */
+ public int read(byte[] b) throws IOException {
+ return read(b, 0, b.length);
+ }
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/codec/EncoderUtil.java b/src/org/apache/james/mime4j/codec/EncoderUtil.java
new file mode 100644
index 0000000..6841bc9
--- /dev/null
+++ b/src/org/apache/james/mime4j/codec/EncoderUtil.java
@@ -0,0 +1,630 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.codec;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.util.BitSet;
+import java.util.Locale;
+
+import org.apache.james.mime4j.util.CharsetUtil;
+
+/**
+ * ANDROID: THIS CLASS IS COPIED FROM A NEWER VERSION OF MIME4J
+ */
+
+/**
+ * Static methods for encoding header field values. This includes encoded-words
+ * as defined in <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a>
+ * or display-names of an e-mail address, for example.
+ *
+ */
+public class EncoderUtil {
+
+ // This array is a lookup table that translates 6-bit positive integer index
+ // values into their "Base64 Alphabet" equivalents as specified in Table 1
+ // of RFC 2045.
+ // ANDROID: THIS TABLE IS COPIED FROM BASE64OUTPUTSTREAM
+ static final byte[] BASE64_TABLE = { 'A', 'B', 'C', 'D', 'E', 'F',
+ 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
+ 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
+ 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
+ '6', '7', '8', '9', '+', '/' };
+
+ // Byte used to pad output.
+ private static final byte BASE64_PAD = '=';
+
+ private static final BitSet Q_REGULAR_CHARS = initChars("=_?");
+
+ private static final BitSet Q_RESTRICTED_CHARS = initChars("=_?\"#$%&'(),.:;<>@[\\]^`{|}~");
+
+ private static final int MAX_USED_CHARACTERS = 50;
+
+ private static final String ENC_WORD_PREFIX = "=?";
+ private static final String ENC_WORD_SUFFIX = "?=";
+
+ private static final int ENCODED_WORD_MAX_LENGTH = 75; // RFC 2047
+
+ private static final BitSet TOKEN_CHARS = initChars("()<>@,;:\\\"/[]?=");
+
+ private static final BitSet ATEXT_CHARS = initChars("()<>@.,;:\\\"[]");
+
+ private static BitSet initChars(String specials) {
+ BitSet bs = new BitSet(128);
+ for (char ch = 33; ch < 127; ch++) {
+ if (specials.indexOf(ch) == -1) {
+ bs.set(ch);
+ }
+ }
+ return bs;
+ }
+
+ /**
+ * Selects one of the two encodings specified in RFC 2047.
+ */
+ public enum Encoding {
+ /** The B encoding (identical to base64 defined in RFC 2045). */
+ B,
+ /** The Q encoding (similar to quoted-printable defined in RFC 2045). */
+ Q
+ }
+
+ /**
+ * Indicates the intended usage of an encoded word.
+ */
+ public enum Usage {
+ /**
+ * Encoded word is used to replace a 'text' token in any Subject or
+ * Comments header field.
+ */
+ TEXT_TOKEN,
+ /**
+ * Encoded word is used to replace a 'word' entity within a 'phrase',
+ * for example, one that precedes an address in a From, To, or Cc
+ * header.
+ */
+ WORD_ENTITY
+ }
+
+ private EncoderUtil() {
+ }
+
+ /**
+ * Encodes the display-name portion of an address. See <a
+ * href='http://www.faqs.org/rfcs/rfc5322.html'>RFC 5322</a> section 3.4
+ * and <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a> section
+ * 5.3. The specified string should not be folded.
+ *
+ * @param displayName
+ * display-name to encode.
+ * @return encoded display-name.
+ */
+ public static String encodeAddressDisplayName(String displayName) {
+ // display-name = phrase
+ // phrase = 1*( encoded-word / word )
+ // word = atom / quoted-string
+ // atom = [CFWS] 1*atext [CFWS]
+ // CFWS = comment or folding white space
+
+ if (isAtomPhrase(displayName)) {
+ return displayName;
+ } else if (hasToBeEncoded(displayName, 0)) {
+ return encodeEncodedWord(displayName, Usage.WORD_ENTITY);
+ } else {
+ return quote(displayName);
+ }
+ }
+
+ /**
+ * Encodes the local part of an address specification as described in RFC
+ * 5322 section 3.4.1. Leading and trailing CFWS should have been removed
+ * before calling this method. The specified string should not contain any
+ * illegal (control or non-ASCII) characters.
+ *
+ * @param localPart
+ * the local part to encode
+ * @return the encoded local part.
+ */
+ public static String encodeAddressLocalPart(String localPart) {
+ // local-part = dot-atom / quoted-string
+ // dot-atom = [CFWS] dot-atom-text [CFWS]
+ // CFWS = comment or folding white space
+
+ if (isDotAtomText(localPart)) {
+ return localPart;
+ } else {
+ return quote(localPart);
+ }
+ }
+
+ /**
+ * Encodes the specified strings into a header parameter as described in RFC
+ * 2045 section 5.1 and RFC 2183 section 2. The specified strings should not
+ * contain any illegal (control or non-ASCII) characters.
+ *
+ * @param name
+ * parameter name.
+ * @param value
+ * parameter value.
+ * @return encoded result.
+ */
+ public static String encodeHeaderParameter(String name, String value) {
+ name = name.toLowerCase(Locale.US);
+
+ // value := token / quoted-string
+ if (isToken(value)) {
+ return name + "=" + value;
+ } else {
+ return name + "=" + quote(value);
+ }
+ }
+
+ /**
+ * Shortcut method that encodes the specified text into an encoded-word if
+ * the text has to be encoded.
+ *
+ * @param text
+ * text to encode.
+ * @param usage
+ * whether the encoded-word is to be used to replace a text token
+ * or a word entity (see RFC 822).
+ * @param usedCharacters
+ * number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
+ * @return the specified text if encoding is not necessary or an encoded
+ * word or a sequence of encoded words otherwise.
+ */
+ public static String encodeIfNecessary(String text, Usage usage,
+ int usedCharacters) {
+ if (hasToBeEncoded(text, usedCharacters))
+ return encodeEncodedWord(text, usage, usedCharacters);
+ else
+ return text;
+ }
+
+ /**
+ * Determines if the specified string has to encoded into an encoded-word.
+ * Returns <code>true</code> if the text contains characters that don't
+ * fall into the printable ASCII character set or if the text contains a
+ * 'word' (sequence of non-whitespace characters) longer than 77 characters
+ * (including characters already used up in the line).
+ *
+ * @param text
+ * text to analyze.
+ * @param usedCharacters
+ * number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
+ * @return <code>true</code> if the specified text has to be encoded into
+ * an encoded-word, <code>false</code> otherwise.
+ */
+ public static boolean hasToBeEncoded(String text, int usedCharacters) {
+ if (text == null)
+ throw new IllegalArgumentException();
+ if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
+ throw new IllegalArgumentException();
+
+ int nonWhiteSpaceCount = usedCharacters;
+
+ for (int idx = 0; idx < text.length(); idx++) {
+ char ch = text.charAt(idx);
+ if (ch == '\t' || ch == ' ') {
+ nonWhiteSpaceCount = 0;
+ } else {
+ nonWhiteSpaceCount++;
+ if (nonWhiteSpaceCount > 77) {
+ // Line cannot be folded into multiple lines with no more
+ // than 78 characters each. Encoding as encoded-words makes
+ // that possible. One character has to be reserved for
+ // folding white space; that leaves 77 characters.
+ return true;
+ }
+
+ if (ch < 32 || ch >= 127) {
+ // non-printable ascii character has to be encoded
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Encodes the specified text into an encoded word or a sequence of encoded
+ * words separated by space. The text is separated into a sequence of
+ * encoded words if it does not fit in a single one.
+ * <p>
+ * The charset to encode the specified text into a byte array and the
+ * encoding to use for the encoded-word are detected automatically.
+ * <p>
+ * This method assumes that zero characters have already been used up in the
+ * current line.
+ *
+ * @param text
+ * text to encode.
+ * @param usage
+ * whether the encoded-word is to be used to replace a text token
+ * or a word entity (see RFC 822).
+ * @return the encoded word (or sequence of encoded words if the given text
+ * does not fit in a single encoded word).
+ * @see #hasToBeEncoded(String, int)
+ */
+ public static String encodeEncodedWord(String text, Usage usage) {
+ return encodeEncodedWord(text, usage, 0, null, null);
+ }
+
+ /**
+ * Encodes the specified text into an encoded word or a sequence of encoded
+ * words separated by space. The text is separated into a sequence of
+ * encoded words if it does not fit in a single one.
+ * <p>
+ * The charset to encode the specified text into a byte array and the
+ * encoding to use for the encoded-word are detected automatically.
+ *
+ * @param text
+ * text to encode.
+ * @param usage
+ * whether the encoded-word is to be used to replace a text token
+ * or a word entity (see RFC 822).
+ * @param usedCharacters
+ * number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
+ * @return the encoded word (or sequence of encoded words if the given text
+ * does not fit in a single encoded word).
+ * @see #hasToBeEncoded(String, int)
+ */
+ public static String encodeEncodedWord(String text, Usage usage,
+ int usedCharacters) {
+ return encodeEncodedWord(text, usage, usedCharacters, null, null);
+ }
+
+ /**
+ * Encodes the specified text into an encoded word or a sequence of encoded
+ * words separated by space. The text is separated into a sequence of
+ * encoded words if it does not fit in a single one.
+ *
+ * @param text
+ * text to encode.
+ * @param usage
+ * whether the encoded-word is to be used to replace a text token
+ * or a word entity (see RFC 822).
+ * @param usedCharacters
+ * number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
+ * @param charset
+ * the Java charset that should be used to encode the specified
+ * string into a byte array. A suitable charset is detected
+ * automatically if this parameter is <code>null</code>.
+ * @param encoding
+ * the encoding to use for the encoded-word (either B or Q). A
+ * suitable encoding is automatically chosen if this parameter is
+ * <code>null</code>.
+ * @return the encoded word (or sequence of encoded words if the given text
+ * does not fit in a single encoded word).
+ * @see #hasToBeEncoded(String, int)
+ */
+ public static String encodeEncodedWord(String text, Usage usage,
+ int usedCharacters, Charset charset, Encoding encoding) {
+ if (text == null)
+ throw new IllegalArgumentException();
+ if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
+ throw new IllegalArgumentException();
+
+ if (charset == null)
+ charset = determineCharset(text);
+
+ String mimeCharset = CharsetUtil.toMimeCharset(charset.name());
+ if (mimeCharset == null) {
+ // cannot happen if charset was originally null
+ throw new IllegalArgumentException("Unsupported charset");
+ }
+
+ byte[] bytes = encode(text, charset);
+
+ if (encoding == null)
+ encoding = determineEncoding(bytes, usage);
+
+ if (encoding == Encoding.B) {
+ String prefix = ENC_WORD_PREFIX + mimeCharset + "?B?";
+ return encodeB(prefix, text, usedCharacters, charset, bytes);
+ } else {
+ String prefix = ENC_WORD_PREFIX + mimeCharset + "?Q?";
+ return encodeQ(prefix, text, usage, usedCharacters, charset, bytes);
+ }
+ }
+
+ /**
+ * Encodes the specified byte array using the B encoding defined in RFC
+ * 2047.
+ *
+ * @param bytes
+ * byte array to encode.
+ * @return encoded string.
+ */
+ public static String encodeB(byte[] bytes) {
+ StringBuilder sb = new StringBuilder();
+
+ int idx = 0;
+ final int end = bytes.length;
+ for (; idx < end - 2; idx += 3) {
+ int data = (bytes[idx] & 0xff) << 16 | (bytes[idx + 1] & 0xff) << 8
+ | bytes[idx + 2] & 0xff;
+ sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
+ sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
+ sb.append((char) BASE64_TABLE[data >> 6 & 0x3f]);
+ sb.append((char) BASE64_TABLE[data & 0x3f]);
+ }
+
+ if (idx == end - 2) {
+ int data = (bytes[idx] & 0xff) << 16 | (bytes[idx + 1] & 0xff) << 8;
+ sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
+ sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
+ sb.append((char) BASE64_TABLE[data >> 6 & 0x3f]);
+ sb.append((char) BASE64_PAD);
+
+ } else if (idx == end - 1) {
+ int data = (bytes[idx] & 0xff) << 16;
+ sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
+ sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
+ sb.append((char) BASE64_PAD);
+ sb.append((char) BASE64_PAD);
+ }
+
+ return sb.toString();
+ }
+
+ /**
+ * Encodes the specified byte array using the Q encoding defined in RFC
+ * 2047.
+ *
+ * @param bytes
+ * byte array to encode.
+ * @param usage
+ * whether the encoded-word is to be used to replace a text token
+ * or a word entity (see RFC 822).
+ * @return encoded string.
+ */
+ public static String encodeQ(byte[] bytes, Usage usage) {
+ BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
+ : Q_RESTRICTED_CHARS;
+
+ StringBuilder sb = new StringBuilder();
+
+ final int end = bytes.length;
+ for (int idx = 0; idx < end; idx++) {
+ int v = bytes[idx] & 0xff;
+ if (v == 32) {
+ sb.append('_');
+ } else if (!qChars.get(v)) {
+ sb.append('=');
+ sb.append(hexDigit(v >>> 4));
+ sb.append(hexDigit(v & 0xf));
+ } else {
+ sb.append((char) v);
+ }
+ }
+
+ return sb.toString();
+ }
+
+ /**
+ * Tests whether the specified string is a token as defined in RFC 2045
+ * section 5.1.
+ *
+ * @param str
+ * string to test.
+ * @return <code>true</code> if the specified string is a RFC 2045 token,
+ * <code>false</code> otherwise.
+ */
+ public static boolean isToken(String str) {
+ // token := 1*<any (US-ASCII) CHAR except SPACE, CTLs, or tspecials>
+ // tspecials := "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" /
+ // <"> / "/" / "[" / "]" / "?" / "="
+ // CTL := 0.- 31., 127.
+
+ final int length = str.length();
+ if (length == 0)
+ return false;
+
+ for (int idx = 0; idx < length; idx++) {
+ char ch = str.charAt(idx);
+ if (!TOKEN_CHARS.get(ch))
+ return false;
+ }
+
+ return true;
+ }
+
+ private static boolean isAtomPhrase(String str) {
+ // atom = [CFWS] 1*atext [CFWS]
+
+ boolean containsAText = false;
+
+ final int length = str.length();
+ for (int idx = 0; idx < length; idx++) {
+ char ch = str.charAt(idx);
+ if (ATEXT_CHARS.get(ch)) {
+ containsAText = true;
+ } else if (!CharsetUtil.isWhitespace(ch)) {
+ return false;
+ }
+ }
+
+ return containsAText;
+ }
+
+ // RFC 5322 section 3.2.3
+ private static boolean isDotAtomText(String str) {
+ // dot-atom-text = 1*atext *("." 1*atext)
+ // atext = ALPHA / DIGIT / "!" / "#" / "$" / "%" / "&" / "'" / "*" /
+ // "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
+
+ char prev = '.';
+
+ final int length = str.length();
+ if (length == 0)
+ return false;
+
+ for (int idx = 0; idx < length; idx++) {
+ char ch = str.charAt(idx);
+
+ if (ch == '.') {
+ if (prev == '.' || idx == length - 1)
+ return false;
+ } else {
+ if (!ATEXT_CHARS.get(ch))
+ return false;
+ }
+
+ prev = ch;
+ }
+
+ return true;
+ }
+
+ // RFC 5322 section 3.2.4
+ private static String quote(String str) {
+ // quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
+ // qcontent = qtext / quoted-pair
+ // qtext = %d33 / %d35-91 / %d93-126
+ // quoted-pair = ("\" (VCHAR / WSP))
+ // VCHAR = %x21-7E
+ // DQUOTE = %x22
+
+ String escaped = str.replaceAll("[\\\\\"]", "\\\\$0");
+ return "\"" + escaped + "\"";
+ }
+
+ private static String encodeB(String prefix, String text,
+ int usedCharacters, Charset charset, byte[] bytes) {
+ int encodedLength = bEncodedLength(bytes);
+
+ int totalLength = prefix.length() + encodedLength
+ + ENC_WORD_SUFFIX.length();
+ if (totalLength <= ENCODED_WORD_MAX_LENGTH - usedCharacters) {
+ return prefix + encodeB(bytes) + ENC_WORD_SUFFIX;
+ } else {
+ int splitOffset = text.offsetByCodePoints(text.length() / 2, -1);
+
+ String part1 = text.substring(0, splitOffset);
+ byte[] bytes1 = encode(part1, charset);
+ String word1 = encodeB(prefix, part1, usedCharacters, charset,
+ bytes1);
+
+ String part2 = text.substring(splitOffset);
+ byte[] bytes2 = encode(part2, charset);
+ String word2 = encodeB(prefix, part2, 0, charset, bytes2);
+
+ return word1 + " " + word2;
+ }
+ }
+
+ private static int bEncodedLength(byte[] bytes) {
+ return (bytes.length + 2) / 3 * 4;
+ }
+
+ private static String encodeQ(String prefix, String text, Usage usage,
+ int usedCharacters, Charset charset, byte[] bytes) {
+ int encodedLength = qEncodedLength(bytes, usage);
+
+ int totalLength = prefix.length() + encodedLength
+ + ENC_WORD_SUFFIX.length();
+ if (totalLength <= ENCODED_WORD_MAX_LENGTH - usedCharacters) {
+ return prefix + encodeQ(bytes, usage) + ENC_WORD_SUFFIX;
+ } else {
+ int splitOffset = text.offsetByCodePoints(text.length() / 2, -1);
+
+ String part1 = text.substring(0, splitOffset);
+ byte[] bytes1 = encode(part1, charset);
+ String word1 = encodeQ(prefix, part1, usage, usedCharacters,
+ charset, bytes1);
+
+ String part2 = text.substring(splitOffset);
+ byte[] bytes2 = encode(part2, charset);
+ String word2 = encodeQ(prefix, part2, usage, 0, charset, bytes2);
+
+ return word1 + " " + word2;
+ }
+ }
+
+ private static int qEncodedLength(byte[] bytes, Usage usage) {
+ BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
+ : Q_RESTRICTED_CHARS;
+
+ int count = 0;
+
+ for (int idx = 0; idx < bytes.length; idx++) {
+ int v = bytes[idx] & 0xff;
+ if (v == 32) {
+ count++;
+ } else if (!qChars.get(v)) {
+ count += 3;
+ } else {
+ count++;
+ }
+ }
+
+ return count;
+ }
+
+ private static byte[] encode(String text, Charset charset) {
+ ByteBuffer buffer = charset.encode(text);
+ byte[] bytes = new byte[buffer.limit()];
+ buffer.get(bytes);
+ return bytes;
+ }
+
+ private static Charset determineCharset(String text) {
+ // it is an important property of iso-8859-1 that it directly maps
+ // unicode code points 0000 to 00ff to byte values 00 to ff.
+ boolean ascii = true;
+ final int len = text.length();
+ for (int index = 0; index < len; index++) {
+ char ch = text.charAt(index);
+ if (ch > 0xff) {
+ return CharsetUtil.UTF_8;
+ }
+ if (ch > 0x7f) {
+ ascii = false;
+ }
+ }
+ return ascii ? CharsetUtil.US_ASCII : CharsetUtil.ISO_8859_1;
+ }
+
+ private static Encoding determineEncoding(byte[] bytes, Usage usage) {
+ if (bytes.length == 0)
+ return Encoding.Q;
+
+ BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
+ : Q_RESTRICTED_CHARS;
+
+ int qEncoded = 0;
+ for (int i = 0; i < bytes.length; i++) {
+ int v = bytes[i] & 0xff;
+ if (v != 32 && !qChars.get(v)) {
+ qEncoded++;
+ }
+ }
+
+ int percentage = qEncoded * 100 / bytes.length;
+ return percentage > 30 ? Encoding.B : Encoding.Q;
+ }
+
+ private static char hexDigit(int i) {
+ return i < 10 ? (char) (i + '0') : (char) (i - 10 + 'A');
+ }
+}
diff --git a/src/org/apache/james/mime4j/decoder/Base64InputStream.java b/src/org/apache/james/mime4j/decoder/Base64InputStream.java
new file mode 100644
index 0000000..77f5d7d
--- /dev/null
+++ b/src/org/apache/james/mime4j/decoder/Base64InputStream.java
@@ -0,0 +1,151 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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. *
+ ****************************************************************/
+
+/**
+ * Modified to improve efficiency by Android 21-Aug-2009
+ */
+
+package org.apache.james.mime4j.decoder;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Performs Base-64 decoding on an underlying stream.
+ *
+ *
+ * @version $Id: Base64InputStream.java,v 1.3 2004/11/29 13:15:47 ntherning Exp $
+ */
+public class Base64InputStream extends InputStream {
+ private final InputStream s;
+ private int outCount = 0;
+ private int outIndex = 0;
+ private final int[] outputBuffer = new int[3];
+ private final byte[] inputBuffer = new byte[4];
+ private boolean done = false;
+
+ public Base64InputStream(InputStream s) {
+ this.s = s;
+ }
+
+ /**
+ * Closes the underlying stream.
+ *
+ * @throws IOException on I/O errors.
+ */
+ @Override
+ public void close() throws IOException {
+ s.close();
+ }
+
+ @Override
+ public int read() throws IOException {
+ if (outIndex == outCount) {
+ fillBuffer();
+ if (outIndex == outCount) {
+ return -1;
+ }
+ }
+
+ return outputBuffer[outIndex++];
+ }
+
+ /**
+ * Retrieve data from the underlying stream, decode it,
+ * and put the results in the byteq.
+ * @throws IOException
+ */
+ private void fillBuffer() throws IOException {
+ outCount = 0;
+ outIndex = 0;
+ int inCount = 0;
+
+ int i;
+ // "done" is needed for the two successive '=' at the end
+ while (!done) {
+ switch (i = s.read()) {
+ case -1:
+ // No more input - just return, let outputBuffer drain out, and be done
+ return;
+ case '=':
+ // once we meet the first '=', avoid reading the second '='
+ done = true;
+ decodeAndEnqueue(inCount);
+ return;
+ default:
+ byte sX = TRANSLATION[i];
+ if (sX < 0) continue;
+ inputBuffer[inCount++] = sX;
+ if (inCount == 4) {
+ decodeAndEnqueue(inCount);
+ return;
+ }
+ break;
+ }
+ }
+ }
+
+ private void decodeAndEnqueue(int len) {
+ int accum = 0;
+ accum |= inputBuffer[0] << 18;
+ accum |= inputBuffer[1] << 12;
+ accum |= inputBuffer[2] << 6;
+ accum |= inputBuffer[3];
+
+ // There's a bit of duplicated code here because we want to have straight-through operation
+ // for the most common case of len==4
+ if (len == 4) {
+ outputBuffer[0] = (accum >> 16) & 0xFF;
+ outputBuffer[1] = (accum >> 8) & 0xFF;
+ outputBuffer[2] = (accum) & 0xFF;
+ outCount = 3;
+ return;
+ } else if (len == 3) {
+ outputBuffer[0] = (accum >> 16) & 0xFF;
+ outputBuffer[1] = (accum >> 8) & 0xFF;
+ outCount = 2;
+ return;
+ } else { // len == 2
+ outputBuffer[0] = (accum >> 16) & 0xFF;
+ outCount = 1;
+ return;
+ }
+ }
+
+ private static byte[] TRANSLATION = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x00 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, /* 0x20 */
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, /* 0x30 */
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 0x40 */
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, /* 0x50 */
+ -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, /* 0x60 */
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, /* 0x70 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x90 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xA0 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xB0 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xC0 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xD0 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xE0 */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 /* 0xF0 */
+ };
+
+
+}
diff --git a/src/org/apache/james/mime4j/decoder/ByteQueue.java b/src/org/apache/james/mime4j/decoder/ByteQueue.java
new file mode 100644
index 0000000..6d7ccef
--- /dev/null
+++ b/src/org/apache/james/mime4j/decoder/ByteQueue.java
@@ -0,0 +1,62 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.decoder;
+
+import java.util.Iterator;
+
+public class ByteQueue {
+
+ private UnboundedFifoByteBuffer buf;
+ private int initialCapacity = -1;
+
+ public ByteQueue() {
+ buf = new UnboundedFifoByteBuffer();
+ }
+
+ public ByteQueue(int initialCapacity) {
+ buf = new UnboundedFifoByteBuffer(initialCapacity);
+ this.initialCapacity = initialCapacity;
+ }
+
+ public void enqueue(byte b) {
+ buf.add(b);
+ }
+
+ public byte dequeue() {
+ return buf.remove();
+ }
+
+ public int count() {
+ return buf.size();
+ }
+
+ public void clear() {
+ if (initialCapacity != -1)
+ buf = new UnboundedFifoByteBuffer(initialCapacity);
+ else
+ buf = new UnboundedFifoByteBuffer();
+ }
+
+ public Iterator iterator() {
+ return buf.iterator();
+ }
+
+
+}
diff --git a/src/org/apache/james/mime4j/decoder/DecoderUtil.java b/src/org/apache/james/mime4j/decoder/DecoderUtil.java
new file mode 100644
index 0000000..48fe07d
--- /dev/null
+++ b/src/org/apache/james/mime4j/decoder/DecoderUtil.java
@@ -0,0 +1,284 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.decoder;
+
+//BEGIN android-changed: Stubbing out logging
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END android-changed
+import org.apache.james.mime4j.util.CharsetUtil;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * Static methods for decoding strings, byte arrays and encoded words.
+ *
+ *
+ * @version $Id: DecoderUtil.java,v 1.3 2005/02/07 15:33:59 ntherning Exp $
+ */
+public class DecoderUtil {
+ private static Log log = LogFactory.getLog(DecoderUtil.class);
+
+ /**
+ * Decodes a string containing quoted-printable encoded data.
+ *
+ * @param s the string to decode.
+ * @return the decoded bytes.
+ */
+ public static byte[] decodeBaseQuotedPrintable(String s) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ try {
+ byte[] bytes = s.getBytes("US-ASCII");
+
+ QuotedPrintableInputStream is = new QuotedPrintableInputStream(
+ new ByteArrayInputStream(bytes));
+
+ int b = 0;
+ while ((b = is.read()) != -1) {
+ baos.write(b);
+ }
+ } catch (IOException e) {
+ /*
+ * This should never happen!
+ */
+ log.error(e);
+ }
+
+ return baos.toByteArray();
+ }
+
+ /**
+ * Decodes a string containing base64 encoded data.
+ *
+ * @param s the string to decode.
+ * @return the decoded bytes.
+ */
+ public static byte[] decodeBase64(String s) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ try {
+ byte[] bytes = s.getBytes("US-ASCII");
+
+ Base64InputStream is = new Base64InputStream(
+ new ByteArrayInputStream(bytes));
+
+ int b = 0;
+ while ((b = is.read()) != -1) {
+ baos.write(b);
+ }
+ } catch (IOException e) {
+ /*
+ * This should never happen!
+ */
+ log.error(e);
+ }
+
+ return baos.toByteArray();
+ }
+
+ /**
+ * Decodes an encoded word encoded with the 'B' encoding (described in
+ * RFC 2047) found in a header field body.
+ *
+ * @param encodedWord the encoded word to decode.
+ * @param charset the Java charset to use.
+ * @return the decoded string.
+ * @throws UnsupportedEncodingException if the given Java charset isn't
+ * supported.
+ */
+ public static String decodeB(String encodedWord, String charset)
+ throws UnsupportedEncodingException {
+
+ return new String(decodeBase64(encodedWord), charset);
+ }
+
+ /**
+ * Decodes an encoded word encoded with the 'Q' encoding (described in
+ * RFC 2047) found in a header field body.
+ *
+ * @param encodedWord the encoded word to decode.
+ * @param charset the Java charset to use.
+ * @return the decoded string.
+ * @throws UnsupportedEncodingException if the given Java charset isn't
+ * supported.
+ */
+ public static String decodeQ(String encodedWord, String charset)
+ throws UnsupportedEncodingException {
+
+ /*
+ * Replace _ with =20
+ */
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < encodedWord.length(); i++) {
+ char c = encodedWord.charAt(i);
+ if (c == '_') {
+ sb.append("=20");
+ } else {
+ sb.append(c);
+ }
+ }
+
+ return new String(decodeBaseQuotedPrintable(sb.toString()), charset);
+ }
+
+ /**
+ * Decodes a string containing encoded words as defined by RFC 2047.
+ * Encoded words in have the form
+ * =?charset?enc?Encoded word?= where enc is either 'Q' or 'q' for
+ * quoted-printable and 'B' or 'b' for Base64.
+ *
+ * ANDROID: COPIED FROM A NEWER VERSION OF MIME4J
+ *
+ * @param body the string to decode.
+ * @return the decoded string.
+ */
+ public static String decodeEncodedWords(String body) {
+
+ // ANDROID: Most strings will not include "=?" so a quick test can prevent unneeded
+ // object creation. This could also be handled via lazy creation of the StringBuilder.
+ if (body.indexOf("=?") == -1) {
+ return body;
+ }
+
+ int previousEnd = 0;
+ boolean previousWasEncoded = false;
+
+ StringBuilder sb = new StringBuilder();
+
+ while (true) {
+ int begin = body.indexOf("=?", previousEnd);
+
+ // ANDROID: The mime4j original version has an error here. It gets confused if
+ // the encoded string begins with an '=' (just after "?Q?"). This patch seeks forward
+ // to find the two '?' in the "header", before looking for the final "?=".
+ if (begin == -1) {
+ break;
+ }
+ int qm1 = body.indexOf('?', begin + 2);
+ if (qm1 == -1) {
+ break;
+ }
+ int qm2 = body.indexOf('?', qm1 + 1);
+ if (qm2 == -1) {
+ break;
+ }
+ int end = body.indexOf("?=", qm2 + 1);
+ if (end == -1) {
+ break;
+ }
+ end += 2;
+
+ String sep = body.substring(previousEnd, begin);
+
+ String decoded = decodeEncodedWord(body, begin, end);
+ if (decoded == null) {
+ sb.append(sep);
+ sb.append(body.substring(begin, end));
+ } else {
+ if (!previousWasEncoded || !CharsetUtil.isWhitespace(sep)) {
+ sb.append(sep);
+ }
+ sb.append(decoded);
+ }
+
+ previousEnd = end;
+ previousWasEncoded = decoded != null;
+ }
+
+ if (previousEnd == 0)
+ return body;
+
+ sb.append(body.substring(previousEnd));
+ return sb.toString();
+ }
+
+ // return null on error. Begin is index of '=?' in body.
+ public static String decodeEncodedWord(String body, int begin, int end) {
+ // Skip the '?=' chars in body and scan forward from there for next '?'
+ int qm1 = body.indexOf('?', begin + 2);
+ if (qm1 == -1 || qm1 == end - 2)
+ return null;
+
+ int qm2 = body.indexOf('?', qm1 + 1);
+ if (qm2 == -1 || qm2 == end - 2)
+ return null;
+
+ String mimeCharset = body.substring(begin + 2, qm1);
+ String encoding = body.substring(qm1 + 1, qm2);
+ String encodedText = body.substring(qm2 + 1, end - 2);
+
+ String charset = CharsetUtil.toJavaCharset(mimeCharset);
+ if (charset == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("MIME charset '" + mimeCharset + "' in encoded word '"
+ + body.substring(begin, end) + "' doesn't have a "
+ + "corresponding Java charset");
+ }
+ return null;
+ } else if (!CharsetUtil.isDecodingSupported(charset)) {
+ if (log.isWarnEnabled()) {
+ log.warn("Current JDK doesn't support decoding of charset '"
+ + charset + "' (MIME charset '" + mimeCharset
+ + "' in encoded word '" + body.substring(begin, end)
+ + "')");
+ }
+ return null;
+ }
+
+ if (encodedText.length() == 0) {
+ if (log.isWarnEnabled()) {
+ log.warn("Missing encoded text in encoded word: '"
+ + body.substring(begin, end) + "'");
+ }
+ return null;
+ }
+
+ try {
+ if (encoding.equalsIgnoreCase("Q")) {
+ return DecoderUtil.decodeQ(encodedText, charset);
+ } else if (encoding.equalsIgnoreCase("B")) {
+ return DecoderUtil.decodeB(encodedText, charset);
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Warning: Unknown encoding in encoded word '"
+ + body.substring(begin, end) + "'");
+ }
+ return null;
+ }
+ } catch (UnsupportedEncodingException e) {
+ // should not happen because of isDecodingSupported check above
+ if (log.isWarnEnabled()) {
+ log.warn("Unsupported encoding in encoded word '"
+ + body.substring(begin, end) + "'", e);
+ }
+ return null;
+ } catch (RuntimeException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not decode encoded word '"
+ + body.substring(begin, end) + "'", e);
+ }
+ return null;
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java b/src/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java
new file mode 100644
index 0000000..e43f398
--- /dev/null
+++ b/src/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java
@@ -0,0 +1,229 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.decoder;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+//BEGIN android-changed: Stubbing out logging
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END android-changed
+
+/**
+ * Performs Quoted-Printable decoding on an underlying stream.
+ *
+ *
+ *
+ * @version $Id: QuotedPrintableInputStream.java,v 1.3 2004/11/29 13:15:47 ntherning Exp $
+ */
+public class QuotedPrintableInputStream extends InputStream {
+ private static Log log = LogFactory.getLog(QuotedPrintableInputStream.class);
+
+ private InputStream stream;
+ ByteQueue byteq = new ByteQueue();
+ ByteQueue pushbackq = new ByteQueue();
+ private byte state = 0;
+
+ public QuotedPrintableInputStream(InputStream stream) {
+ this.stream = stream;
+ }
+
+ /**
+ * Closes the underlying stream.
+ *
+ * @throws IOException on I/O errors.
+ */
+ public void close() throws IOException {
+ stream.close();
+ }
+
+ public int read() throws IOException {
+ fillBuffer();
+ if (byteq.count() == 0)
+ return -1;
+ else {
+ byte val = byteq.dequeue();
+ if (val >= 0)
+ return val;
+ else
+ return val & 0xFF;
+ }
+ }
+
+ /**
+ * Pulls bytes out of the underlying stream and places them in the
+ * pushback queue. This is necessary (vs. reading from the
+ * underlying stream directly) to detect and filter out "transport
+ * padding" whitespace, i.e., all whitespace that appears immediately
+ * before a CRLF.
+ *
+ * @throws IOException Underlying stream threw IOException.
+ */
+ private void populatePushbackQueue() throws IOException {
+ //Debug.verify(pushbackq.count() == 0, "PopulatePushbackQueue called when pushback queue was not empty!");
+
+ if (pushbackq.count() != 0)
+ return;
+
+ while (true) {
+ int i = stream.read();
+ switch (i) {
+ case -1:
+ // stream is done
+ pushbackq.clear(); // discard any whitespace preceding EOF
+ return;
+ case ' ':
+ case '\t':
+ pushbackq.enqueue((byte)i);
+ break;
+ case '\r':
+ case '\n':
+ pushbackq.clear(); // discard any whitespace preceding EOL
+ pushbackq.enqueue((byte)i);
+ return;
+ default:
+ pushbackq.enqueue((byte)i);
+ return;
+ }
+ }
+ }
+
+ /**
+ * Causes the pushback queue to get populated if it is empty, then
+ * consumes and decodes bytes out of it until one or more bytes are
+ * in the byte queue. This decoding step performs the actual QP
+ * decoding.
+ *
+ * @throws IOException Underlying stream threw IOException.
+ */
+ private void fillBuffer() throws IOException {
+ byte msdChar = 0; // first digit of escaped num
+ while (byteq.count() == 0) {
+ if (pushbackq.count() == 0) {
+ populatePushbackQueue();
+ if (pushbackq.count() == 0)
+ return;
+ }
+
+ byte b = (byte)pushbackq.dequeue();
+
+ switch (state) {
+ case 0: // start state, no bytes pending
+ if (b != '=') {
+ byteq.enqueue(b);
+ break; // state remains 0
+ } else {
+ state = 1;
+ break;
+ }
+ case 1: // encountered "=" so far
+ if (b == '\r') {
+ state = 2;
+ break;
+ } else if ((b >= '0' && b <= '9') || (b >= 'A' && b <= 'F') || (b >= 'a' && b <= 'f')) {
+ state = 3;
+ msdChar = b; // save until next digit encountered
+ break;
+ } else if (b == '=') {
+ /*
+ * Special case when == is encountered.
+ * Emit one = and stay in this state.
+ */
+ if (log.isWarnEnabled()) {
+ log.warn("Malformed MIME; got ==");
+ }
+ byteq.enqueue((byte)'=');
+ break;
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Malformed MIME; expected \\r or "
+ + "[0-9A-Z], got " + b);
+ }
+ state = 0;
+ byteq.enqueue((byte)'=');
+ byteq.enqueue(b);
+ break;
+ }
+ case 2: // encountered "=\r" so far
+ if (b == '\n') {
+ state = 0;
+ break;
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Malformed MIME; expected "
+ + (int)'\n' + ", got " + b);
+ }
+ state = 0;
+ byteq.enqueue((byte)'=');
+ byteq.enqueue((byte)'\r');
+ byteq.enqueue(b);
+ break;
+ }
+ case 3: // encountered =<digit> so far; expecting another <digit> to complete the octet
+ if ((b >= '0' && b <= '9') || (b >= 'A' && b <= 'F') || (b >= 'a' && b <= 'f')) {
+ byte msd = asciiCharToNumericValue(msdChar);
+ byte low = asciiCharToNumericValue(b);
+ state = 0;
+ byteq.enqueue((byte)((msd << 4) | low));
+ break;
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Malformed MIME; expected "
+ + "[0-9A-Z], got " + b);
+ }
+ state = 0;
+ byteq.enqueue((byte)'=');
+ byteq.enqueue(msdChar);
+ byteq.enqueue(b);
+ break;
+ }
+ default: // should never happen
+ log.error("Illegal state: " + state);
+ state = 0;
+ byteq.enqueue(b);
+ break;
+ }
+ }
+ }
+
+ /**
+ * Converts '0' => 0, 'A' => 10, etc.
+ * @param c ASCII character value.
+ * @return Numeric value of hexadecimal character.
+ */
+ private byte asciiCharToNumericValue(byte c) {
+ if (c >= '0' && c <= '9') {
+ return (byte)(c - '0');
+ } else if (c >= 'A' && c <= 'Z') {
+ return (byte)(0xA + (c - 'A'));
+ } else if (c >= 'a' && c <= 'z') {
+ return (byte)(0xA + (c - 'a'));
+ } else {
+ /*
+ * This should never happen since all calls to this method
+ * are preceded by a check that c is in [0-9A-Za-z]
+ */
+ throw new IllegalArgumentException((char) c
+ + " is not a hexadecimal digit");
+ }
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java b/src/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java
new file mode 100644
index 0000000..f01194f
--- /dev/null
+++ b/src/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java
@@ -0,0 +1,272 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.decoder;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * UnboundedFifoByteBuffer is a very efficient buffer implementation.
+ * According to performance testing, it exhibits a constant access time, but it
+ * also outperforms ArrayList when used for the same purpose.
+ * <p>
+ * The removal order of an <code>UnboundedFifoByteBuffer</code> is based on the insertion
+ * order; elements are removed in the same order in which they were added.
+ * The iteration order is the same as the removal order.
+ * <p>
+ * The {@link #remove()} and {@link #get()} operations perform in constant time.
+ * The {@link #add(Object)} operation performs in amortized constant time. All
+ * other operations perform in linear time or worse.
+ * <p>
+ * Note that this implementation is not synchronized. The following can be
+ * used to provide synchronized access to your <code>UnboundedFifoByteBuffer</code>:
+ * <pre>
+ * Buffer fifo = BufferUtils.synchronizedBuffer(new UnboundedFifoByteBuffer());
+ * </pre>
+ * <p>
+ * This buffer prevents null objects from being added.
+ *
+ * @since Commons Collections 3.0 (previously in main package v2.1)
+ * @version $Revision: 1.1 $ $Date: 2004/08/24 06:52:02 $
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+class UnboundedFifoByteBuffer {
+
+ protected byte[] buffer;
+ protected int head;
+ protected int tail;
+
+ /**
+ * Constructs an UnboundedFifoByteBuffer with the default number of elements.
+ * It is exactly the same as performing the following:
+ *
+ * <pre>
+ * new UnboundedFifoByteBuffer(32);
+ * </pre>
+ */
+ public UnboundedFifoByteBuffer() {
+ this(32);
+ }
+
+ /**
+ * Constructs an UnboundedFifoByteBuffer with the specified number of elements.
+ * The integer must be a positive integer.
+ *
+ * @param initialSize the initial size of the buffer
+ * @throws IllegalArgumentException if the size is less than 1
+ */
+ public UnboundedFifoByteBuffer(int initialSize) {
+ if (initialSize <= 0) {
+ throw new IllegalArgumentException("The size must be greater than 0");
+ }
+ buffer = new byte[initialSize + 1];
+ head = 0;
+ tail = 0;
+ }
+
+ /**
+ * Returns the number of elements stored in the buffer.
+ *
+ * @return this buffer's size
+ */
+ public int size() {
+ int size = 0;
+
+ if (tail < head) {
+ size = buffer.length - head + tail;
+ } else {
+ size = tail - head;
+ }
+
+ return size;
+ }
+
+ /**
+ * Returns true if this buffer is empty; false otherwise.
+ *
+ * @return true if this buffer is empty
+ */
+ public boolean isEmpty() {
+ return (size() == 0);
+ }
+
+ /**
+ * Adds the given element to this buffer.
+ *
+ * @param b the byte to add
+ * @return true, always
+ */
+ public boolean add(final byte b) {
+
+ if (size() + 1 >= buffer.length) {
+ byte[] tmp = new byte[((buffer.length - 1) * 2) + 1];
+
+ int j = 0;
+ for (int i = head; i != tail;) {
+ tmp[j] = buffer[i];
+ buffer[i] = 0;
+
+ j++;
+ i++;
+ if (i == buffer.length) {
+ i = 0;
+ }
+ }
+
+ buffer = tmp;
+ head = 0;
+ tail = j;
+ }
+
+ buffer[tail] = b;
+ tail++;
+ if (tail >= buffer.length) {
+ tail = 0;
+ }
+ return true;
+ }
+
+ /**
+ * Returns the next object in the buffer.
+ *
+ * @return the next object in the buffer
+ * @throws BufferUnderflowException if this buffer is empty
+ */
+ public byte get() {
+ if (isEmpty()) {
+ throw new IllegalStateException("The buffer is already empty");
+ }
+
+ return buffer[head];
+ }
+
+ /**
+ * Removes the next object from the buffer
+ *
+ * @return the removed object
+ * @throws BufferUnderflowException if this buffer is empty
+ */
+ public byte remove() {
+ if (isEmpty()) {
+ throw new IllegalStateException("The buffer is already empty");
+ }
+
+ byte element = buffer[head];
+
+ head++;
+ if (head >= buffer.length) {
+ head = 0;
+ }
+
+ return element;
+ }
+
+ /**
+ * Increments the internal index.
+ *
+ * @param index the index to increment
+ * @return the updated index
+ */
+ private int increment(int index) {
+ index++;
+ if (index >= buffer.length) {
+ index = 0;
+ }
+ return index;
+ }
+
+ /**
+ * Decrements the internal index.
+ *
+ * @param index the index to decrement
+ * @return the updated index
+ */
+ private int decrement(int index) {
+ index--;
+ if (index < 0) {
+ index = buffer.length - 1;
+ }
+ return index;
+ }
+
+ /**
+ * Returns an iterator over this buffer's elements.
+ *
+ * @return an iterator over this buffer's elements
+ */
+ public Iterator iterator() {
+ return new Iterator() {
+
+ private int index = head;
+ private int lastReturnedIndex = -1;
+
+ public boolean hasNext() {
+ return index != tail;
+
+ }
+
+ public Object next() {
+ if (!hasNext()) {
+ throw new NoSuchElementException();
+ }
+ lastReturnedIndex = index;
+ index = increment(index);
+ return new Byte(buffer[lastReturnedIndex]);
+ }
+
+ public void remove() {
+ if (lastReturnedIndex == -1) {
+ throw new IllegalStateException();
+ }
+
+ // First element can be removed quickly
+ if (lastReturnedIndex == head) {
+ UnboundedFifoByteBuffer.this.remove();
+ lastReturnedIndex = -1;
+ return;
+ }
+
+ // Other elements require us to shift the subsequent elements
+ int i = lastReturnedIndex + 1;
+ while (i != tail) {
+ if (i >= buffer.length) {
+ buffer[i - 1] = buffer[0];
+ i = 0;
+ } else {
+ buffer[i - 1] = buffer[i];
+ i++;
+ }
+ }
+
+ lastReturnedIndex = -1;
+ tail = decrement(tail);
+ buffer[tail] = 0;
+ index = decrement(index);
+ }
+
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/field/AddressListField.java b/src/org/apache/james/mime4j/field/AddressListField.java
new file mode 100644
index 0000000..df9f398
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/AddressListField.java
@@ -0,0 +1,65 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+//BEGIN android-changed: Stubbing out logging
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END android-changed
+import org.apache.james.mime4j.field.address.AddressList;
+import org.apache.james.mime4j.field.address.parser.ParseException;
+
+public class AddressListField extends Field {
+ private AddressList addressList;
+ private ParseException parseException;
+
+ protected AddressListField(String name, String body, String raw, AddressList addressList, ParseException parseException) {
+ super(name, body, raw);
+ this.addressList = addressList;
+ this.parseException = parseException;
+ }
+
+ public AddressList getAddressList() {
+ return addressList;
+ }
+
+ public ParseException getParseException() {
+ return parseException;
+ }
+
+ public static class Parser implements FieldParser {
+ private static Log log = LogFactory.getLog(Parser.class);
+
+ public Field parse(final String name, final String body, final String raw) {
+ AddressList addressList = null;
+ ParseException parseException = null;
+ try {
+ addressList = AddressList.parse(body);
+ }
+ catch (ParseException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parsing value '" + body + "': "+ e.getMessage());
+ }
+ parseException = e;
+ }
+ return new AddressListField(name, body, raw, addressList, parseException);
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/ContentTransferEncodingField.java b/src/org/apache/james/mime4j/field/ContentTransferEncodingField.java
new file mode 100644
index 0000000..73d8d23
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/ContentTransferEncodingField.java
@@ -0,0 +1,88 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+
+
+/**
+ * Represents a <code>Content-Transfer-Encoding</code> field.
+ *
+ *
+ * @version $Id: ContentTransferEncodingField.java,v 1.2 2004/10/02 12:41:11 ntherning Exp $
+ */
+public class ContentTransferEncodingField extends Field {
+ /**
+ * The <code>7bit</code> encoding.
+ */
+ public static final String ENC_7BIT = "7bit";
+ /**
+ * The <code>8bit</code> encoding.
+ */
+ public static final String ENC_8BIT = "8bit";
+ /**
+ * The <code>binary</code> encoding.
+ */
+ public static final String ENC_BINARY = "binary";
+ /**
+ * The <code>quoted-printable</code> encoding.
+ */
+ public static final String ENC_QUOTED_PRINTABLE = "quoted-printable";
+ /**
+ * The <code>base64</code> encoding.
+ */
+ public static final String ENC_BASE64 = "base64";
+
+ private String encoding;
+
+ protected ContentTransferEncodingField(String name, String body, String raw, String encoding) {
+ super(name, body, raw);
+ this.encoding = encoding;
+ }
+
+ /**
+ * Gets the encoding defined in this field.
+ *
+ * @return the encoding or an empty string if not set.
+ */
+ public String getEncoding() {
+ return encoding;
+ }
+
+ /**
+ * Gets the encoding of the given field if. Returns the default
+ * <code>7bit</code> if not set or if
+ * <code>f</code> is <code>null</code>.
+ *
+ * @return the encoding.
+ */
+ public static String getEncoding(ContentTransferEncodingField f) {
+ if (f != null && f.getEncoding().length() != 0) {
+ return f.getEncoding();
+ }
+ return ENC_7BIT;
+ }
+
+ public static class Parser implements FieldParser {
+ public Field parse(final String name, final String body, final String raw) {
+ final String encoding = body.trim().toLowerCase();
+ return new ContentTransferEncodingField(name, body, raw, encoding);
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/ContentTypeField.java b/src/org/apache/james/mime4j/field/ContentTypeField.java
new file mode 100644
index 0000000..ad9f7f9
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/ContentTypeField.java
@@ -0,0 +1,259 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+//BEGIN android-changed: Stubbing out logging
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END android-changed
+import org.apache.james.mime4j.field.contenttype.parser.ContentTypeParser;
+import org.apache.james.mime4j.field.contenttype.parser.ParseException;
+import org.apache.james.mime4j.field.contenttype.parser.TokenMgrError;
+
+/**
+ * Represents a <code>Content-Type</code> field.
+ *
+ * <p>TODO: Remove dependency on Java 1.4 regexps</p>
+ *
+ *
+ * @version $Id: ContentTypeField.java,v 1.6 2005/01/27 14:16:31 ntherning Exp $
+ */
+public class ContentTypeField extends Field {
+
+ /**
+ * The prefix of all <code>multipart</code> MIME types.
+ */
+ public static final String TYPE_MULTIPART_PREFIX = "multipart/";
+ /**
+ * The <code>multipart/digest</code> MIME type.
+ */
+ public static final String TYPE_MULTIPART_DIGEST = "multipart/digest";
+ /**
+ * The <code>text/plain</code> MIME type.
+ */
+ public static final String TYPE_TEXT_PLAIN = "text/plain";
+ /**
+ * The <code>message/rfc822</code> MIME type.
+ */
+ public static final String TYPE_MESSAGE_RFC822 = "message/rfc822";
+ /**
+ * The name of the <code>boundary</code> parameter.
+ */
+ public static final String PARAM_BOUNDARY = "boundary";
+ /**
+ * The name of the <code>charset</code> parameter.
+ */
+ public static final String PARAM_CHARSET = "charset";
+
+ private String mimeType = "";
+ private Map<String, String> parameters = null;
+ private ParseException parseException;
+
+ protected ContentTypeField(String name, String body, String raw, String mimeType, Map<String, String> parameters, ParseException parseException) {
+ super(name, body, raw);
+ this.mimeType = mimeType;
+ this.parameters = parameters;
+ this.parseException = parseException;
+ }
+
+ /**
+ * Gets the exception that was raised during parsing of
+ * the field value, if any; otherwise, null.
+ */
+ public ParseException getParseException() {
+ return parseException;
+ }
+
+ /**
+ * Gets the MIME type defined in this Content-Type field.
+ *
+ * @return the MIME type or an empty string if not set.
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Gets the MIME type defined in the child's
+ * Content-Type field or derives a MIME type from the parent
+ * if child is <code>null</code> or hasn't got a MIME type value set.
+ * If child's MIME type is multipart but no boundary
+ * has been set the MIME type of child will be derived from
+ * the parent.
+ *
+ * @param child the child.
+ * @param parent the parent.
+ * @return the MIME type.
+ */
+ public static String getMimeType(ContentTypeField child,
+ ContentTypeField parent) {
+
+ if (child == null || child.getMimeType().length() == 0
+ || child.isMultipart() && child.getBoundary() == null) {
+
+ if (parent != null && parent.isMimeType(TYPE_MULTIPART_DIGEST)) {
+ return TYPE_MESSAGE_RFC822;
+ } else {
+ return TYPE_TEXT_PLAIN;
+ }
+ }
+
+ return child.getMimeType();
+ }
+
+ /**
+ * Gets the value of a parameter. Parameter names are case-insensitive.
+ *
+ * @param name the name of the parameter to get.
+ * @return the parameter value or <code>null</code> if not set.
+ */
+ public String getParameter(String name) {
+ return parameters != null
+ ? parameters.get(name.toLowerCase())
+ : null;
+ }
+
+ /**
+ * Gets all parameters.
+ *
+ * @return the parameters.
+ */
+ public Map<String, String> getParameters() {
+ if (parameters != null) {
+ return Collections.unmodifiableMap(parameters);
+ }
+ return Collections.emptyMap();
+ }
+
+ /**
+ * Gets the value of the <code>boundary</code> parameter if set.
+ *
+ * @return the <code>boundary</code> parameter value or <code>null</code>
+ * if not set.
+ */
+ public String getBoundary() {
+ return getParameter(PARAM_BOUNDARY);
+ }
+
+ /**
+ * Gets the value of the <code>charset</code> parameter if set.
+ *
+ * @return the <code>charset</code> parameter value or <code>null</code>
+ * if not set.
+ */
+ public String getCharset() {
+ return getParameter(PARAM_CHARSET);
+ }
+
+ /**
+ * Gets the value of the <code>charset</code> parameter if set for the
+ * given field. Returns the default <code>us-ascii</code> if not set or if
+ * <code>f</code> is <code>null</code>.
+ *
+ * @return the <code>charset</code> parameter value.
+ */
+ public static String getCharset(ContentTypeField f) {
+ if (f != null) {
+ if (f.getCharset() != null && f.getCharset().length() > 0) {
+ return f.getCharset();
+ }
+ }
+ return "us-ascii";
+ }
+
+ /**
+ * Determines if the MIME type of this field matches the given one.
+ *
+ * @param mimeType the MIME type to match against.
+ * @return <code>true</code> if the MIME type of this field matches,
+ * <code>false</code> otherwise.
+ */
+ public boolean isMimeType(String mimeType) {
+ return this.mimeType.equalsIgnoreCase(mimeType);
+ }
+
+ /**
+ * Determines if the MIME type of this field is <code>multipart/*</code>.
+ *
+ * @return <code>true</code> if this field is has a <code>multipart/*</code>
+ * MIME type, <code>false</code> otherwise.
+ */
+ public boolean isMultipart() {
+ return mimeType.startsWith(TYPE_MULTIPART_PREFIX);
+ }
+
+ public static class Parser implements FieldParser {
+ private static Log log = LogFactory.getLog(Parser.class);
+
+ public Field parse(final String name, final String body, final String raw) {
+ ParseException parseException = null;
+ String mimeType = "";
+ Map<String, String> parameters = null;
+
+ ContentTypeParser parser = new ContentTypeParser(new StringReader(body));
+ try {
+ parser.parseAll();
+ }
+ catch (ParseException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parsing value '" + body + "': "+ e.getMessage());
+ }
+ parseException = e;
+ }
+ catch (TokenMgrError e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parsing value '" + body + "': "+ e.getMessage());
+ }
+ parseException = new ParseException(e.getMessage());
+ }
+
+ try {
+ final String type = parser.getType();
+ final String subType = parser.getSubType();
+
+ if (type != null && subType != null) {
+ mimeType = (type + "/" + parser.getSubType()).toLowerCase();
+
+ ArrayList<String> paramNames = parser.getParamNames();
+ ArrayList<String> paramValues = parser.getParamValues();
+
+ if (paramNames != null && paramValues != null) {
+ for (int i = 0; i < paramNames.size() && i < paramValues.size(); i++) {
+ if (parameters == null)
+ parameters = new HashMap<String, String>((int)(paramNames.size() * 1.3 + 1));
+ String paramName = paramNames.get(i).toLowerCase();
+ String paramValue = paramValues.get(i);
+ parameters.put(paramName, paramValue);
+ }
+ }
+ }
+ }
+ catch (NullPointerException npe) {
+ }
+ return new ContentTypeField(name, body, raw, mimeType, parameters, parseException);
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/DateTimeField.java b/src/org/apache/james/mime4j/field/DateTimeField.java
new file mode 100644
index 0000000..5215534
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/DateTimeField.java
@@ -0,0 +1,73 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+//BEGIN android-changed: Stubbing out logging
+
+import com.android.phone.common.mail.utils.LogUtils;
+
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END
+import org.apache.james.mime4j.field.datetime.DateTime;
+import org.apache.james.mime4j.field.datetime.parser.ParseException;
+
+import java.util.Date;
+
+public class DateTimeField extends Field {
+ private Date date;
+ private ParseException parseException;
+
+ protected DateTimeField(String name, String body, String raw, Date date, ParseException parseException) {
+ super(name, body, raw);
+ this.date = date;
+ this.parseException = parseException;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public ParseException getParseException() {
+ return parseException;
+ }
+
+ public static class Parser implements FieldParser {
+ private static Log log = LogFactory.getLog(Parser.class);
+
+ public Field parse(final String name, String body, final String raw) {
+ Date date = null;
+ ParseException parseException = null;
+ //BEGIN android-changed
+ body = LogUtils.cleanUpMimeDate(body);
+ //END android-changed
+ try {
+ date = DateTime.parse(body).getDate();
+ }
+ catch (ParseException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parsing value '" + body + "': "+ e.getMessage());
+ }
+ parseException = e;
+ }
+ return new DateTimeField(name, body, raw, date, parseException);
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/DefaultFieldParser.java b/src/org/apache/james/mime4j/field/DefaultFieldParser.java
new file mode 100644
index 0000000..3695afe
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/DefaultFieldParser.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2006 the mime4j 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 org.apache.james.mime4j.field;
+
+public class DefaultFieldParser extends DelegatingFieldParser {
+
+ public DefaultFieldParser() {
+ setFieldParser(Field.CONTENT_TRANSFER_ENCODING, new ContentTransferEncodingField.Parser());
+ setFieldParser(Field.CONTENT_TYPE, new ContentTypeField.Parser());
+
+ final DateTimeField.Parser dateTimeParser = new DateTimeField.Parser();
+ setFieldParser(Field.DATE, dateTimeParser);
+ setFieldParser(Field.RESENT_DATE, dateTimeParser);
+
+ final MailboxListField.Parser mailboxListParser = new MailboxListField.Parser();
+ setFieldParser(Field.FROM, mailboxListParser);
+ setFieldParser(Field.RESENT_FROM, mailboxListParser);
+
+ final MailboxField.Parser mailboxParser = new MailboxField.Parser();
+ setFieldParser(Field.SENDER, mailboxParser);
+ setFieldParser(Field.RESENT_SENDER, mailboxParser);
+
+ final AddressListField.Parser addressListParser = new AddressListField.Parser();
+ setFieldParser(Field.TO, addressListParser);
+ setFieldParser(Field.RESENT_TO, addressListParser);
+ setFieldParser(Field.CC, addressListParser);
+ setFieldParser(Field.RESENT_CC, addressListParser);
+ setFieldParser(Field.BCC, addressListParser);
+ setFieldParser(Field.RESENT_BCC, addressListParser);
+ setFieldParser(Field.REPLY_TO, addressListParser);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/DelegatingFieldParser.java b/src/org/apache/james/mime4j/field/DelegatingFieldParser.java
new file mode 100644
index 0000000..32b69ec
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/DelegatingFieldParser.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2006 the mime4j 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 org.apache.james.mime4j.field;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class DelegatingFieldParser implements FieldParser {
+
+ private Map<String, FieldParser> parsers = new HashMap<String, FieldParser>();
+ private FieldParser defaultParser = new UnstructuredField.Parser();
+
+ /**
+ * Sets the parser used for the field named <code>name</code>.
+ * @param name the name of the field
+ * @param parser the parser for fields named <code>name</code>
+ */
+ public void setFieldParser(final String name, final FieldParser parser) {
+ parsers.put(name.toLowerCase(), parser);
+ }
+
+ public FieldParser getParser(final String name) {
+ final FieldParser field = parsers.get(name.toLowerCase());
+ if(field==null) {
+ return defaultParser;
+ }
+ return field;
+ }
+
+ public Field parse(final String name, final String body, final String raw) {
+ final FieldParser parser = getParser(name);
+ return parser.parse(name, body, raw);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/Field.java b/src/org/apache/james/mime4j/field/Field.java
new file mode 100644
index 0000000..4dea5c5
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/Field.java
@@ -0,0 +1,192 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * The base class of all field classes.
+ *
+ *
+ * @version $Id: Field.java,v 1.6 2004/10/25 07:26:46 ntherning Exp $
+ */
+public abstract class Field {
+ public static final String SENDER = "Sender";
+ public static final String FROM = "From";
+ public static final String TO = "To";
+ public static final String CC = "Cc";
+ public static final String BCC = "Bcc";
+ public static final String REPLY_TO = "Reply-To";
+ public static final String RESENT_SENDER = "Resent-Sender";
+ public static final String RESENT_FROM = "Resent-From";
+ public static final String RESENT_TO = "Resent-To";
+ public static final String RESENT_CC = "Resent-Cc";
+ public static final String RESENT_BCC = "Resent-Bcc";
+
+ public static final String DATE = "Date";
+ public static final String RESENT_DATE = "Resent-Date";
+
+ public static final String SUBJECT = "Subject";
+ public static final String CONTENT_TYPE = "Content-Type";
+ public static final String CONTENT_TRANSFER_ENCODING =
+ "Content-Transfer-Encoding";
+
+ private static final String FIELD_NAME_PATTERN =
+ "^([\\x21-\\x39\\x3b-\\x7e]+)[ \t]*:";
+ private static final Pattern fieldNamePattern =
+ Pattern.compile(FIELD_NAME_PATTERN);
+
+ private static final DefaultFieldParser parser = new DefaultFieldParser();
+
+ private final String name;
+ private final String body;
+ private final String raw;
+
+ protected Field(final String name, final String body, final String raw) {
+ this.name = name;
+ this.body = body;
+ this.raw = raw;
+ }
+
+ /**
+ * Parses the given string and returns an instance of the
+ * <code>Field</code> class. The type of the class returned depends on
+ * the field name:
+ * <table>
+ * <tr>
+ * <td><em>Field name</em></td><td><em>Class returned</em></td>
+ * <td>Content-Type</td><td>org.apache.james.mime4j.field.ContentTypeField</td>
+ * <td>other</td><td>org.apache.james.mime4j.field.UnstructuredField</td>
+ * </tr>
+ * </table>
+ *
+ * @param s the string to parse.
+ * @return a <code>Field</code> instance.
+ * @throws IllegalArgumentException on parse errors.
+ */
+ public static Field parse(final String raw) {
+
+ /*
+ * Unfold the field.
+ */
+ final String unfolded = raw.replaceAll("\r|\n", "");
+
+ /*
+ * Split into name and value.
+ */
+ final Matcher fieldMatcher = fieldNamePattern.matcher(unfolded);
+ if (!fieldMatcher.find()) {
+ throw new IllegalArgumentException("Invalid field in string");
+ }
+ final String name = fieldMatcher.group(1);
+
+ String body = unfolded.substring(fieldMatcher.end());
+ if (body.length() > 0 && body.charAt(0) == ' ') {
+ body = body.substring(1);
+ }
+
+ return parser.parse(name, body, raw);
+ }
+
+ /**
+ * Gets the default parser used to parse fields.
+ * @return the default field parser
+ */
+ public static DefaultFieldParser getParser() {
+ return parser;
+ }
+
+ /**
+ * Gets the name of the field (<code>Subject</code>,
+ * <code>From</code>, etc).
+ *
+ * @return the field name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Gets the original raw field string.
+ *
+ * @return the original raw field string.
+ */
+ public String getRaw() {
+ return raw;
+ }
+
+ /**
+ * Gets the unfolded, unparsed and possibly encoded (see RFC 2047) field
+ * body string.
+ *
+ * @return the unfolded unparsed field body string.
+ */
+ public String getBody() {
+ return body;
+ }
+
+ /**
+ * Determines if this is a <code>Content-Type</code> field.
+ *
+ * @return <code>true</code> if this is a <code>Content-Type</code> field,
+ * <code>false</code> otherwise.
+ */
+ public boolean isContentType() {
+ return CONTENT_TYPE.equalsIgnoreCase(name);
+ }
+
+ /**
+ * Determines if this is a <code>Subject</code> field.
+ *
+ * @return <code>true</code> if this is a <code>Subject</code> field,
+ * <code>false</code> otherwise.
+ */
+ public boolean isSubject() {
+ return SUBJECT.equalsIgnoreCase(name);
+ }
+
+ /**
+ * Determines if this is a <code>From</code> field.
+ *
+ * @return <code>true</code> if this is a <code>From</code> field,
+ * <code>false</code> otherwise.
+ */
+ public boolean isFrom() {
+ return FROM.equalsIgnoreCase(name);
+ }
+
+ /**
+ * Determines if this is a <code>To</code> field.
+ *
+ * @return <code>true</code> if this is a <code>To</code> field,
+ * <code>false</code> otherwise.
+ */
+ public boolean isTo() {
+ return TO.equalsIgnoreCase(name);
+ }
+
+ /**
+ * @see #getRaw()
+ */
+ public String toString() {
+ return raw;
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/FieldParser.java b/src/org/apache/james/mime4j/field/FieldParser.java
new file mode 100644
index 0000000..78aaf13
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/FieldParser.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2006 the mime4j 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 org.apache.james.mime4j.field;
+
+public interface FieldParser {
+
+ Field parse(final String name, final String body, final String raw);
+}
diff --git a/src/org/apache/james/mime4j/field/MailboxField.java b/src/org/apache/james/mime4j/field/MailboxField.java
new file mode 100644
index 0000000..f159800
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/MailboxField.java
@@ -0,0 +1,70 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+//BEGIN android-changed: Stubbing out logging
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END android-changed
+import org.apache.james.mime4j.field.address.AddressList;
+import org.apache.james.mime4j.field.address.Mailbox;
+import org.apache.james.mime4j.field.address.MailboxList;
+import org.apache.james.mime4j.field.address.parser.ParseException;
+
+public class MailboxField extends Field {
+ private final Mailbox mailbox;
+ private final ParseException parseException;
+
+ protected MailboxField(final String name, final String body, final String raw, final Mailbox mailbox, final ParseException parseException) {
+ super(name, body, raw);
+ this.mailbox = mailbox;
+ this.parseException = parseException;
+ }
+
+ public Mailbox getMailbox() {
+ return mailbox;
+ }
+
+ public ParseException getParseException() {
+ return parseException;
+ }
+
+ public static class Parser implements FieldParser {
+ private static Log log = LogFactory.getLog(Parser.class);
+
+ public Field parse(final String name, final String body, final String raw) {
+ Mailbox mailbox = null;
+ ParseException parseException = null;
+ try {
+ MailboxList mailboxList = AddressList.parse(body).flatten();
+ if (mailboxList.size() > 0) {
+ mailbox = mailboxList.get(0);
+ }
+ }
+ catch (ParseException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parsing value '" + body + "': "+ e.getMessage());
+ }
+ parseException = e;
+ }
+ return new MailboxField(name, body, raw, mailbox, parseException);
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/MailboxListField.java b/src/org/apache/james/mime4j/field/MailboxListField.java
new file mode 100644
index 0000000..23378d4
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/MailboxListField.java
@@ -0,0 +1,67 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+//BEGIN android-changed: Stubbing out logging
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END android-changed
+import org.apache.james.mime4j.field.address.AddressList;
+import org.apache.james.mime4j.field.address.MailboxList;
+import org.apache.james.mime4j.field.address.parser.ParseException;
+
+public class MailboxListField extends Field {
+
+ private MailboxList mailboxList;
+ private ParseException parseException;
+
+ protected MailboxListField(final String name, final String body, final String raw, final MailboxList mailboxList, final ParseException parseException) {
+ super(name, body, raw);
+ this.mailboxList = mailboxList;
+ this.parseException = parseException;
+ }
+
+ public MailboxList getMailboxList() {
+ return mailboxList;
+ }
+
+ public ParseException getParseException() {
+ return parseException;
+ }
+
+ public static class Parser implements FieldParser {
+ private static Log log = LogFactory.getLog(Parser.class);
+
+ public Field parse(final String name, final String body, final String raw) {
+ MailboxList mailboxList = null;
+ ParseException parseException = null;
+ try {
+ mailboxList = AddressList.parse(body).flatten();
+ }
+ catch (ParseException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Parsing value '" + body + "': "+ e.getMessage());
+ }
+ parseException = e;
+ }
+ return new MailboxListField(name, body, raw, mailboxList, parseException);
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/UnstructuredField.java b/src/org/apache/james/mime4j/field/UnstructuredField.java
new file mode 100644
index 0000000..6084e44
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/UnstructuredField.java
@@ -0,0 +1,49 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field;
+
+import org.apache.james.mime4j.decoder.DecoderUtil;
+
+
+/**
+ * Simple unstructured field such as <code>Subject</code>.
+ *
+ *
+ * @version $Id: UnstructuredField.java,v 1.3 2004/10/25 07:26:46 ntherning Exp $
+ */
+public class UnstructuredField extends Field {
+ private String value;
+
+ protected UnstructuredField(String name, String body, String raw, String value) {
+ super(name, body, raw);
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public static class Parser implements FieldParser {
+ public Field parse(final String name, final String body, final String raw) {
+ final String value = DecoderUtil.decodeEncodedWords(body);
+ return new UnstructuredField(name, body, raw, value);
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/Address.java b/src/org/apache/james/mime4j/field/address/Address.java
new file mode 100644
index 0000000..3e24e91
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/Address.java
@@ -0,0 +1,52 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+import java.util.ArrayList;
+
+/**
+ * The abstract base for classes that represent RFC2822 addresses.
+ * This includes groups and mailboxes.
+ *
+ * Currently, no public methods are introduced on this class.
+ *
+ *
+ */
+public abstract class Address {
+
+ /**
+ * Adds any mailboxes represented by this address
+ * into the given ArrayList. Note that this method
+ * has default (package) access, so a doAddMailboxesTo
+ * method is needed to allow the behavior to be
+ * overridden by subclasses.
+ */
+ final void addMailboxesTo(ArrayList<Address> results) {
+ doAddMailboxesTo(results);
+ }
+
+ /**
+ * Adds any mailboxes represented by this address
+ * into the given ArrayList. Must be overridden by
+ * concrete subclasses.
+ */
+ protected abstract void doAddMailboxesTo(ArrayList<Address> results);
+
+}
diff --git a/src/org/apache/james/mime4j/field/address/AddressList.java b/src/org/apache/james/mime4j/field/address/AddressList.java
new file mode 100644
index 0000000..1829e79
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/AddressList.java
@@ -0,0 +1,138 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+import org.apache.james.mime4j.field.address.parser.AddressListParser;
+import org.apache.james.mime4j.field.address.parser.ParseException;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+
+/**
+ * An immutable, random-access list of Address objects.
+ *
+ *
+ */
+public class AddressList {
+
+ private ArrayList<Address> addresses;
+
+ /**
+ * @param addresses An ArrayList that contains only Address objects.
+ * @param dontCopy true iff it is not possible for the addresses ArrayList to be modified by someone else.
+ */
+ public AddressList(ArrayList<Address> addresses, boolean dontCopy) {
+ if (addresses != null)
+ this.addresses = (dontCopy ? addresses : new ArrayList<Address>(addresses));
+ else
+ this.addresses = new ArrayList<Address>(0);
+ }
+
+ /**
+ * The number of elements in this list.
+ */
+ public int size() {
+ return addresses.size();
+ }
+
+ /**
+ * Gets an address.
+ */
+ public Address get(int index) {
+ if (0 > index || size() <= index)
+ throw new IndexOutOfBoundsException();
+ return addresses.get(index);
+ }
+
+ /**
+ * Returns a flat list of all mailboxes represented
+ * in this address list. Use this if you don't care
+ * about grouping.
+ */
+ public MailboxList flatten() {
+ // in the common case, all addresses are mailboxes
+ boolean groupDetected = false;
+ for (int i = 0; i < size(); i++) {
+ if (!(get(i) instanceof Mailbox)) {
+ groupDetected = true;
+ break;
+ }
+ }
+
+ if (!groupDetected)
+ return new MailboxList(addresses, true);
+
+ ArrayList<Address> results = new ArrayList<Address>();
+ for (int i = 0; i < size(); i++) {
+ Address addr = get(i);
+ addr.addMailboxesTo(results);
+ }
+
+ // copy-on-construct this time, because subclasses
+ // could have held onto a reference to the results
+ return new MailboxList(results, false);
+ }
+
+ /**
+ * Dumps a representation of this address list to
+ * stdout, for debugging purposes.
+ */
+ public void print() {
+ for (int i = 0; i < size(); i++) {
+ Address addr = get(i);
+ System.out.println(addr.toString());
+ }
+ }
+
+ /**
+ * Parse the address list string, such as the value
+ * of a From, To, Cc, Bcc, Sender, or Reply-To
+ * header.
+ *
+ * The string MUST be unfolded already.
+ */
+ public static AddressList parse(String rawAddressList) throws ParseException {
+ AddressListParser parser = new AddressListParser(new StringReader(rawAddressList));
+ return Builder.getInstance().buildAddressList(parser.parse());
+ }
+
+ /**
+ * Test console.
+ */
+ public static void main(String[] args) throws Exception {
+ java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
+ while (true) {
+ try {
+ System.out.print("> ");
+ String line = reader.readLine();
+ if (line.length() == 0 || line.toLowerCase().equals("exit") || line.toLowerCase().equals("quit")) {
+ System.out.println("Goodbye.");
+ return;
+ }
+ AddressList list = parse(line);
+ list.print();
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ Thread.sleep(300);
+ }
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/Builder.java b/src/org/apache/james/mime4j/field/address/Builder.java
new file mode 100644
index 0000000..3bcd15b
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/Builder.java
@@ -0,0 +1,243 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.apache.james.mime4j.decoder.DecoderUtil;
+import org.apache.james.mime4j.field.address.parser.ASTaddr_spec;
+import org.apache.james.mime4j.field.address.parser.ASTaddress;
+import org.apache.james.mime4j.field.address.parser.ASTaddress_list;
+import org.apache.james.mime4j.field.address.parser.ASTangle_addr;
+import org.apache.james.mime4j.field.address.parser.ASTdomain;
+import org.apache.james.mime4j.field.address.parser.ASTgroup_body;
+import org.apache.james.mime4j.field.address.parser.ASTlocal_part;
+import org.apache.james.mime4j.field.address.parser.ASTmailbox;
+import org.apache.james.mime4j.field.address.parser.ASTname_addr;
+import org.apache.james.mime4j.field.address.parser.ASTphrase;
+import org.apache.james.mime4j.field.address.parser.ASTroute;
+import org.apache.james.mime4j.field.address.parser.Node;
+import org.apache.james.mime4j.field.address.parser.SimpleNode;
+import org.apache.james.mime4j.field.address.parser.Token;
+
+/**
+ * Transforms the JJTree-generated abstract syntax tree
+ * into a graph of org.apache.james.mime4j.field.address objects.
+ *
+ *
+ */
+class Builder {
+
+ private static Builder singleton = new Builder();
+
+ public static Builder getInstance() {
+ return singleton;
+ }
+
+
+
+ public AddressList buildAddressList(ASTaddress_list node) {
+ ArrayList<Address> list = new ArrayList<Address>();
+ for (int i = 0; i < node.jjtGetNumChildren(); i++) {
+ ASTaddress childNode = (ASTaddress) node.jjtGetChild(i);
+ Address address = buildAddress(childNode);
+ list.add(address);
+ }
+ return new AddressList(list, true);
+ }
+
+ private Address buildAddress(ASTaddress node) {
+ ChildNodeIterator it = new ChildNodeIterator(node);
+ Node n = it.nextNode();
+ if (n instanceof ASTaddr_spec) {
+ return buildAddrSpec((ASTaddr_spec)n);
+ }
+ else if (n instanceof ASTangle_addr) {
+ return buildAngleAddr((ASTangle_addr)n);
+ }
+ else if (n instanceof ASTphrase) {
+ String name = buildString((ASTphrase)n, false);
+ Node n2 = it.nextNode();
+ if (n2 instanceof ASTgroup_body) {
+ return new Group(name, buildGroupBody((ASTgroup_body)n2));
+ }
+ else if (n2 instanceof ASTangle_addr) {
+ name = DecoderUtil.decodeEncodedWords(name);
+ return new NamedMailbox(name, buildAngleAddr((ASTangle_addr)n2));
+ }
+ else {
+ throw new IllegalStateException();
+ }
+ }
+ else {
+ throw new IllegalStateException();
+ }
+ }
+
+
+
+ private MailboxList buildGroupBody(ASTgroup_body node) {
+ ArrayList<Address> results = new ArrayList<Address>();
+ ChildNodeIterator it = new ChildNodeIterator(node);
+ while (it.hasNext()) {
+ Node n = it.nextNode();
+ if (n instanceof ASTmailbox)
+ results.add(buildMailbox((ASTmailbox)n));
+ else
+ throw new IllegalStateException();
+ }
+ return new MailboxList(results, true);
+ }
+
+ private Mailbox buildMailbox(ASTmailbox node) {
+ ChildNodeIterator it = new ChildNodeIterator(node);
+ Node n = it.nextNode();
+ if (n instanceof ASTaddr_spec) {
+ return buildAddrSpec((ASTaddr_spec)n);
+ }
+ else if (n instanceof ASTangle_addr) {
+ return buildAngleAddr((ASTangle_addr)n);
+ }
+ else if (n instanceof ASTname_addr) {
+ return buildNameAddr((ASTname_addr)n);
+ }
+ else {
+ throw new IllegalStateException();
+ }
+ }
+
+ private NamedMailbox buildNameAddr(ASTname_addr node) {
+ ChildNodeIterator it = new ChildNodeIterator(node);
+ Node n = it.nextNode();
+ String name;
+ if (n instanceof ASTphrase) {
+ name = buildString((ASTphrase)n, false);
+ }
+ else {
+ throw new IllegalStateException();
+ }
+
+ n = it.nextNode();
+ if (n instanceof ASTangle_addr) {
+ name = DecoderUtil.decodeEncodedWords(name);
+ return new NamedMailbox(name, buildAngleAddr((ASTangle_addr) n));
+ }
+ else {
+ throw new IllegalStateException();
+ }
+ }
+
+ private Mailbox buildAngleAddr(ASTangle_addr node) {
+ ChildNodeIterator it = new ChildNodeIterator(node);
+ DomainList route = null;
+ Node n = it.nextNode();
+ if (n instanceof ASTroute) {
+ route = buildRoute((ASTroute)n);
+ n = it.nextNode();
+ }
+ else if (n instanceof ASTaddr_spec)
+ ; // do nothing
+ else
+ throw new IllegalStateException();
+
+ if (n instanceof ASTaddr_spec)
+ return buildAddrSpec(route, (ASTaddr_spec)n);
+ else
+ throw new IllegalStateException();
+ }
+
+ private DomainList buildRoute(ASTroute node) {
+ ArrayList<String> results = new ArrayList<String>(node.jjtGetNumChildren());
+ ChildNodeIterator it = new ChildNodeIterator(node);
+ while (it.hasNext()) {
+ Node n = it.nextNode();
+ if (n instanceof ASTdomain)
+ results.add(buildString((ASTdomain)n, true));
+ else
+ throw new IllegalStateException();
+ }
+ return new DomainList(results, true);
+ }
+
+ private Mailbox buildAddrSpec(ASTaddr_spec node) {
+ return buildAddrSpec(null, node);
+ }
+ private Mailbox buildAddrSpec(DomainList route, ASTaddr_spec node) {
+ ChildNodeIterator it = new ChildNodeIterator(node);
+ String localPart = buildString((ASTlocal_part)it.nextNode(), true);
+ String domain = buildString((ASTdomain)it.nextNode(), true);
+ return new Mailbox(route, localPart, domain);
+ }
+
+
+ private String buildString(SimpleNode node, boolean stripSpaces) {
+ Token head = node.firstToken;
+ Token tail = node.lastToken;
+ StringBuffer out = new StringBuffer();
+
+ while (head != tail) {
+ out.append(head.image);
+ head = head.next;
+ if (!stripSpaces)
+ addSpecials(out, head.specialToken);
+ }
+ out.append(tail.image);
+
+ return out.toString();
+ }
+
+ private void addSpecials(StringBuffer out, Token specialToken) {
+ if (specialToken != null) {
+ addSpecials(out, specialToken.specialToken);
+ out.append(specialToken.image);
+ }
+ }
+
+ private static class ChildNodeIterator implements Iterator<Node> {
+
+ private SimpleNode simpleNode;
+ private int index;
+ private int len;
+
+ public ChildNodeIterator(SimpleNode simpleNode) {
+ this.simpleNode = simpleNode;
+ this.len = simpleNode.jjtGetNumChildren();
+ this.index = 0;
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean hasNext() {
+ return index < len;
+ }
+
+ public Node next() {
+ return nextNode();
+ }
+
+ public Node nextNode() {
+ return simpleNode.jjtGetChild(index++);
+ }
+
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/DomainList.java b/src/org/apache/james/mime4j/field/address/DomainList.java
new file mode 100644
index 0000000..49b0f3b
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/DomainList.java
@@ -0,0 +1,76 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+import java.util.ArrayList;
+
+/**
+ * An immutable, random-access list of Strings (that
+ * are supposedly domain names or domain literals).
+ *
+ *
+ */
+public class DomainList {
+ private ArrayList<String> domains;
+
+ /**
+ * @param domains An ArrayList that contains only String objects.
+ * @param dontCopy true iff it is not possible for the domains ArrayList to be modified by someone else.
+ */
+ public DomainList(ArrayList<String> domains, boolean dontCopy) {
+ if (domains != null)
+ this.domains = (dontCopy ? domains : new ArrayList<String>(domains));
+ else
+ this.domains = new ArrayList<String>(0);
+ }
+
+ /**
+ * The number of elements in this list.
+ */
+ public int size() {
+ return domains.size();
+ }
+
+ /**
+ * Gets the domain name or domain literal at the
+ * specified index.
+ * @throws IndexOutOfBoundsException If index is < 0 or >= size().
+ */
+ public String get(int index) {
+ if (0 > index || size() <= index)
+ throw new IndexOutOfBoundsException();
+ return domains.get(index);
+ }
+
+ /**
+ * Returns the list of domains formatted as a route
+ * string (not including the trailing ':').
+ */
+ public String toRouteString() {
+ StringBuffer out = new StringBuffer();
+ for (int i = 0; i < domains.size(); i++) {
+ out.append("@");
+ out.append(get(i));
+ if (i + 1 < domains.size())
+ out.append(",");
+ }
+ return out.toString();
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/Group.java b/src/org/apache/james/mime4j/field/address/Group.java
new file mode 100644
index 0000000..c0ab7f7
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/Group.java
@@ -0,0 +1,75 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+import java.util.ArrayList;
+
+/**
+ * A named group of zero or more mailboxes.
+ *
+ *
+ */
+public class Group extends Address {
+ private String name;
+ private MailboxList mailboxList;
+
+ /**
+ * @param name The group name.
+ * @param mailboxes The mailboxes in this group.
+ */
+ public Group(String name, MailboxList mailboxes) {
+ this.name = name;
+ this.mailboxList = mailboxes;
+ }
+
+ /**
+ * Returns the group name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Returns the mailboxes in this group.
+ */
+ public MailboxList getMailboxes() {
+ return mailboxList;
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+ buf.append(name);
+ buf.append(":");
+ for (int i = 0; i < mailboxList.size(); i++) {
+ buf.append(mailboxList.get(i).toString());
+ if (i + 1 < mailboxList.size())
+ buf.append(",");
+ }
+ buf.append(";");
+ return buf.toString();
+ }
+
+ @Override
+ protected void doAddMailboxesTo(ArrayList<Address> results) {
+ for (int i = 0; i < mailboxList.size(); i++)
+ results.add(mailboxList.get(i));
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/Mailbox.java b/src/org/apache/james/mime4j/field/address/Mailbox.java
new file mode 100644
index 0000000..25f2548
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/Mailbox.java
@@ -0,0 +1,121 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+import java.util.ArrayList;
+
+/**
+ * Represents a single e-mail address.
+ *
+ *
+ */
+public class Mailbox extends Address {
+ private DomainList route;
+ private String localPart;
+ private String domain;
+
+ /**
+ * Creates a mailbox without a route. Routes are obsolete.
+ * @param localPart The part of the e-mail address to the left of the "@".
+ * @param domain The part of the e-mail address to the right of the "@".
+ */
+ public Mailbox(String localPart, String domain) {
+ this(null, localPart, domain);
+ }
+
+ /**
+ * Creates a mailbox with a route. Routes are obsolete.
+ * @param route The zero or more domains that make up the route. Can be null.
+ * @param localPart The part of the e-mail address to the left of the "@".
+ * @param domain The part of the e-mail address to the right of the "@".
+ */
+ public Mailbox(DomainList route, String localPart, String domain) {
+ this.route = route;
+ this.localPart = localPart;
+ this.domain = domain;
+ }
+
+ /**
+ * Returns the route list.
+ */
+ public DomainList getRoute() {
+ return route;
+ }
+
+ /**
+ * Returns the left part of the e-mail address
+ * (before "@").
+ */
+ public String getLocalPart() {
+ return localPart;
+ }
+
+ /**
+ * Returns the right part of the e-mail address
+ * (after "@").
+ */
+ public String getDomain() {
+ return domain;
+ }
+
+ /**
+ * Formats the address as a string, not including
+ * the route.
+ *
+ * @see #getAddressString(boolean)
+ */
+ public String getAddressString() {
+ return getAddressString(false);
+ }
+
+ /**
+ * Note that this value may not be usable
+ * for transport purposes, only display purposes.
+ *
+ * For example, if the unparsed address was
+ *
+ * <"Joe Cheng"@joecheng.com>
+ *
+ * this method would return
+ *
+ * <Joe Cheng@joecheng.com>
+ *
+ * which is not valid for transport; the local part
+ * would need to be re-quoted.
+ *
+ * @param includeRoute true if the route should be included if it exists.
+ */
+ public String getAddressString(boolean includeRoute) {
+ return "<" + (!includeRoute || route == null ? "" : route.toRouteString() + ":")
+ + localPart
+ + (domain == null ? "" : "@")
+ + domain + ">";
+ }
+
+ @Override
+ protected final void doAddMailboxesTo(ArrayList<Address> results) {
+ results.add(this);
+ }
+
+ @Override
+ public String toString() {
+ return getAddressString();
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/MailboxList.java b/src/org/apache/james/mime4j/field/address/MailboxList.java
new file mode 100644
index 0000000..2c9efb3
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/MailboxList.java
@@ -0,0 +1,71 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+import java.util.ArrayList;
+
+/**
+ * An immutable, random-access list of Mailbox objects.
+ *
+ *
+ */
+public class MailboxList {
+
+ private ArrayList<Address> mailboxes;
+
+ /**
+ * @param mailboxes An ArrayList that contains only Mailbox objects.
+ * @param dontCopy true iff it is not possible for the mailboxes ArrayList to be modified by someone else.
+ */
+ public MailboxList(ArrayList<Address> mailboxes, boolean dontCopy) {
+ if (mailboxes != null)
+ this.mailboxes = (dontCopy ? mailboxes : new ArrayList<Address>(mailboxes));
+ else
+ this.mailboxes = new ArrayList<Address>(0);
+ }
+
+ /**
+ * The number of elements in this list.
+ */
+ public int size() {
+ return mailboxes.size();
+ }
+
+ /**
+ * Gets an address.
+ */
+ public Mailbox get(int index) {
+ if (0 > index || size() <= index)
+ throw new IndexOutOfBoundsException();
+ return (Mailbox)mailboxes.get(index);
+ }
+
+ /**
+ * Dumps a representation of this mailbox list to
+ * stdout, for debugging purposes.
+ */
+ public void print() {
+ for (int i = 0; i < size(); i++) {
+ Mailbox mailbox = get(i);
+ System.out.println(mailbox.toString());
+ }
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/address/NamedMailbox.java b/src/org/apache/james/mime4j/field/address/NamedMailbox.java
new file mode 100644
index 0000000..4b83060
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/NamedMailbox.java
@@ -0,0 +1,71 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address;
+
+/**
+ * A Mailbox that has a name/description.
+ *
+ *
+ */
+public class NamedMailbox extends Mailbox {
+ private String name;
+
+ /**
+ * @see Mailbox#Mailbox(String, String)
+ */
+ public NamedMailbox(String name, String localPart, String domain) {
+ super(localPart, domain);
+ this.name = name;
+ }
+
+ /**
+ * @see Mailbox#Mailbox(DomainList, String, String)
+ */
+ public NamedMailbox(String name, DomainList route, String localPart, String domain) {
+ super(route, localPart, domain);
+ this.name = name;
+ }
+
+ /**
+ * Creates a named mailbox based on an unnamed mailbox.
+ */
+ public NamedMailbox(String name, Mailbox baseMailbox) {
+ super(baseMailbox.getRoute(), baseMailbox.getLocalPart(), baseMailbox.getDomain());
+ this.name = name;
+ }
+
+ /**
+ * Returns the name of the mailbox.
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * Same features (or problems) as Mailbox.getAddressString(boolean),
+ * only more so.
+ *
+ * @see Mailbox#getAddressString(boolean)
+ */
+ @Override
+ public String getAddressString(boolean includeRoute) {
+ return (name == null ? "" : name + " ") + super.getAddressString(includeRoute);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java b/src/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java
new file mode 100644
index 0000000..4d56d00
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTaddr_spec.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTaddr_spec extends SimpleNode {
+ public ASTaddr_spec(int id) {
+ super(id);
+ }
+
+ public ASTaddr_spec(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTaddress.java b/src/org/apache/james/mime4j/field/address/parser/ASTaddress.java
new file mode 100644
index 0000000..47bdeda
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTaddress.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTaddress.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTaddress extends SimpleNode {
+ public ASTaddress(int id) {
+ super(id);
+ }
+
+ public ASTaddress(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java b/src/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java
new file mode 100644
index 0000000..737840e
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTaddress_list.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTaddress_list extends SimpleNode {
+ public ASTaddress_list(int id) {
+ super(id);
+ }
+
+ public ASTaddress_list(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java b/src/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java
new file mode 100644
index 0000000..8cb8f42
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTangle_addr.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTangle_addr extends SimpleNode {
+ public ASTangle_addr(int id) {
+ super(id);
+ }
+
+ public ASTangle_addr(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTdomain.java b/src/org/apache/james/mime4j/field/address/parser/ASTdomain.java
new file mode 100644
index 0000000..b526643
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTdomain.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTdomain.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTdomain extends SimpleNode {
+ public ASTdomain(int id) {
+ super(id);
+ }
+
+ public ASTdomain(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java b/src/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java
new file mode 100644
index 0000000..f6017b9
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTgroup_body.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTgroup_body extends SimpleNode {
+ public ASTgroup_body(int id) {
+ super(id);
+ }
+
+ public ASTgroup_body(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java b/src/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java
new file mode 100644
index 0000000..5c244fa
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTlocal_part.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTlocal_part extends SimpleNode {
+ public ASTlocal_part(int id) {
+ super(id);
+ }
+
+ public ASTlocal_part(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTmailbox.java b/src/org/apache/james/mime4j/field/address/parser/ASTmailbox.java
new file mode 100644
index 0000000..aeb469d
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTmailbox.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTmailbox.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTmailbox extends SimpleNode {
+ public ASTmailbox(int id) {
+ super(id);
+ }
+
+ public ASTmailbox(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTname_addr.java b/src/org/apache/james/mime4j/field/address/parser/ASTname_addr.java
new file mode 100644
index 0000000..846c731
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTname_addr.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTname_addr.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTname_addr extends SimpleNode {
+ public ASTname_addr(int id) {
+ super(id);
+ }
+
+ public ASTname_addr(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTphrase.java b/src/org/apache/james/mime4j/field/address/parser/ASTphrase.java
new file mode 100644
index 0000000..7d711c5
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTphrase.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTphrase.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTphrase extends SimpleNode {
+ public ASTphrase(int id) {
+ super(id);
+ }
+
+ public ASTphrase(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTroute.java b/src/org/apache/james/mime4j/field/address/parser/ASTroute.java
new file mode 100644
index 0000000..54ea115
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ASTroute.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. ASTroute.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class ASTroute extends SimpleNode {
+ public ASTroute(int id) {
+ super(id);
+ }
+
+ public ASTroute(AddressListParser p, int id) {
+ super(p, id);
+ }
+
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParser.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParser.java
new file mode 100644
index 0000000..8094df0
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/AddressListParser.java
@@ -0,0 +1,977 @@
+/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParser.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+public class AddressListParser/*@bgen(jjtree)*/implements AddressListParserTreeConstants, AddressListParserConstants {/*@bgen(jjtree)*/
+ protected JJTAddressListParserState jjtree = new JJTAddressListParserState();public static void main(String args[]) throws ParseException {
+ while (true) {
+ try {
+ AddressListParser parser = new AddressListParser(System.in);
+ parser.parseLine();
+ ((SimpleNode)parser.jjtree.rootNode()).dump("> ");
+ } catch (Exception x) {
+ x.printStackTrace();
+ return;
+ }
+ }
+ }
+
+ private static void log(String msg) {
+ System.out.print(msg);
+ }
+
+ public ASTaddress_list parse() throws ParseException {
+ try {
+ parseAll();
+ return (ASTaddress_list)jjtree.rootNode();
+ } catch (TokenMgrError tme) {
+ throw new ParseException(tme.getMessage());
+ }
+ }
+
+
+ void jjtreeOpenNodeScope(Node n) {
+ ((SimpleNode)n).firstToken = getToken(1);
+ }
+
+ void jjtreeCloseNodeScope(Node n) {
+ ((SimpleNode)n).lastToken = getToken(0);
+ }
+
+ final public void parseLine() throws ParseException {
+ address_list();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 1:
+ jj_consume_token(1);
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ ;
+ }
+ jj_consume_token(2);
+ }
+
+ final public void parseAll() throws ParseException {
+ address_list();
+ jj_consume_token(0);
+ }
+
+ final public void address_list() throws ParseException {
+ /*@bgen(jjtree) address_list */
+ ASTaddress_list jjtn000 = new ASTaddress_list(JJTADDRESS_LIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 6:
+ case DOTATOM:
+ case QUOTEDSTRING:
+ address();
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ ;
+ }
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 3:
+ ;
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ break label_1;
+ }
+ jj_consume_token(3);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 6:
+ case DOTATOM:
+ case QUOTEDSTRING:
+ address();
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ ;
+ }
+ }
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void address() throws ParseException {
+ /*@bgen(jjtree) address */
+ ASTaddress jjtn000 = new ASTaddress(JJTADDRESS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ if (jj_2_1(2147483647)) {
+ addr_spec();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 6:
+ angle_addr();
+ break;
+ case DOTATOM:
+ case QUOTEDSTRING:
+ phrase();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 4:
+ group_body();
+ break;
+ case 6:
+ angle_addr();
+ break;
+ default:
+ jj_la1[4] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[5] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void mailbox() throws ParseException {
+ /*@bgen(jjtree) mailbox */
+ ASTmailbox jjtn000 = new ASTmailbox(JJTMAILBOX);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ if (jj_2_2(2147483647)) {
+ addr_spec();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 6:
+ angle_addr();
+ break;
+ case DOTATOM:
+ case QUOTEDSTRING:
+ name_addr();
+ break;
+ default:
+ jj_la1[6] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void name_addr() throws ParseException {
+ /*@bgen(jjtree) name_addr */
+ ASTname_addr jjtn000 = new ASTname_addr(JJTNAME_ADDR);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ phrase();
+ angle_addr();
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void group_body() throws ParseException {
+ /*@bgen(jjtree) group_body */
+ ASTgroup_body jjtn000 = new ASTgroup_body(JJTGROUP_BODY);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ jj_consume_token(4);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 6:
+ case DOTATOM:
+ case QUOTEDSTRING:
+ mailbox();
+ break;
+ default:
+ jj_la1[7] = jj_gen;
+ ;
+ }
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 3:
+ ;
+ break;
+ default:
+ jj_la1[8] = jj_gen;
+ break label_2;
+ }
+ jj_consume_token(3);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 6:
+ case DOTATOM:
+ case QUOTEDSTRING:
+ mailbox();
+ break;
+ default:
+ jj_la1[9] = jj_gen;
+ ;
+ }
+ }
+ jj_consume_token(5);
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void angle_addr() throws ParseException {
+ /*@bgen(jjtree) angle_addr */
+ ASTangle_addr jjtn000 = new ASTangle_addr(JJTANGLE_ADDR);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ jj_consume_token(6);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 8:
+ route();
+ break;
+ default:
+ jj_la1[10] = jj_gen;
+ ;
+ }
+ addr_spec();
+ jj_consume_token(7);
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void route() throws ParseException {
+ /*@bgen(jjtree) route */
+ ASTroute jjtn000 = new ASTroute(JJTROUTE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ jj_consume_token(8);
+ domain();
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 3:
+ case 8:
+ ;
+ break;
+ default:
+ jj_la1[11] = jj_gen;
+ break label_3;
+ }
+ label_4:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 3:
+ ;
+ break;
+ default:
+ jj_la1[12] = jj_gen;
+ break label_4;
+ }
+ jj_consume_token(3);
+ }
+ jj_consume_token(8);
+ domain();
+ }
+ jj_consume_token(4);
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void phrase() throws ParseException {
+ /*@bgen(jjtree) phrase */
+ ASTphrase jjtn000 = new ASTphrase(JJTPHRASE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ label_5:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOTATOM:
+ jj_consume_token(DOTATOM);
+ break;
+ case QUOTEDSTRING:
+ jj_consume_token(QUOTEDSTRING);
+ break;
+ default:
+ jj_la1[13] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOTATOM:
+ case QUOTEDSTRING:
+ ;
+ break;
+ default:
+ jj_la1[14] = jj_gen;
+ break label_5;
+ }
+ }
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void addr_spec() throws ParseException {
+ /*@bgen(jjtree) addr_spec */
+ ASTaddr_spec jjtn000 = new ASTaddr_spec(JJTADDR_SPEC);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+ try {
+ local_part();
+ jj_consume_token(8);
+ domain();
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void local_part() throws ParseException {
+ /*@bgen(jjtree) local_part */
+ ASTlocal_part jjtn000 = new ASTlocal_part(JJTLOCAL_PART);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);Token t;
+ try {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOTATOM:
+ t = jj_consume_token(DOTATOM);
+ break;
+ case QUOTEDSTRING:
+ t = jj_consume_token(QUOTEDSTRING);
+ break;
+ default:
+ jj_la1[15] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ label_6:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 9:
+ case DOTATOM:
+ case QUOTEDSTRING:
+ ;
+ break;
+ default:
+ jj_la1[16] = jj_gen;
+ break label_6;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 9:
+ t = jj_consume_token(9);
+ break;
+ default:
+ jj_la1[17] = jj_gen;
+ ;
+ }
+ if (t.image.charAt(t.image.length() - 1) != '.' || t.kind == AddressListParserConstants.QUOTEDSTRING)
+ {if (true) throw new ParseException("Words in local part must be separated by '.'");}
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOTATOM:
+ t = jj_consume_token(DOTATOM);
+ break;
+ case QUOTEDSTRING:
+ t = jj_consume_token(QUOTEDSTRING);
+ break;
+ default:
+ jj_la1[18] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final public void domain() throws ParseException {
+ /*@bgen(jjtree) domain */
+ ASTdomain jjtn000 = new ASTdomain(JJTDOMAIN);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);Token t;
+ try {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOTATOM:
+ t = jj_consume_token(DOTATOM);
+ label_7:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 9:
+ case DOTATOM:
+ ;
+ break;
+ default:
+ jj_la1[19] = jj_gen;
+ break label_7;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 9:
+ t = jj_consume_token(9);
+ break;
+ default:
+ jj_la1[20] = jj_gen;
+ ;
+ }
+ if (t.image.charAt(t.image.length() - 1) != '.')
+ {if (true) throw new ParseException("Atoms in domain names must be separated by '.'");}
+ t = jj_consume_token(DOTATOM);
+ }
+ break;
+ case DOMAINLITERAL:
+ jj_consume_token(DOMAINLITERAL);
+ break;
+ default:
+ jj_la1[21] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+ }
+
+ final private boolean jj_2_1(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(0, xla); }
+ }
+
+ final private boolean jj_2_2(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_2(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1, xla); }
+ }
+
+ final private boolean jj_3R_11() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(9)) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(14)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(31)) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_13() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(9)) jj_scanpos = xsp;
+ if (jj_scan_token(DOTATOM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_8() {
+ if (jj_3R_9()) return true;
+ if (jj_scan_token(8)) return true;
+ if (jj_3R_10()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1() {
+ if (jj_3R_8()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_12() {
+ if (jj_scan_token(DOTATOM)) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_13()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_10() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_12()) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(18)) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_2() {
+ if (jj_3R_8()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_9() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(14)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(31)) return true;
+ }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_11()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ public AddressListParserTokenManager token_source;
+ SimpleCharStream jj_input_stream;
+ public Token token, jj_nt;
+ private int jj_ntk;
+ private Token jj_scanpos, jj_lastpos;
+ private int jj_la;
+ public boolean lookingAhead = false;
+ private boolean jj_semLA;
+ private int jj_gen;
+ final private int[] jj_la1 = new int[22];
+ static private int[] jj_la1_0;
+ static private int[] jj_la1_1;
+ static {
+ jj_la1_0();
+ jj_la1_1();
+ }
+ private static void jj_la1_0() {
+ jj_la1_0 = new int[] {0x2,0x80004040,0x8,0x80004040,0x50,0x80004040,0x80004040,0x80004040,0x8,0x80004040,0x100,0x108,0x8,0x80004000,0x80004000,0x80004000,0x80004200,0x200,0x80004000,0x4200,0x200,0x44000,};
+ }
+ private static void jj_la1_1() {
+ jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ }
+ final private JJCalls[] jj_2_rtns = new JJCalls[2];
+ private boolean jj_rescan = false;
+ private int jj_gc = 0;
+
+ public AddressListParser(java.io.InputStream stream) {
+ this(stream, null);
+ }
+ public AddressListParser(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source = new AddressListParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 22; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public void ReInit(java.io.InputStream stream) {
+ ReInit(stream, null);
+ }
+ public void ReInit(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jjtree.reset();
+ jj_gen = 0;
+ for (int i = 0; i < 22; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public AddressListParser(java.io.Reader stream) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new AddressListParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 22; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jjtree.reset();
+ jj_gen = 0;
+ for (int i = 0; i < 22; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public AddressListParser(AddressListParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 22; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public void ReInit(AddressListParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jjtree.reset();
+ jj_gen = 0;
+ for (int i = 0; i < 22; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ final private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ jj_gen++;
+ if (++jj_gc > 100) {
+ jj_gc = 0;
+ for (int i = 0; i < jj_2_rtns.length; i++) {
+ JJCalls c = jj_2_rtns[i];
+ while (c != null) {
+ if (c.gen < jj_gen) c.first = null;
+ c = c.next;
+ }
+ }
+ }
+ return token;
+ }
+ token = oldToken;
+ jj_kind = kind;
+ throw generateParseException();
+ }
+
+ static private final class LookaheadSuccess extends java.lang.Error { }
+ final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+ final private boolean jj_scan_token(int kind) {
+ if (jj_scanpos == jj_lastpos) {
+ jj_la--;
+ if (jj_scanpos.next == null) {
+ jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+ } else {
+ jj_lastpos = jj_scanpos = jj_scanpos.next;
+ }
+ } else {
+ jj_scanpos = jj_scanpos.next;
+ }
+ if (jj_rescan) {
+ int i = 0; Token tok = token;
+ while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+ if (tok != null) jj_add_error_token(kind, i);
+ }
+ if (jj_scanpos.kind != kind) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+ return false;
+ }
+
+ final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ jj_gen++;
+ return token;
+ }
+
+ final public Token getToken(int index) {
+ Token t = lookingAhead ? jj_scanpos : token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ final private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ private java.util.Vector<int[]> jj_expentries = new java.util.Vector<int[]>();
+ private int[] jj_expentry;
+ private int jj_kind = -1;
+ private int[] jj_lasttokens = new int[100];
+ private int jj_endpos;
+
+ private void jj_add_error_token(int kind, int pos) {
+ if (pos >= 100) return;
+ if (pos == jj_endpos + 1) {
+ jj_lasttokens[jj_endpos++] = kind;
+ } else if (jj_endpos != 0) {
+ jj_expentry = new int[jj_endpos];
+ for (int i = 0; i < jj_endpos; i++) {
+ jj_expentry[i] = jj_lasttokens[i];
+ }
+ boolean exists = false;
+ for (java.util.Enumeration<int[]> e = jj_expentries.elements(); e.hasMoreElements();) {
+ int[] oldentry = e.nextElement();
+ if (oldentry.length == jj_expentry.length) {
+ exists = true;
+ for (int i = 0; i < jj_expentry.length; i++) {
+ if (oldentry[i] != jj_expentry[i]) {
+ exists = false;
+ break;
+ }
+ }
+ if (exists) break;
+ }
+ }
+ if (!exists) jj_expentries.addElement(jj_expentry);
+ if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+ }
+ }
+
+ public ParseException generateParseException() {
+ jj_expentries.removeAllElements();
+ boolean[] la1tokens = new boolean[34];
+ for (int i = 0; i < 34; i++) {
+ la1tokens[i] = false;
+ }
+ if (jj_kind >= 0) {
+ la1tokens[jj_kind] = true;
+ jj_kind = -1;
+ }
+ for (int i = 0; i < 22; i++) {
+ if (jj_la1[i] == jj_gen) {
+ for (int j = 0; j < 32; j++) {
+ if ((jj_la1_0[i] & (1<<j)) != 0) {
+ la1tokens[j] = true;
+ }
+ if ((jj_la1_1[i] & (1<<j)) != 0) {
+ la1tokens[32+j] = true;
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 34; i++) {
+ if (la1tokens[i]) {
+ jj_expentry = new int[1];
+ jj_expentry[0] = i;
+ jj_expentries.addElement(jj_expentry);
+ }
+ }
+ jj_endpos = 0;
+ jj_rescan_token();
+ jj_add_error_token(0, 0);
+ int[][] exptokseq = new int[jj_expentries.size()][];
+ for (int i = 0; i < jj_expentries.size(); i++) {
+ exptokseq[i] = jj_expentries.elementAt(i);
+ }
+ return new ParseException(token, exptokseq, tokenImage);
+ }
+
+ final public void enable_tracing() {
+ }
+
+ final public void disable_tracing() {
+ }
+
+ final private void jj_rescan_token() {
+ jj_rescan = true;
+ for (int i = 0; i < 2; i++) {
+ try {
+ JJCalls p = jj_2_rtns[i];
+ do {
+ if (p.gen > jj_gen) {
+ jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+ switch (i) {
+ case 0: jj_3_1(); break;
+ case 1: jj_3_2(); break;
+ }
+ }
+ p = p.next;
+ } while (p != null);
+ } catch(LookaheadSuccess ls) { }
+ }
+ jj_rescan = false;
+ }
+
+ final private void jj_save(int index, int xla) {
+ JJCalls p = jj_2_rtns[index];
+ while (p.gen > jj_gen) {
+ if (p.next == null) { p = p.next = new JJCalls(); break; }
+ p = p.next;
+ }
+ p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+ }
+
+ static final class JJCalls {
+ int gen;
+ Token first;
+ int arg;
+ JJCalls next;
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParser.jj b/src/org/apache/james/mime4j/field/address/parser/AddressListParser.jj
new file mode 100644
index 0000000..c14277b
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/AddressListParser.jj
@@ -0,0 +1,595 @@
+/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParser.jj */
+/*@egen*//****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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. *
+ ****************************************************************/
+
+
+/**
+ * RFC2822 address list parser.
+ *
+ * Created 9/17/2004
+ * by Joe Cheng <code@joecheng.com>
+ */
+
+options {
+ STATIC=false;
+ LOOKAHEAD=1;
+ //DEBUG_PARSER=true;
+ //DEBUG_TOKEN_MANAGER=true;
+}
+
+PARSER_BEGIN(AddressListParser)
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+public class AddressListParser/*@bgen(jjtree)*/implements AddressListParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
+ protected JJTAddressListParserState jjtree = new JJTAddressListParserState();
+
+/*@egen*/
+ public static void main(String args[]) throws ParseException {
+ while (true) {
+ try {
+ AddressListParser parser = new AddressListParser(System.in);
+ parser.parseLine();
+ ((SimpleNode)parser.jjtree.rootNode()).dump("> ");
+ } catch (Exception x) {
+ x.printStackTrace();
+ return;
+ }
+ }
+ }
+
+ private static void log(String msg) {
+ System.out.print(msg);
+ }
+
+ public ASTaddress_list parse() throws ParseException {
+ try {
+ parseAll();
+ return (ASTaddress_list)jjtree.rootNode();
+ } catch (TokenMgrError tme) {
+ throw new ParseException(tme.getMessage());
+ }
+ }
+
+
+ void jjtreeOpenNodeScope(Node n) {
+ ((SimpleNode)n).firstToken = getToken(1);
+ }
+
+ void jjtreeCloseNodeScope(Node n) {
+ ((SimpleNode)n).lastToken = getToken(0);
+ }
+}
+
+PARSER_END(AddressListParser)
+
+void parseLine() :
+{}
+{
+ address_list() ["\r"] "\n"
+}
+
+void parseAll() :
+{}
+{
+ address_list() <EOF>
+}
+
+void address_list() :
+{/*@bgen(jjtree) address_list */
+ ASTaddress_list jjtn000 = new ASTaddress_list(JJTADDRESS_LIST);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) address_list */
+ try {
+/*@egen*/
+ [ address() ]
+ (
+ ","
+ [ address() ]
+ )*/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void address() :
+{/*@bgen(jjtree) address */
+ ASTaddress jjtn000 = new ASTaddress(JJTADDRESS);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) address */
+ try {
+/*@egen*/
+ LOOKAHEAD(2147483647)
+ addr_spec()
+| angle_addr()
+| ( phrase() (group_body() | angle_addr()) )/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void mailbox() :
+{/*@bgen(jjtree) mailbox */
+ ASTmailbox jjtn000 = new ASTmailbox(JJTMAILBOX);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) mailbox */
+ try {
+/*@egen*/
+ LOOKAHEAD(2147483647)
+ addr_spec()
+| angle_addr()
+| name_addr()/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void name_addr() :
+{/*@bgen(jjtree) name_addr */
+ ASTname_addr jjtn000 = new ASTname_addr(JJTNAME_ADDR);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) name_addr */
+ try {
+/*@egen*/
+ phrase() angle_addr()/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void group_body() :
+{/*@bgen(jjtree) group_body */
+ ASTgroup_body jjtn000 = new ASTgroup_body(JJTGROUP_BODY);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) group_body */
+ try {
+/*@egen*/
+ ":"
+ [ mailbox() ]
+ (
+ ","
+ [ mailbox() ]
+ )*
+ ";"/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void angle_addr() :
+{/*@bgen(jjtree) angle_addr */
+ ASTangle_addr jjtn000 = new ASTangle_addr(JJTANGLE_ADDR);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) angle_addr */
+ try {
+/*@egen*/
+ "<" [ route() ] addr_spec() ">"/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void route() :
+{/*@bgen(jjtree) route */
+ ASTroute jjtn000 = new ASTroute(JJTROUTE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) route */
+ try {
+/*@egen*/
+ "@" domain() ( (",")* "@" domain() )* ":"/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void phrase() :
+{/*@bgen(jjtree) phrase */
+ ASTphrase jjtn000 = new ASTphrase(JJTPHRASE);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) phrase */
+try {
+/*@egen*/
+( <DOTATOM>
+| <QUOTEDSTRING>
+)+/*@bgen(jjtree)*/
+} finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+}
+/*@egen*/
+}
+
+void addr_spec() :
+{/*@bgen(jjtree) addr_spec */
+ ASTaddr_spec jjtn000 = new ASTaddr_spec(JJTADDR_SPEC);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) addr_spec */
+ try {
+/*@egen*/
+ ( local_part() "@" domain() )/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void local_part() :
+{/*@bgen(jjtree) local_part */
+ ASTlocal_part jjtn000 = new ASTlocal_part(JJTLOCAL_PART);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/ Token t; }
+{/*@bgen(jjtree) local_part */
+ try {
+/*@egen*/
+ ( t=<DOTATOM> | t=<QUOTEDSTRING> )
+ ( [t="."]
+ {
+ if (t.image.charAt(t.image.length() - 1) != '.' || t.kind == AddressListParserConstants.QUOTEDSTRING)
+ throw new ParseException("Words in local part must be separated by '.'");
+ }
+ ( t=<DOTATOM> | t=<QUOTEDSTRING> )
+ )*/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+void domain() :
+{/*@bgen(jjtree) domain */
+ ASTdomain jjtn000 = new ASTdomain(JJTDOMAIN);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ jjtreeOpenNodeScope(jjtn000);
+/*@egen*/ Token t; }
+{/*@bgen(jjtree) domain */
+ try {
+/*@egen*/
+ ( t=<DOTATOM>
+ ( [t="."]
+ {
+ if (t.image.charAt(t.image.length() - 1) != '.')
+ throw new ParseException("Atoms in domain names must be separated by '.'");
+ }
+ t=<DOTATOM>
+ )*
+ )
+| <DOMAINLITERAL>/*@bgen(jjtree)*/
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtreeCloseNodeScope(jjtn000);
+ }
+ }
+/*@egen*/
+}
+
+SPECIAL_TOKEN :
+{
+ < WS: ( [" ", "\t"] )+ >
+}
+
+TOKEN :
+{
+ < #ALPHA: ["a" - "z", "A" - "Z"] >
+| < #DIGIT: ["0" - "9"] >
+| < #ATEXT: ( <ALPHA> | <DIGIT>
+ | "!" | "#" | "$" | "%"
+ | "&" | "'" | "*" | "+"
+ | "-" | "/" | "=" | "?"
+ | "^" | "_" | "`" | "{"
+ | "|" | "}" | "~"
+ )>
+| < DOTATOM: <ATEXT> ( <ATEXT> | "." )* >
+}
+
+TOKEN_MGR_DECLS :
+{
+ // Keeps track of how many levels of comment nesting
+ // we've encountered. This is only used when the 2nd
+ // level is reached, for example ((this)), not (this).
+ // This is because the outermost level must be treated
+ // specially anyway, because the outermost ")" has a
+ // different token type than inner ")" instances.
+ static int commentNest;
+}
+
+MORE :
+{
+ // domain literal
+ "[" : INDOMAINLITERAL
+}
+
+<INDOMAINLITERAL>
+MORE :
+{
+ < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
+| < ~["[", "]", "\\"] >
+}
+
+<INDOMAINLITERAL>
+TOKEN :
+{
+ < DOMAINLITERAL: "]" > { matchedToken.image = image.toString(); }: DEFAULT
+}
+
+MORE :
+{
+ // starts a comment
+ "(" : INCOMMENT
+}
+
+<INCOMMENT>
+SKIP :
+{
+ // ends a comment
+ < COMMENT: ")" > : DEFAULT
+ // if this is ever changed to not be a SKIP, need
+ // to make sure matchedToken.token = token.toString()
+ // is called.
+}
+
+<INCOMMENT>
+MORE :
+{
+ < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
+| "(" { commentNest = 1; } : NESTED_COMMENT
+| < <ANY>>
+}
+
+<NESTED_COMMENT>
+MORE :
+{
+ < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
+| "(" { ++commentNest; }
+| ")" { --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT); }
+| < <ANY>>
+}
+
+
+// QUOTED STRINGS
+
+MORE :
+{
+ "\"" { image.deleteCharAt(image.length() - 1); } : INQUOTEDSTRING
+}
+
+<INQUOTEDSTRING>
+MORE :
+{
+ < <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
+| < (~["\"", "\\"])+ >
+}
+
+<INQUOTEDSTRING>
+TOKEN :
+{
+ < QUOTEDSTRING: "\"" > { matchedToken.image = image.substring(0, image.length() - 1); } : DEFAULT
+}
+
+// GLOBALS
+
+<*>
+TOKEN :
+{
+ < #QUOTEDPAIR: "\\" <ANY> >
+| < #ANY: ~[] >
+}
+
+// ERROR!
+/*
+
+<*>
+TOKEN :
+{
+ < UNEXPECTED_CHAR: <ANY> >
+}
+
+*/
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java
new file mode 100644
index 0000000..006a082
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java
@@ -0,0 +1,76 @@
+/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParserConstants.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+public interface AddressListParserConstants {
+
+ int EOF = 0;
+ int WS = 10;
+ int ALPHA = 11;
+ int DIGIT = 12;
+ int ATEXT = 13;
+ int DOTATOM = 14;
+ int DOMAINLITERAL = 18;
+ int COMMENT = 20;
+ int QUOTEDSTRING = 31;
+ int QUOTEDPAIR = 32;
+ int ANY = 33;
+
+ int DEFAULT = 0;
+ int INDOMAINLITERAL = 1;
+ int INCOMMENT = 2;
+ int NESTED_COMMENT = 3;
+ int INQUOTEDSTRING = 4;
+
+ String[] tokenImage = {
+ "<EOF>",
+ "\"\\r\"",
+ "\"\\n\"",
+ "\",\"",
+ "\":\"",
+ "\";\"",
+ "\"<\"",
+ "\">\"",
+ "\"@\"",
+ "\".\"",
+ "<WS>",
+ "<ALPHA>",
+ "<DIGIT>",
+ "<ATEXT>",
+ "<DOTATOM>",
+ "\"[\"",
+ "<token of kind 16>",
+ "<token of kind 17>",
+ "\"]\"",
+ "\"(\"",
+ "\")\"",
+ "<token of kind 21>",
+ "\"(\"",
+ "<token of kind 23>",
+ "<token of kind 24>",
+ "\"(\"",
+ "\")\"",
+ "<token of kind 27>",
+ "\"\\\"\"",
+ "<token of kind 29>",
+ "<token of kind 30>",
+ "\"\\\"\"",
+ "<QUOTEDPAIR>",
+ "<ANY>",
+ };
+
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java
new file mode 100644
index 0000000..d2dd88d
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java
@@ -0,0 +1,1009 @@
+/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParserTokenManager.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+public class AddressListParserTokenManager implements AddressListParserConstants
+{
+ // Keeps track of how many levels of comment nesting
+ // we've encountered. This is only used when the 2nd
+ // level is reached, for example ((this)), not (this).
+ // This is because the outermost level must be treated
+ // specially anyway, because the outermost ")" has a
+ // different token type than inner ")" instances.
+ static int commentNest;
+ public java.io.PrintStream debugStream = System.out;
+ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private final int jjStopStringLiteralDfa_0(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_0(int pos, long active0)
+{
+ return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
+}
+private final int jjStopAtPos(int pos, int kind)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ return pos + 1;
+}
+private final int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_0(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_0()
+{
+ switch(curChar)
+ {
+ case 10:
+ return jjStopAtPos(0, 2);
+ case 13:
+ return jjStopAtPos(0, 1);
+ case 34:
+ return jjStopAtPos(0, 28);
+ case 40:
+ return jjStopAtPos(0, 19);
+ case 44:
+ return jjStopAtPos(0, 3);
+ case 46:
+ return jjStopAtPos(0, 9);
+ case 58:
+ return jjStopAtPos(0, 4);
+ case 59:
+ return jjStopAtPos(0, 5);
+ case 60:
+ return jjStopAtPos(0, 6);
+ case 62:
+ return jjStopAtPos(0, 7);
+ case 64:
+ return jjStopAtPos(0, 8);
+ case 91:
+ return jjStopAtPos(0, 15);
+ default :
+ return jjMoveNfa_0(1, 0);
+ }
+}
+private final void jjCheckNAdd(int state)
+{
+ if (jjrounds[state] != jjround)
+ {
+ jjstateSet[jjnewStateCnt++] = state;
+ jjrounds[state] = jjround;
+ }
+}
+private final void jjAddStates(int start, int end)
+{
+ do {
+ jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+ } while (start++ != end);
+}
+private final void jjCheckNAddTwoStates(int state1, int state2)
+{
+ jjCheckNAdd(state1);
+ jjCheckNAdd(state2);
+}
+private final void jjCheckNAddStates(int start, int end)
+{
+ do {
+ jjCheckNAdd(jjnextStates[start]);
+ } while (start++ != end);
+}
+private final void jjCheckNAddStates(int start)
+{
+ jjCheckNAdd(jjnextStates[start]);
+ jjCheckNAdd(jjnextStates[start + 1]);
+}
+private final int jjMoveNfa_0(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 1:
+ if ((0xa3ffacfa00000000L & l) != 0L)
+ {
+ if (kind > 14)
+ kind = 14;
+ jjCheckNAdd(2);
+ }
+ else if ((0x100000200L & l) != 0L)
+ {
+ if (kind > 10)
+ kind = 10;
+ jjCheckNAdd(0);
+ }
+ break;
+ case 0:
+ if ((0x100000200L & l) == 0L)
+ break;
+ kind = 10;
+ jjCheckNAdd(0);
+ break;
+ case 2:
+ if ((0xa3ffecfa00000000L & l) == 0L)
+ break;
+ if (kind > 14)
+ kind = 14;
+ jjCheckNAdd(2);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 1:
+ case 2:
+ if ((0x7fffffffc7fffffeL & l) == 0L)
+ break;
+ if (kind > 14)
+ kind = 14;
+ jjCheckNAdd(2);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_2(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_2(int pos, long active0)
+{
+ return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_2(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_2(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_2()
+{
+ switch(curChar)
+ {
+ case 40:
+ return jjStopAtPos(0, 22);
+ case 41:
+ return jjStopAtPos(0, 20);
+ default :
+ return jjMoveNfa_2(0, 0);
+ }
+}
+static final long[] jjbitVec0 = {
+ 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+private final int jjMoveNfa_2(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 23)
+ kind = 23;
+ break;
+ case 1:
+ if (kind > 21)
+ kind = 21;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 23)
+ kind = 23;
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 21)
+ kind = 21;
+ break;
+ case 2:
+ if (kind > 23)
+ kind = 23;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 23)
+ kind = 23;
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 21)
+ kind = 21;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_4(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_4(int pos, long active0)
+{
+ return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_4(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_4(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_4()
+{
+ switch(curChar)
+ {
+ case 34:
+ return jjStopAtPos(0, 31);
+ default :
+ return jjMoveNfa_4(0, 0);
+ }
+}
+private final int jjMoveNfa_4(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ case 2:
+ if ((0xfffffffbffffffffL & l) == 0L)
+ break;
+ if (kind > 30)
+ kind = 30;
+ jjCheckNAdd(2);
+ break;
+ case 1:
+ if (kind > 29)
+ kind = 29;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0xffffffffefffffffL & l) != 0L)
+ {
+ if (kind > 30)
+ kind = 30;
+ jjCheckNAdd(2);
+ }
+ else if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 29)
+ kind = 29;
+ break;
+ case 2:
+ if ((0xffffffffefffffffL & l) == 0L)
+ break;
+ if (kind > 30)
+ kind = 30;
+ jjCheckNAdd(2);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ case 2:
+ if ((jjbitVec0[i2] & l2) == 0L)
+ break;
+ if (kind > 30)
+ kind = 30;
+ jjCheckNAdd(2);
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 29)
+ kind = 29;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_3(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_3(int pos, long active0)
+{
+ return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_3(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_3(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_3()
+{
+ switch(curChar)
+ {
+ case 40:
+ return jjStopAtPos(0, 25);
+ case 41:
+ return jjStopAtPos(0, 26);
+ default :
+ return jjMoveNfa_3(0, 0);
+ }
+}
+private final int jjMoveNfa_3(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 27)
+ kind = 27;
+ break;
+ case 1:
+ if (kind > 24)
+ kind = 24;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 27)
+ kind = 27;
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 24)
+ kind = 24;
+ break;
+ case 2:
+ if (kind > 27)
+ kind = 27;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 27)
+ kind = 27;
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 24)
+ kind = 24;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_1(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_1(int pos, long active0)
+{
+ return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_1(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_1(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_1()
+{
+ switch(curChar)
+ {
+ case 93:
+ return jjStopAtPos(0, 18);
+ default :
+ return jjMoveNfa_1(0, 0);
+ }
+}
+private final int jjMoveNfa_1(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 17)
+ kind = 17;
+ break;
+ case 1:
+ if (kind > 16)
+ kind = 16;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0xffffffffc7ffffffL & l) != 0L)
+ {
+ if (kind > 17)
+ kind = 17;
+ }
+ else if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 16)
+ kind = 16;
+ break;
+ case 2:
+ if ((0xffffffffc7ffffffL & l) != 0L && kind > 17)
+ kind = 17;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 17)
+ kind = 17;
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
+ kind = 16;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+static final int[] jjnextStates = {
+};
+public static final String[] jjstrLiteralImages = {
+"", "\15", "\12", "\54", "\72", "\73", "\74", "\76", "\100", "\56", null, null,
+null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+null, null, null, null, null, null, null, null, };
+public static final String[] lexStateNames = {
+ "DEFAULT",
+ "INDOMAINLITERAL",
+ "INCOMMENT",
+ "NESTED_COMMENT",
+ "INQUOTEDSTRING",
+};
+public static final int[] jjnewLexState = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, 2, 0, -1, 3, -1, -1,
+ -1, -1, -1, 4, -1, -1, 0, -1, -1,
+};
+static final long[] jjtoToken = {
+ 0x800443ffL,
+};
+static final long[] jjtoSkip = {
+ 0x100400L,
+};
+static final long[] jjtoSpecial = {
+ 0x400L,
+};
+static final long[] jjtoMore = {
+ 0x7feb8000L,
+};
+protected SimpleCharStream input_stream;
+private final int[] jjrounds = new int[3];
+private final int[] jjstateSet = new int[6];
+StringBuffer image;
+int jjimageLen;
+int lengthOfMatch;
+protected char curChar;
+public AddressListParserTokenManager(SimpleCharStream stream){
+ if (SimpleCharStream.staticFlag)
+ throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
+ input_stream = stream;
+}
+public AddressListParserTokenManager(SimpleCharStream stream, int lexState){
+ this(stream);
+ SwitchTo(lexState);
+}
+public void ReInit(SimpleCharStream stream)
+{
+ jjmatchedPos = jjnewStateCnt = 0;
+ curLexState = defaultLexState;
+ input_stream = stream;
+ ReInitRounds();
+}
+private final void ReInitRounds()
+{
+ int i;
+ jjround = 0x80000001;
+ for (i = 3; i-- > 0;)
+ jjrounds[i] = 0x80000000;
+}
+public void ReInit(SimpleCharStream stream, int lexState)
+{
+ ReInit(stream);
+ SwitchTo(lexState);
+}
+public void SwitchTo(int lexState)
+{
+ if (lexState >= 5 || lexState < 0)
+ throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+ else
+ curLexState = lexState;
+}
+
+protected Token jjFillToken()
+{
+ Token t = Token.newToken(jjmatchedKind);
+ t.kind = jjmatchedKind;
+ String im = jjstrLiteralImages[jjmatchedKind];
+ t.image = (im == null) ? input_stream.GetImage() : im;
+ t.beginLine = input_stream.getBeginLine();
+ t.beginColumn = input_stream.getBeginColumn();
+ t.endLine = input_stream.getEndLine();
+ t.endColumn = input_stream.getEndColumn();
+ return t;
+}
+
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
+
+public Token getNextToken()
+{
+ int kind;
+ Token specialToken = null;
+ Token matchedToken;
+ int curPos = 0;
+
+ EOFLoop :
+ for (;;)
+ {
+ try
+ {
+ curChar = input_stream.BeginToken();
+ }
+ catch(java.io.IOException e)
+ {
+ jjmatchedKind = 0;
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ return matchedToken;
+ }
+ image = null;
+ jjimageLen = 0;
+
+ for (;;)
+ {
+ switch(curLexState)
+ {
+ case 0:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_0();
+ break;
+ case 1:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_1();
+ break;
+ case 2:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_2();
+ break;
+ case 3:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_3();
+ break;
+ case 4:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_4();
+ break;
+ }
+ if (jjmatchedKind != 0x7fffffff)
+ {
+ if (jjmatchedPos + 1 < curPos)
+ input_stream.backup(curPos - jjmatchedPos - 1);
+ if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ TokenLexicalActions(matchedToken);
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ return matchedToken;
+ }
+ else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ if (specialToken == null)
+ specialToken = matchedToken;
+ else
+ {
+ matchedToken.specialToken = specialToken;
+ specialToken = (specialToken.next = matchedToken);
+ }
+ }
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ continue EOFLoop;
+ }
+ MoreLexicalActions();
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ curPos = 0;
+ jjmatchedKind = 0x7fffffff;
+ try {
+ curChar = input_stream.readChar();
+ continue;
+ }
+ catch (java.io.IOException e1) { }
+ }
+ int error_line = input_stream.getEndLine();
+ int error_column = input_stream.getEndColumn();
+ String error_after = null;
+ boolean EOFSeen = false;
+ try { input_stream.readChar(); input_stream.backup(1); }
+ catch (java.io.IOException e1) {
+ EOFSeen = true;
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ if (curChar == '\n' || curChar == '\r') {
+ error_line++;
+ error_column = 0;
+ }
+ else
+ error_column++;
+ }
+ if (!EOFSeen) {
+ input_stream.backup(1);
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ }
+ throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+ }
+ }
+}
+
+void MoreLexicalActions()
+{
+ jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+ switch(jjmatchedKind)
+ {
+ case 16 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ case 21 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ case 22 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ commentNest = 1;
+ break;
+ case 24 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ case 25 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ ++commentNest;
+ break;
+ case 26 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
+ break;
+ case 28 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 1);
+ break;
+ case 29 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ default :
+ break;
+ }
+}
+void TokenLexicalActions(Token matchedToken)
+{
+ switch(jjmatchedKind)
+ {
+ case 18 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
+ matchedToken.image = image.toString();
+ break;
+ case 31 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
+ matchedToken.image = image.substring(0, image.length() - 1);
+ break;
+ default :
+ break;
+ }
+}
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java
new file mode 100644
index 0000000..5987f19
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java
@@ -0,0 +1,35 @@
+/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public interface AddressListParserTreeConstants
+{
+ public int JJTVOID = 0;
+ public int JJTADDRESS_LIST = 1;
+ public int JJTADDRESS = 2;
+ public int JJTMAILBOX = 3;
+ public int JJTNAME_ADDR = 4;
+ public int JJTGROUP_BODY = 5;
+ public int JJTANGLE_ADDR = 6;
+ public int JJTROUTE = 7;
+ public int JJTPHRASE = 8;
+ public int JJTADDR_SPEC = 9;
+ public int JJTLOCAL_PART = 10;
+ public int JJTDOMAIN = 11;
+
+
+ public String[] jjtNodeName = {
+ "void",
+ "address_list",
+ "address",
+ "mailbox",
+ "name_addr",
+ "group_body",
+ "angle_addr",
+ "route",
+ "phrase",
+ "addr_spec",
+ "local_part",
+ "domain",
+ };
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java
new file mode 100644
index 0000000..8ec2fe7
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java
@@ -0,0 +1,19 @@
+/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public interface AddressListParserVisitor
+{
+ public Object visit(SimpleNode node, Object data);
+ public Object visit(ASTaddress_list node, Object data);
+ public Object visit(ASTaddress node, Object data);
+ public Object visit(ASTmailbox node, Object data);
+ public Object visit(ASTname_addr node, Object data);
+ public Object visit(ASTgroup_body node, Object data);
+ public Object visit(ASTangle_addr node, Object data);
+ public Object visit(ASTroute node, Object data);
+ public Object visit(ASTphrase node, Object data);
+ public Object visit(ASTaddr_spec node, Object data);
+ public Object visit(ASTlocal_part node, Object data);
+ public Object visit(ASTdomain node, Object data);
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/BaseNode.java b/src/org/apache/james/mime4j/field/address/parser/BaseNode.java
new file mode 100644
index 0000000..7809746
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/BaseNode.java
@@ -0,0 +1,30 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.address.parser;
+
+import org.apache.james.mime4j.field.address.parser.Node;
+import org.apache.james.mime4j.field.address.parser.Token;
+
+public abstract class BaseNode implements Node {
+
+ public Token firstToken;
+ public Token lastToken;
+
+}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java b/src/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java
new file mode 100644
index 0000000..08b5c5b
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java
@@ -0,0 +1,123 @@
+/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+class JJTAddressListParserState {
+ private java.util.Stack<Node> nodes;
+ private java.util.Stack<Integer> marks;
+
+ private int sp; // number of nodes on stack
+ private int mk; // current mark
+ private boolean node_created;
+
+ JJTAddressListParserState() {
+ nodes = new java.util.Stack<Node>();
+ marks = new java.util.Stack<Integer>();
+ sp = 0;
+ mk = 0;
+ }
+
+ /* Determines whether the current node was actually closed and
+ pushed. This should only be called in the final user action of a
+ node scope. */
+ boolean nodeCreated() {
+ return node_created;
+ }
+
+ /* Call this to reinitialize the node stack. It is called
+ automatically by the parser's ReInit() method. */
+ void reset() {
+ nodes.removeAllElements();
+ marks.removeAllElements();
+ sp = 0;
+ mk = 0;
+ }
+
+ /* Returns the root node of the AST. It only makes sense to call
+ this after a successful parse. */
+ Node rootNode() {
+ return nodes.elementAt(0);
+ }
+
+ /* Pushes a node on to the stack. */
+ void pushNode(Node n) {
+ nodes.push(n);
+ ++sp;
+ }
+
+ /* Returns the node on the top of the stack, and remove it from the
+ stack. */
+ Node popNode() {
+ if (--sp < mk) {
+ mk = marks.pop().intValue();
+ }
+ return nodes.pop();
+ }
+
+ /* Returns the node currently on the top of the stack. */
+ Node peekNode() {
+ return nodes.peek();
+ }
+
+ /* Returns the number of children on the stack in the current node
+ scope. */
+ int nodeArity() {
+ return sp - mk;
+ }
+
+
+ void clearNodeScope(Node n) {
+ while (sp > mk) {
+ popNode();
+ }
+ mk = marks.pop().intValue();
+ }
+
+
+ void openNodeScope(Node n) {
+ marks.push(new Integer(mk));
+ mk = sp;
+ n.jjtOpen();
+ }
+
+
+ /* A definite node is constructed from a specified number of
+ children. That number of nodes are popped from the stack and
+ made the children of the definite node. Then the definite node
+ is pushed on to the stack. */
+ void closeNodeScope(Node n, int num) {
+ mk = marks.pop().intValue();
+ while (num-- > 0) {
+ Node c = popNode();
+ c.jjtSetParent(n);
+ n.jjtAddChild(c, num);
+ }
+ n.jjtClose();
+ pushNode(n);
+ node_created = true;
+ }
+
+
+ /* A conditional node is constructed if its condition is true. All
+ the nodes that have been pushed since the node was opened are
+ made children of the the conditional node, which is then pushed
+ on to the stack. If the condition is false the node is not
+ constructed and they are left on the stack. */
+ void closeNodeScope(Node n, boolean condition) {
+ if (condition) {
+ int a = nodeArity();
+ mk = marks.pop().intValue();
+ while (a-- > 0) {
+ Node c = popNode();
+ c.jjtSetParent(n);
+ n.jjtAddChild(c, a);
+ }
+ n.jjtClose();
+ pushNode(n);
+ node_created = true;
+ } else {
+ mk = marks.pop().intValue();
+ node_created = false;
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/Node.java b/src/org/apache/james/mime4j/field/address/parser/Node.java
new file mode 100644
index 0000000..1588920
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/Node.java
@@ -0,0 +1,37 @@
+/* Generated By:JJTree: Do not edit this line. Node.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+/* All AST nodes must implement this interface. It provides basic
+ machinery for constructing the parent and child relationships
+ between nodes. */
+
+public interface Node {
+
+ /** This method is called after the node has been made the current
+ node. It indicates that child nodes can now be added to it. */
+ public void jjtOpen();
+
+ /** This method is called after all the child nodes have been
+ added. */
+ public void jjtClose();
+
+ /** This pair of methods are used to inform the node of its
+ parent. */
+ public void jjtSetParent(Node n);
+ public Node jjtGetParent();
+
+ /** This method tells the node to add its argument to the node's
+ list of children. */
+ public void jjtAddChild(Node n, int i);
+
+ /** This method returns a child node. The children are numbered
+ from zero, left to right. */
+ public Node jjtGetChild(int i);
+
+ /** Return the number of children the node has. */
+ public int jjtGetNumChildren();
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data);
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ParseException.java b/src/org/apache/james/mime4j/field/address/parser/ParseException.java
new file mode 100644
index 0000000..e20146f
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/ParseException.java
@@ -0,0 +1,207 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+ /**
+ * This constructor is used by the method "generateParseException"
+ * in the generated parser. Calling this constructor generates
+ * a new object of this type with the fields "currentToken",
+ * "expectedTokenSequences", and "tokenImage" set. The boolean
+ * flag "specialConstructor" is also set to true to indicate that
+ * this constructor was used to create this object.
+ * This constructor calls its super class with the empty string
+ * to force the "toString" method of parent class "Throwable" to
+ * print the error message in the form:
+ * ParseException: <result of getMessage>
+ */
+ public ParseException(Token currentTokenVal,
+ int[][] expectedTokenSequencesVal,
+ String[] tokenImageVal
+ )
+ {
+ super("");
+ specialConstructor = true;
+ currentToken = currentTokenVal;
+ expectedTokenSequences = expectedTokenSequencesVal;
+ tokenImage = tokenImageVal;
+ }
+
+ /**
+ * The following constructors are for use by you for whatever
+ * purpose you can think of. Constructing the exception in this
+ * manner makes the exception behave in the normal way - i.e., as
+ * documented in the class "Throwable". The fields "errorToken",
+ * "expectedTokenSequences", and "tokenImage" do not contain
+ * relevant information. The JavaCC generated code does not use
+ * these constructors.
+ */
+
+ public ParseException() {
+ super();
+ specialConstructor = false;
+ }
+
+ public ParseException(String message) {
+ super(message);
+ specialConstructor = false;
+ }
+
+ /**
+ * This variable determines which constructor was used to create
+ * this object and thereby affects the semantics of the
+ * "getMessage" method (see below).
+ */
+ protected boolean specialConstructor;
+
+ /**
+ * This is the last token that has been consumed successfully. If
+ * this object has been created due to a parse error, the token
+ * followng this token will (therefore) be the first error token.
+ */
+ public Token currentToken;
+
+ /**
+ * Each entry in this array is an array of integers. Each array
+ * of integers represents a sequence of tokens (by their ordinal
+ * values) that is expected at this point of the parse.
+ */
+ public int[][] expectedTokenSequences;
+
+ /**
+ * This is a reference to the "tokenImage" array of the generated
+ * parser within which the parse error occurred. This array is
+ * defined in the generated ...Constants interface.
+ */
+ public String[] tokenImage;
+
+ /**
+ * This method has the standard behavior when this object has been
+ * created using the standard constructors. Otherwise, it uses
+ * "currentToken" and "expectedTokenSequences" to generate a parse
+ * error message and returns it. If this object has been created
+ * due to a parse error, and you do not catch it (it gets thrown
+ * from the parser), then this method is called during the printing
+ * of the final stack trace, and hence the correct error message
+ * gets displayed.
+ */
+ public String getMessage() {
+ if (!specialConstructor) {
+ return super.getMessage();
+ }
+ StringBuffer expected = new StringBuffer();
+ int maxSize = 0;
+ for (int i = 0; i < expectedTokenSequences.length; i++) {
+ if (maxSize < expectedTokenSequences[i].length) {
+ maxSize = expectedTokenSequences[i].length;
+ }
+ for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
+ }
+ if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+ expected.append("...");
+ }
+ expected.append(eol).append(" ");
+ }
+ String retval = "Encountered \"";
+ Token tok = currentToken.next;
+ for (int i = 0; i < maxSize; i++) {
+ if (i != 0) retval += " ";
+ if (tok.kind == 0) {
+ retval += tokenImage[0];
+ break;
+ }
+ retval += add_escapes(tok.image);
+ tok = tok.next;
+ }
+ retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+ retval += "." + eol;
+ if (expectedTokenSequences.length == 1) {
+ retval += "Was expecting:" + eol + " ";
+ } else {
+ retval += "Was expecting one of:" + eol + " ";
+ }
+ retval += expected.toString();
+ return retval;
+ }
+
+ /**
+ * The end of line string for this machine.
+ */
+ protected String eol = System.getProperty("line.separator", "\n");
+
+ /**
+ * Used to convert raw characters to their escaped version
+ * when these raw version cannot be used as part of an ASCII
+ * string literal.
+ */
+ protected String add_escapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java b/src/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java
new file mode 100644
index 0000000..c9ba0b4
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java
@@ -0,0 +1,454 @@
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (without unicode processing).
+ */
+
+public class SimpleCharStream
+{
+ public static final boolean staticFlag = false;
+ int bufsize;
+ int available;
+ int tokenBegin;
+ public int bufpos = -1;
+ protected int bufline[];
+ protected int bufcolumn[];
+
+ protected int column = 0;
+ protected int line = 1;
+
+ protected boolean prevCharIsCR = false;
+ protected boolean prevCharIsLF = false;
+
+ protected java.io.Reader inputStream;
+
+ protected char[] buffer;
+ protected int maxNextCharInd = 0;
+ protected int inBuf = 0;
+ protected int tabSize = 8;
+
+ protected void setTabSize(int i) { tabSize = i; }
+ protected int getTabSize(int i) { return tabSize; }
+
+
+ protected void ExpandBuff(boolean wrapAround)
+ {
+ char[] newbuffer = new char[bufsize + 2048];
+ int newbufline[] = new int[bufsize + 2048];
+ int newbufcolumn[] = new int[bufsize + 2048];
+
+ try
+ {
+ if (wrapAround)
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ System.arraycopy(buffer, 0, newbuffer,
+ bufsize - tokenBegin, bufpos);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos += (bufsize - tokenBegin));
+ }
+ else
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos -= tokenBegin);
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new Error(t.getMessage());
+ }
+
+
+ bufsize += 2048;
+ available = bufsize;
+ tokenBegin = 0;
+ }
+
+ protected void FillBuff() throws java.io.IOException
+ {
+ if (maxNextCharInd == available)
+ {
+ if (available == bufsize)
+ {
+ if (tokenBegin > 2048)
+ {
+ bufpos = maxNextCharInd = 0;
+ available = tokenBegin;
+ }
+ else if (tokenBegin < 0)
+ bufpos = maxNextCharInd = 0;
+ else
+ ExpandBuff(false);
+ }
+ else if (available > tokenBegin)
+ available = bufsize;
+ else if ((tokenBegin - available) < 2048)
+ ExpandBuff(true);
+ else
+ available = tokenBegin;
+ }
+
+ int i;
+ try {
+ if ((i = inputStream.read(buffer, maxNextCharInd,
+ available - maxNextCharInd)) == -1)
+ {
+ inputStream.close();
+ throw new java.io.IOException();
+ }
+ else
+ maxNextCharInd += i;
+ return;
+ }
+ catch(java.io.IOException e) {
+ --bufpos;
+ backup(0);
+ if (tokenBegin == -1)
+ tokenBegin = bufpos;
+ throw e;
+ }
+ }
+
+ public char BeginToken() throws java.io.IOException
+ {
+ tokenBegin = -1;
+ char c = readChar();
+ tokenBegin = bufpos;
+
+ return c;
+ }
+
+ protected void UpdateLineColumn(char c)
+ {
+ column++;
+
+ if (prevCharIsLF)
+ {
+ prevCharIsLF = false;
+ line += (column = 1);
+ }
+ else if (prevCharIsCR)
+ {
+ prevCharIsCR = false;
+ if (c == '\n')
+ {
+ prevCharIsLF = true;
+ }
+ else
+ line += (column = 1);
+ }
+
+ switch (c)
+ {
+ case '\r' :
+ prevCharIsCR = true;
+ break;
+ case '\n' :
+ prevCharIsLF = true;
+ break;
+ case '\t' :
+ column--;
+ column += (tabSize - (column % tabSize));
+ break;
+ default :
+ break;
+ }
+
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+
+ public char readChar() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ return buffer[bufpos];
+ }
+
+ if (++bufpos >= maxNextCharInd)
+ FillBuff();
+
+ char c = buffer[bufpos];
+
+ UpdateLineColumn(c);
+ return (c);
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndColumn
+ */
+ @Deprecated
+ public int getColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndLine
+ */
+ @Deprecated
+ public int getLine() {
+ return bufline[bufpos];
+ }
+
+ public int getEndColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ public int getEndLine() {
+ return bufline[bufpos];
+ }
+
+ public int getBeginColumn() {
+ return bufcolumn[tokenBegin];
+ }
+
+ public int getBeginLine() {
+ return bufline[tokenBegin];
+ }
+
+ public void backup(int amount) {
+
+ inBuf += amount;
+ if ((bufpos -= amount) < 0)
+ bufpos += bufsize;
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.Reader dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ if (buffer == null || buffersize != buffer.length)
+ {
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+ prevCharIsLF = prevCharIsCR = false;
+ tokenBegin = inBuf = maxNextCharInd = 0;
+ bufpos = -1;
+ }
+
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+
+ public void ReInit(java.io.Reader dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, 1, 1, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+
+ public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, 1, 1, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, startline, startcolumn, 4096);
+ }
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+ public String GetImage()
+ {
+ if (bufpos >= tokenBegin)
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+ else
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+ new String(buffer, 0, bufpos + 1);
+ }
+
+ public char[] GetSuffix(int len)
+ {
+ char[] ret = new char[len];
+
+ if ((bufpos + 1) >= len)
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+ else
+ {
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+ len - bufpos - 1);
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+ }
+
+ return ret;
+ }
+
+ public void Done()
+ {
+ buffer = null;
+ bufline = null;
+ bufcolumn = null;
+ }
+
+ /**
+ * Method to adjust line and column numbers for the start of a token.
+ */
+ public void adjustBeginLineColumn(int newLine, int newCol)
+ {
+ int start = tokenBegin;
+ int len;
+
+ if (bufpos >= tokenBegin)
+ {
+ len = bufpos - tokenBegin + inBuf + 1;
+ }
+ else
+ {
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+ }
+
+ int i = 0, j = 0, k = 0;
+ int nextColDiff = 0, columnDiff = 0;
+
+ while (i < len &&
+ bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+ {
+ bufline[j] = newLine;
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+ bufcolumn[j] = newCol + columnDiff;
+ columnDiff = nextColDiff;
+ i++;
+ }
+
+ if (i < len)
+ {
+ bufline[j] = newLine++;
+ bufcolumn[j] = newCol + columnDiff;
+
+ while (i++ < len)
+ {
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+ bufline[j] = newLine++;
+ else
+ bufline[j] = newLine;
+ }
+ }
+
+ line = bufline[j];
+ column = bufcolumn[j];
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/SimpleNode.java b/src/org/apache/james/mime4j/field/address/parser/SimpleNode.java
new file mode 100644
index 0000000..9bf537e
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/SimpleNode.java
@@ -0,0 +1,87 @@
+/* Generated By:JJTree: Do not edit this line. SimpleNode.java */
+
+package org.apache.james.mime4j.field.address.parser;
+
+public class SimpleNode extends org.apache.james.mime4j.field.address.parser.BaseNode implements Node {
+ protected Node parent;
+ protected Node[] children;
+ protected int id;
+ protected AddressListParser parser;
+
+ public SimpleNode(int i) {
+ id = i;
+ }
+
+ public SimpleNode(AddressListParser p, int i) {
+ this(i);
+ parser = p;
+ }
+
+ public void jjtOpen() {
+ }
+
+ public void jjtClose() {
+ }
+
+ public void jjtSetParent(Node n) { parent = n; }
+ public Node jjtGetParent() { return parent; }
+
+ public void jjtAddChild(Node n, int i) {
+ if (children == null) {
+ children = new Node[i + 1];
+ } else if (i >= children.length) {
+ Node c[] = new Node[i + 1];
+ System.arraycopy(children, 0, c, 0, children.length);
+ children = c;
+ }
+ children[i] = n;
+ }
+
+ public Node jjtGetChild(int i) {
+ return children[i];
+ }
+
+ public int jjtGetNumChildren() {
+ return (children == null) ? 0 : children.length;
+ }
+
+ /** Accept the visitor. **/
+ public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
+ return visitor.visit(this, data);
+ }
+
+ /** Accept the visitor. **/
+ public Object childrenAccept(AddressListParserVisitor visitor, Object data) {
+ if (children != null) {
+ for (int i = 0; i < children.length; ++i) {
+ children[i].jjtAccept(visitor, data);
+ }
+ }
+ return data;
+ }
+
+ /* You can override these two methods in subclasses of SimpleNode to
+ customize the way the node appears when the tree is dumped. If
+ your output uses more than one line you should override
+ toString(String), otherwise overriding toString() is probably all
+ you need to do. */
+
+ public String toString() { return AddressListParserTreeConstants.jjtNodeName[id]; }
+ public String toString(String prefix) { return prefix + toString(); }
+
+ /* Override this method if you want to customize how the node dumps
+ out its children. */
+
+ public void dump(String prefix) {
+ System.out.println(toString(prefix));
+ if (children != null) {
+ for (int i = 0; i < children.length; ++i) {
+ SimpleNode n = (SimpleNode)children[i];
+ if (n != null) {
+ n.dump(prefix + " ");
+ }
+ }
+ }
+ }
+}
+
diff --git a/src/org/apache/james/mime4j/field/address/parser/Token.java b/src/org/apache/james/mime4j/field/address/parser/Token.java
new file mode 100644
index 0000000..2382e8e
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/Token.java
@@ -0,0 +1,96 @@
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token {
+
+ /**
+ * An integer that describes the kind of this token. This numbering
+ * system is determined by JavaCCParser, and a table of these numbers is
+ * stored in the file ...Constants.java.
+ */
+ public int kind;
+
+ /**
+ * beginLine and beginColumn describe the position of the first character
+ * of this token; endLine and endColumn describe the position of the
+ * last character of this token.
+ */
+ public int beginLine, beginColumn, endLine, endColumn;
+
+ /**
+ * The string image of the token.
+ */
+ public String image;
+
+ /**
+ * A reference to the next regular (non-special) token from the input
+ * stream. If this is the last token from the input stream, or if the
+ * token manager has not read tokens beyond this one, this field is
+ * set to null. This is true only if this token is also a regular
+ * token. Otherwise, see below for a description of the contents of
+ * this field.
+ */
+ public Token next;
+
+ /**
+ * This field is used to access special tokens that occur prior to this
+ * token, but after the immediately preceding regular (non-special) token.
+ * If there are no such special tokens, this field is set to null.
+ * When there are more than one such special token, this field refers
+ * to the last of these special tokens, which in turn refers to the next
+ * previous special token through its specialToken field, and so on
+ * until the first special token (whose specialToken field is null).
+ * The next fields of special tokens refer to other special tokens that
+ * immediately follow it (without an intervening regular token). If there
+ * is no such token, this field is null.
+ */
+ public Token specialToken;
+
+ /**
+ * Returns the image.
+ */
+ public String toString()
+ {
+ return image;
+ }
+
+ /**
+ * Returns a new Token object, by default. However, if you want, you
+ * can create and return subclass objects based on the value of ofKind.
+ * Simply add the cases to the switch for all those special cases.
+ * For example, if you have a subclass of Token called IDToken that
+ * you want to create if ofKind is ID, simlpy add something like :
+ *
+ * case MyParserConstants.ID : return new IDToken();
+ *
+ * to the following switch statement. Then you can cast matchedToken
+ * variable to the appropriate type and use it in your lexical actions.
+ */
+ public static final Token newToken(int ofKind)
+ {
+ switch(ofKind)
+ {
+ default : return new Token();
+ }
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/address/parser/TokenMgrError.java b/src/org/apache/james/mime4j/field/address/parser/TokenMgrError.java
new file mode 100644
index 0000000..0299c85
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/address/parser/TokenMgrError.java
@@ -0,0 +1,148 @@
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.address.parser;
+
+public class TokenMgrError extends Error
+{
+ /*
+ * Ordinals for various reasons why an Error of this type can be thrown.
+ */
+
+ /**
+ * Lexical error occured.
+ */
+ static final int LEXICAL_ERROR = 0;
+
+ /**
+ * An attempt wass made to create a second instance of a static token manager.
+ */
+ static final int STATIC_LEXER_ERROR = 1;
+
+ /**
+ * Tried to change to an invalid lexical state.
+ */
+ static final int INVALID_LEXICAL_STATE = 2;
+
+ /**
+ * Detected (and bailed out of) an infinite loop in the token manager.
+ */
+ static final int LOOP_DETECTED = 3;
+
+ /**
+ * Indicates the reason why the exception is thrown. It will have
+ * one of the above 4 values.
+ */
+ int errorCode;
+
+ /**
+ * Replaces unprintable characters by their espaced (or unicode escaped)
+ * equivalents in the given string
+ */
+ protected static final String addEscapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+ /**
+ * Returns a detailed message for the Error when it is thrown by the
+ * token manager to indicate a lexical error.
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexicl error
+ * curLexState : lexical state in which this error occured
+ * errorLine : line number when the error occured
+ * errorColumn : column number when the error occured
+ * errorAfter : prefix that was seen before this error occured
+ * curchar : the offending character
+ * Note: You can customize the lexical error message by modifying this method.
+ */
+ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+ return("Lexical error at line " +
+ errorLine + ", column " +
+ errorColumn + ". Encountered: " +
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+ "after : \"" + addEscapes(errorAfter) + "\"");
+ }
+
+ /**
+ * You can also modify the body of this method to customize your error messages.
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+ * of end-users concern, so you can return something like :
+ *
+ * "Internal Error : Please file a bug report .... "
+ *
+ * from this method for such cases in the release version of your parser.
+ */
+ public String getMessage() {
+ return super.getMessage();
+ }
+
+ /*
+ * Constructors of various flavors follow.
+ */
+
+ public TokenMgrError() {
+ }
+
+ public TokenMgrError(String message, int reason) {
+ super(message);
+ errorCode = reason;
+ }
+
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java
new file mode 100644
index 0000000..cacf3af
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java
@@ -0,0 +1,268 @@
+/* Generated By:JavaCC: Do not edit this line. ContentTypeParser.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
+
+import java.util.ArrayList;
+import java.util.Vector;
+
+public class ContentTypeParser implements ContentTypeParserConstants {
+
+ private String type;
+ private String subtype;
+ private ArrayList<String> paramNames = new ArrayList<String>();
+ private ArrayList<String> paramValues = new ArrayList<String>();
+
+ public String getType() { return type; }
+ public String getSubType() { return subtype; }
+ public ArrayList<String> getParamNames() { return paramNames; }
+ public ArrayList<String> getParamValues() { return paramValues; }
+
+ public static void main(String args[]) throws ParseException {
+ while (true) {
+ try {
+ ContentTypeParser parser = new ContentTypeParser(System.in);
+ parser.parseLine();
+ } catch (Exception x) {
+ x.printStackTrace();
+ return;
+ }
+ }
+ }
+
+ final public void parseLine() throws ParseException {
+ parse();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 1:
+ jj_consume_token(1);
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ ;
+ }
+ jj_consume_token(2);
+ }
+
+ final public void parseAll() throws ParseException {
+ parse();
+ jj_consume_token(0);
+ }
+
+ final public void parse() throws ParseException {
+ Token type;
+ Token subtype;
+ type = jj_consume_token(ATOKEN);
+ jj_consume_token(3);
+ subtype = jj_consume_token(ATOKEN);
+ this.type = type.image;
+ this.subtype = subtype.image;
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 4:
+ ;
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ break label_1;
+ }
+ jj_consume_token(4);
+ parameter();
+ }
+ }
+
+ final public void parameter() throws ParseException {
+ Token attrib;
+ String val;
+ attrib = jj_consume_token(ATOKEN);
+ jj_consume_token(5);
+ val = value();
+ paramNames.add(attrib.image);
+ paramValues.add(val);
+ }
+
+ final public String value() throws ParseException {
+ Token t;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ATOKEN:
+ t = jj_consume_token(ATOKEN);
+ break;
+ case QUOTEDSTRING:
+ t = jj_consume_token(QUOTEDSTRING);
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return t.image;}
+ throw new Error("Missing return statement in function");
+ }
+
+ public ContentTypeParserTokenManager token_source;
+ SimpleCharStream jj_input_stream;
+ public Token token, jj_nt;
+ private int jj_ntk;
+ private int jj_gen;
+ final private int[] jj_la1 = new int[3];
+ static private int[] jj_la1_0;
+ static {
+ jj_la1_0();
+ }
+ private static void jj_la1_0() {
+ jj_la1_0 = new int[] {0x2,0x10,0x280000,};
+ }
+
+ public ContentTypeParser(java.io.InputStream stream) {
+ this(stream, null);
+ }
+ public ContentTypeParser(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source = new ContentTypeParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 3; i++) jj_la1[i] = -1;
+ }
+
+ public void ReInit(java.io.InputStream stream) {
+ ReInit(stream, null);
+ }
+ public void ReInit(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 3; i++) jj_la1[i] = -1;
+ }
+
+ public ContentTypeParser(java.io.Reader stream) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new ContentTypeParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 3; i++) jj_la1[i] = -1;
+ }
+
+ public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 3; i++) jj_la1[i] = -1;
+ }
+
+ public ContentTypeParser(ContentTypeParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 3; i++) jj_la1[i] = -1;
+ }
+
+ public void ReInit(ContentTypeParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 3; i++) jj_la1[i] = -1;
+ }
+
+ final private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ jj_gen++;
+ return token;
+ }
+ token = oldToken;
+ jj_kind = kind;
+ throw generateParseException();
+ }
+
+ final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ jj_gen++;
+ return token;
+ }
+
+ final public Token getToken(int index) {
+ Token t = token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ final private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ private Vector<int[]> jj_expentries = new Vector<int[]>();
+ private int[] jj_expentry;
+ private int jj_kind = -1;
+
+ public ParseException generateParseException() {
+ jj_expentries.removeAllElements();
+ boolean[] la1tokens = new boolean[24];
+ for (int i = 0; i < 24; i++) {
+ la1tokens[i] = false;
+ }
+ if (jj_kind >= 0) {
+ la1tokens[jj_kind] = true;
+ jj_kind = -1;
+ }
+ for (int i = 0; i < 3; i++) {
+ if (jj_la1[i] == jj_gen) {
+ for (int j = 0; j < 32; j++) {
+ if ((jj_la1_0[i] & (1<<j)) != 0) {
+ la1tokens[j] = true;
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 24; i++) {
+ if (la1tokens[i]) {
+ jj_expentry = new int[1];
+ jj_expentry[0] = i;
+ jj_expentries.addElement(jj_expentry);
+ }
+ }
+ int[][] exptokseq = new int[jj_expentries.size()][];
+ for (int i = 0; i < jj_expentries.size(); i++) {
+ exptokseq[i] = jj_expentries.elementAt(i);
+ }
+ return new ParseException(token, exptokseq, tokenImage);
+ }
+
+ final public void enable_tracing() {
+ }
+
+ final public void disable_tracing() {
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java
new file mode 100644
index 0000000..d933d80
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java
@@ -0,0 +1,62 @@
+/* Generated By:JavaCC: Do not edit this line. ContentTypeParserConstants.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
+
+public interface ContentTypeParserConstants {
+
+ int EOF = 0;
+ int WS = 6;
+ int COMMENT = 8;
+ int QUOTEDSTRING = 19;
+ int DIGITS = 20;
+ int ATOKEN = 21;
+ int QUOTEDPAIR = 22;
+ int ANY = 23;
+
+ int DEFAULT = 0;
+ int INCOMMENT = 1;
+ int NESTED_COMMENT = 2;
+ int INQUOTEDSTRING = 3;
+
+ String[] tokenImage = {
+ "<EOF>",
+ "\"\\r\"",
+ "\"\\n\"",
+ "\"/\"",
+ "\";\"",
+ "\"=\"",
+ "<WS>",
+ "\"(\"",
+ "\")\"",
+ "<token of kind 9>",
+ "\"(\"",
+ "<token of kind 11>",
+ "<token of kind 12>",
+ "\"(\"",
+ "\")\"",
+ "<token of kind 15>",
+ "\"\\\"\"",
+ "<token of kind 17>",
+ "<token of kind 18>",
+ "\"\\\"\"",
+ "<DIGITS>",
+ "<ATOKEN>",
+ "<QUOTEDPAIR>",
+ "<ANY>",
+ };
+
+}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java
new file mode 100644
index 0000000..25b7aba
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java
@@ -0,0 +1,877 @@
+/* Generated By:JavaCC: Do not edit this line. ContentTypeParserTokenManager.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
+import java.util.ArrayList;
+
+public class ContentTypeParserTokenManager implements ContentTypeParserConstants
+{
+ // Keeps track of how many levels of comment nesting
+ // we've encountered. This is only used when the 2nd
+ // level is reached, for example ((this)), not (this).
+ // This is because the outermost level must be treated
+ // specially anyway, because the outermost ")" has a
+ // different token type than inner ")" instances.
+ static int commentNest;
+ public java.io.PrintStream debugStream = System.out;
+ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private final int jjStopStringLiteralDfa_0(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_0(int pos, long active0)
+{
+ return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
+}
+private final int jjStopAtPos(int pos, int kind)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ return pos + 1;
+}
+private final int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_0(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_0()
+{
+ switch(curChar)
+ {
+ case 10:
+ return jjStartNfaWithStates_0(0, 2, 2);
+ case 13:
+ return jjStartNfaWithStates_0(0, 1, 2);
+ case 34:
+ return jjStopAtPos(0, 16);
+ case 40:
+ return jjStopAtPos(0, 7);
+ case 47:
+ return jjStopAtPos(0, 3);
+ case 59:
+ return jjStopAtPos(0, 4);
+ case 61:
+ return jjStopAtPos(0, 5);
+ default :
+ return jjMoveNfa_0(3, 0);
+ }
+}
+private final void jjCheckNAdd(int state)
+{
+ if (jjrounds[state] != jjround)
+ {
+ jjstateSet[jjnewStateCnt++] = state;
+ jjrounds[state] = jjround;
+ }
+}
+private final void jjAddStates(int start, int end)
+{
+ do {
+ jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+ } while (start++ != end);
+}
+private final void jjCheckNAddTwoStates(int state1, int state2)
+{
+ jjCheckNAdd(state1);
+ jjCheckNAdd(state2);
+}
+private final void jjCheckNAddStates(int start, int end)
+{
+ do {
+ jjCheckNAdd(jjnextStates[start]);
+ } while (start++ != end);
+}
+private final void jjCheckNAddStates(int start)
+{
+ jjCheckNAdd(jjnextStates[start]);
+ jjCheckNAdd(jjnextStates[start + 1]);
+}
+static final long[] jjbitVec0 = {
+ 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+private final int jjMoveNfa_0(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ if ((0x3ff6cfafffffdffL & l) != 0L)
+ {
+ if (kind > 21)
+ kind = 21;
+ jjCheckNAdd(2);
+ }
+ else if ((0x100000200L & l) != 0L)
+ {
+ if (kind > 6)
+ kind = 6;
+ jjCheckNAdd(0);
+ }
+ if ((0x3ff000000000000L & l) != 0L)
+ {
+ if (kind > 20)
+ kind = 20;
+ jjCheckNAdd(1);
+ }
+ break;
+ case 0:
+ if ((0x100000200L & l) == 0L)
+ break;
+ kind = 6;
+ jjCheckNAdd(0);
+ break;
+ case 1:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 20)
+ kind = 20;
+ jjCheckNAdd(1);
+ break;
+ case 2:
+ if ((0x3ff6cfafffffdffL & l) == 0L)
+ break;
+ if (kind > 21)
+ kind = 21;
+ jjCheckNAdd(2);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ case 2:
+ if ((0xffffffffc7fffffeL & l) == 0L)
+ break;
+ kind = 21;
+ jjCheckNAdd(2);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ case 2:
+ if ((jjbitVec0[i2] & l2) == 0L)
+ break;
+ if (kind > 21)
+ kind = 21;
+ jjCheckNAdd(2);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_1(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_1(int pos, long active0)
+{
+ return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_1(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_1(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_1()
+{
+ switch(curChar)
+ {
+ case 40:
+ return jjStopAtPos(0, 10);
+ case 41:
+ return jjStopAtPos(0, 8);
+ default :
+ return jjMoveNfa_1(0, 0);
+ }
+}
+private final int jjMoveNfa_1(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 11)
+ kind = 11;
+ break;
+ case 1:
+ if (kind > 9)
+ kind = 9;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 11)
+ kind = 11;
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 9)
+ kind = 9;
+ break;
+ case 2:
+ if (kind > 11)
+ kind = 11;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
+ kind = 11;
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
+ kind = 9;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_3(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_3(int pos, long active0)
+{
+ return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_3(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_3(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_3()
+{
+ switch(curChar)
+ {
+ case 34:
+ return jjStopAtPos(0, 19);
+ default :
+ return jjMoveNfa_3(0, 0);
+ }
+}
+private final int jjMoveNfa_3(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ case 2:
+ if ((0xfffffffbffffffffL & l) == 0L)
+ break;
+ if (kind > 18)
+ kind = 18;
+ jjCheckNAdd(2);
+ break;
+ case 1:
+ if (kind > 17)
+ kind = 17;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0xffffffffefffffffL & l) != 0L)
+ {
+ if (kind > 18)
+ kind = 18;
+ jjCheckNAdd(2);
+ }
+ else if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 17)
+ kind = 17;
+ break;
+ case 2:
+ if ((0xffffffffefffffffL & l) == 0L)
+ break;
+ if (kind > 18)
+ kind = 18;
+ jjCheckNAdd(2);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ case 2:
+ if ((jjbitVec0[i2] & l2) == 0L)
+ break;
+ if (kind > 18)
+ kind = 18;
+ jjCheckNAdd(2);
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 17)
+ kind = 17;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_2(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_2(int pos, long active0)
+{
+ return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_2(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_2(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_2()
+{
+ switch(curChar)
+ {
+ case 40:
+ return jjStopAtPos(0, 13);
+ case 41:
+ return jjStopAtPos(0, 14);
+ default :
+ return jjMoveNfa_2(0, 0);
+ }
+}
+private final int jjMoveNfa_2(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 15)
+ kind = 15;
+ break;
+ case 1:
+ if (kind > 12)
+ kind = 12;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 15)
+ kind = 15;
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 12)
+ kind = 12;
+ break;
+ case 2:
+ if (kind > 15)
+ kind = 15;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 15)
+ kind = 15;
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 12)
+ kind = 12;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+static final int[] jjnextStates = {
+};
+public static final String[] jjstrLiteralImages = {
+"", "\15", "\12", "\57", "\73", "\75", null, null, null, null, null, null,
+null, null, null, null, null, null, null, null, null, null, null, null, };
+public static final String[] lexStateNames = {
+ "DEFAULT",
+ "INCOMMENT",
+ "NESTED_COMMENT",
+ "INQUOTEDSTRING",
+};
+public static final int[] jjnewLexState = {
+ -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, 3, -1, -1, 0, -1, -1, -1, -1,
+};
+static final long[] jjtoToken = {
+ 0x38003fL,
+};
+static final long[] jjtoSkip = {
+ 0x140L,
+};
+static final long[] jjtoSpecial = {
+ 0x40L,
+};
+static final long[] jjtoMore = {
+ 0x7fe80L,
+};
+protected SimpleCharStream input_stream;
+private final int[] jjrounds = new int[3];
+private final int[] jjstateSet = new int[6];
+StringBuffer image;
+int jjimageLen;
+int lengthOfMatch;
+protected char curChar;
+public ContentTypeParserTokenManager(SimpleCharStream stream){
+ if (SimpleCharStream.staticFlag)
+ throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
+ input_stream = stream;
+}
+public ContentTypeParserTokenManager(SimpleCharStream stream, int lexState){
+ this(stream);
+ SwitchTo(lexState);
+}
+public void ReInit(SimpleCharStream stream)
+{
+ jjmatchedPos = jjnewStateCnt = 0;
+ curLexState = defaultLexState;
+ input_stream = stream;
+ ReInitRounds();
+}
+private final void ReInitRounds()
+{
+ int i;
+ jjround = 0x80000001;
+ for (i = 3; i-- > 0;)
+ jjrounds[i] = 0x80000000;
+}
+public void ReInit(SimpleCharStream stream, int lexState)
+{
+ ReInit(stream);
+ SwitchTo(lexState);
+}
+public void SwitchTo(int lexState)
+{
+ if (lexState >= 4 || lexState < 0)
+ throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+ else
+ curLexState = lexState;
+}
+
+protected Token jjFillToken()
+{
+ Token t = Token.newToken(jjmatchedKind);
+ t.kind = jjmatchedKind;
+ String im = jjstrLiteralImages[jjmatchedKind];
+ t.image = (im == null) ? input_stream.GetImage() : im;
+ t.beginLine = input_stream.getBeginLine();
+ t.beginColumn = input_stream.getBeginColumn();
+ t.endLine = input_stream.getEndLine();
+ t.endColumn = input_stream.getEndColumn();
+ return t;
+}
+
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
+
+public Token getNextToken()
+{
+ int kind;
+ Token specialToken = null;
+ Token matchedToken;
+ int curPos = 0;
+
+ EOFLoop :
+ for (;;)
+ {
+ try
+ {
+ curChar = input_stream.BeginToken();
+ }
+ catch(java.io.IOException e)
+ {
+ jjmatchedKind = 0;
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ return matchedToken;
+ }
+ image = null;
+ jjimageLen = 0;
+
+ for (;;)
+ {
+ switch(curLexState)
+ {
+ case 0:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_0();
+ break;
+ case 1:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_1();
+ break;
+ case 2:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_2();
+ break;
+ case 3:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_3();
+ break;
+ }
+ if (jjmatchedKind != 0x7fffffff)
+ {
+ if (jjmatchedPos + 1 < curPos)
+ input_stream.backup(curPos - jjmatchedPos - 1);
+ if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ TokenLexicalActions(matchedToken);
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ return matchedToken;
+ }
+ else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ if (specialToken == null)
+ specialToken = matchedToken;
+ else
+ {
+ matchedToken.specialToken = specialToken;
+ specialToken = (specialToken.next = matchedToken);
+ }
+ }
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ continue EOFLoop;
+ }
+ MoreLexicalActions();
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ curPos = 0;
+ jjmatchedKind = 0x7fffffff;
+ try {
+ curChar = input_stream.readChar();
+ continue;
+ }
+ catch (java.io.IOException e1) { }
+ }
+ int error_line = input_stream.getEndLine();
+ int error_column = input_stream.getEndColumn();
+ String error_after = null;
+ boolean EOFSeen = false;
+ try { input_stream.readChar(); input_stream.backup(1); }
+ catch (java.io.IOException e1) {
+ EOFSeen = true;
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ if (curChar == '\n' || curChar == '\r') {
+ error_line++;
+ error_column = 0;
+ }
+ else
+ error_column++;
+ }
+ if (!EOFSeen) {
+ input_stream.backup(1);
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ }
+ throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+ }
+ }
+}
+
+void MoreLexicalActions()
+{
+ jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+ switch(jjmatchedKind)
+ {
+ case 9 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ case 10 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ commentNest = 1;
+ break;
+ case 12 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ case 13 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ ++commentNest;
+ break;
+ case 14 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
+ break;
+ case 16 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 1);
+ break;
+ case 17 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ default :
+ break;
+ }
+}
+void TokenLexicalActions(Token matchedToken)
+{
+ switch(jjmatchedKind)
+ {
+ case 19 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
+ matchedToken.image = image.substring(0, image.length() - 1);
+ break;
+ default :
+ break;
+ }
+}
+}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ParseException.java b/src/org/apache/james/mime4j/field/contenttype/parser/ParseException.java
new file mode 100644
index 0000000..d9b69b2
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/contenttype/parser/ParseException.java
@@ -0,0 +1,207 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+ /**
+ * This constructor is used by the method "generateParseException"
+ * in the generated parser. Calling this constructor generates
+ * a new object of this type with the fields "currentToken",
+ * "expectedTokenSequences", and "tokenImage" set. The boolean
+ * flag "specialConstructor" is also set to true to indicate that
+ * this constructor was used to create this object.
+ * This constructor calls its super class with the empty string
+ * to force the "toString" method of parent class "Throwable" to
+ * print the error message in the form:
+ * ParseException: <result of getMessage>
+ */
+ public ParseException(Token currentTokenVal,
+ int[][] expectedTokenSequencesVal,
+ String[] tokenImageVal
+ )
+ {
+ super("");
+ specialConstructor = true;
+ currentToken = currentTokenVal;
+ expectedTokenSequences = expectedTokenSequencesVal;
+ tokenImage = tokenImageVal;
+ }
+
+ /**
+ * The following constructors are for use by you for whatever
+ * purpose you can think of. Constructing the exception in this
+ * manner makes the exception behave in the normal way - i.e., as
+ * documented in the class "Throwable". The fields "errorToken",
+ * "expectedTokenSequences", and "tokenImage" do not contain
+ * relevant information. The JavaCC generated code does not use
+ * these constructors.
+ */
+
+ public ParseException() {
+ super();
+ specialConstructor = false;
+ }
+
+ public ParseException(String message) {
+ super(message);
+ specialConstructor = false;
+ }
+
+ /**
+ * This variable determines which constructor was used to create
+ * this object and thereby affects the semantics of the
+ * "getMessage" method (see below).
+ */
+ protected boolean specialConstructor;
+
+ /**
+ * This is the last token that has been consumed successfully. If
+ * this object has been created due to a parse error, the token
+ * followng this token will (therefore) be the first error token.
+ */
+ public Token currentToken;
+
+ /**
+ * Each entry in this array is an array of integers. Each array
+ * of integers represents a sequence of tokens (by their ordinal
+ * values) that is expected at this point of the parse.
+ */
+ public int[][] expectedTokenSequences;
+
+ /**
+ * This is a reference to the "tokenImage" array of the generated
+ * parser within which the parse error occurred. This array is
+ * defined in the generated ...Constants interface.
+ */
+ public String[] tokenImage;
+
+ /**
+ * This method has the standard behavior when this object has been
+ * created using the standard constructors. Otherwise, it uses
+ * "currentToken" and "expectedTokenSequences" to generate a parse
+ * error message and returns it. If this object has been created
+ * due to a parse error, and you do not catch it (it gets thrown
+ * from the parser), then this method is called during the printing
+ * of the final stack trace, and hence the correct error message
+ * gets displayed.
+ */
+ public String getMessage() {
+ if (!specialConstructor) {
+ return super.getMessage();
+ }
+ StringBuffer expected = new StringBuffer();
+ int maxSize = 0;
+ for (int i = 0; i < expectedTokenSequences.length; i++) {
+ if (maxSize < expectedTokenSequences[i].length) {
+ maxSize = expectedTokenSequences[i].length;
+ }
+ for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
+ }
+ if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+ expected.append("...");
+ }
+ expected.append(eol).append(" ");
+ }
+ String retval = "Encountered \"";
+ Token tok = currentToken.next;
+ for (int i = 0; i < maxSize; i++) {
+ if (i != 0) retval += " ";
+ if (tok.kind == 0) {
+ retval += tokenImage[0];
+ break;
+ }
+ retval += add_escapes(tok.image);
+ tok = tok.next;
+ }
+ retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+ retval += "." + eol;
+ if (expectedTokenSequences.length == 1) {
+ retval += "Was expecting:" + eol + " ";
+ } else {
+ retval += "Was expecting one of:" + eol + " ";
+ }
+ retval += expected.toString();
+ return retval;
+ }
+
+ /**
+ * The end of line string for this machine.
+ */
+ protected String eol = System.getProperty("line.separator", "\n");
+
+ /**
+ * Used to convert raw characters to their escaped version
+ * when these raw version cannot be used as part of an ASCII
+ * string literal.
+ */
+ protected String add_escapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java b/src/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java
new file mode 100644
index 0000000..ae035b7
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java
@@ -0,0 +1,454 @@
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (without unicode processing).
+ */
+
+public class SimpleCharStream
+{
+ public static final boolean staticFlag = false;
+ int bufsize;
+ int available;
+ int tokenBegin;
+ public int bufpos = -1;
+ protected int bufline[];
+ protected int bufcolumn[];
+
+ protected int column = 0;
+ protected int line = 1;
+
+ protected boolean prevCharIsCR = false;
+ protected boolean prevCharIsLF = false;
+
+ protected java.io.Reader inputStream;
+
+ protected char[] buffer;
+ protected int maxNextCharInd = 0;
+ protected int inBuf = 0;
+ protected int tabSize = 8;
+
+ protected void setTabSize(int i) { tabSize = i; }
+ protected int getTabSize(int i) { return tabSize; }
+
+
+ protected void ExpandBuff(boolean wrapAround)
+ {
+ char[] newbuffer = new char[bufsize + 2048];
+ int newbufline[] = new int[bufsize + 2048];
+ int newbufcolumn[] = new int[bufsize + 2048];
+
+ try
+ {
+ if (wrapAround)
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ System.arraycopy(buffer, 0, newbuffer,
+ bufsize - tokenBegin, bufpos);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos += (bufsize - tokenBegin));
+ }
+ else
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos -= tokenBegin);
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new Error(t.getMessage());
+ }
+
+
+ bufsize += 2048;
+ available = bufsize;
+ tokenBegin = 0;
+ }
+
+ protected void FillBuff() throws java.io.IOException
+ {
+ if (maxNextCharInd == available)
+ {
+ if (available == bufsize)
+ {
+ if (tokenBegin > 2048)
+ {
+ bufpos = maxNextCharInd = 0;
+ available = tokenBegin;
+ }
+ else if (tokenBegin < 0)
+ bufpos = maxNextCharInd = 0;
+ else
+ ExpandBuff(false);
+ }
+ else if (available > tokenBegin)
+ available = bufsize;
+ else if ((tokenBegin - available) < 2048)
+ ExpandBuff(true);
+ else
+ available = tokenBegin;
+ }
+
+ int i;
+ try {
+ if ((i = inputStream.read(buffer, maxNextCharInd,
+ available - maxNextCharInd)) == -1)
+ {
+ inputStream.close();
+ throw new java.io.IOException();
+ }
+ else
+ maxNextCharInd += i;
+ return;
+ }
+ catch(java.io.IOException e) {
+ --bufpos;
+ backup(0);
+ if (tokenBegin == -1)
+ tokenBegin = bufpos;
+ throw e;
+ }
+ }
+
+ public char BeginToken() throws java.io.IOException
+ {
+ tokenBegin = -1;
+ char c = readChar();
+ tokenBegin = bufpos;
+
+ return c;
+ }
+
+ protected void UpdateLineColumn(char c)
+ {
+ column++;
+
+ if (prevCharIsLF)
+ {
+ prevCharIsLF = false;
+ line += (column = 1);
+ }
+ else if (prevCharIsCR)
+ {
+ prevCharIsCR = false;
+ if (c == '\n')
+ {
+ prevCharIsLF = true;
+ }
+ else
+ line += (column = 1);
+ }
+
+ switch (c)
+ {
+ case '\r' :
+ prevCharIsCR = true;
+ break;
+ case '\n' :
+ prevCharIsLF = true;
+ break;
+ case '\t' :
+ column--;
+ column += (tabSize - (column % tabSize));
+ break;
+ default :
+ break;
+ }
+
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+
+ public char readChar() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ return buffer[bufpos];
+ }
+
+ if (++bufpos >= maxNextCharInd)
+ FillBuff();
+
+ char c = buffer[bufpos];
+
+ UpdateLineColumn(c);
+ return (c);
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndColumn
+ */
+ @Deprecated
+ public int getColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndLine
+ */
+ @Deprecated
+ public int getLine() {
+ return bufline[bufpos];
+ }
+
+ public int getEndColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ public int getEndLine() {
+ return bufline[bufpos];
+ }
+
+ public int getBeginColumn() {
+ return bufcolumn[tokenBegin];
+ }
+
+ public int getBeginLine() {
+ return bufline[tokenBegin];
+ }
+
+ public void backup(int amount) {
+
+ inBuf += amount;
+ if ((bufpos -= amount) < 0)
+ bufpos += bufsize;
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.Reader dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ if (buffer == null || buffersize != buffer.length)
+ {
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+ prevCharIsLF = prevCharIsCR = false;
+ tokenBegin = inBuf = maxNextCharInd = 0;
+ bufpos = -1;
+ }
+
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+
+ public void ReInit(java.io.Reader dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, 1, 1, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+
+ public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, 1, 1, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, startline, startcolumn, 4096);
+ }
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+ public String GetImage()
+ {
+ if (bufpos >= tokenBegin)
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+ else
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+ new String(buffer, 0, bufpos + 1);
+ }
+
+ public char[] GetSuffix(int len)
+ {
+ char[] ret = new char[len];
+
+ if ((bufpos + 1) >= len)
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+ else
+ {
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+ len - bufpos - 1);
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+ }
+
+ return ret;
+ }
+
+ public void Done()
+ {
+ buffer = null;
+ bufline = null;
+ bufcolumn = null;
+ }
+
+ /**
+ * Method to adjust line and column numbers for the start of a token.
+ */
+ public void adjustBeginLineColumn(int newLine, int newCol)
+ {
+ int start = tokenBegin;
+ int len;
+
+ if (bufpos >= tokenBegin)
+ {
+ len = bufpos - tokenBegin + inBuf + 1;
+ }
+ else
+ {
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+ }
+
+ int i = 0, j = 0, k = 0;
+ int nextColDiff = 0, columnDiff = 0;
+
+ while (i < len &&
+ bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+ {
+ bufline[j] = newLine;
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+ bufcolumn[j] = newCol + columnDiff;
+ columnDiff = nextColDiff;
+ i++;
+ }
+
+ if (i < len)
+ {
+ bufline[j] = newLine++;
+ bufcolumn[j] = newCol + columnDiff;
+
+ while (i++ < len)
+ {
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+ bufline[j] = newLine++;
+ else
+ bufline[j] = newLine;
+ }
+ }
+
+ line = bufline[j];
+ column = bufcolumn[j];
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/Token.java b/src/org/apache/james/mime4j/field/contenttype/parser/Token.java
new file mode 100644
index 0000000..34e65ee
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/contenttype/parser/Token.java
@@ -0,0 +1,96 @@
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token {
+
+ /**
+ * An integer that describes the kind of this token. This numbering
+ * system is determined by JavaCCParser, and a table of these numbers is
+ * stored in the file ...Constants.java.
+ */
+ public int kind;
+
+ /**
+ * beginLine and beginColumn describe the position of the first character
+ * of this token; endLine and endColumn describe the position of the
+ * last character of this token.
+ */
+ public int beginLine, beginColumn, endLine, endColumn;
+
+ /**
+ * The string image of the token.
+ */
+ public String image;
+
+ /**
+ * A reference to the next regular (non-special) token from the input
+ * stream. If this is the last token from the input stream, or if the
+ * token manager has not read tokens beyond this one, this field is
+ * set to null. This is true only if this token is also a regular
+ * token. Otherwise, see below for a description of the contents of
+ * this field.
+ */
+ public Token next;
+
+ /**
+ * This field is used to access special tokens that occur prior to this
+ * token, but after the immediately preceding regular (non-special) token.
+ * If there are no such special tokens, this field is set to null.
+ * When there are more than one such special token, this field refers
+ * to the last of these special tokens, which in turn refers to the next
+ * previous special token through its specialToken field, and so on
+ * until the first special token (whose specialToken field is null).
+ * The next fields of special tokens refer to other special tokens that
+ * immediately follow it (without an intervening regular token). If there
+ * is no such token, this field is null.
+ */
+ public Token specialToken;
+
+ /**
+ * Returns the image.
+ */
+ public String toString()
+ {
+ return image;
+ }
+
+ /**
+ * Returns a new Token object, by default. However, if you want, you
+ * can create and return subclass objects based on the value of ofKind.
+ * Simply add the cases to the switch for all those special cases.
+ * For example, if you have a subclass of Token called IDToken that
+ * you want to create if ofKind is ID, simlpy add something like :
+ *
+ * case MyParserConstants.ID : return new IDToken();
+ *
+ * to the following switch statement. Then you can cast matchedToken
+ * variable to the appropriate type and use it in your lexical actions.
+ */
+ public static final Token newToken(int ofKind)
+ {
+ switch(ofKind)
+ {
+ default : return new Token();
+ }
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java b/src/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java
new file mode 100644
index 0000000..ea5a782
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java
@@ -0,0 +1,148 @@
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.contenttype.parser;
+
+public class TokenMgrError extends Error
+{
+ /*
+ * Ordinals for various reasons why an Error of this type can be thrown.
+ */
+
+ /**
+ * Lexical error occured.
+ */
+ static final int LEXICAL_ERROR = 0;
+
+ /**
+ * An attempt wass made to create a second instance of a static token manager.
+ */
+ static final int STATIC_LEXER_ERROR = 1;
+
+ /**
+ * Tried to change to an invalid lexical state.
+ */
+ static final int INVALID_LEXICAL_STATE = 2;
+
+ /**
+ * Detected (and bailed out of) an infinite loop in the token manager.
+ */
+ static final int LOOP_DETECTED = 3;
+
+ /**
+ * Indicates the reason why the exception is thrown. It will have
+ * one of the above 4 values.
+ */
+ int errorCode;
+
+ /**
+ * Replaces unprintable characters by their espaced (or unicode escaped)
+ * equivalents in the given string
+ */
+ protected static final String addEscapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+ /**
+ * Returns a detailed message for the Error when it is thrown by the
+ * token manager to indicate a lexical error.
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexicl error
+ * curLexState : lexical state in which this error occured
+ * errorLine : line number when the error occured
+ * errorColumn : column number when the error occured
+ * errorAfter : prefix that was seen before this error occured
+ * curchar : the offending character
+ * Note: You can customize the lexical error message by modifying this method.
+ */
+ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+ return("Lexical error at line " +
+ errorLine + ", column " +
+ errorColumn + ". Encountered: " +
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+ "after : \"" + addEscapes(errorAfter) + "\"");
+ }
+
+ /**
+ * You can also modify the body of this method to customize your error messages.
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+ * of end-users concern, so you can return something like :
+ *
+ * "Internal Error : Please file a bug report .... "
+ *
+ * from this method for such cases in the release version of your parser.
+ */
+ public String getMessage() {
+ return super.getMessage();
+ }
+
+ /*
+ * Constructors of various flavors follow.
+ */
+
+ public TokenMgrError() {
+ }
+
+ public TokenMgrError(String message, int reason) {
+ super(message);
+ errorCode = reason;
+ }
+
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/DateTime.java b/src/org/apache/james/mime4j/field/datetime/DateTime.java
new file mode 100644
index 0000000..506ff54
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/DateTime.java
@@ -0,0 +1,127 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.field.datetime;
+
+import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
+import org.apache.james.mime4j.field.datetime.parser.ParseException;
+import org.apache.james.mime4j.field.datetime.parser.TokenMgrError;
+
+import java.util.Date;
+import java.util.Calendar;
+import java.util.TimeZone;
+import java.util.GregorianCalendar;
+import java.io.StringReader;
+
+public class DateTime {
+ private final Date date;
+ private final int year;
+ private final int month;
+ private final int day;
+ private final int hour;
+ private final int minute;
+ private final int second;
+ private final int timeZone;
+
+ public DateTime(String yearString, int month, int day, int hour, int minute, int second, int timeZone) {
+ this.year = convertToYear(yearString);
+ this.date = convertToDate(year, month, day, hour, minute, second, timeZone);
+ this.month = month;
+ this.day = day;
+ this.hour = hour;
+ this.minute = minute;
+ this.second = second;
+ this.timeZone = timeZone;
+ }
+
+ private int convertToYear(String yearString) {
+ int year = Integer.parseInt(yearString);
+ switch (yearString.length()) {
+ case 1:
+ case 2:
+ if (year >= 0 && year < 50)
+ return 2000 + year;
+ else
+ return 1900 + year;
+ case 3:
+ return 1900 + year;
+ default:
+ return year;
+ }
+ }
+
+ public static Date convertToDate(int year, int month, int day, int hour, int minute, int second, int timeZone) {
+ Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT+0"));
+ c.set(year, month - 1, day, hour, minute, second);
+ c.set(Calendar.MILLISECOND, 0);
+
+ if (timeZone != Integer.MIN_VALUE) {
+ int minutes = ((timeZone / 100) * 60) + timeZone % 100;
+ c.add(Calendar.MINUTE, -1 * minutes);
+ }
+
+ return c.getTime();
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public int getYear() {
+ return year;
+ }
+
+ public int getMonth() {
+ return month;
+ }
+
+ public int getDay() {
+ return day;
+ }
+
+ public int getHour() {
+ return hour;
+ }
+
+ public int getMinute() {
+ return minute;
+ }
+
+ public int getSecond() {
+ return second;
+ }
+
+ public int getTimeZone() {
+ return timeZone;
+ }
+
+ public void print() {
+ System.out.println(getYear() + " " + getMonth() + " " + getDay() + "; " + getHour() + " " + getMinute() + " " + getSecond() + " " + getTimeZone());
+ }
+
+
+ public static DateTime parse(String dateString) throws ParseException {
+ try {
+ return new DateTimeParser(new StringReader(dateString)).parseAll();
+ }
+ catch (TokenMgrError err) {
+ throw new ParseException(err.getMessage());
+ }
+ }
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java
new file mode 100644
index 0000000..43edebb
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java
@@ -0,0 +1,570 @@
+/* Generated By:JavaCC: Do not edit this line. DateTimeParser.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
+
+import org.apache.james.mime4j.field.datetime.DateTime;
+
+import java.util.Vector;
+
+public class DateTimeParser implements DateTimeParserConstants {
+ private static final boolean ignoreMilitaryZoneOffset = true;
+
+ public static void main(String args[]) throws ParseException {
+ while (true) {
+ try {
+ DateTimeParser parser = new DateTimeParser(System.in);
+ parser.parseLine();
+ } catch (Exception x) {
+ x.printStackTrace();
+ return;
+ }
+ }
+ }
+
+ private static int parseDigits(Token token) {
+ return Integer.parseInt(token.image, 10);
+ }
+
+ private static int getMilitaryZoneOffset(char c) {
+ if (ignoreMilitaryZoneOffset)
+ return 0;
+
+ c = Character.toUpperCase(c);
+
+ switch (c) {
+ case 'A': return 1;
+ case 'B': return 2;
+ case 'C': return 3;
+ case 'D': return 4;
+ case 'E': return 5;
+ case 'F': return 6;
+ case 'G': return 7;
+ case 'H': return 8;
+ case 'I': return 9;
+ case 'K': return 10;
+ case 'L': return 11;
+ case 'M': return 12;
+
+ case 'N': return -1;
+ case 'O': return -2;
+ case 'P': return -3;
+ case 'Q': return -4;
+ case 'R': return -5;
+ case 'S': return -6;
+ case 'T': return -7;
+ case 'U': return -8;
+ case 'V': return -9;
+ case 'W': return -10;
+ case 'X': return -11;
+ case 'Y': return -12;
+
+ case 'Z': return 0;
+ default: return 0;
+ }
+ }
+
+ private static class Time {
+ private int hour;
+ private int minute;
+ private int second;
+ private int zone;
+
+ public Time(int hour, int minute, int second, int zone) {
+ this.hour = hour;
+ this.minute = minute;
+ this.second = second;
+ this.zone = zone;
+ }
+
+ public int getHour() { return hour; }
+ public int getMinute() { return minute; }
+ public int getSecond() { return second; }
+ public int getZone() { return zone; }
+ }
+
+ private static class Date {
+ private String year;
+ private int month;
+ private int day;
+
+ public Date(String year, int month, int day) {
+ this.year = year;
+ this.month = month;
+ this.day = day;
+ }
+
+ public String getYear() { return year; }
+ public int getMonth() { return month; }
+ public int getDay() { return day; }
+ }
+
+ final public DateTime parseLine() throws ParseException {
+ DateTime dt;
+ dt = date_time();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 1:
+ jj_consume_token(1);
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ ;
+ }
+ jj_consume_token(2);
+ {if (true) return dt;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public DateTime parseAll() throws ParseException {
+ DateTime dt;
+ dt = date_time();
+ jj_consume_token(0);
+ {if (true) return dt;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public DateTime date_time() throws ParseException {
+ Date d; Time t;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ day_of_week();
+ jj_consume_token(3);
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ ;
+ }
+ d = date();
+ t = time();
+ {if (true) return new DateTime(
+ d.getYear(),
+ d.getMonth(),
+ d.getDay(),
+ t.getHour(),
+ t.getMinute(),
+ t.getSecond(),
+ t.getZone());} // time zone offset
+
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String day_of_week() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 4:
+ jj_consume_token(4);
+ break;
+ case 5:
+ jj_consume_token(5);
+ break;
+ case 6:
+ jj_consume_token(6);
+ break;
+ case 7:
+ jj_consume_token(7);
+ break;
+ case 8:
+ jj_consume_token(8);
+ break;
+ case 9:
+ jj_consume_token(9);
+ break;
+ case 10:
+ jj_consume_token(10);
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return token.image;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Date date() throws ParseException {
+ int d, m; String y;
+ d = day();
+ m = month();
+ y = year();
+ {if (true) return new Date(y, m, d);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public int day() throws ParseException {
+ Token t;
+ t = jj_consume_token(DIGITS);
+ {if (true) return parseDigits(t);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public int month() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 11:
+ jj_consume_token(11);
+ {if (true) return 1;}
+ break;
+ case 12:
+ jj_consume_token(12);
+ {if (true) return 2;}
+ break;
+ case 13:
+ jj_consume_token(13);
+ {if (true) return 3;}
+ break;
+ case 14:
+ jj_consume_token(14);
+ {if (true) return 4;}
+ break;
+ case 15:
+ jj_consume_token(15);
+ {if (true) return 5;}
+ break;
+ case 16:
+ jj_consume_token(16);
+ {if (true) return 6;}
+ break;
+ case 17:
+ jj_consume_token(17);
+ {if (true) return 7;}
+ break;
+ case 18:
+ jj_consume_token(18);
+ {if (true) return 8;}
+ break;
+ case 19:
+ jj_consume_token(19);
+ {if (true) return 9;}
+ break;
+ case 20:
+ jj_consume_token(20);
+ {if (true) return 10;}
+ break;
+ case 21:
+ jj_consume_token(21);
+ {if (true) return 11;}
+ break;
+ case 22:
+ jj_consume_token(22);
+ {if (true) return 12;}
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String year() throws ParseException {
+ Token t;
+ t = jj_consume_token(DIGITS);
+ {if (true) return t.image;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Time time() throws ParseException {
+ int h, m, s=0, z;
+ h = hour();
+ jj_consume_token(23);
+ m = minute();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 23:
+ jj_consume_token(23);
+ s = second();
+ break;
+ default:
+ jj_la1[4] = jj_gen;
+ ;
+ }
+ z = zone();
+ {if (true) return new Time(h, m, s, z);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public int hour() throws ParseException {
+ Token t;
+ t = jj_consume_token(DIGITS);
+ {if (true) return parseDigits(t);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public int minute() throws ParseException {
+ Token t;
+ t = jj_consume_token(DIGITS);
+ {if (true) return parseDigits(t);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public int second() throws ParseException {
+ Token t;
+ t = jj_consume_token(DIGITS);
+ {if (true) return parseDigits(t);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public int zone() throws ParseException {
+ Token t, u; int z;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case OFFSETDIR:
+ t = jj_consume_token(OFFSETDIR);
+ u = jj_consume_token(DIGITS);
+ z=parseDigits(u)*(t.image.equals("-") ? -1 : 1);
+ break;
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case MILITARY_ZONE:
+ z = obs_zone();
+ break;
+ default:
+ jj_la1[5] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return z;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public int obs_zone() throws ParseException {
+ Token t; int z;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 25:
+ jj_consume_token(25);
+ z=0;
+ break;
+ case 26:
+ jj_consume_token(26);
+ z=0;
+ break;
+ case 27:
+ jj_consume_token(27);
+ z=-5;
+ break;
+ case 28:
+ jj_consume_token(28);
+ z=-4;
+ break;
+ case 29:
+ jj_consume_token(29);
+ z=-6;
+ break;
+ case 30:
+ jj_consume_token(30);
+ z=-5;
+ break;
+ case 31:
+ jj_consume_token(31);
+ z=-7;
+ break;
+ case 32:
+ jj_consume_token(32);
+ z=-6;
+ break;
+ case 33:
+ jj_consume_token(33);
+ z=-8;
+ break;
+ case 34:
+ jj_consume_token(34);
+ z=-7;
+ break;
+ case MILITARY_ZONE:
+ t = jj_consume_token(MILITARY_ZONE);
+ z=getMilitaryZoneOffset(t.image.charAt(0));
+ break;
+ default:
+ jj_la1[6] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return z * 100;}
+ throw new Error("Missing return statement in function");
+ }
+
+ public DateTimeParserTokenManager token_source;
+ SimpleCharStream jj_input_stream;
+ public Token token, jj_nt;
+ private int jj_ntk;
+ private int jj_gen;
+ final private int[] jj_la1 = new int[7];
+ static private int[] jj_la1_0;
+ static private int[] jj_la1_1;
+ static {
+ jj_la1_0();
+ jj_la1_1();
+ }
+ private static void jj_la1_0() {
+ jj_la1_0 = new int[] {0x2,0x7f0,0x7f0,0x7ff800,0x800000,0xff000000,0xfe000000,};
+ }
+ private static void jj_la1_1() {
+ jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0xf,0xf,};
+ }
+
+ public DateTimeParser(java.io.InputStream stream) {
+ this(stream, null);
+ }
+ public DateTimeParser(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source = new DateTimeParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 7; i++) jj_la1[i] = -1;
+ }
+
+ public void ReInit(java.io.InputStream stream) {
+ ReInit(stream, null);
+ }
+ public void ReInit(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 7; i++) jj_la1[i] = -1;
+ }
+
+ public DateTimeParser(java.io.Reader stream) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new DateTimeParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 7; i++) jj_la1[i] = -1;
+ }
+
+ public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 7; i++) jj_la1[i] = -1;
+ }
+
+ public DateTimeParser(DateTimeParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 7; i++) jj_la1[i] = -1;
+ }
+
+ public void ReInit(DateTimeParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 7; i++) jj_la1[i] = -1;
+ }
+
+ final private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ jj_gen++;
+ return token;
+ }
+ token = oldToken;
+ jj_kind = kind;
+ throw generateParseException();
+ }
+
+ final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ jj_gen++;
+ return token;
+ }
+
+ final public Token getToken(int index) {
+ Token t = token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ final private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ private Vector<int[]> jj_expentries = new Vector<int[]>();
+ private int[] jj_expentry;
+ private int jj_kind = -1;
+
+ public ParseException generateParseException() {
+ jj_expentries.removeAllElements();
+ boolean[] la1tokens = new boolean[49];
+ for (int i = 0; i < 49; i++) {
+ la1tokens[i] = false;
+ }
+ if (jj_kind >= 0) {
+ la1tokens[jj_kind] = true;
+ jj_kind = -1;
+ }
+ for (int i = 0; i < 7; i++) {
+ if (jj_la1[i] == jj_gen) {
+ for (int j = 0; j < 32; j++) {
+ if ((jj_la1_0[i] & (1<<j)) != 0) {
+ la1tokens[j] = true;
+ }
+ if ((jj_la1_1[i] & (1<<j)) != 0) {
+ la1tokens[32+j] = true;
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 49; i++) {
+ if (la1tokens[i]) {
+ jj_expentry = new int[1];
+ jj_expentry[0] = i;
+ jj_expentries.addElement(jj_expentry);
+ }
+ }
+ int[][] exptokseq = new int[jj_expentries.size()][];
+ for (int i = 0; i < jj_expentries.size(); i++) {
+ exptokseq[i] = jj_expentries.elementAt(i);
+ }
+ return new ParseException(token, exptokseq, tokenImage);
+ }
+
+ final public void enable_tracing() {
+ }
+
+ final public void disable_tracing() {
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java
new file mode 100644
index 0000000..2c203db
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java
@@ -0,0 +1,86 @@
+/* Generated By:JavaCC: Do not edit this line. DateTimeParserConstants.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
+
+public interface DateTimeParserConstants {
+
+ int EOF = 0;
+ int OFFSETDIR = 24;
+ int MILITARY_ZONE = 35;
+ int WS = 36;
+ int COMMENT = 38;
+ int DIGITS = 46;
+ int QUOTEDPAIR = 47;
+ int ANY = 48;
+
+ int DEFAULT = 0;
+ int INCOMMENT = 1;
+ int NESTED_COMMENT = 2;
+
+ String[] tokenImage = {
+ "<EOF>",
+ "\"\\r\"",
+ "\"\\n\"",
+ "\",\"",
+ "\"Mon\"",
+ "\"Tue\"",
+ "\"Wed\"",
+ "\"Thu\"",
+ "\"Fri\"",
+ "\"Sat\"",
+ "\"Sun\"",
+ "\"Jan\"",
+ "\"Feb\"",
+ "\"Mar\"",
+ "\"Apr\"",
+ "\"May\"",
+ "\"Jun\"",
+ "\"Jul\"",
+ "\"Aug\"",
+ "\"Sep\"",
+ "\"Oct\"",
+ "\"Nov\"",
+ "\"Dec\"",
+ "\":\"",
+ "<OFFSETDIR>",
+ "\"UT\"",
+ "\"GMT\"",
+ "\"EST\"",
+ "\"EDT\"",
+ "\"CST\"",
+ "\"CDT\"",
+ "\"MST\"",
+ "\"MDT\"",
+ "\"PST\"",
+ "\"PDT\"",
+ "<MILITARY_ZONE>",
+ "<WS>",
+ "\"(\"",
+ "\")\"",
+ "<token of kind 39>",
+ "\"(\"",
+ "<token of kind 41>",
+ "<token of kind 42>",
+ "\"(\"",
+ "\")\"",
+ "<token of kind 45>",
+ "<DIGITS>",
+ "<QUOTEDPAIR>",
+ "<ANY>",
+ };
+
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java
new file mode 100644
index 0000000..4b2d2fd
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java
@@ -0,0 +1,882 @@
+/* Generated By:JavaCC: Do not edit this line. DateTimeParserTokenManager.java */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
+import org.apache.james.mime4j.field.datetime.DateTime;
+import java.util.Calendar;
+
+public class DateTimeParserTokenManager implements DateTimeParserConstants
+{
+ // Keeps track of how many levels of comment nesting
+ // we've encountered. This is only used when the 2nd
+ // level is reached, for example ((this)), not (this).
+ // This is because the outermost level must be treated
+ // specially anyway, because the outermost ")" has a
+ // different token type than inner ")" instances.
+ static int commentNest;
+ public java.io.PrintStream debugStream = System.out;
+ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private final int jjStopStringLiteralDfa_0(int pos, long active0)
+{
+ switch (pos)
+ {
+ case 0:
+ if ((active0 & 0x7fe7cf7f0L) != 0L)
+ {
+ jjmatchedKind = 35;
+ return -1;
+ }
+ return -1;
+ case 1:
+ if ((active0 & 0x7fe7cf7f0L) != 0L)
+ {
+ if (jjmatchedPos == 0)
+ {
+ jjmatchedKind = 35;
+ jjmatchedPos = 0;
+ }
+ return -1;
+ }
+ return -1;
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_0(int pos, long active0)
+{
+ return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
+}
+private final int jjStopAtPos(int pos, int kind)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ return pos + 1;
+}
+private final int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_0(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_0()
+{
+ switch(curChar)
+ {
+ case 10:
+ return jjStopAtPos(0, 2);
+ case 13:
+ return jjStopAtPos(0, 1);
+ case 40:
+ return jjStopAtPos(0, 37);
+ case 44:
+ return jjStopAtPos(0, 3);
+ case 58:
+ return jjStopAtPos(0, 23);
+ case 65:
+ return jjMoveStringLiteralDfa1_0(0x44000L);
+ case 67:
+ return jjMoveStringLiteralDfa1_0(0x60000000L);
+ case 68:
+ return jjMoveStringLiteralDfa1_0(0x400000L);
+ case 69:
+ return jjMoveStringLiteralDfa1_0(0x18000000L);
+ case 70:
+ return jjMoveStringLiteralDfa1_0(0x1100L);
+ case 71:
+ return jjMoveStringLiteralDfa1_0(0x4000000L);
+ case 74:
+ return jjMoveStringLiteralDfa1_0(0x30800L);
+ case 77:
+ return jjMoveStringLiteralDfa1_0(0x18000a010L);
+ case 78:
+ return jjMoveStringLiteralDfa1_0(0x200000L);
+ case 79:
+ return jjMoveStringLiteralDfa1_0(0x100000L);
+ case 80:
+ return jjMoveStringLiteralDfa1_0(0x600000000L);
+ case 83:
+ return jjMoveStringLiteralDfa1_0(0x80600L);
+ case 84:
+ return jjMoveStringLiteralDfa1_0(0xa0L);
+ case 85:
+ return jjMoveStringLiteralDfa1_0(0x2000000L);
+ case 87:
+ return jjMoveStringLiteralDfa1_0(0x40L);
+ default :
+ return jjMoveNfa_0(0, 0);
+ }
+}
+private final int jjMoveStringLiteralDfa1_0(long active0)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(0, active0);
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 68:
+ return jjMoveStringLiteralDfa2_0(active0, 0x550000000L);
+ case 77:
+ return jjMoveStringLiteralDfa2_0(active0, 0x4000000L);
+ case 83:
+ return jjMoveStringLiteralDfa2_0(active0, 0x2a8000000L);
+ case 84:
+ if ((active0 & 0x2000000L) != 0L)
+ return jjStopAtPos(1, 25);
+ break;
+ case 97:
+ return jjMoveStringLiteralDfa2_0(active0, 0xaa00L);
+ case 99:
+ return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
+ case 101:
+ return jjMoveStringLiteralDfa2_0(active0, 0x481040L);
+ case 104:
+ return jjMoveStringLiteralDfa2_0(active0, 0x80L);
+ case 111:
+ return jjMoveStringLiteralDfa2_0(active0, 0x200010L);
+ case 112:
+ return jjMoveStringLiteralDfa2_0(active0, 0x4000L);
+ case 114:
+ return jjMoveStringLiteralDfa2_0(active0, 0x100L);
+ case 117:
+ return jjMoveStringLiteralDfa2_0(active0, 0x70420L);
+ default :
+ break;
+ }
+ return jjStartNfa_0(0, active0);
+}
+private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_0(0, old0);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(1, active0);
+ return 2;
+ }
+ switch(curChar)
+ {
+ case 84:
+ if ((active0 & 0x4000000L) != 0L)
+ return jjStopAtPos(2, 26);
+ else if ((active0 & 0x8000000L) != 0L)
+ return jjStopAtPos(2, 27);
+ else if ((active0 & 0x10000000L) != 0L)
+ return jjStopAtPos(2, 28);
+ else if ((active0 & 0x20000000L) != 0L)
+ return jjStopAtPos(2, 29);
+ else if ((active0 & 0x40000000L) != 0L)
+ return jjStopAtPos(2, 30);
+ else if ((active0 & 0x80000000L) != 0L)
+ return jjStopAtPos(2, 31);
+ else if ((active0 & 0x100000000L) != 0L)
+ return jjStopAtPos(2, 32);
+ else if ((active0 & 0x200000000L) != 0L)
+ return jjStopAtPos(2, 33);
+ else if ((active0 & 0x400000000L) != 0L)
+ return jjStopAtPos(2, 34);
+ break;
+ case 98:
+ if ((active0 & 0x1000L) != 0L)
+ return jjStopAtPos(2, 12);
+ break;
+ case 99:
+ if ((active0 & 0x400000L) != 0L)
+ return jjStopAtPos(2, 22);
+ break;
+ case 100:
+ if ((active0 & 0x40L) != 0L)
+ return jjStopAtPos(2, 6);
+ break;
+ case 101:
+ if ((active0 & 0x20L) != 0L)
+ return jjStopAtPos(2, 5);
+ break;
+ case 103:
+ if ((active0 & 0x40000L) != 0L)
+ return jjStopAtPos(2, 18);
+ break;
+ case 105:
+ if ((active0 & 0x100L) != 0L)
+ return jjStopAtPos(2, 8);
+ break;
+ case 108:
+ if ((active0 & 0x20000L) != 0L)
+ return jjStopAtPos(2, 17);
+ break;
+ case 110:
+ if ((active0 & 0x10L) != 0L)
+ return jjStopAtPos(2, 4);
+ else if ((active0 & 0x400L) != 0L)
+ return jjStopAtPos(2, 10);
+ else if ((active0 & 0x800L) != 0L)
+ return jjStopAtPos(2, 11);
+ else if ((active0 & 0x10000L) != 0L)
+ return jjStopAtPos(2, 16);
+ break;
+ case 112:
+ if ((active0 & 0x80000L) != 0L)
+ return jjStopAtPos(2, 19);
+ break;
+ case 114:
+ if ((active0 & 0x2000L) != 0L)
+ return jjStopAtPos(2, 13);
+ else if ((active0 & 0x4000L) != 0L)
+ return jjStopAtPos(2, 14);
+ break;
+ case 116:
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(2, 9);
+ else if ((active0 & 0x100000L) != 0L)
+ return jjStopAtPos(2, 20);
+ break;
+ case 117:
+ if ((active0 & 0x80L) != 0L)
+ return jjStopAtPos(2, 7);
+ break;
+ case 118:
+ if ((active0 & 0x200000L) != 0L)
+ return jjStopAtPos(2, 21);
+ break;
+ case 121:
+ if ((active0 & 0x8000L) != 0L)
+ return jjStopAtPos(2, 15);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_0(1, active0);
+}
+private final void jjCheckNAdd(int state)
+{
+ if (jjrounds[state] != jjround)
+ {
+ jjstateSet[jjnewStateCnt++] = state;
+ jjrounds[state] = jjround;
+ }
+}
+private final void jjAddStates(int start, int end)
+{
+ do {
+ jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+ } while (start++ != end);
+}
+private final void jjCheckNAddTwoStates(int state1, int state2)
+{
+ jjCheckNAdd(state1);
+ jjCheckNAdd(state2);
+}
+private final void jjCheckNAddStates(int start, int end)
+{
+ do {
+ jjCheckNAdd(jjnextStates[start]);
+ } while (start++ != end);
+}
+private final void jjCheckNAddStates(int start)
+{
+ jjCheckNAdd(jjnextStates[start]);
+ jjCheckNAdd(jjnextStates[start + 1]);
+}
+private final int jjMoveNfa_0(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 4;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0x3ff000000000000L & l) != 0L)
+ {
+ if (kind > 46)
+ kind = 46;
+ jjCheckNAdd(3);
+ }
+ else if ((0x100000200L & l) != 0L)
+ {
+ if (kind > 36)
+ kind = 36;
+ jjCheckNAdd(2);
+ }
+ else if ((0x280000000000L & l) != 0L)
+ {
+ if (kind > 24)
+ kind = 24;
+ }
+ break;
+ case 2:
+ if ((0x100000200L & l) == 0L)
+ break;
+ kind = 36;
+ jjCheckNAdd(2);
+ break;
+ case 3:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ kind = 46;
+ jjCheckNAdd(3);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0x7fffbfe07fffbfeL & l) != 0L)
+ kind = 35;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_1(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_1(int pos, long active0)
+{
+ return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_1(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_1(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_1()
+{
+ switch(curChar)
+ {
+ case 40:
+ return jjStopAtPos(0, 40);
+ case 41:
+ return jjStopAtPos(0, 38);
+ default :
+ return jjMoveNfa_1(0, 0);
+ }
+}
+static final long[] jjbitVec0 = {
+ 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+private final int jjMoveNfa_1(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 41)
+ kind = 41;
+ break;
+ case 1:
+ if (kind > 39)
+ kind = 39;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 41)
+ kind = 41;
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 39)
+ kind = 39;
+ break;
+ case 2:
+ if (kind > 41)
+ kind = 41;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 41)
+ kind = 41;
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 39)
+ kind = 39;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_2(int pos, long active0)
+{
+ switch (pos)
+ {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_2(int pos, long active0)
+{
+ return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_2(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_2(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_2()
+{
+ switch(curChar)
+ {
+ case 40:
+ return jjStopAtPos(0, 43);
+ case 41:
+ return jjStopAtPos(0, 44);
+ default :
+ return jjMoveNfa_2(0, 0);
+ }
+}
+private final int jjMoveNfa_2(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 45)
+ kind = 45;
+ break;
+ case 1:
+ if (kind > 42)
+ kind = 42;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if (kind > 45)
+ kind = 45;
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (kind > 42)
+ kind = 42;
+ break;
+ case 2:
+ if (kind > 45)
+ kind = 45;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 45)
+ kind = 45;
+ break;
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 42)
+ kind = 42;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+static final int[] jjnextStates = {
+};
+public static final String[] jjstrLiteralImages = {
+"", "\15", "\12", "\54", "\115\157\156", "\124\165\145", "\127\145\144",
+"\124\150\165", "\106\162\151", "\123\141\164", "\123\165\156", "\112\141\156",
+"\106\145\142", "\115\141\162", "\101\160\162", "\115\141\171", "\112\165\156",
+"\112\165\154", "\101\165\147", "\123\145\160", "\117\143\164", "\116\157\166",
+"\104\145\143", "\72", null, "\125\124", "\107\115\124", "\105\123\124", "\105\104\124",
+"\103\123\124", "\103\104\124", "\115\123\124", "\115\104\124", "\120\123\124",
+"\120\104\124", null, null, null, null, null, null, null, null, null, null, null, null, null,
+null, };
+public static final String[] lexStateNames = {
+ "DEFAULT",
+ "INCOMMENT",
+ "NESTED_COMMENT",
+};
+public static final int[] jjnewLexState = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+static final long[] jjtoToken = {
+ 0x400fffffffffL,
+};
+static final long[] jjtoSkip = {
+ 0x5000000000L,
+};
+static final long[] jjtoSpecial = {
+ 0x1000000000L,
+};
+static final long[] jjtoMore = {
+ 0x3fa000000000L,
+};
+protected SimpleCharStream input_stream;
+private final int[] jjrounds = new int[4];
+private final int[] jjstateSet = new int[8];
+StringBuffer image;
+int jjimageLen;
+int lengthOfMatch;
+protected char curChar;
+public DateTimeParserTokenManager(SimpleCharStream stream){
+ if (SimpleCharStream.staticFlag)
+ throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
+ input_stream = stream;
+}
+public DateTimeParserTokenManager(SimpleCharStream stream, int lexState){
+ this(stream);
+ SwitchTo(lexState);
+}
+public void ReInit(SimpleCharStream stream)
+{
+ jjmatchedPos = jjnewStateCnt = 0;
+ curLexState = defaultLexState;
+ input_stream = stream;
+ ReInitRounds();
+}
+private final void ReInitRounds()
+{
+ int i;
+ jjround = 0x80000001;
+ for (i = 4; i-- > 0;)
+ jjrounds[i] = 0x80000000;
+}
+public void ReInit(SimpleCharStream stream, int lexState)
+{
+ ReInit(stream);
+ SwitchTo(lexState);
+}
+public void SwitchTo(int lexState)
+{
+ if (lexState >= 3 || lexState < 0)
+ throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+ else
+ curLexState = lexState;
+}
+
+protected Token jjFillToken()
+{
+ Token t = Token.newToken(jjmatchedKind);
+ t.kind = jjmatchedKind;
+ String im = jjstrLiteralImages[jjmatchedKind];
+ t.image = (im == null) ? input_stream.GetImage() : im;
+ t.beginLine = input_stream.getBeginLine();
+ t.beginColumn = input_stream.getBeginColumn();
+ t.endLine = input_stream.getEndLine();
+ t.endColumn = input_stream.getEndColumn();
+ return t;
+}
+
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
+
+public Token getNextToken()
+{
+ int kind;
+ Token specialToken = null;
+ Token matchedToken;
+ int curPos = 0;
+
+ EOFLoop :
+ for (;;)
+ {
+ try
+ {
+ curChar = input_stream.BeginToken();
+ }
+ catch(java.io.IOException e)
+ {
+ jjmatchedKind = 0;
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ return matchedToken;
+ }
+ image = null;
+ jjimageLen = 0;
+
+ for (;;)
+ {
+ switch(curLexState)
+ {
+ case 0:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_0();
+ break;
+ case 1:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_1();
+ break;
+ case 2:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_2();
+ break;
+ }
+ if (jjmatchedKind != 0x7fffffff)
+ {
+ if (jjmatchedPos + 1 < curPos)
+ input_stream.backup(curPos - jjmatchedPos - 1);
+ if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ return matchedToken;
+ }
+ else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ if (specialToken == null)
+ specialToken = matchedToken;
+ else
+ {
+ matchedToken.specialToken = specialToken;
+ specialToken = (specialToken.next = matchedToken);
+ }
+ }
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ continue EOFLoop;
+ }
+ MoreLexicalActions();
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ curPos = 0;
+ jjmatchedKind = 0x7fffffff;
+ try {
+ curChar = input_stream.readChar();
+ continue;
+ }
+ catch (java.io.IOException e1) { }
+ }
+ int error_line = input_stream.getEndLine();
+ int error_column = input_stream.getEndColumn();
+ String error_after = null;
+ boolean EOFSeen = false;
+ try { input_stream.readChar(); input_stream.backup(1); }
+ catch (java.io.IOException e1) {
+ EOFSeen = true;
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ if (curChar == '\n' || curChar == '\r') {
+ error_line++;
+ error_column = 0;
+ }
+ else
+ error_column++;
+ }
+ if (!EOFSeen) {
+ input_stream.backup(1);
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ }
+ throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+ }
+ }
+}
+
+void MoreLexicalActions()
+{
+ jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+ switch(jjmatchedKind)
+ {
+ case 39 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ case 40 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ commentNest = 1;
+ break;
+ case 42 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ image.deleteCharAt(image.length() - 2);
+ break;
+ case 43 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ ++commentNest;
+ break;
+ case 44 :
+ if (image == null)
+ image = new StringBuffer();
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
+ break;
+ default :
+ break;
+ }
+}
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/ParseException.java b/src/org/apache/james/mime4j/field/datetime/parser/ParseException.java
new file mode 100644
index 0000000..13b3ff0
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/parser/ParseException.java
@@ -0,0 +1,207 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+ /**
+ * This constructor is used by the method "generateParseException"
+ * in the generated parser. Calling this constructor generates
+ * a new object of this type with the fields "currentToken",
+ * "expectedTokenSequences", and "tokenImage" set. The boolean
+ * flag "specialConstructor" is also set to true to indicate that
+ * this constructor was used to create this object.
+ * This constructor calls its super class with the empty string
+ * to force the "toString" method of parent class "Throwable" to
+ * print the error message in the form:
+ * ParseException: <result of getMessage>
+ */
+ public ParseException(Token currentTokenVal,
+ int[][] expectedTokenSequencesVal,
+ String[] tokenImageVal
+ )
+ {
+ super("");
+ specialConstructor = true;
+ currentToken = currentTokenVal;
+ expectedTokenSequences = expectedTokenSequencesVal;
+ tokenImage = tokenImageVal;
+ }
+
+ /**
+ * The following constructors are for use by you for whatever
+ * purpose you can think of. Constructing the exception in this
+ * manner makes the exception behave in the normal way - i.e., as
+ * documented in the class "Throwable". The fields "errorToken",
+ * "expectedTokenSequences", and "tokenImage" do not contain
+ * relevant information. The JavaCC generated code does not use
+ * these constructors.
+ */
+
+ public ParseException() {
+ super();
+ specialConstructor = false;
+ }
+
+ public ParseException(String message) {
+ super(message);
+ specialConstructor = false;
+ }
+
+ /**
+ * This variable determines which constructor was used to create
+ * this object and thereby affects the semantics of the
+ * "getMessage" method (see below).
+ */
+ protected boolean specialConstructor;
+
+ /**
+ * This is the last token that has been consumed successfully. If
+ * this object has been created due to a parse error, the token
+ * followng this token will (therefore) be the first error token.
+ */
+ public Token currentToken;
+
+ /**
+ * Each entry in this array is an array of integers. Each array
+ * of integers represents a sequence of tokens (by their ordinal
+ * values) that is expected at this point of the parse.
+ */
+ public int[][] expectedTokenSequences;
+
+ /**
+ * This is a reference to the "tokenImage" array of the generated
+ * parser within which the parse error occurred. This array is
+ * defined in the generated ...Constants interface.
+ */
+ public String[] tokenImage;
+
+ /**
+ * This method has the standard behavior when this object has been
+ * created using the standard constructors. Otherwise, it uses
+ * "currentToken" and "expectedTokenSequences" to generate a parse
+ * error message and returns it. If this object has been created
+ * due to a parse error, and you do not catch it (it gets thrown
+ * from the parser), then this method is called during the printing
+ * of the final stack trace, and hence the correct error message
+ * gets displayed.
+ */
+ public String getMessage() {
+ if (!specialConstructor) {
+ return super.getMessage();
+ }
+ StringBuffer expected = new StringBuffer();
+ int maxSize = 0;
+ for (int i = 0; i < expectedTokenSequences.length; i++) {
+ if (maxSize < expectedTokenSequences[i].length) {
+ maxSize = expectedTokenSequences[i].length;
+ }
+ for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
+ }
+ if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+ expected.append("...");
+ }
+ expected.append(eol).append(" ");
+ }
+ String retval = "Encountered \"";
+ Token tok = currentToken.next;
+ for (int i = 0; i < maxSize; i++) {
+ if (i != 0) retval += " ";
+ if (tok.kind == 0) {
+ retval += tokenImage[0];
+ break;
+ }
+ retval += add_escapes(tok.image);
+ tok = tok.next;
+ }
+ retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+ retval += "." + eol;
+ if (expectedTokenSequences.length == 1) {
+ retval += "Was expecting:" + eol + " ";
+ } else {
+ retval += "Was expecting one of:" + eol + " ";
+ }
+ retval += expected.toString();
+ return retval;
+ }
+
+ /**
+ * The end of line string for this machine.
+ */
+ protected String eol = System.getProperty("line.separator", "\n");
+
+ /**
+ * Used to convert raw characters to their escaped version
+ * when these raw version cannot be used as part of an ASCII
+ * string literal.
+ */
+ protected String add_escapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java b/src/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java
new file mode 100644
index 0000000..2724529
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java
@@ -0,0 +1,454 @@
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (without unicode processing).
+ */
+
+public class SimpleCharStream
+{
+ public static final boolean staticFlag = false;
+ int bufsize;
+ int available;
+ int tokenBegin;
+ public int bufpos = -1;
+ protected int bufline[];
+ protected int bufcolumn[];
+
+ protected int column = 0;
+ protected int line = 1;
+
+ protected boolean prevCharIsCR = false;
+ protected boolean prevCharIsLF = false;
+
+ protected java.io.Reader inputStream;
+
+ protected char[] buffer;
+ protected int maxNextCharInd = 0;
+ protected int inBuf = 0;
+ protected int tabSize = 8;
+
+ protected void setTabSize(int i) { tabSize = i; }
+ protected int getTabSize(int i) { return tabSize; }
+
+
+ protected void ExpandBuff(boolean wrapAround)
+ {
+ char[] newbuffer = new char[bufsize + 2048];
+ int newbufline[] = new int[bufsize + 2048];
+ int newbufcolumn[] = new int[bufsize + 2048];
+
+ try
+ {
+ if (wrapAround)
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ System.arraycopy(buffer, 0, newbuffer,
+ bufsize - tokenBegin, bufpos);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos += (bufsize - tokenBegin));
+ }
+ else
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos -= tokenBegin);
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new Error(t.getMessage());
+ }
+
+
+ bufsize += 2048;
+ available = bufsize;
+ tokenBegin = 0;
+ }
+
+ protected void FillBuff() throws java.io.IOException
+ {
+ if (maxNextCharInd == available)
+ {
+ if (available == bufsize)
+ {
+ if (tokenBegin > 2048)
+ {
+ bufpos = maxNextCharInd = 0;
+ available = tokenBegin;
+ }
+ else if (tokenBegin < 0)
+ bufpos = maxNextCharInd = 0;
+ else
+ ExpandBuff(false);
+ }
+ else if (available > tokenBegin)
+ available = bufsize;
+ else if ((tokenBegin - available) < 2048)
+ ExpandBuff(true);
+ else
+ available = tokenBegin;
+ }
+
+ int i;
+ try {
+ if ((i = inputStream.read(buffer, maxNextCharInd,
+ available - maxNextCharInd)) == -1)
+ {
+ inputStream.close();
+ throw new java.io.IOException();
+ }
+ else
+ maxNextCharInd += i;
+ return;
+ }
+ catch(java.io.IOException e) {
+ --bufpos;
+ backup(0);
+ if (tokenBegin == -1)
+ tokenBegin = bufpos;
+ throw e;
+ }
+ }
+
+ public char BeginToken() throws java.io.IOException
+ {
+ tokenBegin = -1;
+ char c = readChar();
+ tokenBegin = bufpos;
+
+ return c;
+ }
+
+ protected void UpdateLineColumn(char c)
+ {
+ column++;
+
+ if (prevCharIsLF)
+ {
+ prevCharIsLF = false;
+ line += (column = 1);
+ }
+ else if (prevCharIsCR)
+ {
+ prevCharIsCR = false;
+ if (c == '\n')
+ {
+ prevCharIsLF = true;
+ }
+ else
+ line += (column = 1);
+ }
+
+ switch (c)
+ {
+ case '\r' :
+ prevCharIsCR = true;
+ break;
+ case '\n' :
+ prevCharIsLF = true;
+ break;
+ case '\t' :
+ column--;
+ column += (tabSize - (column % tabSize));
+ break;
+ default :
+ break;
+ }
+
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+
+ public char readChar() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ return buffer[bufpos];
+ }
+
+ if (++bufpos >= maxNextCharInd)
+ FillBuff();
+
+ char c = buffer[bufpos];
+
+ UpdateLineColumn(c);
+ return (c);
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndColumn
+ */
+ @Deprecated
+ public int getColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndLine
+ */
+ @Deprecated
+ public int getLine() {
+ return bufline[bufpos];
+ }
+
+ public int getEndColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ public int getEndLine() {
+ return bufline[bufpos];
+ }
+
+ public int getBeginColumn() {
+ return bufcolumn[tokenBegin];
+ }
+
+ public int getBeginLine() {
+ return bufline[tokenBegin];
+ }
+
+ public void backup(int amount) {
+
+ inBuf += amount;
+ if ((bufpos -= amount) < 0)
+ bufpos += bufsize;
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.Reader dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ if (buffer == null || buffersize != buffer.length)
+ {
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+ prevCharIsLF = prevCharIsCR = false;
+ tokenBegin = inBuf = maxNextCharInd = 0;
+ bufpos = -1;
+ }
+
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+
+ public void ReInit(java.io.Reader dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, 1, 1, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+
+ public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, 1, 1, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, startline, startcolumn, 4096);
+ }
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+ public String GetImage()
+ {
+ if (bufpos >= tokenBegin)
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+ else
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+ new String(buffer, 0, bufpos + 1);
+ }
+
+ public char[] GetSuffix(int len)
+ {
+ char[] ret = new char[len];
+
+ if ((bufpos + 1) >= len)
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+ else
+ {
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+ len - bufpos - 1);
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+ }
+
+ return ret;
+ }
+
+ public void Done()
+ {
+ buffer = null;
+ bufline = null;
+ bufcolumn = null;
+ }
+
+ /**
+ * Method to adjust line and column numbers for the start of a token.
+ */
+ public void adjustBeginLineColumn(int newLine, int newCol)
+ {
+ int start = tokenBegin;
+ int len;
+
+ if (bufpos >= tokenBegin)
+ {
+ len = bufpos - tokenBegin + inBuf + 1;
+ }
+ else
+ {
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+ }
+
+ int i = 0, j = 0, k = 0;
+ int nextColDiff = 0, columnDiff = 0;
+
+ while (i < len &&
+ bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+ {
+ bufline[j] = newLine;
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+ bufcolumn[j] = newCol + columnDiff;
+ columnDiff = nextColDiff;
+ i++;
+ }
+
+ if (i < len)
+ {
+ bufline[j] = newLine++;
+ bufcolumn[j] = newCol + columnDiff;
+
+ while (i++ < len)
+ {
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+ bufline[j] = newLine++;
+ else
+ bufline[j] = newLine;
+ }
+ }
+
+ line = bufline[j];
+ column = bufcolumn[j];
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/Token.java b/src/org/apache/james/mime4j/field/datetime/parser/Token.java
new file mode 100644
index 0000000..0927a09
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/parser/Token.java
@@ -0,0 +1,96 @@
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token {
+
+ /**
+ * An integer that describes the kind of this token. This numbering
+ * system is determined by JavaCCParser, and a table of these numbers is
+ * stored in the file ...Constants.java.
+ */
+ public int kind;
+
+ /**
+ * beginLine and beginColumn describe the position of the first character
+ * of this token; endLine and endColumn describe the position of the
+ * last character of this token.
+ */
+ public int beginLine, beginColumn, endLine, endColumn;
+
+ /**
+ * The string image of the token.
+ */
+ public String image;
+
+ /**
+ * A reference to the next regular (non-special) token from the input
+ * stream. If this is the last token from the input stream, or if the
+ * token manager has not read tokens beyond this one, this field is
+ * set to null. This is true only if this token is also a regular
+ * token. Otherwise, see below for a description of the contents of
+ * this field.
+ */
+ public Token next;
+
+ /**
+ * This field is used to access special tokens that occur prior to this
+ * token, but after the immediately preceding regular (non-special) token.
+ * If there are no such special tokens, this field is set to null.
+ * When there are more than one such special token, this field refers
+ * to the last of these special tokens, which in turn refers to the next
+ * previous special token through its specialToken field, and so on
+ * until the first special token (whose specialToken field is null).
+ * The next fields of special tokens refer to other special tokens that
+ * immediately follow it (without an intervening regular token). If there
+ * is no such token, this field is null.
+ */
+ public Token specialToken;
+
+ /**
+ * Returns the image.
+ */
+ public String toString()
+ {
+ return image;
+ }
+
+ /**
+ * Returns a new Token object, by default. However, if you want, you
+ * can create and return subclass objects based on the value of ofKind.
+ * Simply add the cases to the switch for all those special cases.
+ * For example, if you have a subclass of Token called IDToken that
+ * you want to create if ofKind is ID, simlpy add something like :
+ *
+ * case MyParserConstants.ID : return new IDToken();
+ *
+ * to the following switch statement. Then you can cast matchedToken
+ * variable to the appropriate type and use it in your lexical actions.
+ */
+ public static final Token newToken(int ofKind)
+ {
+ switch(ofKind)
+ {
+ default : return new Token();
+ }
+ }
+
+}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java b/src/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java
new file mode 100644
index 0000000..e7043c1
--- /dev/null
+++ b/src/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java
@@ -0,0 +1,148 @@
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
+/*
+ * Copyright 2004 the mime4j 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 org.apache.james.mime4j.field.datetime.parser;
+
+public class TokenMgrError extends Error
+{
+ /*
+ * Ordinals for various reasons why an Error of this type can be thrown.
+ */
+
+ /**
+ * Lexical error occured.
+ */
+ static final int LEXICAL_ERROR = 0;
+
+ /**
+ * An attempt wass made to create a second instance of a static token manager.
+ */
+ static final int STATIC_LEXER_ERROR = 1;
+
+ /**
+ * Tried to change to an invalid lexical state.
+ */
+ static final int INVALID_LEXICAL_STATE = 2;
+
+ /**
+ * Detected (and bailed out of) an infinite loop in the token manager.
+ */
+ static final int LOOP_DETECTED = 3;
+
+ /**
+ * Indicates the reason why the exception is thrown. It will have
+ * one of the above 4 values.
+ */
+ int errorCode;
+
+ /**
+ * Replaces unprintable characters by their espaced (or unicode escaped)
+ * equivalents in the given string
+ */
+ protected static final String addEscapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+ /**
+ * Returns a detailed message for the Error when it is thrown by the
+ * token manager to indicate a lexical error.
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexicl error
+ * curLexState : lexical state in which this error occured
+ * errorLine : line number when the error occured
+ * errorColumn : column number when the error occured
+ * errorAfter : prefix that was seen before this error occured
+ * curchar : the offending character
+ * Note: You can customize the lexical error message by modifying this method.
+ */
+ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+ return("Lexical error at line " +
+ errorLine + ", column " +
+ errorColumn + ". Encountered: " +
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+ "after : \"" + addEscapes(errorAfter) + "\"");
+ }
+
+ /**
+ * You can also modify the body of this method to customize your error messages.
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+ * of end-users concern, so you can return something like :
+ *
+ * "Internal Error : Please file a bug report .... "
+ *
+ * from this method for such cases in the release version of your parser.
+ */
+ public String getMessage() {
+ return super.getMessage();
+ }
+
+ /*
+ * Constructors of various flavors follow.
+ */
+
+ public TokenMgrError() {
+ }
+
+ public TokenMgrError(String message, int reason) {
+ super(message);
+ errorCode = reason;
+ }
+
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+ }
+}
diff --git a/src/org/apache/james/mime4j/util/CharsetUtil.java b/src/org/apache/james/mime4j/util/CharsetUtil.java
new file mode 100644
index 0000000..4e712fc
--- /dev/null
+++ b/src/org/apache/james/mime4j/util/CharsetUtil.java
@@ -0,0 +1,1249 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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 org.apache.james.mime4j.util;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.TreeSet;
+
+//BEGIN android-changed: Stubbing out logging
+import org.apache.james.mime4j.Log;
+import org.apache.james.mime4j.LogFactory;
+//END android-changed
+
+/**
+ * Utility class for working with character sets. It is somewhat similar to
+ * the Java 1.4 <code>java.nio.charset.Charset</code> class but knows many
+ * more aliases and is compatible with Java 1.3. It will use a simple detection
+ * mechanism to detect what character sets the current VM supports. This will
+ * be a sub-set of the character sets listed in the
+ * <a href="http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html">
+ * Java 1.5 (J2SE5.0) Supported Encodings</a> document.
+ * <p>
+ * The <a href="http://www.iana.org/assignments/character-sets">
+ * IANA Character Sets</a> document has been used to determine the preferred
+ * MIME character set names and to get a list of known aliases.
+ * <p>
+ * This is a complete list of the character sets known to this class:
+ * <table>
+ * <tr>
+ * <td>Canonical (Java) name</td>
+ * <td>MIME preferred</td>
+ * <td>Aliases</td>
+ * </tr>
+ * <tr>
+ * <td>ASCII</td>
+ * <td>US-ASCII</td>
+ * <td>ANSI_X3.4-1968 iso-ir-6 ANSI_X3.4-1986 ISO_646.irv:1991 ISO646-US us IBM367 cp367 csASCII ascii7 646 iso_646.irv:1983 </td>
+ * </tr>
+ * <tr>
+ * <td>Big5</td>
+ * <td>Big5</td>
+ * <td>csBig5 CN-Big5 BIG-FIVE BIGFIVE </td>
+ * </tr>
+ * <tr>
+ * <td>Big5_HKSCS</td>
+ * <td>Big5-HKSCS</td>
+ * <td>big5hkscs </td>
+ * </tr>
+ * <tr>
+ * <td>Big5_Solaris</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp037</td>
+ * <td>IBM037</td>
+ * <td>ebcdic-cp-us ebcdic-cp-ca ebcdic-cp-wt ebcdic-cp-nl csIBM037 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1006</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1025</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1026</td>
+ * <td>IBM1026</td>
+ * <td>csIBM1026 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1046</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1047</td>
+ * <td>IBM1047</td>
+ * <td>IBM-1047 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1097</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1098</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1112</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1122</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1123</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1124</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1140</td>
+ * <td>IBM01140</td>
+ * <td>CCSID01140 CP01140 ebcdic-us-37+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1141</td>
+ * <td>IBM01141</td>
+ * <td>CCSID01141 CP01141 ebcdic-de-273+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1142</td>
+ * <td>IBM01142</td>
+ * <td>CCSID01142 CP01142 ebcdic-dk-277+euro ebcdic-no-277+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1143</td>
+ * <td>IBM01143</td>
+ * <td>CCSID01143 CP01143 ebcdic-fi-278+euro ebcdic-se-278+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1144</td>
+ * <td>IBM01144</td>
+ * <td>CCSID01144 CP01144 ebcdic-it-280+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1145</td>
+ * <td>IBM01145</td>
+ * <td>CCSID01145 CP01145 ebcdic-es-284+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1146</td>
+ * <td>IBM01146</td>
+ * <td>CCSID01146 CP01146 ebcdic-gb-285+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1147</td>
+ * <td>IBM01147</td>
+ * <td>CCSID01147 CP01147 ebcdic-fr-297+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1148</td>
+ * <td>IBM01148</td>
+ * <td>CCSID01148 CP01148 ebcdic-international-500+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1149</td>
+ * <td>IBM01149</td>
+ * <td>CCSID01149 CP01149 ebcdic-is-871+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp1250</td>
+ * <td>windows-1250</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1251</td>
+ * <td>windows-1251</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1252</td>
+ * <td>windows-1252</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1253</td>
+ * <td>windows-1253</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1254</td>
+ * <td>windows-1254</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1255</td>
+ * <td>windows-1255</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1256</td>
+ * <td>windows-1256</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1257</td>
+ * <td>windows-1257</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1258</td>
+ * <td>windows-1258</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1381</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp1383</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp273</td>
+ * <td>IBM273</td>
+ * <td>csIBM273 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp277</td>
+ * <td>IBM277</td>
+ * <td>EBCDIC-CP-DK EBCDIC-CP-NO csIBM277 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp278</td>
+ * <td>IBM278</td>
+ * <td>CP278 ebcdic-cp-fi ebcdic-cp-se csIBM278 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp280</td>
+ * <td>IBM280</td>
+ * <td>ebcdic-cp-it csIBM280 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp284</td>
+ * <td>IBM284</td>
+ * <td>ebcdic-cp-es csIBM284 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp285</td>
+ * <td>IBM285</td>
+ * <td>ebcdic-cp-gb csIBM285 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp297</td>
+ * <td>IBM297</td>
+ * <td>ebcdic-cp-fr csIBM297 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp33722</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp420</td>
+ * <td>IBM420</td>
+ * <td>ebcdic-cp-ar1 csIBM420 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp424</td>
+ * <td>IBM424</td>
+ * <td>ebcdic-cp-he csIBM424 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp437</td>
+ * <td>IBM437</td>
+ * <td>437 csPC8CodePage437 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp500</td>
+ * <td>IBM500</td>
+ * <td>ebcdic-cp-be ebcdic-cp-ch csIBM500 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp737</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp775</td>
+ * <td>IBM775</td>
+ * <td>csPC775Baltic </td>
+ * </tr>
+ * <tr>
+ * <td>Cp838</td>
+ * <td>IBM-Thai</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp850</td>
+ * <td>IBM850</td>
+ * <td>850 csPC850Multilingual </td>
+ * </tr>
+ * <tr>
+ * <td>Cp852</td>
+ * <td>IBM852</td>
+ * <td>852 csPCp852 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp855</td>
+ * <td>IBM855</td>
+ * <td>855 csIBM855 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp856</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp857</td>
+ * <td>IBM857</td>
+ * <td>857 csIBM857 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp858</td>
+ * <td>IBM00858</td>
+ * <td>CCSID00858 CP00858 PC-Multilingual-850+euro </td>
+ * </tr>
+ * <tr>
+ * <td>Cp860</td>
+ * <td>IBM860</td>
+ * <td>860 csIBM860 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp861</td>
+ * <td>IBM861</td>
+ * <td>861 cp-is csIBM861 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp862</td>
+ * <td>IBM862</td>
+ * <td>862 csPC862LatinHebrew </td>
+ * </tr>
+ * <tr>
+ * <td>Cp863</td>
+ * <td>IBM863</td>
+ * <td>863 csIBM863 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp864</td>
+ * <td>IBM864</td>
+ * <td>cp864 csIBM864 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp865</td>
+ * <td>IBM865</td>
+ * <td>865 csIBM865 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp866</td>
+ * <td>IBM866</td>
+ * <td>866 csIBM866 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp868</td>
+ * <td>IBM868</td>
+ * <td>cp-ar csIBM868 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp869</td>
+ * <td>IBM869</td>
+ * <td>cp-gr csIBM869 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp870</td>
+ * <td>IBM870</td>
+ * <td>ebcdic-cp-roece ebcdic-cp-yu csIBM870 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp871</td>
+ * <td>IBM871</td>
+ * <td>ebcdic-cp-is csIBM871 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp875</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp918</td>
+ * <td>IBM918</td>
+ * <td>ebcdic-cp-ar2 csIBM918 </td>
+ * </tr>
+ * <tr>
+ * <td>Cp921</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp922</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp930</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp933</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp935</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp937</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp939</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp942</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp942C</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp943</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp943C</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp948</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp949</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp949C</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp950</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp964</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>Cp970</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>EUC_CN</td>
+ * <td>GB2312</td>
+ * <td>x-EUC-CN csGB2312 euccn euc-cn gb2312-80 gb2312-1980 CN-GB CN-GB-ISOIR165 </td>
+ * </tr>
+ * <tr>
+ * <td>EUC_JP</td>
+ * <td>EUC-JP</td>
+ * <td>csEUCPkdFmtJapanese Extended_UNIX_Code_Packed_Format_for_Japanese eucjis x-eucjp eucjp x-euc-jp </td>
+ * </tr>
+ * <tr>
+ * <td>EUC_JP_LINUX</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>EUC_JP_Solaris</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>EUC_KR</td>
+ * <td>EUC-KR</td>
+ * <td>csEUCKR ksc5601 5601 ksc5601_1987 ksc_5601 ksc5601-1987 ks_c_5601-1987 euckr </td>
+ * </tr>
+ * <tr>
+ * <td>EUC_TW</td>
+ * <td>EUC-TW</td>
+ * <td>x-EUC-TW cns11643 euctw </td>
+ * </tr>
+ * <tr>
+ * <td>GB18030</td>
+ * <td>GB18030</td>
+ * <td>gb18030-2000 </td>
+ * </tr>
+ * <tr>
+ * <td>GBK</td>
+ * <td>windows-936</td>
+ * <td>CP936 MS936 ms_936 x-mswin-936 </td>
+ * </tr>
+ * <tr>
+ * <td>ISCII91</td>
+ * <td>?</td>
+ * <td>x-ISCII91 iscii </td>
+ * </tr>
+ * <tr>
+ * <td>ISO2022CN</td>
+ * <td>ISO-2022-CN</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>ISO2022JP</td>
+ * <td>ISO-2022-JP</td>
+ * <td>csISO2022JP JIS jis_encoding csjisencoding </td>
+ * </tr>
+ * <tr>
+ * <td>ISO2022KR</td>
+ * <td>ISO-2022-KR</td>
+ * <td>csISO2022KR </td>
+ * </tr>
+ * <tr>
+ * <td>ISO2022_CN_CNS</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>ISO2022_CN_GB</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_1</td>
+ * <td>ISO-8859-1</td>
+ * <td>ISO_8859-1:1987 iso-ir-100 ISO_8859-1 latin1 l1 IBM819 CP819 csISOLatin1 8859_1 819 IBM-819 ISO8859-1 ISO_8859_1 </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_13</td>
+ * <td>ISO-8859-13</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_15</td>
+ * <td>ISO-8859-15</td>
+ * <td>ISO_8859-15 Latin-9 8859_15 csISOlatin9 IBM923 cp923 923 L9 IBM-923 ISO8859-15 LATIN9 LATIN0 csISOlatin0 ISO8859_15_FDIS </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_2</td>
+ * <td>ISO-8859-2</td>
+ * <td>ISO_8859-2:1987 iso-ir-101 ISO_8859-2 latin2 l2 csISOLatin2 8859_2 iso8859_2 </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_3</td>
+ * <td>ISO-8859-3</td>
+ * <td>ISO_8859-3:1988 iso-ir-109 ISO_8859-3 latin3 l3 csISOLatin3 8859_3 </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_4</td>
+ * <td>ISO-8859-4</td>
+ * <td>ISO_8859-4:1988 iso-ir-110 ISO_8859-4 latin4 l4 csISOLatin4 8859_4 </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_5</td>
+ * <td>ISO-8859-5</td>
+ * <td>ISO_8859-5:1988 iso-ir-144 ISO_8859-5 cyrillic csISOLatinCyrillic 8859_5 </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_6</td>
+ * <td>ISO-8859-6</td>
+ * <td>ISO_8859-6:1987 iso-ir-127 ISO_8859-6 ECMA-114 ASMO-708 arabic csISOLatinArabic 8859_6 </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_7</td>
+ * <td>ISO-8859-7</td>
+ * <td>ISO_8859-7:1987 iso-ir-126 ISO_8859-7 ELOT_928 ECMA-118 greek greek8 csISOLatinGreek 8859_7 sun_eu_greek </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_8</td>
+ * <td>ISO-8859-8</td>
+ * <td>ISO_8859-8:1988 iso-ir-138 ISO_8859-8 hebrew csISOLatinHebrew 8859_8 </td>
+ * </tr>
+ * <tr>
+ * <td>ISO8859_9</td>
+ * <td>ISO-8859-9</td>
+ * <td>ISO_8859-9:1989 iso-ir-148 ISO_8859-9 latin5 l5 csISOLatin5 8859_9 </td>
+ * </tr>
+ * <tr>
+ * <td>JISAutoDetect</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>JIS_C6626-1983</td>
+ * <td>JIS_C6626-1983</td>
+ * <td>x-JIS0208 JIS0208 csISO87JISX0208 x0208 JIS_X0208-1983 iso-ir-87 </td>
+ * </tr>
+ * <tr>
+ * <td>JIS_X0201</td>
+ * <td>JIS_X0201</td>
+ * <td>X0201 JIS0201 csHalfWidthKatakana </td>
+ * </tr>
+ * <tr>
+ * <td>JIS_X0212-1990</td>
+ * <td>JIS_X0212-1990</td>
+ * <td>iso-ir-159 x0212 JIS0212 csISO159JISX02121990 </td>
+ * </tr>
+ * <tr>
+ * <td>KOI8_R</td>
+ * <td>KOI8-R</td>
+ * <td>csKOI8R koi8 </td>
+ * </tr>
+ * <tr>
+ * <td>MS874</td>
+ * <td>windows-874</td>
+ * <td>cp874 </td>
+ * </tr>
+ * <tr>
+ * <td>MS932</td>
+ * <td>Windows-31J</td>
+ * <td>windows-932 csWindows31J x-ms-cp932 </td>
+ * </tr>
+ * <tr>
+ * <td>MS949</td>
+ * <td>windows-949</td>
+ * <td>windows949 ms_949 x-windows-949 </td>
+ * </tr>
+ * <tr>
+ * <td>MS950</td>
+ * <td>windows-950</td>
+ * <td>x-windows-950 </td>
+ * </tr>
+ * <tr>
+ * <td>MS950_HKSCS</td>
+ * <td></td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacArabic</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacCentralEurope</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacCroatian</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacCyrillic</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacDingbat</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacGreek</td>
+ * <td>MacGreek</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacHebrew</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacIceland</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacRoman</td>
+ * <td>MacRoman</td>
+ * <td>Macintosh MAC csMacintosh </td>
+ * </tr>
+ * <tr>
+ * <td>MacRomania</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacSymbol</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacThai</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacTurkish</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>MacUkraine</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>SJIS</td>
+ * <td>Shift_JIS</td>
+ * <td>MS_Kanji csShiftJIS shift-jis x-sjis pck </td>
+ * </tr>
+ * <tr>
+ * <td>TIS620</td>
+ * <td>TIS-620</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>UTF-16</td>
+ * <td>UTF-16</td>
+ * <td>UTF_16 </td>
+ * </tr>
+ * <tr>
+ * <td>UTF8</td>
+ * <td>UTF-8</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>UnicodeBig</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>UnicodeBigUnmarked</td>
+ * <td>UTF-16BE</td>
+ * <td>X-UTF-16BE UTF_16BE ISO-10646-UCS-2 </td>
+ * </tr>
+ * <tr>
+ * <td>UnicodeLittle</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * <tr>
+ * <td>UnicodeLittleUnmarked</td>
+ * <td>UTF-16LE</td>
+ * <td>UTF_16LE X-UTF-16LE </td>
+ * </tr>
+ * <tr>
+ * <td>x-Johab</td>
+ * <td>johab</td>
+ * <td>johab cp1361 ms1361 ksc5601-1992 ksc5601_1992 </td>
+ * </tr>
+ * <tr>
+ * <td>x-iso-8859-11</td>
+ * <td>?</td>
+ * <td></td>
+ * </tr>
+ * </table>
+ *
+ *
+ * @version $Id: CharsetUtil.java,v 1.1 2004/10/25 07:26:46 ntherning Exp $
+ */
+public class CharsetUtil {
+ private static Log log = LogFactory.getLog(CharsetUtil.class);
+
+ private static class Charset implements Comparable<Charset> {
+ private String canonical = null;
+ private String mime = null;
+ private String[] aliases = null;
+
+ private Charset(String canonical, String mime, String[] aliases) {
+ this.canonical = canonical;
+ this.mime = mime;
+ this.aliases = aliases;
+ }
+
+ public int compareTo(Charset c) {
+ return this.canonical.compareTo(c.canonical);
+ }
+ }
+
+ private static Charset[] JAVA_CHARSETS = {
+ new Charset("ISO8859_1", "ISO-8859-1",
+ new String[] {"ISO_8859-1:1987", "iso-ir-100", "ISO_8859-1",
+ "latin1", "l1", "IBM819", "CP819",
+ "csISOLatin1", "8859_1", "819", "IBM-819",
+ "ISO8859-1", "ISO_8859_1"}),
+ new Charset("ISO8859_2", "ISO-8859-2",
+ new String[] {"ISO_8859-2:1987", "iso-ir-101", "ISO_8859-2",
+ "latin2", "l2", "csISOLatin2", "8859_2",
+ "iso8859_2"}),
+ new Charset("ISO8859_3", "ISO-8859-3", new String[] {"ISO_8859-3:1988", "iso-ir-109", "ISO_8859-3", "latin3", "l3", "csISOLatin3", "8859_3"}),
+ new Charset("ISO8859_4", "ISO-8859-4",
+ new String[] {"ISO_8859-4:1988", "iso-ir-110", "ISO_8859-4",
+ "latin4", "l4", "csISOLatin4", "8859_4"}),
+ new Charset("ISO8859_5", "ISO-8859-5",
+ new String[] {"ISO_8859-5:1988", "iso-ir-144", "ISO_8859-5",
+ "cyrillic", "csISOLatinCyrillic", "8859_5"}),
+ new Charset("ISO8859_6", "ISO-8859-6", new String[] {"ISO_8859-6:1987", "iso-ir-127", "ISO_8859-6", "ECMA-114", "ASMO-708", "arabic", "csISOLatinArabic", "8859_6"}),
+ new Charset("ISO8859_7", "ISO-8859-7",
+ new String[] {"ISO_8859-7:1987", "iso-ir-126", "ISO_8859-7",
+ "ELOT_928", "ECMA-118", "greek", "greek8",
+ "csISOLatinGreek", "8859_7", "sun_eu_greek"}),
+ new Charset("ISO8859_8", "ISO-8859-8", new String[] {"ISO_8859-8:1988", "iso-ir-138", "ISO_8859-8", "hebrew", "csISOLatinHebrew", "8859_8"}),
+ new Charset("ISO8859_9", "ISO-8859-9",
+ new String[] {"ISO_8859-9:1989", "iso-ir-148", "ISO_8859-9",
+ "latin5", "l5", "csISOLatin5", "8859_9"}),
+
+ new Charset("ISO8859_13", "ISO-8859-13", new String[] {}),
+ new Charset("ISO8859_15", "ISO-8859-15",
+ new String[] {"ISO_8859-15", "Latin-9", "8859_15",
+ "csISOlatin9", "IBM923", "cp923", "923", "L9",
+ "IBM-923", "ISO8859-15", "LATIN9", "LATIN0",
+ "csISOlatin0", "ISO8859_15_FDIS"}),
+ new Charset("KOI8_R", "KOI8-R", new String[] {"csKOI8R", "koi8"}),
+ new Charset("ASCII", "US-ASCII",
+ new String[] {"ANSI_X3.4-1968", "iso-ir-6",
+ "ANSI_X3.4-1986", "ISO_646.irv:1991",
+ "ISO646-US", "us", "IBM367", "cp367",
+ "csASCII", "ascii7", "646", "iso_646.irv:1983"}),
+ new Charset("UTF8", "UTF-8", new String[] {}),
+ new Charset("UTF-16", "UTF-16", new String[] {"UTF_16"}),
+ new Charset("UnicodeBigUnmarked", "UTF-16BE", new String[] {"X-UTF-16BE", "UTF_16BE", "ISO-10646-UCS-2"}),
+ new Charset("UnicodeLittleUnmarked", "UTF-16LE", new String[] {"UTF_16LE", "X-UTF-16LE"}),
+ new Charset("Big5", "Big5", new String[] {"csBig5", "CN-Big5", "BIG-FIVE", "BIGFIVE"}),
+ new Charset("Big5_HKSCS", "Big5-HKSCS", new String[] {"big5hkscs"}),
+ new Charset("EUC_JP", "EUC-JP",
+ new String[] {"csEUCPkdFmtJapanese",
+ "Extended_UNIX_Code_Packed_Format_for_Japanese",
+ "eucjis", "x-eucjp", "eucjp", "x-euc-jp"}),
+ new Charset("EUC_KR", "EUC-KR",
+ new String[] {"csEUCKR", "ksc5601", "5601", "ksc5601_1987",
+ "ksc_5601", "ksc5601-1987", "ks_c_5601-1987",
+ "euckr"}),
+ new Charset("GB18030", "GB18030", new String[] {"gb18030-2000"}),
+ new Charset("EUC_CN", "GB2312", new String[] {"x-EUC-CN", "csGB2312", "euccn", "euc-cn", "gb2312-80", "gb2312-1980", "CN-GB", "CN-GB-ISOIR165"}),
+ new Charset("GBK", "windows-936", new String[] {"CP936", "MS936", "ms_936", "x-mswin-936"}),
+
+ new Charset("Cp037", "IBM037", new String[] {"ebcdic-cp-us", "ebcdic-cp-ca", "ebcdic-cp-wt", "ebcdic-cp-nl", "csIBM037"}),
+ new Charset("Cp273", "IBM273", new String[] {"csIBM273"}),
+ new Charset("Cp277", "IBM277", new String[] {"EBCDIC-CP-DK", "EBCDIC-CP-NO", "csIBM277"}),
+ new Charset("Cp278", "IBM278", new String[] {"CP278", "ebcdic-cp-fi", "ebcdic-cp-se", "csIBM278"}),
+ new Charset("Cp280", "IBM280", new String[] {"ebcdic-cp-it", "csIBM280"}),
+ new Charset("Cp284", "IBM284", new String[] {"ebcdic-cp-es", "csIBM284"}),
+ new Charset("Cp285", "IBM285", new String[] {"ebcdic-cp-gb", "csIBM285"}),
+ new Charset("Cp297", "IBM297", new String[] {"ebcdic-cp-fr", "csIBM297"}),
+ new Charset("Cp420", "IBM420", new String[] {"ebcdic-cp-ar1", "csIBM420"}),
+ new Charset("Cp424", "IBM424", new String[] {"ebcdic-cp-he", "csIBM424"}),
+ new Charset("Cp437", "IBM437", new String[] {"437", "csPC8CodePage437"}),
+ new Charset("Cp500", "IBM500", new String[] {"ebcdic-cp-be", "ebcdic-cp-ch", "csIBM500"}),
+ new Charset("Cp775", "IBM775", new String[] {"csPC775Baltic"}),
+ new Charset("Cp838", "IBM-Thai", new String[] {}),
+ new Charset("Cp850", "IBM850", new String[] {"850", "csPC850Multilingual"}),
+ new Charset("Cp852", "IBM852", new String[] {"852", "csPCp852"}),
+ new Charset("Cp855", "IBM855", new String[] {"855", "csIBM855"}),
+ new Charset("Cp857", "IBM857", new String[] {"857", "csIBM857"}),
+ new Charset("Cp858", "IBM00858",
+ new String[] {"CCSID00858", "CP00858",
+ "PC-Multilingual-850+euro"}),
+ new Charset("Cp860", "IBM860", new String[] {"860", "csIBM860"}),
+ new Charset("Cp861", "IBM861", new String[] {"861", "cp-is", "csIBM861"}),
+ new Charset("Cp862", "IBM862", new String[] {"862", "csPC862LatinHebrew"}),
+ new Charset("Cp863", "IBM863", new String[] {"863", "csIBM863"}),
+ new Charset("Cp864", "IBM864", new String[] {"cp864", "csIBM864"}),
+ new Charset("Cp865", "IBM865", new String[] {"865", "csIBM865"}),
+ new Charset("Cp866", "IBM866", new String[] {"866", "csIBM866"}),
+ new Charset("Cp868", "IBM868", new String[] {"cp-ar", "csIBM868"}),
+ new Charset("Cp869", "IBM869", new String[] {"cp-gr", "csIBM869"}),
+ new Charset("Cp870", "IBM870", new String[] {"ebcdic-cp-roece", "ebcdic-cp-yu", "csIBM870"}),
+ new Charset("Cp871", "IBM871", new String[] {"ebcdic-cp-is", "csIBM871"}),
+ new Charset("Cp918", "IBM918", new String[] {"ebcdic-cp-ar2", "csIBM918"}),
+ new Charset("Cp1026", "IBM1026", new String[] {"csIBM1026"}),
+ new Charset("Cp1047", "IBM1047", new String[] {"IBM-1047"}),
+ new Charset("Cp1140", "IBM01140",
+ new String[] {"CCSID01140", "CP01140",
+ "ebcdic-us-37+euro"}),
+ new Charset("Cp1141", "IBM01141",
+ new String[] {"CCSID01141", "CP01141",
+ "ebcdic-de-273+euro"}),
+ new Charset("Cp1142", "IBM01142", new String[] {"CCSID01142", "CP01142", "ebcdic-dk-277+euro", "ebcdic-no-277+euro"}),
+ new Charset("Cp1143", "IBM01143", new String[] {"CCSID01143", "CP01143", "ebcdic-fi-278+euro", "ebcdic-se-278+euro"}),
+ new Charset("Cp1144", "IBM01144", new String[] {"CCSID01144", "CP01144", "ebcdic-it-280+euro"}),
+ new Charset("Cp1145", "IBM01145", new String[] {"CCSID01145", "CP01145", "ebcdic-es-284+euro"}),
+ new Charset("Cp1146", "IBM01146", new String[] {"CCSID01146", "CP01146", "ebcdic-gb-285+euro"}),
+ new Charset("Cp1147", "IBM01147", new String[] {"CCSID01147", "CP01147", "ebcdic-fr-297+euro"}),
+ new Charset("Cp1148", "IBM01148", new String[] {"CCSID01148", "CP01148", "ebcdic-international-500+euro"}),
+ new Charset("Cp1149", "IBM01149", new String[] {"CCSID01149", "CP01149", "ebcdic-is-871+euro"}),
+ new Charset("Cp1250", "windows-1250", new String[] {}),
+ new Charset("Cp1251", "windows-1251", new String[] {}),
+ new Charset("Cp1252", "windows-1252", new String[] {}),
+ new Charset("Cp1253", "windows-1253", new String[] {}),
+ new Charset("Cp1254", "windows-1254", new String[] {}),
+ new Charset("Cp1255", "windows-1255", new String[] {}),
+ new Charset("Cp1256", "windows-1256", new String[] {}),
+ new Charset("Cp1257", "windows-1257", new String[] {}),
+ new Charset("Cp1258", "windows-1258", new String[] {}),
+ new Charset("ISO2022CN", "ISO-2022-CN", new String[] {}),
+ new Charset("ISO2022JP", "ISO-2022-JP", new String[] {"csISO2022JP", "JIS", "jis_encoding", "csjisencoding"}),
+ new Charset("ISO2022KR", "ISO-2022-KR", new String[] {"csISO2022KR"}),
+ new Charset("JIS_X0201", "JIS_X0201", new String[] {"X0201", "JIS0201", "csHalfWidthKatakana"}),
+ new Charset("JIS_X0212-1990", "JIS_X0212-1990", new String[] {"iso-ir-159", "x0212", "JIS0212", "csISO159JISX02121990"}),
+ new Charset("JIS_C6626-1983", "JIS_C6626-1983", new String[] {"x-JIS0208", "JIS0208", "csISO87JISX0208", "x0208", "JIS_X0208-1983", "iso-ir-87"}),
+ new Charset("SJIS", "Shift_JIS", new String[] {"MS_Kanji", "csShiftJIS", "shift-jis", "x-sjis", "pck"}),
+ new Charset("TIS620", "TIS-620", new String[] {}),
+ new Charset("MS932", "Windows-31J", new String[] {"windows-932", "csWindows31J", "x-ms-cp932"}),
+ new Charset("EUC_TW", "EUC-TW", new String[] {"x-EUC-TW", "cns11643", "euctw"}),
+ new Charset("x-Johab", "johab", new String[] {"johab", "cp1361", "ms1361", "ksc5601-1992", "ksc5601_1992"}),
+ new Charset("MS950_HKSCS", "", new String[] {}),
+ new Charset("MS874", "windows-874", new String[] {"cp874"}),
+ new Charset("MS949", "windows-949", new String[] {"windows949", "ms_949", "x-windows-949"}),
+ new Charset("MS950", "windows-950", new String[] {"x-windows-950"}),
+
+ new Charset("Cp737", null, new String[] {}),
+ new Charset("Cp856", null, new String[] {}),
+ new Charset("Cp875", null, new String[] {}),
+ new Charset("Cp921", null, new String[] {}),
+ new Charset("Cp922", null, new String[] {}),
+ new Charset("Cp930", null, new String[] {}),
+ new Charset("Cp933", null, new String[] {}),
+ new Charset("Cp935", null, new String[] {}),
+ new Charset("Cp937", null, new String[] {}),
+ new Charset("Cp939", null, new String[] {}),
+ new Charset("Cp942", null, new String[] {}),
+ new Charset("Cp942C", null, new String[] {}),
+ new Charset("Cp943", null, new String[] {}),
+ new Charset("Cp943C", null, new String[] {}),
+ new Charset("Cp948", null, new String[] {}),
+ new Charset("Cp949", null, new String[] {}),
+ new Charset("Cp949C", null, new String[] {}),
+ new Charset("Cp950", null, new String[] {}),
+ new Charset("Cp964", null, new String[] {}),
+ new Charset("Cp970", null, new String[] {}),
+ new Charset("Cp1006", null, new String[] {}),
+ new Charset("Cp1025", null, new String[] {}),
+ new Charset("Cp1046", null, new String[] {}),
+ new Charset("Cp1097", null, new String[] {}),
+ new Charset("Cp1098", null, new String[] {}),
+ new Charset("Cp1112", null, new String[] {}),
+ new Charset("Cp1122", null, new String[] {}),
+ new Charset("Cp1123", null, new String[] {}),
+ new Charset("Cp1124", null, new String[] {}),
+ new Charset("Cp1381", null, new String[] {}),
+ new Charset("Cp1383", null, new String[] {}),
+ new Charset("Cp33722", null, new String[] {}),
+ new Charset("Big5_Solaris", null, new String[] {}),
+ new Charset("EUC_JP_LINUX", null, new String[] {}),
+ new Charset("EUC_JP_Solaris", null, new String[] {}),
+ new Charset("ISCII91", null, new String[] {"x-ISCII91", "iscii"}),
+ new Charset("ISO2022_CN_CNS", null, new String[] {}),
+ new Charset("ISO2022_CN_GB", null, new String[] {}),
+ new Charset("x-iso-8859-11", null, new String[] {}),
+ new Charset("JISAutoDetect", null, new String[] {}),
+ new Charset("MacArabic", null, new String[] {}),
+ new Charset("MacCentralEurope", null, new String[] {}),
+ new Charset("MacCroatian", null, new String[] {}),
+ new Charset("MacCyrillic", null, new String[] {}),
+ new Charset("MacDingbat", null, new String[] {}),
+ new Charset("MacGreek", "MacGreek", new String[] {}),
+ new Charset("MacHebrew", null, new String[] {}),
+ new Charset("MacIceland", null, new String[] {}),
+ new Charset("MacRoman", "MacRoman", new String[] {"Macintosh", "MAC", "csMacintosh"}),
+ new Charset("MacRomania", null, new String[] {}),
+ new Charset("MacSymbol", null, new String[] {}),
+ new Charset("MacThai", null, new String[] {}),
+ new Charset("MacTurkish", null, new String[] {}),
+ new Charset("MacUkraine", null, new String[] {}),
+ new Charset("UnicodeBig", null, new String[] {}),
+ new Charset("UnicodeLittle", null, new String[] {})
+ };
+
+ /**
+ * Contains the canonical names of character sets which can be used to
+ * decode bytes into Java chars.
+ */
+ private static TreeSet<String> decodingSupported = null;
+
+ /**
+ * Contains the canonical names of character sets which can be used to
+ * encode Java chars into bytes.
+ */
+ private static TreeSet<String> encodingSupported = null;
+
+ /**
+ * Maps character set names to Charset objects. All possible names of
+ * a charset will be mapped to the Charset.
+ */
+ private static HashMap<String, Charset> charsetMap = null;
+
+ static {
+ decodingSupported = new TreeSet<String>();
+ encodingSupported = new TreeSet<String>();
+ byte[] dummy = new byte[] {'d', 'u', 'm', 'm', 'y'};
+ for (int i = 0; i < JAVA_CHARSETS.length; i++) {
+ try {
+ String s = new String(dummy, JAVA_CHARSETS[i].canonical);
+ decodingSupported.add(JAVA_CHARSETS[i].canonical.toLowerCase(Locale.US));
+ } catch (UnsupportedOperationException e) {
+ } catch (UnsupportedEncodingException e) {
+ }
+ try {
+ "dummy".getBytes(JAVA_CHARSETS[i].canonical);
+ encodingSupported.add(JAVA_CHARSETS[i].canonical.toLowerCase(Locale.US));
+ } catch (UnsupportedOperationException e) {
+ } catch (UnsupportedEncodingException e) {
+ }
+ }
+
+ charsetMap = new HashMap<String, Charset>();
+ for (int i = 0; i < JAVA_CHARSETS.length; i++) {
+ Charset c = JAVA_CHARSETS[i];
+ charsetMap.put(c.canonical.toLowerCase(Locale.US), c);
+ if (c.mime != null) {
+ charsetMap.put(c.mime.toLowerCase(Locale.US), c);
+ }
+ if (c.aliases != null) {
+ for (int j = 0; j < c.aliases.length; j++) {
+ charsetMap.put(c.aliases[j].toLowerCase(Locale.US), c);
+ }
+ }
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Character sets which support decoding: "
+ + decodingSupported);
+ log.debug("Character sets which support encoding: "
+ + encodingSupported);
+ }
+ }
+
+ /**
+ * ANDROID: THE FOLLOWING SET OF STATIC STRINGS ARE COPIED FROM A NEWER VERSION OF MIME4J
+ */
+
+ /** carriage return - line feed sequence */
+ public static final String CRLF = "\r\n";
+
+ /** US-ASCII CR, carriage return (13) */
+ public static final int CR = '\r';
+
+ /** US-ASCII LF, line feed (10) */
+ public static final int LF = '\n';
+
+ /** US-ASCII SP, space (32) */
+ public static final int SP = ' ';
+
+ /** US-ASCII HT, horizontal-tab (9)*/
+ public static final int HT = '\t';
+
+ public static final java.nio.charset.Charset US_ASCII = java.nio.charset.Charset
+ .forName("US-ASCII");
+
+ public static final java.nio.charset.Charset ISO_8859_1 = java.nio.charset.Charset
+ .forName("ISO-8859-1");
+
+ public static final java.nio.charset.Charset UTF_8 = java.nio.charset.Charset
+ .forName("UTF-8");
+
+ /**
+ * Returns <code>true</code> if the specified character is a whitespace
+ * character (CR, LF, SP or HT).
+ *
+ * ANDROID: COPIED FROM A NEWER VERSION OF MIME4J
+ *
+ * @param ch
+ * character to test.
+ * @return <code>true</code> if the specified character is a whitespace
+ * character, <code>false</code> otherwise.
+ */
+ public static boolean isWhitespace(char ch) {
+ return ch == SP || ch == HT || ch == CR || ch == LF;
+ }
+
+ /**
+ * Returns <code>true</code> if the specified string consists entirely of
+ * whitespace characters.
+ *
+ * ANDROID: COPIED FROM A NEWER VERSION OF MIME4J
+ *
+ * @param s
+ * string to test.
+ * @return <code>true</code> if the specified string consists entirely of
+ * whitespace characters, <code>false</code> otherwise.
+ */
+ public static boolean isWhitespace(final String s) {
+ if (s == null) {
+ throw new IllegalArgumentException("String may not be null");
+ }
+ final int len = s.length();
+ for (int i = 0; i < len; i++) {
+ if (!isWhitespace(s.charAt(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Determines if the VM supports encoding (chars to bytes) the
+ * specified character set. NOTE: the given character set name may
+ * not be known to the VM even if this method returns <code>true</code>.
+ * Use {@link #toJavaCharset(String)} to get the canonical Java character
+ * set name.
+ *
+ * @param charsetName the characters set name.
+ * @return <code>true</code> if encoding is supported, <code>false</code>
+ * otherwise.
+ */
+ public static boolean isEncodingSupported(String charsetName) {
+ return encodingSupported.contains(charsetName.toLowerCase(Locale.US));
+ }
+
+ /**
+ * Determines if the VM supports decoding (bytes to chars) the
+ * specified character set. NOTE: the given character set name may
+ * not be known to the VM even if this method returns <code>true</code>.
+ * Use {@link #toJavaCharset(String)} to get the canonical Java character
+ * set name.
+ *
+ * @param charsetName the characters set name.
+ * @return <code>true</code> if decoding is supported, <code>false</code>
+ * otherwise.
+ */
+ public static boolean isDecodingSupported(String charsetName) {
+ return decodingSupported.contains(charsetName.toLowerCase(Locale.US));
+ }
+
+ /**
+ * Gets the preferred MIME character set name for the specified
+ * character set or <code>null</code> if not known.
+ *
+ * @param charsetName the character set name to look for.
+ * @return the MIME preferred name or <code>null</code> if not known.
+ */
+ public static String toMimeCharset(String charsetName) {
+ Charset c = charsetMap.get(charsetName.toLowerCase(Locale.US));
+ if (c != null) {
+ return c.mime;
+ }
+ return null;
+ }
+
+ /**
+ * Gets the canonical Java character set name for the specified
+ * character set or <code>null</code> if not known. This should be
+ * called before doing any conversions using the Java API. NOTE:
+ * you must use {@link #isEncodingSupported(String)} or
+ * {@link #isDecodingSupported(String)} to make sure the returned
+ * Java character set is supported by the current VM.
+ *
+ * @param charsetName the character set name to look for.
+ * @return the canonical Java name or <code>null</code> if not known.
+ */
+ public static String toJavaCharset(String charsetName) {
+ Charset c = charsetMap.get(charsetName.toLowerCase(Locale.US));
+ if (c != null) {
+ return c.canonical;
+ }
+ return null;
+ }
+
+ public static java.nio.charset.Charset getCharset(String charsetName) {
+ String defaultCharset = "ISO-8859-1";
+
+ // Use the default chareset if given charset is null
+ if(charsetName == null) charsetName = defaultCharset;
+
+ try {
+ return java.nio.charset.Charset.forName(charsetName);
+ } catch (IllegalCharsetNameException e) {
+ log.info("Illegal charset " + charsetName + ", fallback to " +
+ defaultCharset + ": " + e);
+ // Use default charset on exception
+ return java.nio.charset.Charset.forName(defaultCharset);
+ } catch (UnsupportedCharsetException ex) {
+ log.info("Unsupported charset " + charsetName + ", fallback to " +
+ defaultCharset + ": " + ex);
+ // Use default charset on exception
+ return java.nio.charset.Charset.forName(defaultCharset);
+ }
+
+ }
+ /*
+ * Uncomment the code below and run the main method to regenerate the
+ * Javadoc table above when the known charsets change.
+ */
+
+ /*
+ private static String dumpHtmlTable() {
+ LinkedList l = new LinkedList(Arrays.asList(JAVA_CHARSETS));
+ Collections.sort(l);
+ StringBuffer sb = new StringBuffer();
+ sb.append(" * <table>\n");
+ sb.append(" * <tr>\n");
+ sb.append(" * <td>Canonical (Java) name</td>\n");
+ sb.append(" * <td>MIME preferred</td>\n");
+ sb.append(" * <td>Aliases</td>\n");
+ sb.append(" * </tr>\n");
+
+ for (Iterator it = l.iterator(); it.hasNext();) {
+ Charset c = (Charset) it.next();
+ sb.append(" * <tr>\n");
+ sb.append(" * <td>" + c.canonical + "</td>\n");
+ sb.append(" * <td>" + (c.mime == null ? "?" : c.mime)+ "</td>\n");
+ sb.append(" * <td>");
+ for (int i = 0; c.aliases != null && i < c.aliases.length; i++) {
+ sb.append(c.aliases[i] + " ");
+ }
+ sb.append("</td>\n");
+ sb.append(" * </tr>\n");
+ }
+ sb.append(" * </table>\n");
+ return sb.toString();
+ }
+
+ public static void main(String[] args) {
+ System.out.println(dumpHtmlTable());
+ }*/
+}
\ No newline at end of file
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index af3f7e4..8900568 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -19,6 +19,7 @@
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PERFORM_CDMA_PROVISIONING" />
+ <uses-permission android:name="android.permission.PERFORM_SIM_ACTIVATION" />
<application android:label="@string/app_name">
<uses-library android:name="android.test.runner" />
@@ -56,6 +57,8 @@
<data android:scheme="smsto" />
</intent-filter>
</service>
+
+ <receiver android:name="com.android.services.telephony.activation.ResponseReceiver" />
</application>
<!--
diff --git a/tests/src/com/android/services/telephony/activation/ResponseReceiver.java b/tests/src/com/android/services/telephony/activation/ResponseReceiver.java
new file mode 100644
index 0000000..33e7f00
--- /dev/null
+++ b/tests/src/com/android/services/telephony/activation/ResponseReceiver.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2015 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.services.telephony.activation;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import com.android.services.telephony.Log;
+
+public class ResponseReceiver extends BroadcastReceiver {
+ volatile public static boolean responseReceived = false;
+ public static final String ACTION_ACTIVATION_RESPONSE =
+ "com.android.services.telephony.ACTIVATION_RESPONSE";
+
+ private final Object mLock;
+ private Context mContext;
+
+ ResponseReceiver(Object lock) {
+ mLock = lock;
+ }
+
+ /** ${inheritDoc} */
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (!ACTION_ACTIVATION_RESPONSE.equals(intent.getAction())) {
+ Log.e(this, null, "Unexpected intent: " + intent.getAction());
+ return;
+ }
+
+ responseReceived = true;
+ Log.i(this, "received intent");
+
+ if (mLock != null) {
+ synchronized(mLock) {
+ Log.i(this, "notifying");
+ mLock.notify();
+ }
+ }
+ }
+
+ void register(Context context) {
+ context.registerReceiver(this, new IntentFilter(ACTION_ACTIVATION_RESPONSE));
+ mContext = context;
+ }
+
+ void unregister() {
+ mContext.unregisterReceiver(this);
+ }
+}
diff --git a/tests/src/com/android/services/telephony/activation/SimActivationTest.java b/tests/src/com/android/services/telephony/activation/SimActivationTest.java
new file mode 100644
index 0000000..f6060dc
--- /dev/null
+++ b/tests/src/com/android/services/telephony/activation/SimActivationTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2015 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.services.telephony.activation;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.services.telephony.Log;
+
+public class SimActivationTest extends AndroidTestCase {
+
+ private static Object mActivationLock = new Object();
+ private ResponseReceiver mResponseReceiver;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mResponseReceiver = new ResponseReceiver(mActivationLock);
+ mResponseReceiver.register(context());
+ }
+
+ /** ${inheritDoc} */
+ @Override
+ protected void tearDown() throws Exception {
+ mResponseReceiver.unregister();
+ super.tearDown();
+ }
+
+ @SmallTest
+ public void testSimActivationResponse() throws Exception {
+ Log.i(this, "Running activation test");
+
+ Intent responseIntent = new Intent(ResponseReceiver.ACTION_ACTIVATION_RESPONSE);
+ responseIntent.setPackage(context().getPackageName());
+ PendingIntent pendingResponse = PendingIntent.getBroadcast(
+ context(), 0, responseIntent, 0);
+
+ Intent intent = new Intent(Intent.ACTION_SIM_ACTIVATION_REQUEST);
+ intent.putExtra(Intent.EXTRA_SIM_ACTIVATION_RESPONSE, pendingResponse);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ Log.i(this, "sent intent");
+ context().startActivity(intent);
+ synchronized (mActivationLock) {
+ Log.i(this, "waiting ");
+ mActivationLock.wait(5000);
+ Log.i(this, "unwaiting");
+ }
+ assertTrue(ResponseReceiver.responseReceived);
+ }
+
+ private Context context() {
+ return getContext();
+ }
+}