mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-21 15:05:19 +00:00
Addressed many aspects of PR feedback + misc. strings issues
This commit is contained in:
parent
9cdbc4b80b
commit
b52048a080
@ -2101,8 +2101,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
|||||||
override fun banUser(messages: Set<MessageRecord>) {
|
override fun banUser(messages: Set<MessageRecord>) {
|
||||||
showSessionDialog {
|
showSessionDialog {
|
||||||
title(R.string.banUser)
|
title(R.string.banUser)
|
||||||
// ACL TODO - We need a string for the below `text` element - have asked Lucy about this 2024/08/26 -AL
|
text(R.string.communityBanDescription)
|
||||||
text("This will ban the selected user from this room. It won't ban them from other rooms.")
|
|
||||||
button(R.string.banUser) { viewModel.banUser(messages.first().individualRecipient); endActionMode() }
|
button(R.string.banUser) { viewModel.banUser(messages.first().individualRecipient); endActionMode() }
|
||||||
cancelButton(::endActionMode)
|
cancelButton(::endActionMode)
|
||||||
}
|
}
|
||||||
@ -2111,8 +2110,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
|||||||
override fun banAndDeleteAll(messages: Set<MessageRecord>) {
|
override fun banAndDeleteAll(messages: Set<MessageRecord>) {
|
||||||
showSessionDialog {
|
showSessionDialog {
|
||||||
title(R.string.banUser)
|
title(R.string.banUser)
|
||||||
// ACL TODO - We need a string for the below `text` element - have asked Lucy about this 2024/08/26 -AL
|
text(R.string.communityBanDeleteDescription)
|
||||||
text("This will ban the selected user from this room and delete all messages sent by them. It won't ban them from other rooms or delete the messages they sent there.")
|
|
||||||
button(R.string.banUser) { viewModel.banAndDeleteAll(messages.first()); endActionMode() }
|
button(R.string.banUser) { viewModel.banAndDeleteAll(messages.first()); endActionMode() }
|
||||||
cancelButton(::endActionMode)
|
cancelButton(::endActionMode)
|
||||||
}
|
}
|
||||||
|
@ -45,44 +45,6 @@ class SearchBottomBar : LinearLayout {
|
|||||||
setViewEnabled(searchDown, position > 0)
|
setViewEnabled(searchDown, position > 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
fun setData(position: Int, count: Int, query: String?) = with(binding) {
|
|
||||||
searchProgressWheel.visibility = GONE
|
|
||||||
searchUp.setOnClickListener { v: View? ->
|
|
||||||
if (eventListener != null) {
|
|
||||||
eventListener!!.onSearchMoveUpPressed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
searchDown.setOnClickListener { v: View? ->
|
|
||||||
if (eventListener != null) {
|
|
||||||
eventListener!!.onSearchMoveDownPressed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we found search results list how many we found
|
|
||||||
if (count > 0) {
|
|
||||||
searchPosition.text = Phrase.from(context, R.string.searchMatches)
|
|
||||||
.put(COUNT_KEY, position + 1)
|
|
||||||
.put(TOTAL_COUNT_KEY, count)
|
|
||||||
.format()
|
|
||||||
} else {
|
|
||||||
// If there are no results we don't display anything if the query is
|
|
||||||
// empty, but we'll substitute "No results found for <query>" otherwise.
|
|
||||||
var txt = ""
|
|
||||||
if (query != null) {
|
|
||||||
if (query.isNotEmpty()) {
|
|
||||||
txt = Phrase.from(context, R.string.searchMatchesNoneSpecific)
|
|
||||||
.put(QUERY_KEY, query)
|
|
||||||
.format().toString()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
searchPosition.text = txt
|
|
||||||
}
|
|
||||||
setViewEnabled(searchUp, position < count - 1)
|
|
||||||
setViewEnabled(searchDown, position > 0)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
fun showLoading() {
|
fun showLoading() {
|
||||||
binding.searchProgressWheel.visibility = VISIBLE
|
binding.searchProgressWheel.visibility = VISIBLE
|
||||||
}
|
}
|
||||||
|
@ -45,10 +45,6 @@ public class MultipleRecipientNotificationBuilder extends AbstractNotificationBu
|
|||||||
.put(CONVERSATION_COUNT_KEY, threadCount)
|
.put(CONVERSATION_COUNT_KEY, threadCount)
|
||||||
.format().toString();
|
.format().toString();
|
||||||
setSubText(txt);
|
setSubText(txt);
|
||||||
|
|
||||||
// Note: `setContentInfo` details are only visible in Android API 24 and below - as our minimum is now API 26 this can be skipped.
|
|
||||||
//setContentInfo(String.valueOf(messageCount));
|
|
||||||
|
|
||||||
setNumber(messageCount);
|
setNumber(messageCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,21 +131,17 @@ internal fun LandingScreen(
|
|||||||
MESSAGES.take(count),
|
MESSAGES.take(count),
|
||||||
key = { it.stringId }
|
key = { it.stringId }
|
||||||
) { item ->
|
) { item ->
|
||||||
// Perform string substitution in the bubbles that require it
|
// Perform string substitution only in the bubbles that require it
|
||||||
if (item.stringId == R.string.onboardingBubbleWelcomeToSession ||
|
val bubbleTxt = if (item.stringId == R.string.onboardingBubbleWelcomeToSession ||
|
||||||
item.stringId == R.string.onboardingBubbleSessionIsEngineered) {
|
item.stringId == R.string.onboardingBubbleSessionIsEngineered) {
|
||||||
AnimateMessageText(
|
Phrase.from(stringResource(item.stringId)).put(APP_NAME_KEY, stringResource(R.string.app_name)).format().toString()
|
||||||
Phrase.from(stringResource(item.stringId))
|
} else {
|
||||||
.put(APP_NAME_KEY, stringResource(R.string.app_name))
|
stringResource(item.stringId)
|
||||||
.format().toString(),
|
|
||||||
item.isOutgoing
|
|
||||||
)
|
|
||||||
} else { // Non-substituted text bubbles
|
|
||||||
AnimateMessageText(
|
|
||||||
stringResource(item.stringId),
|
|
||||||
item.isOutgoing
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
AnimateMessageText(
|
||||||
|
bubbleTxt,
|
||||||
|
item.isOutgoing
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,12 +80,13 @@ internal fun MessageNotificationsScreen(
|
|||||||
|
|
||||||
// spacing between buttons is provided by ripple/downstate of NotificationRadioButton
|
// spacing between buttons is provided by ripple/downstate of NotificationRadioButton
|
||||||
|
|
||||||
val txt = Phrase.from(stringResource(R.string.onboardingMessageNotificationExplanation))
|
val explanationTxt = Phrase.from(stringResource(R.string.notificationsSlowModeDescription))
|
||||||
.put(APP_NAME_KEY, stringResource(R.string.app_name))
|
.put(APP_NAME_KEY, stringResource(R.string.app_name))
|
||||||
.format().toString()
|
.format().toString()
|
||||||
|
|
||||||
NotificationRadioButton(
|
NotificationRadioButton(
|
||||||
R.string.notificationsSlowMode,
|
stringResource(R.string.notificationsSlowMode),
|
||||||
R.string.notificationsSlowModeDescription,
|
explanationTxt,
|
||||||
modifier = Modifier.contentDescription(R.string.AccessibilityId_notificationsSlowMode),
|
modifier = Modifier.contentDescription(R.string.AccessibilityId_notificationsSlowMode),
|
||||||
checked = state.pushDisabled,
|
checked = state.pushDisabled,
|
||||||
onClick = { setEnabled(false) }
|
onClick = { setEnabled(false) }
|
||||||
@ -99,8 +100,8 @@ internal fun MessageNotificationsScreen(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun NotificationRadioButton(
|
private fun NotificationRadioButton(
|
||||||
@StringRes title: Int,
|
@StringRes titleId: Int,
|
||||||
@StringRes explanation: Int,
|
@StringRes explanationId: Int,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
@StringRes tag: Int? = null,
|
@StringRes tag: Int? = null,
|
||||||
checked: Boolean = false,
|
checked: Boolean = false,
|
||||||
@ -124,28 +125,65 @@ private fun NotificationRadioButton(
|
|||||||
Column(
|
Column(
|
||||||
modifier = Modifier.padding(horizontal = LocalDimensions.current.smallSpacing, vertical = LocalDimensions.current.xsSpacing)) {
|
modifier = Modifier.padding(horizontal = LocalDimensions.current.smallSpacing, vertical = LocalDimensions.current.xsSpacing)) {
|
||||||
Text(
|
Text(
|
||||||
stringResource(title),
|
stringResource(titleId),
|
||||||
style = LocalType.current.h8
|
style = LocalType.current.h8
|
||||||
)
|
)
|
||||||
|
|
||||||
// If this radio button is the one for slow mode notifications then substitute the app name..
|
Text(
|
||||||
if (explanation == R.string.notificationsSlowModeDescription) {
|
stringResource(explanationId),
|
||||||
val txt = Phrase.from(stringResource(explanation))
|
style = LocalType.current.small,
|
||||||
.put(APP_NAME_KEY, stringResource(R.string.app_name))
|
modifier = Modifier.padding(top = LocalDimensions.current.xxsSpacing)
|
||||||
.format().toString()
|
)
|
||||||
|
|
||||||
|
tag?.let {
|
||||||
Text(
|
Text(
|
||||||
txt,
|
stringResource(it),
|
||||||
style = LocalType.current.small,
|
modifier = Modifier.padding(top = LocalDimensions.current.xxsSpacing),
|
||||||
modifier = Modifier.padding(top = LocalDimensions.current.xxsSpacing)
|
color = LocalColors.current.primary,
|
||||||
)
|
style = LocalType.current.h9
|
||||||
} else {
|
|
||||||
// ..otherwise just pass through the text as it is.
|
|
||||||
Text(
|
|
||||||
stringResource(explanation),
|
|
||||||
style = LocalType.current.small,
|
|
||||||
modifier = Modifier.padding(top = LocalDimensions.current.xxsSpacing)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun NotificationRadioButton(
|
||||||
|
titleTxt: String,
|
||||||
|
explanationTxt: String,
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
@StringRes tag: Int? = null,
|
||||||
|
checked: Boolean = false,
|
||||||
|
onClick: () -> Unit = {}
|
||||||
|
) {
|
||||||
|
RadioButton(
|
||||||
|
onClick = onClick,
|
||||||
|
modifier = modifier,
|
||||||
|
selected = checked,
|
||||||
|
contentPadding = PaddingValues(horizontal = LocalDimensions.current.mediumSpacing, vertical = 7.dp)
|
||||||
|
) {
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.weight(1f)
|
||||||
|
.border(
|
||||||
|
LocalDimensions.current.borderStroke,
|
||||||
|
LocalColors.current.borders,
|
||||||
|
RoundedCornerShape(8.dp)
|
||||||
|
),
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
modifier = Modifier.padding(horizontal = LocalDimensions.current.smallSpacing, vertical = LocalDimensions.current.xsSpacing)) {
|
||||||
|
Text(
|
||||||
|
titleTxt,
|
||||||
|
style = LocalType.current.h8
|
||||||
|
)
|
||||||
|
|
||||||
|
Text(
|
||||||
|
explanationTxt,
|
||||||
|
style = LocalType.current.small,
|
||||||
|
modifier = Modifier.padding(top = LocalDimensions.current.xxsSpacing)
|
||||||
|
)
|
||||||
|
|
||||||
tag?.let {
|
tag?.let {
|
||||||
Text(
|
Text(
|
||||||
|
@ -46,13 +46,13 @@ class HelpSettingsFragment: CorrectedPreferenceFragment() {
|
|||||||
addPreferencesFromResource(R.xml.preferences_help)
|
addPreferencesFromResource(R.xml.preferences_help)
|
||||||
|
|
||||||
// String sub the summary text of the `export_logs` element in preferences_help.xml
|
// String sub the summary text of the `export_logs` element in preferences_help.xml
|
||||||
var exportPref = preferenceScreen.findPreference<Preference>(EXPORT_LOGS)
|
val exportPref = preferenceScreen.findPreference<Preference>(EXPORT_LOGS)
|
||||||
exportPref?.summary = Phrase.from(context, R.string.helpReportABugExportLogsDescription)
|
exportPref?.summary = Phrase.from(context, R.string.helpReportABugExportLogsDescription)
|
||||||
.put(APP_NAME_KEY, getString(R.string.app_name))
|
.put(APP_NAME_KEY, getString(R.string.app_name))
|
||||||
.format()
|
.format()
|
||||||
|
|
||||||
// String sub the summary text of the `translate_session` element in preferences_help.xml
|
// String sub the summary text of the `translate_session` element in preferences_help.xml
|
||||||
var translatePref = preferenceScreen.findPreference<Preference>(TRANSLATE)
|
val translatePref = preferenceScreen.findPreference<Preference>(TRANSLATE)
|
||||||
translatePref?.title = Phrase.from(context, R.string.helpHelpUsTranslateSession)
|
translatePref?.title = Phrase.from(context, R.string.helpHelpUsTranslateSession)
|
||||||
.put(APP_NAME_KEY, getString(R.string.app_name))
|
.put(APP_NAME_KEY, getString(R.string.app_name))
|
||||||
.format()
|
.format()
|
||||||
|
@ -3,14 +3,13 @@ package org.thoughtcrime.securesms.preferences
|
|||||||
import android.app.KeyguardManager
|
import android.app.KeyguardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceCategory
|
import androidx.preference.PreferenceCategory
|
||||||
import androidx.preference.PreferenceDataStore
|
import androidx.preference.PreferenceDataStore
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import javax.inject.Inject
|
||||||
import network.loki.messenger.BuildConfig
|
import network.loki.messenger.BuildConfig
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
@ -24,7 +23,6 @@ import org.thoughtcrime.securesms.service.KeyCachingService
|
|||||||
import org.thoughtcrime.securesms.showSessionDialog
|
import org.thoughtcrime.securesms.showSessionDialog
|
||||||
import org.thoughtcrime.securesms.util.CallNotificationBuilder.Companion.areNotificationsEnabled
|
import org.thoughtcrime.securesms.util.CallNotificationBuilder.Companion.areNotificationsEnabled
|
||||||
import org.thoughtcrime.securesms.util.IntentUtils
|
import org.thoughtcrime.securesms.util.IntentUtils
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class PrivacySettingsPreferenceFragment : ListSummaryPreferenceFragment() {
|
class PrivacySettingsPreferenceFragment : ListSummaryPreferenceFragment() {
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
android:key="pref_typing_indicators"
|
android:key="pref_typing_indicators"
|
||||||
android:title="@string/typingIndicators"
|
android:title="@string/typingIndicators"
|
||||||
android:summary="@string/typingIndicatorsDescription" />
|
android:summary="@string/typingIndicatorsDescription" />
|
||||||
|
<ImagePreference />
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@ object UpdateMessageBuilder {
|
|||||||
?.displayName(Contact.ContactContext.REGULAR)
|
?.displayName(Contact.ContactContext.REGULAR)
|
||||||
?: truncateIdForDisplay(senderId)
|
?: truncateIdForDisplay(senderId)
|
||||||
|
|
||||||
//@RequiresApi(Build.VERSION_CODES.P)
|
|
||||||
fun buildGroupUpdateMessage(context: Context, updateMessageData: UpdateMessageData, senderId: String? = null, isOutgoing: Boolean = false): CharSequence {
|
fun buildGroupUpdateMessage(context: Context, updateMessageData: UpdateMessageData, senderId: String? = null, isOutgoing: Boolean = false): CharSequence {
|
||||||
val updateData = updateMessageData.kind
|
val updateData = updateMessageData.kind
|
||||||
if (updateData == null || !isOutgoing && senderId == null) return ""
|
if (updateData == null || !isOutgoing && senderId == null) return ""
|
||||||
@ -71,7 +70,7 @@ object UpdateMessageBuilder {
|
|||||||
|
|
||||||
val newMemberCount = updateData.updatedMembers.size
|
val newMemberCount = updateData.updatedMembers.size
|
||||||
|
|
||||||
// We previously differentiated between members added by us Vs. members added by someone
|
// Note: We previously differentiated between members added by us Vs. members added by someone
|
||||||
// else via checking against `isOutgoing` - but now we use the same strings regardless.
|
// else via checking against `isOutgoing` - but now we use the same strings regardless.
|
||||||
when (newMemberCount) {
|
when (newMemberCount) {
|
||||||
0 -> {
|
0 -> {
|
||||||
@ -126,7 +125,7 @@ object UpdateMessageBuilder {
|
|||||||
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
||||||
.put(OTHER_NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(1)))
|
.put(OTHER_NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(1)))
|
||||||
.format()
|
.format()
|
||||||
else -> Phrase.from(context, R.string.groupRemovedMore)
|
else -> Phrase.from(context, R.string.groupRemovedMultiple)
|
||||||
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
||||||
.put(COUNT_KEY, updateData.updatedMembers.size - 1)
|
.put(COUNT_KEY, updateData.updatedMembers.size - 1)
|
||||||
.format()
|
.format()
|
||||||
@ -150,7 +149,7 @@ object UpdateMessageBuilder {
|
|||||||
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
||||||
.put(OTHER_NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(1)))
|
.put(OTHER_NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(1)))
|
||||||
.format()
|
.format()
|
||||||
else -> Phrase.from(context, R.string.groupRemovedMore)
|
else -> Phrase.from(context, R.string.groupRemovedMultiple)
|
||||||
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
||||||
.put(COUNT_KEY, updateData.updatedMembers.size - 1)
|
.put(COUNT_KEY, updateData.updatedMembers.size - 1)
|
||||||
.format()
|
.format()
|
||||||
@ -175,7 +174,7 @@ object UpdateMessageBuilder {
|
|||||||
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
||||||
.put(OTHER_NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(1)))
|
.put(OTHER_NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(1)))
|
||||||
.format()
|
.format()
|
||||||
else -> Phrase.from(context, R.string.groupMemberLeftMore)
|
else -> Phrase.from(context, R.string.groupMemberLeftMultiple)
|
||||||
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
.put(NAME_KEY, getSenderName(updateData.updatedMembers.elementAt(0)))
|
||||||
.put(COUNT_KEY, updateData.updatedMembers.size - 1)
|
.put(COUNT_KEY, updateData.updatedMembers.size - 1)
|
||||||
.format()
|
.format()
|
||||||
|
@ -32,8 +32,8 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="adminPromotedToAdmin"><b>{name}</b> was promoted to Admin.</string>
|
<string name="adminPromotedToAdmin"><b>{name}</b> was promoted to Admin.</string>
|
||||||
<string name="adminPromotionFailed">Admin promotion failed</string>
|
<string name="adminPromotionFailed">Admin promotion failed</string>
|
||||||
<string name="adminPromotionFailedDescription">Failed to promote {name} in {group_name}</string>
|
<string name="adminPromotionFailedDescription">Failed to promote {name} in {group_name}</string>
|
||||||
<string name="adminPromotionFailedDescriptionMany">Failed to promote {name} and {count} others in {group_name}</string>
|
<string name="adminPromotionFailedDescriptionMultiple">Failed to promote {name} and {count} others in {group_name}</string>
|
||||||
<string name="adminPromotionFailedDescriptionMore">Failed to promote {name} and {other_name} in {group_name}</string>
|
<string name="adminPromotionFailedDescriptionTwo">Failed to promote {name} and {other_name} in {group_name}</string>
|
||||||
<string name="adminPromotionSent">Admin promotion sent</string>
|
<string name="adminPromotionSent">Admin promotion sent</string>
|
||||||
<string name="adminRemove">Remove Admins</string>
|
<string name="adminRemove">Remove Admins</string>
|
||||||
<string name="adminRemoveAsAdmin">Remove as Admin</string>
|
<string name="adminRemoveAsAdmin">Remove as Admin</string>
|
||||||
@ -198,6 +198,8 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="clearMessagesNoteToSelfDescription">Are you sure you want to clear all Note to Self messages from your device?</string>
|
<string name="clearMessagesNoteToSelfDescription">Are you sure you want to clear all Note to Self messages from your device?</string>
|
||||||
<string name="close">Close</string>
|
<string name="close">Close</string>
|
||||||
<string name="closeWindow">Close Window</string>
|
<string name="closeWindow">Close Window</string>
|
||||||
|
<string name="communityBanDescription">This will ban the selected user from this Community. Are you sure you want to continue?</string>
|
||||||
|
<string name="communityBanDeleteDescription">This will ban the selected user from this Community and delete all their messages. Are you sure you want to continue?</string>
|
||||||
<string name="communityEnterUrl">Enter Community URL</string>
|
<string name="communityEnterUrl">Enter Community URL</string>
|
||||||
<string name="communityEnterUrlErrorInvalid">Invalid URL</string>
|
<string name="communityEnterUrlErrorInvalid">Invalid URL</string>
|
||||||
<string name="communityEnterUrlErrorInvalidDescription">Please check the Community URL and try again.</string>
|
<string name="communityEnterUrlErrorInvalidDescription">Please check the Community URL and try again.</string>
|
||||||
@ -363,14 +365,6 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<item quantity="one">And %1$d other has reacted %2$s to this message.</item>
|
<item quantity="one">And %1$d other has reacted %2$s to this message.</item>
|
||||||
<item quantity="other">And %1$d others have reacted %2$s to this message.</item>
|
<item quantity="other">And %1$d others have reacted %2$s to this message.</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="emojiReactsHoverNameDesktop">{name} reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsHoverTwoNameDesktop">{name} and {other_name} reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsHoverTwoNameMultipleDesktop">{name}, {other_name} and <span>{count} others</span> reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsHoverTwoNameOneDesktop">{name}, {other_name} and <span>1 other</span> reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsHoverYouDesktop">You reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsHoverYouNameDesktop">You and {name} reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsHoverYouNameMultipleDesktop">You, {name} and <span>{count} others</span> reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsHoverYouNameOneDesktop">You, {name} and <span>1 other</span> reacted with <emoji/></string>
|
|
||||||
<string name="emojiReactsNotification">Reacted to your message {emoji}</string>
|
<string name="emojiReactsNotification">Reacted to your message {emoji}</string>
|
||||||
<string name="enable">Enable</string>
|
<string name="enable">Enable</string>
|
||||||
<string name="errorConnection">Please check your internet connection and try again.</string>
|
<string name="errorConnection">Please check your internet connection and try again.</string>
|
||||||
@ -416,14 +410,14 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="groupLeaveErrorFailed">Failed to leave {group_name}</string>
|
<string name="groupLeaveErrorFailed">Failed to leave {group_name}</string>
|
||||||
<string name="groupLegacyBanner">Groups have been upgraded, create a new group to upgrade. Old group functionality will be degraded from {date}.</string>
|
<string name="groupLegacyBanner">Groups have been upgraded, create a new group to upgrade. Old group functionality will be degraded from {date}.</string>
|
||||||
<string name="groupMemberLeft"><b>{name}</b> left the group.</string>
|
<string name="groupMemberLeft"><b>{name}</b> left the group.</string>
|
||||||
<string name="groupMemberLeftMore"><b>{name}</b> and <b>{count} others</b> left the group.</string>
|
<string name="groupMemberLeftMultiple"><b>{name}</b> and <b>{count} others</b> left the group.</string>
|
||||||
<string name="groupMemberLeftTwo"><b>{name}</b> and <b>{other_name}</b> left the group.</string>
|
<string name="groupMemberLeftTwo"><b>{name}</b> and <b>{other_name}</b> left the group.</string>
|
||||||
<string name="groupMemberMoreNew"><b>{name}</b> and <b>{count} others</b> joined the group.</string>
|
<string name="groupMemberMoreNew"><b>{name}</b> and <b>{count} others</b> joined the group.</string>
|
||||||
<string name="groupMemberNew"><b>{name}</b> was invited to join the group.</string>
|
<string name="groupMemberNew"><b>{name}</b> joined the group.</string>
|
||||||
<string name="groupMemberNewHistory"><b>{name}</b> was invited to join the group. Chat history was shared.</string>
|
<string name="groupMemberNewHistory"><b>{name}</b> was invited to join the group. Chat history was shared.</string>
|
||||||
<string name="groupMemberNewHistoryMultiple"><b>{name}</b> and <b>{count} others</b> were invited to join the group. Chat history was shared.</string>
|
<string name="groupMemberNewHistoryMultiple"><b>{name}</b> and <b>{count} others</b> were invited to join the group. Chat history was shared.</string>
|
||||||
<string name="groupMemberNewHistoryTwo"><b>{name}</b> and <b>{other_name}</b> were invited to join the group. Chat history was shared.</string>
|
<string name="groupMemberNewHistoryTwo"><b>{name}</b> and <b>{other_name}</b> were invited to join the group. Chat history was shared.</string>
|
||||||
<string name="groupMemberNewMultiple"><b>{name}</b> and <b>{count} others</b> were invited to join the group.</string>
|
<string name="groupMemberNewMultiple"><b>{name}</b> and <b>{count} others</b> joined the group.</string>
|
||||||
<string name="groupMemberNewTwo"><b>{name}</b> and <b>{other_name}</b> were invited to join the group.</string>
|
<string name="groupMemberNewTwo"><b>{name}</b> and <b>{other_name}</b> were invited to join the group.</string>
|
||||||
<string name="groupMemberNewYouHistory"><b>{name}</b> was invited to join the group. Chat history was shared.</string>
|
<string name="groupMemberNewYouHistory"><b>{name}</b> was invited to join the group. Chat history was shared.</string>
|
||||||
<string name="groupMemberNewYouHistoryMultiple"><b>You</b> and <b>{count} others</b> were invited to join the group. Chat history was shared.</string>
|
<string name="groupMemberNewYouHistoryMultiple"><b>You</b> and <b>{count} others</b> were invited to join the group. Chat history was shared.</string>
|
||||||
@ -449,14 +443,15 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="groupPromotedYouMultiple"><b>You</b> and <b>{count} others</b> were promoted to Admin.</string>
|
<string name="groupPromotedYouMultiple"><b>You</b> and <b>{count} others</b> were promoted to Admin.</string>
|
||||||
<string name="groupPromotedYouTwo"><b>You</b> and <b>{name}</b> were promoted to Admin.</string>
|
<string name="groupPromotedYouTwo"><b>You</b> and <b>{name}</b> were promoted to Admin.</string>
|
||||||
<string name="groupRemoveDescription">Would you like to remove <b>{name}</b> from <b>{group_name}</b>?</string>
|
<string name="groupRemoveDescription">Would you like to remove <b>{name}</b> from <b>{group_name}</b>?</string>
|
||||||
|
<string name="groupRemoveDescriptionTwo">Would you like to remove <b>{name}</b> and <b>{other_name}</b> from <b>{group_name}</b>?</string>
|
||||||
<string name="groupRemoveMessages">Remove user and their messages</string>
|
<string name="groupRemoveMessages">Remove user and their messages</string>
|
||||||
<string name="groupRemoveMoreDescription">Would you like to remove <b>{name}</b> and <b>{count} others</b> from <b>{group_name}</b>?</string>
|
<string name="groupRemoveDescriptionMultiple">Would you like to remove <b>{name}</b> and <b>{count} others</b> from <b>{group_name}</b>?</string>
|
||||||
<string name="groupRemoveTwoDescription">Would you like to remove <b>{name}</b> and <b>{other_name}</b> from <b>{group_name}</b>?</string>
|
<string name="groupRemoveTwoDescription">Would you like to remove <b>{name}</b> and <b>{other_name}</b> from <b>{group_name}</b>?</string>
|
||||||
<string name="groupRemoveUserOnly">Remove user </string>
|
<string name="groupRemoveUserOnly">Remove user </string>
|
||||||
<string name="groupRemoveUsersMessages">Remove users and their messages</string>
|
<string name="groupRemoveUsersMessages">Remove users and their messages</string>
|
||||||
<string name="groupRemoveUsersOnly">Remove users</string>
|
<string name="groupRemoveUsersOnly">Remove users</string>
|
||||||
<string name="groupRemoved"><b>{name}</b> was removed from the group.</string>
|
<string name="groupRemoved"><b>{name}</b> was removed from the group.</string>
|
||||||
<string name="groupRemovedMore"><b>{name}</b> and <b>{count} others</b> were removed from the group.</string>
|
<string name="groupRemovedMultiple"><b>{name}</b> and <b>{count} others</b> were removed from the group.</string>
|
||||||
<string name="groupRemovedTwo"><b>{name}</b> and <b>{other_name}</b> were removed from the group.</string>
|
<string name="groupRemovedTwo"><b>{name}</b> and <b>{other_name}</b> were removed from the group.</string>
|
||||||
<string name="groupRemovedYou">You were removed from <b>{group_name}</b>.</string>
|
<string name="groupRemovedYou">You were removed from <b>{group_name}</b>.</string>
|
||||||
<string name="groupRemovedYouMultiple"><b>You</b> and <b>{count} others</b> were removed from the group.</string>
|
<string name="groupRemovedYouMultiple"><b>You</b> and <b>{count} others</b> were removed from the group.</string>
|
||||||
@ -501,7 +496,6 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="loading">Loading...</string>
|
<string name="loading">Loading...</string>
|
||||||
<string name="lockApp">Lock App</string>
|
<string name="lockApp">Lock App</string>
|
||||||
<string name="lockAppDescription">Require fingerprint, PIN, pattern or password to unlock {app_name}.</string>
|
<string name="lockAppDescription">Require fingerprint, PIN, pattern or password to unlock {app_name}.</string>
|
||||||
<string name="lockAppDescriptionIos">Require Touch ID, Face ID or your passcode to unlock {app_name}.</string>
|
|
||||||
<string name="lockAppEnablePasscode">You must enable a passcode in your iOS Settings in order to use Screen Lock.</string>
|
<string name="lockAppEnablePasscode">You must enable a passcode in your iOS Settings in order to use Screen Lock.</string>
|
||||||
<string name="lockAppLocked">{app_name} is locked</string>
|
<string name="lockAppLocked">{app_name} is locked</string>
|
||||||
<string name="lockAppQuickResponse">Quick response unavailable when {app_name} is locked!</string>
|
<string name="lockAppQuickResponse">Quick response unavailable when {app_name} is locked!</string>
|
||||||
@ -526,7 +520,7 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="membersInviteShareMessageHistory">Share message history</string>
|
<string name="membersInviteShareMessageHistory">Share message history</string>
|
||||||
<string name="membersInviteShareMoreDescription">Would you like to share group message history with <b>{name}</b> and <b>{count} others</b>?</string>
|
<string name="membersInviteShareMoreDescription">Would you like to share group message history with <b>{name}</b> and <b>{count} others</b>?</string>
|
||||||
<string name="membersInviteShareNewMessagesOnly">Share new messages only</string>
|
<string name="membersInviteShareNewMessagesOnly">Share new messages only</string>
|
||||||
<string name="membersInviteShareTwoDescription">Would you like to share group message history with <b>{name}</b> and <b>{other_name}</b>?</string>
|
<string name="membersInviteShareDescriptionTwo">Would you like to share group message history with <b>{name}</b> and <b>{other_name}</b>?</string>
|
||||||
<string name="membersInviteTitle">Invite</string>
|
<string name="membersInviteTitle">Invite</string>
|
||||||
<string name="message">Message</string>
|
<string name="message">Message</string>
|
||||||
<string name="messageEmpty">This message is empty.</string>
|
<string name="messageEmpty">This message is empty.</string>
|
||||||
@ -592,7 +586,6 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="notificationsContentShowNoNameOrContent">No Name or Content</string>
|
<string name="notificationsContentShowNoNameOrContent">No Name or Content</string>
|
||||||
<string name="notificationsFastMode">Fast Mode</string>
|
<string name="notificationsFastMode">Fast Mode</string>
|
||||||
<string name="notificationsFastModeDescription">You\'ll be notified of new messages reliably and immediately using Google\'s notification Servers.</string>
|
<string name="notificationsFastModeDescription">You\'ll be notified of new messages reliably and immediately using Google\'s notification Servers.</string>
|
||||||
<string name="notificationsFastModeDescriptionIos">You\'ll be notified of new messages reliably and immediately using Apple\'s notification Servers.</string>
|
|
||||||
<string name="notificationsGoToDevice">Go to device notification settings</string>
|
<string name="notificationsGoToDevice">Go to device notification settings</string>
|
||||||
<string name="notificationsIosGroup">{name} to {conversation_name}</string>
|
<string name="notificationsIosGroup">{name} to {conversation_name}</string>
|
||||||
<string name="notificationsIosRestart">You may have received messages while your {device} was restarting.</string>
|
<string name="notificationsIosRestart">You may have received messages while your {device} was restarting.</string>
|
||||||
@ -759,6 +752,7 @@ NOTE: Strings with blank lines have manually been replaced with '\n\n' - this wi
|
|||||||
<string name="sessionHelp">Help</string>
|
<string name="sessionHelp">Help</string>
|
||||||
<string name="sessionInviteAFriend">Invite a Friend</string>
|
<string name="sessionInviteAFriend">Invite a Friend</string>
|
||||||
<string name="sessionMessageRequests">Message Requests</string>
|
<string name="sessionMessageRequests">Message Requests</string>
|
||||||
|
<string name="sessionNetworkSent">{token_name_long} ({<span>{token_name_short}</span>)</string>
|
||||||
<string name="sessionNotifications">Notifications</string>
|
<string name="sessionNotifications">Notifications</string>
|
||||||
<string name="sessionPermissions">Permissions</string>
|
<string name="sessionPermissions">Permissions</string>
|
||||||
<string name="sessionPrivacy">Privacy</string>
|
<string name="sessionPrivacy">Privacy</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user