Copione merged onto master

master
blallo 2020-08-20 00:00:27 +02:00
commit 925a020db8
27 changed files with 479 additions and 110 deletions

View File

@ -80,8 +80,8 @@ protobuf {
}
}
def canonicalVersionCode = 691
def canonicalVersionName = "4.69.1"
def canonicalVersionCode = 694
def canonicalVersionName = "4.69.4"
def postFixSize = 10
def abiPostFix = ['universal' : 0,
@ -358,11 +358,11 @@ dependencies {
testImplementation 'junit:junit:4.12'
testImplementation 'org.assertj:assertj-core:3.11.1'
testImplementation 'org.mockito:mockito-core:1.9.5'
testImplementation 'org.powermock:powermock-api-mockito:1.6.5'
testImplementation 'org.powermock:powermock-module-junit4:1.6.5'
testImplementation 'org.powermock:powermock-module-junit4-rule:1.6.5'
testImplementation 'org.powermock:powermock-classloading-xstream:1.6.5'
testImplementation 'org.mockito:mockito-core:2.8.9'
testImplementation 'org.powermock:powermock-api-mockito2:1.7.4'
testImplementation 'org.powermock:powermock-module-junit4:1.7.4'
testImplementation 'org.powermock:powermock-module-junit4-rule:1.7.4'
testImplementation 'org.powermock:powermock-classloading-xstream:1.7.4'
testImplementation 'androidx.test:core:1.2.0'
testImplementation ('org.robolectric:robolectric:4.2') {
@ -455,3 +455,13 @@ def getLastCommitTimestamp() {
return os.toString() + "000"
}
}
tasks.withType(Test) {
testLogging {
events "failed"
exceptionFormat "full"
showCauses true
showExceptions true
showStackTraces true
}
}

View File

@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import android.widget.ImageView;
@ -36,9 +35,9 @@ public final class ConversationScrollToView extends FrameLayout {
if (attrs != null) {
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.ConversationScrollToView);
Drawable src = array.getDrawable(R.styleable.ConversationScrollToView_cstv_scroll_button_src);
int srcId = array.getResourceId(R.styleable.ConversationScrollToView_cstv_scroll_button_src, 0);
scrollButton.setImageDrawable(src);
scrollButton.setImageResource(srcId);
array.recycle();
}

View File

@ -1902,7 +1902,12 @@ public class ConversationActivity extends PassphraseRequiredActivity
private void initializeMentionsViewModel() {
MentionsPickerViewModel mentionsViewModel = ViewModelProviders.of(this, new MentionsPickerViewModel.Factory()).get(MentionsPickerViewModel.class);
recipient.observe(this, mentionsViewModel::onRecipientChange);
recipient.observe(this, r -> {
if (r.isPushV2Group() && !mentionsSuggestions.resolved()) {
mentionsSuggestions.get();
}
mentionsViewModel.onRecipientChange(r);
});
composeText.setMentionQueryChangedListener(query -> {
if (getRecipient().isPushV2Group()) {
@ -2361,6 +2366,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
attachmentManager.cleanup();
updateLinkPreviewState();
linkPreviewViewModel.onSend();
}
private void sendMessage() {

View File

@ -15,6 +15,8 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.groups.GroupId;
import org.thoughtcrime.securesms.groups.LiveGroup;
import org.thoughtcrime.securesms.groups.ui.GroupMemberEntry.FullMember;
import org.thoughtcrime.securesms.megaphone.MegaphoneRepository;
import org.thoughtcrime.securesms.megaphone.Megaphones;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.MappingModel;
import org.thoughtcrime.securesms.util.SingleLiveEvent;
@ -30,8 +32,11 @@ public class MentionsPickerViewModel extends ViewModel {
private final MutableLiveData<LiveGroup> group;
private final MutableLiveData<Query> liveQuery;
private final MutableLiveData<Boolean> isShowing;
private final MegaphoneRepository megaphoneRepository;
MentionsPickerViewModel(@NonNull MentionsPickerRepository mentionsPickerRepository, @NonNull MegaphoneRepository megaphoneRepository) {
this.megaphoneRepository = megaphoneRepository;
MentionsPickerViewModel(@NonNull MentionsPickerRepository mentionsPickerRepository) {
group = new MutableLiveData<>();
liveQuery = new MutableLiveData<>(Query.NONE);
selectedRecipient = new SingleLiveEvent<>();
@ -50,6 +55,7 @@ public class MentionsPickerViewModel extends ViewModel {
void onSelectionChange(@NonNull Recipient recipient) {
selectedRecipient.setValue(recipient);
megaphoneRepository.markFinished(Megaphones.Event.MENTIONS);
}
void setIsShowing(boolean isShowing) {
@ -116,7 +122,8 @@ public class MentionsPickerViewModel extends ViewModel {
@Override
public @NonNull <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
//noinspection ConstantConditions
return modelClass.cast(new MentionsPickerViewModel(new MentionsPickerRepository(ApplicationDependencies.getApplication())));
return modelClass.cast(new MentionsPickerViewModel(new MentionsPickerRepository(ApplicationDependencies.getApplication()),
ApplicationDependencies.getMegaphoneRepository()));
}
}
}

View File

@ -90,7 +90,11 @@ public class LinkPreviewViewModel extends ViewModel {
Util.runOnMain(() -> {
if (!userCanceled) {
if (lp.isPresent()) {
linkPreviewState.setValue(LinkPreviewState.forPreview(lp.get()));
if (activeUrl != null && activeUrl.equals(lp.get().getUrl())) {
linkPreviewState.setValue(LinkPreviewState.forPreview(lp.get()));
} else {
linkPreviewState.setValue(LinkPreviewState.forNoLinks());
}
} else {
linkPreviewState.setValue(LinkPreviewState.forLinksWithNoPreview());
}
@ -114,6 +118,19 @@ public class LinkPreviewViewModel extends ViewModel {
linkPreviewState.setValue(LinkPreviewState.forNoLinks());
}
public void onSend() {
if (activeRequest != null) {
activeRequest.cancel();
activeRequest = null;
}
userCanceled = false;
activeUrl = null;
debouncer.clear();
linkPreviewState.setValue(LinkPreviewState.forNoLinks());
}
public void onEnabled() {
userCanceled = false;
}

View File

@ -101,6 +101,11 @@ public class MegaphoneRepository {
@AnyThread
public void markFinished(@NonNull Event event) {
executor.execute(() -> {
MegaphoneRecord record = databaseCache.get(event);
if (record != null && record.isFinished()) {
return;
}
database.markFinished(event);
resetDatabaseCache();
});

View File

@ -211,7 +211,7 @@ public final class Megaphones {
}
private static boolean shouldShowMentionsMegaphone() {
return FeatureFlags.mentions() && FeatureFlags.groupsV2();
return FeatureFlags.mentions();
}
private static boolean shouldShowLinkPreviewsMegaphone(@NonNull Context context) {

View File

@ -34,6 +34,7 @@ import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
@ -245,19 +246,31 @@ public class DefaultMessageNotifier implements MessageNotifier {
long threadId,
boolean signal)
{
boolean isVisible = visibleThread == threadId;
boolean isVisible = visibleThread == threadId;
Recipient recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadId);
ThreadDatabase threads = DatabaseFactory.getThreadDatabase(context);
if (shouldNotify(context, recipient, threadId)) {
if (isVisible) {
sendInThreadNotification(context, recipient);
} else {
updateNotification(context, threadId, signal, 0);
}
}
}
private boolean shouldNotify(@NonNull Context context, @Nullable Recipient recipient, long threadId) {
if (!TextSecurePreferences.isNotificationsEnabled(context)) {
return;
return false;
}
if (isVisible) {
sendInThreadNotification(context, threads.getRecipientForThreadId(threadId));
} else {
updateNotification(context, threadId, signal, 0);
if (recipient == null || !recipient.isMuted()) {
return true;
}
return FeatureFlags.mentions() &&
recipient.isPushV2Group() &&
recipient.getMentionSetting() == RecipientDatabase.MentionSetting.ALWAYS_NOTIFY &&
DatabaseFactory.getMmsDatabase(context).getUnreadMentionCount(threadId) > 0;
}
@Override

View File

@ -17,7 +17,6 @@ import org.thoughtcrime.securesms.groups.GroupChangeBusyException;
import org.thoughtcrime.securesms.groups.GroupChangeException;
import org.thoughtcrime.securesms.groups.GroupChangeFailedException;
import org.thoughtcrime.securesms.groups.GroupManager;
import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceBlockedUpdateJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceMessageRequestResponseJob;
import org.thoughtcrime.securesms.jobs.RotateProfileKeyJob;
@ -201,6 +200,20 @@ public class RecipientUtil {
return isMessageRequestAccepted(context, threadId, threadRecipient);
}
/**
* Like {@link #isMessageRequestAccepted(Context, long)} but with fewer checks around messages so it
* is more likely to return false.
*/
@WorkerThread
public static boolean isCallRequestAccepted(@NonNull Context context, @Nullable Recipient threadRecipient) {
if (threadRecipient == null) {
return true;
}
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(threadRecipient);
return isCallRequestAccepted(context, threadId, threadRecipient);
}
/**
* @return True if a conversation existed before we enabled message requests, otherwise false.
*/
@ -244,6 +257,14 @@ public class RecipientUtil {
isPreMessageRequestThread(context, threadId);
}
@WorkerThread
private static boolean isCallRequestAccepted(@NonNull Context context, long threadId, @NonNull Recipient threadRecipient) {
return threadRecipient.isProfileSharing() ||
threadRecipient.isSystemContact() ||
hasSentMessageInThread(context, threadId) ||
isPreMessageRequestThread(context, threadId);
}
@WorkerThread
private static boolean hasSentMessageInThread(@NonNull Context context, long threadId) {
return DatabaseFactory.getMmsSmsDatabase(context).getOutgoingSecureConversationCount(threadId) != 0;

View File

@ -17,8 +17,6 @@ import android.util.Pair;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.protobuf.ByteString;
import org.greenrobot.eventbus.EventBus;
import org.signal.ringrtc.CallException;
import org.signal.ringrtc.CallId;
@ -44,7 +42,6 @@ import org.thoughtcrime.securesms.ringrtc.CameraEventListener;
import org.thoughtcrime.securesms.ringrtc.CameraState;
import org.thoughtcrime.securesms.ringrtc.IceCandidateParcel;
import org.thoughtcrime.securesms.ringrtc.RemotePeer;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.FutureTaskListener;
import org.thoughtcrime.securesms.util.ListenableFutureTask;
import org.thoughtcrime.securesms.util.ServiceUtil;
@ -76,7 +73,6 @@ import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserExce
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.Callable;
@ -410,7 +406,7 @@ public class WebRtcCallService extends Service implements CallManager.Observer,
return;
}
if (remotePeer.getRecipient() == null || !RecipientUtil.isMessageRequestAccepted(getApplicationContext(), remotePeer.getRecipient())) {
if (remotePeer.getRecipient() == null || !RecipientUtil.isCallRequestAccepted(getApplicationContext(), remotePeer.getRecipient())) {
Log.i(TAG, "handleReceivedOffer(): Caller is untrusted.");
intent.putExtra(EXTRA_BROADCAST, true);
intent.putExtra(EXTRA_HANGUP_TYPE, HangupMessage.Type.NEED_PERMISSION.getCode());

View File

@ -32,6 +32,7 @@ import org.thoughtcrime.securesms.attachments.Attachment;
import org.thoughtcrime.securesms.attachments.AttachmentId;
import org.thoughtcrime.securesms.attachments.DatabaseAttachment;
import org.thoughtcrime.securesms.contacts.sync.DirectoryHelper;
import org.thoughtcrime.securesms.contactshare.Contact;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MessagingDatabase;
@ -61,6 +62,7 @@ import org.thoughtcrime.securesms.jobs.ReactionSendJob;
import org.thoughtcrime.securesms.jobs.RemoteDeleteSendJob;
import org.thoughtcrime.securesms.jobs.ResumableUploadSpecJob;
import org.thoughtcrime.securesms.jobs.SmsSendJob;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
@ -70,6 +72,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.util.ParcelUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.libsignal.util.guava.Preconditions;
import java.io.IOException;
@ -77,6 +80,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class MessageSender {
@ -469,12 +473,27 @@ public class MessageSender {
MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context);
OutgoingMediaMessage message = mmsDatabase.getOutgoingMessage(messageId);
SyncMessageId syncId = new SyncMessageId(Recipient.self().getId(), message.getSentTimeMillis());
List<Attachment> attachments = new LinkedList<>();
List<AttachmentCompressionJob> compressionJobs = Stream.of(message.getAttachments())
attachments.addAll(message.getAttachments());
attachments.addAll(Stream.of(message.getLinkPreviews())
.map(LinkPreview::getThumbnail)
.filter(Optional::isPresent)
.map(Optional::get)
.toList());
attachments.addAll(Stream.of(message.getSharedContacts())
.map(Contact::getAvatar).withoutNulls()
.map(Contact.Avatar::getAttachment).withoutNulls()
.toList());
List<AttachmentCompressionJob> compressionJobs = Stream.of(attachments)
.map(a -> AttachmentCompressionJob.fromAttachment((DatabaseAttachment) a, false, -1))
.toList();
List<AttachmentMarkUploadedJob> fakeUploadJobs = Stream.of(message.getAttachments())
List<AttachmentMarkUploadedJob> fakeUploadJobs = Stream.of(attachments)
.map(a -> new AttachmentMarkUploadedJob(messageId, ((DatabaseAttachment) a).getAttachmentId()))
.toList();

View File

@ -233,7 +233,7 @@ public final class FeatureFlags {
/** Whether or not we allow mentions send support in groups. */
public static boolean mentions() {
return getBoolean(MENTIONS, false);
return groupsV2() && getBoolean(MENTIONS, false);
}
/** Whether or not to use the UUID in verification codes. */

View File

@ -409,7 +409,10 @@
<string name="GroupManagement_invite_multiple_users">No podeu afegir aquests usuaris automàticament a aquest grup.\n\nHan estat convidats a afegir-s\'hi i no veuran cap missatge del grup fins que ho acceptin.</string>
<!--LinkPreviewsMegaphone-->
<string name="LinkPreviewsMegaphone_disable">Desactiva</string>
<string name="LinkPreviewsMegaphone_preview_any_link">Previsualitza qualsevol enllaç</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Ara podeu recuperar les previsualitzacions denllaços directament des de qualsevol lloc web per als missatges que envieu.</string>
<!--LinkPreviewView-->
<string name="LinkPreviewView_no_link_preview_available">No hi ha previsualització d\'enllaç disponible.</string>
<!--PendingMembersActivity-->
<string name="PendingMemberInvitesActivity_pending_group_invites">Invitacions de grup pendents</string>
<string name="PendingMembersActivity_people_you_invited">Persones que heu convidat</string>
@ -549,7 +552,10 @@
<item quantity="other">Voleu rebutjar %2$d invitacions enviades per %1$s?</item>
</plurals>
<!--GroupJoinBottomSheetDialogFragment-->
<string name="GroupJoinBottomSheetDialogFragment_you_are_already_a_member">Ja en sou membre.</string>
<!--GroupJoinUpdateRequiredBottomSheetDialogFragment-->
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal_to_use_group_links">Actualitzeu el Signal per usar els enllaços de grup</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message">La versió del Signal que useu no admet enllaços de grup compartibles. Actualitzeu a la versió més recent per afegir-vos a aquest grup per l\'enllaç.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal">Actualitza el Signal</string>
<!--CropImageActivity-->
<string name="CropImageActivity_group_avatar">Avatar del grup</string>
@ -1594,6 +1600,8 @@ S\'ha rebut un missatge d\'intercanvi de claus per a una versió del protocol no
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Fes servir el Signal per a tots els missatges multimèdia d\'entrada</string>
<string name="preferences__pref_enter_sends_title">S\'envia amb la tecla de Retorn</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">En prémer Retorn s\'envia el missatge de text</string>
<string name="preferences__generate_link_previews">Genera previsualitzacions d\'enllaç</string>
<string name="preferences__retrieve_link_previews_from_websites_for_messages">Recupereu les previsualitzacions denllaços directament des de qualsevol lloc web per als missatges que envieu.</string>
<string name="preferences__choose_identity">Trieu la identitat a usar</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Trieu els contactes de la llista de contactes.</string>
<string name="preferences__change_passphrase">Canvia la contrasenya</string>
@ -1744,6 +1752,8 @@ S\'ha rebut un missatge d\'intercanvi de claus per a una versió del protocol no
<string name="conversation_insecure__invite">Convida</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Suprimeix la selecció</string>
<string name="conversation_list_batch__menu_pin_selected">Fixa la selecció</string>
<string name="conversation_list_batch__menu_unpin_selected">No fixis la selecció</string>
<string name="conversation_list_batch__menu_select_all">Selecciona-ho tot</string>
<string name="conversation_list_batch_archive__menu_archive_selected">Arxiva la selecció</string>
<string name="conversation_list_batch_unarchive__menu_unarchive_selected">No arxivis la selecció</string>
@ -1753,7 +1763,9 @@ S\'ha rebut un missatge d\'intercanvi de claus per a una versió del protocol no
<!--conversation_list-->
<string name="conversation_list_settings_shortcut">Drecera de configuració</string>
<string name="conversation_list_search_description">Cerca</string>
<string name="conversation_list__pinned">Fixat</string>
<string name="conversation_list__chats">Xats</string>
<string name="conversation_list__you_can_only_pin_up_to_d_chats">Només podeu fixar fins a %1$d xats.</string>
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Foto del contacte</string>
<string name="conversation_list_item_view__archived">Arxivat</string>
@ -1948,6 +1960,8 @@ S\'ha rebut un missatge d\'intercanvi de claus per a una versió del protocol no
<string name="KbsMegaphone__well_remind_you_later_creating_a_pin">Us ho recordarem més tard. Crear un PIN serà obligatori d\'aquí a %1$d dies.</string>
<string name="KbsMegaphone__well_remind_you_later_confirming_your_pin">Us ho recordarem més tard. Confirmar el PIN serà obligatori d\'aquí a %1$d dies.</string>
<!--Mention Megaphone-->
<string name="MentionsMegaphone__introducing_mentions">S\'introdueixen les @Mencions</string>
<string name="MentionsMegaphone__get_someones_attention_in_a_group_by_typing">Capteu l\'atenció d\'algú en un grup nou escrivint @.</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Icona de trànsit</string>
<string name="ConversationListFragment_loading">Es carrega…</string>

View File

@ -409,7 +409,10 @@
<string name="GroupManagement_invite_multiple_users">Vi ne povas aŭtomate aldoni tiujn uzantoj al tiu grupo.\n\nIli estis invititaj kaj ne vidos iujn grupmesaĝojn, antaŭ ol ili akceptas la inviton.</string>
<!--LinkPreviewsMegaphone-->
<string name="LinkPreviewsMegaphone_disable">Malŝalti</string>
<string name="LinkPreviewsMegaphone_preview_any_link">Antaŭrigardi ajnan ligilon</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Vi nun povas rekte antaŭrigardi ligilojn de iu retejo por mesaĝoj, kiujn vi sendas.</string>
<!--LinkPreviewView-->
<string name="LinkPreviewView_no_link_preview_available">Neniu antaŭrigardo de ligilo disponeblas</string>
<!--PendingMembersActivity-->
<string name="PendingMemberInvitesActivity_pending_group_invites">Pritraktotaj grupinvitoj</string>
<string name="PendingMembersActivity_people_you_invited">Homoj, kiujn vi invitis</string>
@ -549,7 +552,10 @@
<item quantity="other">Ĉu vi volas senvalidigi %2$d invitojn senditajn de %1$s?</item>
</plurals>
<!--GroupJoinBottomSheetDialogFragment-->
<string name="GroupJoinBottomSheetDialogFragment_you_are_already_a_member">Vi jam estas ano</string>
<!--GroupJoinUpdateRequiredBottomSheetDialogFragment-->
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal_to_use_group_links">Ĝisdatigu Signal-on por uzi grupligilojn</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message">La versio de Signal, kiun vi uzas ne subtenas kunhaveblajn grupligilojn. Ĝisdatigu al lasta versio por anigi tiun grupon per ligilo.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal">Ĝisdatigi Signal-on</string>
<!--CropImageActivity-->
<string name="CropImageActivity_group_avatar">Bildo de la grupo</string>
@ -1599,6 +1605,8 @@ Ricevis mesaĝon pri interŝanĝo de ŝlosiloj por nevalida protokola versio.
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Uzi Signal-on por ĉiuj envenaj aŭdvidaj mesaĝoj</string>
<string name="preferences__pref_enter_sends_title">La Eniga klavo kaŭzas sendon</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Premado de la Eniga klavo sendos mesaĝojn</string>
<string name="preferences__generate_link_previews">Krei antaŭrigardojn de ligilo</string>
<string name="preferences__retrieve_link_previews_from_websites_for_messages">Havi antaŭrigardojn de ligilo rekte de la retejoj por mesaĝoj, kiujn vi sendas.</string>
<string name="preferences__choose_identity">Elekti identecon</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Elektu vian propran kontakton el la kontaktlisto.</string>
<string name="preferences__change_passphrase">Ŝanĝi pasfrazon</string>
@ -1749,6 +1757,8 @@ Ricevis mesaĝon pri interŝanĝo de ŝlosiloj por nevalida protokola versio.
<string name="conversation_insecure__invite">Inviti</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Forviŝi elektitajn</string>
<string name="conversation_list_batch__menu_pin_selected">Alpingli elektitajn</string>
<string name="conversation_list_batch__menu_unpin_selected">Depingli elektitajn</string>
<string name="conversation_list_batch__menu_select_all">Elekti ĉiujn</string>
<string name="conversation_list_batch_archive__menu_archive_selected">Enarĥivigi elektitajn</string>
<string name="conversation_list_batch_unarchive__menu_unarchive_selected">Elarĥivigi elektitajn</string>
@ -1758,7 +1768,9 @@ Ricevis mesaĝon pri interŝanĝo de ŝlosiloj por nevalida protokola versio.
<!--conversation_list-->
<string name="conversation_list_settings_shortcut">Ŝparvojo al agordoj</string>
<string name="conversation_list_search_description">Serĉi</string>
<string name="conversation_list__pinned">Alpinglitaj</string>
<string name="conversation_list__chats">Interparoloj</string>
<string name="conversation_list__you_can_only_pin_up_to_d_chats">Vi povas alpingli nur ĝis %1$d interparolojn</string>
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Kontakta bildo</string>
<string name="conversation_list_item_view__archived">Enarĥivigitaj</string>
@ -1953,6 +1965,8 @@ Ricevis mesaĝon pri interŝanĝo de ŝlosiloj por nevalida protokola versio.
<string name="KbsMegaphone__well_remind_you_later_creating_a_pin">Ni memorigos vin poste. Kreado de PIN nepros post %1$d tagoj.</string>
<string name="KbsMegaphone__well_remind_you_later_confirming_your_pin">Ni memorigos vin poste. Konfirmado de PIN nepros post %1$d tagoj.</string>
<!--Mention Megaphone-->
<string name="MentionsMegaphone__introducing_mentions">Jen la @mencioj</string>
<string name="MentionsMegaphone__get_someones_attention_in_a_group_by_typing">Kaptu ies atenton en novtipa grupo per tajpado de @</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Piktogramo pri sendometodo</string>
<string name="ConversationListFragment_loading">Ŝargado…</string>

View File

@ -101,7 +101,7 @@
<string name="BucketedThreadMedia_Medium">Mediana</string>
<string name="BucketedThreadMedia_Small">Pequeña</string>
<!--CallScreen-->
<string name="CallScreen_Incoming_call">Llamada entrante</string>
<string name="CallScreen_Incoming_call">Recibiendo llamada</string>
<!--CameraActivity-->
<string name="CameraActivity_image_save_failure">Fallo al guardar la imagen.</string>
<!--CameraXFragment-->
@ -652,7 +652,7 @@
<!--NotificationBarManager-->
<string name="NotificationBarManager_signal_call_in_progress">Llamada de Signal en curso</string>
<string name="NotificationBarManager__establishing_signal_call">Estableciendo llamada de Signal</string>
<string name="NotificationBarManager__incoming_signal_call">Llamada de Signal entrante</string>
<string name="NotificationBarManager__incoming_signal_call">Recibiendo llamada de Signal</string>
<string name="NotificationBarManager__deny_call">Denegar llamada</string>
<string name="NotificationBarManager__answer_call">Atender llamada</string>
<string name="NotificationBarManager__end_call">Finalizar llamada</string>
@ -917,7 +917,7 @@
<!--WebRtcCallActivity-->
<string name="WebRtcCallActivity__tap_here_to_turn_on_your_video">Toca aquí para activar tu cámara</string>
<string name="WebRtcCallActivity__to_call_s_signal_needs_access_to_your_camera">Signal necesita acceder a tu cámara para llamar a %1$s.</string>
<string name="WebRtcCallActivity__signal_s">%1$s de Signal</string>
<string name="WebRtcCallActivity__signal_s">Signal %1$s</string>
<string name="WebRtcCallActivity__calling">Llamando …</string>
<!--WebRtcCallView-->
<string name="WebRtcCallView__signal_voice_call">Llamada de Signal …</string>
@ -1602,8 +1602,8 @@ Se recibió un mensaje de intercambio de claves para una versión no válida del
<string name="preferences__sms_mms">SMS y MMS</string>
<string name="preferences__pref_all_sms_title">Recibir todos los SMS</string>
<string name="preferences__pref_all_mms_title">Recibir todos los MMS</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_text_messages">Usar Signal para todos los mensajes de texto entrantes</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Usar Signal para todos los mensajes multimedia entrantes</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_text_messages">Usar Signal para recibir todos los mensajes de texto</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Usar Signal para recibir todos los mensajes multimedia</string>
<string name="preferences__pref_enter_sends_title">Enviar al tocar «Intro»</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Los mensajes se enviarán al pulsar la tecla Intro.</string>
<string name="preferences__generate_link_previews">Generar previsualización de enlaces</string>

View File

@ -409,7 +409,10 @@
<string name="GroupManagement_invite_multiple_users">Neid kasutajaid ei saa sinu poolt automaatselt gruppi lisada.\n\nNad on kutsutud grupiga ühinema ja ei näe grupi sõnumeid enne kui on ühinemisega nõustunud.</string>
<!--LinkPreviewsMegaphone-->
<string name="LinkPreviewsMegaphone_disable">Keela</string>
<string name="LinkPreviewsMegaphone_preview_any_link">Iga lingi eelvaade</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Sa saad nüüd hankida lingieelvaated otse mistahes saidilt, mida sõnumina saadad.</string>
<!--LinkPreviewView-->
<string name="LinkPreviewView_no_link_preview_available">Lingieelvaade puudub</string>
<!--PendingMembersActivity-->
<string name="PendingMemberInvitesActivity_pending_group_invites">Ootel grupikutsed</string>
<string name="PendingMembersActivity_people_you_invited">Sinu kutsutud inimesed</string>
@ -549,7 +552,11 @@
<item quantity="other">Kas sa soovid tühistada %2$d %1$s poolt saadetud kutset?</item>
</plurals>
<!--GroupJoinBottomSheetDialogFragment-->
<string name="GroupJoinBottomSheetDialogFragment_you_are_already_a_member">Sa oled juba liige</string>
<!--GroupJoinUpdateRequiredBottomSheetDialogFragment-->
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal_to_use_group_links">Uuenda Signal-it grupilinkide kasutamiseks</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message">See Signali versioon, mida kasutad, ei toeta jagatavaid grupilinke.
Uuenda viimasele versioonile, et selle grupiga lingi abil liituda.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal">Uuenda Signal-it</string>
<!--CropImageActivity-->
<string name="CropImageActivity_group_avatar">Grupi avatar</string>
@ -1600,6 +1607,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Kasuta Signalit kõigi sissetulevate multimeediasõnumite jaoks</string>
<string name="preferences__pref_enter_sends_title">Sisestusklahv saadab</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Sisestusklahvi vajutamine saadab tekstsõnumeid</string>
<string name="preferences__generate_link_previews">Genereeri lingieelvaateid</string>
<string name="preferences__retrieve_link_previews_from_websites_for_messages">Hangib lingieelvaated otse saitidelt, mida sõnumina saadad.</string>
<string name="preferences__choose_identity">Vali identiteet</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Vali oma kontaktüksus kontaktnimekirjast.</string>
<string name="preferences__change_passphrase">Muuda salasõna</string>
@ -1750,6 +1759,8 @@
<string name="conversation_insecure__invite">Kutsu</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Kustuta valitud</string>
<string name="conversation_list_batch__menu_pin_selected">Kinnita valitud</string>
<string name="conversation_list_batch__menu_unpin_selected">Eemalda kinnitus valitutelt</string>
<string name="conversation_list_batch__menu_select_all">Vali kõik</string>
<string name="conversation_list_batch_archive__menu_archive_selected">Arhiveeri valitud</string>
<string name="conversation_list_batch_unarchive__menu_unarchive_selected">Võta valitud arhiivist välja</string>
@ -1759,7 +1770,9 @@
<!--conversation_list-->
<string name="conversation_list_settings_shortcut">Seadete otsetee</string>
<string name="conversation_list_search_description">Otsi</string>
<string name="conversation_list__pinned">Kinnitatud</string>
<string name="conversation_list__chats">Vestlused</string>
<string name="conversation_list__you_can_only_pin_up_to_d_chats">Sa saad kinnitada kuni %1$d vestlust</string>
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Kontakti foto pilt</string>
<string name="conversation_list_item_view__archived">Arhiveeritud</string>
@ -1954,6 +1967,8 @@
<string name="KbsMegaphone__well_remind_you_later_creating_a_pin">Tuletame sulle hiljem meelde. PIN-koodi loomine muutub %1$d päeva pärast kohustuslikuks.</string>
<string name="KbsMegaphone__well_remind_you_later_confirming_your_pin">Tuletame sulle hiljem meelde. PIN-koodi kinnitamine muutub %1$d päeva pärast kohustuslikuks.</string>
<!--Mention Megaphone-->
<string name="MentionsMegaphone__introducing_mentions">Tutvustame @mainimisi</string>
<string name="MentionsMegaphone__get_someones_attention_in_a_group_by_typing">Võida \"uues grupis\" kellegi tähelepanu, kirjutades @</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Transpordi ikoon</string>
<string name="ConversationListFragment_loading">Laadimine…</string>

File diff suppressed because one or more lines are too long

View File

@ -160,8 +160,8 @@
<string name="ContactShareEditActivity_type_missing">Autre</string>
<string name="ContactShareEditActivity_invalid_contact">Le contact sélectionné était invalide</string>
<!--ConversationItem-->
<string name="ConversationItem_error_not_sent_tap_for_details">Na pas été envoyé, touchez pour obtenir des détails</string>
<string name="ConversationItem_error_partially_not_delivered">Envoyé partiellement, touchez pour obtenir des détails</string>
<string name="ConversationItem_error_not_sent_tap_for_details">Na pas été envoyé, toucher pour obtenir des détails</string>
<string name="ConversationItem_error_partially_not_delivered">Envoyé partiellement, toucher pour obtenir des détails</string>
<string name="ConversationItem_error_network_not_delivered">Échec denvoi</string>
<string name="ConversationItem_received_key_exchange_message_tap_to_process">Vous avez reçu un message déchange de clés. Touchez pour le traiter.</string>
<string name="ConversationItem_group_action_left">%1$s a quitté le groupe.</string>
@ -213,10 +213,10 @@
<string name="ConversationActivity_unable_to_record_audio">Impossible denregistrer le son.</string>
<string name="ConversationActivity_you_cant_send_messages_to_this_group">Vous ne pouvez pas envoyer de messages à ce groupe, car vous nen faites plus partie.</string>
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">Il ny a aucune appli pour gérer ce lien sur votre appareil.</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">Pour envoyer des messages audio, autorisez Signal à accéder à votre microphone.</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">Pour envoyer des messages audio, autorisez laccès de Signal à votre microphone.</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Signal exige lautorisation Microphone afin denvoyer des messages audio, mais elle a été refusée définitivement. Veuillez accéder au menu des paramètres des applis, sélectionner Autorisations et activer Microphone.</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Signal a besoin des autorisations Microphone et Appareil photo pour appeler %s, mais elles ont été refusées définitivement. Veuillez accéder aux paramètres de lappli, sélectionner Autorisations et activer Microphone et Appareil photo.</string>
<string name="ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera">Pour prendre des photos et des vidéos, autorisez Signal à accéder à lappareil photo.</string>
<string name="ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera">Pour prendre des photos et des vidéos, autorisez laccès de Signal à lappareil photo.</string>
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal a besoin de lautorisation Appareil photo afin de prendre des photos ou des vidéos, mais elle a été refusée définitivement. Veuillez accéder aux paramètres de lappli, sélectionner Autorisations et activer Appareil photo.</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal a besoin de lautorisation Appareil photo pour prendre des photos ou des vidéos</string>
<string name="ConversationActivity_enable_the_microphone_permission_to_capture_videos_with_sound">Autoriser laccès au microphone afin de prendre des vidéos avec du son.</string>

View File

@ -391,7 +391,10 @@
<string name="GroupManagement_learn_more">Saber máis</string>
<!--LinkPreviewsMegaphone-->
<string name="LinkPreviewsMegaphone_disable">Desactivar</string>
<string name="LinkPreviewsMegaphone_preview_any_link">Vista previa de ligazóns</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Podes obter directamente vistas previas das ligazóns a sitios web para as mensaxes que envías.</string>
<!--LinkPreviewView-->
<string name="LinkPreviewView_no_link_preview_available">Vista previa non dispoñible</string>
<!--PendingMembersActivity-->
<string name="PendingMembersActivity_people_you_invited">Persoas que convidaches</string>
<string name="PendingMembersActivity_you_have_no_pending_invites">Non tes convites pendentes.</string>
@ -1283,6 +1286,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Utilizar Signal para todas as mensaxes multimedia recibidas</string>
<string name="preferences__pref_enter_sends_title">Tecla Intro para enviar</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Ao tocar na tecla Intro enviaranse as mensaxes</string>
<string name="preferences__generate_link_previews">Crear vista previa de ligazóns</string>
<string name="preferences__retrieve_link_previews_from_websites_for_messages">Obter vistas previas das ligazóns directamente desde os sitios web para as mensaxes que envías.</string>
<string name="preferences__choose_identity">Elixir identidade</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Elixe os contactos da túa listaxe.</string>
<string name="preferences__change_passphrase">Cambiar frase de acceso</string>

View File

@ -1640,7 +1640,7 @@
<string name="preferences_storage__review_storage">ストレージを確認</string>
<string name="preferences_advanced__use_system_emoji">システムの絵文字を使う</string>
<string name="preferences_advanced__disable_signal_built_in_emoji_support">Signal独自の絵文字を無効にします</string>
<string name="preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address">すべての通話をSignalサーバで中継して、相手にIPアドレスを知られることを防ぎます。ただし通話の品質は下がります。</string>
<string name="preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address">すべての通話をSignalサーバで中継して、相手にIPアドレスを知られることを防ぎます。ただし通話の品質は下がります。</string>
<string name="preferences_advanced__always_relay_calls">通話を常に中継する</string>
<string name="preferences_app_protection__app_access">アプリのアクセス</string>
<string name="preferences_app_protection__communication">通信</string>

View File

@ -451,6 +451,7 @@
<string name="ManageGroupActivity_leave_group">Forlat gruppe</string>
<string name="ManageGroupActivity_mute_notifications">Skru av varsler</string>
<string name="ManageGroupActivity_custom_notifications">Egendefinerte varsler</string>
<string name="ManageGroupActivity_mentions">Mentions</string>
<string name="ManageGroupActivity_until_s">Frem til %1$s</string>
<string name="ManageGroupActivity_off">Av</string>
<string name="ManageGroupActivity_on"></string>
@ -475,6 +476,7 @@
<string name="ManageGroupActivity_legacy_group">Legacy grupper</string>
<string name="ManageGroupActivity_legacy_group_learn_more">Dette er en \"legacy\" gruppe. For å få tilgang til de nye funksjonene som gruppeadministrator, lag en ny gruppe.</string>
<!--GroupMentionSettingDialog-->
<string name="GroupMentionSettingDialog_receive_notifications_when_youre_mentioned_in_muted_chats">Motta varsler når du blir nevnt i mutede samtaler?</string>
<!--ManageRecipientActivity-->
<string name="ManageRecipientActivity_add_to_system_contacts">Legg til systemkontakter</string>
<string name="ManageRecipientActivity_this_person_is_in_your_contacts">Denne personen er i kontaktlisten din</string>
@ -1672,6 +1674,7 @@ Mottok nøkkelutvekslingsmelding for ugyldig protokollversion.</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone">Tillat fra hvem som helst</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Aktiver forseglet avsender for innkommende meldinger fra avsendere og personer som du ikke har delt profilen din med.</string>
<string name="preferences_communication__sealed_sender_learn_more">Lær mer</string>
<string name="preferences_notifications__mentions">Mentions</string>
<!--Internal only preferences-->
<!--****************************************-->
<!--menus-->
@ -1907,6 +1910,7 @@ Mottok nøkkelutvekslingsmelding for ugyldig protokollversion.</string>
<string name="KbsMegaphone__well_remind_you_later_creating_a_pin">Vi vil minne deg på det senere. Å lage en PIN-kode blir obligatorisk om %1$d dager.</string>
<string name="KbsMegaphone__well_remind_you_later_confirming_your_pin">Vi vil minne deg på det senere. Bekreftelse av PIN-koden blir obligatorisk om %1$d dager.</string>
<!--Mention Megaphone-->
<string name="MentionsMegaphone__introducing_mentions">Introduserer \"@mentions\"</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Transport-ikon</string>
<string name="ConversationListFragment_loading">Laster…</string>

View File

@ -442,7 +442,7 @@
<string name="LinkPreviewsMegaphone_preview_any_link">Podgląd każdego linku</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Teraz możesz pobierać podglądy linków w wysyłanych wiadomościach bezpośrednio z dowolnej strony internetowej.</string>
<!--LinkPreviewView-->
<string name="LinkPreviewView_no_link_preview_available">Brak dostępnych podglądów linków</string>
<string name="LinkPreviewView_no_link_preview_available">Brak dostępnego podglądu linku</string>
<!--PendingMembersActivity-->
<string name="PendingMemberInvitesActivity_pending_group_invites">Oczekujące zaproszenia do grupy</string>
<string name="PendingMembersActivity_people_you_invited">Ludzie, których zaprosiłeś(aś)</string>

View File

@ -400,10 +400,19 @@
<string name="GroupManagement_access_level_all_members">Todos os membros</string>
<string name="GroupManagement_access_level_only_admins">Somente admins</string>
<!--GV2 invites sent-->
<plurals name="GroupManagement_invitation_sent">
<item quantity="one">Convite enviado</item>
<item quantity="other">%d convites enviados</item>
</plurals>
<string name="GroupManagement_invite_single_user">“%1$s” não pode ser automaticamente adicionado a este grupo por você.\n\nEles foram convidados a participar, e não verão nenhuma mensagem de grupo até que aceitem.</string>
<string name="GroupManagement_learn_more">Saiba mais</string>
<string name="GroupManagement_invite_multiple_users">Estes usuários não podem ser adicionados automaticamente a este grupo por você.\n\nEles foram convidados a participar do grupo, e não verão nenhuma mensagem de grupo até que aceitem.</string>
<!--LinkPreviewsMegaphone-->
<string name="LinkPreviewsMegaphone_disable">Desabilitar</string>
<string name="LinkPreviewsMegaphone_preview_any_link">Pré-visualizar qualquer link</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Agora você pode carregar pre-visualizações dos links diretamente de qualquer site nos mensagens que você envia.</string>
<!--LinkPreviewView-->
<string name="LinkPreviewView_no_link_preview_available">Não há pré-visualização de link disponível</string>
<!--PendingMembersActivity-->
<string name="PendingMemberInvitesActivity_pending_group_invites">Convites de grupo pendentes</string>
<string name="PendingMembersActivity_people_you_invited">Pessoas que você convidou</string>
@ -411,6 +420,16 @@
<string name="PendingMembersActivity_invites_by_other_group_members">Pessoas convidadas por outros membros do grupo</string>
<string name="PendingMembersActivity_no_pending_invites_by_other_group_members">Nenhum convite pendente de outros membros do grupo.</string>
<string name="PendingMembersActivity_missing_detail_explanation">Os detalhes das pessoas convidadas por outros membros do grupo não vão aparecer. Se elas optarem por entrar, suas informações serão compartilhadas com o grupo naquele momento. Elas não verão nenhuma mensagem no grupo antes de entrarem.</string>
<string name="PendingMembersActivity_revoke_invite">Anular convite</string>
<string name="PendingMembersActivity_revoke_invites">Anular convites</string>
<plurals name="PendingMembersActivity_revoke_d_invites">
<item quantity="one">Anular convite</item>
<item quantity="other">Anular %1$d convites</item>
</plurals>
<plurals name="PendingMembersActivity_error_revoking_invite">
<item quantity="one">Erro ao anular convite</item>
<item quantity="other">Erro ao anular convites</item>
</plurals>
<!--AddMembersActivity-->
<string name="AddMembersActivity__done">Pronto</string>
<string name="AddMembersActivity__this_person_cant_be_added_to_legacy_groups">Esta pessoa não pode ser adicionada aos grupos legado.</string>
@ -425,16 +444,30 @@
<string name="AddGroupDetailsFragment__members">Membros</string>
<string name="AddGroupDetailsFragment__group_name_required">Nome do grupo (obrigatório)</string>
<string name="AddGroupDetailsFragment__this_field_is_required">Este campo é obrigatório.</string>
<string name="AddGroupDetailsFragment__groups_require_at_least_two_members">Os grupos requerem pelo menos dois membros.</string>
<string name="AddGroupDetailsFragment__group_creation_failed">A criação do grupo falhou.</string>
<string name="AddGroupDetailsFragment__try_again_later">Tentar novamente mais tarde.</string>
<string name="AddGroupDetailsFragment__youve_selected_a_contact_that_doesnt">Você selecionou um contato que não tem suporte para grupos do Signal. Então este grupo será de MMS.</string>
<string name="AddGroupDetailsFragment__remove">Remover</string>
<string name="AddGroupDetailsFragment__sms_contact">Contato de SMS</string>
<string name="AddGroupDetailsFragment__remove_s_from_this_group">Suprimir %1$s desse grupo?</string>
<plurals name="AddGroupDetailsFragment__d_members_do_not_support_new_groups">
<item quantity="one">%d membro não suporta Novos Grupos, portanto, este será um Grupo Legado.</item>
<item quantity="other">%d membros não suportam Novos Grupos, portanto, este grupo será um Grupo Legado.</item>
</plurals>
<!--NonGv2MemberDialog-->
<string name="NonGv2MemberDialog_single_users_are_non_gv2_capable">Um Grupo Legado será criado porque \"%1$s\" está usando uma versão antiga do Signal. Você pode criar um Grupo Novo Estilo com eles após de atualização do Signal, ou removê-los antes de criar o grupo.</string>
<plurals name="NonGv2MemberDialog_d_users_are_non_gv2_capable">
<item quantity="one">Um Grupo Legado será criado porque %1$d está usando uma versão antiga do Signal. Você pode criar um Grupo Novo Estilo com eles após de atualização do Signal, ou removê-los antes de criar o grupo.</item>
<item quantity="other">Um Grupo Legado será criado porque membros %1$d estão usando uma versão antiga do Signal. Você pode criar um Grupo Novo Estilo com eles após de atualização do Signal, ou removê-los antes de criar o grupo</item>
</plurals>
<!--ManageGroupActivity-->
<string name="ManageGroupActivity_disappearing_messages">Mensagens efêmeras</string>
<string name="ManageGroupActivity_pending_group_invites">Convites de grupo pendentes</string>
<string name="ManageGroupActivity_add_members">Adicionar membros</string>
<string name="ManageGroupActivity_edit_group_info">Editar informações do grupo</string>
<string name="ManageGroupActivity_choose_who_can_edit_the_group_name_avatar_and_disappearing_messages">Escolha quem pode editar o nome do grupo, avatar, e mensagens efémeras.</string>
<string name="ManageGroupActivity_choose_who_can_add_or_invite_new_members">Escolha quem pode adicionar ou convidar novos membros.</string>
<string name="ManageGroupActivity_block_group">Bloquear grupo</string>
<string name="ManageGroupActivity_unblock_group">Desbloquear o grupo</string>
<string name="ManageGroupActivity_leave_group">Sair do grupo</string>
@ -456,12 +489,24 @@
<item quantity="other">%d membros adicionados.</item>
</plurals>
<string name="ManageGroupActivity_you_dont_have_the_rights_to_do_this">Você não dispõe de privilégio para fazer isso</string>
<string name="ManageGroupActivity_not_capable">Alguém que você adicionou não suporta novos grupos e precisa atualizar o Signal</string>
<string name="ManageGroupActivity_failed_to_update_the_group">Falha ao atualizar grupo</string>
<string name="ManageGroupActivity_youre_not_a_member_of_the_group">Você não é membro do grupo</string>
<string name="ManageGroupActivity_failed_to_update_the_group_please_retry_later">Não foi possível atualizar o grupo, por favor, tente novamente mais tarde</string>
<string name="ManageGroupActivity_failed_to_update_the_group_due_to_a_network_error_please_retry_later">Falha na atualização do grupo devido a um erro da rede, favor tentar novamente mais tarde</string>
<string name="ManageGroupActivity_edit_name_and_picture">Editar nome e foto</string>
<string name="ManageGroupActivity_legacy_group">Grupo Legado</string>
<string name="ManageGroupActivity_legacy_group_learn_more">Este é um Grupo Legado. Para acessar recursos como administradores de grupos, crie um Novo Grupo.</string>
<!--GroupMentionSettingDialog-->
<string name="GroupMentionSettingDialog_notify_me_for_mentions">Notifique-me ao ser Mencionado</string>
<string name="GroupMentionSettingDialog_receive_notifications_when_youre_mentioned_in_muted_chats">Quer receber notificações quando você for mencionado nas conversas silenciosas?</string>
<string name="GroupMentionSettingDialog_default_notify_me">Predefinido (Notifique-me)</string>
<string name="GroupMentionSettingDialog_default_dont_notify_me">Predefinido (Não me notifique)</string>
<string name="GroupMentionSettingDialog_always_notify_me">Notifique-me sempre</string>
<string name="GroupMentionSettingDialog_dont_notify_me">Não me notifique</string>
<!--ManageRecipientActivity-->
<string name="ManageRecipientActivity_add_to_system_contacts">Adicionar aos contatos do sistema</string>
<string name="ManageRecipientActivity_this_person_is_in_your_contacts">Esta pessoa está em seus contatos</string>
<string name="ManageRecipientActivity_disappearing_messages">Mensagens efêmeras</string>
<string name="ManageRecipientActivity_chat_color">Cor da conversa</string>
<string name="ManageRecipientActivity_block">Bloquear</string>
@ -474,6 +519,7 @@
<string name="ManageRecipientActivity_on">Ligado</string>
<string name="ManageRecipientActivity_add_to_a_group">Adicionar ao grupo</string>
<string name="ManageRecipientActivity_view_all_groups">Ver todos os grupos</string>
<string name="ManageRecipientActivity_see_all">Ver tudo</string>
<string name="ManageRecipientActivity_no_groups_in_common">Nenhum grupo em comum</string>
<plurals name="ManageRecipientActivity_d_groups_in_common">
<item quantity="one">%d grupo em comum</item>
@ -500,8 +546,16 @@
<string name="CustomNotificationsDialogFragment__disabled">Desabilitada</string>
<string name="CustomNotificationsDialogFragment__default">Padrão</string>
<!--GV2 Invite Revoke confirmation dialog-->
<string name="InviteRevokeConfirmationDialog_revoke_own_single_invite">Você deseja anular o convite que você enviou para %1$s?</string>
<plurals name="InviteRevokeConfirmationDialog_revoke_others_invites">
<item quantity="one">Você deseja anular o convite enviado por %1$s?</item>
<item quantity="other">Você quer anular %2$d convites enviados por %1$s?</item>
</plurals>
<!--GroupJoinBottomSheetDialogFragment-->
<string name="GroupJoinBottomSheetDialogFragment_you_are_already_a_member">Você já é um membro</string>
<!--GroupJoinUpdateRequiredBottomSheetDialogFragment-->
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal_to_use_group_links">Atualize o Signal para usar links do grupo</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message">A versão do Signal que você está usando não suporta links do grupo compartilháveis. Atualize para a versão mais recente para se unir a este grupo via link.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal">Atualizar o Signal</string>
<!--CropImageActivity-->
<string name="CropImageActivity_group_avatar">Avatar do grupo</string>
@ -634,6 +688,7 @@
<string name="MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported">Foi recebida uma mensagem criptografada usando uma versão antiga do Signal que não possui mais suporte. Favor pedir ao remetente que atualize para a versão mais recente e reenvie a mensagem.</string>
<string name="MessageRecord_left_group">Você saiu do grupo.</string>
<string name="MessageRecord_you_updated_group">Você atualizou o grupo.</string>
<string name="MessageRecord_the_group_was_updated">O grupo foi atualizado.</string>
<string name="MessageRecord_you_called">Chamada efetuada</string>
<string name="MessageRecord_called_you">Chamada recebida</string>
<string name="MessageRecord_missed_call">Chamada perdida</string>
@ -646,7 +701,11 @@
<string name="MessageRecord_s_disabled_disappearing_messages">%1$s desabilitou as mensagens efêmeras.</string>
<string name="MessageRecord_you_set_disappearing_message_time_to_s">Você definiu o tempo de duração das mensagens efêmeras como %1$s.</string>
<string name="MessageRecord_s_set_disappearing_message_time_to_s">%1$s definiu o tempo de duração das mensagens efêmeras como %2$s.</string>
<string name="MessageRecord_disappearing_message_time_set_to_s">O temporizador de mensagem efémera foi definido para %1$s.</string>
<!--Profile change updates-->
<string name="MessageRecord_changed_their_profile_name_to">%1$s alterou seu nome de perfil para %2$s.</string>
<string name="MessageRecord_changed_their_profile_name_from_to">%1$s alterou seu nome de perfil de %2$s a %3$s.</string>
<string name="MessageRecord_changed_their_profile">%1$s alterou seu perfil.</string>
<!--GV2 specific-->
<string name="MessageRecord_you_created_the_group">Você criou o grupo.</string>
<string name="MessageRecord_group_updated">Grupo atualizado.</string>
@ -662,13 +721,19 @@
<string name="MessageRecord_s_removed_you_from_the_group">%1$s suprimiu você desse grupo.</string>
<string name="MessageRecord_you_left_the_group">Você saiu do grupo.</string>
<string name="MessageRecord_s_left_the_group">%1$s saiu do grupo.</string>
<string name="MessageRecord_you_are_no_longer_in_the_group">Você não está mais no grupo.</string>
<string name="MessageRecord_s_is_no_longer_in_the_group">%1$s não está mais no grupo.</string>
<!--GV2 role change-->
<string name="MessageRecord_you_made_s_an_admin">Você nomeou %1$s como admin.</string>
<string name="MessageRecord_s_made_s_an_admin">%1$s nomeou %2$s como admin.</string>
<string name="MessageRecord_s_made_you_an_admin">%1$s nomeou você como admin.</string>
<string name="MessageRecord_you_revoked_admin_privileges_from_s">Você revogou privilégios de admin de %1$s.</string>
<string name="MessageRecord_s_revoked_your_admin_privileges">%1$s revogou seus privilégios de administrador.\"</string>
<string name="MessageRecord_s_revoked_admin_privileges_from_s">%1$s revogou os privilégios de admin de %2$s.</string>
<string name="MessageRecord_s_is_now_an_admin">%1$s agora é um administrador</string>
<string name="MessageRecord_you_are_now_an_admin">Agora você é um/a admin</string>
<string name="MessageRecord_s_is_no_longer_an_admin">%1$s é agora um administrador.</string>
<string name="MessageRecord_you_are_no_longer_an_admin">Você não é mais um administrador.</string>
<!--GV2 invitations-->
<string name="MessageRecord_you_invited_s_to_the_group">Você convidou %1$s ao grupo.</string>
<string name="MessageRecord_s_invited_you_to_the_group">%1$s convidou você ao grupo..</string>
@ -677,24 +742,48 @@
<item quantity="other">%1$s convidou %2$d pessoas ao grupo.</item>
</plurals>
<string name="MessageRecord_you_were_invited_to_the_group">Você recebeu um convite para o grupo.</string>
<plurals name="MessageRecord_d_people_were_invited_to_the_group">
<item quantity="one">1 pessoa foi convidada para o grupo.</item>
<item quantity="other">%1$d pessoas foram convidadas para o grupo.</item>
</plurals>
<!--GV2 invitation revokes-->
<plurals name="MessageRecord_you_revoked_invites">
<item quantity="one">Você anulou um convite para o grupo.</item>
<item quantity="other">Você anulou %1$d convites para o grupo.</item>
</plurals>
<plurals name="MessageRecord_s_revoked_invites">
<item quantity="one">%1$s anulou um convite para o grupo.</item>
<item quantity="other">%1$s anulou %2$d convites para o grupo.</item>
</plurals>
<string name="MessageRecord_someone_declined_an_invitation_to_the_group">Alguém recusou um convite ao grupo.</string>
<string name="MessageRecord_you_declined_the_invitation_to_the_group">Você recusou o convite ao grupo.</string>
<string name="MessageRecord_s_revoked_your_invitation_to_the_group">%1$s anulou seu convite para o grupo.</string>
<string name="MessageRecord_an_admin_revoked_your_invitation_to_the_group">Um administrador anulou seu convite para o grupo.</string>
<plurals name="MessageRecord_d_invitations_were_revoked">
<item quantity="one">Um convite para o grupo foi anulado.</item>
<item quantity="other">%1$d os convites para o grupo foram anulados.</item>
</plurals>
<!--GV2 invitation acceptance-->
<string name="MessageRecord_you_accepted_invite">Você aceitou o convite ao grupo.</string>
<string name="MessageRecord_s_accepted_invite">%1$s aceitou o convite ao grupo.</string>
<string name="MessageRecord_you_added_invited_member_s">Você adicionou um membro convidado %1$s.</string>
<string name="MessageRecord_s_added_invited_member_s">%1$s adicionou membro convidado %2$s.</string>
<!--GV2 title change-->
<string name="MessageRecord_you_changed_the_group_name_to_s">Você mudou o nome do grupo para \"%1$s\".</string>
<string name="MessageRecord_s_changed_the_group_name_to_s">%1$s mudou o nome do grupo para \"%2$s\".</string>
<string name="MessageRecord_the_group_name_has_changed_to_s">O nome do grupo mudou para \"%1$s\".</string>
<!--GV2 avatar change-->
<string name="MessageRecord_you_changed_the_group_avatar">Você mudou o avatar do grupo.</string>
<string name="MessageRecord_s_changed_the_group_avatar">%1$s mudou o avatar do grupo.</string>
<string name="MessageRecord_the_group_group_avatar_has_been_changed">O avatar do grupo foi alterado.</string>
<!--GV2 attribute access level change-->
<string name="MessageRecord_you_changed_who_can_edit_group_info_to_s">Você mudou quem pode editar as informações do grupo. Agora é \"%1$s\".</string>
<string name="MessageRecord_s_changed_who_can_edit_group_info_to_s">%1$s mudou quem pode editar as informações do grupo. Agora é \"%2$s\".</string>
<string name="MessageRecord_who_can_edit_group_info_has_been_changed_to_s">Quem pode editar as informações do grupo foi alterado para \"%1$s\".</string>
<!--GV2 membership access level change-->
<string name="MessageRecord_you_changed_who_can_edit_group_membership_to_s">Você mudou quem pode editar os membros do grupo. Agora é \"%1$s\".</string>
<string name="MessageRecord_s_changed_who_can_edit_group_membership_to_s">%1$s mudou quem pode editar os membros do grupo. Agora é \"%2$s\".</string>
<string name="MessageRecord_who_can_edit_group_membership_has_been_changed_to_s">Quem pode editar as informações do grupo foi alterado para \"%1$s\".</string>
<!--End of GV2 specific update messages-->
<string name="MessageRecord_your_safety_number_with_s_has_changed">Seu número de segurança com %s mudou.</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified">Você marcou o seu número de segurança com %s como verificado</string>
@ -706,6 +795,8 @@
<string name="MessageRequestBottomView_delete">Excluir</string>
<string name="MessageRequestBottomView_block">Bloquear</string>
<string name="MessageRequestBottomView_unblock">Desbloquear</string>
<string name="MessageRequestBottomView_do_you_want_to_let_s_message_you_they_wont_know_youve_seen_their_messages_until_you_accept">Permita %1$s enviar uma mensagem para você e compartilhar seu nome e foto com outros? Eles não saberão que você viu a mensagem deles até que você aceite.</string>
<string name="MessageRequestBottomView_do_you_want_to_let_s_message_you_wont_receive_any_messages_until_you_unblock_them">Permita %1$s enviar uma mensagem para você e compartilhar seu nome e foto com outros? Você não receberá nenhumas mensagens até que os desbloqueie.</string>
<string name="MessageRequestBottomView_do_you_want_to_join_this_group_they_wont_know_youve_seen_their_messages_until_you_accept">Você quer entrar nesse grupo e compartilhar seu nome e foto com os membros dele? Eles não saberão que você visualizou as mensagens deles se você não aceitar.</string>
<string name="MessageRequestBottomView_unblock_this_group_and_share_your_name_and_photo_with_its_members">Você quer desbloquear esse grupo e compartilhar seu nome e foto com os membros dele? Você não receberá nenhuma mensagem deles até que desbloqueie o grupo.</string>
<string name="MessageRequestProfileView_member_of_one_group">Membro de %1$s</string>
@ -715,6 +806,14 @@
<item quantity="one">%1$dmembro</item>
<item quantity="other">%1$dmembros</item>
</plurals>
<plurals name="MessageRequestProfileView_members_and_invited">
<item quantity="one">%1$d membro (+%2$d convidados)</item>
<item quantity="other">%1$d membros (+%2$d convidados)</item>
</plurals>
<plurals name="MessageRequestProfileView_member_of_d_additional_groups">
<item quantity="one">%d grupo adicional</item>
<item quantity="other">%d grupos adicionais</item>
</plurals>
<!--PassphraseChangeActivity-->
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">Frases-chave não correspondem!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Frase-chave anterior incorreta!</string>
@ -758,17 +857,28 @@
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">A versão instalada do Google Play Services não está funcionando corretamente. Favor reinstalar o Google Play Services e tentar novamente.</string>
<!--PinRestoreEntryFragment-->
<string name="PinRestoreEntryFragment_incorrect_pin">PIN incorreto</string>
<string name="PinRestoreEntryFragment_skip_pin_entry">Pular a entrada do PIN?</string>
<string name="PinRestoreEntryFragment_need_help">Precisa de ajuda?</string>
<string name="PinRestoreEntryFragment_your_pin_is_a_d_digit_code">Seu PIN é um %1$d+ código numérico que você criou que pode ser numérico ou alfanumérico.\n\nSe você não se lembra de seu PIN, você pode criar um novo. Você pode se registrar e usar sua conta, mas perderá algumas configurações salvas, como as informações de seu perfil.</string>
<string name="PinRestoreEntryFragment_if_you_cant_remember_your_pin">Se não conseguir se lembrar do seu PIN, você pode criar um outro. Nesse caso, você pode se registrar e usar sua conta, mas perderá algumas configurações salvas, como as informações do seu perfil.</string>
<string name="PinRestoreEntryFragment_create_new_pin">Criar novo PIN</string>
<string name="PinRestoreEntryFragment_contact_support">Entre em contato com o Suporte do Signal</string>
<string name="PinRestoreEntryFragment_cancel">Cancelar</string>
<string name="PinRestoreEntryFragment_skip">Pular</string>
<plurals name="PinRestoreEntryFragment_you_have_d_attempt_remaining">
<item quantity="one">Você tem %1$d tentativas restantes. Se você não acertar, você pode criar um novo PIN. Você pode se registrar e usar sua conta, mas perderá algumas configurações salvas como as informações de seu perfil.</item>
<item quantity="other">Você tem %1$d tentativas restantes. Se você não acertar, você pode criar um novo PIN. Você pode se registrar e usar sua conta, mas perderá algumas configurações salvas como as informações de seu perfil.</item>
</plurals>
<string name="PinRestoreEntryFragment_signal_registration_need_help_with_pin">Registro de Signal - Precisa de ajuda com o PIN para Android</string>
<string name="PinRestoreEntryFragment_enter_alphanumeric_pin">Digite o PIN alfanumérico</string>
<string name="PinRestoreEntryFragment_enter_numeric_pin">Digite o PIN numérico</string>
<!--PinRestoreLockedFragment-->
<string name="PinRestoreLockedFragment_create_your_pin">Criar seu PIN</string>
<string name="PinRestoreLockedFragment_youve_run_out_of_pin_guesses">Você esgotou todas as tentativas de PIN, mas ainda pode acessar sua conta de Sinal criando um novo PIN. Para sua privacidade e segurança, sua conta será restaurada sem nenhuma informação de perfil ou configurações salvas.</string>
<string name="PinRestoreLockedFragment_create_new_pin">Criar novo PIN</string>
<!--PinOptOutDialog-->
<string name="PinOptOutDialog_warning">Cuidado</string>
<string name="PinOptOutDialog_if_you_disable_the_pin_you_will_lose_all_data">Se você desativar o PIN, você perderá todos os dados ao se registrar de novo com o Signal, a menos que você faça backup manualmente e restaure. Você não pode ativar o Bloqueio de Registro enquanto o PIN estiver desativado.</string>
<string name="PinOptOutDialog_disable_pin">Desabilitar PIN</string>
<!--RatingManager-->
<string name="RatingManager_rate_this_app">Avaliar este aplicativo</string>
@ -778,6 +888,7 @@
<string name="RatingManager_later">Mais tarde</string>
<string name="RatingManager_whoops_the_play_store_app_does_not_appear_to_be_installed">Ops, o aplicativo Play Store parece não estar instalado no seu dispositivo.</string>
<!--ReactionsBottomSheetDialogFragment-->
<string name="ReactionsBottomSheetDialogFragment_all">Todos · %1$d</string>
<!--ReactionsConversationView-->
<string name="ReactionsConversationView_plus">+ %1$d</string>
<!--ReactionsRecipientAdapter-->
@ -805,6 +916,8 @@
<string name="RedPhone_got_it">Entendi</string>
<!--WebRtcCallActivity-->
<string name="WebRtcCallActivity__tap_here_to_turn_on_your_video">Toque para ligar seu vídeo</string>
<string name="WebRtcCallActivity__to_call_s_signal_needs_access_to_your_camera">Para chamar %1$s, Signal precisa ter acesso à sua câmera</string>
<string name="WebRtcCallActivity__signal_s">Signal %1$s</string>
<string name="WebRtcCallActivity__calling">Chamando…</string>
<!--WebRtcCallView-->
<string name="WebRtcCallView__signal_voice_call">Mensagem de voz Signal…</string>
@ -831,6 +944,7 @@
<string name="RegistrationActivity_more_information">Mais informações</string>
<string name="RegistrationActivity_less_information">Menos informações</string>
<string name="RegistrationActivity_signal_needs_access_to_your_contacts_and_media_in_order_to_connect_with_friends">O Signal precisa de acesso aos seus contatos e arquivos de mídia para poder se conectar a amigos, trocar mensagens, e fazer chamadas seguras</string>
<string name="RegistrationActivity_rate_limited_to_service">Para fazer chamada %1$s, Signal precisa ter acesso à sua câmera</string>
<string name="RegistrationActivity_unable_to_connect_to_service">Não é possível conectar ao serviço. Favor verificar a conexão à rede e tentar novamente.</string>
<string name="RegistrationActivity_to_easily_verify_your_phone_number_signal_can_automatically_detect_your_verification_code">Para verificar facilmente seu número de telefone, o Signal pode detectar automaticamente seu código de verificação desde que você permita ao Signal acessar suas mensagens SMS.</string>
<plurals name="RegistrationActivity_debug_log_hint">
@ -851,7 +965,11 @@
<string name="RegistrationActivity_country_code_description">Código do país</string>
<string name="RegistrationActivity_call">Ligar</string>
<!--RegistrationLockV2Dialog-->
<string name="RegistrationLockV2Dialog_turn_on_registration_lock">Ativar o Bloqueio de Registro?</string>
<string name="RegistrationLockV2Dialog_turn_off_registration_lock">Desativar o Bloqueio de Registro?</string>
<string name="RegistrationLockV2Dialog_if_you_forget_your_signal_pin_when_registering_again">Se você esquecer seu PIN SIGNAL ao se registrar novamente no Signal, ficará sem acesso à sua conta por sete dias.</string>
<string name="RegistrationLockV2Dialog_turn_on">Ativar</string>
<string name="RegistrationLockV2Dialog_turn_off">Desativar</string>
<!--RevealableMessageView-->
<string name="RevealableMessageView_view_photo">Ver foto</string>
<string name="RevealableMessageView_view_video">Assistir vídeo</string>
@ -879,6 +997,7 @@
<string name="SignalPinReminders_well_remind_you_again_in_a_few_days">Nós te lembraremos novamente em alguns dias.</string>
<string name="SignalPinReminders_well_remind_you_again_in_a_week">Nós te lembraremos novamente em uma semana.</string>
<string name="SignalPinReminders_well_remind_you_again_in_a_couple_weeks">Nós te lembraremos novamente em algumas semanas.</string>
<string name="SignalPinReminders_well_remind_you_again_in_a_month">Lembraremos novamente dentro de um mês.</string>
<!--Slide-->
<string name="Slide_image">Imagem</string>
<string name="Slide_sticker">Figurinha</string>
@ -930,6 +1049,8 @@
<string name="SupportEmailUtil_device_info">Info do aparelho:</string>
<string name="SupportEmailUtil_android_version">Versão do Android:</string>
<string name="SupportEmailUtil_signal_version">Versão do Signal:</string>
<string name="SupportEmailUtil_signal_package">Arquivo de Signal:</string>
<string name="SupportEmailUtil_registration_lock">Bloqueio de Registro:</string>
<string name="SupportEmailUtil_locale">Localidade:</string>
<!--ThreadRecord-->
<string name="ThreadRecord_group_updated">Grupo atualizado</string>
@ -956,6 +1077,7 @@
<string name="ThreadRecord_message_could_not_be_processed">A mensagem não pôde ser processada</string>
<string name="ThreadRecord_message_request">Solicitação de mensagem</string>
<string name="ThreadRecord_s_added_you_to_the_group">%1$sfoi adicionado ao grupo</string>
<string name="ThreadRecord_s_invited_you_to_the_group">%1$s convidou você para o grupo</string>
<string name="ThreadRecord_photo">Foto</string>
<string name="ThreadRecord_gif">GIF</string>
<string name="ThreadRecord_voice_message">Mensagem de voz</string>
@ -987,6 +1109,7 @@
<string name="UsernameEditFragment_encountered_a_network_error">Foi encontrado um erro de rede.</string>
<string name="UsernameEditFragment_this_username_is_taken">Este nome de usuário já está sendo utilizado.</string>
<string name="UsernameEditFragment_this_username_is_available">Este nome de usuário está disponível.</string>
<string name="UsernameEditFragment_usernames_can_only_include">Os nomes de usuário só podem incluir aZ, 09, e underscores.</string>
<string name="UsernameEditFragment_usernames_cannot_begin_with_a_number">Nomes de usuários não podem começar com um número.</string>
<string name="UsernameEditFragment_username_is_invalid">Nome de usuário inválido.</string>
<string name="UsernameEditFragment_usernames_must_be_between_a_and_b_characters">Nomes de usuário devem conter no mínimo %1$d e no máximo %2$d caracteres.</string>
@ -1030,6 +1153,7 @@
<string name="MediaPreviewActivity_media_delete_confirmation_title">Excluir mensagem?</string>
<string name="MediaPreviewActivity_media_delete_confirmation_message">Esta mensagem será excluída permanentemente.</string>
<string name="MediaPreviewActivity_s_to_s">%1$s para %2$s</string>
<string name="MediaPreviewActivity_media_no_longer_available">here</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d mensagens novas em %2$d conversas</string>
<string name="MessageNotifier_most_recent_from_s">Mais recente de: %1$s</string>
@ -1040,6 +1164,7 @@
<string name="MessageNotifier_error_delivering_message">Erro ao enviar mensagem.</string>
<string name="MessageNotifier_mark_all_as_read">Marcar todas como lidas</string>
<string name="MessageNotifier_mark_read">Marcar como lida</string>
<string name="MessageNotifier_turn_off_these_notifications">Desative estas notificações</string>
<string name="MessageNotifier_media_message">Mensagem multimídia</string>
<string name="MessageNotifier_sticker">Figurinha</string>
<string name="MessageNotifier_view_once_photo">Imagem efêmera</string>
@ -1060,6 +1185,7 @@
<string name="MessageNotifier_reacted_s_to_your_view_once_video">Reagiu com %1$s ao seu vídeo efêmero.</string>
<string name="MessageNotifier_reacted_s_to_your_sticker">Reagiu com %1$s à sua figurinha.</string>
<string name="MessageNotifier_this_message_was_deleted">Essa mensagem foi suprimida.</string>
<string name="TurnOffContactJoinedNotificationsActivity__turn_off_contact_joined_signal">Desativar Contato Juntou-se ao Signal Notificação? Você pode activá-las novamente em Signal &gt; Configurações &gt; Notificações.</string>
<!--Notification Channels-->
<string name="NotificationChannel_messages">Padrão</string>
<string name="NotificationChannel_calls">Ligações</string>
@ -1105,6 +1231,7 @@
<string name="WebRtcCallActivity_signal_requires_microphone_and_camera_permissions_in_order_to_make_or_receive_calls">O Signal precisa das permissões Microfone e Câmera para fazer ou receber chamadas, mas elas foram permanentemente negadas. Favor ir no menu de configurações de aplicativos, selecionar \"Permissões\", e habilitar \"Microfone\" e \"Câmera\".</string>
<string name="WebRtcCallActivity__answered_on_a_linked_device">Atendeu em aparelho vinculado.</string>
<string name="WebRtcCallActivity__declined_on_a_linked_device">Recusou em um aparelho vinculado.</string>
<string name="WebRtcCallActivity__busy_on_a_linked_device">Ocupado num dispositivo conectado.</string>
<!--WebRtcCallScreen-->
<string name="WebRtcCallScreen_new_safety_numbers">O número de segurança da sua conversa com %1$s mudou. Isto pode significar que alguém está tentando interceptar sua comunicação, ou que %2$s simplesmente reinstalou o Signal.</string>
<string name="WebRtcCallScreen_you_may_wish_to_verify_this_contact">Talvez você queira verificar seu número de segurança com esse contato.</string>
@ -1114,7 +1241,10 @@
<!--WebRtcCallScreen V2-->
<string name="WebRtcCallScreen__decline">Recusar</string>
<string name="WebRtcCallScreen__answer">Atender</string>
<string name="WebRtcCallScreen__answer_without_video">Atender sem vídeo</string>
<!--WebRtcAudioOutputToggle-->
<string name="WebRtcAudioOutputToggle__audio_output">Saída de áudio</string>
<string name="WebRtcAudioOutputToggle__phone_earpiece">Fone de ouvido</string>
<string name="WebRtcAudioOutputToggle__speaker">Auto falante</string>
<string name="WebRtcAudioOutputToggle__bluetooth">Bluetooth</string>
<!--WebRtcCallControls-->
@ -1167,12 +1297,18 @@
<string name="ContactSelectionListFragment_username_not_found">Usuário não encontrado</string>
<string name="ContactSelectionListFragment_s_is_not_a_signal_user">\"%1$s\" não é um usuário do Signal. Verifique o nome de usuário e tente novamente.</string>
<string name="ContactSelectionListFragment_okay">Ok</string>
<string name="ContactSelectionListFragment_the_group_is_full">O grupo está cheio</string>
<string name="ContactSelectionListFragment_you_do_not_need_to_add_yourself_to_the_group">Você não precisa se adicionar ao grupo</string>
<!--blocked_contacts_fragment-->
<string name="blocked_contacts_fragment__no_blocked_contacts">Nenhum contato bloqueado</string>
<!--contact_selection_list_fragment-->
<string name="contact_selection_list_fragment__signal_needs_access_to_your_contacts_in_order_to_display_them">O Signal precisa de acesso aos seus contatos para poder exibi-los.</string>
<string name="contact_selection_list_fragment__show_contacts">Mostrar contatos</string>
<!--contact_selection_list_item-->
<plurals name="contact_selection_list_item__number_of_members">
<item quantity="one">%1$d membro</item>
<item quantity="other">%1$d membros</item>
</plurals>
<!--conversation_activity-->
<string name="conversation_activity__type_message_push">Mensagem no Signal</string>
<string name="conversation_activity__type_message_sms_insecure">SMS inseguro</string>
@ -1187,6 +1323,7 @@
<string name="conversation_activity__quick_attachment_drawer_record_and_send_audio_description">Gravar e enviar anexo de áudio</string>
<string name="conversation_activity__quick_attachment_drawer_lock_record_description">Trancar gravação de anexo de áudio</string>
<string name="conversation_activity__enable_signal_for_sms">Habilitar Signal para SMS</string>
<string name="conversation_activity__message_could_not_be_sent">A mensagem não podia ser enviada. Verifique sua conexão e tente novamente.</string>
<!--conversation_input_panel-->
<string name="conversation_input_panel__slide_to_cancel">Deslize para cancelar</string>
<string name="conversation_input_panel__cancel">Cancelar</string>
@ -1216,11 +1353,14 @@
<string name="conversation_fragment__scroll_to_the_bottom_content_description">Rolar para o final</string>
<!--safety_number_change_dialog-->
<string name="safety_number_change_dialog__safety_number_changes">Mudanças no Número de Segurança</string>
<string name="safety_number_change_dialog__send_anyway">Envie de qualquer forma</string>
<string name="safety_number_change_dialog__the_following_people_may_have_reinstalled_or_changed_devices">As seguintes pessoas podem ter reinstalado ou mudado de aparelho. Verifique o seu número de segurança com elas para garantir a sua privacidade e a delas.</string>
<string name="safety_number_change_dialog__view">Exibir</string>
<string name="safety_number_change_dialog__previous_verified">Já verificado</string>
<!--country_selection_fragment-->
<string name="country_selection_fragment__loading_countries">Carregando países…</string>
<string name="country_selection_fragment__search">Procurar</string>
<string name="country_selection_fragment__no_matching_countries">here</string>
<!--device_add_fragment-->
<string name="device_add_fragment__scan_the_qr_code_displayed_on_the_device_to_link">Escaneie o código QR mostrado no dispositivo para vincular</string>
<!--device_link_fragment-->
@ -1334,6 +1474,7 @@
<string name="CreateProfileActivity__username">Nome de usuário</string>
<string name="CreateProfileActivity__create_a_username">Criar um nome de usuário</string>
<!--EditProfileFragment-->
<string name="EditProfileFragment__edit_group_name_and_photo">Editar nome e foto do grupo</string>
<string name="EditProfileFragment__group_name">Nome do grupo</string>
<!--recipient_preferences_activity-->
<string name="recipient_preference_activity__shared_media">Mídia compartilhada</string>
@ -1370,6 +1511,11 @@
<string name="message_details_header__via">Via</string>
<!--message_details_recipient_header-->
<string name="message_details_recipient_header__pending_send">Pendente</string>
<string name="message_details_recipient_header__sent_to">Enviado de</string>
<string name="message_details_recipient_header__sent_from">Enviado de</string>
<string name="message_details_recipient_header__delivered_to">Entregue a</string>
<string name="message_details_recipient_header__read_by">Lido por</string>
<string name="message_details_recipient_header__not_sent">Não enviado</string>
<!--message_Details_recipient-->
<string name="message_details_recipient__failed_to_send">Falha no envio</string>
<string name="message_details_recipient__new_safety_number">Novo número de segurança</string>
@ -1410,10 +1556,17 @@
<string name="HelpFragment__please_be_as_descriptive_as_possible">Por favor, seja o mais detalhista possível para nos ajudar a entender o problema.</string>
<string name="HelpFragment__no_email_app_found">Nenhum email app encontrado</string>
<!--ReactWithAnyEmojiBottomSheetDialogFragment-->
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__this_message">Esta mensagem</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__recently_used">Utilizado recentemente</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__smileys_and_people">Gente &amp; sorridente</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__nature">Natureza</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__food">Comida</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__activities">Atividades</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__places">Lugares</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__objects">Objetos</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__symbols">Símbolos</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__flags">Bandeiras</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__emoticons">Emoticons</string>
<!--arrays.xml-->
<string name="arrays__import_export">Importar</string>
<string name="arrays__use_default">Usar padrão</string>
@ -1453,6 +1606,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Use o Signal para receber todas as mensagens multimídia</string>
<string name="preferences__pref_enter_sends_title">Tecla Enter envia</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Pressionar a tecla Enter enviará mensagens de texto</string>
<string name="preferences__generate_link_previews">Gerar pré-visualização de links</string>
<string name="preferences__retrieve_link_previews_from_websites_for_messages">Carregar pre-visualizações de links diretamente dos sites nas mensagens que você envia.</string>
<string name="preferences__choose_identity">Escolher identidade</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Escolha o seu próprio contato da lista de contatos.</string>
<string name="preferences__change_passphrase">Alterar frase-chave</string>
@ -1516,11 +1671,13 @@
<string name="preferences__theme">Tema</string>
<string name="preferences__disable_pin">Desabilitar PIN</string>
<string name="preferences__enable_pin">Habilitar PIN</string>
<string name="preferences__if_you_disable_the_pin_you_will_lose_all_data">Se você desativar o PIN, você perderá todos os dados ao se registrar de novo com o Signal, a menos que você faça backup manualmente e restaure. Você não pode ativar o Bloqueio de Registro enquanto o PIN estiver desativado.</string>
<string name="preferences__pins_keep_information_stored_with_signal_encrypted_so_only_you_can_access_it">PINs mantém as informações salvas no Signal encriptadas para que apenas você as acesse. Seu perfil, configurações e contatos serão restaurados quando você reinstalar. Você não precisará do PIN para abrir o app.</string>
<string name="preferences__system_default">Sistema padrão</string>
<string name="preferences__default">Padrão</string>
<string name="preferences__language">Idioma</string>
<string name="preferences__signal_messages_and_calls">Mensagens e chamadas do Signal</string>
<string name="preferences__advanced_pin_settings">Configurações avançadas do PIN</string>
<string name="preferences__free_private_messages_and_calls">Chamadas e mensagens privadas gratuitas para usuários do Signal</string>
<string name="preferences__submit_debug_log">Enviar log de depuração</string>
<string name="preferences__support_wifi_calling">Modo de compatibilidade \'WiFi Calling\'</string>
@ -1568,6 +1725,8 @@
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Habilitar remetente oculto para mensagens recebidas de não contatos e pessoas com quem você não compartilhou seu perfil.</string>
<string name="preferences_communication__sealed_sender_learn_more">Saiba mais</string>
<string name="preferences_notifications__mentions">Menções</string>
<string name="preferences_notifications__notify_me">Notifique-me</string>
<string name="preferences_notifications__receive_notifications_when_youre_mentioned_in_muted_chats">Receba notificações quando você for mencionado em conversas silenciosas</string>
<!--Internal only preferences-->
<!--****************************************-->
<!--menus-->
@ -1599,15 +1758,20 @@
<string name="conversation_insecure__invite">Convidar</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Excluir selecionadas</string>
<string name="conversation_list_batch__menu_pin_selected">Pin selecionado</string>
<string name="conversation_list_batch__menu_unpin_selected">Unpin selecionado</string>
<string name="conversation_list_batch__menu_select_all">Selecionar todas</string>
<string name="conversation_list_batch_archive__menu_archive_selected">Arquivar seleção</string>
<string name="conversation_list_batch_unarchive__menu_unarchive_selected">Restaurar seleção</string>
<string name="conversation_list_batch__menu_unarchive_selected">Restaurar seleção</string>
<string name="conversation_list_batch__menu_mark_as_read">Marcar como lida</string>
<string name="conversation_list_batch__menu_mark_as_unread">Marcar como não lido</string>
<!--conversation_list-->
<string name="conversation_list_settings_shortcut">Atalho de configurações</string>
<string name="conversation_list_search_description">Buscar</string>
<string name="conversation_list__pinned">Priorizar</string>
<string name="conversation_list__chats">Chats</string>
<string name="conversation_list__you_can_only_pin_up_to_d_chats">Você só pode Fixar até %1$d conversas</string>
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Imagem do contato</string>
<string name="conversation_list_item_view__archived">Arquivado</string>
@ -1726,15 +1890,19 @@
<string name="CreateKbsPinFragment__create_a_new_pin">Criar um novo PIN</string>
<string name="CreateKbsPinFragment__you_can_choose_a_new_pin_as_long_as_this_device_is_registered">Você pode modificar seu PIN enquanto este aparelho estiver registrado.</string>
<string name="CreateKbsPinFragment__create_your_pin">Criar seu PIN</string>
<string name="CreateKbsPinFragment__pins_keep_information_stored_with_signal_encrypted">Os PINs mantêm as informações armazenadas no Sinal criptografado para que somente você possa acessá-las. Seu perfil, configurações e contatos serão restaurados quando você reinstalar. Você não precisará de seu PIN para abrir o aplicativo.</string>
<string name="CreateKbsPinFragment__choose_a_stronger_pin">Escolha um PIN mais forte</string>
<!--ConfirmKbsPinFragment-->
<string name="ConfirmKbsPinFragment__pins_dont_match">Os PINs não correspondem. Tente outra vez.</string>
<string name="ConfirmKbsPinFragment__confirm_your_pin">Confirme seu PIN.</string>
<string name="ConfirmKbsPinFragment__pin_creation_failed">A criação do PIN falhou</string>
<string name="ConfirmKbsPinFragment__your_pin_was_not_saved">Seu PIN não foi salvo. Nós lembraremos você de criar um PIN depois.</string>
<string name="ConfirmKbsPinFragment__pin_created">PIN criado.</string>
<string name="ConfirmKbsPinFragment__re_enter_your_pin">Digite seu PIN de novo</string>
<string name="ConfirmKbsPinFragment__creating_pin">Criando PIN</string>
<!--KbsSplashFragment-->
<string name="KbsSplashFragment__introducing_pins">Apresentando os PINs</string>
<string name="KbsSplashFragment__pins_keep_information_stored_with_signal_encrypted">Os PINs mantêm as informações armazenadas no Sinal criptografado para que somente você possa acessá-las. Seu perfil, configurações e contatos serão restaurados quando você reinstalar. Você não precisará de seu PIN para abrir o aplicativo.</string>
<string name="KbsSplashFragment__learn_more">Saiba Mais</string>
<string name="KbsSplashFragment__registration_lock_equals_pin">Desbloqueio de Cadastro = PIN</string>
<string name="KbsSplashFragment__your_registration_lock_is_now_called_a_pin"> Seu Desbloqueio de Cadastro agora será chamado de PIN, e faz mais que bloquear. Atualizar ele agora.</string>
@ -1788,14 +1956,18 @@
</plurals>
<!--CalleeMustAcceptMessageRequestDialogFragment-->
<string name="CalleeMustAcceptMessageRequestDialogFragment__okay">Ok</string>
<string name="CalleeMustAcceptMessageRequestDialogFragment__s_will_get_a_message_request_from_you">%1$s receberá um pedido de mensagem da sua parte. Você pode ligar assim que sua solicitação for aceita.</string>
<!--KBS Megaphone-->
<string name="KbsMegaphone__create_a_pin">Crie um PIN</string>
<string name="KbsMegaphone__pins_keep_information_thats_stored_with_signal_encrytped">Os PINs guardam informações que são armazenadas no Sinal criptografado.</string>
<string name="KbsMegaphone__create_pin">Crie um PIN</string>
<string name="KbsMegaphone__introducing_pins">Apresentando os PINs</string>
<string name="KbsMegaphone__update_pin">Atualizar PIN</string>
<string name="KbsMegaphone__well_remind_you_later_creating_a_pin">Nós vamos te lembrar depois. Criar um PIN será obrigatório em %1$d dias.</string>
<string name="KbsMegaphone__well_remind_you_later_confirming_your_pin">Nós vamos te lembrar depois. A confirmação do seu PIN será obrigatória em %1$d dias.</string>
<!--Mention Megaphone-->
<string name="MentionsMegaphone__introducing_mentions">Introduzindo @Menções</string>
<string name="MentionsMegaphone__get_someones_attention_in_a_group_by_typing">Chame a atenção de alguém num \"Novo Grupo\" digitando @</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Ícone do transporte</string>
<string name="ConversationListFragment_loading">Carregando…</string>
@ -1859,9 +2031,17 @@
<string name="preferences_app_protection__signal_pin">PIN do Signal</string>
<string name="preferences_app_protection__create_a_pin">Crie um PIN</string>
<string name="preferences_app_protection__change_your_pin">Troque o seu PIN</string>
<string name="preferences_app_protection__pin_reminders">Lembretes do PIN</string>
<string name="preferences_app_protection__pins_keep_information_stored_with_signal_encrypted">Os PINs mantêm as informações armazenadas no Sinal criptografado para que somente você possa acessá-las. Seu perfil, configurações e contatos serão restaurados quando você reinstalar o Signal.</string>
<string name="preferences_app_protection__add_extra_security_by_requiring_your_signal_pin_to_register">Adicione segurança extra exigindo seu PIN do Signal para registrar seu número de telefone com ele novamente.</string>
<string name="preferences_app_protection__reminders_help_you_remember_your_pin">Os lembretes ajudam você a memorizar seu PIN, já que não pode ser recuperado. Você será solicitado com menos freqüência ao longo do tempo.</string>
<string name="preferences_app_protection__turn_off">Desativar</string>
<string name="preferences_app_protection__confirm_pin">Confirme o PIN</string>
<string name="preferences_app_protection__confirm_your_signal_pin">Confirme o seu PIN do Signal</string>
<string name="preferences_app_protection__make_sure_you_memorize_or_securely_store_your_pin">Certifique-se de memorizar ou armazenar seu PIN com segurança, pois ele não pode ser recuperado. Se você esquecer seu PIN, poderá perder dados ao recadastrar sua conta do Signal.</string>
<string name="preferences_app_protection__incorrect_pin_try_again">PIN incorreto. Tente novamente.</string>
<string name="preferences_app_protection__failed_to_enable_registration_lock">Falha ao ativar o bloqueio de registro.</string>
<string name="preferences_app_protection__failed_to_disable_registration_lock">Falha ao desativar o bloqueio de registro.</string>
<string name="AppProtectionPreferenceFragment_none">Nenhuma</string>
<string name="registration_activity__the_registration_lock_pin_is_not_the_same_as_the_sms_verification_code_you_just_received_please_enter_the_pin_you_previously_configured_in_the_application">O PIN de Desbloqueio de Cadastro não é igual ao código de verificação que você acabou de receber. Por favor, insira o PIN definido anteriormente por meio do aplicativo.</string>
<string name="registration_activity__registration_lock_pin">PIN de Desbloqueio de Cadastro</string>
@ -1879,6 +2059,7 @@
<string name="RegistrationActivity_incorrect_registration_lock_pin">PIN de Desbloqueio de Cadastro incorreto</string>
<string name="RegistrationActivity_too_many_attempts">Muitas tentativas</string>
<string name="RegistrationActivity_you_have_made_too_many_incorrect_registration_lock_pin_attempts_please_try_again_in_a_day">Você excedeu o número máximo de tentativas para acertar o PIN de Desbloqueio de Cadastro. Por favor, tente novamente daqui a um dia.</string>
<string name="RegistrationActivity_you_have_made_too_many_attempts_please_try_again_later">Você já fez demasiadas tentativas. Por favor, tente novamente mais tarde.</string>
<string name="RegistrationActivity_error_connecting_to_service">Erro na conexão ao serviço</string>
<string name="RegistrationActivity_oh_no">Ah não!</string>
<string name="RegistrationActivity_registration_of_this_phone_number_will_be_possible_without_your_registration_lock_pin_after_seven_days_have_passed">Este número de telefone poderá ser cadastrado sem o PIN de Desbloqueio de Cadastro após 7 dias de inatividade no Signal. Restam %d dias.</string>
@ -1888,6 +2069,7 @@
<string name="RegistrationLockDialog_i_forgot_my_pin">Esqueci meu PIN.</string>
<string name="RegistrationLockDialog_forgotten_pin">Esqueceu o PIN?</string>
<string name="RegistrationLockDialog_registration_lock_helps_protect_your_phone_number_from_unauthorized_registration_attempts">O Desbloqueio de Cadastro ajuda a proteger seu número de telefone de tentativas de cadastro não autorizadas. Esse recurso pode ser desativado a qualquer instante nas configurações de privacidade do Signal.</string>
<string name="RegistrationLockDialog_registration_lock">Bloqueio de registro</string>
<string name="RegistrationLockDialog_enable">Habilitar</string>
<string name="RegistrationLockDialog_the_registration_lock_pin_must_be_at_least_d_digits">O PIN de Desbloqueio de Cadastro deve ter pelo menos %d dígitos.</string>
<string name="RegistrationLockDialog_the_two_pins_you_entered_do_not_match">Os PINs inseridos não correspondem.</string>
@ -1907,11 +2089,18 @@
<string name="RecipientBottomSheet_unblock">Desbloquear</string>
<string name="RecipientBottomSheet_add_to_contacts">Adicionar aos contatos</string>
<string name="RecipientBottomSheet_add_to_a_group">Adicionar ao grupo</string>
<string name="RecipientBottomSheet_add_to_another_group">Adicionar a outro grupo</string>
<string name="RecipientBottomSheet_view_safety_number">Ver número de segurança</string>
<string name="RecipientBottomSheet_make_group_admin">Fazer administrador do grupo</string>
<string name="RecipientBottomSheet_remove_as_admin">Remover como administrador</string>
<string name="RecipientBottomSheet_remove_from_group">Excluir do grupo</string>
<string name="RecipientBottomSheet_message_description">Mensagem</string>
<string name="RecipientBottomSheet_voice_call_description">Chamada de voz</string>
<string name="RecipientBottomSheet_insecure_voice_call_description">Chamada de voz sem segurança </string>
<string name="RecipientBottomSheet_video_call_description">Chamada de vídeo</string>
<string name="RecipientBottomSheet_remove_s_as_group_admin">Remover %1$s como administrador do grupo?</string>
<string name="RecipientBottomSheet_s_will_be_able_to_edit_group">%1$s poderá editar este grupo e seus membros</string>
<string name="RecipientBottomSheet_remove_s_from_s">Excluir %1$s de \"%2$s\"?</string>
<string name="RecipientBottomSheet_remove">Remover</string>
<string name="RecipientBottomSheet_copied_to_clipboard">Copiado para a área de transferência</string>
<string name="GroupRecipientListItem_admin">Admin</string>
@ -1919,6 +2108,7 @@
<string name="GroupsLearnMore_legacy_vs_new_groups">Legado vs Novos Grupos</string>
<string name="GroupsLearnMore_what_are_legacy_groups">O que são Grupos Legados?</string>
<string name="GroupsLearnMore_paragraph_1">Grupos Legados são grupos que não são compatíveis com recursos dos Novos grupos como admins e atualizações de grupo mais descritivas.</string>
<string name="GroupsLearnMore_how_do_i_use_new_groups">Como utilizar Novos Grupos?</string>
<string name="GroupsLearnMore_paragraph_2">Grupos Legados não podem ser convertidos em Novos Grupos, mas você pode criar um Novo Grupo com os mesmos membros.</string>
<string name="GroupsLearnMore_paragraph_3">Para criar um Novo Grupo, todos os membros devem atualizar para a versão do Signal mais recente.</string>
<!--EOF-->

View File

@ -1134,7 +1134,9 @@ Bola prijatá správa výmeny kľúčov s neplatnou verziou protokolu.
<string name="WebRtcCallScreen_accept">Potvrdiť</string>
<string name="WebRtcCallScreen_end_call">Ukončiť hovor</string>
<!--WebRtcCallScreen V2-->
<string name="WebRtcCallScreen__decline">Odmietnuť</string>
<string name="WebRtcCallScreen__answer">Odpovedať</string>
<string name="WebRtcCallScreen__answer_without_video">Prijať bez videa</string>
<!--WebRtcAudioOutputToggle-->
<string name="WebRtcAudioOutputToggle__speaker">Reproduktor</string>
<string name="WebRtcAudioOutputToggle__bluetooth">Bluetooth</string>

View File

@ -1864,7 +1864,7 @@ Prejeto sporočilo za izmenjavo ključev za napačno različico protokola.</stri
<!--conversation_list-->
<string name="conversation_list_settings_shortcut">Bližnjica k nastavitvam</string>
<string name="conversation_list_search_description">Iskanje</string>
<string name="conversation_list__pinned">Pripeti</string>
<string name="conversation_list__pinned">Pripeto</string>
<string name="conversation_list__chats">Pogovori</string>
<string name="conversation_list__you_can_only_pin_up_to_d_chats">Pripnete lahko do %1$d pogovore</string>
<!--conversation_list_item_view-->

View File

@ -395,7 +395,7 @@
<!--LinkPreviewsMegaphone-->
<string name="LinkPreviewsMegaphone_disable">Tắt</string>
<string name="LinkPreviewsMegaphone_preview_any_link">Xem trước tất cả liên kết</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Từ giờ bạn có thể thêm xem trước liên kết từ bất cứ trang web nào trong tin nhắn bạn gửi.</string>
<string name="LinkPreviewsMegaphone_you_can_now_retrieve_link_previews_directly_from_any_website">Từ giờ bạn có thể thêm xem trước liên kết từ bất cứ trang web nào vào trong tin nhắn bạn gửi.</string>
<!--LinkPreviewView-->
<string name="LinkPreviewView_no_link_preview_available">Xem trước liên kết không khả dụng</string>
<!--PendingMembersActivity-->
@ -522,8 +522,15 @@
<string name="CustomNotificationsDialogFragment__disabled">Tắt</string>
<string name="CustomNotificationsDialogFragment__default">Mặc định</string>
<!--GV2 Invite Revoke confirmation dialog-->
<string name="InviteRevokeConfirmationDialog_revoke_own_single_invite">Bạn có muốn thu hồi lời mời đã gửi đến %1$s?</string>
<plurals name="InviteRevokeConfirmationDialog_revoke_others_invites">
<item quantity="other">Bạn có muốn thu hồi %2$d lời mời gửi bởi %1$s?</item>
</plurals>
<!--GroupJoinBottomSheetDialogFragment-->
<string name="GroupJoinBottomSheetDialogFragment_you_are_already_a_member">Bạn đã là thành viên</string>
<!--GroupJoinUpdateRequiredBottomSheetDialogFragment-->
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal_to_use_group_links">Cập nhật Signal để dùng liên kết nhóm</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message">Phiên bản Signal bạn đang dùng không hỗ trợ liên kết nhóm. Vui lòng cập nhật để có thể tham gia nhóm qua liên kết.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal">Cập nhật Signal</string>
<!--CropImageActivity-->
<string name="CropImageActivity_group_avatar">Ảnh đại diện của nhóm</string>
@ -664,6 +671,9 @@
<string name="MessageRecord_s_set_disappearing_message_time_to_s">%1$s đã đặt tự hủy tin nhắn sau %2$s.</string>
<string name="MessageRecord_disappearing_message_time_set_to_s">Tin nhắn sẽ tự hủy sau %1$s.</string>
<!--Profile change updates-->
<string name="MessageRecord_changed_their_profile_name_to">%1$s đã đổi tên hồ sơ thành %2$s.</string>
<string name="MessageRecord_changed_their_profile_name_from_to">%1$s đã đổi tên hồ sơ từ %2$s thành %3$s.</string>
<string name="MessageRecord_changed_their_profile">%1$s đã đổi hồ sơ.</string>
<!--GV2 specific-->
<string name="MessageRecord_you_created_the_group">Bạn đã tạo nhóm.</string>
<string name="MessageRecord_group_updated">Nhóm được cập nhật.</string>
@ -711,6 +721,8 @@
</plurals>
<string name="MessageRecord_someone_declined_an_invitation_to_the_group">Ai đó đã từ chối lời mời vào nhóm.</string>
<string name="MessageRecord_you_declined_the_invitation_to_the_group">Bạn đã từ chối lời mời vào nhóm.</string>
<string name="MessageRecord_s_revoked_your_invitation_to_the_group">%1$s đã thu hồi lời mời bạn vào nhóm.</string>
<string name="MessageRecord_an_admin_revoked_your_invitation_to_the_group">Một quản trị viên đã thu hồi lời mời bạn vào nhóm.</string>
<plurals name="MessageRecord_d_invitations_were_revoked">
<item quantity="other">%1$d lời mời vào nhóm đã được thu hồi.</item>
</plurals>
@ -759,6 +771,9 @@
<plurals name="MessageRequestProfileView_members_and_invited">
<item quantity="other">%1$d thành viên (+%2$d đã được mời)</item>
</plurals>
<plurals name="MessageRequestProfileView_member_of_d_additional_groups">
<item quantity="other">%d nhóm khác</item>
</plurals>
<!--PassphraseChangeActivity-->
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">Mật khẩu không khớp!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Mật khẩu cũ không đúng!</string>
@ -1101,6 +1116,7 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="MessageNotifier_error_delivering_message">Có lỗi khi gửi tin nhắn.</string>
<string name="MessageNotifier_mark_all_as_read">Đánh dấu đã đọc tất cả</string>
<string name="MessageNotifier_mark_read">Đánh dấu đã đọc</string>
<string name="MessageNotifier_turn_off_these_notifications">Tắt các thông báo này</string>
<string name="MessageNotifier_media_message">Tin nhắn đa phương tiện</string>
<string name="MessageNotifier_sticker">Nhãn dán</string>
<string name="MessageNotifier_view_once_photo">Ảnh xem một lần</string>
@ -1121,6 +1137,7 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="MessageNotifier_reacted_s_to_your_view_once_video">Đã bày tỏ cảm xúc %1$s cho video xem một lần của bạn.</string>
<string name="MessageNotifier_reacted_s_to_your_sticker">Đã bày tỏ cảm xúc %1$s cho nhãn dán của bạn.</string>
<string name="MessageNotifier_this_message_was_deleted">Tin nhắn này đã bị xóa.</string>
<string name="TurnOffContactJoinedNotificationsActivity__turn_off_contact_joined_signal">Tắt thông báo khi liên hệ bắt đầu sử dụng Signal? Bạn có thể bật lại ở Signal &gt; Cài đặt &gt; Thông báo.</string>
<!--Notification Channels-->
<string name="NotificationChannel_messages">Mặc định</string>
<string name="NotificationChannel_calls">Cuộc gọi</string>
@ -1482,6 +1499,7 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="HelpFragment__please_be_as_descriptive_as_possible">Vui lòng miêu tả càng chi tiết càng tốt để giúp chúng tôi hiểu về vấn đề.</string>
<string name="HelpFragment__no_email_app_found">Không tìm thấy ứng dụng email.</string>
<!--ReactWithAnyEmojiBottomSheetDialogFragment-->
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__this_message">Tin nhắn này</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__recently_used">Sử dụng gần đây</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__smileys_and_people">Mặt cười và Con người</string>
<string name="ReactWithAnyEmojiBottomSheetDialogFragment__nature">Thiên nhiên</string>
@ -1530,6 +1548,8 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Dùng Signal cho tất cả tin nhắn đến đa phương tiện</string>
<string name="preferences__pref_enter_sends_title">Phím Enter gửi đi</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Nhấn phím Enter sẽ gửi tin nhắn đi</string>
<string name="preferences__generate_link_previews">Tạo xem trước liên kết</string>
<string name="preferences__retrieve_link_previews_from_websites_for_messages">Thêm xem trước liên kết trang web vào trong tin nhắn bạn gửi.</string>
<string name="preferences__choose_identity">Chọn danh tính</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Chọn khoản mục liên lạc của bạn trong danh sách liên lạc.</string>
<string name="preferences__change_passphrase">Đổi mật khẩu</string>
@ -1647,6 +1667,8 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Bật \'Lá thư không chủ\' cho tin nhắn từ người gửi không có trong danh bạ và người bạn chưa chia sẻ hồ sơ.</string>
<string name="preferences_communication__sealed_sender_learn_more">Tìm hiểu thêm</string>
<string name="preferences_notifications__mentions">Nhắc tên</string>
<string name="preferences_notifications__notify_me">Thông báo tôi</string>
<string name="preferences_notifications__receive_notifications_when_youre_mentioned_in_muted_chats">Nhận thông báo khi bạn được nhắc tên trong cuộc trò chuyện đã im lặng</string>
<!--Internal only preferences-->
<!--****************************************-->
<!--menus-->
@ -1678,6 +1700,8 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="conversation_insecure__invite">Mời</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Xóa mục đã chọn</string>
<string name="conversation_list_batch__menu_pin_selected">Ghim mục đã chọn</string>
<string name="conversation_list_batch__menu_unpin_selected">Bỏ ghim mục đã chọn</string>
<string name="conversation_list_batch__menu_select_all">Chọn tất cả</string>
<string name="conversation_list_batch_archive__menu_archive_selected">Lưu trữ mục đã chọn</string>
<string name="conversation_list_batch_unarchive__menu_unarchive_selected">Bỏ lưu trữ mục đã chọn</string>
@ -1687,7 +1711,9 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<!--conversation_list-->
<string name="conversation_list_settings_shortcut">Phím tắt cài đặt</string>
<string name="conversation_list_search_description">Tìm kiếm</string>
<string name="conversation_list__pinned">Đã ghim</string>
<string name="conversation_list__chats">Trò chuyện</string>
<string name="conversation_list__you_can_only_pin_up_to_d_chats">Bạn chỉ có thể ghim tối đa %1$d cuộc trò chuyện</string>
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Ảnh Chân Dung Liên Hệ</string>
<string name="conversation_list_item_view__archived">Đã lưu trữ</string>
@ -1874,6 +1900,8 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="KbsMegaphone__well_remind_you_later_creating_a_pin">Chúng tôi sẽ nhắc bạn sau. Việc tạo mã PIN sẽ trở nên bắt buộc sau %1$d ngày.</string>
<string name="KbsMegaphone__well_remind_you_later_confirming_your_pin">Chúng tôi sẽ nhắc bạn sau. Xác minh mã PIN của bạn sẽ trở nên bắt buộc sau %1$d ngày.</string>
<!--Mention Megaphone-->
<string name="MentionsMegaphone__introducing_mentions">Giới thiệu tính năng @Nhắc tên</string>
<string name="MentionsMegaphone__get_someones_attention_in_a_group_by_typing">Lấy sự chú ý của ai đó trong \"Nhóm Mới\" bằng cách gõ @</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Biểu tượng chuyển tải</string>
<string name="ConversationListFragment_loading">Đang tải…</string>
@ -2011,5 +2039,11 @@ Nhận thông tin trao đổi mã khóa về phiên bản giao thức không h
<string name="RecipientBottomSheet_copied_to_clipboard">Đã sao chép vào clipboard</string>
<string name="GroupRecipientListItem_admin">Quản trị viên</string>
<!--GroupsLearnMoreBottomSheetDialogFragment-->
<string name="GroupsLearnMore_legacy_vs_new_groups">Nhóm Mới và Nhóm Cũ</string>
<string name="GroupsLearnMore_what_are_legacy_groups">Nhóm Cũ là gì?</string>
<string name="GroupsLearnMore_paragraph_1">Nhóm Cũ là nhóm không tương thích với các tính năng mới như quản trị viên hay cập nhật cụ thể thông tin nhóm.</string>
<string name="GroupsLearnMore_how_do_i_use_new_groups">Làm thế nào tôi có thể sử dụng Nhóm Mới?</string>
<string name="GroupsLearnMore_paragraph_2">Nhóm Cũ không thể được chuyển đổi thành Nhóm Mới, nhưng bạn có thể tạo một Nhóm Mới với những thành viên cũ.</string>
<string name="GroupsLearnMore_paragraph_3">Để tạo Nhóm Mới, tất cả thành viên cần phải cập nhật lên phiên bản Signal mới nhất.</string>
<!--EOF-->
</resources>

View File

@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.conversationlist;
import android.app.Application;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import androidx.test.core.app.ApplicationProvider;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@ -33,8 +33,8 @@ import static org.powermock.api.mockito.PowerMockito.when;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE, application = Application.class)
@PowerMockIgnore({ "org.powermock.*", "org.mockito.*", "org.robolectric.*", "android.*", "androidx.*" })
@PrepareForTest({ApplicationDependencies.class, DatabaseFactory.class, ThreadDatabase.class})
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*", "androidx.*" })
@PrepareForTest({ ApplicationDependencies.class, DatabaseFactory.class })
public class UnarchivedConversationListDataSourceTest {
@Rule
@ -42,21 +42,18 @@ public class UnarchivedConversationListDataSourceTest {
private ConversationListDataSource.UnarchivedConversationListDataSource testSubject;
private ThreadDatabase threadDatabase;
private ThreadDatabase threadDatabase;
@Before
public void setUp() {
mockStatic(ApplicationDependencies.class);
mockStatic(DatabaseFactory.class);
final Context context = mock(Context.class);
final ContentResolver contentResolver = mock(ContentResolver.class);
threadDatabase = mock(ThreadDatabase.class);
threadDatabase = mock(ThreadDatabase.class);
when(DatabaseFactory.getThreadDatabase(any())).thenReturn(threadDatabase);
when(context.getContentResolver()).thenReturn(contentResolver);
testSubject = new ConversationListDataSource.UnarchivedConversationListDataSource(context, mock(Invalidator.class));
testSubject = new ConversationListDataSource.UnarchivedConversationListDataSource(ApplicationProvider.getApplicationContext(), mock(Invalidator.class));
}
@Test