Browse Source

Version 5.2.1

Threema 1 year ago
parent
commit
679ed7dd3a
35 changed files with 255 additions and 66 deletions
  1. 2 2
      app/build.gradle
  2. 2 0
      app/src/main/java/ch/threema/app/activities/BackupAdminActivity.java
  3. 25 18
      app/src/main/java/ch/threema/app/activities/HomeActivity.java
  4. 0 1
      app/src/main/java/ch/threema/app/activities/ThreemaActivity.java
  5. 2 0
      app/src/main/java/ch/threema/app/activities/ballot/BallotChooserActivity.java
  6. 2 0
      app/src/main/java/ch/threema/app/activities/ballot/BallotOverviewActivity.java
  7. 2 0
      app/src/main/java/ch/threema/app/activities/ballot/BallotWizardActivity.java
  8. 1 0
      app/src/main/java/ch/threema/app/adapters/GroupDetailAdapter.java
  9. 3 4
      app/src/main/java/ch/threema/app/fragments/ComposeMessageFragment.java
  10. 0 1
      app/src/main/java/ch/threema/app/fragments/MessageSectionFragment.java
  11. 4 0
      app/src/main/java/ch/threema/app/services/ContactServiceImpl.java
  12. 3 1
      app/src/main/java/ch/threema/app/services/GroupServiceImpl.java
  13. 6 0
      app/src/main/java/ch/threema/app/services/MessageServiceImpl.java
  14. 15 0
      app/src/main/java/ch/threema/app/ui/MentionTextWatcher.java
  15. 41 0
      app/src/main/res/values-be-rBY/strings.xml
  16. 1 1
      app/src/main/res/values-ca/strings.xml
  17. 1 1
      app/src/main/res/values-cs/voicemessage_strings.xml
  18. 2 2
      app/src/main/res/values-es/strings.xml
  19. 4 0
      app/src/main/res/values-fr/strings.xml
  20. 1 1
      app/src/main/res/values-hu/strings.xml
  21. 2 8
      app/src/main/res/values-it/strings.xml
  22. 51 1
      app/src/main/res/values-ja/strings.xml
  23. 2 2
      app/src/main/res/values-nl-rNL/strings.xml
  24. 7 1
      app/src/main/res/values-pl/strings.xml
  25. 2 2
      app/src/main/res/values-pt-rBR/strings.xml
  26. 1 1
      app/src/main/res/values-rm/strings.xml
  27. 6 0
      app/src/main/res/values-ru/strings.xml
  28. 3 3
      app/src/main/res/values-ru/voicemessage_strings.xml
  29. 1 1
      app/src/main/res/values-sk/strings.xml
  30. 1 3
      app/src/main/res/values-tr/strings.xml
  31. 56 6
      app/src/main/res/values-uk/strings.xml
  32. 2 2
      app/src/main/res/values-zh-rCN/strings.xml
  33. 2 2
      app/src/main/res/values-zh-rTW/strings.xml
  34. 1 1
      app/src/main/res/values-zh-rTW/voip_strings.xml
  35. 1 1
      app/src/main/res/values-zh-rTW/webclient_strings.xml

+ 2 - 2
app/build.gradle

@@ -18,9 +18,9 @@ if (getGradle().getStartParameter().getTaskRequests().toString().contains("Hms")
 }
 
 // version codes
-def app_version = "5.2"
+def app_version = "5.2.1"
 def beta_suffix = "" // with leading dash
