From 8edb0221ded1ab45659484ca238e95275fd8befc Mon Sep 17 00:00:00 2001
From: Andrei Moskalchuk <moskalchuk@gmail.com>
Date: Sat, 26 Jun 2021 15:47:22 +0300
Subject: [PATCH 1/3] Adding initial support for russian language

---
 ui/extractedTranslations/ru/translations.json | 307 ++++++++++++++++++
 1 file changed, 307 insertions(+)
 create mode 100644 ui/extractedTranslations/ru/translations.json

diff --git a/ui/extractedTranslations/ru/translations.json b/ui/extractedTranslations/ru/translations.json
new file mode 100644
index 0000000..ef0c9f2
--- /dev/null
+++ b/ui/extractedTranslations/ru/translations.json
@@ -0,0 +1,307 @@
+{
+  "album_filter": {
+    "only_favorites": "Показать только избранные",
+    "sort_by": "Отсортировать по",
+    "sorting_options": {
+      "date_imported": "Дата импортирования",
+      "date_shot": "Дата снимка",
+      "title": "Заголовок",
+      "type": "Вид"
+    }
+  },
+  "albums_page": {
+    "title": "Альбомы"
+  },
+  "general": {
+    "action": {
+      "add": "Добавить",
+      "cancel": "Отменить",
+      "delete": "Удалить",
+      "more": "Более",
+      "remove": "Убрать",
+      "save": "Сохранить"
+    },
+    "loading": {
+      "album": "Загрузка альбома",
+      "default": "Загрузка...",
+      "media": "Загрузка медиа",
+      "page": "Загрузка страницы",
+      "paginate": {
+        "faces": "Loading more people",
+        "media": "Loading more media"
+      },
+      "shares": "Loading shares...",
+      "timeline": "Загрузка хронологии"
+    }
+  },
+  "header": {
+    "search": {
+      "loading": "Загрузка результатов...",
+      "no_results": "Результатов не найдено",
+      "placeholder": "Поиск",
+      "result_type": {
+        "albums": "Альбомы",
+        "photos": "Фото"
+      }
+    }
+  },
+  "login_page": {
+    "field": {
+      "password": "Пароль",
+      "submit": "Войти",
+      "username": "Имя пользователя"
+    },
+    "initial_setup": {
+      "field": {
+        "photo_path": {
+          "label": "Путь к фото",
+          "placeholder": "/path/to/photos"
+        },
+        "submit": "Настроить Photoview"
+      },
+      "title": "Первичная настройка"
+    },
+    "welcome": "Добро пожаловать в Photoview"
+  },
+  "meta": {
+    "description": "Простая и Удобная Фото Галерея для Личного Сервера"
+  },
+  "people_page": {
+    "face_group": {
+      "action": {
+        "add_label": "Добавить Метку",
+        "change_label": "Поменять Метку",
+        "detach_face": "Detach Face",
+        "merge_face": "Merge Face",
+        "move_faces": "Move Faces"
+      },
+      "label_placeholder": "Метка",
+      "unlabeled": "Без метки",
+      "unlabeled_person": "Unlabeled person"
+    },
+    "modal": {
+      "action": {
+        "merge": "Объединить"
+      },
+      "detach_image_faces": {
+        "action": {
+          "detach": "Detach image faces",
+          "select_images": "Select images to detach"
+        },
+        "description": "Detach selected images of this face group and move them to a new face groups",
+        "title": "Detach Image Faces"
+      },
+      "merge_face_groups": {
+        "description": "All images within this face group will be merged into the selected face group.",
+        "destination_table": {
+          "title": "Select the destination face"
+        },
+        "title": "Merge Face Groups"
+      },
+      "move_image_faces": {
+        "description": "Move selected images of this face group to another face group",
+        "destination_face_group_table": {
+          "move_action": "Move image faces",
+          "title": "Select destination face group"
+        },
+        "image_select_table": {
+          "next_action": "Next",
+          "title": "Select images to move"
+        },
+        "title": "Move Image Faces"
+      }
+    },
+    "recognize_unlabeled_faces_button": "Recognize unlabeled faces",
+    "table": {
+      "select_face_group": {
+        "search_faces_placeholder": "Search faces..."
+      },
+      "select_image_faces": {
+        "search_images_placeholder": "Search images..."
+      }
+    }
+  },
+  "photos_page": {
+    "title": "Photos"
+  },
+  "places_page": {
+    "title": "Places"
+  },
+  "routes": {
+    "page_not_found": "Page not found"
+  },
+  "settings": {
+    "concurrent_workers": {
+      "description": "The maximum amount of scanner jobs that is allowed to run at once",
+      "title": "Scanner concurrent workers"
+    },
+    "logout": "Log out",
+    "periodic_scanner": {
+      "checkbox_label": "Enable periodic scanner",
+      "field": {
+        "description": "How often the scanner should perform automatic scans of all users",
+        "label": "Periodic scan interval"
+      },
+      "interval_unit": {
+        "days": "Days",
+        "hour": "Hour",
+        "minutes": "Minutes",
+        "months": "Months",
+        "seconds": "Seconds"
+      },
+      "title": "Periodic scanner"
+    },
+    "scanner": {
+      "description": "Will scan all users for new or updated media",
+      "scan_all_users": "Scan all users",
+      "title": "Scanner"
+    },
+    "user_preferences": {
+      "change_language": {
+        "description": "Change website language specific for this user",
+        "label": "Website language"
+      },
+      "language_selector": {
+        "placeholder": "Select language"
+      },
+      "title": "User preferences"
+    },
+    "users": {
+      "add_user": {
+        "submit": "Add user"
+      },
+      "confirm_delete_user": {
+        "action": "Delete {{user}}",
+        "description": "<0>Are you sure, you want to delete <1></1>?</0><p>This action cannot be undone</p>",
+        "title": "Delete user"
+      },
+      "password_reset": {
+        "description": "Change password for <1></1>",
+        "form": {
+          "label": "New password",
+          "placeholder": "password",
+          "submit": "Change password"
+        },
+        "title": "Change password"
+      },
+      "table": {
+        "column_names": {
+          "action": "Action",
+          "admin": "Admin",
+          "photo_path": "Photo path",
+          "username": "Username"
+        },
+        "new_user": "New user",
+        "row": {
+          "action": {
+            "change_password": "Change password",
+            "delete": "Delete",
+            "edit": "Edit",
+            "scan": "Scan"
+          }
+        }
+      },
+      "title": "Users"
+    },
+    "version_info": {
+      "build_date_title": "Build date",
+      "title": "Photoview Version",
+      "version_title": "Release Version"
+    }
+  },
+  "share_page": {
+    "media": {
+      "title": "Shared media"
+    },
+    "protected_share": {
+      "description": "This share is protected with a password.",
+      "title": "Protected share"
+    },
+    "share_not_found": "Share not found",
+    "share_not_found_description": "Maybe the share has expired or has been deleted.",
+    "wrong_password": "Wrong password, please try again."
+  },
+  "sidebar": {
+    "album": {
+      "title": "Свойства альбома"
+    },
+    "download": {
+      "filesize": {
+        "byte": "{{count}} Byte",
+        "byte_plural": "{{count}} Bytes",
+        "giga_byte": "{{count}} GB",
+        "kilo_byte": "{{count}} KB",
+        "mega_byte": "{{count}} MB",
+        "tera_byte": "{{count}} TB"
+      },
+      "table_columns": {
+        "dimensions": "Dimensions",
+        "file_size": "Size",
+        "file_type": "Type",
+        "name": "Name"
+      },
+      "title": "Download"
+    },
+    "media": {
+      "exif": {
+        "exposure_program": {
+          "action_program": "Action program",
+          "aperture_priority": "Aperture priority",
+          "bulb": "Bulb",
+          "creative_program": "Creative program",
+          "landscape_mode": "Landscape mode",
+          "manual": "Manual",
+          "normal_program": "Normal program",
+          "not_defined": "Not defined",
+          "portrait_mode": "Portrait mode",
+          "shutter_priority": "Shutter priority"
+        },
+        "flash": {
+          "auto": "Auto",
+          "did_not_fire": "Did not fire",
+          "fired": "Fired",
+          "no_flash": "No Flash",
+          "no_flash_function": "No flash function",
+          "off": "Off",
+          "on": "On",
+          "red_eye_reduction": "Red-eye reduction",
+          "return_detected": "Return detected",
+          "return_not_detected": "Return not detected"
+        },
+        "name": {
+          "aperture": "Диафрагма",
+          "camera": "Камера",
+          "date_shot": "Дата снимка",
+          "exposure": "Экспозиция",
+          "exposure_program": "Программа",
+          "flash": "Вспышка",
+          "focal_length": "Фокусное расстояние",
+          "iso": "ISO",
+          "lens": "Линза",
+          "maker": "Производитель"
+        }
+      }
+    },
+    "sharing": {
+      "add_share": "Add shares",
+      "copy_link": "Скопировать ссылку",
+      "no_shares_found": "No shares found",
+      "public_link": "Public Link",
+      "table_header": "Public shares",
+      "title": "Sharing options"
+    }
+  },
+  "sidemenu": {
+    "albums": "Альбомы",
+    "people": "Люди",
+    "photos": "Фото",
+    "places": "Места",
+    "settings": "Настройки"
+  },
+  "title": {
+    "loading_album": "Loading album",
+    "login": "Login",
+    "people": "Люди",
+    "settings": "Настройки"
+  }
+}

