ソースを参照

Fixed hardcoded localization

Vadik Sirekanyan 7 年 前
コミット
292adc5d16

+ 1 - 1
app/src/main/java/me/vadik/knigopis/BookActivity.kt

@@ -122,7 +122,7 @@ class BookActivity : AppCompatActivity() {
                             setResult(RESULT_OK)
                             finish()
                         }, {
-                            toast("Ошибка при сохранении книги")
+                            toast(R.string.book_option_save_failed)
                             logError("cannot post planned book", it)
                         })
                     true

+ 2 - 2
app/src/main/java/me/vadik/knigopis/MainActivity.kt

@@ -123,7 +123,7 @@ class MainActivity : AppCompatActivity(), Router {
                 api.createSubscription(userId, auth.getAccessToken())
                     .io2main()
                     .subscribe({
-                        toast("Successfully subscribed")
+                        toast(R.string.following_toast_subscribed)
                     }, {
                         logError("Cannot create subscription", it)
                     })
@@ -164,7 +164,7 @@ class MainActivity : AppCompatActivity(), Router {
 
     override fun openBrowser(uri: Uri) {
         startActivityOrElse(Intent(ACTION_VIEW, uri)) {
-            toast("Невозможно открыть страницу")
+            toast(R.string.following_toast_no_browser)
         }
     }
 

+ 6 - 1
app/src/main/java/me/vadik/knigopis/extensions.kt

@@ -9,6 +9,7 @@ import android.os.Build
 import android.support.annotation.DimenRes
 import android.support.annotation.LayoutRes
 import android.support.annotation.StringRes
+import android.support.design.widget.Snackbar
 import android.support.v4.view.ViewCompat
 import android.support.v4.view.animation.FastOutLinearInInterpolator
 import android.support.v4.view.animation.LinearOutSlowInInterpolator
@@ -41,11 +42,15 @@ inline fun Context.startActivityOrElse(intent: Intent, onError: () -> Unit) {
     }
 }
 
-fun Context.toast(message: String) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
+fun Context.toast(@StringRes messageId: Int, vararg args: Any) =
+    Toast.makeText(this, getString(messageId, *args), Toast.LENGTH_SHORT).show()
 
 fun Context.toast(@StringRes messageId: Int) =
     Toast.makeText(this, messageId, Toast.LENGTH_SHORT).show()
 
+fun View.snackbar(@StringRes messageId: Int) =
+    Snackbar.make(this, messageId, Snackbar.LENGTH_LONG).show()
+
 fun Activity.app() = application as App
 
 @Suppress("unused")

+ 1 - 1
app/src/main/java/me/vadik/knigopis/profile/ProfileActivity.kt

@@ -141,7 +141,7 @@ class ProfileActivity : AppCompatActivity() {
                 quitEditMode()
                 refreshProfile()
             }, {
-                toast("Не удалось обновить имя")
+                toast(R.string.profile_option_save_failed)
                 logError("cannot update profile", it)
             })
     }

+ 3 - 5
app/src/main/java/me/vadik/knigopis/user/UserActivity.kt

@@ -4,7 +4,6 @@ import android.content.ClipData
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.Snackbar
 import android.support.v7.app.AppCompatActivity
 import android.support.v7.widget.DividerItemDecoration
 import android.support.v7.widget.LinearLayoutManager