-def defaultVersionCode = 930
+def defaultVersionCode = 932
 
 /**
  * Return the git hash, if git is installed.

+ 2 - 0
app/src/main/java/ch/threema/app/activities/BackupAdminActivity.java

@@ -153,6 +153,7 @@ public class BackupAdminActivity extends ThreemaToolbarActivity {
 		return true;
 	}
 
+	@Override
 	protected boolean checkInstances() {
 		return TestUtil.required(
 				this.serviceManager,
@@ -161,6 +162,7 @@ public class BackupAdminActivity extends ThreemaToolbarActivity {
 		);
 	}
 
+	@Override
 	protected void instantiate() {
 		if (this.serviceManager != null) {
 			try {

+ 25 - 18
app/src/main/java/ch/threema/app/activities/HomeActivity.java

@@ -227,7 +227,7 @@ public class HomeActivity extends ThreemaAppCompatActivity implements
 
 	private final ActivityResultLauncher<String> notificationPermissionLauncher =
 		registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
-			if (!Boolean.TRUE.equals(isGranted)) {
+			if (preferenceService != null && !Boolean.TRUE.equals(isGranted)) {
 				// Show permission rationale only once a week
 				long current = System.currentTimeMillis();
 				long last = preferenceService.getLastNotificationRationaleShown();
@@ -351,8 +351,14 @@ public class HomeActivity extends ThreemaAppCompatActivity implements
 		protected Long doInBackground(Void... voids) {
 			MessageService messageService;
 			try {
-				messageService = ThreemaApplication.getServiceManager().getMessageService();
-				return messageService.countStarredMessages();
+				ServiceManager serviceManager = ThreemaApplication.getServiceManager();
+				if (serviceManager != null) {
+					messageService = serviceManager.getMessageService();
+					return messageService.countStarredMessages();
+				} else {
+					logger.warn("Could not count starred messages because service manager is null");
+					return 0L;
+				}
 			} catch (Exception e) {
 				logger.error("Unable to count starred messages", e);
 				return 0L;
@@ -654,14 +660,6 @@ public class HomeActivity extends ThreemaAppCompatActivity implements
 				}
 			}
 		}
-
-		if (isAppStart) {
-			ConfigUtils.requestNotificationPermission(this, notificationPermissionLauncher);
-
-			if (serviceManager != null) {
-				LocaleUtil.switchToAndroidXPerAppLanguageSelection(this, serviceManager.getPreferenceService());
-			}
-		}
 	}
 
 	private void reconfigureSafe(@NonNull ThreemaSafeService threemaSafeService, @NonNull ThreemaSafeMDMConfig newConfig) {
@@ -973,6 +971,16 @@ public class HomeActivity extends ThreemaAppCompatActivity implements
 			return;
 		}
 
+		boolean isAppStart = savedInstanceState == null;
+
+		if (isAppStart) {
+			ConfigUtils.requestNotificationPermission(this, notificationPermissionLauncher);
+
+			if (serviceManager != null) {
+				LocaleUtil.switchToAndroidXPerAppLanguageSelection(this, serviceManager.getPreferenceService());
+			}
+		}
+
 		if (serviceManager != null) {
 			this.userService = this.serviceManager.getUserService();
 			this.preferenceService = this.serviceManager.getPreferenceService();
@@ -1714,22 +1722,21 @@ public class HomeActivity extends ThreemaAppCompatActivity implements
 			new Thread(() -> {
 				try {
 					FileService fileService = serviceManager.getFileService();
-					if (fileService != null) {
-						fileService.cleanTempDirs();
-					}
+					fileService.cleanTempDirs();
 				} catch (FileSystemNotPresentException e) {
 					logger.error("Exception", e);
 				}
 			}).start();
 
+			try {
+				new UpdateStarredMessagesTask().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
+			} catch (RejectedExecutionException e) {
+				logger.error("Could not execute update starred message task", e);
+			}
 		}
 		super.onResume();
 
 		showMainContent();
-
-		try {
-			new UpdateStarredMessagesTask().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
-		} catch (RejectedExecutionException ignored) {}
 	}
 
 	@Override

+ 0 - 1
app/src/main/java/ch/threema/app/activities/ThreemaActivity.java

@@ -22,7 +22,6 @@
 package ch.threema.app.activities;
 
 import android.content.Intent;
-import android.widget.Toast;
 
 import org.slf4j.Logger;
 

+ 2 - 0
app/src/main/java/ch/threema/app/activities/ballot/BallotChooserActivity.java

@@ -218,6 +218,7 @@ public class BallotChooserActivity extends ThreemaToolbarActivity implements Lis
 		}
 	}
 
+	@Override
 	protected boolean checkInstances() {
 		return !TestUtil.empty(this.myIdentity) && TestUtil.required(
 				this.ballotService,
@@ -225,6 +226,7 @@ public class BallotChooserActivity extends ThreemaToolbarActivity implements Lis
 				this.groupService);
 	}
 
+	@Override
 	protected void instantiate() {
 		if(serviceManager != null) {
 			try {

+ 2 - 0
app/src/main/java/ch/threema/app/activities/ballot/BallotOverviewActivity.java

@@ -327,6 +327,7 @@ public class BallotOverviewActivity extends ThreemaToolbarActivity implements Li
 		}
 	}
 
+	@Override
 	protected boolean checkInstances() {
 		return !TestUtil.empty(this.myIdentity) && TestUtil.required(
 				this.ballotService,
@@ -334,6 +335,7 @@ public class BallotOverviewActivity extends ThreemaToolbarActivity implements Li
 				this.groupService);
 	}
 
+	@Override
 	protected void instantiate() {
 		if (serviceManager != null) {
 			try {

+ 2 - 0
app/src/main/java/ch/threema/app/activities/ballot/BallotWizardActivity.java

@@ -296,6 +296,7 @@ public class BallotWizardActivity extends ThreemaActivity {
 		}
 	}
 
+	@Override
 	protected void instantiate() {
 		ServiceManager serviceManager = ThreemaApplication.getServiceManager();
 
@@ -313,6 +314,7 @@ public class BallotWizardActivity extends ThreemaActivity {
 		}
 	}
 
+	@Override
 	protected boolean checkInstances() {
 		return TestUtil.required(
 				this.messageService,

+ 1 - 0
app/src/main/java/ch/threema/app/adapters/GroupDetailAdapter.java

@@ -313,6 +313,7 @@ public class GroupDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
 				&& contactModels != null && contactModels.size() < BuildConfig.MAX_GROUP_SIZE;
 
 			if (contactModels != null && !contactModels.isEmpty()) {
+				headerHolder.groupMembersTitleView.setVisibility(View.VISIBLE);
 				headerHolder.groupMembersTitleView.setText(ConfigUtils.getSafeQuantityString(context, R.plurals.number_of_group_members, contactModels.size(), contactModels.size()));
 			} else {
 				headerHolder.groupMembersTitleView.setVisibility(View.GONE);

+ 3 - 4
app/src/main/java/ch/threema/app/fragments/ComposeMessageFragment.java

@@ -2000,7 +2000,7 @@ public class ComposeMessageFragment extends Fragment implements
 			this.actionBarAvatarView = actionBarTitleView.findViewById(R.id.avatar_view);
 			final RelativeLayout actionBarTitleContainer = actionBarTitleView.findViewById(R.id.title_container);
 			actionBarTitleContainer.setOnClickListener(v -> {
-				Intent intent = null;
+				Intent intent;
 				if (isGroupChat) {
 					intent = groupService.getGroupDetailIntent(groupModel, activity);
 				} else if (isDistributionListChat) {
@@ -2010,9 +2010,8 @@ public class ComposeMessageFragment extends Fragment implements
 					intent.putExtra(ThreemaApplication.INTENT_DATA_CONTACT_READONLY, true);
 				}
 				if (intent != null) {
-					intent = addExtrasToIntent(intent, messageReceiver);
-
-					activity.startActivityForResult(intent, 0);
+					addExtrasToIntent(intent, messageReceiver);
+					activity.startActivity(intent);
 				}
 			});
 

+ 0 - 1
app/src/main/java/ch/threema/app/fragments/MessageSectionFragment.java

@@ -1150,7 +1150,6 @@ public class MessageSectionFragment extends MainFragment
 			return;
 		}
 		Intent intent = groupService.getGroupDetailIntent(groupModel, activity);
-		intent.putExtra(ThreemaApplication.INTENT_DATA_GROUP, groupModel.getId());
 		activity.startActivity(intent);
 	}
 

+ 4 - 0
app/src/main/java/ch/threema/app/services/ContactServiceImpl.java

@@ -772,6 +772,10 @@ public class ContactServiceImpl implements ContactService {
 
 		clearAvatarCache(model);
 
+		// Remove draft of this contact
+		ContactMessageReceiver receiver = createReceiver(model);
+		ThreemaApplication.putMessageDraft(receiver.getUniqueIdString(), null, null);
+
 		AccessModel access = this.getAccess(model);
 		if (access.canDelete()) {
 			// remove

+ 3 - 1
app/src/main/java/ch/threema/app/services/GroupServiceImpl.java

@@ -561,7 +561,9 @@ public class GroupServiceImpl implements GroupService {
 
 	@Override
 	public Intent getGroupDetailIntent(@NonNull GroupModel groupModel, @NonNull Activity activity) {
-		return new Intent(activity, GroupDetailActivity.class);
+		Intent intent = new Intent(activity, GroupDetailActivity.class);
+		intent.putExtra(ThreemaApplication.INTENT_DATA_GROUP, groupModel.getId());
+		return intent;
 	}
 
 	@Override

+ 6 - 0
app/src/main/java/ch/threema/app/services/MessageServiceImpl.java

@@ -454,6 +454,7 @@ public class MessageServiceImpl implements MessageService {
 			BallotModel ballotModel,
 			BallotDataModel.Type type,
 			MessageReceiver receiver,
+			int messageFlags,
 			ForwardSecurityMode forwardSecurityMode) {
 		AbstractMessageModel model = receiver.createLocalModel(MessageType.BALLOT, MessageContentsType.BALLOT, new Date());
 		if (model != null) {
@@ -463,6 +464,7 @@ public class MessageServiceImpl implements MessageService {
 			model.setBallotData(new BallotDataModel(type, ballotModel.getId()));
 			model.setOutbox(ballotModel.getCreatorIdentity().equals(identityStore.getIdentity()));
 			model.setApiMessageId(messageId.toString());
+			model.setMessageFlags(messageFlags);
 			model.setForwardSecurityMode(forwardSecurityMode);
 			receiver.saveLocalModel(model);
 			cache(model);
@@ -1726,6 +1728,7 @@ public class MessageServiceImpl implements MessageService {
 				message.getMessageId(),
 				message,
 				messageModel,
+				message.getMessageFlags(),
 				message.getForwardSecurityMode());
 	}
 
@@ -1743,6 +1746,7 @@ public class MessageServiceImpl implements MessageService {
 				message.getMessageId(),
 				message,
 				messageModel,
+				message.getMessageFlags(),
 				message.getForwardSecurityMode());
 	}
 
@@ -1750,6 +1754,7 @@ public class MessageServiceImpl implements MessageService {
 	                                                     MessageId messageId,
 	                                                     BallotCreateInterface message,
 	                                                     AbstractMessageModel messageModel,
+														 int messageFlags,
 	                                                     ForwardSecurityMode forwardSecurityMode)
 			throws ThreemaException, BadMessageException
 	{
@@ -1769,6 +1774,7 @@ public class MessageServiceImpl implements MessageService {
 							BallotDataModel.Type.BALLOT_CREATED:
 							BallotDataModel.Type.BALLOT_CLOSED),
 						receiver,
+						messageFlags,
 						forwardSecurityMode);
 		}
 

+ 15 - 0
app/src/main/java/ch/threema/app/ui/MentionTextWatcher.java

@@ -26,9 +26,15 @@ import android.text.TextWatcher;
 import android.text.style.ReplacementSpan;
 import android.widget.EditText;
 
+import org.slf4j.Logger;
+
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import ch.threema.base.utils.LoggingUtil;
+
 public class MentionTextWatcher implements TextWatcher {
+	private static final Logger logger = LoggingUtil.getThreemaLogger("MentionTextWatcher");
+
 	private final EditText editText;
 	private final CharSequence hint;
 	private int maxLines;
@@ -50,6 +56,10 @@ public class MentionTextWatcher implements TextWatcher {
 		if (count == 1) {
 			int end = start + count;
 			Editable editableText = editText.getEditableText();
+			if (editableText == null) {
+				logger.error("Before text changed: Editable of edit text is null (text is not editable)");
+				return;
+			}
 			ReplacementSpan[] list = editableText.getSpans(start, end, ReplacementSpan.class);
 
 			for (ReplacementSpan span : list) {
@@ -74,6 +84,11 @@ public class MentionTextWatcher implements TextWatcher {
 
 		Editable editableText = editText.getEditableText();
 
+		if (editableText == null) {
+			logger.error("After text changed: Editable of edit text is null (text is not editable)");
+			return;
+		}
+
 		for (ReplacementSpan span : spansToRemove) {
 			int start = editableText.getSpanStart(span);
 			int end = editableText.getSpanEnd(span);

+ 41 - 0
app/src/main/res/values-be-rBY/strings.xml

@@ -204,6 +204,7 @@
     <string name="unlinking_email">Выдал.прывязкі да email</string>
     <string name="unlink">Адвязаць</string>
     <string name="threema_version">Версія</string>
+    <string name="threema_version_code">Код версіі</string>
     <string name="wrong_backupid_or_password_or_no_internet_connection">Адсутнічае падлучэнне да Інтэрнэту, няправільныя даныя экспарту ID ці няправільны пароль</string>
     <string name="prefs_header_other">Іншае</string>
     <string name="an_error_occurred">Адбылася памылка</string>
@@ -655,6 +656,8 @@
     <string name="backup_data">Рэз. копія даных</string>
     <string name="really_leave_group_admin_message">Вы з\'яўляецеся адміністратарам гэтай суполкі. Калі вы пакінеце яе зараз, яна стане некіравальнай. Іншыя ўдзельнікі будуць па-ранейшаму мець магчымасць мець зносіны, але змены больш будуць немагчымыя.</string>
     <string name="action_delete_group">Выдаліць суполку</string>
+    <string name="action_leave_and_delete_group">Пакінуць і выдаліць суполку</string>
+    <string name="action_dissolve_and_delete_group">Распусціць і выдаліць суполку</string>
     <string name="delete_my_group_message">Вы сапраўды хочаце выдаліць гэтую суполку? Усе яе ўдзельнікі будуць выдалены.</string>
     <string name="error_out_of_memory">Недастаткова месца ў сховішчы для завяршэння аперацыі</string>
     <string name="configure">Наладзіць</string>
@@ -1454,10 +1457,45 @@
     <string name="permission_microphone">Мікрафон</string>
     <string name="permission_read_phone_state">Тэлефон</string>
     <string name="permission_enable_in_settings_rationale">Уключыце дазвол у наладах.  Выберыце «Дазволы», а потым дазвольце «%s».</string>
+    <string name="post_notification_permission_rationale">Каб атрымліваць апавяшчэнні, вы павінны дазволіць %s паказваць апавяшчэнні.</string>
     <string name="group_name">Назва суполкі</string>
+    <string name="star_message">Паведамленне з зоркай</string>
+    <string name="starred_message">Пазначанае паведамленне</string>
+    <string name="starred">З зоркай</string>
+    <string name="starred_messages">Пазначаныя зорачкай паведамл</string>
+    <string name="sorting">Сартаванне</string>
+    <string name="sort_by">Сартаваць па…</string>
+    <string name="newest_first">спачатку самае новае</string>
+    <string name="oldest_first">спачатку самае старое</string>
+    <string name="no_starred_messages">Пазначаныя паведамленні не знойдзены.  Каб пазначыць паведамленне зорачкай, доўга націсніце на яго і абярыце кнопку з зорачкай.</string>
+    <string name="remove_all_stars">Выдаліць усе зоркі</string>
+    <string name="remove_star">Зняць зорку</string>
     <string name="samsung_permission_problem_explain">%1$s не можа атрымаць доступ да медыяфайлаў з-за адсутнасці дазволу ў сістэмнай праграме.  Каб выправіць гэта, упэўніцеся, што пераключальнік побач з \"Знешняе назапашвальнік\" уключаны на наступным экране, і перазапусціце %1$s.</string>
     <string name="min_n_chars">мін.  %d сімвалаў</string>
     <string name="prefs_title_grant_bluetooth_permission">Дайце дазвол Bluetooth</string>
+    <string name="safe_managed_password_confirm">Вызначаны кіраваны пароль для вашай рэзервовай копіі Threema Safe.\n\n Вы хочаце выкарыстоўваць гэты пароль?  Калі вы сумняваецеся, звярніцеся да адміністратара.</string>
+    <string name="safe_managed_new_password_confirm">Быў вызначаны новы кіраваны пароль для вашай рэзервовай копіі Threema Safe.\n\n Вы хочаце замяніць бягучы пароль на новы, кіраваны?  Калі вы сумняваецеся, звярніцеся да адміністратара.</string>
+    <string name="real_not_now">Не цяпер</string>
+    <string name="add_contact_in">Дадаць кантакт у…</string>
+    <string name="really_remove_all_stars">Вы сапраўды хочаце зняць зорачку з усіх паведамленняў?</string>
+    <string name="prefs_sum_storage_management">Кіраванне памяццю і выдаленне паведамленняў або мультымедыі</string>
+    <string name="delete_automatically">Выдаліць аўтаматычна</string>
+    <string name="keep_messages">Захоўваць паведамленні для:</string>
+    <string name="clean_up_manually">Ачысціць ўручную</string>
+    <string name="forever">Назаўжды</string>
+    <string name="autodelete_explain">Калі ўсталявана што-небудзь іншае, чым \"назаўсёды\", уваходныя і выходныя паведамленні будуць захоўвацца толькі на працягу вызначанага часу, а потым беззваротна выдаляцца.  Гэта ўключае ў сябе непрачытаныя і неадпраўленыя паведамленні.  Паведамленні ў групах нататак і пазначаныя зорачкай ніколі не будуць выдалены.  Працэс выдалення адбываецца перыядычна і неабавязкова адразу пасля актывацыі.</string>
+    <string name="autodelete_confirm">Паведамленні будуць выдаляцца аўтаматычна пасля %s.  Працягнуць?</string>
+    <string name="autodelete_activated">Аўтаматычнае выдаленне актывавана.</string>
+    <string name="autodelete_disabled">Аўтаматычнае выдаленне адключана.</string>
+    <string name="set_by_administrator">Значэнне ўстаноўлена адміністратарам і не можа быць зменена.</string>
+    <string name="action_dissolve_group">Распусціць суполку</string>
+    <string name="really_dissolve_group">Калі вы проста распусціце суполку, ніхто больш не зможа адпраўляць у суполку новыя паведамленні, і ёю больш нельга будзе кіраваць.  Распушчаную суполку ўсё яшчэ можна кланаваць.</string>
+    <string name="status_orphaned_group">*Гэтая суполка выдалена*\n Стваральнік суполкі пакінуў суполку, і яна больш не можа падтрымлівацца.  Адзін з астатніх членаў можа кланаваць суполку (праз дэталі суполкі), каб стаць новым адміністратарам.</string>
+    <string name="group_orphaned_notice">Гэтая суполка выдалена, бо яе стваральнік  пакінуў суполку.  Калі ласка, клануйце гэту суполку, каб стаць новым адміністратарам.</string>
+    <string name="group_not_a_member_notice">Вы больш не з\'яўляецеся часткай гэтай суполкі і больш не можаце ёй карыстацца.</string>
+    <string name="group_dissolved_notice">Гэтая суполка была распушчана і больш не можа выкарыстоўвацца.</string>
+    <string name="directory_request_failed">Не ўдалося запытаць каталог.  Паспрабуй яшчэ.</string>
+    <string name="add_shortcut_exists">Ярлык для гэтай мэты ўжо існуе.</string>
     <plurals name="contacts_counter_label">
         <item quantity="few">%d кантактаў</item>
         <item quantity="many">%d кантакты</item>
@@ -1500,6 +1538,9 @@
         <item quantity="one">%d файл паспяхова захаваны.</item>
         <item quantity="other">%d файлы паспяхова захаваны.</item>
     </plurals>
+    <plurals name="saving_media" tools:ignore="MissingQuantity">
+        <item quantity="other">Захав. мультымедыя</item>
+    </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="few">Выдаліць апытанні</item>
         <item quantity="many">Выдаліць апытанні</item>

+ 1 - 1
app/src/main/res/values-ca/strings.xml

@@ -1216,7 +1216,7 @@ donar només el vostre nom o un pseudònim. Si no definiu un sobrenom utilitzare
     <string name="group_link_rename">Renombrar</string>
     <string name="group_link_rename_tag">Nom nou</string>
     <string name="tap_here_for_more">Toqueu aquí per a més informació</string>
-    <string name="another_connection_instructions">El servidor ha detectat dues o més connexions des de diversos dispositius a la mateixa ID de Threema.\n\nNo es pot utilitzar la mateixa ID de Threema simultàniament en diversos dispositius. Els missatges nous només es transmetran a l\'últim dispositiu que ha iniciat sessió al servidor.\n\nSi esteu canviant a un dispositiu nou, desinstal·leu o desactiveu %s al dispositiu antic i llavors reinicieu el nou.</string>
+    <string name="another_connection_instructions"><![CDATA[El servidor ha detectat dues o més connexions des de diversos dispositius a la mateixa ID de Threema.<br><br>No es pot utilitzar la mateixa ID de Threema simultàniament en diversos dispositius. Els missatges nous només es transmetran a l\'últim dispositiu que ha iniciat sessió al servidor.<br><br>Si esteu canviant a un dispositiu nou, desinstal·leu o desactiveu %s al dispositiu antic i llavors reinicieu el nou.]]></string>
     <string name="app_store_error_code">Codi d\'error de la botiga d\'Apps: %d</string>
     <string name="backup_restore_type"><![CDATA[Quin tipus de còpia de seguretat voleu restaurar?<br/><br/><a href=%s>Apreneu-ne més sobre còpies de seguretat a Threema</a>]]></string>
     <string name="data_backup_info">Restaurar-ho tot incloent xats</string>

+ 1 - 1
app/src/main/res/values-cs/voicemessage_strings.xml

@@ -5,6 +5,6 @@
     <string name="recording_stopped_message">Přejete si nyní odeslat nahranou hlasovou zprávu?</string>
     <string name="recording_canceled">Nahrávání bylo zrušeno kvůli neznámé chybě.</string>
     <string name="cancel_recording">Zahodit nahrávání</string>
-    <string name="cancel_recording_message">Opravdu chcete nahrávání zrušit a zahodit?</string>
+    <string name="cancel_recording_message">Skutečně si přejete nahrávání zrušit a zahodit?</string>
     <string name="stop">Zastavit</string>
 </resources>

+ 2 - 2
app/src/main/res/values-es/strings.xml

@@ -1537,8 +1537,8 @@ almacenado.</string>
         <item quantity="other">%d archivos guardados correctamente.</item>
     </plurals>
     <plurals name="saving_media">
-        <item quantity="one">El elemento multimedia se está guardando</item>
-        <item quantity="other"></item>
+        <item quantity="one">Guardando archivo multimedia</item>
+        <item quantity="other">Guardando %d archivos multimedia</item>
     </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="one">Eliminar sondeo</item>

+ 4 - 0
app/src/main/res/values-fr/strings.xml

@@ -1527,6 +1527,10 @@ Veuillez saisir une question pour votre enquête.</string>
         <item quantity="one">%d fichier enregistré avec succès.</item>
         <item quantity="other">%d fichiers enregistrés avec succès.</item>
     </plurals>
+    <plurals name="saving_media"  tools:ignore="MissingQuantity">
+        <item quantity="one" tools:ignore="ImpliedQuantity">Enregistrement du média</item>
+        <item quantity="other">Enregistrement de %d fichiers média</item>
+    </plurals>
     <plurals name="ballot_really_delete" tools:ignore="MissingQuantity">
         <item quantity="one" tools:ignore="ImpliedQuantity">Retirer l\'enquête</item>
         <item quantity="other">Retirer les enquêtes</item>

+ 1 - 1
app/src/main/res/values-hu/strings.xml

@@ -1226,7 +1226,7 @@
     <string name="group_link_rename">Hivatkozás átnevezése</string>
     <string name="group_link_rename_tag">Új név</string>
     <string name="tap_here_for_more">További információért kattintson ide</string>
-    <string name="another_connection_instructions">A kiszolgáló két vagy több különböző eszközről származó, azonos Threema ID-vel rendelkező kapcsolatot észlelt.\n\nEgy Threema ID-t nem lehet egyszerre több eszközön használni. Az új üzenetek csak arra az eszközre kézbesülnek, amelyik legutóbb bejelentkezett a kiszolgálóra.\n\nHa új eszközre vált, kérjük, távolítsa el vagy deaktiválja a %s-t a régi eszközön, majd indítsa újra az új eszközt.</string>
+    <string name="another_connection_instructions"><![CDATA[A kiszolgáló két vagy több különböző eszközről származó, azonos Threema ID-vel rendelkező kapcsolatot észlelt.<br><br>Egy Threema ID-t nem lehet egyszerre több eszközön használni. Az új üzenetek csak arra az eszközre kézbesülnek, amelyik legutóbb bejelentkezett a kiszolgálóra.<br><br>Ha új eszközre vált, kérjük, távolítsa el vagy deaktiválja a %s-t a régi eszközön, majd indítsa újra az új eszközt.]]></string>
     <string name="app_store_error_code">App Store hibakód: %d</string>
     <string name="backup_restore_type"><![CDATA[Milyen típusú másolatot szeretne visszaállítani? <br/><br/> <a href=%s>Tudjon meg többet a Threema biztonsági mentésekről</a>]]></string>
     <string name="data_backup_info">Mindent visszaállít, csevegésekkel</string>

+ 2 - 8
app/src/main/res/values-it/strings.xml

@@ -1031,11 +1031,6 @@ automaticamente in caso di inattività dopo un intervallo predefinito (solo cara
     <string name="open_in_maps_app">Apri in Mappe</string>
     <string name="delete">Elimina</string>
     <string name="continue_recording">Continua registrazione</string>
-    <string name="whatsnew_title">Novità: Chiamate di gruppo %1$s</string>
-    <string name="whatsnew_headline"><![CDATA[<p>Ora è possibile effettuare chiamate end-to-end su %1$s per Android.</p>
-<p>Per avviare una chiamata, apri la chat di gruppo e tocca l\'icona della fotocamera in alto.</p>
-<p>I membri del gruppo ricevono una notifica e possono decidere se partecipare o no.</p>
-<p><b>Avviso:</b> La versione iOS sarà disponibile più avanti.</p>]]></string>
     <string name="tap_to_start">Tocca qui per iniziare %s adesso.</string>
     <string name="two_years">2 anni</string>
     <string name="invalid_backup_path">Percorso backup sbagliato</string>
@@ -1544,9 +1539,8 @@ automaticamente in caso di inattività dopo un intervallo predefinito (solo cara
         <item quantity="one">%d file salvato con successo.</item>
         <item quantity="other">%d file salvati con successo</item>
     </plurals>
-    <plurals name="saving_media">
-        <item quantity="one">Salvataggio media in corso</item>
-        <item quantity="other"></item>
+    <plurals name="saving_media" tools:ignore="MissingQuantity">
+        <item quantity="other">Salvataggio media in corso</item>
     </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="one">Cancella sondaggio</item>

+ 51 - 1
app/src/main/res/values-ja/strings.xml

@@ -210,6 +210,7 @@
     <string name="unlinking_email">Eメールのリンク解除</string>
     <string name="unlink">リンク解除</string>
     <string name="threema_version">バージョン</string>
+    <string name="threema_version_code">バージョンコード</string>
     <string name="wrong_backupid_or_password_or_no_internet_connection">インターネットに接続されていない、無効なIDエクスポートデータ、または誤ったパスワードの可能性があります。</string>
     <string name="prefs_header_other">その他</string>
     <string name="an_error_occurred">エラーが発生しました</string>
@@ -665,6 +666,8 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="really_leave_group_admin_message">あなたはこのグループの管理者です。このまま退会すると孤立してしまいます。
 他のメンバーはトークを行うことができますが、変更はできなくなります。</string>
     <string name="action_delete_group">グループを削除</string>
+    <string name="action_leave_and_delete_group">グループを削除し退会する</string>
+    <string name="action_dissolve_and_delete_group">グループを解散して削除する</string>
     <string name="delete_my_group_message">本当にこのグループを削除しますか?すべてのメッセージは削除され、残ったメンバーはもうこのグループを利用できません。</string>
     <string name="error_out_of_memory">この操作を完了するための十分なメモリがありません</string>
     <string name="configure">設定</string>
@@ -1018,6 +1021,10 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="open_in_maps_app">マップアプリで開く</string>
     <string name="delete">削除</string>
     <string name="continue_recording">録音を続ける</string>
+    <string name="whatsnew_title">%1$sのバージョン5.2での新機能は何ですか?</string>
+    <string name="whatsnew_headline"><![CDATA[<p>スター付きメッセージ: 重要なメッセージを後で簡単に見つけるために、長押しでスターを付けてください。</p>
+<p>自動削除: 選択可能な期間後にチャットが自動的に整理されるようにします。メッセージの自動削除機能はストレージ管理で有効にすることができます。</p>
+<p>その他多数の改善と最適化。</p>]]></string>
     <string name="tap_to_start">タップして %s を始めましょう</string>
     <string name="two_years">2年</string>
     <string name="invalid_backup_path">バックアップのパスが無効です</string>
@@ -1408,7 +1415,7 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="prefs_summary_hibernation_api_32">長期の不使用後に、Theemaがシステムによって中断されるのを防ぐために、システム設定の「権限を削除して空き容量を増やす」を無効にしてください。</string>
     <string name="prefs_summary_hibernation_api">長期の不使用後に、Theemaがシステムによって中断されるのを防ぐために、システム設定の「使用していないアプリを一時停止する」を無効にしてください。</string>
     <string name="unable_to_fetch_configuration">設定サーバーからデータを取得できません。後でもう一度お試しください。</string>
-    <string name="rogue_device_warning">異なるデバイスからの接続が、同じThreema IDで検出されました。最近、別の端末であなたのThreema IDを使用しましたか?&lt;br&gt;&lt;br&gt;もし使用したのであれば、このメッセージは無視してください。&lt;br&gt;&lt;br&gt;もし使用していないのであれば、あなたのプライベートキーが不正利用されている可能性があります。新しいIDを作成する前に、<a href="https://threema.ch/en/faq/another_connection">私たちの提案に従って</a>、あなたの端末とデータを保護してください。</string>
+    <string name="rogue_device_warning"><![CDATA[異なるデバイスからの接続が、同じThreema IDで検出されました。最近、別の端末であなたのThreema IDを使用しましたか?<br><br>もし使用したのであれば、このメッセージは無視してください。<br><br>もし使用していないのであれば、あなたのプライベートキーが不正利用されている可能性があります。新しいIDを作成する前に、<a href="https://threema.ch/en/faq/another_connection">私たちの提案に従って</a>、あなたの端末とデータを保護してください。]]></string>
     <string name="fetch2_failure">プロビジョニングサーバーとの同期に失敗しました。</string>
     <string name="no_members_support_group_calls">このグループにはグループ通話に応答できるメンバーがいません</string>
     <string name="group_calls">グループ通話</string>
@@ -1442,6 +1449,7 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="crop_image_title">画像を切り抜く</string>
     <string name="scroll_to_bottom">下部にスクロール</string>
     <string name="scroll_to_top">上部にスクロール</string>
+    <string name="contact_sync_mdm_rationale">管理者がお使いのデバイスで連絡先の同期を有効にしました。そのため、連絡先へのアクセス許可が必要です。</string>
     <string name="welcome_back">おかえりなさい!</string>
     <string name="id_restored_successfully">あなたのThreema IDが復元されました</string>
     <string name="prefs_dynamic_colors">ダイナミックカラー</string>
@@ -1451,6 +1459,10 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="notification_channel_voice_message_player">音声メッセージプレイヤー</string>
     <string name="voice_message_from">%sからの音声メッセージ</string>
     <string name="vm_fg_service_not_allowed">音声メッセージプレイバックエラー</string>
+    <string name="vm_fg_service_not_allowed_explain">メディア通知に再生ボタンがまだ表示されている場合は、そのボタンを押してください。表示されていない場合は、アプリを開いてトークから再生を開始してください。</string>
+    <string name="use_threema_without_this_permission">この権限なしで%sを使用する</string>
+    <string name="grant_permission">許可を与える</string>
+    <string name="grant_permission_settings">設定で許可を与える</string>
     <string name="ignore_permission">二度と尋ねない</string>
     <string name="permission_nearby_devices">近くの端末</string>
     <string name="permission_bluetooth">Bluetooth</string>
@@ -1458,7 +1470,45 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="permission_microphone">マイク</string>
     <string name="permission_read_phone_state">電話</string>
     <string name="permission_enable_in_settings_rationale">設定で権限を有効にしてください。「許可」 を選択し、次に 「%s」 を許可してください。</string>
+    <string name="post_notification_permission_rationale">通知を受け取るためには、%sが通知を表示することを許可する必要があります。</string>
     <string name="group_name">グループ名</string>
+    <string name="star_message">メッセージにスターを付ける</string>
+    <string name="starred_message">スター付きメッセージ</string>
+    <string name="starred">スター付き</string>
+    <string name="starred_messages">スター付きメッセージ</string>
+    <string name="sorting">並び替え</string>
+    <string name="sort_by">並び替え…</string>
+    <string name="newest_first">新しい順</string>
+    <string name="oldest_first">古い順</string>
+    <string name="no_starred_messages">スター付きメッセージが見つかりませんでした。メッセージにスターを付けるには、長押ししてスターのボタンを選択してください。</string>
+    <string name="remove_all_stars">すべてのスターを外す</string>
+    <string name="remove_star">スターを外す</string>
+    <string name="samsung_permission_problem_explain">%1$sはシステムアプリの許可が不足しているためメディアファイルにアクセスできません。これを解決するには、次の画面で「外部ストレージ」の隣のスイッチが有効になっていることを確認し、%1$sを再起動してください。</string>
+    <string name="min_n_chars">最低%d文字</string>
+    <string name="prefs_title_grant_bluetooth_permission">Bluetoothの許可を与える</string>
+    <string name="safe_managed_password_confirm">Threema Safeバックアップ用の管理されたパスワードが設定されています。\n\nこのパスワードを使用しますか? 疑問がある場合は、管理者に連絡してください。</string>
+    <string name="safe_managed_new_password_confirm">Threema Safeバックアップ用の新しい管理されたパスワードが設定されました。\n\n現在のパスワードをこの新しい管理されたパスワードに置き換えますか? 疑問がある場合は、管理者に連絡してください。</string>
+    <string name="real_not_now">今はしない</string>
+    <string name="add_contact_in">連絡先を追加…</string>
+    <string name="really_remove_all_stars">本当に全てのメッセージのスターを外しますか?</string>
+    <string name="prefs_sum_storage_management">メモリを管理し、メッセージやメディアを削除する</string>
+    <string name="delete_automatically">自動削除</string>
+    <string name="keep_messages">メッセージを保持する期間:</string>
+    <string name="clean_up_manually">手動で整理する</string>
+    <string name="forever">常に</string>
+    <string name="autodelete_explain">「常に」以外に設定されている場合、受信および送信メッセージは指定された時間だけ保持され、その後は回復不可能に削除されます。これには未読および未送信のメッセージも含まれます。ノートグループ内のメッセージやスターが付けられたメッセージは決して削除されません。削除プロセスは定期的に行われ、必ずしも有効化直後に行われるわけではありません。</string>
+    <string name="autodelete_confirm">%s後にメッセージが自動的に削除されます。続行しますか?</string>
+    <string name="autodelete_activated">自動削除が有効になりました。</string>
+    <string name="autodelete_disabled">自動削除が無効になりました。</string>
+    <string name="set_by_administrator">この値は管理者によって設定されており、変更することはできません。</string>
+    <string name="action_dissolve_group">グループを解散する</string>
+    <string name="really_dissolve_group">グループを解散すると、誰も新しいメッセージをグループに送ることができなくなり、もはや管理することもできません。解散したグループは、依然としてクローンされることが可能です。</string>
+    <string name="status_orphaned_group">*このグループは孤立しています*\nグループの作成者がグループを離れたため、これ以上管理することができません。残ったメンバーの中で、新しい管理者になるためにグループの詳細からグループをクローンすることができます。</string>
+    <string name="group_orphaned_notice">グループの作成者がグループを離れたため、このグループは孤立しています。新しい管理者になるために、このグループを複製してください。</string>
+    <string name="group_not_a_member_notice">あなたはもはやこのグループの一員ではなく、これ以上使用することはできません。</string>
+    <string name="group_dissolved_notice">このグループは解散され、もはや使用することはできません。</string>
+    <string name="directory_request_failed">ディレクトリ要求に失敗しました。もう一度試してください。</string>
+    <string name="add_shortcut_exists">この対象のためのショートカットは既に存在します。</string>
     <plurals name="contacts_counter_label">
         <item quantity="other">%d 連絡先</item>
     </plurals>

+ 2 - 2
app/src/main/res/values-nl-rNL/strings.xml

@@ -1530,8 +1530,8 @@ Weet u zeker dat u Threema anoniem wil gebruiken?</string>
         <item quantity="other">%d bestanden zijn opgeslagen.</item>
     </plurals>
     <plurals name="saving_media">
-        <item quantity="one">Media opslaan</item>
-        <item quantity="other"></item>
+        <item quantity="one">Media wordt opgeslagen</item>
+        <item quantity="other">%d mediabestanden worden opgeslagen</item>
     </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="one">Poll verwijderen</item>

+ 7 - 1
app/src/main/res/values-pl/strings.xml

@@ -1421,7 +1421,7 @@ anonimowo?</string>
     <string name="prefs_summary_hibernation_api_32">Aby zapobiec wstrzymywaniu aplikacji Threema przez system po dłuższej nieaktywności, wyłącz ustawienie systemowe „Usuwaj uprawnienia i zwalniaj miejsce”.</string>
     <string name="prefs_summary_hibernation_api">Aby zapobiec wstrzymywaniu aplikacji Threema przez system po dłuższej nieaktywności, wyłącz ustawienie systemowe „Wstrzymuj aktywność aplikacji w razie nieużywania”.</string>
     <string name="unable_to_fetch_configuration">Nie można pobrać danych z serwera konfiguracji. Spróbuj ponownie później.</string>
-    <string name="rogue_device_warning">Wykryto połączenie z innego urządzenia z tym samym identyfikatorem Threema. Czy był on ostatnio używany na innym urządzeniu?&lt;br&gt;&lt;br&gt;Jeśli tak, to można zignorować tę wiadomość.&lt;br&gt;&lt;br&gt;Jeśli nie, to mogło nastąpić ujawnienie Twojego klucza prywatnego. <a href="https://threema.ch/en/faq/another_connection">Postępuj zgodnie z naszymi sugestiami</a>, aby zabezpieczyć swoje urzązenie i dane przed utworzeniem nowego identyfikatora.</string>
+    <string name="rogue_device_warning"><![CDATA[Wykryto połączenie z innego urządzenia z tym samym identyfikatorem Threema. Czy był on ostatnio używany na innym urządzeniu?<br><br>Jeśli tak, to można zignorować tę wiadomość.<br><br>Jeśli nie, to mogło nastąpić ujawnienie Twojego klucza prywatnego. <a href="https://threema.ch/en/faq/another_connection">Postępuj zgodnie z naszymi sugestiami</a>, aby zabezpieczyć swoje urzązenie i dane przed utworzeniem nowego identyfikatora.]]></string>
     <string name="fetch2_failure">Synchronizacja z serwerem udostępniającym nie powiodła się.</string>
     <string name="no_members_support_group_calls">W tej grupie nie ma innych członków, którzy mogą odpowiadać na połączenia grupowe</string>
     <string name="group_calls">Poł. grupowe</string>
@@ -1557,6 +1557,12 @@ anonimowo?</string>
         <item quantity="one">Zapisano %d plik.</item>
         <item quantity="other">Zapisano %d plików.</item>
     </plurals>
+    <plurals name="saving_media">
+        <item quantity="few">Zapisywanie %d plików mediów</item>
+        <item quantity="many">Zapisywanie %d plików mediów</item>
+        <item quantity="one">Zapisywanie pliku mediów</item>
+        <item quantity="other">Zapisywanie %d plików mediów</item>
+    </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="few">Usuń ankiety</item>
         <item quantity="many">Usuń ankiety</item>

+ 2 - 2
app/src/main/res/values-pt-rBR/strings.xml

@@ -1406,7 +1406,7 @@ Por favor, insira uma pergunta para a sua enquete.</string>
     <string name="prefs_summary_hibernation_api_32">Para evitar que o Threema seja pausado pelo sistema após ficar inativo por algum tempo, desative a configuração do sistema “Remover permissões e liberar espaço”.</string>
     <string name="prefs_summary_hibernation_api">Para evitar que o Threema seja pausado pelo sistema após ficar inativo por algum tempo, desative a configuração do sistema “Pausar a atividade no app quando não usado”.</string>
     <string name="unable_to_fetch_configuration">Não foi possível obter os dados do servidor de configuração. Tente novamente mais tarde.</string>
-    <string name="rogue_device_warning">Foi detectada uma conexão de um dispositivo diferente com a mesma ID do Threema. Você usou recentemente sua ID do Threema em outro dispositivo?&lt;br&gt;&lt;br&gt;Se usou, você pode ignorar esta mensagem.&lt;br&gt;&lt;br&gt;Se não usou, sua chave privada por ter sido comprometida. <a href="https://threema.ch/en/faq/another_connection">Siga as nossas sugestões</a> para proteger seu dispositivo e os seus dados antes de criar uma nova ID.</string>
+    <string name="rogue_device_warning"><![CDATA[Foi detectada uma conexão de um dispositivo diferente com a mesma ID do Threema. Você usou recentemente sua ID do Threema em outro dispositivo?<br><br>Se usou, você pode ignorar esta mensagem.<br><br>Se não usou, sua chave privada por ter sido comprometida. <a href="https://threema.ch/en/faq/another_connection">Siga as nossas sugestões</a> para proteger seu dispositivo e os seus dados antes de criar uma nova ID.]]></string>
     <string name="fetch2_failure">A sincronização com o servidor de provisionamento falhou.</string>
     <string name="no_members_support_group_calls">Não há outros membros neste grupo que podem receber chamadas de grupo</string>
     <string name="group_calls">Chamadas de grupo</string>
@@ -1530,7 +1530,7 @@ Por favor, insira uma pergunta para a sua enquete.</string>
     </plurals>
     <plurals name="saving_media">
         <item quantity="one" tools:ignore="ImpliedQuantity">Salvando mídia</item>
-        <item quantity="other"></item>
+        <item quantity="other">Salvando %d arquivos de mídia</item>
     </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="one" tools:ignore="ImpliedQuantity">Remover enquete</item>

+ 1 - 1
app/src/main/res/values-rm/strings.xml

@@ -1201,7 +1201,7 @@ Endatescha in pled-clav per tes backup da datas.</string>
     <string name="group_link_rename">Dar in auter num a la colliaziun</string>
     <string name="group_link_rename_tag">Nov num</string>
     <string name="tap_here_for_more">Clicca qua per dapli infurmaziuns</string>
-    <string name="another_connection_instructions">Il server ha identifitgà dus u plirs apparats colliads cun la medema ID da Threema.\n\nI n\'è betg pussaivel d\'utilisar in\'ID da Threema il medem mument sin plirs apparats. Novs messadis vegnan tramess sulettamain a l\'apparat ch\'è s\'annunzià sco ultim sin il server.\n\nSche ti midas sin in nov apparat, deinstallescha u deactivescha p.pl. %s sin l\'apparat vegl e reaviescha suenter il nov apparat.</string>
+    <string name="another_connection_instructions"><![CDATA[Il server ha identifitgà dus u plirs apparats colliads cun la medema ID da Threema.<br><br>I n\'è betg pussaivel d\'utilisar in\'ID da Threema il medem mument sin plirs apparats. Novs messadis vegnan tramess sulettamain a l\'apparat ch\'è s\'annunzià sco ultim sin il server.<br><br>Sche ti midas sin in nov apparat, deinstallescha u deactivescha p.pl. %s sin l\'apparat vegl e reaviescha suenter il nov apparat.]]></string>
     <string name="app_store_error_code">Code dal sbagl da l\'App Store: %d</string>
     <string name="backup_restore_type"><![CDATA[Tge tip da backup vuls ti restaurar? <br/><br/><a href=%s>Leger dapli davart backups en Threema</a>]]></string>
     <string name="data_backup_info">Restaurar tut incl. chats</string>

+ 6 - 0
app/src/main/res/values-ru/strings.xml

@@ -1547,6 +1547,12 @@
         <item quantity="one">%d файл успешно сохранен.</item>
         <item quantity="other">%d файлов успешно сохранено.</item>
     </plurals>
+    <plurals name="saving_media">
+        <item quantity="few">Сохранение %d медиафайлов</item>
+        <item quantity="many">Сохранение %d медиафайлов</item>
+        <item quantity="one" tools:ignore="ImpliedQuantity">Сохранение медиафайла</item>
+        <item quantity="other">Сохранение %d медиафайлов</item>
+    </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="few">Удалить опросы</item>
         <item quantity="many">Удалить опросы</item>

+ 3 - 3
app/src/main/res/values-ru/voicemessage_strings.xml

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <string name="recording">Идет запись сообщения...</string>
+    <string name="recording">Запись сообщения…</string>
     <string name="recording_stopped_title">Запись остановлена</string>
-    <string name="recording_stopped_message">Хотите отправить записанное голосовое сообщение?</string>
+    <string name="recording_stopped_message">Отправить записанное голосовое сообщение?</string>
     <string name="recording_canceled">Запись отменена из-за неизвестной ошибки.</string>
     <string name="cancel_recording">Отменить запись</string>
-    <string name="cancel_recording_message">Действительно отменить и удалить запись?</string>
+    <string name="cancel_recording_message">Отменить и удалить запись?</string>
     <string name="stop">Стоп</string>
 </resources>

+ 1 - 1
app/src/main/res/values-sk/strings.xml

@@ -1414,7 +1414,7 @@ Vykonajte prosím zálohú vašich údajov vhodnou metódou.</string>
     <string name="prefs_summary_hibernation_api_32">Aby ste zabránili pozastaveniu Threema systémom po dlhšej nečinnosti, vypnite systémové nastavenie „Odstrániť povolenia a uvoľniť miesto“.</string>
     <string name="prefs_summary_hibernation_api">Aby ste zabránili tomu, že sa Threema po dlhšej dobe nečinnosti pozastaví, vypnite systémové nastavenie „Pozastaviť aktivitu aplikácie, ak sa nepoužíva“.</string>
     <string name="unable_to_fetch_configuration">Nie je možné načítať údaje z konfiguračného servera. Skúste to znova neskôr.</string>
-    <string name="rogue_device_warning">Bolo zistené pripojenie z iného zariadenia s rovnakým Threema ID. Použili ste nedávno svoje Threema ID na inom zariadení? &lt;br&gt;&lt;br&gt; Ak áno, môžete túto správu ignorovať. &lt;br&gt;&lt;br&gt; Ak ste tak neurobili, váš súkromný kľúč môže byť ohrozený. Pred vytvorením nového identifikátora <a href="https://threema.ch/en/faq/another_connection">postupujte podľa našich návrhov</a> na ochranu svojho zariadenia a údajov.</string>
+    <string name="rogue_device_warning"><![CDATA[Bolo zistené pripojenie z iného zariadenia s rovnakým Threema ID. Použili ste nedávno svoje Threema ID na inom zariadení? <br><br> Ak áno, môžete túto správu ignorovať. <br><br> Ak ste tak neurobili, váš súkromný kľúč môže byť ohrozený. Pred vytvorením nového identifikátora <a href="https://threema.ch/en/faq/another_connection">postupujte podľa našich návrhov</a> na ochranu svojho zariadenia a údajov.]]></string>
     <string name="fetch2_failure">Synchronizácia so serverom poskytovania zlyhala.</string>
     <string name="no_members_support_group_calls">V tejto skupine nie sú žiadni ďalší členovia, ktorí by mohli prijímať skupinové hovory</string>
     <string name="group_calls">Skupinové hovory</string>

+ 1 - 3
app/src/main/res/values-tr/strings.xml

@@ -1014,8 +1014,6 @@ sunucularımıza güvenli bir şekilde iletildi. Kişisel anahtar hiçbir zaman
     <string name="whatsnew_headline"><![CDATA[<p>Yıldızlı mesajlar: Daha sonra kolayca bulmak için, önemli mesajlara uzun süre dokunarak bir yıldızla işaretleyin.</p>
 <p>Otomatik Silme: Sohbetlerinizin seçilebilir bir süre sonra otomatik olarak temizlenmesini sağlayın. Mesajlar için otomatik silme işlevi depolama yönetiminde etkinleştirilebilir.</p>
 <p>Diğer sayısız iyileştirme ve optimizasyon.</p>]]></string>
-    <string name="whatsnew2_title">(boş bir cümle)</string>
-    <string name="whatsnew2_body">(boş bir cümle)</string>
     <string name="tap_to_start">%s şimdi başlatmak için buraya dokunun.</string>
     <string name="two_years">2 yıl</string>
     <string name="invalid_backup_path">Geçersiz yedekleme dizini</string>
@@ -1402,7 +1400,7 @@ sunucularımıza güvenli bir şekilde iletildi. Kişisel anahtar hiçbir zaman
     <string name="prefs_summary_hibernation_api_32">Threema\'nın uzun süre kullanılmadığında sistem tarafından duraklatılmasını önlemek için lütfen \"İzinleri kaldır ve yer aç\" sistem ayarını devre dışı bırakın.</string>
     <string name="prefs_summary_hibernation_api">Threema\'nın uzun süre kullanılmadığında sistem tarafından duraklatılmasını önlemek için lütfen \"Kullanılmıyorsa uygulama etkinliğini duraklat\" sistem ayarını devre dışı bırakın.</string>
     <string name="unable_to_fetch_configuration">Yapılandırma sunucusundan veri alınamıyor. Daha sonra tekrar deneyin</string>
-    <string name="rogue_device_warning">Aynı Threema kimliğe sahip farklı bir cihazdan bağlantı tespit edildi. Yakın zamanda Threema kimliğinizi başka bir cihazda kullandınız mı? &lt;br&gt;&lt;br&gt; Evet ise, bu mesajı yok sayabilirsiniz. &lt;br&gt;&lt;br&gt; Hayır ise, özel anahtarınız tehlikeye girebilir. Yeni bir kimlik oluşturmadan önce cihazınızı ve verilerinizi korumak için lütfen <a href="https://threema.ch/en/faq/another_connection">önerilerimizi uygulayın</a>.</string>
+    <string name="rogue_device_warning"><![CDATA[Aynı Threema kimliğe sahip farklı bir cihazdan bağlantı tespit edildi. Yakın zamanda Threema kimliğinizi başka bir cihazda kullandınız mı? <br><br>; Evet ise, bu mesajı yok sayabilirsiniz. <br><br> Hayır ise, özel anahtarınız tehlikeye girebilir. Yeni bir kimlik oluşturmadan önce cihazınızı ve verilerinizi korumak için lütfen <a href="https://threema.ch/en/faq/another_connection">önerilerimizi uygulayın</a>.]]></string>
     <string name="fetch2_failure">Konfigurasyon sunucusuyla eşitleme başarısız oldu.</string>
     <string name="no_members_support_group_calls">Bu grupta grup aramalarına cevap verebilecek başka üye yok</string>
     <string name="group_calls">Grup aramaları</string>

+ 56 - 6
app/src/main/res/values-uk/strings.xml

@@ -213,6 +213,7 @@
     <string name="unlinking_email">Відв\'язування ел. пошти</string>
     <string name="unlink">Відв\'язати</string>
     <string name="threema_version">Версія</string>
+    <string name="threema_version_code">Код версії</string>
     <string name="wrong_backupid_or_password_or_no_internet_connection">Немає з\'єднання з Інтернетом, недійсні дані експортованого ID або неправильний пароль</string>
     <string name="prefs_header_other">Інше</string>
     <string name="an_error_occurred">Сталася помилка</string>
@@ -698,8 +699,10 @@
     <string name="backup_id">Експортований ID</string>
     <string name="backup_data">Рез. копіювання</string>
     <string name="really_leave_group_admin_message">Ви адміністратор цієї групи. Якщо ви залишите її зараз, вона
-		стане загубленою. Інші учасники зможуть і далі спілкуватися в чаті, але вносити зміни в групу буде неможливо.</string>
+		стане покинутою. Інші учасники зможуть і далі спілкуватися в чаті, але вносити зміни в групу буде неможливо.</string>
     <string name="action_delete_group">Видалити групу</string>
+    <string name="action_leave_and_delete_group">Вийти з групи й видалити її</string>
+    <string name="action_dissolve_and_delete_group">Розпустити й видалити групу</string>
     <string name="delete_my_group_message">Справді видалити групу? Усі повідомлення буде вилучено, а інші учасники більше не зможуть використовувати групу.</string>
     <string name="error_out_of_memory">Недостатньо пам\'яті для виконання цієї дії</string>
     <string name="configure">Налаштувати</string>
@@ -711,8 +714,8 @@
     <string name="media_gallery_files">Файли</string>
     <string name="prefs_gif_autoplay">Відтворювати файли GIF</string>
     <string name="media_gallery_audio">Голосові повідомлення</string>
-    <string name="action_clone_group">Копіювати групу</string>
-    <string name="clone_group_message">Ви створите копію цієї групи та станете її адміністратором. Продовжити?</string>
+    <string name="action_clone_group">Клонувати групу</string>
+    <string name="clone_group_message">Цю групу буде клоновано, і ви станете її адміністратором. Продовжити?</string>
     <string name="prefs_proximity_sensor">Датчик відстані</string>
     <string name="prefs_proximity_sensor_explain">Відтворювати голосові повідомлення через слуховий динамік, коли ви тримаєте пристрій біля вуха</string>
     <string name="error_creating_group">Не вдалося створити або оновити групу</string>
@@ -780,7 +783,7 @@
     <string name="battery_optimizations_disable_guide_ctd">Знайдіть %s в списку й вимкніть оптимізацію</string>
     <string name="battery_optimizations_disable_confirm">Справді не вимикати оптимізацію використання акумулятора для %1$s? У цьому разі %2$s не працюватиме належним чином.</string>
     <string name="enter_text_hint">Введіть текст</string>
-    <string name="backup_explain_text">Якщо ви зміните або втратите свій пристрій, ніхто не зможе відновити ваш ID Threema або ваші чати за відсутності резервної копії. Збережіть свої дані, скориставшись функціями резервного копіювання.</string>
+    <string name="backup_explain_text">Якщо ви зміните або втратите пристрій, то не зможете відновити ID Threema або чати без резервної копії. Збережіть свої дані за допомогою резервного копіювання.</string>
     <string name="data_backup_explain">Резервні копії даних містять:\n\n&#9679; Ваші ID та пару ключів.\n&#9679; Контакти й рівні підтвердження.\n&#9679; Інформацію про участь у групах.\n&#9679; Чати.\n&#9679; Медіа- та інші файли (якщо ви їх додали).\n\nДані буде збережено у вигляді зашифрованого ZIP-файлу. Радимо перемістити цей файл на інший пристрій після завершення резервного копіювання.</string>
     <string name="draw">Малювати</string>
     <string name="edit">Редагувати</string>
@@ -948,7 +951,7 @@
     <string name="safe_upload_size_exceeded">Перевищено ліміт сервера на передавання</string>
     <string name="safe_connection_error">Помилка з\'єднання</string>
     <string name="safe_server_name">Назва сервера</string>
-    <string name="safe_max_backup_size">Макс. розмір рез. копії</string>
+    <string name="safe_max_backup_size">Максимальний розмір рез. копії</string>
     <string name="safe_retention">Термін зберігання рез. копії</string>
     <string name="safe_result">Результат рез. копіювання</string>
     <string name="number_of_days">%d дн.</string>
@@ -1053,6 +1056,12 @@
     <string name="open_in_maps_app">Відкрити в додатку для карт</string>
     <string name="delete">Видалити</string>
     <string name="continue_recording">Продовжити запис</string>
+    <string name="whatsnew_title">Що нового в %1$s 5.2?</string>
+    <string name="whatsnew_headline"><![CDATA[
+		<p>Повідомлення із зірочкою. Утримуйте й позначайте зірочкою важливі повідомлення, щоб легко знаходити їх пізніше.</p>
+		<p>Автоматичне видалення. Видаляйте чати автоматично через указаний час. Щоб ввімкнути цю функцію, відкрийте налаштування Threema й виберіть \"Медіафайли та сховище\" > \"Керування сховищем\".</p>
+		<p>Чимало інших покращень і оптимізацій.</p>
+		]]></string>
     <string name="whatsnew2_title">" "</string>
     <string name="whatsnew2_body">" "</string>
     <string name="tap_to_start">Торкніться тут, щоб запустити %s.</string>
@@ -1441,7 +1450,7 @@
     <string name="prefs_summary_hibernation_api_32">Щоб система не призупиняла роботу Threema після тривалого періоду неактивності, вимкніть налаштування системи \"Видалення дозволів і очищення місця\".</string>
     <string name="prefs_summary_hibernation_api">Щоб система не призупиняла роботу Threema після тривалого періоду неактивності, вимкніть налаштування системи \"Призупинити дії в додатку, якщо він не використовується\".</string>
     <string name="unable_to_fetch_configuration">Не вдалося завантажити дані з сервера конфігурації. Повторіть спробу пізніше.</string>
-    <string name="rogue_device_warning">Сервер виявив підключення з іншого пристрою з ідентичним ID Threema. Чи використовували ви нещодавно свій ID Threema на іншому пристрої? &lt;br&gt;&lt;br&gt; Якщо так, то можете не зважати на це повідомлення. &lt;br&gt;&lt;br&gt;Якщо ні, то ваш закритий ключ може бути скомпрометовано. <a href="https://threema.ch/en/faq/another_connection">Скористайтеся нашими порадами</a>, щоб захистити свої пристрій і дані, перш ніж створювати новий ID.</string>
+    <string name="rogue_device_warning"><![CDATA[Сервер виявив підключення з іншого пристрою з ідентичним ID Threema. Чи використовували ви нещодавно свій ID Threema на іншому пристрої? <br><br> Якщо так, то можете не зважати на це повідомлення. <br><br>Якщо ні, то ваш закритий ключ може бути скомпрометовано. <a href="https://threema.ch/en/faq/another_connection">Скористайтеся нашими порадами</a>, щоб захистити свої пристрій і дані, перш ніж створювати новий ID.]]></string>
     <string name="fetch2_failure">Помилка синхронізації з сервером підготовки.</string>
     <string name="no_members_support_group_calls">У цій групі немає інших учасників, які можуть відповідати на групові виклики</string>
     <string name="group_calls">Групові виклики</string>
@@ -1496,10 +1505,45 @@
     <string name="permission_microphone">Мікрофон</string>
     <string name="permission_read_phone_state">Телефон</string>
     <string name="permission_enable_in_settings_rationale">Увімкніть цей дозвіл у налаштуваннях. Виберіть \"Дозволи\" й увімкніть \"%s\".</string>
+    <string name="post_notification_permission_rationale">Щоб отримувати сповіщення, потрібно дозволити %s їх показувати.</string>
     <string name="group_name">Назва групи</string>
+    <string name="star_message">Позначити повідомлення зірочкою</string>
+    <string name="starred_message">Повідомлення із зірочкою</string>
+    <string name="starred">Із зірочкою</string>
+    <string name="starred_messages">Повідомлення із зірочкою</string>
+    <string name="sorting">Сортування</string>
+    <string name="sort_by">Сортувати за…</string>
+    <string name="newest_first">найновішими</string>
+    <string name="oldest_first">найстарішими</string>
+    <string name="no_starred_messages">Повідомлень із зірочкою не знайдено. Щоб позначити повідомлення, утримуйте його й виберіть значок зірочки.</string>
+    <string name="remove_all_stars">Вилучити всі зірочки</string>
+    <string name="remove_star">Вилучити зірочку</string>
     <string name="samsung_permission_problem_explain">%1$s не має доступу до медіафайлів, оскільки в системного додатку не надано відповідний дозвіл. Щоб усунути цю проблему, переконайтеся, що на наступному екрані активовано перемикач \"Зовнішня пам\'ять\", і перезапустіть %1$s.</string>
     <string name="min_n_chars">Мін. символів: %d</string>
     <string name="prefs_title_grant_bluetooth_permission">Надати доступ до Bluetooth</string>
+    <string name="safe_managed_password_confirm">Для вашої резервної копії Threema Safe налаштовано керований пароль.\n\nВикористовувати його? Якщо ви не впевнені, зверніться до адміністратора.</string>
+    <string name="safe_managed_new_password_confirm">Для вашої резервної копії Threema Safe налаштовано новий керований пароль.\n\nЗамінити поточний пароль на новий керований пароль? Якщо ви не впевнені, зверніться до адміністратора.</string>
+    <string name="real_not_now">Не зараз</string>
+    <string name="add_contact_in">Додати контакт у…</string>
+    <string name="really_remove_all_stars">Справді скасувати позначення всіх повідомлень?</string>
+    <string name="prefs_sum_storage_management">Керування пам\'яттю й видалення повідомлень або медіафайлів</string>
+    <string name="delete_automatically">Видаляти автоматично</string>
+    <string name="keep_messages">Зберігати повідомлення:</string>
+    <string name="clean_up_manually">Видалити вручну</string>
+    <string name="forever">Вічно</string>
+    <string name="autodelete_explain">Якщо вибрано будь-який варіант, крім \"Вічно\", вхідні та вихідні повідомлення (зокрема, непрочитані й ненадіслані) зберігатимуться лише вказаний час, а потім назавжди видалятимуться. Повідомлення в групах для нотаток і повідомлення із зірочкою не видалятимуться. Видалення виконується періодично, а не відразу після ввімкнення цієї функції.</string>
+    <string name="autodelete_confirm">Повідомлення буде видалено автоматично через %s. Продовжити?</string>
+    <string name="autodelete_activated">Автоматичне видалення ввімкнено.</string>
+    <string name="autodelete_disabled">Автоматичне видалення вимкнено.</string>
+    <string name="set_by_administrator">Значення встановлено адміністратором і змінити його неможливо.</string>
+    <string name="action_dissolve_group">Розпустити групу</string>
+    <string name="really_dissolve_group">Якщо ви лише розпустите групу, надсилати нові повідомлення до неї й керувати нею буде неможливо. Розпущену групу все ще можна клонувати.</string>
+    <string name="status_orphaned_group">*Цю групу покинуто*\nЗасновник вийшов із групи, тому її більше неможливо використовувати. Один із учасників, що залишилися, може клонувати цю групу (на екрані відомостей про неї), щоб стати новим адміністратором.</string>
+    <string name="group_orphaned_notice">Цю групу покинуто, оскільки засновник вийшов із неї. Клонуйте групу, щоб стати її новим адміністратором.</string>
+    <string name="group_not_a_member_notice">Ви більше не належите до цієї групи й не можете її використовувати.</string>
+    <string name="group_dissolved_notice">Цю групу розпущено, тому її більше неможливо використовувати.</string>
+    <string name="directory_request_failed">Помилка запиту каталогу. Повторіть спробу.</string>
+    <string name="add_shortcut_exists">Такий ярлик уже існує.</string>
     <plurals name="contacts_counter_label">
         <item quantity="few">%d контакти</item>
         <item quantity="many">%d контактів</item>
@@ -1542,6 +1586,12 @@
         <item quantity="one">%d файл збережено.</item>
         <item quantity="other">%d файлу збережено.</item>
     </plurals>
+    <plurals name="saving_media">
+        <item quantity="few">Збереження %d медіафайлів</item>
+        <item quantity="many">Збереження %d медіафайлів</item>
+        <item quantity="one" tools:ignore="ImpliedQuantity">Збереження медіафайлу</item>
+        <item quantity="other">Збереження %d медіафайлу</item>
+    </plurals>
     <plurals name="ballot_really_delete">
         <item quantity="few">Видалити опитування</item>
         <item quantity="many">Видалити опитування</item>

+ 2 - 2
app/src/main/res/values-zh-rCN/strings.xml

@@ -1439,7 +1439,7 @@ Threema ID。您将不会出现在朋友的联系人列表中。您确定要
     <string name="prefs_summary_hibernation_api_32">为防止 Threema 在长时间不使用后被系统暂停,请禁用系统设置中的 “撤销权限并释放空间” 。</string>
     <string name="prefs_summary_hibernation_api">为防止 Threema 在长时间不使用后被系统暂停,请禁用系统设置中的 “暂停未使用应用的活动” 。</string>
     <string name="unable_to_fetch_configuration">无法从配置服务器获取数据,请稍后再试。</string>
-    <string name="rogue_device_warning">我们的服务器检测到有人试图从另一台设备登录现有的 Threema ID,您最近是否在其他设备上登录过您的 Threema ID?&lt;br&gt;&lt;br&gt;如果有,就可以忽略此消息。&lt;br&gt;&lt;br&gt;如果没有,您的私钥可能已经泄露。在创建新ID之前,请<a href="https://threema.ch/en/faq/another_connection">按照我们的建议</a>保护您的设备和数据。</string>
+    <string name="rogue_device_warning"><![CDATA[我们的服务器检测到有人试图从另一台设备登录现有的 Threema ID,您最近是否在其他设备上登录过您的 Threema ID?<br><br>如果有,就可以忽略此消息。<br><br>如果没有,您的私钥可能已经泄露。在创建新ID之前,请<a href="https://threema.ch/en/faq/another_connection">按照我们的建议</a>保护您的设备和数据。]]></string>
     <string name="fetch2_failure">与配置服务器同步失败。</string>
     <string name="no_members_support_group_calls">此群组中没有成员可以接听群组通话</string>
     <string name="group_calls">群组通话</string>
@@ -1520,7 +1520,7 @@ Threema ID。您将不会出现在朋友的联系人列表中。您确定要
     <string name="keep_messages">保留消息期限:</string>
     <string name="clean_up_manually">手动清理</string>
     <string name="forever">永远</string>
-    <string name="autodelete_explain">如果设置为 “永远” 以外的其他选项,已收到和已发送的消息仅保留在已选定的时间内,之后消息将彻底删除,且不可恢复,这包含未读和未发送的消息,已收藏和已加星标的消息不会被删除。自动删除功能会定期执行,不一定是在启用此功能后立即执行。</string>
+    <string name="autodelete_explain">如果设置为 “永远” 以外的其他选项,已收到和已发送的消息仅保留在已选定的时间内,之后消息将彻底删除,且不可恢复,这包含未阅读和未发送的消息,私人收藏和已加星标的消息不会被删除。自动删除功能会定期执行,不一定是在启用此功能后立即执行。</string>
     <string name="autodelete_confirm">消息将在%s后自动删除。是否继续?</string>
     <string name="autodelete_activated">自动删除已启用。</string>
     <string name="autodelete_disabled">自动删除已禁用。</string>

+ 2 - 2
app/src/main/res/values-zh-rTW/strings.xml

@@ -1433,7 +1433,7 @@ Threema 支援的所有表情符號。</string>
     <string name="prefs_summary_hibernation_api_32">為防止 Threema 在長時間不使用後被系統暫停,請停用系統設定中的「移除權限並釋出空間」。</string>
     <string name="prefs_summary_hibernation_api">為防止 Threema 在長時間不使用後被系統暫停,請停用系統設定中的「暫停未使用的應用程式活動」。</string>
     <string name="unable_to_fetch_configuration">無法從配置伺服器取得資料,請稍後再試。</string>
-    <string name="rogue_device_warning">我們的伺服器檢測到有人試圖從另一台裝置登入現有的 Threema ID,您最近是否在其他裝置上登入過您的 Threema ID?&lt;br&gt;&lt;br&gt;如果有,就可以忽略此訊息。&lt;br&gt;&lt;br&gt;如果沒有,您的私鑰可能已經洩露。在建立新ID之前,請<a href="https://threema.ch/en/faq/another_connection">按照我們的建議</a>保護您的裝置和資料。</string>
+    <string name="rogue_device_warning"><![CDATA[我們的伺服器檢測到有人試圖從另一台裝置登入現有的 Threema ID,您最近是否在其他裝置上登入過您的 Threema ID?<br><br>如果有,就可以忽略此訊息。<br><br>如果沒有,您的私鑰可能已經洩露。在建立新ID之前,請<a href="https://threema.ch/en/faq/another_connection">按照我們的建議</a>保護您的裝置和資料。]]></string>
     <string name="fetch2_failure">與配置伺服器同步失敗。</string>
     <string name="no_members_support_group_calls">此群組中沒有成員可以接聽群組通話</string>
     <string name="group_calls">群組通話</string>
@@ -1514,7 +1514,7 @@ Threema 支援的所有表情符號。</string>
     <string name="keep_messages">保留訊息期限:</string>
     <string name="clean_up_manually">手動清理</string>
     <string name="forever">永遠</string>
-    <string name="autodelete_explain">如果設定為「永遠」以外的其他選項,已收到和已傳送的訊息僅保留在已選定的時間內,之後訊息將徹底刪除,且不可還原,這包括未讀取和未傳送的訊息,收藏和已加星號的訊息不會被刪除。自動刪除功能會定期執行,不一定是在啟用此功能後立即執行。</string>
+    <string name="autodelete_explain">如果設定為「永遠」以外的其他選項,已收到和已傳送的訊息僅保留在已選定的時間內,之後訊息將徹底刪除,且不可還原,這包括未讀取和未傳送的訊息,私人收藏和已加星號的訊息不會被刪除。自動刪除功能會定期執行,不一定是在啟用此功能後立即執行。</string>
     <string name="autodelete_confirm">訊息將在%s後自動刪除。是否繼續?</string>
     <string name="autodelete_activated">自動刪除已啟用。</string>
     <string name="autodelete_disabled">自動刪除已停用。</string>

+ 1 - 1
app/src/main/res/values-zh-rTW/voip_strings.xml

@@ -63,7 +63,7 @@
     <string name="voip_reject_channel_name">呼叫狀態變更</string>
     <!-- WebRTC debugger -->
     <string name="voip_prefs_webrtc_debug">WebRTC 診斷</string>
-    <string name="voip_prefs_webrtc_debug_summary">啟動此工具以調試與設定語音通話連接有關的問題</string>
+    <string name="voip_prefs_webrtc_debug_summary">啟動此工具以偵錯與設定語音通話連接有關的問題</string>
     <string name="voip_webrtc_debug">WebRTC 診斷</string>
     <string name="voip_webrtc_debug_intro">按「開始」按鈕開始測試。</string>
     <string name="voip_webrtc_debug_start">開始</string>

+ 1 - 1
app/src/main/res/values-zh-rTW/webclient_strings.xml

@@ -34,7 +34,7 @@
     <string name="webclient_constrained_by_mdm">伺服器未經管理員批准。</string>
     <string name="webclient_clear_all_sessions">清除所有工作階段</string>
     <string name="webclient_clear_all_sessions_confirm">您確定要停止並移除所有工作階段嗎?</string>
-    <string name="webclient_prefs_debug_tool_summary">啟動此工具以調試與設定桌面版應用程式/網頁版連接有關的問題</string>
+    <string name="webclient_prefs_debug_tool_summary">啟動此工具以偵錯與設定桌面版應用程式/網頁版連接有關的問題</string>
     <string name="webclient_diagnostics">桌面版/網頁版診斷</string>
     <string name="webclient_diagnostics_start">開始</string>
     <string name="webclient_diagnostics_intro">點擊「開始」以啟動測試。</string>