Update locales, bug fixes

This commit is contained in:
DrKLO 2014-08-30 22:30:42 +03:00
parent 16150fe751
commit 9f7b47f517
15 changed files with 148 additions and 115 deletions

View file

@ -80,7 +80,7 @@ android {
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 315
versionCode 318
versionName "1.8.0"
}
}

View file

@ -110,6 +110,16 @@ METHODDEF(void) my_error_exit(j_common_ptr cinfo) {
}
JNIEXPORT void Java_org_telegram_messenger_Utilities_blurBitmap(JNIEnv *env, jclass class, jobject bitmap, int width, int height, int stride) {
AndroidBitmapInfo info;
if (AndroidBitmap_getInfo(env, bitmap, &info) < 0) {
return;
}
if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {
return;
}
void *pixels = 0;
if (AndroidBitmap_lockPixels(env, bitmap, &pixels) < 0) {
return;

View file

@ -91,7 +91,7 @@ public class MessagesStorage {
database.executeFast("CREATE TABLE messages(mid INTEGER PRIMARY KEY, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE chats(uid INTEGER PRIMARY KEY, name TEXT, data BLOB)").stepThis().dispose();
database.executeFast("CREATE TABLE enc_chats(uid INTEGER PRIMARY KEY, user INTEGER, name TEXT, data BLOB, g BLOB, authkey BLOB, ttl INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE dialogs(did INTEGER PRIMARY KEY, date INTEGER, unread_count INTEGER, last_mid INTEGER, flags INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE dialogs(did INTEGER PRIMARY KEY, date INTEGER, unread_count INTEGER, last_mid INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE chat_settings(uid INTEGER PRIMARY KEY, participants BLOB)").stepThis().dispose();
database.executeFast("CREATE TABLE contacts(uid INTEGER PRIMARY KEY, mutual INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE pending_read(uid INTEGER PRIMARY KEY, max_id INTEGER)").stepThis().dispose();
@ -105,6 +105,7 @@ public class MessagesStorage {
database.executeFast("CREATE TABLE user_photos(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))").stepThis().dispose();
database.executeFast("CREATE TABLE blocked_users(uid INTEGER PRIMARY KEY)").stepThis().dispose();
database.executeFast("CREATE TABLE download_queue(uid INTEGER, type INTEGER, date INTEGER, data BLOB, PRIMARY KEY (uid, type));").stepThis().dispose();
database.executeFast("CREATE TABLE dialog_settings(did INTEGER PRIMARY KEY, flags INTEGER);").stepThis().dispose();
//database.executeFast("CREATE TABLE attach_data(uid INTEGER, id INTEGER, data BLOB, PRIMARY KEY (uid, id))").stepThis().dispose();
database.executeFast("CREATE TABLE user_contacts_v6(uid INTEGER PRIMARY KEY, fname TEXT, sname TEXT)").stepThis().dispose();
@ -121,7 +122,7 @@ public class MessagesStorage {
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_dialogs ON dialogs(date);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS date_idx_enc_tasks ON enc_tasks(date);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS last_mid_idx_dialogs ON dialogs(last_mid);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_flags_idx_dialogs ON dialogs(unread_count, flags);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_idx_dialogs ON dialogs(unread_count);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS uid_mid_idx_media ON media(uid, mid);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS mid_idx_media ON media(mid);").stepThis().dispose();
@ -132,7 +133,7 @@ public class MessagesStorage {
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
database.executeFast("PRAGMA user_version = 3").stepThis().dispose();
database.executeFast("PRAGMA user_version = 4").stepThis().dispose();
} else {
try {
SQLiteCursor cursor = database.queryFinalized("SELECT seq, pts, date, qts, lsv, sg, pbytes FROM params WHERE id = 1");
@ -164,8 +165,8 @@ public class MessagesStorage {
}
int version = database.executeInt("PRAGMA user_version");
if (version < 3) {
updateDbToVersion3();
if (version < 4) {
updateDbToVersion4();
}
}
} catch (Exception e) {
@ -174,7 +175,7 @@ public class MessagesStorage {
loadUnreadMessages();
}
public void updateDbToVersion3() {
public void updateDbToVersion4() {
storageQueue.postRunnable(new Runnable() {
@Override
public void run() {
@ -187,7 +188,6 @@ public class MessagesStorage {
database.executeFast("DROP INDEX IF EXISTS read_state_out_idx_messages;").stepThis().dispose();
database.executeFast("DROP INDEX IF EXISTS ttl_idx_messages;").stepThis().dispose();
database.executeFast("DROP INDEX IF EXISTS date_idx_messages;").stepThis().dispose();
database.executeFast("DROP INDEX IF EXISTS unread_count_idx_dialogs;").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
@ -206,23 +206,19 @@ public class MessagesStorage {
database.executeFast("CREATE TABLE IF NOT EXISTS download_queue(uid INTEGER, type INTEGER, date INTEGER, data BLOB, PRIMARY KEY (uid, type));").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS type_date_idx_download_queue ON download_queue(type, date);").stepThis().dispose();
database.executeFast("CREATE TABLE IF NOT EXISTS dialog_settings(did INTEGER PRIMARY KEY, flags INTEGER);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_idx_dialogs ON dialogs(unread_count);").stepThis().dispose();
database.executeFast("UPDATE messages SET send_state = 2 WHERE mid < 0 AND send_state = 1").stepThis().dispose();
try {
database.executeFast("ALTER TABLE dialogs ADD COLUMN flags INTEGER NOT NULL default 0;").stepThis().dispose();
} catch (Exception e) {
FileLog.e("tmessages", e);
}
database.executeFast("CREATE INDEX IF NOT EXISTS unread_count_flags_idx_dialogs ON dialogs(unread_count, flags);").stepThis().dispose();
database.executeFast("PRAGMA user_version = 3").stepThis().dispose();
database.executeFast("PRAGMA user_version = 4").stepThis().dispose();
storageQueue.postRunnable(new Runnable() {
@Override
public void run() {
String ids = "";
ArrayList<Integer> ids = new ArrayList<Integer>();
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
Map<String, ?> values = preferences.getAll();
for (Map.Entry<String, ?> entry : values.entrySet()) {
@ -231,15 +227,25 @@ public class MessagesStorage {
Integer value = (Integer)entry.getValue();
if (value == 2) {
key = key.replace("notify2_", "");
if (ids.length() != 0) {
ids += ",";
try {
ids.add(Integer.parseInt(key));
} catch (Exception e) {
e.printStackTrace();
}
ids += key;
}
}
}
try {
database.executeFast("UPDATE dialogs SET flags = 1 WHERE did IN (" + ids + ");").stepThis().dispose();
database.beginTransaction();
SQLitePreparedStatement state = database.executeFast("REPLACE INTO dialog_settings VALUES(?, ?)");
for (Integer id : ids) {
state.requery();
state.bindLong(1, id);
state.bindInteger(2, 1);
state.step();
}
state.dispose();
database.commitTransaction();
} catch (Exception e) {
FileLog.e("tmessages", e);
}
@ -345,7 +351,7 @@ public class MessagesStorage {
@Override
public void run() {
try {
database.executeFast("UPDATE dialogs SET flags = " + flags + " WHERE did = " + did).stepThis().dispose();
database.executeFast(String.format(Locale.US, "REPLACE INTO dialog_settings VALUES(%d, %d)", did, flags)).stepThis().dispose();
} catch (Exception e) {
FileLog.e("tmessages", e);
}
@ -359,9 +365,10 @@ public class MessagesStorage {
public void run() {
try {
final HashMap<Long, Integer> pushDialogs = new HashMap<Long, Integer>();
SQLiteCursor cursor = database.queryFinalized("SELECT did, unread_count FROM dialogs WHERE unread_count != 0 AND flags != 1");
SQLiteCursor cursor = database.queryFinalized("SELECT d.did, d.unread_count, s.flags FROM dialogs as d LEFT JOIN dialog_settings as s ON d.did = s.did WHERE d.unread_count != 0");
String ids = "";
while (cursor.next()) {
if (cursor.isNull(2) || cursor.intValue(2) != 1) {
long did = cursor.longValue(0);
int count = cursor.intValue(1);
pushDialogs.put(did, count);
@ -370,6 +377,7 @@ public class MessagesStorage {
}
ids += did;
}
}
cursor.dispose();
final ArrayList<TLRPC.Message> messages = new ArrayList<TLRPC.Message>();
@ -2237,12 +2245,11 @@ public class MessagesStorage {
buffersStorage.reuseFreeBuffer(data3);
if (dialog != null) {
state = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?)");
state = database.executeFast("REPLACE INTO dialogs(did, date, unread_count, last_mid) VALUES(?, ?, ?, ?)");
state.bindLong(1, dialog.id);
state.bindInteger(2, dialog.last_message_date);
state.bindInteger(3, dialog.unread_count);
state.bindInteger(4, dialog.top_message);
state.bindInteger(5, dialog.flags);
state.step();
state.dispose();
}
@ -2572,18 +2579,16 @@ public class MessagesStorage {
state3.dispose();
state4.dispose();
state = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?)");
state = database.executeFast("REPLACE INTO dialogs(did, date, unread_count, last_mid) VALUES(?, ?, ?, ?)");
for (HashMap.Entry<Long, TLRPC.Message> pair : messagesMap.entrySet()) {
Long key = pair.getKey();
int dialog_date = 0;
int old_unread_count = 0;
int old_flags = 0;
SQLiteCursor cursor = database.queryFinalized("SELECT date, unread_count, flags FROM dialogs WHERE did = " + key);
SQLiteCursor cursor = database.queryFinalized("SELECT date, unread_count FROM dialogs WHERE did = " + key);
if (cursor.next()) {
dialog_date = cursor.intValue(0);
old_unread_count = cursor.intValue(1);
old_flags = cursor.intValue(2);
}
cursor.dispose();
@ -2607,7 +2612,6 @@ public class MessagesStorage {
}
state.bindInteger(3, old_unread_count + unread_count);
state.bindInteger(4, messageId);
state.bindInteger(5, old_flags);
state.step();
}
state.dispose();
@ -3043,14 +3047,13 @@ public class MessagesStorage {
ArrayList<Integer> usersToLoad = new ArrayList<Integer>();
ArrayList<Integer> chatsToLoad = new ArrayList<Integer>();
ArrayList<Integer> encryptedToLoad = new ArrayList<Integer>();
cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state, d.flags FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid WHERE d.did IN(%s)", ids));
cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid WHERE d.did IN(%s)", ids));
while (cursor.next()) {
TLRPC.TL_dialog dialog = new TLRPC.TL_dialog();
dialog.id = cursor.longValue(0);
dialog.top_message = cursor.intValue(1);
dialog.unread_count = cursor.intValue(2);
dialog.last_message_date = cursor.intValue(3);
dialog.flags = cursor.intValue(8);
dialogs.dialogs.add(dialog);
ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(4));
@ -3315,14 +3318,13 @@ public class MessagesStorage {
usersToLoad.add(UserConfig.getClientUserId());
ArrayList<Integer> chatsToLoad = new ArrayList<Integer>();
ArrayList<Integer> encryptedToLoad = new ArrayList<Integer>();
SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state, d.flags FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid ORDER BY d.date DESC LIMIT %d,%d", offset, count));
SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT d.did, d.last_mid, d.unread_count, d.date, m.data, m.read_state, m.mid, m.send_state FROM dialogs as d LEFT JOIN messages as m ON d.last_mid = m.mid ORDER BY d.date DESC LIMIT %d,%d", offset, count));
while (cursor.next()) {
TLRPC.TL_dialog dialog = new TLRPC.TL_dialog();
dialog.id = cursor.longValue(0);
dialog.top_message = cursor.intValue(1);
dialog.unread_count = cursor.intValue(2);
dialog.last_message_date = cursor.intValue(3);
dialog.flags = cursor.intValue(8);
dialogs.dialogs.add(dialog);
ByteBufferDesc data = buffersStorage.getFreeBuffer(cursor.byteArrayLength(4));
@ -3498,12 +3500,14 @@ public class MessagesStorage {
if (!dialogs.dialogs.isEmpty()) {
SQLitePreparedStatement state = database.executeFast("REPLACE INTO messages VALUES(?, ?, ?, ?, ?, ?, ?, ?)");
SQLitePreparedStatement state2 = database.executeFast("REPLACE INTO dialogs VALUES(?, ?, ?, ?, ?)");
SQLitePreparedStatement state2 = database.executeFast("REPLACE INTO dialogs(did, date, unread_count, last_mid) VALUES(?, ?, ?, ?)");
SQLitePreparedStatement state3 = database.executeFast("REPLACE INTO media VALUES(?, ?, ?, ?)");
SQLitePreparedStatement state4 = database.executeFast("REPLACE INTO dialog_settings VALUES(?, ?)");
for (TLRPC.TL_dialog dialog : dialogs.dialogs) {
state.requery();
state2.requery();
state4.requery();
int uid = dialog.peer.user_id;
if (uid == 0) {
uid = -dialog.peer.chat_id;
@ -3526,12 +3530,12 @@ public class MessagesStorage {
state2.bindInteger(2, message.date);
state2.bindInteger(3, dialog.unread_count);
state2.bindInteger(4, dialog.top_message);
if (dialog.notify_settings.mute_until != 0) {
dialog.flags = 1;
}
state2.bindInteger(5, dialog.flags);
state2.step();
state4.bindLong(1, uid);
state4.bindInteger(2, dialog.notify_settings.mute_until != 0 ? 1 : 0);
state4.step();
if (message.media instanceof TLRPC.TL_messageMediaVideo || message.media instanceof TLRPC.TL_messageMediaPhoto) {
state3.requery();
state3.bindLong(1, message.id);
@ -3545,6 +3549,7 @@ public class MessagesStorage {
state.dispose();
state2.dispose();
state3.dispose();
state4.dispose();
}
if (!dialogs.users.isEmpty()) {

View file

@ -576,9 +576,8 @@ public class NotificationsController {
if (popup != 0) {
popupMessages.add(0, messageObject);
}
pushMessagesDict.put(messageObject.messageOwner.id, messageObject);
pushMessages.add(0, messageObject);
FileLog.e("tmessages", "processNewMessages add dialog = " + dialog_id);
pushMessagesDict.put(messageObject.messageOwner.id, messageObject);
}
}
@ -609,16 +608,17 @@ public class NotificationsController {
Integer currentCount = pushDialogs.get(dialog_id);
Integer newCount = entry.getValue();
FileLog.e("tmessages", "processDialogsUpdateRead dialog = " + dialog_id + " newCount = " + newCount + " oldCount = " + currentCount);
if (newCount < 0) {
if (currentCount == null) {
continue;
}
newCount = currentCount + newCount;
}
if (canAddValue || newCount == 0) {
if (currentCount != null) {
total_unread_count -= currentCount;
}
}
if (newCount == 0) {
pushDialogs.remove(dialog_id);
for (int a = 0; a < pushMessages.size(); a++) {
@ -654,12 +654,23 @@ public class NotificationsController {
pushMessagesDict.clear();
total_unread_count = 0;
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
HashMap<Long, Boolean> settingsCache = new HashMap<Long, Boolean>();
for (HashMap.Entry<Long, Integer> entry : dialogs.entrySet()) {
pushDialogs.put(entry.getKey(), entry.getValue());
total_unread_count += entry.getValue();
FileLog.e("tmessages", "processLoadedUnreadMessages dialog = " + entry.getKey() + " count = " + entry.getValue());
long dialog_id = entry.getKey();
Boolean value = settingsCache.get(dialog_id);
if (value == null) {
int notify_override = preferences.getInt("notify2_" + dialog_id, 0);
value = !(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || ((int) dialog_id < 0) && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0);
settingsCache.put(dialog_id, value);
}
if (!value) {
continue;
}
int count = entry.getValue();
pushDialogs.put(dialog_id, count);
total_unread_count += count;
}
FileLog.e("tmessages", "processLoadedUnreadMessages total = " + total_unread_count + " messages = " + messages.size());
if (messages != null) {
for (TLRPC.Message message : messages) {
if (pushMessagesDict.containsKey(message.id)) {
@ -667,7 +678,13 @@ public class NotificationsController {
}
MessageObject messageObject = new MessageObject(message, null, 0);
long dialog_id = messageObject.getDialogId();
if (dialog_id == openned_dialog_id && ApplicationLoader.isScreenOn) {
Boolean value = settingsCache.get(dialog_id);
if (value == null) {
int notify_override = preferences.getInt("notify2_" + dialog_id, 0);
value = !(notify_override == 2 || (!preferences.getBoolean("EnableAll", true) || ((int) dialog_id < 0) && !preferences.getBoolean("EnableGroup", true)) && notify_override == 0);
settingsCache.put(dialog_id, value);
}
if (!value || dialog_id == openned_dialog_id && ApplicationLoader.isScreenOn) {
continue;
}
pushMessagesDict.put(messageObject.messageOwner.id, messageObject);

View file

@ -8886,7 +8886,6 @@ public class TLRPC {
public int last_message_date;
public long id;
public int last_read;
public int flags;
public void readParams(AbsSerializedData stream) {
peer = (Peer)TLClassStore.Instance().TLdeserialize(stream, stream.readInt32());

View file

@ -405,6 +405,8 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
removeFragmentFromStack(fragmentsStack.get(a));
a--;
}
pushOpened = false;
isNew = false;
}
if (videoPath != null || photoPathsArray != null || sendingText != null || documentsPathsArray != null || contactsToSend != null) {
NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats);

View file

@ -2344,7 +2344,7 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
if (canShowBottom) {
toggleActionBar(!isActionBarVisible, true);
} else {
checkImageView.callOnClick();
checkImageView.performClick();
}
return true;
}

View file

@ -160,7 +160,7 @@
<string name="NotificationContactJoined">%1$s قام بالتسجيل في تيليجرام!</string>
<string name="NotificationUnrecognizedDevice">%1$s,\nتم تسجيل الدخول لحسابك من جهاز جديد يوم %2$s\n\nالجهاز: %3$s\nالموقع: %4$s\n\nإذا لم يكن أنت من سجل الدخول، يمكنك الذهاب للإعدادات ثم تسجيل الخروج من كافة الأجهزة الأخرى.\n\nشكرًا,\nفريق عمل تيليجرام</string>
<string name="NotificationContactNewPhoto">%1$s قام بتغيير صورته الشخصية</string>
<string name="Reply">Reply</string>
<string name="Reply">الرد</string>
<!--contacts view-->
<string name="SelectContact">اختر جهة اتصال</string>
@ -275,21 +275,21 @@
<string name="SortFirstName">الاسم الأول</string>
<string name="SortLastName">اسم العائلة</string>
<string name="LedColor">لون إضاءة الـ LED</string>
<string name="PopupNotification">إشعارات منبثقة</string>
<string name="PopupNotification">الإشعارات المنبثقة</string>
<string name="NoPopup">بدون إشعارات منبثقة</string>
<string name="OnlyWhenScreenOn">فقط عندما تكون الشاشة تعمل</string>
<string name="OnlyWhenScreenOff">فقط عندما تكون الشاشة مطفأة</string>
<string name="AlwaysShowPopup">دائمًا أظهر الإشعارات المنبثقة</string>
<string name="BadgeNumber">Badge Number</string>
<string name="Short">Short</string>
<string name="Long">Long</string>
<string name="SystemDefault">System default</string>
<string name="SettingsDefault">Settings default</string>
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
<string name="WhenUsingMobileData">When using mobile data</string>
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
<string name="WhenRoaming">When roaming</string>
<string name="NoMediaAutoDownload">No media</string>
<string name="BadgeNumber">عداد الشارات</string>
<string name="Short">قصير</string>
<string name="Long">طويل</string>
<string name="SystemDefault">النظام الإفتراضي</string>
<string name="SettingsDefault">الإعدادات الإفتراضية</string>
<string name="AutomaticMediaDownload">تنزيل الوسائط تلقائيا</string>
<string name="WhenUsingMobileData">عند استخدام البيانات الخلوية</string>
<string name="WhenConnectedOnWiFi">عند الاتصال بالشبكة اللاسلكية</string>
<string name="WhenRoaming">عند تواجدك خارج البلاد</string>
<string name="NoMediaAutoDownload">لا يوجد وسائط</string>
<!--media view-->
<string name="NoMedia">لا توجد وسائط بعد</string>
@ -376,24 +376,24 @@
<string name="InvalidLastName">اسم العائلة غير صحيح</string>
<string name="Loading">جاري التحميل ...</string>
<string name="NoPlayerInstalled">ليس لديك أي مشغل مقاطع مرئية، يرجى تنزيل أية مشغل</string>
<string name="NoMailInstalled">يرجى التفضل بإرسال بريد الكتروني إلى sms@telegram.org وشرح مشكلتك.</string>
<string name="NoMailInstalled">يرجى إرسال رسالة بواسطة البريد الإلكتروني إلى sms@telegram.org لتخبرنا عن مشكلتك.</string>
<string name="NoHandleAppInstalled">لا يوجد لديك تطبيق يمكنه فتح \'%1$s\'، يرجى تنزيل تطبيق مناسب للإستمرار</string>
<string name="InviteUser">هذا المستخدم ليس لديه تيليجرام بعد ، هل ترغب في دعوته الآن؟</string>
<string name="AreYouSure">هل أنت متأكد؟</string>
<string name="AddContactQ">هل تريد إضافة جهة اتصال؟</string>
<string name="AddToTheGroup">هل ترغب في إضافة %1$s للمجموعة؟\n\n\n\nعدد الرسائل الحديثة المراد إعادة تحويلها:</string>
<string name="AddToTheGroup">هل ترغب في إضافة %1$s للمجموعة؟\n\nعدد الرسائل الحديثة المراد إعادة تحويلها:</string>
<string name="ForwardMessagesTo">؟%1$s هل تريد إعادة توجيه الرسائل إلى</string>
<string name="DeleteChatQuestion">هل تريد حذف هذه الدردشة؟</string>
<string name="SendMessagesTo">هل ترغب في إرسال رسالة إلى %1$s؟</string>
<string name="AreYouSureLogout">هل أنت متأكد من رغبتك في تسجيل الخروج؟</string>
<string name="AreYouSureLogout">هل أنت متأكد من أنك تريد تسجيل الخروج؟</string>
<string name="AreYouSureSessions">هل أنت متأكد من تسجيل الخروج من جميع الأجهزة الأخرى باستثناء هذا الجهاز؟</string>
<string name="AreYouSureDeleteAndExit">هل أنت متأكد من رغبتك في مغادرة المجموعة وحذفها؟</string>
<string name="AreYouSureDeleteAndExit">هل أنت متأكد من أنك تريد حذف المجموعة والخروج منها؟</string>
<string name="AreYouSureDeleteThisChat">هل أنت متأكد من رغبتك في حذف المجموعة؟</string>
<string name="AreYouSureShareMyContactInfo">هل أنت متأكد من رغبتك في مشاركة جهة الاتصال الخاصة بك؟</string>
<string name="AreYouSureShareMyContactInfo">هل أنت متأكد من أنك تريد مشاركة معلومات جهة الاتصال الخاصة بك؟</string>
<string name="AreYouSureBlockContact">هل أنت متأكد من رغبتك في حظر جهة الاتصال هذه؟</string>
<string name="AreYouSureUnblockContact">هل أنت متأكد من رغبتك في إزالة الحظر عن جهة الاتصال هذه؟</string>
<string name="AreYouSureDeleteContact">هل أنت متأكد من رغبتك في حذف جهة الاتصال هذه؟</string>
<string name="AreYouSureSecretChat">هل أنت متأكد من رغبتك في بدء محادثة سرية؟</string>
<string name="AreYouSureSecretChat">هل أنت متأكد من أنك تريد بدء محادثة سرية؟</string>
<string name="ForwardFromMyName">أعد الإرسال باستخدام اسمي</string>
<!--Intro view-->

View file

@ -80,7 +80,7 @@
<string name="SdCard">SD-Karte</string>
<!--chat view-->
<string name="Invisible">unsichtbar</string>
<string name="Invisible">offline</string>
<string name="Typing">schreibt…</string>
<string name="Attach">Anhängen</string>
<string name="IsTyping">schreibt...</string>
@ -158,9 +158,9 @@
<string name="NotificationGroupKickYou">%1$s hat dich aus der Gruppe %2$s entfernt</string>
<string name="NotificationGroupLeftMember">%1$s hat die Gruppe %2$s verlassen</string>
<string name="NotificationContactJoined">%1$s benutzt jetzt Telegram!</string>
<string name="NotificationUnrecognizedDevice">%1$s,\nWir haben eine Anmeldung von einem neuen Gerät mit der IP-Adresse %2$s festgestellt.\n\nGerät: %3$s\nStandort: %4$s\n\nWenn du es nicht selbst gewesen bist, melde alle anderen Sitzungen in den Telegram Einstellungen unverzüglich ab. \n\n\nMit freundlichen Grüßen,\nDas Telegram Team</string>
<string name="NotificationUnrecognizedDevice">%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</string>
<string name="NotificationContactNewPhoto">%1$s hat das Profilbild geändert</string>
<string name="Reply">Reply</string>
<string name="Reply">Beantworten</string>
<!--contacts view-->
<string name="SelectContact">Kontakt auswählen</string>
@ -281,15 +281,15 @@
<string name="OnlyWhenScreenOff">Nur wenn Bildschirm „aus“</string>
<string name="AlwaysShowPopup">Popups immer anzeigen</string>
<string name="BadgeNumber">BADGE (Anzahl)</string>
<string name="Short">Short</string>
<string name="Long">Long</string>
<string name="SystemDefault">System default</string>
<string name="SettingsDefault">Settings default</string>
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
<string name="WhenUsingMobileData">When using mobile data</string>
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
<string name="WhenRoaming">When roaming</string>
<string name="NoMediaAutoDownload">No media</string>
<string name="Short">Kurz</string>
<string name="Long">Lang</string>
<string name="SystemDefault">Systemstandard</string>
<string name="SettingsDefault">Standardeinstellungen</string>
<string name="AutomaticMediaDownload">AUTOMATISCHER DOWNLOAD VON MEDIEN</string>
<string name="WhenUsingMobileData">über Mobilfunk</string>
<string name="WhenConnectedOnWiFi">über W-LAN</string>
<string name="WhenRoaming">bei Roaming</string>
<string name="NoMediaAutoDownload">kein automatischer Download</string>
<!--media view-->
<string name="NoMedia">Noch keine geteilten Medien vorhanden</string>

View file

@ -160,7 +160,7 @@
<string name="NotificationContactJoined">¡%1$s se unió a Telegram!</string>
<string name="NotificationUnrecognizedDevice">%1$s,\nHemos detectado 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</string>
<string name="NotificationContactNewPhoto">%1$s actualizó su foto de perfil</string>
<string name="Reply">Reply</string>
<string name="Reply">Responder</string>
<!--contacts view-->
<string name="SelectContact">Seleccionar contacto</string>
@ -281,15 +281,15 @@
<string name="OnlyWhenScreenOff">Sólo con pantalla apagada</string>
<string name="AlwaysShowPopup">Siempre mostrar notificación emergente</string>
<string name="BadgeNumber">Globo en el ícono</string>
<string name="Short">Short</string>
<string name="Long">Long</string>
<string name="SystemDefault">System default</string>
<string name="SettingsDefault">Settings default</string>
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
<string name="WhenUsingMobileData">When using mobile data</string>
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
<string name="WhenRoaming">When roaming</string>
<string name="NoMediaAutoDownload">No media</string>
<string name="Short">Corto</string>
<string name="Long">Largo</string>
<string name="SystemDefault">Por defecto del sistema</string>
<string name="SettingsDefault">Ajustes por defecto</string>
<string name="AutomaticMediaDownload">DESCARGA AUTOMÁTICA DE MULTIMEDIA</string>
<string name="WhenUsingMobileData">Con uso de datos móviles</string>
<string name="WhenConnectedOnWiFi">Con conexión a Wi-Fi</string>
<string name="WhenRoaming">Con itinerancia de datos</string>
<string name="NoMediaAutoDownload">Ningún contenido multimedia</string>
<!--media view-->
<string name="NoMedia">No hay fotos ni vídeos compartidos aún</string>

View file

@ -259,7 +259,7 @@
<string name="ContactJoined">Un contatto si è collegato a Telegram</string>
<string name="Pebble">PEBBLE</string>
<string name="Language">Lingua</string>
<string name="AskAQuestionInfo">Nota che il supporto di Telegram è fornito da volontari. Proviamo a rispondere non appena possibile, ma potrebbe richiedere del tempo.<![CDATA[<br><br>]]>Dai un\'occhiata alle <![CDATA[<a href=\"https://telegram.org/faq/it#domande-generali\">Domande frequenti</a>]]>: troverai risposte alla maggior parte delle domande e suggerimenti importanti per <![CDATA[<a href=\"https://telegram.org/faq/it#risoluzione-dei-problemi\">l\'individuazione del problema</a>]]>.</string>
<string name="AskAQuestionInfo">Nota che il supporto di Telegram è fornito da volontari. Proviamo a rispondere non appena possibile, ma potrebbe richiedere del tempo.<![CDATA[<br><br>]]>Dai un\'occhiata alle <![CDATA[<a href="https://telegram.org/faq/it#domande-generali">Domande frequenti</a>]]>: troverai risposte alla maggior parte delle domande e suggerimenti importanti per <![CDATA[<a href="https://telegram.org/faq/it#risoluzione-dei-problemi">l\'individuazione del problema</a>]]>.</string>
<string name="AskButton">Chiedi a un volontario</string>
<string name="TelegramFaq">Domande frequenti</string>
<string name="TelegramFaqUrl">https://telegram.org/faq/it</string>

View file

@ -58,12 +58,12 @@
<string name="SelectChat">Selecione uma Conversa</string>
<!--broadcasts-->
<string name="BroadcastList">Lista de Broadcast</string>
<string name="NewBroadcastList">Nova lista de Broadcast</string>
<string name="BroadcastList">Lista de Transmissão</string>
<string name="NewBroadcastList">Nova Lista de Transmissão</string>
<string name="EnterListName">Digite o nome da lista</string>
<string name="YouCreatedBroadcastList">Você criou uma lista de broadcast</string>
<string name="YouCreatedBroadcastList">Você criou uma lista de transmissão</string>
<string name="AddRecipient">Adicionar Recipiente</string>
<string name="KickFromBroadcast">Remover da lista de broadcast</string>
<string name="KickFromBroadcast">Remover da lista de trasmissão</string>
<!--documents view-->
<string name="SelectFile">Selecione um Arquivo</string>
@ -160,7 +160,7 @@
<string name="NotificationContactJoined">%1$s entrou para o Telegram!</string>
<string name="NotificationUnrecognizedDevice">%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</string>
<string name="NotificationContactNewPhoto">%1$s atualizou a foto do perfil</string>
<string name="Reply">Reply</string>
<string name="Reply">Responder</string>
<!--contacts view-->
<string name="SelectContact">Selecionar Contato</string>
@ -281,15 +281,15 @@
<string name="OnlyWhenScreenOff">Somente com a tela desligada</string>
<string name="AlwaysShowPopup">Sempre mostrar popup</string>
<string name="BadgeNumber">Contador de medalhas</string>
<string name="Short">Short</string>
<string name="Long">Long</string>
<string name="SystemDefault">System default</string>
<string name="SettingsDefault">Settings default</string>
<string name="AutomaticMediaDownload">AUTOMATIC MEDIA DOWNLOAD</string>
<string name="WhenUsingMobileData">When using mobile data</string>
<string name="WhenConnectedOnWiFi">When connected on Wi-Fi</string>
<string name="WhenRoaming">When roaming</string>
<string name="NoMediaAutoDownload">No media</string>
<string name="Short">Curta</string>
<string name="Long">Longa</string>
<string name="SystemDefault">Padrão do sistema</string>
<string name="SettingsDefault">Configurações padrão</string>
<string name="AutomaticMediaDownload">DOWNLOAD AUTOMÁTICO DE MÍDIA</string>
<string name="WhenUsingMobileData">Ao usar dados móveis</string>
<string name="WhenConnectedOnWiFi">Quando conectado em Wi-Fi</string>
<string name="WhenRoaming">Em roaming</string>
<string name="NoMediaAutoDownload">Sem mídia</string>
<!--media view-->
<string name="NoMedia">Ainda não há mídia compartilhada</string>