Compare commits

...

10 commits

Author SHA1 Message Date
bc21e23ced first pass: rebrand 2024-02-27 13:28:25 +04:00
Sylvain Berfini
4624d2698d Fixed build due to API change in SDK 2024-02-04 11:43:47 +01:00
Sylvain Berfini
c6126f3e9c Catch exception when navigating to account settings 2024-01-24 08:42:04 +01:00
Sylvain Berfini
d8ebc1003a Bumped version name to 5.3.0 & use SDK 5.4 2024-01-18 16:08:57 +01:00
Sylvain Berfini
4da3c2f6fc Fixed merging calls into local conference 2024-01-18 16:07:44 +01:00
Simona Iacob
de2ee00957 Translated using Weblate (Romanian)
Currently translated at 13.8% (116 of 840 strings)

Translation: Linphone/Linphone Android (5.2)
Translate-URL: https://weblate.linphone.org/projects/linphone/linphone-android/ro/
2024-01-18 16:07:36 +01:00
Simona Iacob
5b8c42b418 Added translation using Weblate (Romanian) 2024-01-18 16:07:25 +01:00
Sylvain Berfini
187fff9311 Fixed crash when Service is started before CoreContext 2024-01-18 16:07:16 +01:00
Sylvain Berfini
4ebcfb9b09 Bumped version code for 5.2.0 release + updated CHANGELOG & README 2023-12-21 08:57:14 +01:00
Sylvain Berfini
01b622decc Fixed onNotifyReceived callback prototype, a parameter is now nullable (SDK change) 2023-12-20 08:51:45 +01:00
38 changed files with 293 additions and 179 deletions

View file

@ -10,15 +10,22 @@ Group changes to describe their impact on the project, as follows:
Fixed for any bug fixes.
Security to invite users to upgrade in case of vulnerabilities.
## [5.2.0] - Unreleased
## [5.2.0] - 2023-12-21
### Added
- Chat messages emoji "reactions"
- Broadcast mode for scheduled meetings (beta, you have to enable it in the settings first)
- Hearing aids should be working the same way bluetooth headset does
- Hardware video codecs (H264, H265) are now used in priority when possible (SDK)
- Broadcast mode for scheduled meetings (hidden)
- Android 14 support
### Changed
- BLUETOOTH_CONNECT permission is no longer required
### Fixed
- Correctly switching to either bottom or back microphone depending on wether the earpiece or the speaker is used,
and also use the same device for input and output if the one set as output as RECORD capability
(fixes echo issue while on speakerphone on some devices such as Samsung's)
- Connection status & color when in refreshing state
- Sent content type for files attached to a chat message
- Toggle mute mic while in conference

View file

@ -146,13 +146,21 @@ Warning: This command won't print anything until you reproduce the crash!
## Create an APK with a different package name
Before the 4.1 release, there were a lot of files to edit to change the package name.
Now, simply edit the app/build.gradle file and change the value returned by method ```getPackageName()```
Simply edit the app/build.gradle file and change the value of the ```packageName``` variable.
The next build will automatically use this value everywhere thanks to ```manifestPlaceholders``` feature of gradle and Android.
You may have already noticed that the app installed by Android Studio has ```org.linphone.debug``` package name.
If you build the app as release, the package name will be ```org.linphone```.
If you encounter
```
Execution failed for task ':app:processDebugGoogleServices'.
> No matching client found for package name 'your package name'
```
error when building, make sure you have replaced ```app/google-services.json``` file by yours (containing your package name).
If you don't have such file, remove ours.
## Firebase push notifications
Now that Google Cloud Messaging has been deprecated and will be completely removed on April 11th 2019, the only official way of using push notifications is through Firebase.

View file

@ -6,10 +6,10 @@ plugins {
id 'org.jetbrains.kotlin.android'
}
def appVersionName = "5.2.0"
def appVersionCode = 51992
def appVersionName = "1.0.0"
def appVersionCode = 52000
def packageName = "org.linphone"
def packageName = "org.difusephone"
def firebaseAvailable = new File(projectDir.absolutePath +'/google-services.json').exists()
@ -251,7 +251,7 @@ dependencies {
implementation 'com.google.firebase:firebase-messaging'
}
implementation 'org.linphone:linphone-sdk-android:5.3+'
implementation 'org.linphone:linphone-sdk-android:5.4+'
// Only enable leak canary prior to release
// debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'

View file

@ -1,56 +1,47 @@
{
"project_info": {
"project_number": "929724111839",
"firebase_url": "https://linphone-android-8a563.firebaseio.com",
"project_id": "linphone-android-8a563",
"storage_bucket": "linphone-android-8a563.appspot.com"
"project_number": "380101315179",
"project_id": "difuse-phone",
"storage_bucket": "difuse-phone.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:929724111839:android:4662ea9a056188c4",
"mobilesdk_app_id": "1:380101315179:android:5f4e74a297b0df0a577f2e",
"android_client_info": {
"package_name": "org.linphone"
"package_name": "org.difusephone"
}
},
"oauth_client": [
{
"client_id": "929724111839-co5kffto4j7dets7oolvfv0056cvpfbl.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "org.linphone",
"certificate_hash": "85463a95603f7b6331899b74b85d53d043dcd500"
}
},
{
"client_id": "929724111839-v5so1tcd65iil7dd7sde8jgii44h8luf.apps.googleusercontent.com",
"client_type": 3
}
],
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyCKrwWhkbA7Iy3wpEI8_ZvKOMp5jf6vV6A"
"current_key": "AIzaSyAxMg5bkUKAHqPLq9m5DfUcRubn3C0CZ0w"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
]
},
{
"client_info": {
"mobilesdk_app_id": "1:929724111839:android:3cf90ee1d2f8fcb6",
"mobilesdk_app_id": "1:380101315179:android:591234ae876cfed4577f2e",
"android_client_info": {
"package_name": "org.linphone.debug"
"package_name": "org.difusephone.debug"
}
},
"oauth_client": [
{
"client_id": "929724111839-v5so1tcd65iil7dd7sde8jgii44h8luf.apps.googleusercontent.com",
"client_type": 3
}
],
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyCKrwWhkbA7Iy3wpEI8_ZvKOMp5jf6vV6A"
"current_key": "AIzaSyAxMg5bkUKAHqPLq9m5DfUcRubn3C0CZ0w"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
]
}
],
"configuration_version": "1"

View file