From b77650acd9caa6806f6b53fe328ed417226e1c33 Mon Sep 17 00:00:00 2001
From: Andrei Moskalchuk <moskalchuk@gmail.com>
Date: Sat, 26 Jun 2021 16:17:47 +0300
Subject: [PATCH 2/3] Translated more texts

More translation
---
 ui/extractedTranslations/ru/translations.json | 52 +++++++++----------
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/ui/extractedTranslations/ru/translations.json b/ui/extractedTranslations/ru/translations.json
index ef0c9f2..048e9df 100644
--- a/ui/extractedTranslations/ru/translations.json
+++ b/ui/extractedTranslations/ru/translations.json
@@ -27,10 +27,10 @@
       "media": "Загрузка медиа",
       "page": "Загрузка страницы",
       "paginate": {
-        "faces": "Loading more people",
-        "media": "Loading more media"
+        "faces": "Загрузить еще людей",
+        "media": "Загрузить еще медиа"
       },
-      "shares": "Loading shares...",
+      "shares": "Загрузка доступа...",
       "timeline": "Загрузка хронологии"
     }
   },
@@ -71,13 +71,13 @@
       "action": {
         "add_label": "Добавить Метку",
         "change_label": "Поменять Метку",
-        "detach_face": "Detach Face",
-        "merge_face": "Merge Face",
-        "move_faces": "Move Faces"
+        "detach_face": "Отсоединить Лицо",
+        "merge_face": "Объединить Лицо",
+        "move_faces": "Переместить Лица"
       },
       "label_placeholder": "Метка",
       "unlabeled": "Без метки",
