diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle
index 7998b563..3458dd88 100644
--- a/TMessagesProj/build.gradle
+++ b/TMessagesProj/build.gradle
@@ -80,7 +80,7 @@ android {
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
- versionCode 344
- versionName "1.9.2"
+ versionCode 345
+ versionName "1.9.3"
}
}
diff --git a/TMessagesProj/src/main/AndroidManifest.xml b/TMessagesProj/src/main/AndroidManifest.xml
index f7bfaaa0..b6a7aa8a 100644
--- a/TMessagesProj/src/main/AndroidManifest.xml
+++ b/TMessagesProj/src/main/AndroidManifest.xml
@@ -147,6 +147,8 @@
+
+
diff --git a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java
index 6278d4e5..59ef6766 100644
--- a/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java
+++ b/TMessagesProj/src/main/java/org/telegram/android/ContactsController.java
@@ -17,7 +17,6 @@ import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.provider.ContactsContract;
-import android.provider.Settings;
import android.util.SparseArray;
import org.telegram.PhoneFormat.PhoneFormat;
@@ -49,7 +48,6 @@ public class ContactsController {
private boolean contactsBookLoaded = false;
private String lastContactsVersions = "";
private ArrayList delayedContactsUpdate = new ArrayList();
- public int nameDisplayOrder = 1;
public static class Contact {
public int id;
@@ -101,14 +99,6 @@ public class ContactsController {
return localInstance;
}
- public ContactsController() {
- try {
- nameDisplayOrder = Settings.System.getInt(ApplicationLoader.applicationContext.getContentResolver(), "android.contacts.DISPLAY_ORDER");
- } catch (Exception e) {
- //don't promt
- }
- }
-
public void cleanup() {
contactsBook.clear();
contactsBookSPhones.clear();
@@ -1576,7 +1566,7 @@ public class ContactsController {
public static String formatName(String firstName, String lastName) {
String result = null;
- if (ContactsController.getInstance().nameDisplayOrder == 1) {
+ if (LocaleController.nameDisplayOrder == 1) {
result = firstName;
if (result == null || result.length() == 0) {
result = lastName;
diff --git a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java
index c582bc0e..febbab75 100644
--- a/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java
+++ b/TMessagesProj/src/main/java/org/telegram/android/LocaleController.java
@@ -47,6 +47,7 @@ public class LocaleController {
static final int QUANTITY_MANY = 0x0010;
public static boolean isRTL = false;
+ public static int nameDisplayOrder = 1;
private static boolean is24HourFormat = false;
public static FastDateFormat formatterDay;
public static FastDateFormat formatterWeek;
@@ -74,7 +75,7 @@ public class LocaleController {
@Override
public void run() {
if (!formatterMonth.getTimeZone().equals(TimeZone.getDefault())) {
- LocaleController.recreateFormatters();
+ LocaleController.getInstance().recreateFormatters();
}
}
});
@@ -541,14 +542,18 @@ public class LocaleController {
return getString("LanguageName", R.string.LanguageName);
}
- public static String getString(String key, int res) {
- String value = getInstance().localeValues.get(key);
+ private String getStringInternal(String key, int res) {
+ String value = localeValues.get(key);
if (value == null) {
value = ApplicationLoader.applicationContext.getString(res);
}
return value;
}
+ public static String getString(String key, int res) {
+ return getInstance().getStringInternal(key, res);
+ }
+
public static String formatPluralString(String key, int plural) {
if (key == null || key.length() == 0 || getInstance().currentPluralRules == null) {
return "LOC_ERR:" + key;
@@ -664,32 +669,44 @@ public class LocaleController {
}
}
- public static void recreateFormatters() {
+ public void recreateFormatters() {
Locale locale = Locale.getDefault();
String lang = locale.getLanguage();
if (lang == null) {
lang = "en";
}
isRTL = lang.toLowerCase().equals("ar");
- if (lang.equals("en")) {
- formatterMonth = FastDateFormat.getInstance("MMM dd", locale);
- formatterYear = FastDateFormat.getInstance("dd.MM.yy", locale);
- formatterYearMax = FastDateFormat.getInstance("dd.MM.yyyy", locale);
- chatDate = FastDateFormat.getInstance("MMMM d", locale);
- chatFullDate = FastDateFormat.getInstance("MMMM d, yyyy", locale);
- } else if (lang.startsWith("es")) {
- formatterMonth = FastDateFormat.getInstance("dd 'de' MMM", locale);
- formatterYear = FastDateFormat.getInstance("dd.MM.yy", locale);
- formatterYearMax = FastDateFormat.getInstance("dd.MM.yyyy", locale);
- chatDate = FastDateFormat.getInstance("d 'de' MMMM", locale);
- chatFullDate = FastDateFormat.getInstance("d 'de' MMMM 'de' yyyy", locale);
- } else {
- formatterMonth = FastDateFormat.getInstance("dd MMM", locale);
- formatterYear = FastDateFormat.getInstance("dd.MM.yy", locale);
- formatterYearMax = FastDateFormat.getInstance("dd.MM.yyyy", locale);
- chatDate = FastDateFormat.getInstance("d MMMM", locale);
- chatFullDate = FastDateFormat.getInstance("d MMMM yyyy", locale);
+ nameDisplayOrder = lang.toLowerCase().equals("ko") ? 2 : 1;
+ String formatString = getStringInternal("formatterMonth", R.string.formatterMonth);
+ if (formatString == null || formatString.length() == 0) {
+ formatString = "dd MMM";
}
+ formatterMonth = FastDateFormat.getInstance(formatString, locale);
+
+ formatString = getStringInternal("formatterYear", R.string.formatterYear);
+ if (formatString == null || formatString.length() == 0) {
+ formatString = "dd.MM.yy";
+ }
+ formatterYear = FastDateFormat.getInstance(formatString, locale);
+
+ formatString = getStringInternal("formatterYearMax", R.string.formatterYearMax);
+ if (formatString == null || formatString.length() == 0) {
+ formatString = "dd.MM.yyyy";
+ }
+ formatterYearMax = FastDateFormat.getInstance(formatString, locale);
+
+ formatString = getStringInternal("chatDate", R.string.chatDate);
+ if (formatString == null || formatString.length() == 0) {
+ formatString = "d MMMM";
+ }
+ chatDate = FastDateFormat.getInstance(formatString, locale);
+
+ formatString = getStringInternal("chatFullDate", R.string.chatFullDate);
+ if (formatString == null || formatString.length() == 0) {
+ formatString = "d MMMM yyyy";
+ }
+ chatFullDate = FastDateFormat.getInstance(formatString, locale);
+
formatterWeek = FastDateFormat.getInstance("EEE", locale);
if (lang != null) {
diff --git a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java
index 5a395168..d48d7b70 100644
--- a/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java
+++ b/TMessagesProj/src/main/java/org/telegram/android/MessagesController.java
@@ -1648,7 +1648,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
int high_id = (int)(dialog_id >> 32);
if (lower_part != 0) {
- if (max_id == 0 && offset == 0 || high_id == 1) {
+ if (max_positive_id == 0 && offset == 0 || high_id == 1) {
return;
}
TLRPC.TL_messages_readHistory req = new TLRPC.TL_messages_readHistory();
diff --git a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java
index cc3327a4..9bcfcf38 100644
--- a/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java
+++ b/TMessagesProj/src/main/java/org/telegram/android/NotificationsController.java
@@ -18,10 +18,12 @@ import android.content.pm.ResolveInfo;
import android.graphics.drawable.BitmapDrawable;
import android.media.AudioManager;
import android.net.Uri;
+import android.os.Build;
import android.os.SystemClock;
import android.provider.Settings;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
+import android.support.v4.app.RemoteInput;
import org.json.JSONArray;
import org.json.JSONObject;
@@ -47,6 +49,8 @@ public class NotificationsController {
private HashMap pushMessagesDict = new HashMap();
private NotificationManagerCompat notificationManager = null;
private HashMap pushDialogs = new HashMap();
+ private HashMap wearNoticationsIds = new HashMap();
+ private int wearNotificationId = 10000;
public ArrayList popupMessages = new ArrayList();
private long openned_dialog_id = 0;
private int total_unread_count = 0;
@@ -79,6 +83,7 @@ public class NotificationsController {
pushMessagesDict.clear();
pushDialogs.clear();
popupMessages.clear();
+ wearNoticationsIds.clear();
notifyCheck = false;
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
@@ -261,6 +266,7 @@ public class NotificationsController {
MessageObject lastMessageObject = pushMessages.get(0);
long dialog_id = lastMessageObject.getDialogId();
+ int mid = lastMessageObject.messageOwner.id;
int chat_id = lastMessageObject.messageOwner.to_id.chat_id;
int user_id = lastMessageObject.messageOwner.to_id.user_id;
if (user_id == 0) {
@@ -387,7 +393,9 @@ public class NotificationsController {
.setSmallIcon(R.drawable.notification)
.setAutoCancel(true)
.setNumber(total_unread_count)
- .setContentIntent(contentIntent);
+ .setContentIntent(contentIntent)
+ .setGroup("messages")
+ .setGroupSummary(true);
String lastMessage = null;
String lastMessageFull = null;
@@ -479,18 +487,119 @@ public class NotificationsController {
mBuilder.setVibrate(new long[]{0, 0});
}
- //RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY).setLabel(LocaleController.getString("Reply", R.string.Reply)).build();
-
notificationManager.notify(1, mBuilder.build());
if (preferences.getBoolean("EnablePebbleNotifications", false)) {
sendAlertToPebble(lastMessageFull);
}
+ showWearNotifications(notifyAboutLast);
scheduleNotificationRepeat();
} catch (Exception e) {
FileLog.e("tmessages", e);
}
}
+ public void showWearNotifications(boolean notifyAboutLast) {
+ if (Build.VERSION.SDK_INT < 19) {
+ return;
+ }
+ ArrayList sortedDialogs = new ArrayList();
+ HashMap> messagesByDialogs = new HashMap>();
+ for (MessageObject messageObject : pushMessages) {
+ long dialog_id = messageObject.getDialogId();
+ if ((int)dialog_id == 0) {
+ continue;
+ }
+
+ ArrayList arrayList = messagesByDialogs.get(dialog_id);
+ if (arrayList == null) {
+ arrayList = new ArrayList();
+ messagesByDialogs.put(dialog_id, arrayList);
+ sortedDialogs.add(0, dialog_id);
+ }
+ arrayList.add(messageObject);
+ }
+
+ HashMap oldIds = new HashMap();
+ oldIds.putAll(wearNoticationsIds);
+ wearNoticationsIds.clear();
+
+ for (long dialog_id : sortedDialogs) {
+ ArrayList messageObjects = messagesByDialogs.get(dialog_id);
+ int max_id = messageObjects.get(0).messageOwner.id;
+ TLRPC.Chat chat = null;
+ TLRPC.User user = null;
+ String name = null;
+ if (dialog_id > 0) {
+ user = MessagesController.getInstance().getUser((int)dialog_id);
+ if (user == null) {
+ continue;
+ }
+ } else {
+ chat = MessagesController.getInstance().getChat(-(int)dialog_id);
+ if (chat == null) {
+ continue;
+ }
+ }
+ if (chat != null) {
+ name = chat.title;
+ } else {
+ name = ContactsController.formatName(user.first_name, user.last_name);
+ }
+
+ Integer notificationId = oldIds.get(dialog_id);
+ if (notificationId == null) {
+ notificationId = wearNotificationId++;
+ } else {
+ oldIds.remove(dialog_id);
+ }
+
+ Intent replyIntent = new Intent(ApplicationLoader.applicationContext, WearReplyReceiver.class);
+ replyIntent.putExtra("dialog_id", dialog_id);
+ replyIntent.putExtra("max_id", max_id);
+ PendingIntent replyPendingIntent = PendingIntent.getBroadcast(ApplicationLoader.applicationContext, notificationId, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY).setLabel(LocaleController.getString("Reply", R.string.Reply)).build();
+ String replyToString;
+ if (chat != null) {
+ replyToString = LocaleController.formatString("ReplyToGroup", R.string.ReplyToGroup, name);
+ } else {
+ replyToString = LocaleController.formatString("ReplyToUser", R.string.ReplyToUser, name);
+ }
+ NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.ic_reply_icon, replyToString, replyPendingIntent).addRemoteInput(remoteInput).build();
+
+ String text = "";
+ for (MessageObject messageObject : messageObjects) {
+ String message = getStringForMessage(messageObject, false);
+ if (message == null) {
+ continue;
+ }
+ if (chat != null) {
+ message = message.replace(" @ " + name, "");
+ } else {
+ message = message.replace(name + ": ", "").replace(name + " ", "");
+ }
+ if (text.length() > 0) {
+ text += "\n\n";
+ }
+ text += message;
+ }
+
+ NotificationCompat.Builder builder = new NotificationCompat.Builder(ApplicationLoader.applicationContext)
+ .setContentTitle(name)
+ .setSmallIcon(R.drawable.notification)
+ .setGroup("messages")
+ .setContentText(text)
+ .setGroupSummary(false)
+ .extend(new NotificationCompat.WearableExtender().addAction(action));
+
+ notificationManager.notify(notificationId, builder.build());
+ wearNoticationsIds.put(dialog_id, notificationId);
+ }
+
+ for (HashMap.Entry entry : oldIds.entrySet()) {
+ notificationManager.cancel(entry.getValue());
+ }
+ }
+
private void dismissNotification() {
try {
notificationManager.cancel(1);
diff --git a/TMessagesProj/src/main/java/org/telegram/android/WearReplyReceiver.java b/TMessagesProj/src/main/java/org/telegram/android/WearReplyReceiver.java
new file mode 100644
index 00000000..9e32dc6a
--- /dev/null
+++ b/TMessagesProj/src/main/java/org/telegram/android/WearReplyReceiver.java
@@ -0,0 +1,37 @@
+/*
+ * This is the source code of Telegram for Android v. 1.7.x.
+ * It is licensed under GNU GPL v. 2 or later.
+ * You should have received a copy of the license in this archive (see LICENSE).
+ *
+ * Copyright Nikolai Kudashov, 2013-2014.
+ */
+
+package org.telegram.android;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.RemoteInput;
+
+public class WearReplyReceiver extends BroadcastReceiver {
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+ if (remoteInput == null) {
+ return;
+ }
+ CharSequence text = remoteInput.getCharSequence(NotificationsController.EXTRA_VOICE_REPLY);
+ if (text == null || text.length() == 0) {
+ return;
+ }
+ long dialog_id = intent.getLongExtra("dialog_id", 0);
+ int max_id = intent.getIntExtra("max_id", 0);
+ if (dialog_id == 0 || max_id == 0) {
+ return;
+ }
+ SendMessagesHelper.getInstance().sendMessage(text.toString(), dialog_id);
+ MessagesController.getInstance().markDialogAsRead(dialog_id, max_id, max_id, 0, 0, true, false);
+ }
+}
diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java
index 136883bb..1b58638c 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/Cells/ChatMediaCell.java
@@ -136,6 +136,7 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
progressPaint.setStyle(Paint.Style.STROKE);
+ progressPaint.setStrokeCap(Paint.Cap.ROUND);
progressPaint.setStrokeWidth(AndroidUtilities.dp(2));
decelerateInterpolator = new DecelerateInterpolator();
diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java
index c8e44a03..59b2734f 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java
@@ -544,6 +544,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
args.putBoolean("onlySelect", true);
args.putBoolean("serverOnly", true);
args.putString("selectAlertString", LocaleController.getString("ForwardMessagesTo", R.string.ForwardMessagesTo));
+ args.putString("selectAlertStringGroup", LocaleController.getString("ForwardMessagesToGroup", R.string.ForwardMessagesToGroup));
MessagesActivity fragment = new MessagesActivity(args);
fragment.setDelegate(ChatActivity.this);
presentFragment(fragment);
@@ -2914,6 +2915,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
args.putBoolean("onlySelect", true);
args.putBoolean("serverOnly", true);
args.putString("selectAlertString", LocaleController.getString("ForwardMessagesTo", R.string.ForwardMessagesTo));
+ args.putString("selectAlertStringGroup", LocaleController.getString("ForwardMessagesToGroup", R.string.ForwardMessagesToGroup));
MessagesActivity fragment = new MessagesActivity(args);
fragment.setDelegate(this);
presentFragment(fragment);
diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java
index e2d872e3..8076f045 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/ContactsActivity.java
@@ -39,7 +39,6 @@ import org.telegram.android.NotificationCenter;
import org.telegram.messenger.R;
import org.telegram.messenger.RPCRequest;
import org.telegram.messenger.UserConfig;
-import org.telegram.messenger.Utilities;
import org.telegram.ui.Adapters.ContactsActivityAdapter;
import org.telegram.ui.Adapters.ContactsActivitySearchAdapter;
import org.telegram.ui.Cells.ChatOrUserCell;
diff --git a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java
index 67534eb8..d5770b10 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java
@@ -576,6 +576,7 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa
Bundle args = new Bundle();
args.putBoolean("onlySelect", true);
args.putString("selectAlertString", LocaleController.getString("SendMessagesTo", R.string.SendMessagesTo));
+ args.putString("selectAlertStringGroup", LocaleController.getString("SendMessagesToGroup", R.string.SendMessagesToGroup));
MessagesActivity fragment = new MessagesActivity(args);
fragment.setDelegate(this);
actionBarLayout.presentFragment(fragment, false, true, true);
diff --git a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java
index 552f1752..1bceb8cf 100644
--- a/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java
+++ b/TMessagesProj/src/main/java/org/telegram/ui/MessagesActivity.java
@@ -53,6 +53,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
private View progressView;
private View empryView;
private String selectAlertString;
+ private String selectAlertStringGroup;
private boolean serverOnly = false;
private static boolean dialogsLoaded = false;
@@ -101,6 +102,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
onlySelect = arguments.getBoolean("onlySelect", false);
serverOnly = arguments.getBoolean("serverOnly", false);
selectAlertString = arguments.getString("selectAlertString");
+ selectAlertStringGroup = arguments.getString("selectAlertStringGroup");
}
if (!dialogsLoaded) {
MessagesController.getInstance().loadDialogs(0, 0, 100, true);
@@ -538,7 +540,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
}
private void didSelectResult(final long dialog_id, boolean useAlert, final boolean param) {
- if (useAlert && selectAlertString != null) {
+ if (useAlert && selectAlertString != null && selectAlertStringGroup != null) {
if (getParentActivity() == null) {
return;
}
@@ -552,7 +554,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
if (chat == null) {
return;
}
- builder.setMessage(LocaleController.formatStringSimple(selectAlertString, chat.title));
+ builder.setMessage(LocaleController.formatStringSimple(selectAlertStringGroup, chat.title));
} else {
if (lower_part > 0) {
TLRPC.User user = MessagesController.getInstance().getUser(lower_part);
@@ -565,7 +567,7 @@ public class MessagesActivity extends BaseFragment implements NotificationCenter
if (chat == null) {
return;
}
- builder.setMessage(LocaleController.formatStringSimple(selectAlertString, chat.title));
+ builder.setMessage(LocaleController.formatStringSimple(selectAlertStringGroup, chat.title));
}
}
} else {
diff --git a/TMessagesProj/src/main/res/drawable-hdpi/ic_reply_icon.png b/TMessagesProj/src/main/res/drawable-hdpi/ic_reply_icon.png
new file mode 100755
index 00000000..f483f342
Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-hdpi/ic_reply_icon.png differ
diff --git a/TMessagesProj/src/main/res/drawable-mdpi/ic_reply_icon.png b/TMessagesProj/src/main/res/drawable-mdpi/ic_reply_icon.png
new file mode 100755
index 00000000..51386590
Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-mdpi/ic_reply_icon.png differ
diff --git a/TMessagesProj/src/main/res/drawable-xhdpi/ic_reply_icon.png b/TMessagesProj/src/main/res/drawable-xhdpi/ic_reply_icon.png
new file mode 100755
index 00000000..9caeae67
Binary files /dev/null and b/TMessagesProj/src/main/res/drawable-xhdpi/ic_reply_icon.png differ
diff --git a/TMessagesProj/src/main/res/values-ar/strings.xml b/TMessagesProj/src/main/res/values-ar/strings.xml
index d7adca22..2796762a 100644
--- a/TMessagesProj/src/main/res/values-ar/strings.xml
+++ b/TMessagesProj/src/main/res/values-ar/strings.xml
@@ -152,6 +152,8 @@
%1$s,\nتم تسجيل الدخول لحسابك من جهاز جديد يوم %2$s\n\nالجهاز: %3$s\nالموقع: %4$s\n\nإذا لم يكن أنت من سجل الدخول، يمكنك الذهاب للإعدادات ثم تسجيل الخروج من كافة الأجهزة الأخرى.\n\nشكرًا,\nفريق عمل تيليجرام
%1$s قام بتغيير صورته الشخصية
الرد
+ Reply to %1$s
+ Reply to %1$s
اختر جهة اتصال
لا توجد جهات اتصال بعد
@@ -377,6 +379,8 @@
هل أنت متأكد من رغبتك في حذف جهة الاتصال هذه؟
هل أنت متأكد من أنك تريد بدء محادثة سرية؟
أعد الإرسال باستخدام اسمي
+ هل ترغب في إرسال رسالة إلى %1$s؟
+ ؟%1$s هل تريد إعادة توجيه الرسائل إلى
تيليجرام
سريع
@@ -424,6 +428,12 @@
من %1$d جهات اتصال
من %1$d جهة اتصال
من %1$d جهة اتصال
+
+ dd MMM
+ dd.MM.yy
+ dd.MM.yyyy
+ d MMMM
+ d MMMM yyyy
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-de/strings.xml b/TMessagesProj/src/main/res/values-de/strings.xml
index 19d79b04..97e1b000 100644
--- a/TMessagesProj/src/main/res/values-de/strings.xml
+++ b/TMessagesProj/src/main/res/values-de/strings.xml
@@ -152,6 +152,8 @@
%1$s,\nWir haben eine Anmeldung von einem neuen Gerät am %2$s festgestellt.\n\nGerät: %3$s\nStandort: %4$s\n\nWenn du das nicht selbst gewesen bist, melde alle anderen Sitzungen in den Telegram Einstellungen unverzüglich ab.\n\nMit freundlichen Grüßen,\nDas Telegram Team
%1$s hat das Profilbild geändert
Beantworten
+ Reply to %1$s
+ Reply to %1$s
Kontakt auswählen
Noch keine Kontakte
@@ -377,6 +379,8 @@
Diesen Kontakt wirklich löschen?
Geheimen Chat starten?
mit meinem Namen weiterleiten
+ Nachricht an %1$s senden?
+ Nachrichten an %1$s weiterleiten?
Telegram
Schnell
@@ -424,6 +428,12 @@
von %1$d Kontakten
von %1$d Kontakten
von %1$d Kontakten
+
+ dd MMM
+ dd.MM.yy
+ dd.MM.yyyy
+ d MMMM
+ d MMMM yyyy
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-es/strings.xml b/TMessagesProj/src/main/res/values-es/strings.xml
index 66d490e8..3ef00b5d 100644
--- a/TMessagesProj/src/main/res/values-es/strings.xml
+++ b/TMessagesProj/src/main/res/values-es/strings.xml
@@ -152,6 +152,8 @@
%1$s,\nDetectamos un inicio de sesión en tu cuenta desde un nuevo dispositivo, el %2$s\n\nDispositivo: %3$s\nUbicación: %4$s\n\nSi no eras tú, puedes ir a Ajustes - Cerrar todas las otras sesiones.\n\nAtentamente,\nEl equipo de Telegram
%1$s actualizó su foto de perfil
Responder
+ Reply to %1$s
+ Reply to %1$s
Elegir contacto
Aún sin contactos
@@ -377,6 +379,8 @@
¿Quieres eliminar este contacto?
¿Quieres iniciar un chat secreto?
reenviar desde mi nombre
+ ¿Enviar mensajes a %1$s?
+ ¿Reenviar mensajes a %1$s?
Telegram
Rápida
@@ -424,6 +428,12 @@
de %1$d contactos
de %1$d contactos
de %1$d contactos
+
+ dd \'de\' MMM
+ dd.MM.yy
+ dd.MM.yyyy
+ d \'de\' MMMM
+ d \'de\' MMMM \'de\' yyyy
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-it/strings.xml b/TMessagesProj/src/main/res/values-it/strings.xml
index 954886b6..befdbb86 100644
--- a/TMessagesProj/src/main/res/values-it/strings.xml
+++ b/TMessagesProj/src/main/res/values-it/strings.xml
@@ -152,6 +152,8 @@
%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
Rispondi
+ Reply to %1$s
+ Reply to %1$s
Seleziona contatto
Ancora nessun contatto
@@ -377,6 +379,8 @@
Eliminare questo contatto?
Iniziare una chat segreta?
inoltra dal mio nome
+ Inviare i messaggi a %1$s?
+ Vuoi inoltrare i messaggi a %1$s?
Telegram
Veloce
@@ -424,6 +428,12 @@
da %1$d contatti
da %1$d contatti
da %1$d contatti
+
+ dd MMM
+ dd.MM.yy
+ dd.MM.yyyy
+ d MMMM
+ d MMMM yyyy
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-nl/strings.xml b/TMessagesProj/src/main/res/values-nl/strings.xml
index 0699e32b..403e510c 100644
--- a/TMessagesProj/src/main/res/values-nl/strings.xml
+++ b/TMessagesProj/src/main/res/values-nl/strings.xml
@@ -152,6 +152,8 @@
%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
Antwoord
+ Reply to %1$s
+ Reply to %1$s
Kies een contact
Nog geen contacten
@@ -377,6 +379,8 @@
Weet je zeker dat je deze contactpersoon wilt verwijderen?
Weet je zeker dat je een geheime chat wilt starten?
doorsturen via mijn eigen naam
+ Berichten naar %1$s verzenden?
+ Berichten doorsturen naar %1$s?
Telegram
Snel
@@ -424,6 +428,12 @@
van %1$d contactpersonen
van %1$d contactpersonen
van %1$d contactpersonen
+
+ dd MMM
+ dd.MM.yy
+ dd.MM.yyyy
+ d MMMM
+ d MMMM yyyy
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml
index 52e2cc57..515b1dfb 100644
--- a/TMessagesProj/src/main/res/values-pt-rBR/strings.xml
+++ b/TMessagesProj/src/main/res/values-pt-rBR/strings.xml
@@ -152,6 +152,8 @@
%1$s,\nNós detectamos um login na sua conta de um novo dispositivo %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\nSe não foi você, você pode ir em Configurações - Terminar todas as sessões.\n\nAtenciosamente,\nTime do Telegram
%1$s atualizou a foto do perfil
Responder
+ Reply to %1$s
+ Reply to %1$s
Selecionar Contato
Ainda não há contatos
@@ -377,6 +379,8 @@
Você tem certeza que deseja deletar este contato?
Você tem certeza que deseja começar uma conversa secreta?
encaminhar pelo meu nome
+ Enviar mensagens para %1$s?
+ Encaminhar mensagem para %1$s?
Telegram
Rápido
@@ -424,6 +428,12 @@
de %1$d contatos
de %1$d contatos
de %1$d contatos
+
+ dd MMM
+ dd.MM.yy
+ dd.MM.yyyy
+ d MMMM
+ d MMMM yyyy
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml
index 6c6ffea9..85c12846 100644
--- a/TMessagesProj/src/main/res/values-pt-rPT/strings.xml
+++ b/TMessagesProj/src/main/res/values-pt-rPT/strings.xml
@@ -152,6 +152,8 @@
%1$s,\nNós detectamos um login na sua conta de um novo dispositivo %2$s\n\nDispositivo: %3$s\nLocalização: %4$s\nSe não foi você, você pode ir em Configurações - Terminar todas as sessões.\n\nAtenciosamente,\nTime do Telegram
%1$s atualizou a foto do perfil
Responder
+ Reply to %1$s
+ Reply to %1$s
Selecionar Contato
Ainda não há contatos
@@ -377,6 +379,8 @@
Você tem certeza que deseja deletar este contato?
Você tem certeza que deseja começar uma conversa secreta?
encaminhar pelo meu nome
+ Enviar mensagens para %1$s?
+ Encaminhar mensagem para %1$s?
Telegram
Rápido
@@ -424,6 +428,12 @@
de %1$d contatos
de %1$d contatos
de %1$d contatos
+
+ dd MMM
+ dd.MM.yy
+ dd.MM.yyyy
+ d MMMM
+ d MMMM yyyy
CACHE_TAG
\ No newline at end of file
diff --git a/TMessagesProj/src/main/res/values/strings.xml b/TMessagesProj/src/main/res/values/strings.xml
index 55896522..f139a53e 100644
--- a/TMessagesProj/src/main/res/values/strings.xml
+++ b/TMessagesProj/src/main/res/values/strings.xml
@@ -152,6 +152,8 @@
%1$s,\nWe detected a login into your account from a new device on %2$s\n\nDevice: %3$s\nLocation: %4$s\n\nIf this wasn\'t you, you can go to Settings - Terminate all sessions.\n\nSincerely,\nThe Telegram Team
%1$s updated profile photo
Reply
+ Reply to %1$s
+ Reply to %1$s
Select Contact
No contacts yet
@@ -377,6 +379,8 @@
Are you sure you want to delete this contact?
Are you sure you want to start a secret chat?
forward from my name
+ Send messages to %1$s?
+ Forward messages to %1$s?
Telegram
Fast
@@ -424,6 +428,12 @@
from %1$d contacts
from %1$d contacts
from %1$d contacts
+
+ MMM dd
+ dd.MM.yy
+ dd.MM.yyyy
+ MMMM d
+ MMMM d, yyyy
CACHE_TAG
\ No newline at end of file