<?xml version="1.0" encoding="utf-8"?>
<!--
 ~ Copyright (C) 2017 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:xliff="urn:oasis:names:tc:xliff:document:1.2">
  <!-- String used to display voicemails from unknown numbers in the voicemail tab.  [CHAR LIMIT=30] -->
  <string name="voicemail_entry_unknown">Unknown</string>

  <!-- Format for duration of voicemails which are displayed when viewing voicemail. For example "01:22" -->
  <string name="voicemailDurationFormat"><xliff:g example="10" id="minutes">%1$02d</xliff:g>:<xliff:g example="20" id="seconds">%2$02d</xliff:g></string>

  <!-- TODO(ubdullah): Confirm string with UX before allowing translation -->
  <!-- String used to display the state of the voicemail media player -->
  <string name="voicemail_media_player_state" translatable="false">Loading Voicemail</string>

  <!-- String used to display the default staring point of a voicemail-->
  <string name="voicemail_media_player_inital_start_position" translatable="false">00:00</string>

  <!-- Header in voicemail tab to group calls from the current day.  [CHAR LIMIT=30] -->
  <string name="new_voicemail_header_today">Today</string>
  <!-- Header in voicemail tab to group calls from yesterday.  [CHAR LIMIT=30] -->
  <string name="new_voicemail_header_yesterday">Yesterday</string>
  <!-- Header in voicemail tab to group calls from before yesterday.  [CHAR LIMIT=30] -->
  <string name="new_voicemail_header_older">Older</string>

  <string name="verizon_terms_and_conditions_title" translatable="false">Turn on visual voicemail</string>

  <string translatable="false" name="verizon_terms_and_conditions_1.1_english">
Visual Voice Mail (VVM) is a service that provides access to voice mail messages directly on the device, without the need to call *86. This service requires traditional Voice Mail but does not support all traditional Voice Mail features, which you can access by dialing *86 from your handset. Use of this feature will be billed on a per-megabyte basis, or according to any data package you have. Mobile to mobile minutes do not apply. Standard rates apply to any calls, emails or messages initiated from Visual Voice Mail.\n
\n
You may disable VVM in settings. This will revert you to basic voice mail. In some cases you may need to call customer care to cancel and if you cancel Visual Voice Mail you may lose all stored voice mails and information.\n
\n
For the Premium Visual Voice Mail service, some voice messages may not be completely transcribed; incomplete messages will end with [...]. Only the first 45 seconds of each voice message will be transcribed, so for longer messages, you will need to listen to the voice message itself. Any profane or offensive language also will not be transcribed and will appear as [...] in the transcription.\n
\n
Speech recordings may be collected and stored for a period of 30 days, solely for the purpose of testing and improving transcription technology and performance, subject to the Verizon Wireless Privacy Policy, which can be found at <xliff:g>%s</xliff:g>\n
\n
You understand that by selecting ACCEPT, your messages will be stored and anyone in possession of this device will have access to your voice mail. You further understand that your voice mail messages may be stored in electronic format on this device. To limit unauthorized access to your voice mail, you should consider locking your phone when not in use. Not available in all areas or over Wi\u2011Fi.\n
\n
If you do not accept all of these terms and conditions, do not use Visual Voice Mail.  </string>

  <string translatable="false" name="verizon_terms_and_conditions_decline_english">No Thanks</string>

  <string translatable="false" name="verizon_terms_and_conditions_accept_english">Turn On</string>

  <!-- Label indicating who provided the voicemail transcription [CHAR LIMIT=64] -->
  <string name="voicemail_transcription_branding_text">Transcribed by Google</string>

  <!-- Text displayed when the list of voicemails is empty [CHAR LIMIT=NONE] -->
  <string name="empty_voicemail_tab_text">Your voicemail inbox is empty.</string>

</resources>
