Răsfoiți Sursa

Refactoring of string resources

Vadik Sirekanyan 7 ani în urmă
părinte
comite
d739a5b708

+ 3 - 3
app/src/main/AndroidManifest.xml

@@ -11,16 +11,16 @@
         android:name=".App"
         android:allowBackup="false"
         android:icon="@mipmap/ic_launcher"
-        android:label="@string/app_name"
+        android:label="@string/common.title.app"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme"
         tools:ignore="GoogleAppIndexingWarning"
-        tools:replace="android:allowBackup">
+        tools:replace="allowBackup,label">
 
         <activity
             android:name=".MainActivity"
-            android:label="@string/app_name"
+            android:label="@string/common.title.app"
             android:launchMode="singleTop">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>

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

@@ -71,7 +71,7 @@ class BookActivity : AppCompatActivity() {
         bookId = intent.getStringExtra(EXTRA_BOOK_ID)
         toolbar.inflateMenu(R.menu.book_menu)
         if (bookId == null) titleEditText.requestFocus()
-        toolbar.setTitle(if (bookId == null) R.string.book_add_title else R.string.book_edit_title)
+        toolbar.setTitle(if (bookId == null) R.string.book_title_add else R.string.book_title_edit)
         toolbar.setNavigationIcon(R.drawable.ic_arrow_back)
         toolbar.setNavigationOnClickListener {
             finish()
@@ -122,7 +122,7 @@ class BookActivity : AppCompatActivity() {
                             setResult(RESULT_OK)
                             finish()
                         }, {
-                            toast(R.string.book_option_save_failed)
+                            toast(R.string.book_error_save)
                             logError("cannot post planned book", it)
                         })
                     true

+ 4 - 4
app/src/main/java/me/vadik/knigopis/BookRepository.kt

@@ -34,7 +34,7 @@ class BookRepositoryImpl(
         ).map { (planned, finished) ->
             mutableListOf<Book>().apply {
                 if (planned.isNotEmpty()) {
-                    add(BookHeader(resources.getString(R.string.book_header_todo)))
+                    add(BookHeader(resources.getString(R.string.books_header_todo)))
                 }
                 addAll(planned)
                 addAll(finished)
@@ -73,11 +73,11 @@ class BookRepositoryImpl(
                     BookHeader(
                         when {
                             book.readYear.isEmpty() ->
-                                resources.getString(R.string.book_header_done_other)
+                                resources.getString(R.string.books_header_done_other)
                             index == 0 ->
-                                resources.getString(R.string.book_header_done_first, readYear)
+                                resources.getString(R.string.books_header_done_first, readYear)
                             else ->
-                                resources.getString(R.string.book_header_done, readYear)
+                                resources.getString(R.string.books_header_done, readYear)
                         }
                     )
                 )

+ 13 - 13
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(R.string.following_toast_subscribed)
+                        toast(R.string.users_info_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(R.string.following_toast_no_browser)
+            toast(R.string.users_info_no_browser)
         }
     }
 
@@ -218,7 +218,7 @@ class MainActivity : AppCompatActivity(), Router {
                     versionView.setOnClickListener {
                         if (++count == max) {
                             enabled.not().let {
-                                if (it) toast(R.string.dev_mode_message)
+                                if (it) toast(R.string.common_info_dev)
                                 config.setDevMode(it)
                                 recreate()
                             }
@@ -248,20 +248,20 @@ class MainActivity : AppCompatActivity(), Router {
                 }
                 it.shouldShowRequestPermissionRationale -> {
                     AlertDialog.Builder(this)
-                        .setTitle(R.string.no_access)
-                        .setMessage(R.string.no_access_message)
-                        .setPositiveButton(R.string.no_access_retry_button) { _, _ ->
+                        .setTitle(R.string.permissions_title_no_access)
+                        .setMessage(R.string.permissions_message_no_access)
+                        .setPositiveButton(R.string.common_button_retry) { _, _ ->
                             login()
                         }
-                        .setNegativeButton(R.string.dialog_cancel_button, null)
+                        .setNegativeButton(R.string.common_button_cancel, null)
                         .setCancelable(false)
                         .show()
                 }
                 else -> {
                     AlertDialog.Builder(this)
-                        .setTitle(R.string.no_permissions)
-                        .setMessage(R.string.no_permissions_message)
-                        .setPositiveButton(R.string.no_permissions_goto_settings_button) { _, _ ->
+                        .setTitle(R.string.permissions_title_request)
+                        .setMessage(R.string.permissions_message_request)
+                        .setPositiveButton(R.string.permissions_button_settings) { _, _ ->
                             startActivity(
                                 Intent(
                                     Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
@@ -269,7 +269,7 @@ class MainActivity : AppCompatActivity(), Router {
                                 )
                             )
                         }
-                        .setNegativeButton(R.string.dialog_cancel_button, null)
+                        .setNegativeButton(R.string.common_button_cancel, null)
                         .setCancelable(false)
                         .show()
                 }
@@ -401,9 +401,9 @@ class MainActivity : AppCompatActivity(), Router {
 
     private val Throwable.messageRes
         get() = if (this is HttpException && code() == 401) {
-            R.string.error_unauthorized
+            R.string.main_error_unauthorized
         } else {
-            R.string.error_loading_data
+            R.string.common_error_network
         }
 
 }

+ 7 - 7
app/src/main/java/me/vadik/knigopis/adapters/BooksAdapter.kt

@@ -45,7 +45,7 @@ class BooksAdapter(
                     }
                         .io2main()
                         .subscribe({}, {
-                            context.toast(R.string.cannot_delete_book)
+                            context.toast(R.string.books_error_delete)
                             logError("cannot delete finished book", it)
                         })
                     books.removeAt(index)
@@ -54,15 +54,15 @@ class BooksAdapter(
             }
             val onDeleteClicked = { book: Book ->
                 AlertDialog.Builder(context)
-                    .setTitle(R.string.book_delete_confirmation_title)
+                    .setTitle(R.string.books_title_confirm_delete)
                     .setMessage(
                         context.getString(
-                            R.string.book_delete_confirm_text,
+                            R.string.books_message_confirm_delete,
                             book.fullTitle
                         )
                     )
-                    .setNegativeButton(R.string.book_cancel_delete) { d, _ -> d.dismiss() }
-                    .setPositiveButton(R.string.book_confirm_delete) { d, _ ->
+                    .setNegativeButton(R.string.common_button_cancel) { d, _ -> d.dismiss() }
+                    .setPositiveButton(R.string.books_button_confirm_delete) { d, _ ->
                         onDeleteConfirmed(book)
                         d.dismiss()
                     }
@@ -75,10 +75,10 @@ class BooksAdapter(
             setOnLongClickListener {
                 dialogs.showDialog(
                     book.fullTitle,
-                    createDialogItem(R.string.book_option_edit, R.drawable.ic_edit) {
+                    createDialogItem(R.string.books_button_edit, R.drawable.ic_edit) {
                         router.openEditBookScreen(book)
                     },
-                    createDialogItem(R.string.book_option_delete, R.drawable.ic_delete) {
+                    createDialogItem(R.string.books_button_delete, R.drawable.ic_delete) {
                         onDeleteClicked(book)
                     }
                 )

+ 2 - 2
app/src/main/java/me/vadik/knigopis/adapters/books/BooksAdapter.kt

@@ -28,10 +28,10 @@ class BooksAdapter(
         holder.view.setOnLongClickListener {
             dialogs.showDialog(
                 book.title + " — " + book.author,
-                createDialogItem(R.string.add_book_todo, R.drawable.ic_playlist_add) {
+                createDialogItem(R.string.user_button_todo, R.drawable.ic_playlist_add) {
                     context.startActivity(context.createNewBookIntent(book.title, book.author))
                 },
-                createDialogItem(R.string.add_book_done, R.drawable.ic_playlist_add_check) {
+                createDialogItem(R.string.user_button_done, R.drawable.ic_playlist_add_check) {
                     context.startActivity(context.createNewBookIntent(book.title, book.author, 100))
                 }
             )

+ 7 - 7
app/src/main/java/me/vadik/knigopis/adapters/users/SocialNetwork.kt

@@ -12,11 +12,11 @@ enum class SocialNetwork(
     @DrawableRes val iconRes: Int,
     val host: String
 ) {
-    FACEBOOK(R.string.social_facebook, R.drawable.ic_social_facebook, "www.facebook.com"),
-    INSTAGRAM(R.string.social_instagram, R.drawable.ic_social_instagram, "www.instagram.com"),
-    TWITTER(R.string.social_twitter, R.drawable.ic_social_twitter, "twitter.com"),
-    GOOGLE(R.string.social_googleplus, R.drawable.ic_social_googleplus, "plus.google.com"),
-    VK_COM(R.string.social_vkontakte, R.drawable.ic_social_vkontakte, "vk.com"),
-    MAIL_RU(R.string.social_mailru, R.drawable.ic_social_mailru, "my.mail.ru"),
-    LINKEDIN(R.string.social_linkedin, R.drawable.ic_social_linkedin, "www.linkedin.com")
+    FACEBOOK(R.string.common_social_facebook, R.drawable.ic_social_facebook, "www.facebook.com"),
+    INSTAGRAM(R.string.common_social_instagram, R.drawable.ic_social_instagram, "www.instagram.com"),
+    TWITTER(R.string.common_social_twitter, R.drawable.ic_social_twitter, "twitter.com"),
+    GOOGLE(R.string.common_social_googleplus, R.drawable.ic_social_googleplus, "plus.google.com"),
+    VK_COM(R.string.common_social_vkontakte, R.drawable.ic_social_vkontakte, "vk.com"),
+    MAIL_RU(R.string.common_social_mailru, R.drawable.ic_social_mailru, "my.mail.ru"),
+    LINKEDIN(R.string.common_social_linkedin, R.drawable.ic_social_linkedin, "www.linkedin.com")
 }

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

@@ -38,9 +38,9 @@ class ProfileActivity : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.profile_activity)
         initToolbar(profileToolbar)
-        profileTodoCount.text = getString(R.string.profile_caption_todo, 0)
-        profileDoingCount.text = getString(R.string.profile_caption_doing, 0)
-        profileDoneCount.text = getString(R.string.profile_caption_done, 0)
+        profileTodoCount.text = getString(R.string.profile_text_todo, 0)
+        profileDoingCount.text = getString(R.string.profile_text_doing, 0)
+        profileDoneCount.text = getString(R.string.profile_text_done, 0)
         profileTodoCount.setOnClickListener {
             setRandomFooterBook(todoList)
         }
@@ -65,7 +65,7 @@ class ProfileActivity : AppCompatActivity() {
         val book = books.random() ?: return
         randomProfileBook.alpha = 1f
         randomProfileBook.text = getString(
-            R.string.profile_book_random,
+            R.string.profile_text_random,
             book.titleOrDefault,
             (book as? PlannedBook)?.priority ?: 100
         )
@@ -110,15 +110,15 @@ class ProfileActivity : AppCompatActivity() {
     @Suppress("USELESS_CAST")
     private fun onRefreshFinishedBooks(finishedBooks: List<FinishedBook>) {
         doneList.clearAndAddAll(finishedBooks)
-        profileDoneCount.text = getString(R.string.profile_caption_done, doneList.size as Int)
+        profileDoneCount.text = getString(R.string.profile_text_done, doneList.size as Int)
     }
 
     @Suppress("USELESS_CAST")
     private fun onRefreshPlannedBooks(plannedBooks: List<PlannedBook>) {
         doingList.clearAndAddAll(plannedBooks.filter { it.priority > 0 })
-        profileDoingCount.text = getString(R.string.profile_caption_doing, doingList.size as Int)
+        profileDoingCount.text = getString(R.string.profile_text_doing, doingList.size as Int)
         todoList.clearAndAddAll(plannedBooks.filter { it.priority == 0 })
-        profileTodoCount.text = getString(R.string.profile_caption_todo, todoList.size as Int)
+        profileTodoCount.text = getString(R.string.profile_text_todo, todoList.size as Int)
     }
 
     private fun updateNicknameOrExitEditMode() {
@@ -141,7 +141,7 @@ class ProfileActivity : AppCompatActivity() {
                 quitEditMode()
                 refreshProfile()
             }, {
-                toast(R.string.profile_option_save_failed)
+                toast(R.string.profile_error_save)
                 logError("cannot update profile", it)
             })
     }
@@ -166,7 +166,7 @@ class ProfileActivity : AppCompatActivity() {
                 R.id.option_share_profile -> {
                     profileUrl?.let {
                         startActivity(
-                            createTextShareIntent(it, getString(R.string.option_share_title))
+                            createTextShareIntent(it, getString(R.string.profile_title_share))
                         )
                     }
                     true

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

@@ -52,7 +52,7 @@ class UserActivity : AppCompatActivity() {
             api.createSubscription(userId, auth.getAccessToken())
                 .io2main()
                 .subscribe({
-                    view.snackbar(R.string.following_toast_subscribed)
+                    view.snackbar(R.string.users_info_subscribed)
                 }, {
                     fab.showScale()
                     logError("Cannot update subscription", it)
@@ -109,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(R.string.user_option_copy_success, link)
+                toast(R.string.user_info_copied, link)
                 true
             }
             R.id.option_unsubscribe -> {
@@ -117,7 +117,7 @@ class UserActivity : AppCompatActivity() {
                     .io2main()
                     .subscribe({}, {
                         logError("Cannot unsubscribe", it)
-                        toast(R.string.user_option_unsubscribe_failed)
+                        toast(R.string.user_error_unsubscribe)
                     })
                 true
             }

+ 4 - 4
app/src/main/res/layout/about.xml

@@ -22,7 +22,7 @@
         android:layout_height="wrap_content"
         android:layout_gravity="center_horizontal"
         android:layout_marginTop="4dp"
-        android:text="@string/app_name"
+        android:text="@string/common.title.app"
         android:textSize="16sp" />
 
     <TextView
@@ -43,18 +43,18 @@
         <TextView
             style="@style/AboutItem"
             android:drawableStart="@drawable/ic_about_api"
-            android:text="@string/about_idea" />
+            android:text="@string/about.text.idea" />
 
         <TextView
             style="@style/AboutItem"
             android:drawableStart="@drawable/ic_about_developer"
-            android:text="@string/about_developer" />
+            android:text="@string/about.text.developer" />
 
         <TextView
             android:id="@+id/aboutDesignerText"
             style="@style/AboutItem"
             android:drawableStart="@drawable/ic_about_designer"
-            android:text="@string/about_designer" />
+            android:text="@string/about.text.designer" />
 
     </LinearLayout>
 

+ 1 - 1
app/src/main/res/layout/activity_main.xml

@@ -19,7 +19,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             app:popupTheme="@style/ToolbarPopupTheme"
-            app:title="@string/app_name" />
+            app:title="@string/common.title.app" />
 
     </android.support.design.widget.AppBarLayout>
 

+ 7 - 7
app/src/main/res/layout/book_edit.xml

@@ -18,7 +18,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             app:popupTheme="@style/ToolbarPopupTheme"
-            tools:title="@string/book_add_title" />
+            tools:title="@string/book.title.add" />
 
     </android.support.design.widget.AppBarLayout>
 
@@ -38,7 +38,7 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="16dp"
-                android:hint="@string/book_hint_title"
+                android:hint="@string/book.hint.title"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toLeftOf="@id/coverImageViews"
                 app:layout_constraintTop_toTopOf="parent">
@@ -59,7 +59,7 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="16dp"
-                android:hint="@string/book_hint_author"
+                android:hint="@string/book.hint.author"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toLeftOf="@id/coverImageViews"
                 app:layout_constraintTop_toBottomOf="@id/book_title_input">
@@ -112,7 +112,7 @@
                 style="@style/TextInputLayoutStyle"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:hint="@string/book_hint_year"
+                android:hint="@string/book.hint.year"
                 app:layout_constraintHorizontal_chainStyle="spread_inside"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toLeftOf="@+id/bookMonthInput"
@@ -133,7 +133,7 @@
                 style="@style/TextInputLayoutStyle"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:hint="@string/book_hint_month"
+                android:hint="@string/book.hint.month"
                 app:layout_constraintLeft_toRightOf="@id/bookYearInput"
                 app:layout_constraintRight_toLeftOf="@+id/bookDayInput"
                 app:layout_constraintTop_toBottomOf="@id/progressSeekBar">
@@ -152,7 +152,7 @@
                 style="@style/TextInputLayoutStyle"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:hint="@string/book_hint_day"
+                android:hint="@string/book.hint.day"
                 app:layout_constraintLeft_toRightOf="@id/bookMonthInput"
                 app:layout_constraintRight_toRightOf="parent"
                 app:layout_constraintTop_toBottomOf="@id/progressSeekBar">
@@ -174,7 +174,7 @@
                 android:background="@drawable/text_area_background"
                 android:drawableEnd="@drawable/ic_comment_gray"
                 android:drawablePadding="16dp"
-                android:hint="@string/book_hint_notes"
+                android:hint="@string/book.hint.notes"
                 android:inputType="textCapSentences|textMultiLine"
                 android:minLines="2"
                 android:padding="16dp"

+ 1 - 1
app/src/main/res/layout/books_page.xml

@@ -19,7 +19,7 @@
     <TextView
         android:id="@+id/booksPlaceholder"
         style="@style/PlaceholderStyle"
-        android:text="@string/error_no_books" />
+        android:text="@string/books.error.empty" />
 
     <android.support.design.widget.FloatingActionButton
         android:id="@+id/addBookButton"

+ 1 - 1
app/src/main/res/layout/bottom_sheet_dialog_item.xml

@@ -25,6 +25,6 @@
         android:layout_marginStart="56dp"
         android:textColor="@color/black_87"
         android:textSize="16sp"
-        tools:text="@string/book_option_edit" />
+        tools:text="@string/books.button.edit" />
 
 </FrameLayout>

+ 1 - 1
app/src/main/res/layout/notes_page.xml

@@ -21,6 +21,6 @@
     <TextView
         android:id="@+id/notesPlaceholder"
         style="@style/PlaceholderStyle"
-        android:text="@string/error_no_notes" />
+        android:text="@string/notes.error.empty" />
 
 </FrameLayout>

+ 1 - 1
app/src/main/res/layout/profile_activity.xml

@@ -53,7 +53,7 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             android:gravity="center"
-            android:hint="@string/profile_hint_nickname"
+            android:hint="@string/profile.hint.nickname"
             android:inputType="text"
             android:textSize="28sp" />
 

+ 1 - 1
app/src/main/res/layout/user_activity.xml

@@ -78,7 +78,7 @@
         android:id="@+id/userBooksErrorPlaceholder"
         style="@style/PlaceholderStyle"
         android:layout_marginTop="56dp"
-        android:text="@string/error_loading_data" />
+        android:text="@string/common.error.network" />
 
     <android.support.design.widget.FloatingActionButton
         android:id="@+id/fab"

+ 1 - 1
app/src/main/res/layout/users_page.xml

@@ -21,6 +21,6 @@
     <TextView
         android:id="@+id/usersPlaceholder"
         style="@style/PlaceholderStyle"
-        android:text="@string/error_no_users" />
+        android:text="@string/users.error.empty" />
 
 </FrameLayout>

+ 2 - 2
app/src/main/res/menu/book_menu.xml

@@ -6,12 +6,12 @@
     <item
         android:id="@+id/option_save_book"
         android:icon="@drawable/ic_done"
-        android:title="@string/book_option_save"
+        android:title="@string/book.option.save"
         app:showAsAction="always" />
 
     <item
         android:id="@+id/option_progress_bar"
-        android:title="@string/book_option_save"
+        android:title="@string/book.option.save"
         android:visible="false"
         app:actionLayout="@layout/menu_progress_bar"
         app:showAsAction="always"

+ 3 - 3
app/src/main/res/menu/navigation.xml

@@ -4,16 +4,16 @@
     <item
         android:id="@+id/navigation_home"
         android:icon="@drawable/ic_home"
-        android:title="@string/title_home"/>
+        android:title="@string/main.navigation.home"/>
 
     <item
         android:id="@+id/navigation_users"
         android:icon="@drawable/ic_people"
-        android:title="@string/title_users"/>
+        android:title="@string/main.navigation.users"/>
 
     <item
         android:id="@+id/navigation_notes"
         android:icon="@drawable/ic_comment"
-        android:title="@string/title_notes"/>
+        android:title="@string/main.navigation.notes"/>
 
 </menu>

+ 3 - 3
app/src/main/res/menu/options.xml

@@ -4,19 +4,19 @@
 
     <item
         android:id="@+id/option_login"
-        android:title="@string/option_login"
+        android:title="@string/main.option.login"
         android:visible="false"
         app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/option_profile"
-        android:title="@string/option_profile"
+        android:title="@string/main.option.profile"
         android:visible="false"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/option_about"
-        android:title="@string/option_about"
+        android:title="@string/main.option.about"
         app:showAsAction="never" />
 
 </menu>

+ 3 - 3
app/src/main/res/menu/profile_menu.xml

@@ -5,19 +5,19 @@
     <item
         android:id="@+id/option_edit_profile"
         android:icon="@drawable/ic_edit"
-        android:title="@string/profile_option_edit"
+        android:title="@string/profile.option.edit"
         android:visible="false"
         app:iconTint="@color/white"
         app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/option_share_profile"
-        android:title="@string/profile_option_share"
+        android:title="@string/profile.option.share"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/option_logout_profile"
-        android:title="@string/option_logout"
+        android:title="@string/profile.option.logout"
         app:showAsAction="never" />
 
 </menu>

+ 2 - 2
app/src/main/res/menu/user_menu.xml

@@ -4,12 +4,12 @@
 
     <item
         android:id="@+id/option_copy"
-        android:title="@string/user_option_copy"
+        android:title="@string/user.option.copy"
         app:showAsAction="never" />
 
     <item
         android:id="@+id/option_unsubscribe"
-        android:title="@string/user_option_unsubscribe"
+        android:title="@string/user.option.unsubscribe"
         android:visible="false"
         app:showAsAction="never" />
 

+ 78 - 77
app/src/main/res/values-ru/strings.xml

@@ -1,101 +1,102 @@
 <resources>
     <!-- common -->
-    <string name="app_name">Книгопись</string>
-    <string name="error_loading_data">Проверьте подключение к сети.</string>
+    <string name="common.title.app">Книгопись</string>
+    <string name="common.error.network">Проверьте подключение к сети</string>
+    <string name="common.button.retry">Повторить</string>
+    <string name="common.button.cancel">Отмена</string>
+    <string name="common.info.dev">НЕ ПЫТАЙТЕСБ ЧТОТ0 N3МЕНИТЬ!</string>
 
     <!-- main screen -->
-    <string name="title_home">Мои книги</string>
-    <string name="title_users">Подписки</string>
-    <string name="title_notes">Комментарии</string>
-    <string name="error_unauthorized">Пожалуйста, авторизуйтесь.</string>
+    <string name="main.navigation.home">Мои книги</string>
+    <string name="main.navigation.users">Подписки</string>
+    <string name="main.navigation.notes">Комментарии</string>
+    <string name="main.error.unauthorized">Пожалуйста, авторизуйтесь</string>
 
     <!-- main menu -->
-    <string name="option_login">Войти</string>
-    <string name="option_logout">Выйти</string>
-    <string name="option_profile">Мой профиль</string>
-    <string name="option_about">О приложении</string>
-    <string name="about_idea">Идея:\nhttp://knigopis.com</string>
-    <string name="about_developer">Разработка:\nvadik@sirekanyan.com</string>
-    <string name="about_designer">Дизайн:\nanna@sirekanyan.com</string>
+    <string name="main.option.login">Войти</string>
+    <string name="main.option.profile">Мой профиль</string>
+    <string name="main.option.about">О приложении</string>
+
+    <!-- about -->
+    <string name="about.text.idea">Идея:\nhttp://knigopis.com</string>
+    <string name="about.text.developer">Разработка:\nvadik@sirekanyan.com</string>
+    <string name="about.text.designer">Дизайн:\nanna@sirekanyan.com</string>
 
     <!-- profile screen -->
-    <string name="profile_caption_todo">%d\nв очереди</string>
-    <string name="profile_caption_doing">%d\nв процессе</string>
-    <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>
+    <string name="profile.hint.nickname">псевдоним</string>
+    <string name="profile.hint.homepage">личная страница</string>
+    <string name="profile.text.todo">%d\nв очереди</string>
+    <string name="profile.text.doing">%d\nв процессе</string>
+    <string name="profile.text.done">%d\nпрочитано</string>
+    <string name="profile.text.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>
-    <string name="option_share_title">Отправить ссылку на профиль</string>
+    <string name="profile.option.edit">Редактировать</string>
+    <string name="profile.option.save">Сохранить</string>
+    <string name="profile.option.share">Поделиться</string>
+    <string name="profile.option.logout">Выйти</string>
+    <string name="profile.error.save">Не удалось обновить имя</string>
+    <string name="profile.title.share">Отправить ссылку на профиль</string>
 
     <!-- 🏠 books tab -->
-    <string name="error_no_books">У вас пока нет книг.</string>
-    <string name="book_header_todo">К прочтению</string>
-    <string name="book_header_done_first">Прочитано в %s г.</string>
-    <string name="book_header_done">%s г.</string>
-    <string name="book_header_done_other">Прочие года</string>
+    <string name="books.error.empty">У вас пока нет книг</string>
+    <string name="books.header.todo">К прочтению</string>
+    <string name="books.header.done_first">Прочитано в %s г.</string>
+    <string name="books.header.done">%s г.</string>
+    <string name="books.header.done_other">Прочие года</string>
+    <string name="books.button.edit">Редактировать</string>
+    <string name="books.button.delete">Удалить</string>
+    <string name="books.title.confirm_delete">Подтверждение</string>
+    <string name="books.message.confirm_delete">Удалить книгу \"%s\"?</string>
+    <string name="books.button.confirm_delete">Удалить</string>
+    <string name="books.error.delete">Не получилось удалить</string>
 
     <!-- book screen -->
-    <string name="book_add_title">Добавить книгу</string>
-    <string name="book_edit_title">Изменить книгу</string>
-    <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>
-    <string name="book_hint_month">Месяц</string>
-    <string name="book_hint_day">День</string>
-    <string name="book_read_checkbox">Прочитана</string>
+    <string name="book.title.add">Добавить книгу</string>
+    <string name="book.title.edit">Изменить книгу</string>
+    <string name="book.hint.title">Название</string>
+    <string name="book.hint.author">Автор</string>
+    <string name="book.hint.year">Год</string>
+    <string name="book.hint.month">Месяц</string>
+    <string name="book.hint.day">День</string>
+    <string name="book.hint.notes">Примечания</string>
+    <string name="book.checkbox.done">Прочитана</string>
 
     <!-- book menu -->
-    <string name="book_option_edit">Редактировать</string>
-    <string name="book_option_delete">Удалить</string>
-    <string name="book_delete_confirmation_title">Подтверждение</string>
-    <string name="book_delete_confirm_text">Удалить книгу \"%s\"?</string>
-    <string name="book_cancel_delete">Отмена</string>
-    <string name="book_confirm_delete">Удалить</string>
-    <string name="cannot_delete_book">Не получилось удалить</string>
-    <string name="book_hint_notes">Примечания</string>
+    <string name="book.option.save">Сохранить</string>
+    <string name="book.error.save">Не удалось сохранить книгу</string>
 
-    <!-- 👨 following tab -->
-    <string name="error_no_users">Вы ещё ни на кого не подписаны.</string>
-    <string name="following.toast.subscribed">Пользователь добавлен в избранное</string>
-    <string name="following.toast.no_browser">Не найдено приложение для просмотра страницы</string>
+    <!-- 👨 users tab -->
+    <string name="users.error.empty">Вы ещё ни на кого не подписаны</string>
+    <string name="users.info.subscribed">Пользователь добавлен в избранное</string>
+    <string name="users.info.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>
+    <!-- user screen -->
+    <string name="user.button.todo">К прочтению</string>
+    <string name="user.button.done">Прочитано</string>
 
-    <!-- 🖍 comments tab -->
-    <string name="error_no_notes">Нет новых комментариев.</string>
+    <!-- user menu -->
+    <string name="user.option.copy">Скопировать ссылку</string>
+    <string name="user.option.unsubscribe">Отписаться</string>
+    <string name="user.info.copied">Скопировано: %s</string>
+    <string name="user.error.unsubscribe">Не удалось отписаться</string>
 
-    <!-- read phone state permission -->
-    <string name="no_access">Нет доступа</string>
-    <string name="no_access_message">Данное разрешение необходимо для авторизации через ulogin</string>
-    <string name="no_access_retry_button">Повторить</string>
-    <string name="no_permissions">Разрешения</string>
-    <string name="no_permissions_message">Подтвердите разрешения в настройках, чтобы войти в приложение</string>
-    <string name="no_permissions_goto_settings_button">В настройки</string>
-    <string name="dialog_cancel_button">Отменить</string>
+    <!-- 🖍 notes tab -->
+    <string name="notes.error.empty">Нет новых комментариев</string>
 
-    <!-- dev -->
-    <string name="dev_mode_message">НЕ ПЫТАЙТЕСБ ЧТОТ0 N3МЕНИТЬ!</string>
+    <!-- permissions -->
+    <string name="permissions.title.no_access">Нет доступа</string>
+    <string name="permissions.message.no_access">Данное разрешение необходимо для авторизации через ulogin</string>
+    <string name="permissions.title.request">Разрешения</string>
+    <string name="permissions.message.request">Подтвердите разрешения в настройках, чтобы войти в приложение</string>
+    <string name="permissions.button.settings">В настройки</string>
 
     <!-- social networks -->
-    <string name="social_facebook">Фейсбук</string>
-    <string name="social_instagram">Инстаграм</string>
-    <string name="social_twitter">Твиттер</string>
-    <string name="social_googleplus">Google+</string>
-    <string name="social_vkontakte">Вконтакте</string>
-    <string name="social_mailru">Mail.Ru</string>
-    <string name="social_linkedin">LinkedIn</string>
+    <string name="common.social.facebook">Фейсбук</string>
+    <string name="common.social.instagram">Инстаграм</string>
+    <string name="common.social.twitter">Твиттер</string>
+    <string name="common.social.googleplus">Google+</string>
+    <string name="common.social.vkontakte">Вконтакте</string>
+    <string name="common.social.mailru">Mail.Ru</string>
+    <string name="common.social.linkedin">LinkedIn</string>
 </resources>

+ 78 - 77
app/src/main/res/values/strings.xml

@@ -1,101 +1,102 @@
 <resources>
     <!-- common -->
-    <string name="app_name">Knigopis</string>
-    <string name="error_loading_data">Check your network connection.</string>
+    <string name="common.title.app">Knigopis</string>
+    <string name="common.error.network">Check your network connection</string>
+    <string name="common.button.retry">Retry</string>
+    <string name="common.button.cancel">Cancel</string>
+    <string name="common.info.dev">We Present A SPECIAL PRESENTATION</string>
 
     <!-- main screen -->
-    <string name="title_home">Books</string>
-    <string name="title_users">Following</string>
-    <string name="title_notes">Comments</string>
-    <string name="error_unauthorized">Please log in.</string>
+    <string name="main.navigation.home">Books</string>
+    <string name="main.navigation.users">Following</string>
+    <string name="main.navigation.notes">Comments</string>
+    <string name="main.error.unauthorized">Please log in</string>
 
     <!-- main menu -->
-    <string name="option_login">Login</string>
-    <string name="option_logout">Logout</string>
-    <string name="option_profile">Profile</string>
-    <string name="option_about">About</string>
-    <string name="about_idea">API:\nhttp://knigopis.com</string>
-    <string name="about_developer">Development:\nvadik@sirekanyan.com</string>
-    <string name="about_designer">Design:\nanna@sirekanyan.com</string>
+    <string name="main.option.login">Login</string>
+    <string name="main.option.profile">Profile</string>
+    <string name="main.option.about">About</string>
+
+    <!-- about -->
+    <string name="about.text.idea">API:\nhttp://knigopis.com</string>
+    <string name="about.text.developer">Development:\nvadik@sirekanyan.com</string>
+    <string name="about.text.designer">Design:\nanna@sirekanyan.com</string>
 
     <!-- profile screen -->
-    <string name="profile_caption_todo">%d\ntodo</string>
-    <string name="profile_caption_doing">%d\ndoing</string>
-    <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">%s — %d%%</string>
+    <string name="profile.hint.nickname">nickname</string>
+    <string name="profile.hint.homepage">homepage</string>
+    <string name="profile.text.todo">%d\ntodo</string>
+    <string name="profile.text.doing">%d\ndoing</string>
+    <string name="profile.text.done">%d\ndone</string>
+    <string name="profile.text.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>
-    <string name="option_share_title">Share your profile</string>
+    <string name="profile.option.edit">Edit</string>
+    <string name="profile.option.save">Save</string>
+    <string name="profile.option.share">Share</string>
+    <string name="profile.option.logout">Logout</string>
+    <string name="profile.error.save">Cannot update profile</string>
+    <string name="profile.title.share">Share your profile</string>
 
     <!-- 🏠 books tab -->
-    <string name="error_no_books">You don\'t have any books.</string>
-    <string name="book_header_todo">Todo</string>
-    <string name="book_header_done_first">Done in %s</string>
-    <string name="book_header_done">%s</string>
-    <string name="book_header_done_other">Other years</string>
+    <string name="books.error.empty">You don\'t have any books</string>
+    <string name="books.header.todo">Todo</string>
+    <string name="books.header.done_first">Done in %s</string>
+    <string name="books.header.done">%s</string>
+    <string name="books.header.done_other">Other years</string>
+    <string name="books.button.edit">Edit</string>
+    <string name="books.button.delete">Delete</string>
+    <string name="books.title.confirm_delete">Confirmation</string>
+    <string name="books.message.confirm_delete">Are you sure you want to delete \"%s\"?</string>
+    <string name="books.button.confirm_delete">Delete</string>
+    <string name="books.error.delete">Cannot delete book</string>
 
     <!-- book screen -->
-    <string name="book_add_title">Add book</string>
-    <string name="book_edit_title">Edit book</string>
-    <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>
-    <string name="book_hint_month">Month</string>
-    <string name="book_hint_day">Day</string>
-    <string name="book_read_checkbox">Done</string>
+    <string name="book.title.add">Add book</string>
+    <string name="book.title.edit">Edit book</string>
+    <string name="book.hint.title">Title</string>
+    <string name="book.hint.author">Author</string>
+    <string name="book.hint.year">Year</string>
+    <string name="book.hint.month">Month</string>
+    <string name="book.hint.day">Day</string>
+    <string name="book.hint.notes">Notes</string>
+    <string name="book.checkbox.done">Done</string>
 
     <!-- book menu -->
-    <string name="book_option_edit">Edit</string>
-    <string name="book_option_delete">Delete</string>
-    <string name="book_delete_confirmation_title">Confirmation</string>
-    <string name="book_delete_confirm_text">Are you sure you want to delete \"%s\"?</string>
-    <string name="book_cancel_delete">Cancel</string>
-    <string name="book_confirm_delete">Delete</string>
-    <string name="cannot_delete_book">Cannot delete book</string>
-    <string name="book_hint_notes">Notes</string>
+    <string name="book.option.save">Save</string>
+    <string name="book.error.save">Cannot save book</string>
 
-    <!-- 👨 following tab -->
-    <string name="error_no_users">You don\'t have any subscriptions yet.</string>
-    <string name="following.toast.subscribed">Successfully subscribed</string>
-    <string name="following.toast.no_browser">No browser app found</string>
+    <!-- 👨 users tab -->
+    <string name="users.error.empty">You don\'t have any subscriptions yet</string>
+    <string name="users.info.subscribed">Successfully subscribed</string>
+    <string name="users.info.no_browser">No browser app found</string>
 
-    <!-- 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>
+    <!-- user screen -->
+    <string name="user.button.todo">Todo</string>
+    <string name="user.button.done">Done</string>
 
-    <!-- 🖍 comments tab -->
-    <string name="error_no_notes">No one is posted yet.</string>
+    <!-- user menu -->
+    <string name="user.option.copy">Copy link</string>
+    <string name="user.option.unsubscribe">Unsubscribe</string>
+    <string name="user.info.copied">Copied: %s</string>
+    <string name="user.error.unsubscribe">Cannot unsubscribe</string>
 
-    <!-- read phone state permission -->
-    <string name="no_access">Permission denied</string>
-    <string name="no_access_message">This permission is necessary to authorize with ulogin, please try again</string>
-    <string name="no_access_retry_button">Retry</string>
-    <string name="no_permissions">Permissions</string>
-    <string name="no_permissions_message">Please allow permissions in order to login</string>
-    <string name="no_permissions_goto_settings_button">Goto settings</string>
-    <string name="dialog_cancel_button">Cancel</string>
+    <!-- 🖍 notes tab -->
+    <string name="notes.error.empty">No one is posted yet</string>
 
-    <!-- dev -->
-    <string name="dev_mode_message">We Present A SPECIAL PRESENTATION</string>
+    <!-- permissions -->
+    <string name="permissions.title.no_access">Permission denied</string>
+    <string name="permissions.message.no_access">This permission is necessary to authorize with ulogin, please try again</string>
+    <string name="permissions.title.request">Permissions</string>
+    <string name="permissions.message.request">Please allow permissions in order to login</string>
+    <string name="permissions.button.settings">Goto settings</string>
 
     <!-- social networks -->
-    <string name="social_facebook">Facebook</string>
-    <string name="social_instagram">Instagram</string>
-    <string name="social_twitter">Twitter</string>
-    <string name="social_googleplus">Google+</string>
-    <string name="social_vkontakte">VKontakte</string>
-    <string name="social_mailru">Mail.Ru</string>
-    <string name="social_linkedin">LinkedIn</string>
+    <string name="common.social.facebook">Facebook</string>
+    <string name="common.social.instagram">Instagram</string>
+    <string name="common.social.twitter">Twitter</string>
+    <string name="common.social.googleplus">Google+</string>
+    <string name="common.social.vkontakte">VKontakte</string>
+    <string name="common.social.mailru">Mail.Ru</string>
+    <string name="common.social.linkedin">LinkedIn</string>
 </resources>