-      "unlabeled_person": "Unlabeled person"
+      "unlabeled_person": "Человек без метки"
     },
     "modal": {
       "action": {
@@ -114,21 +114,21 @@
     "recognize_unlabeled_faces_button": "Recognize unlabeled faces",
     "table": {
       "select_face_group": {
-        "search_faces_placeholder": "Search faces..."
+        "search_faces_placeholder": "Поиск лиц..."
       },
       "select_image_faces": {
-        "search_images_placeholder": "Search images..."
+        "search_images_placeholder": "Поиск фото..."
       }
     }
   },
   "photos_page": {
-    "title": "Photos"
+    "title": "Фотографии"
   },
   "places_page": {
-    "title": "Places"
+    "title": "Места"
   },
   "routes": {
-    "page_not_found": "Page not found"
+    "page_not_found": "Страница не найдена"
   },
   "settings": {
     "concurrent_workers": {
@@ -143,18 +143,18 @@
         "label": "Periodic scan interval"
       },
       "interval_unit": {
-        "days": "Days",
-        "hour": "Hour",
-        "minutes": "Minutes",
-        "months": "Months",
-        "seconds": "Seconds"
+        "days": "День",
+        "hour": "Час",
+        "minutes": "Минута",
+        "months": "Месяц",
+        "seconds": "Секунда"
       },
       "title": "Periodic scanner"
     },
     "scanner": {
       "description": "Will scan all users for new or updated media",
       "scan_all_users": "Scan all users",
-      "title": "Scanner"
+      "title": "Сканер"
     },
     "user_preferences": {
       "change_language": {
@@ -162,7 +162,7 @@
         "label": "Website language"
       },
       "language_selector": {
-        "placeholder": "Select language"
+        "placeholder": "Выбрать язык"
       },
       "title": "User preferences"
     },
@@ -283,12 +283,12 @@
       }
     },
     "sharing": {
-      "add_share": "Add shares",
+      "add_share": "Поделится",
       "copy_link": "Скопировать ссылку",
-      "no_shares_found": "No shares found",
-      "public_link": "Public Link",
-      "table_header": "Public shares",
-      "title": "Sharing options"
+      "no_shares_found": "Нет доступа",
+      "public_link": "Общедоступная ссылка",
+      "table_header": "Общий доступ",
+      "title": "Настройки доступа"
     }
   },
   "sidemenu": {
@@ -299,8 +299,8 @@
     "settings": "Настройки"
   },
   "title": {
-    "loading_album": "Loading album",
-    "login": "Login",
+    "loading_album": "Загрузка альбома",
+    "login": "Имя пользователя",
     "people": "Люди",
     "settings": "Настройки"
   }

