Moved strings to translatable file + use only toast layout

This commit is contained in:
Sylvain Berfini 2023-09-11 11:36:34 +02:00
parent 7e36ffc2b4
commit 0dbc9f7a8a
67 changed files with 507 additions and 410 deletions

View file

@ -20,8 +20,6 @@
package org.linphone.ui.assistant
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.DrawableRes
import androidx.annotation.UiThread
@ -32,8 +30,7 @@ import androidx.lifecycle.lifecycleScope
import org.linphone.LinphoneApplication
import org.linphone.R
import org.linphone.databinding.AssistantActivityBinding
import org.linphone.databinding.ToastGreenBinding
import org.linphone.databinding.ToastRedBinding
import org.linphone.utils.AppUtils
import org.linphone.utils.slideInToastFromTopForDuration
@UiThread
@ -53,15 +50,7 @@ class AssistantActivity : AppCompatActivity() {
}
fun showGreenToast(message: String, @DrawableRes icon: Int) {
val greenToast: ToastGreenBinding = DataBindingUtil.inflate(
LayoutInflater.from(this),
R.layout.toast_green,
binding.toastsArea,
false
)
greenToast.message = message
greenToast.icon = icon
greenToast.root.visibility = View.GONE
val greenToast = AppUtils.getGreenToast(this, binding.toastsArea, message, icon)
binding.toastsArea.addView(greenToast.root)
greenToast.root.slideInToastFromTopForDuration(
@ -71,15 +60,7 @@ class AssistantActivity : AppCompatActivity() {
}
fun showRedToast(message: String, @DrawableRes icon: Int) {
val redToast: ToastRedBinding = DataBindingUtil.inflate(
LayoutInflater.from(this),
R.layout.toast_red,
binding.toastsArea,
false
)
redToast.message = message
redToast.icon = icon
redToast.root.visibility = View.GONE
val redToast = AppUtils.getRedToast(this, binding.toastsArea, message, icon)
binding.toastsArea.addView(redToast.root)
redToast.root.slideInToastFromTopForDuration(

View file

@ -84,15 +84,13 @@ class QrCodeScannerFragment : Fragment() {
viewModel.qrCodeFoundEvent.observe(viewLifecycleOwner) {
it.consume { isValid ->
if (isValid) {
// TODO FIXME: show translated string
(requireActivity() as AssistantActivity).showGreenToast(
"QR code validated!",
getString(R.string.toast_assistant_qr_code_valid),
R.drawable.check_fat_fill
)
} else {
// TODO FIXME: show translated string
(requireActivity() as AssistantActivity).showRedToast(
"Invalid QR code!",
getString(R.string.toast_assistant_qr_code_invalid),
R.drawable.warning_circle
)
}

View file

@ -34,6 +34,7 @@ import org.json.JSONException
import org.json.JSONObject
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R
import org.linphone.core.AccountCreator
import org.linphone.core.AccountCreatorListenerStub
import org.linphone.core.Core
@ -288,8 +289,10 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
if (status == AccountCreator.PhoneNumberStatus.Ok.toInt()) {
val normalizedPhoneNumber = accountCreator.phoneNumber
// TODO FIXME: use translated string
val message = "We have sent a verification code on your phone number “$normalizedPhoneNumber”.\n\nPlease enter the verification code below:"
val message = coreContext.context.getString(
R.string.assistant_account_creation_sms_confirmation_explanation,
normalizedPhoneNumber
)
confirmationMessage.postValue(message)
Log.i(

View file

@ -38,7 +38,7 @@ import androidx.navigation.findNavController
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R
import org.linphone.databinding.MainActivityBinding
import org.linphone.databinding.ToastGreenBinding
import org.linphone.databinding.ToastBinding
import org.linphone.utils.slideInToastFromTopForDuration
@UiThread
@ -95,18 +95,19 @@ class MainActivity : AppCompatActivity() {
RECORD_AUDIO_PERMISSION_REQUEST
)
}
if (checkSelfPermission(Manifest.permission.MANAGE_OWN_CALLS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(
arrayOf(Manifest.permission.MANAGE_OWN_CALLS),
MANAGE_OWN_CALLS_PERMISSION_REQUEST
)
}
// TODO FIXME : use compatibility
if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(
arrayOf(Manifest.permission.POST_NOTIFICATIONS),
POST_NOTIFICATIONS_PERMISSION_REQUEST
)
}
if (checkSelfPermission(Manifest.permission.MANAGE_OWN_CALLS) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(
arrayOf(Manifest.permission.POST_NOTIFICATIONS),
MANAGE_OWN_CALLS_PERMISSION_REQUEST
)
}
}
override fun onRequestPermissionsResult(
@ -139,14 +140,16 @@ class MainActivity : AppCompatActivity() {
}
fun showGreenToast(message: String, @DrawableRes icon: Int) {
val greenToast: ToastGreenBinding = DataBindingUtil.inflate(
val greenToast: ToastBinding = DataBindingUtil.inflate(
LayoutInflater.from(this),
R.layout.toast_green,
R.layout.toast,
binding.toastsArea,
false
)
greenToast.message = message
greenToast.icon = icon
greenToast.shadowColor = R.drawable.shape_toast_green_shadow
greenToast.textColor = R.color.green_online
greenToast.root.visibility = View.GONE
binding.toastsArea.addView(greenToast.root)

View file

@ -118,9 +118,8 @@ class CallFragment : GenericFragment() {
it.consume {
sharedViewModel.forceRefreshCallLogsListEvent.value = Event(true)
// TODO FIXME: show translated string
(requireActivity() as MainActivity).showGreenToast(
"Historique supprimé",
getString(R.string.toast_call_history_deleted),
R.drawable.check_fat_fill
)
goBack() // TODO FIXME : issue with tablet when pane can't be closed
@ -133,9 +132,8 @@ class CallFragment : GenericFragment() {
val label = "SIP address"
clipboard.setPrimaryClip(ClipData.newPlainText(label, value))
// TODO FIXME: show translated string
(requireActivity() as MainActivity).showGreenToast(
"Numéro copié dans le presse-papier",
getString(R.string.toast_sip_address_copied_to_clipboard),
R.drawable.check_fat_fill
)
}

View file

@ -160,10 +160,9 @@ class CallsListFragment : GenericFragment() {
listViewModel.historyDeletedEvent.observe(viewLifecycleOwner) {
it.consume {
Log.w("$TAG Deleting all call history")
// TODO FIXME: show translated string
Log.w("$TAG All call logs have been deleted")
(requireActivity() as MainActivity).showGreenToast(
"Historique supprimé",
getString(R.string.toast_call_history_deleted),
R.drawable.check_fat_fill
)
}
@ -231,9 +230,8 @@ class CallsListFragment : GenericFragment() {
val label = "SIP address"
clipboard.setPrimaryClip(ClipData.newPlainText(label, value))
// TODO FIXME: show translated string
(requireActivity() as MainActivity).showGreenToast(
"Numéro copié dans le presse-papier",
getString(R.string.toast_sip_address_copied_to_clipboard),
R.drawable.check_fat_fill
)
}

View file

@ -212,9 +212,13 @@ class ContactFragment : GenericFragment() {
val label = if (isSip) "SIP address" else "Phone number"
clipboard.setPrimaryClip(ClipData.newPlainText(label, value))
// TODO FIXME: show translated string
val message = if (isSip) {
getString(R.string.toast_sip_address_copied_to_clipboard)
} else {
getString(R.string.toast_phone_number_copied_to_clipboard)
}
(requireActivity() as MainActivity).showGreenToast(
"Numéro copié dans le presse-papier",
message,
R.drawable.check_fat_fill
)
}

View file

@ -24,10 +24,12 @@ import android.net.Uri
import android.provider.ContactsContract
import androidx.annotation.WorkerThread
import androidx.lifecycle.MutableLiveData
import org.linphone.R
import org.linphone.core.ConsolidatedPresence
import org.linphone.core.Friend
import org.linphone.core.FriendListenerStub
import org.linphone.core.tools.Log
import org.linphone.utils.AppUtils
import org.linphone.utils.LinphoneUtils
import org.linphone.utils.TimestampUtils
@ -113,7 +115,7 @@ class ContactAvatarModel @WorkerThread constructor(val friend: Friend) {
val presenceString = when (presence) {
ConsolidatedPresence.Online -> {
"Online"
AppUtils.getString(R.string.friend_presence_status_online)
}
ConsolidatedPresence.Busy -> {
val timestamp = friend.presenceModel?.latestActivityTimestamp ?: -1L
@ -124,16 +126,20 @@ class ContactAvatarModel @WorkerThread constructor(val friend: Friend) {
timestamp,
timestampInSecs = true
)
val text = "Online today at"
"$text $time"
AppUtils.getFormattedString(
R.string.friend_presence_status_was_online_today_at,
time
)
}
TimestampUtils.isYesterday(timestamp) -> {
val time = TimestampUtils.timeToString(
timestamp,
timestampInSecs = true
)
val text = "Online yesterday at"
"$text $time"
AppUtils.getFormattedString(
R.string.friend_presence_status_was_online_yesterday_at,
time
)
}
else -> {
val date = TimestampUtils.toString(
@ -142,16 +148,18 @@ class ContactAvatarModel @WorkerThread constructor(val friend: Friend) {
shortDate = false,
hideYear = true
)
val text = "Online on"
"$text $date"
AppUtils.getFormattedString(
R.string.friend_presence_status_was_online_on,
date
)
}
}
} else {
"Away"
AppUtils.getString(R.string.friend_presence_status_away)
}
}
ConsolidatedPresence.DoNotDisturb -> {
"Do not disturb"
AppUtils.getString(R.string.friend_presence_status_do_not_disturb)
}
else -> ""
}

View file

@ -52,7 +52,6 @@ class ConversationMenuDialogFragment(
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// TODO FIXME: use a viewmodel and use core thread
val view = ChatRoomMenuBinding.inflate(layoutInflater)
view.isMuted = chatRoom.muted

View file

@ -24,10 +24,12 @@ import androidx.annotation.UiThread
import androidx.annotation.WorkerThread
import androidx.lifecycle.MutableLiveData
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R
import org.linphone.core.Account
import org.linphone.core.AccountListenerStub
import org.linphone.core.RegistrationState
import org.linphone.core.tools.Log
import org.linphone.utils.AppUtils
import org.linphone.utils.LinphoneUtils
class AccountModel @WorkerThread constructor(
@ -135,11 +137,21 @@ class AccountModel @WorkerThread constructor(
isDefault.postValue(coreContext.core.defaultAccount == account)
val state = when (account.state) {
RegistrationState.None, RegistrationState.Cleared -> "Disabled"
RegistrationState.Progress -> "Connection..."
RegistrationState.Failed -> "Error"
RegistrationState.Ok -> "Connected"
RegistrationState.Refreshing -> "Refreshing"
RegistrationState.None, RegistrationState.Cleared -> AppUtils.getString(
R.string.drawer_menu_account_connection_status_cleared
)
RegistrationState.Progress -> AppUtils.getString(
R.string.drawer_menu_account_connection_status_progress
)
RegistrationState.Failed -> AppUtils.getString(
R.string.drawer_menu_account_connection_status_failed
)
RegistrationState.Ok -> AppUtils.getString(
R.string.drawer_menu_account_connection_status_connected
)
RegistrationState.Refreshing -> AppUtils.getString(
R.string.drawer_menu_account_connection_status_refreshing
)
else -> "${account.state}"
}

View file

@ -20,8 +20,6 @@
package org.linphone.ui.voip
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.DrawableRes
import androidx.annotation.UiThread
@ -38,9 +36,6 @@ import androidx.navigation.fragment.findNavController
import org.linphone.LinphoneApplication
import org.linphone.R
import org.linphone.core.tools.Log
import org.linphone.databinding.ToastBlueBinding
import org.linphone.databinding.ToastGreenBinding
import org.linphone.databinding.ToastRedBinding
import org.linphone.databinding.VoipActivityBinding
import org.linphone.ui.voip.fragment.ActiveCallFragmentDirections
import org.linphone.ui.voip.fragment.AudioDevicesMenuDialogFragment
@ -50,6 +45,7 @@ import org.linphone.ui.voip.model.AudioDeviceModel
import org.linphone.ui.voip.viewmodel.CallsViewModel
import org.linphone.ui.voip.viewmodel.CurrentCallViewModel
import org.linphone.ui.voip.viewmodel.SharedCallViewModel
import org.linphone.utils.AppUtils
import org.linphone.utils.slideInToastFromTop
import org.linphone.utils.slideInToastFromTopForDuration
@ -141,12 +137,16 @@ class VoipActivity : AppCompatActivity() {
callsViewModel.showLowSignalEvent.observe(this) {
it.consume { show ->
if (show) {
// TODO FIXME: show translated string
showRedToast("Low Wi-Fi signal!", R.drawable.wifi_low)
showRedToast(
getString(R.string.toast_alert_low_wifi_signal),
R.drawable.wifi_low
)
} else {
hideRedToast()
// TODO FIXME: show translated string
showGreenToast("Wi-Fi signal no longer low", R.drawable.wifi_high)
showGreenToast(
getString(R.string.toast_alert_low_wifi_signal_cleared),
R.drawable.wifi_high
)
}
}
}
@ -159,15 +159,7 @@ class VoipActivity : AppCompatActivity() {
}
fun showBlueToast(message: String, @DrawableRes icon: Int) {
val blueToast: ToastBlueBinding = DataBindingUtil.inflate(
LayoutInflater.from(this),
R.layout.toast_blue,
binding.toastsArea,
false
)
blueToast.message = message
blueToast.icon = icon
blueToast.root.visibility = View.GONE
val blueToast = AppUtils.getBlueToast(this, binding.toastsArea, message, icon)
binding.toastsArea.addView(blueToast.root)
blueToast.root.slideInToastFromTopForDuration(
@ -177,15 +169,7 @@ class VoipActivity : AppCompatActivity() {
}
private fun showRedToast(message: String, @DrawableRes icon: Int) {
val redToast: ToastRedBinding = DataBindingUtil.inflate(
LayoutInflater.from(this),
R.layout.toast_red,
binding.toastsArea,
false
)
redToast.message = message
redToast.icon = icon
redToast.root.visibility = View.GONE
val redToast = AppUtils.getRedToast(this, binding.toastsArea, message, icon)
binding.toastsArea.addView(redToast.root)
redToast.root.slideInToastFromTop(
@ -200,15 +184,7 @@ class VoipActivity : AppCompatActivity() {
}
private fun showGreenToast(message: String, @DrawableRes icon: Int) {
val greenToast: ToastGreenBinding = DataBindingUtil.inflate(
LayoutInflater.from(this),
R.layout.toast_green,
binding.toastsArea,
false
)
greenToast.message = message
greenToast.icon = icon
greenToast.root.visibility = View.GONE
val greenToast = AppUtils.getGreenToast(this, binding.toastsArea, message, icon)
binding.toastsArea.addView(greenToast.root)
greenToast.root.slideInToastFromTopForDuration(

View file

@ -111,12 +111,12 @@ class ActiveCallFragment : GenericCallFragment() {
callViewModel.isRemoteDeviceTrusted.observe(viewLifecycleOwner) { trusted ->
if (trusted) {
(requireActivity() as VoipActivity).showBlueToast(
"This call can be trusted",
getString(R.string.toast_call_can_be_trusted),
R.drawable.trusted
)
// TODO: improve
binding.avatar.avatarBorderColor = resources.getColor(
R.color.trusted_blue,
R.color.blue_trusted,
requireContext().theme
)
binding.avatar.avatarBorderWidth = AppUtils.getDimension(

View file

@ -19,14 +19,98 @@
*/
package org.linphone.utils
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.AnyThread
import androidx.annotation.DimenRes
import androidx.annotation.DrawableRes
import androidx.annotation.MainThread
import androidx.annotation.StringRes
import androidx.databinding.DataBindingUtil
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R
import org.linphone.databinding.ToastBinding
class AppUtils {
companion object {
@AnyThread
fun getDimension(id: Int): Float {
fun getDimension(@DimenRes id: Int): Float {
return coreContext.context.resources.getDimension(id)
}
@AnyThread
fun getString(@StringRes id: Int): String {
return coreContext.context.getString(id)
}
@AnyThread
fun getFormattedString(@StringRes id: Int, args: Any): String {
return coreContext.context.getString(id, args)
}
@MainThread
fun getRedToast(
context: Context,
parent: ViewGroup,
message: String,
@DrawableRes icon: Int
): ToastBinding {
val redToast: ToastBinding = DataBindingUtil.inflate(
LayoutInflater.from(context),
R.layout.toast,
parent,
false
)
redToast.message = message
redToast.icon = icon
redToast.shadowColor = R.drawable.shape_toast_red_shadow
redToast.textColor = R.color.red_danger
redToast.root.visibility = View.GONE
return redToast
}
@MainThread
fun getGreenToast(
context: Context,
parent: ViewGroup,
message: String,
@DrawableRes icon: Int
): ToastBinding {
val greenToast: ToastBinding = DataBindingUtil.inflate(
LayoutInflater.from(context),
R.layout.toast,
parent,
false
)
greenToast.message = message
greenToast.icon = icon
greenToast.shadowColor = R.drawable.shape_toast_green_shadow
greenToast.textColor = R.color.green_online
greenToast.root.visibility = View.GONE
return greenToast
}
@MainThread
fun getBlueToast(
context: Context,
parent: ViewGroup,
message: String,
@DrawableRes icon: Int
): ToastBinding {
val blueToast: ToastBinding = DataBindingUtil.inflate(
LayoutInflater.from(context),
R.layout.toast,
parent,
false
)
blueToast.message = message
blueToast.icon = icon
blueToast.shadowColor = R.drawable.shape_toast_blue_shadow
blueToast.textColor = R.color.blue_trusted
blueToast.root.visibility = View.GONE
return blueToast
}
}
}

View file

@ -20,6 +20,7 @@
package org.linphone.utils
import android.content.Context
import android.graphics.PorterDuff
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
@ -31,10 +32,12 @@ import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.ImageView
import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
import androidx.annotation.UiThread
import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
@ -205,6 +208,16 @@ fun ImageView.setPresenceIcon(presence: ConsolidatedPresence?) {
setImageResource(icon)
}
@BindingAdapter("tint")
fun ImageView.setTintColor(@ColorRes color: Int) {
setColorFilter(ContextCompat.getColor(context, color), PorterDuff.Mode.SRC_IN)
}
@BindingAdapter("textColor")
fun AppCompatTextView.setColor(@ColorRes color: Int) {
setTextColor(ContextCompat.getColor(context, color))
}
@UiThread
@BindingAdapter("avatarInitials")
fun AvatarView.loadInitials(initials: String?) {
@ -230,7 +243,7 @@ fun AvatarView.loadAccountAvatar(account: AccountModel?) {
if (account.showTrust.value == true) {
avatarBorderColor =
resources.getColor(R.color.trusted_blue, context.theme)
resources.getColor(R.color.blue_trusted, context.theme)
avatarBorderWidth =
AppUtils.getDimension(R.dimen.avatar_trust_border_width).toInt()
} else {
@ -251,7 +264,7 @@ fun AvatarView.loadAccountAvatar(account: AccountModel?) {
avatarInitials = account.initials.value.orEmpty()
if (account.showTrust.value == true) {
avatarBorderColor = resources.getColor(R.color.trusted_blue, context.theme)
avatarBorderColor = resources.getColor(R.color.blue_trusted, context.theme)
avatarBorderWidth = AppUtils.getDimension(R.dimen.avatar_trust_border_width).toInt()
} else {
avatarBorderWidth = AppUtils.getDimension(R.dimen.zero).toInt()
@ -281,7 +294,7 @@ fun AvatarView.loadContactAvatar(contact: ContactAvatarModel?) {
if (contact.showTrust.value == true) {
avatarBorderColor =
resources.getColor(R.color.trusted_blue, context.theme)
resources.getColor(R.color.blue_trusted, context.theme)
avatarBorderWidth =
AppUtils.getDimension(R.dimen.avatar_trust_border_width).toInt()
} else {

View file

@ -4,7 +4,7 @@
<item>
<shape android:shape="rectangle">
<corners android:radius="50dp" />
<solid android:color="@color/trusted_blue"/>
<solid android:color="@color/blue_trusted"/>
</shape>
</item>
<item android:bottom="2dp">

View file

@ -38,7 +38,7 @@
android:drawablePadding="10dp"
android:drawableTint="@{viewModel.contactsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:onClick="@{onContactsClicked}"
android:text="Contacts"
android:text="@string/bottom_navigation_contacts_label"
android:textStyle="@{viewModel.contactsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toTopOf="@id/calls"
app:layout_constraintStart_toStartOf="parent"
@ -54,7 +54,7 @@
android:drawableTop="@drawable/phone"
android:drawableTint="@{viewModel.callsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:drawablePadding="10dp"
android:text="Calls"
android:text="@string/bottom_navigation_calls_label"
android:textStyle="@{viewModel.callsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toTopOf="@id/conversations"
app:layout_constraintStart_toStartOf="parent"
@ -86,7 +86,7 @@
android:drawablePadding="10dp"
android:drawableTint="@{viewModel.conversationsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:onClick="@{onConversationsClicked}"
android:text="Conversations"
android:text="@string/bottom_navigation_conversations_label"
android:textStyle="@{viewModel.conversationsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toTopOf="@id/meetings"
app:layout_constraintStart_toStartOf="parent"
@ -103,7 +103,7 @@
android:drawableTop="@drawable/users_three"
android:drawablePadding="10dp"
android:drawableTint="@{viewModel.meetingsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:text="Meetings"
android:text="@string/bottom_navigation_meetings_label"
android:textStyle="@{viewModel.meetingsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"

View file

@ -85,7 +85,7 @@
android:id="@+id/no_calls_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No calls for the moment..."
android:text="@string/calls_list_empty_history"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/background"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -89,7 +89,7 @@
android:id="@+id/no_contacts_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No contacts for the moment..."
android:text="@string/contacts_list_empty"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/background"
app:layout_constraintEnd_toEndOf="parent"
@ -106,7 +106,7 @@
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="20dp"
android:text="Favourites"
android:text="@string/contacts_list_favourites_title"
android:drawableEnd="@drawable/caret_up"
android:drawableTint="@color/gray_9"
android:textSize="16sp"
@ -135,7 +135,7 @@
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:text="All contacts"
android:text="@string/contacts_list_all_contacts_title"
android:textSize="16sp"
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -82,7 +82,7 @@
android:paddingBottom="4dp"
android:background="@drawable/shape_chip_gray_background"
android:gravity="center"
android:text="@{model.registrationState, default=`Connected`}"
android:text="@{model.registrationState, default=@string/drawer_menu_account_connection_status_connected}"
android:textColor="@{model.isConnected ? @color/green_online : model.inError ? @color/red_danger : @color/gray_1, default=@color/green_online}"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="@id/name"
@ -94,7 +94,7 @@
android:visibility="@{model.isDefault ? View.VISIBLE : View.GONE}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Default"
android:text="@string/drawer_menu_default_account_label"
android:textSize="12sp"
android:gravity="center"
android:drawableStart="@drawable/check_fat_fill"

View file

@ -22,7 +22,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Manage the profile"
android:text="@string/drawer_menu_manage_account"
android:textSize="14sp"
android:textColor="@color/gray_1"
android:drawableStart="@drawable/user_gear"

View file

@ -43,7 +43,7 @@
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="Account profile"
android:text="@string/manage_account_title"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
@ -79,7 +79,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Add a picture"
android:text="@string/manage_account_add_picture"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/avatar"
app:layout_constraintStart_toStartOf="parent"
@ -92,7 +92,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:text="SIP address"
android:text="@string/sip_address"
android:textSize="13sp"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintStart_toStartOf="@id/sip_uri"
@ -127,7 +127,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="Display Name"
android:text="@string/sip_address_display_name"
android:textSize="13sp"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintStart_toStartOf="@id/first_name"
@ -161,7 +161,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:text="International Prefix"
android:text="@string/manage_account_international_prefix"
android:textSize="13sp"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintStart_toStartOf="@id/international_prefix"

View file

@ -26,7 +26,7 @@
android:layout_height="match_parent"
android:gravity="center_vertical|center"
android:singleLine="true"
android:text="Choose your country"/>
android:text="@string/assistant_country_picker_title"/>
</LinearLayout>
@ -39,7 +39,7 @@
android:layout_toLeftOf="@id/clear_field"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Country name">
android:hint="@string/assistant_country_picker_hint">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/search_country"
@ -80,7 +80,7 @@
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Cancel"
android:text="@string/cancel"
android:gravity="right" />
</LinearLayout>

View file

@ -66,7 +66,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:paddingBottom="30dp"
android:text="Login"
android:text="@string/assistant_account_login"
android:textSize="20sp"
android:textColor="@color/white"
app:layout_constraintTop_toTopOf="parent"
@ -80,7 +80,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:layout_marginEnd="16dp"
android:text="Username*"
android:text="@{@string/username + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/title"
@ -100,7 +100,7 @@
android:textColor="@color/gray_9"
android:background="@drawable/edit_text_background"
android:inputType="text"
android:hint="Username"
android:hint="@string/username"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/username_label"
app:layout_constraintStart_toStartOf="parent"
@ -113,7 +113,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:text="Password*"
android:text="@{@string/password + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
@ -133,7 +133,7 @@
android:textSize="14sp"
android:textColor="@color/gray_9"
android:background="@drawable/edit_text_background"
android:hint="Password"
android:hint="@string/password"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
android:inputType="@{viewModel.showPassword ? InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD, default=textPassword}"
app:layout_constraintTop_toBottomOf="@id/password_label"
@ -167,7 +167,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Login"
android:text="@string/assistant_account_login"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
android:gravity="center"
@ -203,7 +203,7 @@
android:layout_marginTop="28dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:text="or"
android:text="@string/or"
android:textSize="14sp"
android:textColor="@color/gray_1"
app:layout_constraintStart_toStartOf="parent"
@ -243,7 +243,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Scan QR code"
android:text="@string/assistant_scan_qr_code"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
@ -269,7 +269,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Use third party SIP account"
android:text="@string/assistant_login_third_party_sip_account"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
@ -286,7 +286,7 @@
android:layout_height="wrap_content"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="No account yet?"
android:text="@string/assistant_no_account_yet"
android:textSize="14sp"
android:textColor="@color/gray_8"
app:layout_constraintHorizontal_chainStyle="packed"
@ -308,7 +308,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Register"
android:text="@string/assistant_account_register"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"

View file

@ -48,7 +48,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:text="Scan a QR Code"
android:text="@string/assistant_scan_qr_code_title"
android:textSize="20sp"
android:textColor="@color/white"
android:gravity="center"

View file

@ -53,7 +53,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:paddingBottom="30dp"
android:text="Register"
android:text="@string/assistant_account_register"
android:textSize="20sp"
android:textColor="@color/white"
app:layout_constraintTop_toTopOf="parent"
@ -68,7 +68,7 @@
android:layout_marginTop="100dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@{viewModel.confirmationMessage, default=`We have sent a verification code on your phone number.\n\nPlease enter the verification code below:`}"
android:text="@{viewModel.confirmationMessage, default=@string/assistant_account_creation_sms_confirmation_explanation}"
android:textSize="14sp"
android:textColor="@color/gray_9"
android:gravity="center_horizontal"
@ -184,7 +184,7 @@
android:paddingBottom="6dp"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="Wrong number?"
android:text="@string/assistant_account_creation_wrong_phone_number"
android:textSize="13sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"

View file

@ -70,7 +70,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:paddingBottom="30dp"
android:text="Register"
android:text="@string/assistant_account_register"
android:textSize="20sp"
android:textColor="@color/white"
app:layout_constraintTop_toTopOf="parent"
@ -84,7 +84,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:layout_marginEnd="16dp"
android:text="Username*"
android:text="@{@string/username + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/title"
@ -104,7 +104,7 @@
android:textColor="@color/gray_9"
android:background="@{viewModel.usernameError.length() > 0 ? @drawable/shape_edit_text_error_background : @drawable/edit_text_background, default=@drawable/edit_text_background}"
android:inputType="text"
android:hint="Username"
android:hint="@string/username"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/username_label"
app:layout_constraintStart_toStartOf="parent"
@ -130,7 +130,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:text="Phone Number*"
android:text="@{@string/phone_number + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/username_error"
@ -150,7 +150,7 @@
android:inputType="phone"
android:drawableStart="@drawable/separator"
android:drawablePadding="10dp"
android:hint="Phone number"
android:hint="@string/phone_number"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/phone_number_label"
app:layout_constraintStart_toStartOf="@id/username"
@ -193,7 +193,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:text="Password*"
android:text="@{@string/password + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/phone_number_error"
@ -212,7 +212,7 @@
android:textSize="14sp"
android:textColor="@color/gray_9"
android:background="@drawable/edit_text_background"
android:hint="Password"
android:hint="@string/password"
android:inputType="@{viewModel.showPassword ? InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD, default=textPassword}"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/password_label"
@ -244,7 +244,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Create"
android:text="@string/assistant_account_create"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
android:gravity="center"
@ -261,7 +261,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="34dp"
android:gravity="center"
android:text="Create an account with your email on:"
android:text="@string/assistant_create_account_using_email_on_our_web_platform"
android:textSize="14sp"
android:textColor="@color/gray_8"
app:layout_constraintTop_toBottomOf="@id/create"
@ -279,7 +279,7 @@
android:paddingBottom="6dp"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="subscribe.linphone.org"
android:text="@string/assistant_web_platform_link"
android:textSize="13sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
@ -295,7 +295,7 @@
android:layout_height="wrap_content"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Already an account?"
android:text="@string/assistant_already_have_an_account"
android:textSize="14sp"
android:textColor="@color/gray_8"
app:layout_constraintHorizontal_chainStyle="packed"
@ -317,7 +317,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Login"
android:text="@string/assistant_account_login"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"

View file

@ -41,7 +41,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:text="Use a third party SIP Account"
android:text="@string/assistant_login_third_party_sip_account"
android:textSize="20sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toTopOf="parent"
@ -56,7 +56,7 @@
android:layout_marginTop="38dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Username*"
android:text="@{@string/username + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/title"
@ -76,7 +76,7 @@
android:textColor="@color/gray_9"
android:background="@drawable/edit_text_background"
android:inputType="text"
android:hint="Username"
android:hint="@string/username"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/username_label"
app:layout_constraintStart_toStartOf="parent"
@ -90,7 +90,7 @@
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:text="Password*"
android:text="@{@string/password + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/username"
@ -109,7 +109,7 @@
android:textSize="14sp"
android:textColor="@color/gray_9"
android:background="@drawable/edit_text_background"
android:hint="Password"
android:hint="@string/password"
android:inputType="@{viewModel.showPassword ? InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD, default=textPassword}"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/password_label"
@ -137,7 +137,7 @@
android:layout_marginTop="18dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Domain*"
android:text="@{@string/sip_address_domain + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/password"
@ -157,7 +157,7 @@
android:textColor="@color/gray_9"
android:background="@drawable/edit_text_background"
android:inputType="text|textUri"
android:hint="Domain"
android:hint="@string/sip_address_domain"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/domain_label"
app:layout_constraintStart_toStartOf="parent"
@ -171,7 +171,7 @@
android:layout_marginTop="18dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Display Name"
android:text="@string/sip_address_display_name"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/domain"
@ -191,7 +191,7 @@
android:textColor="@color/gray_9"
android:background="@drawable/edit_text_background"
android:inputType="text|textPersonName"
android:hint="Display Name"
android:hint="@string/sip_address_display_name"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/display_name_label"
app:layout_constraintStart_toStartOf="parent"
@ -205,7 +205,7 @@
android:layout_marginTop="18dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Transport*"
android:text="@{@string/assistant_sip_account_transport_protocol + `*`}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/display_name"
@ -249,7 +249,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Login"
android:text="@string/assistant_account_login"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
android:gravity="center"

View file

@ -48,7 +48,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:text="Use a third party SIP Account"
android:text="@string/assistant_login_third_party_sip_account"
android:textSize="20sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toTopOf="parent"
@ -91,7 +91,7 @@
android:layout_marginTop="42dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Some features require a Linphone account, such as group messaging, video conferences...\n\nThese features are hidden when you register with a third party SIP account.\n\nTo enable it in a commercial projet, please contact us. "
android:text="@string/assistant_third_party_sip_account_warning_explanation"
android:textSize="14sp"
android:gravity="center"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
@ -110,7 +110,7 @@
android:paddingBottom="6dp"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="linphone.org/contact"
android:text="@string/assistant_linphone_contact_us_link"
android:textSize="13sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
@ -133,7 +133,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="I prefer to create an account"
android:text="@string/assistant_third_party_sip_account_create_linphone_account"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
@ -158,7 +158,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="I understand"
android:text="@string/assistant_third_party_sip_account_warning_ok"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
android:gravity="center"

View file

@ -40,7 +40,7 @@
android:drawableTop="@drawable/address_book"
android:drawablePadding="10dp"
android:drawableTint="@{viewModel.contactsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:text="Contacts"
android:text="@string/bottom_navigation_contacts_label"
android:textStyle="@{viewModel.contactsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/calls"
@ -59,7 +59,7 @@
android:drawableTop="@drawable/phone"
android:drawablePadding="10dp"
android:drawableTint="@{viewModel.callsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:text="Calls"
android:text="@string/bottom_navigation_calls_label"
android:textStyle="@{viewModel.callsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/conversations"
@ -97,7 +97,7 @@
android:drawableTop="@drawable/chat_text"
android:drawablePadding="10dp"
android:drawableTint="@{viewModel.conversationsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:text="Conversations"
android:text="@string/bottom_navigation_conversations_label"
android:textStyle="@{viewModel.conversationsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/meetings"
@ -117,7 +117,7 @@
android:drawableTop="@drawable/users_three"
android:drawablePadding="10dp"
android:drawableTint="@{viewModel.meetingsSelected ? @color/primary_color : @color/gray_9, default=@color/gray_9}"
android:text="Meetings"
android:text="@string/bottom_navigation_meetings_label"
android:textStyle="@{viewModel.meetingsSelected ? Typeface.BOLD : Typeface.NORMAL}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -44,7 +44,7 @@
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="Call history"
android:text="@string/call_history_title"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toStartOf="@id/menu"
@ -134,7 +134,7 @@
android:visibility="@{viewModel.callLogModel.avatarModel.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.callLogModel.avatarModel.lastPresenceInfo, default=`En ligne`}"
android:text="@{viewModel.callLogModel.avatarModel.lastPresenceInfo, default=@string/friend_presence_status_online}"
android:textColor="@{viewModel.callLogModel.avatarModel.presenceStatus == ConsolidatedPresence.Online ? @color/green_online : @color/orange_away, default=@color/green_online}"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
@ -162,7 +162,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Call"
android:text="@string/friend_call_action"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/call"
app:layout_constraintStart_toStartOf="@id/call"
@ -189,7 +189,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Message"
android:text="@string/friend_message_action"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/chat"
app:layout_constraintStart_toStartOf="@id/chat"
@ -216,7 +216,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Video Call"
android:text="@string/friend_video_call_action"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/video_call"
app:layout_constraintStart_toStartOf="@id/video_call"

View file

@ -33,7 +33,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="@{model.isOutgoing() ? `Appel sortant` : `Appel entrant`, default=`Appel sortant`}"
android:text="@{model.isOutgoing() ? @string/call_outgoing : @string/call_incoming, default=@string/call_outgoing}"
android:textSize="14sp"
android:textColor="@color/gray_8"
app:layout_constraintStart_toEndOf="@id/call_status"
@ -48,7 +48,7 @@
android:layout_marginBottom="16dp"
android:layout_marginStart="5dp"
android:gravity="center"
android:text="@{model.dateTime, default=`13 aout 2023 | 19:47`}"
android:text="@{model.dateTime, default=`August 13th 2023 | 07:47 PM`}"
android:textSize="12sp"
android:textColor="@{model.isSuccessful ? @color/gray_9 : @color/red_danger, default=@color/gray_9}"
app:layout_constraintStart_toEndOf="@id/call_status"

View file

@ -39,7 +39,7 @@
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:gravity="left|center_vertical"
android:text="Ajouter aux contacts"
android:text="@string/menu_add_address_to_contacts"
android:textSize="14sp"
android:textColor="@color/gray_1"
android:drawableStart="@drawable/plus_circle"
@ -62,7 +62,7 @@
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:gravity="left|center_vertical"
android:text="Voir le contact"
android:text="@string/menu_see_existing_contact"
android:textSize="14sp"
android:textColor="@color/gray_1"
android:drawableStart="@drawable/user_circle"
@ -83,7 +83,7 @@
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:gravity="left|center_vertical"
android:text="Copier le numéro"
android:text="@string/menu_copy_sip_address"
android:textSize="14sp"
android:textColor="@color/gray_1"
android:drawableStart="@drawable/copy"
@ -105,7 +105,7 @@
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:gravity="left|center_vertical"
android:text="Delete all history"
android:text="@string/menu_delete_history"
android:textSize="14sp"
android:textColor="@color/red_danger"
android:drawableStart="@drawable/trash_simple"

View file

@ -47,7 +47,7 @@
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="New call"
android:text="@string/call_start_title"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
@ -76,7 +76,7 @@
android:drawableStart="@drawable/magnifying_glass"
android:drawablePadding="10dp"
android:drawableTint="@color/gray_9"
android:hint="Search contact or history call"
android:hint="@string/call_start_search_bar_filter_hint"
android:inputType="textPersonName|textNoSuggestions"
android:paddingStart="15dp"
android:paddingTop="10dp"
@ -150,7 +150,7 @@
android:layout_marginEnd="16dp"
android:drawableEnd="@drawable/caret_right"
android:padding="5dp"
android:text="Create a group call"
android:text="@string/call_start_create_group_call"
android:textColor="@color/black"
android:textSize="16sp"
android:visibility="@{viewModel.searchFilter.length() > 0 ? View.GONE : View.VISIBLE}"
@ -179,7 +179,7 @@
style="@style/default_text_style_800"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="No suggestion and no contact for the moment..."
android:text="@string/call_start_no_suggestion_nor_contact"
android:textSize="16sp"
android:gravity="center"
android:visibility="@{viewModel.emptyContactsList &amp;&amp; viewModel.suggestionsList.size() == 0 ? View.VISIBLE : View.GONE}"
@ -196,7 +196,7 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:padding="5dp"
android:text="Contacts"
android:text="@string/contacts_list_title"
android:textSize="16sp"
android:visibility="@{viewModel.emptyContactsList ? View.GONE : View.VISIBLE}"
app:layout_constraintVertical_chainStyle="packed"
@ -234,7 +234,7 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:padding="5dp"
android:text="Suggestions"
android:text="@string/call_start_suggestions_list_title"
android:textSize="16sp"
android:visibility="@{viewModel.suggestionsList.size() == 0 ? View.GONE : View.VISIBLE}"
app:layout_constraintStart_toStartOf="parent"

View file

@ -85,7 +85,7 @@
android:id="@+id/no_calls_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No calls for the moment..."
android:text="@string/calls_list_empty_history"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/background"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -32,7 +32,7 @@
android:visibility="@{contactExists ? View.GONE : View.VISIBLE}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Ajouter aux contacts"
android:text="@string/menu_add_address_to_contacts"
style="@style/context_menu_action_label_style"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"
@ -47,7 +47,7 @@
android:visibility="@{contactExists ? View.VISIBLE : View.GONE}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Voir le contact"
android:text="@string/menu_see_existing_contact"
style="@style/context_menu_action_label_style"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"
@ -61,7 +61,7 @@
android:onClick="@{copyNumberClickListener}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Copier le numéro"
android:text="@string/menu_copy_sip_address"
style="@style/context_menu_action_label_style"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"
@ -75,7 +75,7 @@
android:onClick="@{deleteClickListener}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Supprimer"
android:text="@string/menu_delete_selected_item"
style="@style/context_menu_danger_action_label_style"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"

View file

@ -22,7 +22,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Delete all history"
android:text="@string/menu_delete_history"
android:textSize="14sp"
android:textColor="@color/red_danger"
android:drawableStart="@drawable/trash_simple"

View file

@ -68,7 +68,7 @@
android:gravity="center"
android:drawableStart="@drawable/warning_circle"
android:drawablePadding="8dp"
android:text="Vérifier l'appareil"
android:text="@string/friend_make_call_check_device_trust"
android:textColor="@color/tertiary_button_label_color"
android:textSize="13sp"
android:maxLines="1"

View file

@ -149,7 +149,7 @@
android:visibility="@{viewModel.contact.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.contact.lastPresenceInfo, default=`En ligne`}"
android:text="@{viewModel.contact.lastPresenceInfo, default=@string/friend_presence_status_online}"
android:textColor="@{viewModel.contact.presenceStatus == ConsolidatedPresence.Online ? @color/green_online : @color/orange_away, default=@color/green_online}"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
@ -177,7 +177,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Call"
android:text="@string/friend_call_action"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/call"
app:layout_constraintStart_toStartOf="@id/call"
@ -204,7 +204,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Message"
android:text="@string/friend_message_action"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/chat"
app:layout_constraintStart_toStartOf="@id/chat"
@ -231,7 +231,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Video Call"
android:text="@string/friend_video_call_action"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/video_call"
app:layout_constraintStart_toStartOf="@id/video_call"
@ -247,7 +247,7 @@
android:layout_marginStart="26dp"
android:layout_marginEnd="26dp"
android:layout_marginTop="32dp"
android:text="Numbers &amp; addresses"
android:text="@string/contact_details_numbers_and_addresses_title"
android:drawableEnd="@{viewModel.expandNumbersAndAddresses ? @drawable/caret_up : @drawable/caret_down, default=@drawable/caret_up}"
android:drawableTint="@color/gray_9"
android:textSize="16sp"
@ -294,7 +294,7 @@
android:layout_marginStart="10dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Company :"
android:text="@string/contact_details_company_name"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="@id/info_background"
app:layout_constraintTop_toTopOf="@id/info_background"/>
@ -323,7 +323,7 @@
android:layout_marginStart="10dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Title :"
android:text="@string/contact_details_job_title"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="@id/info_background"
app:layout_constraintTop_toBottomOf="@id/company"/>
@ -353,7 +353,7 @@
android:layout_marginStart="26dp"
android:layout_marginTop="16dp"
android:padding="5dp"
android:text="Trust"
android:text="@string/contact_details_trust_title"
android:textSize="16sp"
android:drawableEnd="@drawable/question"
android:drawableTint="@color/gray_9"
@ -399,7 +399,7 @@
android:layout_marginEnd="17dp"
android:layout_marginTop="20dp"
android:textSize="14sp"
android:text="Nombre d'appareils vérifiés :"
android:text="@string/contact_details_trusted_devices_count"
app:layout_constraintStart_toStartOf="@id/trust_background"
app:layout_constraintEnd_toEndOf="@id/trust_background"
app:layout_constraintTop_toTopOf="@id/trust_background" />
@ -414,7 +414,7 @@
app:trackCornerRadius="50dp"
app:trackThickness="22dp"
app:trackColor="@color/gray_3"
app:indicatorColor="@color/trusted_blue"
app:indicatorColor="@color/blue_trusted"
android:max="100"
android:progress="75"
app:layout_constraintStart_toStartOf="@id/trust_background"
@ -458,7 +458,7 @@
android:layout_marginStart="26dp"
android:layout_marginEnd="26dp"
android:layout_marginTop="16dp"
android:text="Other actions"
android:text="@string/contact_details_actions_title"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@ -485,7 +485,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:text="Edit"
android:text="@string/contact_details_edit"
android:drawableStart="@drawable/pencil_simple"
android:background="@drawable/action_background"
app:layout_constraintTop_toTopOf="@id/actions_background"
@ -511,7 +511,7 @@
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:background="@drawable/action_background"
android:text="@{viewModel.isFavourite ? `Remove from favourites` : `Add to favourites`, default=`Add to favourites`}"
android:text="@{viewModel.isFavourite ? @string/contact_details_remove_from_favourites : @string/contact_details_add_to_favourites, default=@string/contact_details_add_to_favourites}"
android:drawableStart="@{viewModel.isFavourite ? @drawable/heart_fill : @drawable/heart, default=@drawable/heart_fill}"
android:drawableTint="@{viewModel.isFavourite ? @color/red_danger : @color/gray_1, default=@color/gray_1}"
app:layout_constraintTop_toBottomOf="@id/action_edit"
@ -537,7 +537,7 @@
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:background="@drawable/action_background"
android:text="Share"
android:text="@string/contact_details_share"
android:drawableStart="@drawable/share_network"
app:layout_constraintTop_toBottomOf="@id/action_favorite"
app:layout_constraintStart_toStartOf="parent"
@ -562,7 +562,7 @@
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:background="@drawable/action_background"
android:text="Delete"
android:text="@string/contact_details_delete"
android:drawableStart="@drawable/trash_simple"
app:layout_constraintTop_toBottomOf="@id/action_share"
app:layout_constraintStart_toStartOf="parent"

View file

@ -22,7 +22,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@{model.isSip ? `SIP address` : `Phone number`, default=`SIP address`}"
android:text="@{model.isSip ? @string/sip_address : @string/phone_number, default=@string/sip_address}"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/field"
app:layout_constraintTop_toTopOf="parent"/>

View file

@ -43,7 +43,7 @@
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="@{viewModel.isEdit ? `Edit contact` : `New contact`, default=`New contact`}"
android:text="@{viewModel.isEdit ? @string/contact_edit_title : @string/contact_new_title, default=@string/contact_new_title}"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toStartOf="@id/save"
@ -107,7 +107,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Add a picture"
android:text="@string/manage_account_add_picture"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/avatar"
app:layout_constraintStart_toStartOf="parent"
@ -120,7 +120,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:text="First Name"
android:text="@string/contact_editor_first_name"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/first_name"
app:layout_constraintTop_toBottomOf="@id/add_picture_label"/>
@ -153,7 +153,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="Last Name"
android:text="@string/contact_editor_last_name"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/last_name"
app:layout_constraintTop_toBottomOf="@id/first_name"/>
@ -212,7 +212,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:text="Company"
android:text="@string/contact_editor_company"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/company"
app:layout_constraintTop_toBottomOf="@id/phone_numbers"/>
@ -245,7 +245,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="Job"
android:text="@string/contact_editor_job_title"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/job_title"
app:layout_constraintTop_toBottomOf="@id/company"/>

View file

@ -26,7 +26,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:text="@{model.sip ? `SIP address` : model.label.length() > 0 ? `Phone (` + model.label + `)` : `Phone`, default=`Phone (Home)`}"
android:text="@{model.sip ? @string/sip_address : model.label.length() > 0 ? @string/phone_number + ` (` + model.label + `)` : @string/phone_number, default=`Phone number (Home)`}"
android:textSize="14sp"
android:maxLines="1"
android:ellipsize="end"

View file

@ -29,7 +29,7 @@
android:id="@+id/copy"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Copier le numéro"
android:text="@string/menu_copy_sip_address"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"
android:drawableStart="@drawable/copy"
@ -44,7 +44,7 @@
android:id="@+id/invite"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Inviter"
android:text="@string/menu_invite"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"
android:drawableStart="@drawable/qr_code"

View file

@ -79,7 +79,7 @@
android:id="@+id/no_contacts_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No contacts for the moment..."
android:text=""
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/background"
app:layout_constraintEnd_toEndOf="parent"
@ -97,7 +97,7 @@
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="15dp"
android:text="Favourites"
android:text="@string/contacts_list_favourites_title"
android:drawableEnd="@{viewModel.showFavourites ? @drawable/caret_up : @drawable/caret_down, default=@drawable/caret_up}"
android:drawableTint="@color/gray_9"
android:textSize="16sp"
@ -127,7 +127,7 @@
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="20dp"
android:text="All contacts"
android:text="@string/contacts_list_all_contacts_title"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -34,7 +34,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:background="@drawable/menu_item_background"
android:text="@{isFavourite ? `Remove from favourites` : `Add to favourites`, default=`Add to favourites`}"
android:text="@{isFavourite ? @string/contact_details_remove_from_favourites : @string/contact_details_add_to_favourites, default=@string/contact_details_add_to_favourites}"
android:drawableStart="@{isFavourite ? @drawable/heart_fill : @drawable/heart, default=@drawable/heart_fill}"
android:drawableTint="@{isFavourite ? @color/red_danger : @color/gray_1, default=@color/gray_1}"
app:layout_constraintBottom_toTopOf="@id/share"
@ -46,7 +46,7 @@
android:onClick="@{shareClickListener}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Partager"
android:text="@string/contact_details_share"
style="@style/context_menu_action_label_style"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"
@ -60,7 +60,7 @@
android:onClick="@{deleteClickListener}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Supprimer"
android:text="@string/contact_details_delete"
style="@style/context_menu_danger_action_label_style"
android:background="@drawable/menu_item_background"
android:layout_marginBottom="1dp"

View file

@ -48,7 +48,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="Conditions de service"
android:text="@string/dialog_general_terms_and_privacy_policy_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/message"
@ -64,7 +64,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:text="@{viewModel.message, default=`En continuant, vous notre politique de confidentialité et nos conditions d'utilisation.`}"
android:text="@{viewModel.message, default=@string/dialog_general_terms_and_privacy_policy_message}"
android:textSize="14sp"
android:autoLink="web"
app:layout_constraintBottom_toTopOf="@id/cancel"
@ -85,7 +85,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/secondary_button_background"
android:text="Deny"
android:text="@string/dialog_deny"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -106,7 +106,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/primary_button_background"
android:text="Accept"
android:text="@string/dialog_accept"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"

View file

@ -46,7 +46,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="Confirm phone number"
android:text="@string/dialog_confirm_phone_number_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/message"
@ -62,7 +62,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:text="@{viewModel.message, default=`Are you sure you want to use this phone number?`}"
android:text="@{viewModel.message, default=@string/dialog_confirm_phone_number_message}"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/cancel"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -82,7 +82,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/secondary_button_background"
android:text="Cancel"
android:text="@string/dialog_cancel"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -103,7 +103,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/primary_button_background"
android:text="Continue"
android:text="@string/dialog_continue"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"

View file

@ -47,7 +47,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="Don't save changes?"
android:text="@string/dialog_contact_new_or_edit_abort_confirmation_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/message"
@ -63,7 +63,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:text="All changes will be lost"
android:text="@string/dialog_contact_new_or_edit_abort_confirmation_message"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/cancel"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -83,7 +83,7 @@
android:paddingTop="13dp"
android:gravity="center"
android:background="@drawable/secondary_button_background"
android:text="Cancel"
android:text="@string/dialog_cancel"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -104,7 +104,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/primary_button_background"
android:text="Ok"
android:text="@string/dialog_ok"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"

View file

@ -48,7 +48,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="Vérifiez l'appareil"
android:text="@string/dialog_zrtp_validate_trust_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/message"
@ -64,7 +64,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:text="@{viewModel.message}"
android:text="@{viewModel.message, default=@string/dialog_zrtp_validate_trust_message}"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/letters_1"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -168,7 +168,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/shape_red_outlined_button_background"
android:text="Letters don't match!"
android:text="@string/dialog_zrtp_validate_trust_letters_do_not_match"
android:textSize="18sp"
android:textColor="@color/red_danger"
app:layout_constraintStart_toStartOf="@id/dialog_background"

View file

@ -46,7 +46,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="Increase trust level"
android:text="@string/dialog_contact_increase_trust_level_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/message"
@ -62,7 +62,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:text="@{viewModel.message, default=`You're about to make a call to %s's device %s.\nDo you want to make the call?`}"
android:text="@{viewModel.message, default=@string/dialog_contact_increase_trust_level_message}"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/cancel"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -82,7 +82,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/secondary_button_background"
android:text="Cancel"
android:text="@string/dialog_cancel"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -103,7 +103,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/primary_button_background"
android:text="Call"
android:text="@string/dialog_call"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -119,7 +119,7 @@
android:layout_marginTop="16dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:text="Don't show this dialog anymore"
android:text="@string/dialog_do_not_show_anymore"
android:textSize="14sp"
android:checked="@={viewModel.doNotShowAnymore}"
app:buttonTint="@color/primary_color"

View file

@ -46,7 +46,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="What does it mean?"
android:text="@string/dialog_contact_devices_trust_help_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/message"
@ -62,7 +62,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:text="Lorem ipsum dolot sit amet"
android:text="@string/dialog_contact_devices_trust_help_message"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/confirm"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -82,7 +82,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/primary_button_background"
android:text="Ok"
android:text="@string/dialog_ok"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"

View file

@ -25,7 +25,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:text="@{model.sip ? `SIP address` : model.label.length() > 0 ? `Phone (` + model.label + `)` : `Phone`, default=`Phone (Home)`}"
android:text="@{model.sip ? @string/sip_address : model.label.length() > 0 ? @string/phone_number + ` (` + model.label + `)` : @string/phone_number, default=`Phone number (Home)`}"
android:textSize="14sp"
android:maxLines="1"
android:ellipsize="end"

View file

@ -47,7 +47,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="Which canal do you choose?"
android:text="@string/dialog_pick_phone_number_or_sip_address_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/numbers_and_addresses"

View file

@ -47,7 +47,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:paddingTop="@dimen/dialog_top_bottom_margin"
android:text="Do you really want to delete all calls history?"
android:text="@string/dialog_delete_all_call_logs_title"
android:textSize="16sp"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/message"
@ -63,7 +63,7 @@
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:text="All calls will be deleted of the history"
android:text="@string/dialog_delete_all_call_logs_message"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/cancel"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -83,7 +83,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/secondary_button_background"
android:text="Cancel"
android:text="@string/dialog_cancel"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"
@ -104,7 +104,7 @@
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
android:gravity="center"
android:background="@drawable/primary_button_background"
android:text="Ok"
android:text="@string/dialog_delete"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
app:layout_constraintStart_toStartOf="@id/dialog_background"

View file

@ -80,7 +80,7 @@
style="@style/default_text_style"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="No account configured yet" />
android:text="@string/drawer_menu_no_account_configured_yet" />
</LinearLayout>
@ -99,7 +99,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Add an account"
android:text="@string/drawer_menu_add_account"
android:textSize="18sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
@ -133,7 +133,7 @@
android:layout_marginBottom="20dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Settings"
android:text="@string/settings_title"
android:textSize="13sp"
android:drawableStart="@drawable/gear"
android:drawableEnd="@drawable/caret_right"
@ -152,7 +152,7 @@
android:layout_marginBottom="20dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Recordings"
android:text="@string/recordings_title"
android:textSize="13sp"
android:drawableStart="@drawable/recordings"
android:drawableEnd="@drawable/caret_right"
@ -171,7 +171,7 @@
android:layout_marginBottom="20dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="Help"
android:text="@string/help_title"
android:textSize="13sp"
android:drawableStart="@drawable/question"
android:drawableEnd="@drawable/caret_right"

View file

@ -37,7 +37,7 @@
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="Help"
android:text="@string/help_title"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -27,7 +27,7 @@
style="@style/default_text_style_800"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Operation in progress, please wait"
android:text="@string/operation_in_progress_overlay"
android:textColor="@color/primary_color"
android:textSize="18sp"
android:layout_below="@id/progress"

View file

@ -37,7 +37,7 @@
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="Recordings"
android:text="@string/recordings_title"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -37,7 +37,7 @@
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="Settings"
android:text="@string/settings_title"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -12,6 +12,12 @@
<variable
name="message"
type="String" />
<variable
name="shadow_color"
type="Integer" />
<variable
name="text_color"
type="Integer" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
@ -25,7 +31,7 @@
android:id="@+id/toast_background"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@drawable/shape_toast_blue_shadow"
android:src="@{shadow_color, default=@drawable/shape_toast_blue_shadow}"
app:layout_constraintBottom_toBottomOf="@id/toast_message"
app:layout_constraintEnd_toEndOf="@id/toast_message"
app:layout_constraintStart_toStartOf="@id/toast_icon"
@ -36,7 +42,8 @@
android:layout_width="@dimen/icon_size"
android:layout_height="@dimen/icon_size"
android:adjustViewBounds="true"
android:src="@{icon, default=@drawable/trusted}"
android:src="@{icon, default=@drawable/check_fat_fill}"
tint="@{text_color, default=@color/blue_trusted}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/toast_message"
app:layout_constraintStart_toStartOf="parent"
@ -53,7 +60,7 @@
android:paddingBottom="8dp"
android:text="@{message, default=`This call can be trusted`}"
android:textSize="14sp"
android:textColor="@color/trusted_blue"
textColor="@{text_color, default=@color/blue_trusted}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/toast_icon"

View file

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<import type="android.graphics.Typeface" />
<variable
name="icon"
type="Integer" />
<variable
name="message"
type="String" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp">
<ImageView
android:id="@+id/toast_background"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@drawable/shape_toast_green_shadow"
app:layout_constraintBottom_toBottomOf="@id/toast_message"
app:layout_constraintEnd_toEndOf="@id/toast_message"
app:layout_constraintStart_toStartOf="@id/toast_icon"
app:layout_constraintTop_toTopOf="@id/toast_message" />
<ImageView
android:id="@+id/toast_icon"
android:layout_width="@dimen/icon_size"
android:layout_height="@dimen/icon_size"
android:adjustViewBounds="true"
android:src="@{icon, default=@drawable/check_fat_fill}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/toast_message"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:tint="@color/green_online" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/toast_message"
style="@style/default_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@{message, default=`Number copied to clipboard!`}"
android:textColor="@color/green_online"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/toast_icon"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View file

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<import type="android.graphics.Typeface" />
<variable
name="icon"
type="Integer" />
<variable
name="message"
type="String" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp">
<ImageView
android:id="@+id/toast_background"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@drawable/shape_toast_red_shadow"
app:layout_constraintBottom_toBottomOf="@id/toast_message"
app:layout_constraintEnd_toEndOf="@id/toast_message"
app:layout_constraintStart_toStartOf="@id/toast_icon"
app:layout_constraintTop_toTopOf="@id/toast_message" />
<ImageView
android:id="@+id/toast_icon"
android:layout_width="@dimen/icon_size"
android:layout_height="@dimen/icon_size"
android:adjustViewBounds="true"
android:src="@{icon, default=@drawable/wifi_low}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/toast_message"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:tint="@color/red_danger" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/toast_message"
style="@style/default_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@{message, default=`Low Wi-Fi signal!`}"
android:textColor="@color/red_danger"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/toast_icon"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View file

@ -40,7 +40,7 @@
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:visibility="@{viewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
android:text="@{viewModel.isOutgoing ? `Outgoing call` : `Incoming call`, default=`Outgoing call`}"
android:text="@{viewModel.isOutgoing ? @string/call_outgoing : @string/call_incoming, default=@string/call_outgoing}"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintStart_toEndOf="@id/call_direction_icon"

View file

@ -34,7 +34,7 @@
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="Incoming call"
android:text="@string/call_incoming"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintStart_toEndOf="@id/call_direction_icon"

View file

@ -34,7 +34,7 @@
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="Outgoing call"
android:text="@string/call_outgoing"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintStart_toEndOf="@id/call_direction_icon"

View file

@ -79,7 +79,7 @@
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="Next"
android:text="@string/next"
android:textSize="18sp"
android:textColor="@color/primary_button_label_color"
android:gravity="center"

View file

@ -13,7 +13,7 @@
<color name="blue_filter">#09C5F4</color>
<color name="blue_outgoing_message">#DFECF2</color>
<color name="gray_incoming_message">#F4F4F7</color>
<color name="trusted_blue">#4AA8FF</color>
<color name="blue_trusted">#4AA8FF</color>
<color name="orange_away">#FFA645</color>
<color name="gray_offline">#E1E1E1</color>
<color name="warning_orange_background">#FFEACB</color>

View file

@ -7,19 +7,162 @@
<resources>
<string name="app_name">Linphone</string>
<string name="vertical_separator">|</string>
<string name="vertical_separator" translatable="false">|</string>
<string name="assistant_web_platform_link" translatable="false">subscribe.linphone.org</string>
<string name="assistant_linphone_contact_us_link" translatable="false">linphone.org/contact</string>
<string name="notification_channel_incoming_call_id" translatable="false">linphone_notification_call_id</string>
<string name="notification_channel_incoming_call_name">&appName; incoming calls notifications</string>
<string name="notification_channel_service_id" translatable="false">linphone_notification_service_id</string>
<string name="sip_address">SIP address</string>
<string name="sip_address_display_name">Display name</string>
<string name="sip_address_domain">Domain</string>
<string name="cancel">Cancel</string>
<string name="username">Username</string>
<string name="password">Password</string>
<string name="phone_number">Phone number</string>
<string name="or">or</string>
<string name="next">next</string>
<string name="notification_channel_incoming_call_name">&appName; incoming calls notifications</string>
<string name="notification_channel_service_name">&appName; service notification</string>
<string name="welcome_carousel_skip"><u>Skip</u></string>
<string name="assistant_forgotten_password"><u>Forgotten password?</u></string>
<string name="incoming_call_notification_hangup_action_label">Hangup</string>
<string name="incoming_call_notification_answer_action_label">Answer</string>
<string name="bottom_navigation_contacts_label">Contacts</string>
<string name="bottom_navigation_calls_label">Calls</string>
<string name="bottom_navigation_conversations_label">Conversations</string>
<string name="bottom_navigation_meetings_label">Meetings</string>
<string name="dialog_deny">Deny</string>
<string name="dialog_accept">Accept</string>
<string name="dialog_cancel">Cancel</string>
<string name="dialog_continue">Continue</string>
<string name="dialog_ok">Ok</string>
<string name="dialog_call">Call</string>
<string name="dialog_delete">Delete</string>
<string name="dialog_do_not_show_anymore">Do not show this dialog anymore</string>
<string name="dialog_general_terms_and_privacy_policy_title">General terms &amp; privacy policy</string>
<string name="dialog_general_terms_and_privacy_policy_message">blah blah blah</string> <!-- TODO FIXME -->
<string name="dialog_confirm_phone_number_title">Confirm phone number</string>
<string name="dialog_confirm_phone_number_message">Are you sure you want to use this phone number?</string>
<string name="dialog_contact_new_or_edit_abort_confirmation_title">Don\'t save changes?</string>
<string name="dialog_contact_new_or_edit_abort_confirmation_message">All changes will be lost</string>
<string name="dialog_zrtp_validate_trust_title">Validate the device</string>
<string name="dialog_zrtp_validate_trust_message">Blah</string> <!-- TODO FIXME -->
<string name="dialog_zrtp_validate_trust_letters_do_not_match">Letters don\'t match!</string>
<string name="dialog_contact_increase_trust_level_title">Increase trust level</string>
<string name="dialog_contact_increase_trust_level_message">You\'re about to make a call to $1%s\'s device $2%s.\nDo you want to make the call?</string>
<string name="dialog_contact_devices_trust_help_title">What does it mean?</string>
<string name="dialog_contact_devices_trust_help_message">Blah blah blah</string> <!-- TODO FIXME -->
<string name="dialog_pick_phone_number_or_sip_address_title">Which canal do you choose?</string>
<string name="dialog_delete_all_call_logs_title">Do you really want to delete all calls history?</string>
<string name="dialog_delete_all_call_logs_message">All calls will be deleted of the history</string>
<string name="toast_assistant_qr_code_valid">QR code validated!</string>
<string name="toast_assistant_qr_code_invalid">Invalid QR code!</string>
<string name="toast_sip_address_copied_to_clipboard">SIP address copied into clipboard</string>
<string name="toast_phone_number_copied_to_clipboard">Number copied into clipboard</string>
<string name="toast_call_history_deleted">History has been deleted</string>
<string name="toast_alert_low_wifi_signal">Low Wi-Fi signal!</string>
<string name="toast_alert_low_wifi_signal_cleared">Wi-Fi signal no longer low</string>
<string name="toast_call_can_be_trusted">This call can be trusted</string>
<string name="assistant_country_picker_title">Choose your country</string>
<string name="assistant_country_picker_hint">Country name</string>
<string name="assistant_account_login">Login</string>
<string name="assistant_scan_qr_code">Scan QR code</string>
<string name="assistant_login_third_party_sip_account">Use a third party SIP account</string>
<string name="assistant_no_account_yet">No account yet?</string>
<string name="assistant_account_register">Register</string>
<string name="assistant_scan_qr_code_title">Scan a QR code</string>
<string name="assistant_account_creation_sms_confirmation_explanation">We have sent a verification code on your phone number %1$s.\n\nPlease enter the verification code below:</string>
<string name="assistant_account_creation_wrong_phone_number">Wrong number?</string>
<string name="assistant_account_create">Create</string>
<string name="assistant_create_account_using_email_on_our_web_platform">Create an account with your email on:</string>
<string name="assistant_already_have_an_account">Already have an account?</string>
<string name="assistant_sip_account_transport_protocol">Transport</string>
<string name="assistant_third_party_sip_account_warning_explanation">Some features require a Linphone account, such as group messaging, video conferences…\n\nThese features are hidden when you register with a third party SIP account.\n\nTo enable it in a commercial project, please contact us.</string>
<string name="assistant_third_party_sip_account_create_linphone_account">I prefer to create an account</string>
<string name="assistant_third_party_sip_account_warning_ok">I understand</string>
<string name="drawer_menu_default_account_label">Default</string>
<string name="drawer_menu_manage_account">Manage the profile</string>
<string name="drawer_menu_account_connection_status_connected">Connected</string>
<string name="drawer_menu_account_connection_status_refreshing">Refreshing</string>
<string name="drawer_menu_account_connection_status_cleared">Disabled</string>
<string name="drawer_menu_account_connection_status_progress">Connecting…</string>
<string name="drawer_menu_account_connection_status_failed">Error</string>
<string name="drawer_menu_no_account_configured_yet">No account configured yet</string>
<string name="drawer_menu_add_account">Add an account</string>
<string name="settings_title">Settings</string>
<string name="recordings_title">Recordings</string>
<string name="help_title">Help</string>
<string name="manage_account_title">Account profile</string>
<string name="manage_account_add_picture">Add a picture</string>
<string name="manage_account_edit_picture">Edit picture</string>
<string name="manage_account_international_prefix">International Prefix</string>
<string name="friend_presence_status_online">Online</string>
<string name="friend_presence_status_was_online_on">Online on $1%s</string>
<string name="friend_presence_status_was_online_today_at">Online today at $1%s</string>
<string name="friend_presence_status_was_online_yesterday_at">Online yesterday at $1%s</string>
<string name="friend_presence_status_away">Away</string>
<string name="friend_presence_status_do_not_disturb">Do not disturb</string>
<string name="friend_call_action">Call</string>
<string name="friend_message_action">Message</string>
<string name="friend_video_call_action">Video Call</string>
<string name="friend_make_call_check_device_trust">Verify device</string>
<string name="menu_add_address_to_contacts">Add to contacts</string>
<string name="menu_see_existing_contact">See contact</string>
<string name="menu_copy_sip_address">Copy SIP address</string>
<string name="menu_delete_history">Delete history</string>
<string name="menu_delete_selected_item">Delete</string>
<string name="menu_invite">Invite</string>
<string name="call_history_title">Call history</string>
<string name="call_start_title">New call</string>
<string name="call_start_search_bar_filter_hint">Search contact or history call</string>
<string name="call_start_create_group_call">Create a group call</string>
<string name="call_start_no_suggestion_nor_contact">No suggestion and no contact for the moment…</string>
<string name="call_start_suggestions_list_title">Suggestions</string>
<string name="calls_list_empty_history">No call for the moment…</string>
<string name="contacts_list_title">Contacts</string>
<string name="contacts_list_empty">No contact for the moment…</string>
<string name="contacts_list_favourites_title">Favourites</string>
<string name="contacts_list_all_contacts_title">All contacts</string>
<string name="contact_new_title">New contact</string>
<string name="contact_edit_title">Edit contact</string>
<string name="contact_editor_first_name">First name</string>
<string name="contact_editor_last_name">Last name</string>
<string name="contact_editor_company">Company</string>
<string name="contact_editor_job_title">Job title</string>
<string name="contact_details_numbers_and_addresses_title">Phone numbers &amp; SIP addresses</string>
<string name="contact_details_company_name">Company:</string>
<string name="contact_details_job_title">Job title:</string>
<string name="contact_details_trust_title">Trust</string>
<string name="contact_details_trusted_devices_count">Number of trusted devices:</string>
<string name="contact_details_actions_title">Trust</string>
<string name="contact_details_edit">Edit</string>
<string name="contact_details_add_to_favourites">Add to favourites</string>
<string name="contact_details_remove_from_favourites">Remove from favourites</string>
<string name="contact_details_share">Share</string>
<string name="contact_details_delete">Delete</string>
<string name="call_outgoing">Outgoing call</string>
<string name="call_incoming">Incoming call</string>
<string name="operation_in_progress_overlay">Operation in progress, please wait</string>
<!-- Keep <u></u> in following strings translations! -->
<string name="welcome_carousel_skip"><u>Skip</u></string>
<string name="assistant_forgotten_password"><u>Forgotten password?</u></string>
<string name="in_call_zrtp_sas_validation_skip"><u>Skip</u></string>
</resources>