From f7e0225f48ee3e7b521c6b8f89a3a4c1540282f1 Mon Sep 17 00:00:00 2001 From: DrKLO Date: Thu, 31 Jul 2014 01:50:12 +0100 Subject: [PATCH] Bug fixes --- TMessagesProj/build.gradle | 2 +- .../org/telegram/android/MessagesStorage.java | 29 ++- .../telegram/messenger/FileLoadOperation.java | 176 ++++++++++-------- .../org/telegram/ui/Cells/ChatOrUserCell.java | 50 ++++- .../java/org/telegram/ui/ChatActivity.java | 18 +- .../org/telegram/ui/ChatProfileActivity.java | 17 +- .../org/telegram/ui/MessagesActivity.java | 11 +- .../src/main/res/values-it/strings.xml | 32 ++-- .../src/main/res/values-nl/strings.xml | 54 +++--- .../src/main/res/values-pt-rBR/strings.xml | 38 ++-- 10 files changed, 270 insertions(+), 157 deletions(-) diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index 93b83d310..af3186ad8 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -83,7 +83,7 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 19 - versionCode 296 + versionCode 297 versionName "1.7.0" } } diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java index 7f41c0740..af784bd1e 100644 --- a/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java +++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesStorage.java @@ -719,6 +719,11 @@ public class MessagesStorage { } } } else { + for (TLRPC.TL_chatParticipant part : info.participants) { + if (part.user_id == user_id) { + return; + } + } TLRPC.TL_chatParticipant participant = new TLRPC.TL_chatParticipant(); participant.user_id = user_id; participant.inviter_id = invited_id; @@ -769,12 +774,22 @@ public class MessagesStorage { cursor.dispose(); if (info != null) { + boolean modified = false; + ArrayList usersArr = new ArrayList(); String usersToLoad = ""; - for (TLRPC.TL_chatParticipant c : info.participants) { - if (usersToLoad.length() != 0) { - usersToLoad += ","; + for (int a = 0; a < info.participants.size(); a++) { + TLRPC.TL_chatParticipant c = info.participants.get(a); + if (usersArr.contains(c.user_id)) { + info.participants.remove(a); + modified = true; + a--; + } else { + if (usersToLoad.length() != 0) { + usersToLoad += ","; + } + usersArr.add(c.user_id); + usersToLoad += c.user_id; } - usersToLoad += c.user_id; } if (usersToLoad.length() != 0) { cursor = database.queryFinalized(String.format(Locale.US, "SELECT data, status FROM users WHERE uid IN(%s)", usersToLoad)); @@ -791,6 +806,9 @@ public class MessagesStorage { } cursor.dispose(); } + if (modified) { + updateChatInfo(chat_id, info, false); + } } MessagesController.getInstance().processChatInfo(chat_id, info, loadedUsers, true); } catch (Exception e) { @@ -920,7 +938,7 @@ public class MessagesStorage { cursor.dispose(); } - cursor = database.queryFinalized("SELECT c.data, c.name FROM chats as c INNER JOIN dialogs as d ON c.uid = -d.did"); + cursor = database.queryFinalized("SELECT data, name FROM chats"); while (cursor.next()) { String name = cursor.stringValue(1); String[] args = name.split(" "); @@ -938,6 +956,7 @@ public class MessagesStorage { } } cursor.dispose(); + NotificationCenter.getInstance().postNotificationName(MessagesController.reloadSearchResults, token, resultArray, resultArrayNames, encUsers); } catch (Exception e) { FileLog.e("tmessages", e); diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java index 700f37e9a..b3a087b58 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/FileLoadOperation.java @@ -10,6 +10,7 @@ package org.telegram.messenger; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.os.AsyncTask; import android.provider.MediaStore; import org.telegram.android.AndroidUtilities; @@ -57,9 +58,8 @@ public class FileLoadOperation { private String ext; private String httpUrl; - private URLConnection httpConnection; + private DownloadImageTask httpTask = null; public boolean needBitmapCreate = true; - private InputStream httpConnectionStream; private RandomAccessFile fileOutputStream; private RandomAccessFile fiv; @@ -69,6 +69,103 @@ public class FileLoadOperation { public abstract void didChangedLoadProgress(FileLoadOperation operation, float progress); } + private class DownloadImageTask extends AsyncTask { + protected Boolean doInBackground(String... urls) { + String url = urls[0]; + + InputStream httpConnectionStream = null; + + try { + URL downloadUrl = new URL(url); + URLConnection httpConnection = downloadUrl.openConnection(); + httpConnection.setConnectTimeout(5000); + httpConnection.setReadTimeout(5000); + httpConnection.connect(); + httpConnectionStream = httpConnection.getInputStream(); + } catch (Exception e) { + FileLog.e("tmessages", e); + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + }); + return false; + } + + byte[] data = new byte[1024 * 2]; + while (true) { + if (isCancelled()) { + break; + } + try { + int readed = httpConnectionStream.read(data); + if (readed > 0) { + fileOutputStream.write(data, 0, readed); + } else if (readed == -1) { + FileLoader.fileLoaderQueue.postRunnable(new Runnable() { + @Override + public void run() { + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + try { + onFinishLoadingFile(); + } catch (Exception e) { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + } + }); + } + }); + break; + } else { + FileLoader.fileLoaderQueue.postRunnable(new Runnable() { + @Override + public void run() { + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + }); + } + }); + break; + } + } catch (Exception e) { + FileLog.e("tmessages", e); + FileLoader.fileLoaderQueue.postRunnable(new Runnable() { + @Override + public void run() { + cleanup(); + Utilities.stageQueue.postRunnable(new Runnable() { + @Override + public void run() { + delegate.didFailedLoadingFile(FileLoadOperation.this); + } + }); + } + }); + } + } + + try { + if (httpConnectionStream != null) { + httpConnectionStream.close(); + } + httpConnectionStream = null; + } catch (Exception e) { + FileLog.e("tmessages", e); + } + + return true; + } + } + public FileLoadOperation(TLRPC.FileLocation fileLocation) { if (fileLocation instanceof TLRPC.TL_fileEncryptedLocation) { location = new TLRPC.TL_inputEncryptedFileLocation(); @@ -434,14 +531,8 @@ public class FileLoadOperation { private void cleanup() { if (httpUrl != null) { - try { - if (httpConnectionStream != null) { - httpConnectionStream.close(); - } - httpConnection = null; - httpConnectionStream = null; - } catch (Exception e) { - FileLog.e("tmessages", e); + if (httpTask != null) { + httpTask.cancel(true); } } else { try { @@ -577,69 +668,8 @@ public class FileLoadOperation { if (state != 1) { return; } - if (httpConnection == null) { - try { - URL downloadUrl = new URL(httpUrl); - httpConnection = downloadUrl.openConnection(); - httpConnection.setConnectTimeout(5000); - httpConnection.setReadTimeout(5000); - httpConnection.connect(); - httpConnectionStream = httpConnection.getInputStream(); - } catch (Exception e) { - FileLog.e("tmessages", e); - cleanup(); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - }); - return; - } - } - - try { - byte[] data = new byte[1024 * 2]; - int readed = httpConnectionStream.read(data); - if (readed > 0) { - fileOutputStream.write(data, 0, readed); - FileLoader.fileLoaderQueue.postRunnable(new Runnable() { - @Override - public void run() { - startDownloadHTTPRequest(); - } - }); - } else if (readed == -1) { - cleanup(); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - try { - onFinishLoadingFile(); - } catch (Exception e) { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - } - }); - } else { - cleanup(); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - }); - } - } catch (Exception e) { - cleanup(); - FileLog.e("tmessages", e); - Utilities.stageQueue.postRunnable(new Runnable() { - @Override - public void run() { - delegate.didFailedLoadingFile(FileLoadOperation.this); - } - }); - } + httpTask = new DownloadImageTask(); + httpTask.doInBackground(httpUrl); } private void processRequestResult(RequestInfo requestInfo, TLRPC.TL_error error) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java index 8aa33a10d..3dbaf02cf 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatOrUserCell.java @@ -35,6 +35,8 @@ public class ChatOrUserCell extends BaseCell { private static TextPaint offlinePaint; private static Drawable lockDrawable; + private static Drawable broadcastDrawable; + private static Drawable groupDrawable; private static Paint linePaint; private CharSequence currentName; @@ -93,6 +95,14 @@ public class ChatOrUserCell extends BaseCell { linePaint.setColor(0xffdcdcdc); } + if (broadcastDrawable == null) { + broadcastDrawable = getResources().getDrawable(R.drawable.broadcast); + } + + if (groupDrawable == null) { + groupDrawable = getResources().getDrawable(R.drawable.grouplist); + } + if (avatarImage == null) { avatarImage = new ImageReceiver(); avatarImage.parentView = this; @@ -230,6 +240,12 @@ public class ChatOrUserCell extends BaseCell { if (cellLayout.drawNameLock) { setDrawableBounds(lockDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); lockDrawable.draw(canvas); + } else if (cellLayout.drawNameGroup) { + setDrawableBounds(groupDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); + groupDrawable.draw(canvas); + } else if (cellLayout.drawNameBroadcast) { + setDrawableBounds(broadcastDrawable, cellLayout.nameLockLeft, cellLayout.nameLockTop); + broadcastDrawable.draw(canvas); } canvas.save(); @@ -262,8 +278,10 @@ public class ChatOrUserCell extends BaseCell { private int nameWidth; private StaticLayout nameLayout; private boolean drawNameLock; + private boolean drawNameBroadcast; + private boolean drawNameGroup; private int nameLockLeft; - private int nameLockTop = AndroidUtilities.dp(15); + private int nameLockTop; private int onlineLeft; private int onlineTop = AndroidUtilities.dp(36); @@ -277,6 +295,10 @@ public class ChatOrUserCell extends BaseCell { CharSequence nameString = ""; TextPaint currentNamePaint; + drawNameBroadcast = false; + drawNameLock = false; + drawNameGroup = false; + if (encryptedChat != null) { drawNameLock = true; if (!LocaleController.isRTL) { @@ -286,12 +308,28 @@ public class ChatOrUserCell extends BaseCell { nameLockLeft = width - AndroidUtilities.dp(63 + (usePadding ? 11 : 0)) - lockDrawable.getIntrinsicWidth(); nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; } + nameLockTop = AndroidUtilities.dp(15); } else { - drawNameLock = false; - if (!LocaleController.isRTL) { - nameLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); + if (chat != null) { + nameLockTop = AndroidUtilities.dp(26); + if (chat.id < 0) { + drawNameBroadcast = true; + } else { + drawNameGroup = true; + } + if (!LocaleController.isRTL) { + nameLockLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); + nameLeft = AndroidUtilities.dp(65 + (usePadding ? 11 : 0)) + (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); + } else { + nameLockLeft = width - AndroidUtilities.dp(63 + (usePadding ? 11 : 0)) - (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); + nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; + } } else { - nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; + if (!LocaleController.isRTL) { + nameLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); + } else { + nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; + } } } @@ -326,6 +364,8 @@ public class ChatOrUserCell extends BaseCell { } if (drawNameLock) { nameWidth -= AndroidUtilities.dp(6) + lockDrawable.getIntrinsicWidth(); + } else if (drawNameBroadcast) { + nameWidth -= AndroidUtilities.dp(6) + broadcastDrawable.getIntrinsicWidth(); } CharSequence nameStringFinal = TextUtils.ellipsize(nameString, currentNamePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java index a4c9ba647..11701d32f 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java @@ -463,7 +463,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not if (info != null && info instanceof TLRPC.TL_chatParticipantsForbidden) { return; } - if (currentChat.participants_count == 0 || currentChat.left || currentChat instanceof TLRPC.TL_chatForbidden) { + int count = currentChat.participants_count; + if (info != null) { + count = info.participants.size(); + } + if (count == 0 || currentChat.left || currentChat instanceof TLRPC.TL_chatForbidden) { return; } Bundle args = new Bundle(); @@ -1248,10 +1252,14 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (currentChat.left) { actionBarLayer.setSubtitle(LocaleController.getString("YouLeft", R.string.YouLeft)); } else { - if (onlineCount > 0 && currentChat.participants_count != 0) { - actionBarLayer.setSubtitle(String.format("%s, %d %s", LocaleController.formatPluralString("Members", currentChat.participants_count), onlineCount, LocaleController.getString("Online", R.string.Online))); + int count = currentChat.participants_count; + if (info != null) { + count = info.participants.size(); + } + if (onlineCount > 0 && count != 0) { + actionBarLayer.setSubtitle(String.format("%s, %d %s", LocaleController.formatPluralString("Members", count), onlineCount, LocaleController.getString("Online", R.string.Online))); } else { - actionBarLayer.setSubtitle(LocaleController.formatPluralString("Members", currentChat.participants_count)); + actionBarLayer.setSubtitle(LocaleController.formatPluralString("Members", count)); } } } else if (currentUser != null) { @@ -2962,9 +2970,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not } else if (lower_part < 0) { args.putInt("chat_id", -lower_part); } + forwardSelectedMessages(did, param); presentFragment(new ChatActivity(args), true); removeSelfFromStack(); - forwardSelectedMessages(did, param); } else { activity.finishFragment(); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java index 4f8f86987..1dd411aad 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatProfileActivity.java @@ -623,10 +623,15 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen textView.setText(chat.title); - if (chat.participants_count != 0 && onlineCount > 0) { - onlineText.setText(Html.fromHtml(String.format("%s, %d %s", LocaleController.formatPluralString("Members", chat.participants_count), onlineCount, LocaleController.getString("Online", R.string.Online)))); + int count = chat.participants_count; + if (info != null) { + count = info.participants.size(); + } + + if (count != 0 && onlineCount > 0) { + onlineText.setText(Html.fromHtml(String.format("%s, %d %s", LocaleController.formatPluralString("Members", count), onlineCount, LocaleController.getString("Online", R.string.Online)))); } else { - onlineText.setText(LocaleController.formatPluralString("Members", chat.participants_count)); + onlineText.setText(LocaleController.formatPluralString("Members", count)); } TLRPC.FileLocation photo = null; @@ -650,7 +655,11 @@ public class ChatProfileActivity extends BaseFragment implements NotificationCen textView.setText(LocaleController.getString("SHAREDMEDIA", R.string.SHAREDMEDIA)); } else if (i == membersSectionRow) { TLRPC.Chat chat = MessagesController.getInstance().chats.get(chat_id); - textView.setText(LocaleController.formatPluralString("Members", chat.participants_count).toUpperCase()); + int count = chat.participants_count; + if (info != null) { + count = info.participants.size(); + } + textView.setText(LocaleController.formatPluralString("Members", count).toUpperCase()); } } else if (type == 2) { if (view == null) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java index f3c906c67..3e4059310 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java @@ -264,7 +264,11 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter if (obj instanceof TLRPC.User) { dialog_id = ((TLRPC.User) obj).id; } else if (obj instanceof TLRPC.Chat) { - dialog_id = -((TLRPC.Chat) obj).id; + if (((TLRPC.Chat) obj).id > 0) { + dialog_id = -((TLRPC.Chat) obj).id; + } else { + dialog_id = AndroidUtilities.makeBroadcastId(((TLRPC.Chat) obj).id); + } } else if (obj instanceof TLRPC.EncryptedChat) { dialog_id = ((long)((TLRPC.EncryptedChat) obj).id) << 32; } @@ -330,7 +334,10 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); builder.setTitle(LocaleController.getString("AppName", R.string.AppName)); - if ((int)selectedDialog < 0) { + int lower_id = (int)selectedDialog; + int high_id = (int)(selectedDialog >> 32); + + if (lower_id < 0 && high_id != 1) { builder.setItems(new CharSequence[]{LocaleController.getString("ClearHistory", R.string.ClearHistory), LocaleController.getString("DeleteChat", R.string.DeleteChat)}, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml index d5880fb78..605e883f4 100644 --- a/TMessagesProj/src/main/res/values-it/strings.xml +++ b/TMessagesProj/src/main/res/values-it/strings.xml @@ -58,12 +58,12 @@ Seleziona chat - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Lista Broadcast + Nuova Lista Broadcast + Immetti il nome della lista + Hai creato una lista broadcast + Aggiungi Destinatario + Rimuovi dalla lista broadcast Seleziona file @@ -158,7 +158,7 @@ %1$s ti ha rimosso dal gruppo %2$s %1$s ha lasciato il gruppo %2$s %1$s ha iniziato a usare Telegram! - %1$s,\nAbbiamo rilevato un accesso al tuo account da un nuovo dispositivo %2$s\n\nDispositivo: %3$s\nPosizione: %4$s\n\nSe non sei stato tu, puoi andare su Impostazioni - Termina tutte le sessioni.\n\nGrazie,\nla squadra di Telegram + %1$s,\nAbbiamo rilevato un accesso al tuo account da un nuovo dispositivo %2$s\n\nDispositivo: %3$s\nPosizione: %4$s\n\nSe non sei stato tu, puoi andare su Impostazioni - Termina tutte le sessioni.\n\nGrazie,\nIl Team di Telegram %1$s ha aggiornato la foto del profilo @@ -271,19 +271,19 @@ Abilitato Disabilitato Servizio notifiche - Se i servizi di Google Play ti bastano per ricevere le notifiche, puoi disabilitare il Servizio notifiche. Tuttavia sarebbe meglio lasciarlo abilitato al fine di mantenere l\'applicazione attiva in background e ricevere notifiche istantanee. + Se i servizi di Google Play sono sufficienti per ricevere le notifiche, è possibile disabilitare il Servizio Notifiche. Ti raccomandiamo comunque di lasciarlo abilitato per lasciare l\'app attiva in background e ricevere le notifiche istantanee. Ordina per Importa contatti Solo tramite WiFi Nome Cognome Colore LED - Notifica popup + Notifiche Popup Nessun popup Solo con schermo acceso Solo con schermo spento Mostra sempre i popup - Badge Number + Contatore Badge Nessun media condiviso @@ -308,9 +308,9 @@ Ancora nessuna foto - Edit Video - Original Video - Edited Video + Modifica Video + Video Originale + Video Modificato Avanti @@ -370,8 +370,8 @@ Cognome non valido Caricamento… Non hai un lettore video, per favore installane uno per continuare - Invia un’email a sms@telegram.org spiegandoci il problema. - Non hai nessuna applicazione che può gestire il tipo mime \'%1$s\', installane una per continuare + Invia un’email a sms@telegram.org e parlaci del tuo problema. + Nessuna applicazione può gestire il tipo di file \'%1$s\', per favore installane una per proseguire Questo utente non ha ancora Telegram, vuoi invitarlo? Sei sicuro? Vuoi aggiungere il contatto? @@ -383,7 +383,7 @@ Chiudere tutte le altre sessioni? Eliminare il gruppo e uscire da esso? Eliminare questa chat? - Condividere le proprie informazioni di contatto? + Condividere le informazioni del proprio contatto? Bloccare questo contatto? Sbloccare questo contatto? Eliminare questo contatto? diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml index e511ad0f3..20d4f2fe7 100644 --- a/TMessagesProj/src/main/res/values-nl/strings.xml +++ b/TMessagesProj/src/main/res/values-nl/strings.xml @@ -58,12 +58,12 @@ Kies een gesprek - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Verzendlijst + Nieuwe verzendlijst + Naam van lijst + Je hebt een verzendlijst gemaakt + Ontvanger toevoegen + Verwijder van verzendlijst Kies een bestand @@ -118,7 +118,7 @@ SLEEP OM TE ANNULEREN Opslaan in Downloads Vertaling toepassen - Bijlageformaat niet ondersteund + Bestandstype niet ondersteund Privégesprek aangevraagd @@ -158,7 +158,7 @@ %1$s heeft je verwijderd uit de groep %2$s %1$s heeft de groep %2$s verlaten %1$s heeft nu Telegram! - %1$s,\nEr is op je account ingelogd vanaf een nieuw apparaat op %2$s\n\nApparaat: %3$s\nLocatie: %4$s\n\nAls jij dit niet was, kun je alle sessies beëindigen via Instellingen – Alle andere sessies beëindigen.\n\nHet Telegram-team + %1$s,\nEr is op je account ingelogd vanaf een nieuw apparaat op %2$s\n\nApparaat: %3$s\nLocatie: %4$s\n\nAls jij dit niet was, kun je alle sessies beëindigen via Instellingen – Beëindig alle andere sessies.\n\nBedankt,\nHet Telegram-team %1$s heeft zijn/haar profielfoto gewijzigd @@ -253,7 +253,7 @@ Achtergrond gesprekken BERICHTEN Verzenden met Enter - Alle andere sessies beëindigen + Beëindig alle andere sessies FOTO\'S AUTOMATISCH DOWNLOADEN GELUIDSBESTANDEN AUTOMATISCH DOWNLOADEN Groepen @@ -271,19 +271,19 @@ Inschakelen Uitschakelen Meldingenservice - Als google play services genoeg is om notificaties te ontvangen, kan de meldingenservice worden uitgeschakeld. Echter, we adviseren de service ingeschakeld te laten zodat de app in de achtergrond blijft draaien en meldingen direct worden ontvangen. + Als Google Play Services genoeg voor je is om meldingen te ontvangen kun je de Meldingenservice uitschakelen. We raden echter aan dit ingeschakeld te laten om de app in de achtergrond te laten draaien en directe meldingen te ontvangen. Sorteren op Importeer contacten Alleen via WiFi Voornaam Achternaam LED kleur - Popup melding + Popup meldingen Geen popup Alleen wanneer scherm \"aan\" staat Alleen wanneer scherm \"uit\" staat Altijd popup tonen - Badge Number + Badgenummer Nog geen media gedeeld @@ -308,9 +308,9 @@ Nog geen foto\'s - Edit Video - Original Video - Edited Video + Video bewerken + Originele video + Bewerkte video Volgende @@ -370,8 +370,8 @@ Ongeldige achternaam Bezig met laden… Je hebt geen mediaspeler. Installeer een mediaspeler om door te gaan. - Stuur aub een emailbericht naar sms@telegram.org en beschrijf uw probleem - Je hebt geen applicaties die het MIME-type \'%1$s\' ondersteunen. Installeer een geschikte applicatie om door te gaan. + Mail ons op sms@telegram.org en vertel ons over je probleem. + Je hebt geen apps die bestandstype \'%1$s\' kunnen verwerken, gelieve een compitabele app te installeren Deze gebruiker heeft nog geen Telegram. Wil je een uitnodiging sturen? Weet je het zeker? Contact toevoegen? @@ -379,15 +379,15 @@ Berichten doorsturen naar %1$s? Dit gesprek verwijderen? Berichten naar %1$s verzenden? - Weet u zeker dat u wil uitloggen? - Alle andere apparaten afmelden? - Deze groep verlaten en groep verwijderen? - Dit gesprek verwijderen? - Deze contact-informatie delen? - Deze persoon blokkeren? - Deze persoon deblokkeren? - Deze contactpersoon verwijderen? - Een privégesprek starten? + Weet je zeker dat je wilt uitloggen? + Weet je zeker dat je alle andere sessies wilt beëindigen? + Weet je zeker dat je alles wilt verwijderen en de groep wilt verlaten? + Weet je zeker dat je dit gesprek wilt verwijderen? + Weet je zeker dat je je contactinformatie wilt delen? + Weet je zeker dat je deze persoon wilt blokkeren? + Weet je zeker dat je deze persoon wilt deblokkeren? + Weet je zeker dat je deze contactpersoon wilt verwijderen? + Weet je zeker dat je een privégesprek wilt starten? doorsturen via mijn eigen naam @@ -404,7 +404,7 @@ Telegram]]> beveiligt je berichten tegen hackers Telegram]]> heeft geen beperkingen op de grootte van je media en gesprekken Telegram]]> biedt toegang tot je berichten vanaf meerdere apparaten - Telegram]]> berichten zijn sterk versleuteld en kunnen zichzelf vernietigen + Telegram]]> berichten zijn sterk versleuteld]]>en kunnen zichzelf vernietigen Begin nu met chatten diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml index 1be275de5..8a274f346 100644 --- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml +++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml @@ -58,12 +58,12 @@ Selecione uma Conversa - Broadcast List - New Broadcast List - Enter list name - You created a broadcast list - Add Recipient - Remove from broadcast list + Lista de Broadcast + Nova lista de Broadcast + Digite o nome da lista + Você criou uma lista de broadcast + Adicionar Recipiente + Remover da lista de broadcast Selecione um Arquivo @@ -158,7 +158,7 @@ %1$s removeu você do grupo %2$s %1$s saiu do grupo %2$s %1$s entrou para o Telegram! - %1$s,\nNós detectamos um acesso à sua conta de um novo dispositivo em %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\n\nCaso não tenha sido você, vá para Configurações – Encerrar todas as sessões.\n\nObrigado,\nA equipe do Telegram + %1$s,\nNós detectamos um login na sua conta de um novo dispositivo %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\n\nSe não foi você, você pode ir para Configurações - Terminar todas as sessões.\n\nAtenciosamente,\nTime do Telegram %1$s atualizou a foto do perfil @@ -271,19 +271,19 @@ Ativado Desativado Serviço de Notificações - Se os serviços do Google Play forem suficientes para você receber as notificações, você pode desabilitar o \"Serviço de Notificações\". Porém, nós recomendamos deixá-lo ativo para que o aplicativo continue rodando em segundo plano e recebendo notificações instantâneas. + Se o serviço de notificação do Google Play é o suficiente para você, você pode desativar as Notificações de Serviço. No entanto, recomendamos que você deixá-lo habilitado para manter o aplicativo em execução em segundo plano e receber notificações instantâneas. Ordenar Por Importar Contatos Apenas por WiFi Primeiro nome Sobrenome Cor do LED - Notificação Popup + Notificações Popup Sem popup Somente com a tela ligada Somente com a tela desligada Sempre mostrar popup - Badge Number + Contador de medalhas Ainda não há mídia compartilhada @@ -308,9 +308,9 @@ Ainda não há fotos - Edit Video - Original Video - Edited Video + Editar Vídeo + Vídeo Original + Vídeo Editado Próximo @@ -370,8 +370,8 @@ Sobrenome inválido Carregando... Você não possui um reprodutor de vídeo, instale um para continuar - Por favor, envie um email para sms@telegram.org e explique seu problema. - Você não possui algum aplicativo que pode lidar com o tipo MIME \'%1$s\'. Por favor, instale um para continuar + Por favor, envie um email para sms@telegram.org e conte-nos sobre seu problema. + Você não possui uma aplicação que suporte o tipo de arquivo \'%1$s\', por favor instale uma e continue Este usuário ainda não possui Telegram, deseja enviar um convite? Você tem certeza? Adicionar contato? @@ -379,15 +379,15 @@ Encaminhar mensagem para %1$s? Apagar esta conversa? Enviar mensagens para %1$s? - Você tem certeza que deseja sair dessa sessão? + Você tem certeza que deseja sair? Você tem certeza que deseja terminar todas as outras sessões? Você tem certeza que deseja deletar e sair do grupo? Você tem certeza que deseja deletar esta conversa? - Você tem certeza que deseja compartilhar as informações do seu contato? + Você tem certesa que deseja compartilhar suas informações de contato? Você tem certeza que deseja bloquear este contato? Você tem certeza que deseja desbloquear este contato? Você tem certeza que deseja deletar este contato? - Você tem certeza que deseja iniciar uma conversa secreta? + Você tem certeza que deseja começar uma conversa secreta? encaminhar pelo meu nome @@ -404,7 +404,7 @@ Telegram]]> mantém suas mensagens seguras contra ataques de hackers Telegram]]> não tem limites para o tamanho de suas mídias e conversas Telegram]]> permite que você acesse suas mensagens a partir de vários dispositivos - As mensagens do Telegram]]> são fortemente criptografadas e podem se autodestruir + As mensagens do Telegram]]> são fortemente criptografadas]]>e podem se autodestruir Comece a conversar