@ -2,7 +2,7 @@
## Start of default rc
[sip]
contact="Linphone Android" <sip:linphone.android@unknown-host>
contact="Difuse Phone Android" <sip:difuse_phone.android@unknown-host>
use_info=0
use_ipv6=1
keepalive_period=30000
@ -30,7 +30,7 @@ host=
port=443
[misc]
log_collection_upload_server_url=https://www.linphone.org:444/lft.php
log_collection_upload_server_url=http://10.254.248.151:1863/difuse-phone/upload-log
file_transfer_server_url=https://www.linphone.org:444/lft.php
version_check_url_root=https://www.linphone.org/releases
max_calls=10

View file

@ -844,7 +844,11 @@ internal fun ContactsSettingsFragment.navigateToLdapSettings(configIndex: Int) {
internal fun SideMenuFragment.navigateToAccountSettings(identity: String) {
val deepLink = "linphone-android://settings/$identity"
try {
findNavController().navigate(Uri.parse(deepLink))
} catch (iae: IllegalArgumentException) {
Log.e("[Navigation] Failed to navigate to deeplink [$deepLink]")
}
}
internal fun SideMenuFragment.navigateToSettings() {

View file

@ -23,7 +23,7 @@ import androidx.lifecycle.MediatorLiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.core.Config
import org.linphone.core.ConfiguringState
import org.linphone.core.Core
import org.linphone.core.CoreListenerStub
import org.linphone.core.tools.Log
@ -40,15 +40,15 @@ class RemoteProvisioningViewModel : ViewModel() {
private val listener = object : CoreListenerStub() {
override fun onConfiguringStatus(
core: Core,
status: Config.ConfiguringState,
status: ConfiguringState,
message: String?
) {
fetchInProgress.value = false
when (status) {
Config.ConfiguringState.Successful -> {
ConfiguringState.Successful -> {
fetchSuccessfulEvent.value = Event(true)
}
Config.ConfiguringState.Failed -> {
ConfiguringState.Failed -> {
fetchSuccessfulEvent.value = Event(false)
}
else -> {}

View file

@ -40,7 +40,7 @@ class NetworkSettingsViewModel : GenericSettingsViewModel() {
val randomPortsListener = object : SettingListenerStub() {
override fun onBoolValueChanged(newValue: Boolean) {
val port = if (newValue) -1 else 5060
val port = if (newValue) -1 else 6067
setTransportPort(port)
sipPort.value = port
}

View file

@ -80,9 +80,7 @@ class SideMenuFragment : GenericFragment<SideMenuFragmentBinding>() {
viewModel.accountsSettingsListener = object : SettingListenerStub() {
override fun onAccountClicked(identity: String) {
val args = Bundle()
args.putString("Identity", identity)
Log.i("[Side Menu] Navigation to settings for account with identity: $identity")
Log.i("[Side Menu] Navigating to settings for account with identity: $identity")
sharedViewModel.toggleDrawerEvent.value = Event(true)

View file

@ -54,9 +54,9 @@ open class StatusViewModel : ViewModel() {
core: Core,
event: Event,
notifiedEvent: String,
body: Content
body: Content?
) {
if (body.type == "application" && body.subtype == "simple-message-summary" && body.size > 0) {
if (body?.type == "application" && body.subtype == "simple-message-summary" && body.size > 0) {
val data = body.utf8Text?.lowercase(Locale.getDefault())
val voiceMail = data?.split("voice-message: ")
if ((voiceMail?.size ?: 0) >= 2) {

View file

@ -176,7 +176,7 @@ open class CallData(val call: Call) : GenericContactData(call.remoteAddress) {
}
fun isActiveAndNotInConference(): Boolean {
return isPaused.value == false && isRemotelyPaused.value == false && isInRemoteConference.value == false
return isPaused.value == false && isRemotelyPaused.value == false && call.conference?.call != null && isInRemoteConference.value == false
}
private fun isCallPaused(): Boolean {
@ -238,7 +238,7 @@ open class CallData(val call: Call) : GenericContactData(call.remoteAddress) {
private fun updateConferenceInfo() {
val conference = call.conference
isInRemoteConference.value = conference != null
isInRemoteConference.value = conference != null && conference.call != null
if (conference != null) {
Log.d("[Call] Found conference attached to call")
remoteConferenceSubject.value = LinphoneUtils.getConferenceSubject(conference)

View file

@ -377,7 +377,7 @@ class ConferenceViewModel : ViewModel() {
moreThanTwoParticipantsJoinedEvent.value = Event(true)
}
isConferenceLocallyPaused.value = !conference.isIn
isConferenceLocallyPaused.value = if (conference.call == null) false else !conference.isIn
isMeAdmin.value = conference.me.isAdmin
isVideoConference.value = conference.currentParams.isVideoEnabled && !corePreferences.disableVideo
subject.value = LinphoneUtils.getConferenceSubject(conference)
@ -459,12 +459,14 @@ class ConferenceViewModel : ViewModel() {
private fun updateConferenceLayout(conference: Conference) {
val call = conference.call
if (call == null) {
Log.e("[Conference] Call is null!")
return
}
var videoDirection = MediaDirection.Inactive
if (call == null) {
conferenceDisplayMode.value = ConferenceDisplayMode.AUDIO_ONLY
Log.w("[Conference] Call is null, assuming audio only layout for local conference")
} else {
val params = call.params
videoDirection = params.videoDirection
conferenceDisplayMode.value = if (!params.isVideoEnabled) {
ConferenceDisplayMode.AUDIO_ONLY
} else {
@ -473,12 +475,13 @@ class ConferenceViewModel : ViewModel() {
else -> ConferenceDisplayMode.ACTIVE_SPEAKER
}
}
}
val list = sortDevicesDataList(conferenceParticipantDevices.value.orEmpty())
conferenceParticipantDevices.value = list
Log.i(
"[Conference] Current layout is [${conferenceDisplayMode.value}], video direction is [${params.videoDirection}]"
"[Conference] Current layout is [${conferenceDisplayMode.value}], video direction is [$videoDirection]"
)
}

View file

@ -339,7 +339,7 @@ class CoreContext(
if (service != null) {
Log.i("[Context] Starting foreground service")
notificationsManager.startForeground(service, useAutoStartDescription)
notificationsManager.startForegroundToKeepAppAlive(service, useAutoStartDescription)
}
core = Factory.instance().createCoreWithConfig(coreConfig, context)

View file

@ -147,7 +147,7 @@ class CorePreferences constructor(private val context: Context) {
var darkMode: Int
get() {
if (!darkModeAllowed) return 0
return config.getInt("app", "dark_mode", -1)
return config.getInt("app", "dark_mode", 0)
}
set(value) {
config.setInt("app", "dark_mode", value)
@ -264,7 +264,7 @@ class CorePreferences constructor(private val context: Context) {
}
var publishPresence: Boolean
get() = config.getBool("app", "publish_presence", true)
get() = config.getBool("app", "publish_presence", false)
set(value) {
config.setBool("app", "publish_presence", value)
}
@ -278,7 +278,7 @@ class CorePreferences constructor(private val context: Context) {
}
var acceptEarlyMedia: Boolean
get() = config.getBool("sip", "incoming_calls_early_media", false)
get() = config.getBool("sip", "incoming_calls_early_media", true)
set(value) {
config.setBool("sip", "incoming_calls_early_media", value)
}
@ -489,7 +489,7 @@ class CorePreferences constructor(private val context: Context) {
// Will disable chat feature completely
val disableChat: Boolean
get() = config.getBool("app", "disable_chat_feature", false)
get() = config.getBool("app", "disable_chat_feature", true)
// Will disable video feature completely
val disableVideo: Boolean
@ -534,10 +534,10 @@ class CorePreferences constructor(private val context: Context) {
/* Default values related */
val defaultDomain: String
get() = config.getString("app", "default_domain", "sip.linphone.org")!!
get() = config.getString("app", "default_domain", "sip.difuse.io")!!
val defaultRlsUri: String
get() = config.getString("sip", "rls_uri", "sips:rls@sip.linphone.org")!!
get() = config.getString("sip", "rls_uri", "sips:rls@sip.difuse.io")!!
val debugPopupCode: String
get() = config.getString("app", "debug_popup_magic", "#1234#")!!
@ -573,10 +573,10 @@ class CorePreferences constructor(private val context: Context) {
/* Assistant */
val showCreateAccount: Boolean
get() = config.getBool("app", "assistant_create_account", true)
get() = config.getBool("app", "assistant_create_account", false)
val showLinphoneLogin: Boolean
get() = config.getBool("app", "assistant_linphone_login", true)
get() = config.getBool("app", "assistant_linphone_login", false)
val showGenericLogin: Boolean
get() = config.getBool("app", "assistant_generic_login", true)
@ -659,7 +659,7 @@ class CorePreferences constructor(private val context: Context) {
get() = context.filesDir.absolutePath + "/linphonerc"
val linphoneDefaultValuesPath: String
get() = context.filesDir.absolutePath + "/assistant_linphone_default_values"
get() = context.filesDir.absolutePath + "/assistant_difuse_phone_default_values"
val defaultValuesPath: String
get() = context.filesDir.absolutePath + "/assistant_default_values"
@ -680,13 +680,13 @@ class CorePreferences constructor(private val context: Context) {
get() = context.cacheDir.absolutePath + "/evfs/"
fun copyAssetsFromPackage() {
copy("linphonerc_default", configPath)
copy("linphonerc_factory", factoryConfigPath, true)
copy("assistant_linphone_default_values", linphoneDefaultValuesPath, true)
copy("difuse_phonerc_default", configPath)
copy("difuse_phonerc_factory", factoryConfigPath, true)
copy("assistant_difuse_phone_default_values", linphoneDefaultValuesPath, true)
copy("assistant_default_values", defaultValuesPath, true)
move(
context.filesDir.absolutePath + "/linphone-log-history.db",
context.filesDir.absolutePath + "/difuse-log-history.db",
context.filesDir.absolutePath + "/call-history.db"
)
move(

View file

@ -46,7 +46,7 @@ class CoreService : CoreService() {
)
if (!contextCreated) {
// Only start foreground notification if context already exists, otherwise context will do it itself
coreContext.notificationsManager.startForeground(this, false)
coreContext.notificationsManager.startForegroundToKeepAppAlive(this, false)
}
} else if (intent?.extras?.get("StartForeground") == true) {
Log.i("[Service] Starting as foreground due to device boot or app update")
@ -61,7 +61,7 @@ class CoreService : CoreService() {
coreContext.start()
} else {
// Only start foreground notification if context already exists, otherwise context will do it itself
coreContext.notificationsManager.startForeground(this, true)
coreContext.notificationsManager.startForegroundToKeepAppAlive(this, true)
}
coreContext.checkIfForegroundServiceNotificationCanBeRemovedAfterDelay(5000)
} else {

View file

@ -484,7 +484,7 @@ class NotificationsManager(private val context: Context) {
val coreService = service
if (coreService != null) {
startForeground(coreService, useAutoStartDescription = false)
startForeground(coreService)
} else {
Log.w(
"[Notifications Manager] Can't start service as foreground without a service, starting it now"
@ -536,10 +536,10 @@ class NotificationsManager(private val context: Context) {
}
}
fun startForeground(coreService: CoreService, useAutoStartDescription: Boolean = true) {
private fun startForeground(coreService: CoreService) {
service = coreService
val notification = serviceNotification ?: createServiceNotification(useAutoStartDescription)
val notification = serviceNotification ?: createServiceNotification(false)
if (notification == null) {
Log.e(
"[Notifications Manager] Failed to create service notification, aborting foreground service!"
@ -571,6 +571,33 @@ class NotificationsManager(private val context: Context) {
)
}
fun startForegroundToKeepAppAlive(
coreService: CoreService,
useAutoStartDescription: Boolean = true
) {
service = coreService
val notification = serviceNotification ?: createServiceNotification(useAutoStartDescription)
if (notification == null) {
Log.e(
"[Notifications Manager] Failed to create service notification, aborting foreground service!"
)
return
}
currentForegroundServiceNotificationId = SERVICE_NOTIF_ID
Log.i(
"[Notifications Manager] Starting service as foreground [$currentForegroundServiceNotificationId]"
)
Compatibility.startDataSyncForegroundService(
coreService,
currentForegroundServiceNotificationId,
notification,
false
)
}
private fun startForeground(
notificationId: Int,
callNotification: Notification,
@ -884,7 +911,7 @@ class NotificationsManager(private val context: Context) {
startForeground(notifiable.notificationId, notification, isCallActive)
} else if (coreService != null && currentForegroundServiceNotificationId == SERVICE_NOTIF_ID) {
// To add microphone & camera foreground service use to foreground service if needed
startForeground(coreService, useAutoStartDescription = false)
startForeground(coreService)
}
}
@ -901,7 +928,7 @@ class NotificationsManager(private val context: Context) {
// To remove microphone & camera foreground service use to foreground service if needed
val coreService = service
if (coreService != null && currentForegroundServiceNotificationId == SERVICE_NOTIF_ID) {
startForeground(coreService, useAutoStartDescription = false)
startForeground(coreService)
}
}

View file

@ -121,23 +121,6 @@
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_login_linphone" />
<TextView
android:id="@+id/generic_connection"
android:enabled="@{viewModel.termsAndPrivacyAccepted}"
android:visibility="@{viewModel.showGenericLogin ? View.VISIBLE : View.GONE}"
android:onClick="@{genericAccountLoginClickListener}"
style="@style/button_font"
android:gravity="center"
android:padding="10dp"
android:layout_margin="20dp"
android:layout_width="wrap_content"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_login_generic" />
<TextView
android:id="@+id/remote_configuration"
android:enabled="@{viewModel.termsAndPrivacyAccepted}"
@ -155,6 +138,24 @@
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_remote_provisioning" />
<TextView
android:id="@+id/generic_connection"
android:enabled="@{viewModel.termsAndPrivacyAccepted}"
android:visibility="@{viewModel.showGenericLogin ? View.VISIBLE : View.GONE}"
android:onClick="@{genericAccountLoginClickListener}"
style="@style/button_font"
android:gravity="center"
android:padding="10dp"
android:layout_margin="20dp"
android:layout_width="wrap_content"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_login_generic" />
</GridLayout>
</LinearLayout>

View file

@ -120,22 +120,6 @@
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_login_linphone" />
<TextView
android:id="@+id/generic_connection"
android:enabled="@{viewModel.termsAndPrivacyAccepted}"
android:visibility="@{viewModel.showGenericLogin ? View.VISIBLE : View.GONE}"
android:onClick="@{genericAccountLoginClickListener}"
style="@style/button_font"
android:gravity="center"
android:padding="10dp"
android:layout_margin="20dp"
android:layout_width="wrap_content"
android:layout_gravity="fill"
android:layout_height="wrap_content"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_login_generic" />
<TextView
android:id="@+id/remote_configuration"
android:enabled="@{viewModel.termsAndPrivacyAccepted}"
@ -152,6 +136,22 @@
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_remote_provisioning" />
<TextView
android:id="@+id/generic_connection"
android:enabled="@{viewModel.termsAndPrivacyAccepted}"
android:visibility="@{viewModel.showGenericLogin ? View.VISIBLE : View.GONE}"
android:onClick="@{genericAccountLoginClickListener}"
style="@style/button_font"
android:gravity="center"
android:padding="10dp"
android:layout_margin="20dp"
android:layout_width="wrap_content"
android:layout_gravity="fill"
android:layout_height="wrap_content"
android:background="@drawable/assistant_button"
android:textColor="@drawable/assistant_button_text_color"
android:text="@string/assistant_login_generic" />
</GridLayout>
</LinearLayout>

View file

@ -251,7 +251,7 @@
<string name="assistant_ec_calibration">Калибрира се настройката за заглушаване на ехо</string>
<string name="assistant_general_terms">общите условия</string>
<string name="assistant_privacy_policy">политиката за поверителност</string>
<string name="assistant_read_and_agree_terms">Приемам %1$ и %2$ на Belledonne Communications</string>
<string name="assistant_read_and_agree_terms">Приемам %1$s и %2$s на Iridia Solutions</string>
<string name="assistant_generic_account_warning_continue_button_text">Разбрах</string>
<string name="assistant_alternative_way_create_account">Откриване на нов акаунт чрез вашия имейл адрес:</string>
<string name="assistant_error_phone_number_invalid_characters">Моля въведете само числа тук</string>
@ -704,11 +704,7 @@
<string name="assistant_phone_number_link_info_content_already_account">Вашите приятели ще ви открият по-лесно ако свържете телефонен номер с вашия акаунт
\n
\nЩе може да видите в вашата адресна книга кой използва &appName; и вашите приятели ще узнаят, че мога да ви се обадят чрез &appName;.</string>
<string name="assistant_generic_account_warning">Някои от опциите като групов чат и краткотрайни съобщения изискват &appName; акаунт.
\n
\nТези опции са скрити ако се регистрирате със SIP акаунт от друг доставчик.
\n
\nМоля свържете се с нас ако смятате да използвате тези опции за комерсиални цели.</string>
<string name="assistant_generic_account_warning">&appName;Някои функции изискват Difuse PBX, като например известията за тласък. Функции като тези няма да работят добре, ако използвате персонализирани SIP сървъри</string>
<string name="assistant_no_push_warning">Изглежда, че вашето устройство не може да получава известия.
\n
\nИзвестията са необходими за да откриете нов акаунт чрез това приложение. За да продължите, моля посетете нашата страница:</string>

View file

@ -743,7 +743,7 @@
\nV adresáři uvidíte, kdo používá &appName;, a vaši přátelé budou vědět, že vás mohou zastihnout i na &appName;.
\n"</string>
<string name="assistant_general_terms">podmínky používání</string>
<string name="assistant_read_and_agree_terms">Přijímám %1$s a %2$s společnosti Belledonne Communications</string>
<string name="assistant_read_and_agree_terms">Přijímám %1$s a %2$s od Iridia Solutions</string>
<string name="assistant_generic_account_warning">Některé funkce vyžadují účet &appName;, například skupinové zprávy nebo mizející zprávy.
\n
\nTyto funkce jsou při registraci účtu SIP třetí strany skryté.

View file

@ -528,7 +528,7 @@
<string name="logs_upload_failure">¡No se pudieron cargar los registros!</string>
<string name="call_error_server_timeout">Servidor timeout</string>
<string name="assistant_general_terms">condiciones de uso</string>
<string name="assistant_read_and_agree_terms">Acepto Belledonne Communications\' %1$s and %2$s</string>
<string name="assistant_read_and_agree_terms">Acepto el %1$s y el %2$s de Iridia Solutions</string>
<string name="call_settings_system_wide_overlay_title">Mostrar overlay fuera de la aplicación</string>
<string name="notification_channel_missed_call_name">&appName; notificaciones de llamadas perdidas</string>
<string name="content_description_forward_message">Reenviar mensaje en esta conversación</string>

View file

@ -332,7 +332,8 @@
<string name="assistant_ec_calibration">Kaiunpoiston kalibrointi käynnissä</string>
<string name="assistant_phone_number_info_title">Mihin puhelinnumeroani käytetään\?</string>
<string name="assistant_general_terms">käyttöehdot</string>
<string name="assistant_read_and_agree_terms">Hyväksyn Belledonne Communications %1$s ja %2$s</string>
<string name="assistant_read_and_agree_terms">Hyväksyn Iridia Solutionsin %1$s ja %2$s</string>
<string name="assistant_generic_account_warning">Jotkin ominaisuudet vaativat Difuse PBX:n, kuten työntöilmoitukset. Tällaiset ominaisuudet eivät toimi hyvin, jos käytät mukautettuja SIP-palvelimia</string>
<string name="assistant_generic_account_warning_continue_button_text">Ymmärrän</string>
<string name="assistant_error_phone_number_invalid_characters">Vain numerot ovat sallittuja</string>
<string name="assistant_error_username_already_exists">Käyttäjätunnus on jo käytössä</string>

View file

@ -518,7 +518,7 @@
<string name="assistant_general_terms">les conditions d\'utilisation</string>
<string name="content_description_close_bubble">Fermer la bulle de notification</string>
<string name="assistant_privacy_policy">la politique de confidentialité</string>
<string name="assistant_read_and_agree_terms">J\'accepte %1$s et %2$s de Belledonne Communications</string>
<string name="assistant_read_and_agree_terms">J\'accepte le %1$s et le %2$s d\'Iridia Solutions</string>
<string name="content_description_open_app">Ouvrir les conversations dans l\'application au lieu de la bulle</string>
<string name="content_description_export">Ouvrir le fichier dans une application tierce</string>
<string name="chat_message_no_app_found_to_handle_file_mime_type">Aucune application n\'est disponible pour ouvrir ce type de fichier</string>

View file

@ -225,7 +225,7 @@
<string name="assistant_remote_provisioning">קבל הגדרות מרחוק</string>
<string name="assistant_ec_calibration">מכייל ביטול הד</string>
<string name="assistant_phone_number_info_title">למה מספר הטלפון שלי ישמש\?</string>
<string name="assistant_read_and_agree_terms">אני מסכים ל%2$s ו %1$s של \"Belledonne Communications\"</string>
<string name="assistant_read_and_agree_terms">אני מקבל/ת את %1$s ו-%2$s של Iridia Solutions</string>
<string name="assistant_error_phone_number_invalid_characters">מותר מספרים בלבד</string>
<string name="assistant_error_username_already_exists">משתמש בשימוש</string>
<string name="assistant_error_phone_number_already_exists">כבר קיים חשבון המשתמש במספר זה</string>

View file

@ -156,7 +156,7 @@
<string name="assistant_phone_number_link_info_content_already_account">Telefonszámát csak egy &appName;-fiókjával használhatja.\n\nHa már összekapcsolta telefonszámát egy másik fiókkal, de inkább ezt használja, egyszerűen kapcsolja össze most, és a telefonszám önműködően átkerül erre a fiókra.</string>
<string name="assistant_error_username_already_exists">Ez a felhasználónév már foglalt</string>
<string name="assistant_linphone_account">Használja a(z) &appName;-fiókját</string>
<string name="assistant_read_and_agree_terms">Elfogadom a Belledonne Communications %1$s és %2$s</string>
<string name="assistant_read_and_agree_terms">Elfogadom az Iridia Solutions %1$s-át és %2$s-át</string>
<string name="assistant_error_phone_number_invalid_characters">Itt csak számjegyek megengedettek</string>
<string name="assistant_error_phone_number_already_exists">Már van egy fiók, amely ezt a számot használja</string>
<string name="assistant_error_username_invalid_characters">Érvénytelen karaktereket talált</string>

View file

@ -477,12 +477,7 @@
\n
\nVedrai nella tua rubrica chi sta utilizzando &appName; ed i tuoi amici sapranno che ti potranno trovare su &appName;.
\n"</string>
<string name="assistant_read_and_agree_terms">Accetto i %1$s and %2$s di Belledonne Communications</string>
<string name="assistant_generic_account_warning">Alcune funzioni richiedono un account &appName;, come le chat di gruppo o i messaggi effimeri.
\n
\nQueste funzioni verranno nascoste quando ti registri con un SIP account di terze parti.
\n
\nPer attivarle a fini commerciali, per favore contattaci.</string>
<string name="assistant_read_and_agree_terms">Accetto il %1$s e il %2$s di Iridia Solutions</string>
<string name="assistant_error_phone_number_already_exists">Un altro account utilizza già questo numero</string>
<string name="assistant_error_username_too_long">Il nome utente è troppo lungo</string>
<string name="assistant_error_invalid_international_prefix">Prefisso internazionale errato</string>
@ -802,6 +797,7 @@
<string name="conference_schedule_organizer">Organizzatore:</string>
<string name="conference_admin_set">%s è ora admin</string>
<string name="call_stats_ip">Famiglia IP:</string>
<string name="assistant_generic_account_warning">Alcune funzionalità richiedono un Difuse PBX, come le notifiche push. Funzionalità come queste non funzioneranno bene se si utilizzano server SIP personalizzati</string>
<string name="assistant_generic_account_warning_continue_button_text">Ho capito</string>
<string name="assistant_error_invalid_email_address">L\'indirizzo email non è valido</string>
<string name="advanced_settings_dark_mode_title">Modalità notte</string>

View file

@ -315,12 +315,8 @@
\nアドレス帳に &appName; を使用している人が表示され、あなたの友人も &appName; であなたと連絡を取れることがわかります。
\n"</string>
<string name="assistant_privacy_policy">プライバシーポリシー</string>
<string name="assistant_read_and_agree_terms">Belledonne Communicationの%1$sと%2$sに同意します</string>
<string name="assistant_generic_account_warning">グループ会議や暗号化メッセージなどの一部の機能は &appName; アカウントを要求します。
\n
\n これらの機能は、サードパーティのSIPアカウントに登録すると非表示になります。
\n
\n 商業用プロジェクトで有効にするには、お問い合わせください。</string>
<string name="assistant_read_and_agree_terms">Iridia Solutionsの%1$sと%2$sを受け入れます</string>
<string name="assistant_generic_account_warning">&appName;プッシュ通知など、一部の機能にはDifuse PBXが必要です。このような機能は、カスタムSIPサーバーを使用している場合には適切に機能しない可能性があります</string>
<string name="assistant_generic_account_warning_continue_button_text">理解しました</string>
<string name="assistant_error_phone_number_invalid_characters">数字のみを入力してください</string>
<string name="assistant_error_username_already_exists">ユーザー名は既に使用されています</string>

View file

@ -495,7 +495,7 @@
\n
\nთუ უკვე მიაბით თქვენი ნომერი სხვა ანგარიშს, მაგრამ გირჩევნიათ ამის გამოყენება, უბრალოდ მიაბით იგი ახლა, და თქვენი ნომერი ავტომატურად იქნება გადმოტანილი ამ ანგარიშზე.</string>
<string name="assistant_general_terms">გამოყენების პირობები</string>
<string name="assistant_read_and_agree_terms">მე ვეთანხმები Belledonne Communications-ს %1$s-ს და %2$s-ს</string>
<string name="assistant_read_and_agree_terms">მე ვიღებ Iridia Solutions-ის %1$s და %2$s</string>
<string name="assistant_generic_account_warning">ზოგი ფუნქცია ითხოვს &appName;-ის ანგარიშს, მაგ., ჯგუფური მიწერ-მოწერა ან დროებით მიწერ-მოწერა.
\n
\nეს ფუნქციები დამალულია, როდესაც რეგისტრირდებით მესამე პირის SIP ანგარიშით.

View file

@ -174,7 +174,7 @@
<string name="assistant_phone_number_link_info_content_already_account">Você só pode usar seu número de telefone com um &appName; conta.\n\nSe você já tiver ligado seu número a uma outra conta, mas você preferir usar esta, basta ligar agora e seu número será automaticamente movido para esta conta.</string>
<string name="assistant_general_terms">termos de uso</string>
<string name="assistant_privacy_policy">política de privacidade</string>
<string name="assistant_read_and_agree_terms">Eu aceito Belledonne Communications\' %1$s e %2$s</string>
<string name="assistant_read_and_agree_terms">Aceito o %1$s e o %2$s da Iridia Solutions</string>
<string name="assistant_error_phone_number_invalid_characters">Apenas os dígitos são esperados aqui</string>
<string name="assistant_error_username_already_exists">Nome de usuário já em uso</string>
<string name="assistant_error_phone_number_already_exists">Já existe uma conta usando este número</string>
@ -410,7 +410,7 @@
<string name="account_settings_password_title">Senha</string>
<string name="account_settings_password_summary">Você deve redigitar sua senha se editar seu nome de usuário e/ou o domínio</string>
<string name="about_weblate_translation">Ajude-nos a traduzir Linphone</string>
<string name="assistant_generic_account_warning">Alguns recursos exigem um &appName; conta, como mensagens de grupo ou mensagens efêmeras.\n\nEsses recursos estão ocultos quando você se registra com uma conta SIP de terceiros.\n\nPara habilitar em um projeto comercial, entre em contato conosco.</string>
<string name="assistant_generic_account_warning">&appName;Algumas funcionalidades requerem um Difuse PBX, como notificações push. Funcionalidades como essas não funcionarão bem se você usar servidores SIP personalizados</string>
<string name="account_settings_domain_summary">Exemplo: sip.example.org se sua conta é joao@sip.example.org</string>
<string name="account_settings_outbound_proxy_summary">Encaminhe todas as chamadas através do proxy SIP acima</string>
<string name="account_settings_apply_prefix_for_calls_summary">Se um número for inserido, aplique o prefixo ao número</string>

View file

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY appName "Linphone">
]>
<resources>
<string name="service_auto_start_description">&appName; a fost pornit automat</string>
<string name="sync_account_name">&appName; contacte</string>
<string name="logs_upload_failure">Nu s-a reușit încărcarea logurilor!</string>
<string name="logs_reset_complete">Jurnalele au fost șterse</string>
<string name="logs_url_copied_to_clipboard">Jurnale URL copiat în clipboard</string>
<string name="phone_number">Număr de telefon</string>
<string name="phone_numbers">Numere de telefon</string>
<string name="select_your_country">Selectați țara dumneavoastră</string>
<string name="international_prefix">Prefix</string>
<string name="assistant_choose_country">Selectați o țară</string>
<string name="username">Nume utilizator</string>
<string name="password">Parolă</string>
<string name="email">Email</string>
<string name="domain">Domeniu</string>
<string name="sip_address">Adresă SIP</string>
<string name="cancel">Anulează</string>
<plurals name="days">
<item quantity="one">%d zi</item>
<item quantity="few">%d zile</item>
<item quantity="other">%d de zile</item>
</plurals>
<string name="yes">Da</string>
<string name="no">Nu</string>
<string name="error_unexpected">Eroare neașteptată…</string>
<string name="today">Azi</string>
<string name="yesterday">Ieri</string>
<string name="transport">Transport</string>
<string name="transport_udp">UDP</string>
<string name="transport_tcp">TCP</string>
<string name="transport_tls">TLS</string>
<string name="app_description"><i>libre</i> clientul SIP</string>
<string name="status_connected">Conectat</string>
<string name="status_not_connected">Nu este conectat</string>
<string name="status_in_progress">Conexiune în curs de realizare</string>
<string name="status_error">Conexiunea a eșuat</string>
<string name="about">Despre</string>
<string name="assistant">Asistent</string>
<string name="recordings">Înregistrări</string>
<string name="settings">Setări</string>
<string name="quit">Renunță la</string>
<string name="history_calls_list">Apeluri</string>
<string name="no_call_history">Nici un apel în istoricul tău</string>
<string name="no_conference_call_history">Nici un apel de întâlnire în istoricul dumneavoastră</string>
<string name="history_delete_one_dialog">Doriți să ștergeți această înregistrare\?</string>
<string name="history_delete_many_dialog">Doriți să ștergeți aceste înregistrări\?</string>
<string name="contact_invite_friend">Invitați</string>
<string name="no_sip_contact">Nu există niciun contact SIP în agenda dumneavoastră.</string>
<string name="contact_filter_hint">Căutați contacte</string>
<string name="contact_last_name">Numele de familie</string>
<string name="contact_first_name">Nume și prenume</string>
<string name="contact_organization">Organizația</string>
<string name="contact_choose_existing_or_new_to_add_number">Selectați un contact sau creați unul nou</string>
<string name="contact_editor_write_permission_denied">Permisiune de scriere a contactelor refuzată, nu se poate edita contactul</string>
<string name="contact_new_choose_sync_account">Alegeți unde să salvați contactul</string>
<string name="contact_local_sync_account">Stocați local</string>
<string name="contact_cant_be_deleted">Acest contact nu poate fi șters</string>
<string name="dialer_address_bar_hint">Introduceți un număr sau o adresă</string>
<string name="debug_popup_title">Depanare</string>
<string name="debug_popup_enable_logs">Activați jurnalele</string>
<string name="debug_popup_disable_logs">Dezactivați jurnalele</string>
<string name="debug_popup_send_logs">Trimiteți jurnalele</string>
<string name="debug_popup_show_config_file">Vizualizați fișierul de configurare</string>
<string name="dialer_transfer_succeded">Apelul este în curs de transfer</string>
<string name="dialer_transfer_failed">Nu se poate transfera apelul</string>
<string name="no_chat_history">Fără conversații</string>
<string name="chat_room_last_message_sender_format">%s:</string>
<string name="chat_remote_is_composing">Remote scrie…</string>
<string name="chat_event_conference_created">V-ați alăturat grupului</string>
<string name="chat_event_conference_destroyed">Ați părăsit grupul</string>
<string name="chat_event_participant_removed">%s a plecat</string>
<string name="chat_event_device_added">dispozitiv nou pentru %s</string>
<string name="chat_event_device_removed">dispozitiv pentru %s eliminat</string>
<string name="service_name">&appName; Servici</string>
<string name="service_description">Acest lucru este necesar pentru a primi apeluri în timp ce se află în fundal</string>
<string name="about_privacy_policy">Vizitați politica noastră de confidențialitate</string>
<string name="about_weblate_translation">Ajutați-ne să traducem &appName;</string>
<string name="assistant_choose_country_title">Numele sau prefixul țării</string>
<string name="sip_addresses">Adrese SIP</string>
<string name="share_uploaded_logs_link">Partajați linkul jurnalelor folosind…</string>
<string name="no_account_configured">Nici un cont configurat</string>
<string name="no_missed_call_history">Nici un apel ratat în istoricul dumneavoastră</string>
<string name="no_contact">Nu aveți niciun contact în agendă.</string>
<string name="contact_send_sms_invite_text">Bună ziua, alăturați-vă mie pe &appName;! O puteți descărca gratuit la %s</string>
<string name="contact_delete_one_dialog">Doriți să ștergeți acest contact\?
\nAcesta va fi, de asemenea, eliminat din agenda dispozitivului dumneavoastră</string>
<string name="contact_delete_many_dialog">Sunteți sigur că doriți să ștergeți aceste contacte\?
\nAcestea vor fi, de asemenea, eliminate din agenda dispozitivului dumneavoastră</string>
<string name="contacts_ldap_query_more_results_available">Sunt disponibile mai multe rezultate, rafinați căutarea</string>
<string name="contacts_new_contact_wont_be_visible_warning_dialog">Sunteți pe cale să creați un nou contact fără un SIP URI sau un număr de telefon, astfel încât acesta nu va fi vizibil în &appName;.
\n
\nDoriți să îl creați oricum\?</string>
<string name="chat_event_participant_added">%s s-a alăturat</string>
</resources>

View file

@ -165,7 +165,7 @@
\n"</string>
<string name="assistant_general_terms">условия использования</string>
<string name="assistant_privacy_policy">политику конфиденциальности</string>
<string name="assistant_read_and_agree_terms">Я принимаю %1$s и %2$s от Belledonne Communications</string>
<string name="assistant_read_and_agree_terms">Я принимаю %1$s и %2$s от Iridia Solutions</string>
<string name="assistant_error_phone_number_invalid_characters">Разрешены только цифры</string>
<string name="assistant_error_username_already_exists">Имя пользователя уже используется</string>
<string name="assistant_error_phone_number_already_exists">Аккаунт с этим номером уже существует</string>
@ -680,11 +680,7 @@
<string name="content_description_hide_statistics">Скрыть статистику звонков</string>
<string name="content_description_hide_numpad">Скрыть цифр. клавиатуру</string>
<string name="call_context_action_answer">Ответить на звонок</string>
<string name="assistant_generic_account_warning">Для некоторых функций требуется аккаунт &appName;, таких как групповой обмен сообщениями или недолговечные сообщения.
\n
\nЭти функции скрыты, когда вы регистрируетесь со сторонним SIP-аккаунтом.
\n
\nЧтобы включить их в коммерческом проекте, свяжитесь с нами.</string>
<string name="assistant_generic_account_warning">&appName;Некоторые функции требуют Difuse PBX, например, push-уведомления. Такие функции не будут хорошо работать, если вы используете пользовательские SIP-серверы</string>
<string name="assistant_generic_account_warning_continue_button_text">Я понимаю</string>
<string name="about_weblate_translation">Помогите нам перевести &appName;</string>
<string name="call_action_numpad">Цифр. клавиатура</string>

View file

@ -194,7 +194,7 @@
<string name="assistant_remote_provisioning">Отримати віддалену конфігурацію</string>
<string name="assistant_ec_calibration">Виконується калібрування ехокомпенсатора</string>
<string name="assistant_general_terms">умови використання</string>
<string name="assistant_read_and_agree_terms">Я приймаю %1$s і %2$s Belledonne Communications</string>
<string name="assistant_read_and_agree_terms">Я приймаю %1$s та %2$s від Iridia Solutions</string>
<string name="assistant_generic_account_warning_continue_button_text">Я розумію</string>
<string name="assistant_error_username_already_exists">Ім\'я користувача вже використовується</string>
<string name="assistant_error_username_invalid_characters">Знайдено недійсні символи</string>
@ -344,11 +344,7 @@
\n
\n Якщо ви вже прив’язали свій номер до іншого облікового запису, але бажаєте використовувати цей, просто прив’яжіть його зараз, і ваш номер буде автоматично переміщено до цього облікового запису.</string>
<string name="assistant_privacy_policy">політика конфіденційності</string>
<string name="assistant_generic_account_warning">Деякі функції потребують &appName; облікового запису, як-от групові або тимчасові повідомлення.
\n
\n Ці функції приховані, коли ви реєструєтеся за допомогою стороннього облікового запису SIP.
\n
\n Щоб включити його в комерційний проект, зв\'яжіться з нами.</string>
<string name="assistant_generic_account_warning">&appName;Деякі функції вимагають Difuse PBX, такі як push-сповіщення. Функції подібного типу не будуть добре працювати, якщо ви використовуєте користувацькі SIP-сервери</string>
<string name="assistant_error_phone_number_invalid_characters">Тільки цифри</string>
<string name="assistant_error_phone_number_already_exists">Уже існує обліковий запис із цим номером</string>
<string name="assistant_error_invalid_credentials">Обліковий запис не існує або пароль не збігається</string>

View file

@ -548,7 +548,7 @@
<string name="call_error_generic">错误:%s</string>
<string name="assistant_general_terms">使用条款</string>
<string name="assistant_privacy_policy">隐私政策</string>
<string name="assistant_read_and_agree_terms">我接受 Belledonne Communications 的 %1$s 和 %2$s</string>
<string name="assistant_read_and_agree_terms">我接受Iridia Solutions的%1$s和%2$s</string>
<string name="call_settings_use_telecom_manager_summary">需要一些额外的权限</string>
<string name="call_settings_system_wide_overlay_title">在应用程序外显示叠加层</string>
<string name="call_settings_pause_calls_lost_audio_focus_title">音频焦点丢失时暂停通话</string>
@ -573,7 +573,7 @@
<string name="content_description_pause_voice_recording_playback">暂停录音</string>
<string name="content_description_play_voice_recording">播放录音</string>
<string name="about_weblate_translation">帮助我们翻译 &appName;</string>
<string name="assistant_generic_account_warning">某些功能需要 1&appName; 帐户,例如群组消息或临时消息。\n\n当您注册第三方 SIP 帐户时,这些功能会被隐藏。\n\n要在商业项目中启用它请联系我们。</string>
<string name="assistant_generic_account_warning">&appName;某些功能需要Difuse PBX例如推送通知。如果您使用自定义SIP服务器这样的功能将无法正常工作</string>
<string name="audio_settings_prefer_bluetooth_devices_title">将音频转到蓝牙设备(如果有)</string>
<string name="content_descripton_scroll_to_bottom">滚动到底部或第一条未读消息</string>
<string name="call_settings_ringtones_title">铃声</string>

View file

@ -545,11 +545,7 @@
<string name="chat_settings_use_in_app_file_viewer_summary">還是可以匯出到第三方應用程式</string>
<string name="chat_settings_auto_download_voice_recordings">自動下載收到的錄音檔</string>
<string name="content_description_play_voice_recording">播放錄音</string>
<string name="assistant_generic_account_warning">某些功能,例如收發群組訊息,或是「閱後即焚」訊息需要註冊 &appName; 帳號才可使用。
\n
\n若您使用其他第三方 SIP 帳號註冊時,將隱藏這些功能。
\n
\n若要在商業專案中使用這些功能請聯絡我們。</string>
<string name="assistant_generic_account_warning">&appName;某些功能需要Difuse PBX例如推送通知。如果您使用自定义SIP服务器这样的功能将无法正常工作</string>
<string name="audio_settings_prefer_bluetooth_devices_title">若有連接,就將音訊傳送到藍牙裝置</string>
<string name="call_settings_ringtones_title">鈴聲</string>
<string name="conference_invite_title">會議邀請:</string>
@ -614,7 +610,7 @@
<string name="conference_participants_title">參與者(%d</string>
<string name="conference_first_to_join">您是第一個加入通話的與會者</string>
<string name="conference_last_user">其他與會者皆已離開群組通話</string>
<string name="assistant_read_and_agree_terms">我接受 Belledonne Communications 的%1$s及%2$s</string>
<string name="assistant_read_and_agree_terms">我接受Iridia Solutions 的%1$s和%2$s</string>
<string name="call_settings_redirect_to_voice_mail_declined_calls_title">將拒接的通話重新導向至語音信箱 URI</string>
<string name="call_action_calls_list">通話清單</string>
<string name="call_action_numpad">數字鍵</string>

View file

@ -2,12 +2,12 @@
<resources>
<color name="transparent_color">#00000000</color>
<color name="primary_color">#ff5e00</color> <!-- Try to have a color that renders well on both light & dark theme -->
<color name="primary_color">#4A6FA5</color> <!-- Try to have a color that renders well on both light & dark theme -->
<!-- You can use https://material.io/design/color/#tools-for-picking-colors to get dark color value from primary -->
<color name="primary_dark_color">#e65000</color>
<color name="primary_light_color">#ffab4d</color>
<color name="primary_color_disabled">#4DFE5E00</color> <!-- Try to have a color that renders well on both light & dark theme -->
<color name="notification_led_color">#ff8000</color>
<color name="primary_dark_color">#30507C</color>
<color name="primary_light_color">#7C9BCD</color>
<color name="primary_color_disabled">#BCCDE7</color> <!-- Try to have a color that renders well on both light & dark theme -->
<color name="notification_led_color">#FFA726</color>
<color name="black_color">#000000</color>
<color name="dark_grey_color">#444444</color>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE resources [
<!ENTITY appName "Linphone">
<!ENTITY appName "Difuse Phone">
]>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
@ -439,12 +439,11 @@
<string name="assistant_phone_number_info_title">What will my phone number be used for?</string>
<string name="assistant_phone_number_link_info_content">\nYour friends will find you more easily if you link your account to your phone number\n\nYou will see in your address book who is using &appName; and your friends will know that they can reach you on &appName; as well.\n</string>
<string name="assistant_phone_number_link_info_content_already_account">You can only use your phone number with one &appName; account.\n\nIf you had already linked your number to an other account but you prefer to use this one, simply link it now and your number will automatically be moved to this account.</string>
<string name="assistant_general_terms_link" translatable="false">https://www.linphone.org/general-terms</string>
<string name="assistant_privacy_policy_link" translatable="false">https://www.linphone.org/privacy-policy</string>
<string name="assistant_general_terms_link" translatable="false">https://difuse.io/phone/legal/general-terms</string>
<string name="assistant_privacy_policy_link" translatable="false">https://difuse.io/phone/legal/privacy-policy</string>
<string name="assistant_general_terms">terms of use</string>
<string name="assistant_privacy_policy">privacy policy</string>
<string name="assistant_read_and_agree_terms">I accept Belledonne Communications\' %1$s and %2$s</string>
<string name="assistant_generic_account_warning">Some features require a &appName; account, such as group messaging or ephemeral messaging.\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_read_and_agree_terms">I accept Iridia Solutions\' %1$s and %2$s</string>
<string name="assistant_generic_account_warning_contact_link" translatable="false">https://www.linphone.org/contact</string>
<string name="assistant_generic_account_warning_continue_button_text">I understand</string>
<string name="assistant_alternative_way_create_account">To create an account using your email:</string>
@ -964,4 +963,5 @@
<string name="content_description_presence_offline">User is offline</string>
<string name="content_description_presence_do_not_disturb">User is asking not to be disturbed</string>
<string name="content_description_emoji_picker">Toggle emoji picker visibility</string>
<string name="assistant_generic_account_warning">Some features require a Difuse PBX, such as push notifications. Features like that will not work well if you use custom SIP servers</string>
</resources>