@@ -53,8 +52,7 @@ class UserActivity : AppCompatActivity() {
             api.createSubscription(userId, auth.getAccessToken())
                 .io2main()
                 .subscribe({
-                    Snackbar.make(view, "Successfully subscribed", Snackbar.LENGTH_LONG)
-                        .setAction("Action", null).show()
+                    view.snackbar(R.string.following_toast_subscribed)
                 }, {
                     fab.showScale()
                     logError("Cannot update subscription", it)
@@ -111,7 +109,7 @@ class UserActivity : AppCompatActivity() {
             R.id.option_copy -> {
                 val link = "http://www.knigopis.com/#/user/books?u=$userId"
                 systemClipboardManager.primaryClip = ClipData.newPlainText(null, link)
-                toast(link)
+                toast(R.string.user_option_copy_success, link)
                 true
             }
             R.id.option_unsubscribe -> {
@@ -119,7 +117,7 @@ class UserActivity : AppCompatActivity() {
                     .io2main()
                     .subscribe({}, {
                         logError("Cannot unsubscribe", it)
-                        toast("Не удалось отписаться")
+                        toast(R.string.user_option_unsubscribe_failed)
                     })
                 true
             }

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

@@ -22,13 +22,15 @@
     <string name="profile_caption_done">%d\nпрочитано</string>
     <string name="profile_hint_nickname">псевдоним</string>
     <string name="profile_hint_homepage">личная страница</string>
+    <string name="profile_book_random">%s — %d%%</string>
 
     <!-- profile menu -->
     <string name="profile_option_edit">Редактировать</string>
     <string name="profile_option_save">Сохранить</string>
+    <string name="profile_option_save_failed">Не удалось обновить имя</string>
     <string name="profile_option_share">Поделиться</string>
 
-    <!-- books -->
+    <!-- 🏠 books -->
     <string name="book_header_todo">К прочтению</string>
     <string name="book_header_done_first">Прочитано в %s г.</string>
     <string name="book_header_done">%s г.</string>
@@ -36,6 +38,7 @@
 
     <!-- edit book -->
     <string name="book_option_save">Сохранить</string>
+    <string name="book_option_save_failed">Не удалось сохранить книгу</string>
     <string name="book_hint_title">Название</string>
     <string name="book_hint_author">Автор</string>
     <string name="book_hint_year">Год</string>
@@ -53,9 +56,15 @@
     <string name="cannot_delete_book">Не получилось удалить</string>
     <string name="book_hint_notes">Примечания</string>
 
-    <!-- user menu -->
+    <!-- 👨 following -->
+    <string name="following.toast.subscribed">Пользователь добавлен в избранное</string>
+    <string name="following.toast.no_browser">Не найдено приложение для просмотра страницы</string>
+
+    <!-- following menu -->
     <string name="user_option_copy">Скопировать ссылку</string>
+    <string name="user_option_copy_success">Скопировано: %s</string>
     <string name="user_option_unsubscribe">Отписаться</string>
+    <string name="user_option_unsubscribe_failed">Не удалось отписаться</string>
     <string name="add_book_todo">К прочтению</string>
     <string name="add_book_done">Прочитано</string>
 

+ 5 - 0
app/src/main/res/values/no-translate.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="user_new_books_count" translatable="false"><![CDATA[<sup><small>+%d</small><sup>]]></string>
+    <string name="note_date_delimiter" translatable="false">/</string>
+</resources>

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

@@ -22,14 +22,15 @@
     <string name="profile_caption_done">%d\ndone</string>
     <string name="profile_hint_nickname">nickname</string>
     <string name="profile_hint_homepage">homepage</string>
-    <string name="profile_book_random" translatable="false">%s — %d%%</string>
+    <string name="profile_book_random">%s — %d%%</string>
 
     <!-- profile menu -->
     <string name="profile_option_edit">Edit</string>
     <string name="profile_option_save">Save</string>
+    <string name="profile_option_save_failed">Cannot update profile</string>
     <string name="profile_option_share">Share</string>
 
-    <!-- books -->
+    <!-- 🏠 books -->
     <string name="book_header_todo">Todo</string>
     <string name="book_header_done_first">Done in %s</string>
     <string name="book_header_done">%s</string>
@@ -37,6 +38,7 @@
 
     <!-- edit book -->
     <string name="book_option_save">Save</string>
+    <string name="book_option_save_failed">Cannot save book</string>
     <string name="book_hint_title">Title</string>
     <string name="book_hint_author">Author</string>
     <string name="book_hint_year">Year</string>
@@ -54,18 +56,18 @@
     <string name="cannot_delete_book">Cannot delete book</string>
     <string name="book_hint_notes">Notes</string>
 
-    <!-- following -->
-    <string name="user_new_books_count" translatable="false"><![CDATA[<sup><small>+%d</small><sup>]]></string>
+    <!-- 👨 Following -->
+    <string name="following.toast.subscribed">Successfully subscribed</string>
+    <string name="following.toast.no_browser">No browser app found</string>
 
-    <!-- user menu -->
+    <!-- following menu -->
     <string name="user_option_copy">Copy link</string>
+    <string name="user_option_copy_success">Copied: %s</string>
     <string name="user_option_unsubscribe">Unsubscribe</string>
+    <string name="user_option_unsubscribe_failed">Cannot unsubscribe</string>
     <string name="add_book_todo">Todo</string>
     <string name="add_book_done">Done</string>
 
-    <!-- notes -->
-    <string name="note_date_delimiter" translatable="false">/</string>
-
     <!-- about -->
     <string name="about_idea">API:\nhttp://knigopis.com</string>
     <string name="about_developer">Development:\nvadik@sirekanyan.com</string>