diff --git a/res/layout-sw400dp/activity_display_name.xml b/res/layout-sw400dp/activity_display_name.xml
index 11de7b28c2..dc118f42b8 100644
--- a/res/layout-sw400dp/activity_display_name.xml
+++ b/res/layout-sw400dp/activity_display_name.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/very_large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Pick your display name" />
+ android:text="@string/activity_display_name_title_2" />
+ android:text="@string/activity_display_name_explanation" />
+ android:hint="@string/activity_display_name_edit_text_hint" />
+ android:text="@string/continue_2" />
\ No newline at end of file
diff --git a/res/layout-sw400dp/activity_landing.xml b/res/layout-sw400dp/activity_landing.xml
index a4f7790d60..815f4f9732 100644
--- a/res/layout-sw400dp/activity_landing.xml
+++ b/res/layout-sw400dp/activity_landing.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/very_large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Your Session begins here..." />
+ android:text="@string/activity_landing_title_2" />
+ android:text="@string/activity_landing_register_button_title" />
+ android:text="@string/activity_landing_restore_button_title" />
+ android:text="@string/activity_landing_link_button_title" />
\ No newline at end of file
diff --git a/res/layout-sw400dp/activity_register.xml b/res/layout-sw400dp/activity_register.xml
index 0a905eca61..28c9f532b2 100644
--- a/res/layout-sw400dp/activity_register.xml
+++ b/res/layout-sw400dp/activity_register.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/very_large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Say hello to your Session ID" />
+ android:text="@string/activity_register_title" />
+ android:text="@string/activity_register_explanation" />
+ android:text="@string/continue_2" />
+ android:text="@string/copy" />
+ android:text="By using this service, you agree to our Terms of Service and Privacy Policy" />
\ No newline at end of file
diff --git a/res/layout-sw400dp/activity_restore.xml b/res/layout-sw400dp/activity_restore.xml
index 82e1cf8d13..6b5f6d95fe 100644
--- a/res/layout-sw400dp/activity_restore.xml
+++ b/res/layout-sw400dp/activity_restore.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/very_large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Restore your account" />
+ android:text="@string/activity_restore_title" />
+ android:text="@string/activity_restore_explanation" />
+ android:hint="@string/activity_restore_seed_edit_text_hint" />
+ android:text="@string/continue_2" />
+ android:text="By using this service, you agree to our Terms of Service and Privacy Policy" />
\ No newline at end of file
diff --git a/res/layout/activity_display_name.xml b/res/layout/activity_display_name.xml
index 0c501e8343..9fb37d9d89 100644
--- a/res/layout/activity_display_name.xml
+++ b/res/layout/activity_display_name.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Pick your display name" />
+ android:text="@string/activity_display_name_title_2" />
+ android:text="@string/activity_display_name_explanation" />
+ android:hint="@string/activity_display_name_edit_text_hint" />
+ android:text="@string/continue_2" />
\ No newline at end of file
diff --git a/res/layout/activity_landing.xml b/res/layout/activity_landing.xml
index 12bf0bc789..195020c0d9 100644
--- a/res/layout/activity_landing.xml
+++ b/res/layout/activity_landing.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Your Session begins here..." />
+ android:text="@string/activity_landing_title_2" />
+ android:text="@string/activity_landing_register_button_title" />
+ android:text="@string/activity_landing_restore_button_title" />
+ android:text="@string/activity_landing_link_button_title" />
\ No newline at end of file
diff --git a/res/layout/activity_pn_mode.xml b/res/layout/activity_pn_mode.xml
index 25f868d1f8..9175097cb0 100644
--- a/res/layout/activity_pn_mode.xml
+++ b/res/layout/activity_pn_mode.xml
@@ -111,6 +111,6 @@
android:layout_marginLeft="@dimen/massive_spacing"
android:layout_marginRight="@dimen/massive_spacing"
android:layout_marginBottom="@dimen/medium_spacing"
- android:text="Continue" />
+ android:text="@string/continue_2" />
\ No newline at end of file
diff --git a/res/layout/activity_register.xml b/res/layout/activity_register.xml
index da4da09770..fdd15c93a0 100644
--- a/res/layout/activity_register.xml
+++ b/res/layout/activity_register.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Say hello to your Session ID" />
+ android:text="@string/activity_register_title" />
+ android:text="@string/activity_register_explanation" />
+ android:text="@string/continue_2" />
+ android:text="@string/copy" />
+ android:text="By using this service, you agree to our Terms of Service and Privacy Policy" />
\ No newline at end of file
diff --git a/res/layout/activity_restore.xml b/res/layout/activity_restore.xml
index 08e6a3f341..eb385b3cd2 100644
--- a/res/layout/activity_restore.xml
+++ b/res/layout/activity_restore.xml
@@ -19,7 +19,7 @@
android:textSize="@dimen/large_font_size"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Restore your account" />
+ android:text="@string/activity_restore_title" />
+ android:text="@string/activity_restore_explanation" />
+ android:hint="@string/activity_restore_seed_edit_text_hint" />
+ android:text="@string/continue_2" />
+ android:text="By using this service, you agree to our Terms of Service and Privacy Policy" />
\ No newline at end of file
diff --git a/res/layout/fragment_enter_session_id.xml b/res/layout/fragment_enter_session_id.xml
index be341a2e7e..1a53342cfd 100644
--- a/res/layout/fragment_enter_session_id.xml
+++ b/res/layout/fragment_enter_session_id.xml
@@ -20,7 +20,7 @@
android:textSize="19sp"
android:textStyle="bold"
android:textColor="@color/text"
- android:text="Link your device" />
+ android:text="@string/fragment_enter_session_id_title" />
+ android:text="@string/fragment_enter_session_id_explanation" />
+ android:hint="@string/fragment_enter_session_id_edit_text_hint" />
+ android:text="@string/next" />
\ No newline at end of file
diff --git a/res/layout/view_fake_chat.xml b/res/layout/view_fake_chat.xml
index 520c3a130c..c24fd1b64b 100644
--- a/res/layout/view_fake_chat.xml
+++ b/res/layout/view_fake_chat.xml
@@ -13,7 +13,7 @@
android:layout_width="@dimen/fake_chat_view_bubble_width"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_spacing"
- android:text="What's Session?"
+ android:text="@string/view_fake_chat_bubble_1"
android:layout_gravity="right" />
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 480008a35a..f14d2b0354 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1549,9 +1549,12 @@
TAP TO UNLOCKReminder:About
-
-
+
+
+
+
+
Session
@@ -1663,14 +1666,56 @@
DismissRestore
+
+
+
+
+
+ Continue
+ Copy
+ Couldn\'t open link
+ Copied to clipboard
+ Couldn\'t link device.
+ Next
+ Invalid Session ID
+
+ Your Session begins here...
+ Create Session ID
+ Continue Your Session
+ Link to an existing account
+ Your device was unlinked successfully
+
+ What\'s Session?
+ It\'s a decentralized, encrypted messaging app
+ So it doesn\'t collect my personal information or my conversation metadata? How does it work?
+ Using a combination of advanced anonymous routing and end-to-end encryption technologies.
+ Friends don\'t let friends use compromised messengers. You\'re welcome.
+
+ Say hello to your Session ID
+ Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design.Copied to clipboard
- Are you sure you want to leave this group?
- Are you sure you want to delete this conversation?
- Conversation deleted
- Contacts
- Closed Groups
- Open Groups
+
+ Restore your account
+ Enter the recovery phrase that was given to you when you signed up to restore your account.
+ Enter your recovery phrase
+
+ Link Device
+ Enter Session ID
+ Scan QR Code
+ "Navigate to "Settings" > "Devices" > "Link a Device" on your other device and then scan the QR code that comes up to start the linking process."
+
+ Link your device
+ Navigate to "Settings" > "Devices" > "Link a Device" on your other device and then enter your Session ID here to start the linking process.
+ Enter your Session ID
+
+ Pick your display name
+ This will be your name when you use Session.
+ Enter a display name
+ Please pick a display name
+ Please pick a display name that consists of only a-z, A-Z, 0-9 and _ characters
+ Please pick a shorter display name
+
Push NotificationsThere are two ways Session can handle push notifications. Make sure to read the descriptions carefully before you choose.Firebase Cloud Messaging
@@ -1679,6 +1724,15 @@
Session will occasionally check for new messages in the background. This guarantees full privacy protection, but message notifications may be significantly delayed.RecommendedPlease Pick an Option
+
+
+
+ Are you sure you want to leave this group?
+ Are you sure you want to delete this conversation?
+ Conversation deleted
+ Contacts
+ Closed Groups
+ Open GroupsPush NotificationsSession now features two ways to handle push notifications. Make sure to read the descriptions carefully before you choose.Firebase Cloud Messaging
diff --git a/src/org/thoughtcrime/securesms/loki/activities/DisplayNameActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/DisplayNameActivity.kt
index a8877779fa..d5afafa364 100644
--- a/src/org/thoughtcrime/securesms/loki/activities/DisplayNameActivity.kt
+++ b/src/org/thoughtcrime/securesms/loki/activities/DisplayNameActivity.kt
@@ -39,13 +39,13 @@ class DisplayNameActivity : BaseActionBarActivity() {
private fun register() {
val displayName = displayNameEditText.text.toString().trim()
if (displayName.isEmpty()) {
- return Toast.makeText(this, "Please pick a display name", Toast.LENGTH_SHORT).show()
+ return Toast.makeText(this, R.string.activity_display_name_display_name_missing_error, Toast.LENGTH_SHORT).show()
}
if (!displayName.matches(Regex("[a-zA-Z0-9_]+"))) {
- return Toast.makeText(this, "Please pick a display name that consists of only a-z, A-Z, 0-9 and _ characters", Toast.LENGTH_SHORT).show()
+ return Toast.makeText(this, R.string.activity_display_name_display_name_invalid_error, Toast.LENGTH_SHORT).show()
}
if (displayName.toByteArray().size > ProfileCipher.NAME_PADDED_LENGTH) {
- return Toast.makeText(this, "Please pick a shorter display name", Toast.LENGTH_SHORT).show()
+ return Toast.makeText(this, R.string.activity_display_name_display_name_too_long_error, Toast.LENGTH_SHORT).show()
}
val inputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(displayNameEditText.windowToken, 0)
diff --git a/src/org/thoughtcrime/securesms/loki/activities/LandingActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/LandingActivity.kt
index 33b35bc84b..4d08c6725b 100644
--- a/src/org/thoughtcrime/securesms/loki/activities/LandingActivity.kt
+++ b/src/org/thoughtcrime/securesms/loki/activities/LandingActivity.kt
@@ -47,7 +47,7 @@ class LandingActivity : BaseActionBarActivity(), LinkDeviceSlaveModeDialogDelega
restoreButton.setOnClickListener { restore() }
linkButton.setOnClickListener { linkDevice() }
if (TextSecurePreferences.getWasUnlinked(this)) {
- Toast.makeText(this, "Your device was unlinked successfully", Toast.LENGTH_LONG).show()
+ Toast.makeText(this, R.string.activity_landing_device_unlinked_dialog_title, Toast.LENGTH_LONG).show()
}
}
@@ -102,7 +102,7 @@ class LandingActivity : BaseActionBarActivity(), LinkDeviceSlaveModeDialogDelega
if (deviceLink == null) {
Log.d("Loki", "Failed to sign device link request.")
reset()
- return Toast.makeText(application, "Couldn't link device.", Toast.LENGTH_LONG).show()
+ return Toast.makeText(application, R.string.device_linking_failed, Toast.LENGTH_LONG).show()
}
val application = ApplicationContext.getInstance(this)
application.startPollingIfNeeded()
diff --git a/src/org/thoughtcrime/securesms/loki/activities/LinkDeviceActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/LinkDeviceActivity.kt
index 1cf39cfb06..d9d8f95da3 100644
--- a/src/org/thoughtcrime/securesms/loki/activities/LinkDeviceActivity.kt
+++ b/src/org/thoughtcrime/securesms/loki/activities/LinkDeviceActivity.kt
@@ -26,7 +26,7 @@ class LinkDeviceActivity : BaseActionBarActivity(), ScanQRCodeWrapperFragmentDel
// Set content view
setContentView(R.layout.activity_link_device)
// Set title
- supportActionBar!!.title = "Link Device"
+ supportActionBar!!.title = resources.getString(R.string.activity_link_device_title)
// Set up view pager
viewPager.adapter = adapter
tabLayout.setupWithViewPager(viewPager)
@@ -40,7 +40,7 @@ class LinkDeviceActivity : BaseActionBarActivity(), ScanQRCodeWrapperFragmentDel
fun requestDeviceLinkIfPossible(hexEncodedPublicKey: String) {
if (!PublicKeyValidation.isValid(hexEncodedPublicKey)) {
- Toast.makeText(this, "Invalid Session ID", Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, R.string.invalid_session_id, Toast.LENGTH_SHORT).show()
} else {
val intent = Intent()
intent.putExtra("hexEncodedPublicKey", hexEncodedPublicKey)
@@ -64,7 +64,7 @@ private class LinkDeviceActivityAdapter(val activity: LinkDeviceActivity) : Frag
1 -> {
val result = ScanQRCodeWrapperFragment()
result.delegate = activity
- result.message = "Navigate to \"Settings\" > \"Devices\" > \"Link a Device\" on your other device and then scan the QR code that comes up to start the linking process."
+ result.message = activity.resources.getString(R.string.activity_link_device_scan_qr_code_explanation)
result
}
else -> throw IllegalStateException()
@@ -73,8 +73,8 @@ private class LinkDeviceActivityAdapter(val activity: LinkDeviceActivity) : Frag
override fun getPageTitle(index: Int): CharSequence? {
return when (index) {
- 0 -> "Enter Session ID"
- 1 -> "Scan QR Code"
+ 0 -> activity.getString(R.string.activity_link_device_enter_session_id_tab_title)
+ 1 -> activity.getString(R.string.activity_link_device_scan_qr_code_tab_title)
else -> throw IllegalStateException()
}
}
diff --git a/src/org/thoughtcrime/securesms/loki/activities/RegisterActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/RegisterActivity.kt
index aa009360ae..c566267f0d 100644
--- a/src/org/thoughtcrime/securesms/loki/activities/RegisterActivity.kt
+++ b/src/org/thoughtcrime/securesms/loki/activities/RegisterActivity.kt
@@ -154,7 +154,7 @@ class RegisterActivity : BaseActionBarActivity() {
val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Session ID", keyPair!!.hexEncodedPublicKey)
clipboard.primaryClip = clip
- Toast.makeText(this, R.string.activity_register_public_key_copied_message, Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
}
private fun openURL(url: String) {
@@ -162,7 +162,7 @@ class RegisterActivity : BaseActionBarActivity() {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
} catch (e: Exception) {
- Toast.makeText(this, "Couldn't open link", Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, R.string.invalid_url, Toast.LENGTH_SHORT).show()
}
}
// endregion
diff --git a/src/org/thoughtcrime/securesms/loki/activities/RestoreActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/RestoreActivity.kt
index 0346e545c9..45ada00524 100644
--- a/src/org/thoughtcrime/securesms/loki/activities/RestoreActivity.kt
+++ b/src/org/thoughtcrime/securesms/loki/activities/RestoreActivity.kt
@@ -117,7 +117,7 @@ class RestoreActivity : BaseActionBarActivity() {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
} catch (e: Exception) {
- Toast.makeText(this, "Couldn't open link", Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, R.string.invalid_url, Toast.LENGTH_SHORT).show()
}
}
// endregion