From 08c959db7ce505f8e585d0f494c42b3bf4aecd03 Mon Sep 17 00:00:00 2001
From: Andrei Moskalchuk <moskalchuk@gmail.com>
Date: Sat, 26 Jun 2021 22:08:41 +0300
Subject: [PATCH 3/3] Final updates to russian translation

---
 ui/extractedTranslations/ru/translations.json | 170 +++++++++---------
 1 file changed, 85 insertions(+), 85 deletions(-)

diff --git a/ui/extractedTranslations/ru/translations.json b/ui/extractedTranslations/ru/translations.json
index 048e9df..267a46f 100644
--- a/ui/extractedTranslations/ru/translations.json
+++ b/ui/extractedTranslations/ru/translations.json
@@ -85,33 +85,33 @@
       },
       "detach_image_faces": {
         "action": {
-          "detach": "Detach image faces",
-          "select_images": "Select images to detach"
+          "detach": "Отсоединить фото с лицами",
+          "select_images": "Выбрать фото для отсоединения"
         },
-        "description": "Detach selected images of this face group and move them to a new face groups",
-        "title": "Detach Image Faces"
+        "description": "Отсоединить выбранные фотографии с лицами из текущей группы и переместить их в новую группу.",
+        "title": "Отсоединить фото с лицами"
       },
       "merge_face_groups": {
-        "description": "All images within this face group will be merged into the selected face group.",
+        "description": "Все фотографии в этой группе лиц будут обьеденены с выбранной группой.",
         "destination_table": {
-          "title": "Select the destination face"
+          "title": "Выберете конечное лицо"
         },
-        "title": "Merge Face Groups"
+        "title": "Обьединить группы лиц"
       },
       "move_image_faces": {
-        "description": "Move selected images of this face group to another face group",
+        "description": "Переместить выбранные фото из текущей группы в другую группу с лицами.",
         "destination_face_group_table": {
-          "move_action": "Move image faces",
-          "title": "Select destination face group"
+          "move_action": "Переместить фото с лицами",
+          "title": "Выберите конечную группу с лицами"
         },
         "image_select_table": {
-          "next_action": "Next",
-          "title": "Select images to move"
+          "next_action": "Далее",
+          "title": "Выберите фото для перемещения"
         },
-        "title": "Move Image Faces"
+        "title": "Переместить фото с лицами"
       }
     },
-    "recognize_unlabeled_faces_button": "Recognize unlabeled faces",
+    "recognize_unlabeled_faces_button": "Распознавать непомеченные лица",
     "table": {
       "select_face_group": {
         "search_faces_placeholder": "Поиск лиц..."
@@ -132,15 +132,15 @@
   },
   "settings": {
     "concurrent_workers": {
-      "description": "The maximum amount of scanner jobs that is allowed to run at once",
-      "title": "Scanner concurrent workers"
+      "description": "Максимальное количество задач по сканированию разрешённых работать одновременно",
+      "title": "Количество одновременных задач"
     },
-    "logout": "Log out",
+    "logout": "Выйти",
     "periodic_scanner": {
-      "checkbox_label": "Enable periodic scanner",
+      "checkbox_label": "Включить переодическое сканирование",
       "field": {
-        "description": "How often the scanner should perform automatic scans of all users",
-        "label": "Periodic scan interval"
+        "description": "Как часто должно запускаться автоматическое сканирование для всех пользователей",
+        "label": "Интервал переодического сканирования"
       },
       "interval_unit": {
         "days": "День",
@@ -149,77 +149,77 @@
         "months": "Месяц",
         "seconds": "Секунда"
       },
-      "title": "Periodic scanner"
+      "title": "Переодическое сканирование"
     },
     "scanner": {
-      "description": "Will scan all users for new or updated media",
-      "scan_all_users": "Scan all users",
+      "description": "Сканирование всех пользователей на наличие обновлённых или новых медиа",
+      "scan_all_users": "Сканировать всех пользователей",
       "title": "Сканер"
     },
     "user_preferences": {
       "change_language": {
-        "description": "Change website language specific for this user",
-        "label": "Website language"
+        "description": "Поменять язык сайта только для этого пользователя",
+        "label": "Язык сайта"
       },
       "language_selector": {
         "placeholder": "Выбрать язык"
       },
-      "title": "User preferences"
+      "title": "Пользовательские настройки"
     },
     "users": {
       "add_user": {
-        "submit": "Add user"
+        "submit": "Добавить пользователя"
       },
       "confirm_delete_user": {
-        "action": "Delete {{user}}",
-        "description": "<0>Are you sure, you want to delete <1></1>?</0><p>This action cannot be undone</p>",
-        "title": "Delete user"
+        "action": "Удалить {{user}}",
+        "description": "<0>Вы уверены что хотите удалить <1></1>?</0><p>Это действие необратимо</p>",
+        "title": "Удалить пользователя"
       },
       "password_reset": {
-        "description": "Change password for <1></1>",
+        "description": "Поменять пароль для <1></1>",
         "form": {
-          "label": "New password",
-          "placeholder": "password",
-          "submit": "Change password"
+          "label": "Новый пароль",
+          "placeholder": "пароль",
+          "submit": "Поменять пароль"
         },
-        "title": "Change password"
+        "title": "Поменять пароль"
       },
       "table": {
         "column_names": {
-          "action": "Action",
-          "admin": "Admin",
-          "photo_path": "Photo path",
-          "username": "Username"
+          "action": "Действие",
+          "admin": "Администрирование",
+          "photo_path": "Путь к фото",
+          "username": "Имя пользователя"
         },
-        "new_user": "New user",
+        "new_user": "Новый пользователь",
         "row": {
           "action": {
-            "change_password": "Change password",
-            "delete": "Delete",
-            "edit": "Edit",
-            "scan": "Scan"
+            "change_password": "Поменять пароль",
+            "delete": "Удалить",
+            "edit": "Редактировать",
+            "scan": "Сканировать"
           }
         }
       },
-      "title": "Users"
+      "title": "Пользователи"
     },
     "version_info": {
-      "build_date_title": "Build date",
-      "title": "Photoview Version",
-      "version_title": "Release Version"
+      "build_date_title": "Дата сборки",
+      "title": "Версия Photoview",
+      "version_title": "Версия релиза"
     }
   },
   "share_page": {
     "media": {
-      "title": "Shared media"
+      "title": "Общее медиа"
     },
     "protected_share": {
-      "description": "This share is protected with a password.",
-      "title": "Protected share"
+      "description": "Это общее медиа защищено паролем.",
+      "title": "Защищённое медиа"
     },
-    "share_not_found": "Share not found",
-    "share_not_found_description": "Maybe the share has expired or has been deleted.",
-    "wrong_password": "Wrong password, please try again."
+    "share_not_found": "Общее медиа не найдено",
+    "share_not_found_description": "Возможно это общее медиа было удалено или время доступа истекло.",
+    "wrong_password": "Неправильный пароль, пожалуйста попробуйте снова."
   },
   "sidebar": {
     "album": {
@@ -227,46 +227,46 @@
     },
     "download": {
       "filesize": {
-        "byte": "{{count}} Byte",
-        "byte_plural": "{{count}} Bytes",
-        "giga_byte": "{{count}} GB",
-        "kilo_byte": "{{count}} KB",
-        "mega_byte": "{{count}} MB",
-        "tera_byte": "{{count}} TB"
+        "byte": "{{count}} Байт",
+        "byte_plural": "{{count}} Байт",
+        "giga_byte": "{{count}} ГБ",
+        "kilo_byte": "{{count}} КБ",
+        "mega_byte": "{{count}} МБ",
+        "tera_byte": "{{count}} ТБ"
       },
       "table_columns": {
-        "dimensions": "Dimensions",
-        "file_size": "Size",
-        "file_type": "Type",
-        "name": "Name"
+        "dimensions": "Габариты",
+        "file_size": "Размер",
+        "file_type": "Тип",
+        "name": "Имя"
       },
-      "title": "Download"
+      "title": "Скачать"
     },
     "media": {
       "exif": {
         "exposure_program": {
-          "action_program": "Action program",
-          "aperture_priority": "Aperture priority",
-          "bulb": "Bulb",
-          "creative_program": "Creative program",
-          "landscape_mode": "Landscape mode",
-          "manual": "Manual",
-          "normal_program": "Normal program",
-          "not_defined": "Not defined",
-          "portrait_mode": "Portrait mode",
-          "shutter_priority": "Shutter priority"
+          "action_program": "Действие программа",
+          "aperture_priority": "Приоритет диафрагмы",
+          "bulb": "Лампа",
+          "creative_program": "Творческая программа",
+          "landscape_mode": "Ландшафтный режим",
+          "manual": "Ручной",
+          "normal_program": "Нормальная программа",
+          "not_defined": "Не определен",
+          "portrait_mode": "Портретный режим",
+          "shutter_priority": "Приоритет выдержки"
         },
         "flash": {
-          "auto": "Auto",
-          "did_not_fire": "Did not fire",
-          "fired": "Fired",
-          "no_flash": "No Flash",
-          "no_flash_function": "No flash function",
-          "off": "Off",
-          "on": "On",
-          "red_eye_reduction": "Red-eye reduction",
-          "return_detected": "Return detected",
-          "return_not_detected": "Return not detected"
+          "auto": "Авто",
+          "did_not_fire": "Не сработала",
+          "fired": "Сработала",
+          "no_flash": "Без вспышки",
+          "no_flash_function": "Функция без вспышки",
+          "off": "Выкл.",
+          "on": "Вкл.",
+          "red_eye_reduction": "Уменьшение эф. красных глаз",
+          "return_detected": "Обнаружен возврат",
+          "return_not_detected": "Возврат не обнаружен"
         },
         "name": {
           "aperture": "Диафрагма",
