Merge branch 'release/1.6.4'

This commit is contained in:
Mikołaj Pich 2022-05-16 23:42:46 +02:00
commit dc74d2877b
12 changed files with 640 additions and 637 deletions

View File

@ -22,8 +22,8 @@ android {
testApplicationId "io.github.tests.wulkanowy"
minSdkVersion 21
targetSdkVersion 31
versionCode 107
versionName "1.6.3"
versionCode 108
versionName "1.6.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resValue "string", "app_name", "Wulkanowy"
@ -132,7 +132,7 @@ android {
kotlinOptions {
jvmTarget = "11"
freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn", "-Xjvm-default=all"]
freeCompilerArgs += ["-opt-in=kotlin.RequiresOptIn", "-Xjvm-default=all"]
}
packagingOptions {
@ -154,7 +154,7 @@ play {
track = 'production'
releaseStatus = com.github.triplet.gradle.androidpublisher.ReleaseStatus.IN_PROGRESS
userFraction = 0.50d
updatePriority = 1
updatePriority = 3
enabled.set(false)
}
@ -173,16 +173,16 @@ ext {
android_hilt = "1.0.0"
room = "2.4.2"
chucker = "3.5.2"
mockk = "1.12.2"
mockk = "1.12.4"
coroutines = "1.6.1"
}
dependencies {
implementation "io.github.wulkanowy:sdk:1.6.0"
implementation "io.github.wulkanowy:sdk:1.6.4"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines"
implementation "androidx.core:core-ktx:1.7.0"
@ -228,12 +228,12 @@ dependencies {
implementation "at.favre.lib:slf4j-timber:1.0.1"
implementation 'com.github.bastienpaulfr:Treessence:1.0.5'
implementation "com.mikepenz:aboutlibraries-core:$about_libraries"
implementation "io.coil-kt:coil:1.4.0"
implementation "io.coil-kt:coil:2.0.0"
implementation "io.github.wulkanowy:AppKillerManager:3.0.0"
implementation 'me.xdrop:fuzzywuzzy:1.4.0'
implementation 'com.fredporciuncula:flow-preferences:1.6.0'
implementation 'com.fredporciuncula:flow-preferences:1.7.0'
playImplementation platform('com.google.firebase:firebase-bom:29.3.1')
playImplementation platform('com.google.firebase:firebase-bom:30.0.1')
playImplementation 'com.google.firebase:firebase-analytics-ktx'
playImplementation 'com.google.firebase:firebase-messaging:'
playImplementation 'com.google.firebase:firebase-crashlytics:'
@ -241,8 +241,8 @@ dependencies {
playImplementation 'com.google.android.play:core-ktx:1.8.1'
playImplementation 'com.google.android.gms:play-services-ads:20.6.0'
hmsImplementation 'com.huawei.hms:hianalytics:6.4.1.302'
hmsImplementation 'com.huawei.agconnect:agconnect-crash:1.6.5.300'
hmsImplementation 'com.huawei.hms:hianalytics:6.5.0.300'
hmsImplementation 'com.huawei.agconnect:agconnect-crash:1.6.6.200'
releaseImplementation "com.github.ChuckerTeam.Chucker:library-no-op:$chucker"
@ -255,7 +255,7 @@ dependencies {
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines"
testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
testImplementation 'org.robolectric:robolectric:4.7.3'
testImplementation 'org.robolectric:robolectric:4.8.1'
testImplementation "androidx.test:runner:1.4.0"
testImplementation "androidx.test.ext:junit:1.1.3"
testImplementation "androidx.test:core:1.4.0"

View File

@ -7,6 +7,7 @@ import javax.inject.Inject
import javax.inject.Singleton
@Singleton
@Suppress("UNUSED_PARAMETER", "unused")
class InAppReviewHelper @Inject constructor(
@ApplicationContext private val context: Context
) {

View File

@ -23,8 +23,9 @@ class LicenseAdapter @Inject constructor() : RecyclerView.Adapter<LicenseAdapter
val item = items[position]
with(holder.binding) {
licenseItemName.text = item.libraryName
licenseItemSummary.text = item.licenses?.firstOrNull()?.licenseName?.takeIf { it.isNotBlank() } ?: item.libraryVersion
licenseItemName.text = item.name
licenseItemSummary.text = item.licenses.firstOrNull()?.name?.takeIf { it.isNotBlank() }
?: item.artifactVersion
root.setOnClickListener { onClickListener(item) }
}

View File

@ -9,6 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.mikepenz.aboutlibraries.Libs
import com.mikepenz.aboutlibraries.entity.Library
import com.mikepenz.aboutlibraries.util.withContext
import dagger.hilt.android.AndroidEntryPoint
import io.github.wulkanowy.R
import io.github.wulkanowy.databinding.FragmentLicenseBinding
@ -28,7 +29,9 @@ class LicenseFragment : BaseFragment<FragmentLicenseBinding>(R.layout.fragment_l
override val titleStringId get() = R.string.license_title
override val appLibraries by lazy { Libs(requireContext()).libraries }
override val appLibraries by lazy {
Libs.Builder().withContext(requireContext()).build().libraries
}
companion object {
fun newInstance() = LicenseFragment()

View File

@ -22,7 +22,7 @@ class LicensePresenter @Inject constructor(
}
fun onItemSelected(library: Library) {
view?.run { library.licenses?.firstOrNull()?.licenseDescription?.let { openLicense(it) } }
view?.run { library.licenses.firstOrNull()?.licenseContent?.let { openLicense(it) } }
}
private fun loadData() {

View File

@ -35,9 +35,11 @@ class AttendanceAdapter @Inject constructor() :
with(holder.binding) {
attendanceItemNumber.text = item.number.toString()
attendanceItemSubject.text = item.subject
attendanceItemSubject.text = item.subject.ifBlank {
root.context.getString(R.string.all_no_data)
}
attendanceItemDescription.setText(item.descriptionRes)
attendanceItemAlert.visibility = item.run { if (absence && !excused) View.VISIBLE else View.INVISIBLE }
attendanceItemAlert.isVisible = item.let { it.absence && !it.excused }
attendanceItemNumber.visibility = View.GONE
attendanceItemExcuseInfo.visibility = View.GONE
attendanceItemExcuseCheckbox.visibility = View.GONE
@ -46,7 +48,7 @@ class AttendanceAdapter @Inject constructor() :
onExcuseCheckboxSelect(item, checked)
}
when (item.excuseStatus?.let { SentExcuseStatus.valueOf(it)}) {
when (item.excuseStatus?.let { SentExcuseStatus.valueOf(it) }) {
SentExcuseStatus.WAITING -> {
attendanceItemExcuseInfo.setImageResource(R.drawable.ic_excuse_waiting)
attendanceItemExcuseInfo.visibility = View.VISIBLE

View File

@ -1,9 +1,5 @@
Wersja 1.6.3
Wersja 1.6.4
- dodaliśmy możliwość usuwania wielu wiadomości jednocześnie
- dodaliśmy opcję szybkiego dodawania sprawdzianów do kalendarza
- dodaliśmy średnią ucznia w wykresach ocen klasy
- naprawiliśmy rzadki błąd dotyczący problemów z automatycznym odświeżaniem ekranu startowego
- naprawiliśmy błąd z liczeniem średniej w drugim semestrze
- naprawiliśmy błąd ładowania frekwencji na GPE i Lubelskim Portalu Oświatowym
Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases

View File

@ -32,7 +32,7 @@
<item>0,75</item>
</string-array>
<string-array name="grade_sorting_mode_entries">
<item>Алфавитный</item>
<item>В алфавитном порядке</item>
<item>По дате</item>
</string-array>
<string-array name="grade_color_scheme_entries">
@ -43,22 +43,22 @@
<string-array name="default_expand_grade_entries">
<item>До 1 за раз</item>
<item>Всегда развернуто</item>
<item>Неограниченные расширения</item>
<item>Неограниченно</item>
</string-array>
<string-array name="grade_average_mode_entries">
<item>Средние оценки только с выбранного семестра</item>
<item>Средние значения для обоих семестров</item>
<item>Средняя оценок со всего года</item>
<item>Средняя из оценок выбранного семестра</item>
<item>Средняя из средних оценок семестров</item>
<item>Средняя из оценок со всего года</item>
</string-array>
<string-array name="dashboard_tile_entries">
<item>Счастливый номер</item>
<item>Непрочитанные сообщения</item>
<item>Непрочитанные письма</item>
<item>Посещаемость</item>
<item>Уроки</item>
<item>Оценки</item>
<item>Домашняя работа</item>
<item>Объявления школ</item>
<item>Экзамены</item>
<item>Конференции</item>
<item>Объявления школы</item>
<item>Тесты</item>
<item>Встречи</item>
</string-array>
</resources>

View File

@ -12,93 +12,93 @@
<string name="about_title">О приложении</string>
<string name="logviewer_title">Просмотр журнала</string>
<string name="debug_title">Отладка</string>
<string name="notification_debug_title">Отладка уведомления</string>
<string name="notification_debug_title">Отладка уведомлений</string>
<string name="contributors_title">Разработчики</string>
<string name="license_title">Лицензии</string>
<string name="message_title">Сообщения</string>
<string name="send_message_title">Новое сообщение</string>
<string name="add_homework_title">Новая домашняя работа</string>
<string name="note_title">Предупреждения и свершения</string>
<string name="message_title">Письма</string>
<string name="send_message_title">Написать</string>
<string name="add_homework_title">Новое домашнее задание</string>
<string name="note_title">Замечания и свершения</string>
<string name="homework_title">Домашние задания</string>
<string name="account_title">Менеджер аккаунтов</string>
<string name="account_quick_title">Выбор учетной записи</string>
<string name="account_title">Управлять аккаунтами</string>
<string name="account_quick_title">Выбрать аккаунт</string>
<string name="account_details_title">Данные аккаунта</string>
<string name="student_info_title">Информация о студенте</string>
<string name="dashboard_title">Панель</string>
<string name="student_info_title">Информация о ученике</string>
<string name="dashboard_title">Главная</string>
<string name="notifications_center_title">Центр уведомлений</string>
<!--Subtitles-->
<string name="grade_subtitle">%1$d семестр, %2$d/%3$d</string>
<!--Login-->
<string name="login_header_default">Авторизируйтесь при помощи аккаунта ученика или родителя</string>
<string name="login_header_symbol">Введите символ со страницы регистрации: &lt;b&gt;%1$s&lt;/b&gt;</string>
<string name="login_nickname_hint">Имя пользователя</string>
<string name="login_email_hint">Электронная почта</string>
<string name="login_header_default">Воспользуйтесь аккаунтом ученика/родителя</string>
<string name="login_header_symbol">Введите symbol аккаунта со страницы регистрации: &lt;b&gt;%1$s&lt;/b&gt;</string>
<string name="login_nickname_hint">Логин</string>
<string name="login_email_hint">E-mail</string>
<string name="login_login_pesel_email_hint">Логин, PESEL или электронная почта</string>
<string name="login_password_hint">Пароль</string>
<string name="login_host_hint">UONET + вариант регистрации</string>
<string name="login_host_hint">Тип дневника UONET+</string>
<string name="login_type_api">Мобильный API</string>
<string name="login_type_scrapper">Scraper</string>
<string name="login_type_hybrid">Гибрид</string>
<string name="login_type_hybrid">Hybrid</string>
<string name="login_token_hint">Token</string>
<string name="login_pin_hint">PIN</string>
<string name="login_symbol_hint">Symbol</string>
<string name="login_sign_in">Войти</string>
<string name="login_invalid_password">Слишком короткий пароль</string>
<string name="login_invalid_password">Пароль слишком короткий</string>
<string name="login_incorrect_password_default">Данные для входа указаны неверно</string>
<string name="login_incorrect_password">%1$s. Убедитесь, что ниже выбран правильный UONET+ вариант регистра</string>
<string name="login_invalid_pin">Неправильный PIN</string>
<string name="login_incorrect_password">%1$s. Убедитесь, что ниже выбран правильный тип дневника UONET+</string>
<string name="login_invalid_pin">Неверный PIN</string>
<string name="login_invalid_token">Неверный token</string>
<string name="login_expired_token">Token просрочен</string>
<string name="login_invalid_email">Неверный адрес электронной почты</string>
<string name="login_invalid_login">Используйте назначенный логин вместо электронной почты</string>
<string name="login_invalid_custom_email">Использовать назначенный логин или email в @%1$s</string>
<string name="login_invalid_symbol">Неправильный символ</string>
<string name="login_incorrect_symbol">Студент не найден. Подтвердите символ и выбранный вариант регистра UONET+</string>
<string name="login_invalid_email">Неверный e-mail</string>
<string name="login_invalid_login">Используйте назначенный логин вместо e-mail</string>
<string name="login_invalid_custom_email">Используйте назначенный логин или email в @%1$s</string>
<string name="login_invalid_symbol">Неверный symbol</string>
<string name="login_incorrect_symbol">Ученик не найден. Проверьте symbol и выбранный тип дненика UONET+</string>
<string name="login_duplicate_student">Данный ученик уже авторизован</string>
<string name="login_symbol_helper">Этот символ можно найти на странице регистрации в &#160;<b>Ученик</b>&#160;<b>Телефонный доступ</b>&#160;<b> Зарегистрируйте мобильное устройство</b>.\n\nУбедитесь, что вы установили соответствующий вариант регистра в поле <b>Разновидностью бревна UONET+</b> на предыдущем экране. Вулкановый на данный момент не обнаруживает дошкольников</string>
<string name="login_symbol_helper">Symbol можно найти на странице регистрации в &#160;<b>Uczeń</b> →&#160;<b>Dostęp Mobilny</b>&#160;<b>Zarejestruj urządzenie mobilne</b>.\n\nУбедитесь, что вы выбрали соответствующий тип дневника в поле <b>Тип дневника UONET+</b> на предыдущем экране</string>
<string name="login_select_student">Выберите учеников для авторизации в приложении</string>
<string name="login_advanced">Другие варианты</string>
<string name="login_advanced_warning_mobile_api">В этом режиме не работают: счастливый номер, статистика класса по оценкам, статистика посещаемости и уроков, информация о школе и список зарегистрированных устройств</string>
<string name="login_advanced_warning_scraper">Scraper - режим, который показывает данные так же, как и сайт дневника</string>
<string name="login_advanced_warning_hybrid">Hybrid - это комбинация лучших функций остальных двух режимов. Он работает быстрее, чем Scraper, и вводит функции, которых нет в режиме Mobile API. Находится в экспериментальной стадии</string>
<string name="login_privacy_policy">Политика приватности</string>
<string name="login_privacy_policy">Политика конфиденциальности</string>
<string name="login_contact_header">Проблемы с авторизацией? Свяжитесь с нами!</string>
<string name="login_contact_email">Электронная почта</string>
<string name="login_contact_email">E-mail</string>
<string name="login_contact_discord">Discord</string>
<string name="login_email_intent_title">Отправить письмо</string>
<string name="login_recover_warning">Убедитесь, что вы выбрали правильный вариант регистра UONET+!</string>
<string name="login_recover_button">Я забыл свой пароль</string>
<string name="login_recover_warning">Убедитесь, что вы выбрали правильный тип дневника UONET+</string>
<string name="login_recover_button">Забыли пароль?</string>
<string name="login_recover_title">Восстановите свой аккаунт</string>
<string name="login_recover">Восстановить</string>
<string name="login_signed_in">Студент уже вошел в систему</string>
<string name="login_signed_in">Ученик уже авторизован</string>
<string name="login_host_standard">Стандартный</string>
<!--Main-->
<string name="main_account_picker">Менеджер аккаунтов</string>
<string name="main_log_in">Войти</string>
<string name="main_session_expired">Сеанс истёк</string>
<string name="main_session_relogin">Сеанс истёк, пожалуйста, войдите ещё раз</string>
<string name="main_session_relogin">Сеанс истёк, авторизуйтесь снова</string>
<!--Grade-->
<string name="grade_header">Оценка</string>
<string name="grade_semester">Семестр %d</string>
<string name="grade_semester">%d семестр</string>
<string name="grade_switch_semester">Сменить семестр</string>
<string name="grade_no_items">Оценки отсутствуют</string>
<string name="grade_no_items">Нет оценок</string>
<string name="grade_weight">Стоимость</string>
<string name="grade_weight_value">Стоимость: %s</string>
<string name="grade_comment">Комментарий</string>
<string name="grade_number_new_items">Количество новых оценок: %1$d</string>
<string name="grade_average">Средняя оценка: %1$.2f</string>
<string name="grade_points_sum">Баллы: %s</string>
<string name="grade_no_average">Средняя оценка отсутствует</string>
<string name="grade_no_average">Нет средней оценки</string>
<string name="grade_summary_points">Сумма баллов</string>
<string name="grade_summary_final_grade">Итоговая оценка</string>
<string name="grade_summary_predicted_grade">Ожидаемая оценка</string>
<string name="grade_summary_calculated_average">Рассчитанная средняя оценка</string>
<string name="grade_summary_calculated_average_help_dialog_title">Как рассчитывается средняя работа?</string>
<string name="grade_summary_calculated_average_help_dialog_message">Расчетное среднее - это среднее арифметическое, рассчитанное на основе средних значений испытуемых. Это позволяет узнать приблизительное итоговое среднее значение. Он рассчитывается способом, выбранным пользователем в настройках приложения. Рекомендуется выбрать подходящий вариант. Это потому, что расчет средних показателей школы отличается. Кроме того, если ваша школа сообщает среднее значение по предметам на странице Vulcan, приложение загружает их и не вычисляет эти средние значения. Это можно изменить, принудительно вычисляя среднее значение в настройках приложения.\n\n<b>Среднее значение только за выбранный семестр </b>:\n1. Вычисление средневзвешенного значения по каждому предмету за семестр\n2.Добавление вычисленных средних\n3. Вычисление среднего арифметического суммарных средних\n\n<b>Среднее из средних значений за оба семестра</b>:\n1.Расчет средневзвешенного значения для каждого предмета в семестрах 1 и 2\n2. Вычисление среднего арифметического рассчитанных средних значений для семестров 1 и 2 по каждому предмету.\n3. Добавление вычисленных средних\n4. Расчет среднего арифметического суммированных средних\n\n<b>Среднее значение оценок за весь год: </b>\n1. Расчет средневзвешенного значения за год по каждому предмету. Итоговое среднее значение за 1 семестр не имеет значения.\n3. Добавление вычисленных средних\n4. Расчет среднего арифметического</string>
<string name="grade_summary_final_average_help_dialog_title">Как работает окончательный средний показатель?</string>
<string name="grade_summary_final_average_help_dialog_message">Среднее арифметическое - это среднее арифметическое, рассчитанное по всем имеющимся на данный момент итоговым классам данного семестра.\n\nСхема расчета состоит из следующих шагов:\n1. Суммирование итоговых классов преподавателей\n2. Деление по количеству уже оцененных предметов</string>
<string name="grade_summary_calculated_average_help_dialog_title">Как работает \"Рассчитанная средняя оценка\"?</string>
<string name="grade_summary_calculated_average_help_dialog_message">Рассчитанная средняя оценка - это среднее арифметическое, рассчитанное на основе средних оценок по предметам. Это позволяет узнать приблизительную итоговую среднюю оценку. Она рассчитывается способом, выбранным пользователем в настройках приложения. Рекомендуется выбрать подходящий вариант, так как каждая школа по разному считает среднюю оценку. Кроме того, если ваша школа выставляет средние оценки по предметам на странице Vulcan, приложение просто загрузит их. Это можно изменить, заставив приложение считать среднюю оценку в настройках.\n\n<b>Средняя из оценок выбранного семестра</b>:\n1. Вычисление средневзвешенного значения по каждому предмету за семестр\n2.Суммирование вычисленных значений\n3. Вычисление среднего арифметического суммированных значений\n\n<b>Средняя из средних оценок семестров</b>:\n1.Расчет средневзвешенного значения для каждого предмета в семестрах. \n2. Вычисление среднего арифметического из средневзвешенных значений для каждого предмета в семестрах.\n3. Суммирование средних арифметических\n4. Вычисление среднего арифматического из суммированных значений\n\n<b>Средняя из оценок со всего года:</b>\n1. Расчет средневзвешенного значения по каждому предмету за год. Итоговое среднее значение за 1 семестр не имеет значения.\n2. Суммирование вычисленных средних\n4. Расчет среднего арифметического суммированных чисел</string>
<string name="grade_summary_final_average_help_dialog_title">Как работает \"Итоговая средняя оценка\"?</string>
<string name="grade_summary_final_average_help_dialog_message">Итоговая средняя оценка - это среднее арифметическое, рассчитанное из всех имеющихся на данный момент итоговых оценок в семестре.\n\nРассчет происходит следующим образом:\n1. Суммирование итоговых оценок, выставленных преподавателями\n2. Полученная сумма делится на число предметов, по которым выставлены оценки</string>
<string name="grade_summary_final_average">Итоговая средняя оценка</string>
<string name="grade_summary_from_subjects">от %1$d из %2$d субъектов</string>
<string name="grade_summary_from_subjects">%1$d из %2$d предметов</string>
<string name="grade_menu_summary">Итоги</string>
<string name="grade_menu_statistics">Класс</string>
<string name="grade_menu_read">Пометить как \"прочитанное\"</string>
@ -107,10 +107,10 @@
<string name="grade_statistics_points">Баллы</string>
<string name="grade_statistics_legend">Легенда</string>
<string name="grade_statistics_class_average">Средняя класса: %1$s</string>
<string name="grade_statistics_student_average">Ваша средний: %1$s</string>
<string name="grade_statistics_student_average">Ваша средняя: %1$s</string>
<string name="grade_statistics_student_grade">Ваша оценка: %1$s</string>
<string name="grade_statistics_average_class">Класс</string>
<string name="grade_statistics_average_student">Студент</string>
<string name="grade_statistics_average_student">Ученик</string>
<plurals name="grade_number_item">
<item quantity="one">%d оценка</item>
<item quantity="few">%d оценки</item>
@ -136,22 +136,22 @@
<item quantity="other">Новые итоговые оценки</item>
</plurals>
<plurals name="grade_notify_new_items">
<item quantity="one">Вы получили %1$d оценку</item>
<item quantity="few">Вы получили %1$d оценки</item>
<item quantity="many">Вы получили %1$d оценок</item>
<item quantity="other">Вы получили %1$d оценок</item>
<item quantity="one">Вы получили %1$d новую оценку</item>
<item quantity="few">Вы получили %1$d новые оценки</item>
<item quantity="many">Вы получили %1$d новых оценок</item>
<item quantity="other">Вы получили %1$d новых оценок</item>
</plurals>
<plurals name="grade_notify_new_items_predicted">
<item quantity="one">Вы получили %1$d ожидаемую оценку</item>
<item quantity="few">Вы получили %1$d ожидаемые оценки</item>
<item quantity="many">Вы получили %1$d ожидаемых оценок</item>
<item quantity="other">Вы получили %1$d ожидаемых оценок</item>
<item quantity="one">Вы получили %1$d новую ожидаемую оценку</item>
<item quantity="few">Вы получили %1$d новые ожидаемые оценки</item>
<item quantity="many">Вы получили %1$d новых ожидаемых оценок</item>
<item quantity="other">Вы получили %1$d новых ожидаемых оценок</item>
</plurals>
<plurals name="grade_notify_new_items_final">
<item quantity="one">Вы получили %1$d итоговою оценку</item>
<item quantity="few">Вы получили %1$d итоговых оценки</item>
<item quantity="many">Вы получили %1$d итоговых оценок</item>
<item quantity="other">Вы получили %1$d финальные оценки</item>
<item quantity="one">Вы получили %1$d новую итоговую оценку</item>
<item quantity="few">Вы получили %1$d новых итоговых оценки</item>
<item quantity="many">Вы получили %1$d новых итоговых оценок</item>
<item quantity="other">Вы получили %1$d новых итоговые оценки</item>
</plurals>
<!--Timetable-->
<string name="timetable_lesson">Урок</string>
@ -169,36 +169,36 @@
<string name="timetable_next">Следующий: %s</string>
<string name="timetable_later">Позже: %s</string>
<string name="timetable_notify_lesson">%1$s урок %2$d - %3$s</string>
<string name="timetable_notify_change_room">Изменить комнату с %1$s на %2$s</string>
<string name="timetable_notify_change_teacher">Изменить учителя с %1$s на %2$s</string>
<string name="timetable_notify_change_subject">Изменить тему с %1$s на %2$s</string>
<string name="timetable_notify_change_room">Аудитория изменена с %1$s на %2$s</string>
<string name="timetable_notify_change_teacher">Учитель изменён с %1$s на %2$s</string>
<string name="timetable_notify_change_subject">Тема изменена с %1$s на %2$s</string>
<plurals name="timetable_notify_new_items_title">
<item quantity="one">Изменение расписания</item>
<item quantity="few">Изменение расписания</item>
<item quantity="many">Изменение расписания</item>
<item quantity="other">Изменение расписания</item>
<item quantity="few">Изменения расписания</item>
<item quantity="many">Изменения расписания</item>
<item quantity="other">Изменения расписания</item>
</plurals>
<plurals name="timetable_notify_new_items">
<item quantity="one">%1$s - %2$d изменений в расписании</item>
<item quantity="few">%1$s - %2$d изменений в расписании</item>
<item quantity="one">%1$s - %2$d изменение в расписании</item>
<item quantity="few">%1$s - %2$d изменения в расписании</item>
<item quantity="many">%1$s - %2$d изменений в расписании</item>
<item quantity="other">%1$s - %2$d изменений в расписании</item>
<item quantity="other">%1$s - %2$d изменений в расписании</item>
</plurals>
<plurals name="timetable_notify_new_items_group">
<item quantity="one">%1$d - изменений в расписании</item>
<item quantity="few">%1$d изменение в расписании</item>
<item quantity="many">%1$d изменение в расписании</item>
<item quantity="one">%1$d изменение в расписании</item>
<item quantity="few">%1$d изменения в расписании</item>
<item quantity="many">%1$d изменений в расписании</item>
<item quantity="other">%1$d изменений в расписании</item>
</plurals>
<plurals name="timetable_number_item">
<item quantity="one">%d изменение</item>
<item quantity="few">%d изменение</item>
<item quantity="many">%d изменение</item>
<item quantity="few">%d изменения</item>
<item quantity="many">%d изменений</item>
<item quantity="other">%d изменений</item>
</plurals>
<!--Completed lessons-->
<string name="completed_lessons_title">Проведённые уроки</string>
<string name="completed_lessons_button">Просмотреть проведённые уроки</string>
<string name="completed_lessons_button">Показать проведённые уроки</string>
<string name="completed_lessons_no_items">Нет информации о проведённых уроках</string>
<string name="completed_lessons_topic">Тема</string>
<string name="completed_lessons_absence">Отсутствие</string>
@ -213,7 +213,7 @@
<string name="additional_lessons_delete_success">Дополнительный урок успешно удален</string>
<string name="additional_lessons_repeat">Повторять еженедельно</string>
<string name="additional_lessons_delete_title">Удалить дополнительный урок</string>
<string name="additional_lessons_delete_one">Просто этот урок</string>
<string name="additional_lessons_delete_one">Только этот урок</string>
<string name="additional_lessons_delete_series">Все в серии</string>
<string name="additional_lessons_start">Время начала</string>
<string name="additional_lessons_end">Время окончания</string>
@ -224,35 +224,35 @@
<string name="attendance_absence_excused">Отсутствие по уважительной причине</string>
<string name="attendance_absence_unexcused">Отсутствие по неуважительной причине</string>
<string name="attendance_exemption">Освобождение</string>
<string name="attendance_excused_lateness">Опоздание по уважительным причинам</string>
<string name="attendance_unexcused_lateness">Опоздание по неуважительным причинам</string>
<string name="attendance_excused_lateness">Опоздание по уважительной причине</string>
<string name="attendance_unexcused_lateness">Опоздание по неуважительной причине</string>
<string name="attendance_present">Присутствие</string>
<string name="attendance_deleted">Удалено</string>
<string name="attendance_unknown">Неизвестно</string>
<string name="attendance_number">Урок №</string>
<string name="attendance_no_items">Данные не найдены</string>
<string name="attendance_no_items">Нет записей</string>
<string name="attendance_excuse_dialog_reason">Причина отсутствия (необязательно)</string>
<string name="attendance_excuse_dialog_submit">Послать</string>
<string name="attendance_excuse_success">Запрос на освобождение оправдания успешно отправлен!</string>
<string name="attendance_excuse_no_selection">Выберите хотя-бы одно отсутствие</string>
<string name="attendance_excuse_title">Изменить статус</string>
<string name="attendance_excuse_dialog_submit">Отправить</string>
<string name="attendance_excuse_success">Причина отсутствия успешно отправлена.</string>
<string name="attendance_excuse_no_selection">Выберите хотя бы одно отсутствие.</string>
<string name="attendance_excuse_title">Указать причину</string>
<plurals name="attendance_notify_new_items_title">
<item quantity="one">Новое посещение</item>
<item quantity="few">Новое посещение</item>
<item quantity="many">Новое посещение</item>
<item quantity="other">Новое посещение</item>
<item quantity="one">Новая запись о посещаемости</item>
<item quantity="few">Новые записи о посещаемости</item>
<item quantity="many">Новые записи о посещаемости</item>
<item quantity="other">Новые записи о посещаемости</item>
</plurals>
<plurals name="attendance_notify_new_items">
<item quantity="one">%1$d новое посещения</item>
<item quantity="few">%1$d новое посещение</item>
<item quantity="many">%1$d новое посещение</item>
<item quantity="other">%1$d новое посещения</item>
<item quantity="one">%1$d новая запись о посещаемости</item>
<item quantity="few">%1$d новые записи о посещаемости</item>
<item quantity="many">%1$d новых записей о посещаемости</item>
<item quantity="other">%1$d новых записей о посещаемости</item>
</plurals>
<plurals name="attendance_number_item">
<item quantity="one">%d посещаемость</item>
<item quantity="few">%d посещаемость</item>
<item quantity="many">%d посещаемость</item>
<item quantity="other">%d посещаемость</item>
<item quantity="one">%d запись о посещаемости</item>
<item quantity="few">%d записи о посещаемости</item>
<item quantity="many">%d записей о посещаемости</item>
<item quantity="other">%d записей о посещаемости</item>
</plurals>
<!--Attendance summary-->
<string name="attendance_summary_total">Общая</string>
@ -261,54 +261,54 @@
<string name="exam_type">Тип</string>
<string name="exam_entry_date">Дата записи</string>
<plurals name="exam_notify_new_item_title">
<item quantity="one">Новый экзамен</item>
<item quantity="few">Новый экзамен</item>
<item quantity="many">Новый экзамен</item>
<item quantity="other">Новые экзамены</item>
<item quantity="one">Новый тест</item>
<item quantity="few">Новые тесты</item>
<item quantity="many">Новые тесты</item>
<item quantity="other">Новые тесты</item>
</plurals>
<plurals name="exam_notify_new_item_content">
<item quantity="one">%d новый экзамен</item>
<item quantity="few">%d новый экзамен</item>
<item quantity="many">%d новый экзамен</item>
<item quantity="other">%d новых экзаменов</item>
<item quantity="one">%d новый тест</item>
<item quantity="few">%d новых теста</item>
<item quantity="many">%d новых тестов</item>
<item quantity="other">%d новых тестов</item>
</plurals>
<plurals name="exam_number_item">
<item quantity="one">%d экзамен</item>
<item quantity="few">%d экзамен</item>
<item quantity="many">%d экзамен</item>
<item quantity="other">%d экзаменов</item>
<item quantity="one">%d тест</item>
<item quantity="few">%d теста</item>
<item quantity="many">%d тестов</item>
<item quantity="other">%d тестов</item>
</plurals>
<!--Message-->
<string name="message_inbox">Полученные</string>
<string name="message_sent">Отправленные</string>
<string name="message_trash">Корзина</string>
<string name="message_no_subject">(нет темы)</string>
<string name="message_no_items">Нет сообщений</string>
<string name="message_no_items">Нет писем</string>
<string name="message_from">От:</string>
<string name="message_to">Кому:</string>
<string name="message_date">Дата: %1$s</string>
<string name="message_reply">Ответ</string>
<string name="message_forward">Переслать</string>
<string name="message_select_all">Выбрать всё</string>
<string name="message_unselect_all">Снять выбор</string>
<string name="message_select_all">Выбрать все</string>
<string name="message_unselect_all">Отменить выбор</string>
<string name="message_move_to_trash">Перенести в корзину</string>
<string name="message_delete_forever">Удалить навсегда</string>
<string name="message_delete_success">Сообщение успешно удалено</string>
<string name="message_delete_success">Письмо успешно удалено</string>
<string name="message_share">Поделиться</string>
<string name="message_print">Печать</string>
<string name="message_subject">Тема</string>
<string name="message_content">Текст</string>
<string name="message_send_successful">Сообщение успешно отправлено</string>
<string name="message_not_exists">Сообщения не существует</string>
<string name="message_content">Содержание</string>
<string name="message_send_successful">Письмо успешно отправлено</string>
<string name="message_not_exists">Письма не существует</string>
<string name="message_required_recipients">Вы должны выбрать как минимум одного получателя</string>
<string name="message_content_min_length">Текст сообщения должен содержать как минимум 3 знака</string>
<string name="message_chip_only_unread">Только непрочитанные</string>
<string name="message_chip_only_with_attachments">Только с вложениями</string>
<string name="message_read">Чтение: %s</string>
<string name="message_read">Прочитано: %s</string>
<string name="message_read_by">Прочитано: %1$d из %2$d человек</string>
<plurals name="message_number_item">
<item quantity="one">%1$d сообщение</item>
<item quantity="few">%1$d сообщений</item>
<item quantity="few">%1$d сообщения</item>
<item quantity="many">%1$d сообщений</item>
<item quantity="other">%1$d сообщений</item>
</plurals>
@ -318,8 +318,8 @@
<item quantity="many">Новые сообщения</item>
<item quantity="other">Новые сообщения</item>
</plurals>
<string name="message_restore_dialog">Вы хотите восстановить черновичное сообщение?</string>
<string name="message_restore_dialog_with_recipients">Вы хотите восстановить черновик сообщения с получателями: %s?</string>
<string name="message_restore_dialog">Вы хотите восстановить черновик письма?</string>
<string name="message_restore_dialog_with_recipients">Вы хотите восстановить черновик письма с получателями: %s?</string>
<plurals name="message_notify_new_items">
<item quantity="one">Вы получили %1$d новое сообщение</item>
<item quantity="few">Вы получили %1$d новых сообщения</item>
@ -334,7 +334,7 @@
</plurals>
<string name="message_messages_deleted">Сообщение удалено</string>
<!--Note-->
<string name="note_no_items">Нет информации о заметках</string>
<string name="note_no_items">Нет записей о замечаниях и свершениях</string>
<string name="note_points">Баллы</string>
<plurals name="note_number_item">
<item quantity="one">%d предупреждение</item>
@ -345,33 +345,33 @@
<plurals name="note_new_items">
<item quantity="one">Новое предупреждение</item>
<item quantity="few">Новые предупреждения</item>
<item quantity="many">Новых предупреждений</item>
<item quantity="other">Новых предупреждений</item>
<item quantity="many">Новые предупреждения</item>
<item quantity="other">Новые предупреждения</item>
</plurals>
<plurals name="note_notify_new_items">
<item quantity="one">Вы получили %1$d предупреждение</item>
<item quantity="few">Вы получили %1$d предупреждения</item>
<item quantity="many">Вы получили %1$d предупреждений</item>
<item quantity="other">Вы получили %1$d предупреждений</item>
<item quantity="one">Вы получили %1$d новое предупреждение</item>
<item quantity="few">Вы получили %1$d новые предупреждения</item>
<item quantity="many">Вы получили %1$d новых предупреждений</item>
<item quantity="other">Вы получили %1$d новых предупреждений</item>
</plurals>
<!--Praise-->
<plurals name="praise_number_item">
<item quantity="one">%d похвала</item>
<item quantity="few">%d похвала</item>
<item quantity="many">%d похвала</item>
<item quantity="other">%d похвала</item>
<item quantity="few">%d похвалы</item>
<item quantity="many">%d похвал</item>
<item quantity="other">%d похвал</item>
</plurals>
<plurals name="praise_new_items">
<item quantity="one">Новая похвала</item>
<item quantity="few">Новые похвалы</item>
<item quantity="many">Новые свершения</item>
<item quantity="many">Новые похвалы</item>
<item quantity="other">Новые похвалы</item>
</plurals>
<plurals name="praise_notify_new_items">
<item quantity="one">Вы получили %1$d похвалу</item>
<item quantity="few">Вы получили %1$d похвалы</item>
<item quantity="many">Вы получили %1$d похвалы</item>
<item quantity="other">Вы получили %1$d похвалы</item>
<item quantity="one">Вы получили %1$d новую похвалу</item>
<item quantity="few">Вы получили %1$d новые похвалы</item>
<item quantity="many">Вы получили %1$d новых похвал</item>
<item quantity="other">Вы получили %1$d новых похвал</item>
</plurals>
<!--Neutral notes-->
<plurals name="neutral_note_number_item">
@ -387,34 +387,34 @@
<item quantity="other">Новые нейтральные замечания</item>
</plurals>
<plurals name="neutral_note_notify_new_items">
<item quantity="one">Вы получили %1$d нейтральное замечание</item>
<item quantity="few">Вы получили %1$d нейтральных замечания</item>
<item quantity="many">Вы получили %1$d нейтральных замечаний</item>
<item quantity="other">Вы получили %1$d нейтральных замечаний</item>
<item quantity="one">Вы получили %1$d новое нейтральное замечание</item>
<item quantity="few">Вы получили %1$d новые нейтральных замечания</item>
<item quantity="many">Вы получили %1$d новых нейтральных замечаний</item>
<item quantity="other">Вы получили %1$d новых нейтральных замечаний</item>
</plurals>
<!--Homework-->
<string name="homework_no_items">Нет домашних заданий</string>
<string name="homework_mark_as_done">Завершено</string>
<string name="homework_mark_as_undone">Не завершено</string>
<string name="homework_add">Добавить домашнюю работу</string>
<string name="homework_add_success">Домашняя работа успешно добавлена</string>
<string name="homework_delete_success">Домашняя работа успешно удалена</string>
<string name="homework_add">Добавить домашнее задание</string>
<string name="homework_add_success">Домашнее задание успешно добавлена</string>
<string name="homework_delete_success">Домашнее задание успешно удалена</string>
<string name="homework_attachments">Вложения</string>
<plurals name="homework_notify_new_item_title">
<item quantity="one">Новая домашняя работа</item>
<item quantity="few">Новая домашняя работа</item>
<item quantity="many">Новая домашняя работа</item>
<item quantity="other">Новая домашняя работа</item>
<item quantity="one">Новое домашнее задание</item>
<item quantity="few">Новые домашние работы</item>
<item quantity="many">Новые домашние задания</item>
<item quantity="other">Новые домашние задания</item>
</plurals>
<plurals name="homework_notify_new_item_content">
<item quantity="one">Вы получили %d новых домашних заданий</item>
<item quantity="one">Вы получили %d новое домашнее задание</item>
<item quantity="few">Вы получили %d новых домашних заданий</item>
<item quantity="many">Вы получили %d новых домашних заданий</item>
<item quantity="other">Вы получили %d новых домашних заданий</item>
</plurals>
<plurals name="homework_number_item">
<item quantity="one">%d домашних заданий</item>
<item quantity="few">%d домашних заданий</item>
<item quantity="one">%d домашнее задание</item>
<item quantity="few">%d домашних задания</item>
<item quantity="many">%d домашних заданий</item>
<item quantity="other">%d домашних заданий</item>
</plurals>
@ -423,15 +423,15 @@
<string name="lucky_number_header">Сегодняшний счастливый номер это</string>
<string name="lucky_number_empty">Нет данных о счастливом номере</string>
<string name="lucky_number_notify_new_item_title">Сегодняшний счастливый номер</string>
<string name="lucky_number_notify_new_item">Сегодняшний номер удачи: %s</string>
<string name="lucky_number_notify_new_item">Сегодняшний счастливый номер: %s</string>
<string name="lucky_number_history_button">Показать историю</string>
<!--Lucky number history-->
<string name="lucky_number_history_title">История удачных чисел</string>
<string name="lucky_number_history_empty">Нет информации о номерах удачи</string>
<string name="lucky_number_history_title">История счастливых номеров</string>
<string name="lucky_number_history_empty">Нет информации о счастливых номерах</string>
<!--Mobile devices-->
<string name="mobile_devices_title">Мобильные устройства</string>
<string name="mobile_devices_no_items">Нет устройств</string>
<string name="mobile_devices_unregister">Отменить регистрацию</string>
<string name="mobile_devices_unregister">Удалить</string>
<string name="mobile_device_removed">Устройство удалено</string>
<string name="mobile_device_qr">QR-код</string>
<string name="mobile_device_token">Token</string>
@ -457,45 +457,45 @@
<string name="conferences_title">Встречи</string>
<string name="conference_no_items">Нет информации о встречах</string>
<plurals name="conference_number_item">
<item quantity="one">%d конференция</item>
<item quantity="few">%d конференция</item>
<item quantity="many">%d конференция</item>
<item quantity="other">%d конференций</item>
<item quantity="one">%d встреча</item>
<item quantity="few">%d встречи</item>
<item quantity="many">%d встреч</item>
<item quantity="other">%d встреч</item>
</plurals>
<plurals name="conference_notify_new_item_title">
<item quantity="one">Новая конференция</item>
<item quantity="few">Новая конференция</item>
<item quantity="many">Новая конференция</item>
<item quantity="other">Новые конференции</item>
<item quantity="one">Новая встреча</item>
<item quantity="few">Новые встречи</item>
<item quantity="many">Новые встречи</item>
<item quantity="other">Новые встречи</item>
</plurals>
<plurals name="conference_notify_new_items">
<item quantity="one">У вас %1$d новая конференция</item>
<item quantity="few">У вас %1$d новая конференция</item>
<item quantity="many">У вас %1$d новая конференция</item>
<item quantity="other">У вас %1$d новых конференций</item>
<item quantity="one">У вас %1$d новая встреча</item>
<item quantity="few">У вас %1$d новые встречи</item>
<item quantity="many">У вас %1$d новых встреч</item>
<item quantity="other">У вас %1$d новых встреч</item>
</plurals>
<string name="conferences_present">Присутствует на конференции</string>
<string name="conferences_present">Присутствует на встрече</string>
<string name="conference_agenda">Повестка дня</string>
<!--Director information-->
<string name="school_announcement_title">Объявления школ</string>
<string name="school_announcement_no_items">Нет объявлений о школе</string>
<string name="school_announcement_title">Объявления школы</string>
<string name="school_announcement_no_items">Нет школьных объявлений</string>
<plurals name="school_announcement_number_item">
<item quantity="one">Объявление о школе %d</item>
<item quantity="few">Объявление о школе %d</item>
<item quantity="many">Объявление о школе %d</item>
<item quantity="other">Объявления школы %d</item>
<item quantity="one">%d школьное объявление</item>
<item quantity="few">%d школьных объявления</item>
<item quantity="many">%d школьных объявлений</item>
<item quantity="other">%d школьных объявлений</item>
</plurals>
<plurals name="school_announcement_notify_new_item_title">
<item quantity="one">Объявление о новой школе</item>
<item quantity="few">Объявление о новой школе</item>
<item quantity="many">Объявление о новой школе</item>
<item quantity="other">Объявления о новых школах</item>
<item quantity="one">Новое школьное объявление</item>
<item quantity="few">Новые школьные объявления</item>
<item quantity="many">Новые школьные объявления</item>
<item quantity="other">Новые школьные объявления</item>
</plurals>
<plurals name="school_announcement_notify_new_items">
<item quantity="one">У вас %1$d объявление о новой школе</item>
<item quantity="few">У вас %1$d объявление о новой школе</item>
<item quantity="many">У тебя %1$d новых школьных объявлений</item>
<item quantity="other">У тебя %1$d новых школьных объявлений</item>
<item quantity="one">У вас %1$d новое школьное объявление</item>
<item quantity="few">У вас %1$d новые школьных объявления</item>
<item quantity="many">У вас %1$d новых школьных объявлений</item>
<item quantity="other">У вас %1$d новых школьных объявлений</item>
</plurals>
<!--Account-->
<string name="account_add_new">Добавить аккаунт</string>
@ -505,29 +505,29 @@
<string name="account_type_student">Профиль ученика</string>
<string name="account_type_parent">Профиль родителя</string>
<string name="account_details_edit">Изменить данные</string>
<string name="account_quick_manager">Менеджер аккаунтов</string>
<string name="account_select_student">Выберите Студента</string>
<string name="account_quick_manager">Управлять аккаунтами</string>
<string name="account_select_student">Выбрать ученика</string>
<string name="account_family">Семья</string>
<string name="account_contact">Контакт</string>
<string name="account_address">Детали проживания</string>
<string name="account_personal_data">Персональные данные</string>
<string name="account_contact">Контакты</string>
<string name="account_address">Места жительства</string>
<string name="account_personal_data">Личная информация</string>
<!--About-->
<string name="about_version">Версия приложения</string>
<string name="about_contributor">Разработчики</string>
<string name="about_contributor_summary">Список разработчиков \"Вулкановый\"</string>
<string name="about_contributor_summary">Список разработчиков приложения</string>
<string name="about_feedback">Возникла ошибка?</string>
<string name="about_feedback_summary">Сообщить о ошибке</string>
<string name="about_faq">FAQ</string>
<string name="about_faq_summary">Часто задаваемые вопросы</string>
<string name="about_discord">Сервер Discord</string>
<string name="about_discord_summary">Присоединиться к сообществу приложения</string>
<string name="about_facebook">Facebook фан-страница</string>
<string name="about_twitter">Странница в твиттере</string>
<string name="about_twitter_summary">Подпишись на нас в твиттере</string>
<string name="about_facebook_summary">Поставьте лайк на нашей странице в Facebook</string>
<string name="about_privacy">Политика приватности</string>
<string name="about_facebook">Страница в Facebook</string>
<string name="about_twitter">Страница в Twitter</string>
<string name="about_twitter_summary">Следите за нами в Twitter</string>
<string name="about_facebook_summary">Лайкните нас в Facebook</string>
<string name="about_privacy">Политика конфиденциальности</string>
<string name="about_privacy_summary">Правила хранения личных данных</string>
<string name="about_system">Параметры системы</string>
<string name="about_system">Системные настройки</string>
<string name="about_system_summary">Открыть системные настройки</string>
<string name="about_homepage">Домашняя страница</string>
<string name="about_homepage_summary">Помочь в развитии приложения</string>
@ -541,23 +541,23 @@
<!--Student info-->
<string name="student_info_empty">Нет информации об ученике или семье ученика</string>
<string name="student_info_first_name">Имя</string>
<string name="student_info_second_name">Фамилия</string>
<string name="student_info_second_name">Второе имя</string>
<string name="student_info_gender">Пол</string>
<string name="student_info_polish_citizenship">Польское гражданство</string>
<string name="student_info_family_name">Фамилия</string>
<string name="student_info_family_name">Девичья фамилия</string>
<string name="student_info_parents_name">Имена матери и отца</string>
<string name="student_info_phone">Телефон</string>
<string name="student_info_phone">Домашний телефон</string>
<string name="student_info_cellphone">Сотовый телефон</string>
<string name="student_info_email">Эл. почта</string>
<string name="student_info_email">E-mail</string>
<string name="student_info_address">Адрес проживания</string>
<string name="student_info_registered_address">Адрес регистрации</string>
<string name="student_info_correspondence_address">Адрес переписки</string>
<string name="student_info_registered_address">Адрес прописки</string>
<string name="student_info_correspondence_address">Почтовый адрес</string>
<string name="student_info_full_name">Фамилия и имя</string>
<string name="student_info_kinship">Степень родства</string>
<string name="student_info_guardian_address">Адрес</string>
<string name="student_info_phones">Телефоны</string>
<string name="student_info_male">Муж</string>
<string name="student_info_female">Женская</string>
<string name="student_info_phones">Номера телефонов</string>
<string name="student_info_male">Мужской</string>
<string name="student_info_female">Женский</string>
<string name="student_info_last_name">Фамилия</string>
<string name="student_info_guardian">Опекун</string>
<!--Account edit-->
@ -565,7 +565,7 @@
<string name="account_edit_header">Добавить ник</string>
<string name="account_edit_avatar_title">Выберите цвет аватара</string>
<!--Log viewer-->
<string name="logviewer_share">Поделиться логами</string>
<string name="logviewer_share">Отправить логи</string>
<string name="logviewer_refresh">Обновить</string>
<!--Dashboard-->
<string name="dashboard_timetable_title">Уроки</string>
@ -579,20 +579,20 @@
<string name="dashboard_timetable_second_lessons_title">Далее:</string>
<string name="dashboard_timetable_third_title">Позднее:</string>
<plurals name="dashboard_timetable_third_value">
<item quantity="one">Еще %1$d урок</item>
<item quantity="few">Еще %1$d урок</item>
<item quantity="many">Еще %1$d урок</item>
<item quantity="other">Ещё %1$d уроков</item>
<item quantity="one">ещё %1$d урок</item>
<item quantity="few">ещё %1$d урока</item>
<item quantity="many">ещё %1$d уроков</item>
<item quantity="other">ещё %1$d уроков</item>
</plurals>
<string name="dashboard_timetable_third_time">до %1$s</string>
<string name="dashboard_timetable_no_lessons">Нет предстоящих занятий</string>
<string name="dashboard_timetable_error">Произошла ошибка при загрузке уроков</string>
<string name="dashboard_homework_title">Домашняя работа</string>
<string name="dashboard_homework_title">Домашнее задание</string>
<string name="dashboard_homework_no_homework">Нет домашних заданий</string>
<string name="dashboard_homework_error">Произошла ошибка при загрузке домашнего задания</string>
<plurals name="dashboard_homework_more">
<item quantity="one">Ещё %1$d домашних заданий</item>
<item quantity="few">Ещё %1$d домашних заданий</item>
<item quantity="one">Ещё %1$d домашнее задание</item>
<item quantity="few">Ещё %1$d домашних задания</item>
<item quantity="many">Ещё %1$d домашних заданий</item>
<item quantity="other">Ещё %1$d домашних заданий</item>
</plurals>
@ -600,32 +600,32 @@
<string name="dashboard_grade_title">Последние оценки</string>
<string name="dashboard_grade_no_grade">Нет новых оценок</string>
<string name="dashboard_grade_error">Произошла ошибка при загрузке оценок</string>
<string name="dashboard_announcements_title">Объявления школ</string>
<string name="dashboard_announcements_no_announcements">Нет текущих объявлений</string>
<string name="dashboard_announcements_title">Школьные объявления</string>
<string name="dashboard_announcements_no_announcements">Нет объявлений</string>
<string name="dashboard_announcements_error">Произошла ошибка при загрузке объявлений</string>
<plurals name="dashboard_announcements_more">
<item quantity="one">Ещё %1$d объявление</item>
<item quantity="few">Ещё %1$d объявление</item>
<item quantity="many">Ещё %1$d объявление</item>
<item quantity="other">Ещё %1$d объявлений</item>
<item quantity="one">ещё %1$d объявление</item>
<item quantity="few">ещё %1$d объявления</item>
<item quantity="many">ещё %1$d объявлений</item>
<item quantity="other">ещё %1$d объявлений</item>
</plurals>
<string name="dashboard_exams_title">Экзамены</string>
<string name="dashboard_exams_no_exams">Нет предстоящих экзаменов</string>
<string name="dashboard_exams_error">Произошла ошибка при загрузке экзамена</string>
<string name="dashboard_exams_title">Тесты</string>
<string name="dashboard_exams_no_exams">Нет предстоящих тестов</string>
<string name="dashboard_exams_error">Произошла ошибка при загрузке тестов</string>
<plurals name="dashboard_exams_more">
<item quantity="one">Еще %1$d экзамен</item>
<item quantity="few">Еще %1$d экзамен</item>
<item quantity="many">Еще %1$d экзамен</item>
<item quantity="other">ещё %1$d экзаменов</item>
<item quantity="one">ещё %1$d тест</item>
<item quantity="few">ещё %1$d теста</item>
<item quantity="many">ещё %1$d тестов</item>
<item quantity="other">ещё %1$d тестов</item>
</plurals>
<string name="dashboard_conferences_title">Конференции</string>
<string name="dashboard_conferences_no_conferences">Нет предстоящих конференций</string>
<string name="dashboard_conferences_error">Произошла ошибка при загрузке конференций</string>
<string name="dashboard_conferences_title">Встречи</string>
<string name="dashboard_conferences_no_conferences">Нет предстоящих встреч</string>
<string name="dashboard_conferences_error">Произошла ошибка при загрузке встреч</string>
<plurals name="dashboard_conference_more">
<item quantity="one">Еще %1$d конференция</item>
<item quantity="few">Еще %1$d конференция</item>
<item quantity="many">Еще %1$d конференция</item>
<item quantity="other">Еще %1$d конференций</item>
<item quantity="one">еще %1$d встреча</item>
<item quantity="few">еще %1$d встречи</item>
<item quantity="many">еще %1$d встреч</item>
<item quantity="other">еще %1$d встреч</item>
</plurals>
<string name="dashboard_horizontal_group_error">Произошла ошибка при загрузке данных</string>
<string name="dashboard_horizontal_group_no_data">Отсутствует</string>
@ -668,96 +668,96 @@
<!--Preferences-->
<string name="pref_view_header">Приложение</string>
<string name="pref_view_list">Окно по умолчанию</string>
<string name="pref_view_grade_average_mode">Рассчитанные средние параметры</string>
<string name="pref_view_grade_average_mode">Параметры расчёта средних оценок</string>
<string name="pref_view_grade_average_force_calc">Принудительно высчитать среднюю оценку через приложение</string>
<string name="pref_view_present">Показать присутствие</string>
<string name="pref_view_present">Показывать присутствия</string>
<string name="pref_view_app_theme">Тема</string>
<string name="pref_view_expand_grade">Расширяется оценка</string>
<string name="pref_view_expand_grade">Разворачивание оценок</string>
<string name="pref_view_timetable_show_timers">Отметить текущий урок</string>
<string name="pref_view_timetable_show_groups">Показать группы рядом с темами</string>
<string name="pref_view_grade_statistics_list">Показывать диаграммы в оценках класса</string>
<string name="pref_view_subjects_without_grades">Показать предметы без оценок</string>
<string name="pref_view_grade_color_scheme">Схема цветов оценок</string>
<string name="pref_view_grade_color_scheme">Цветовая схема оценок</string>
<string name="pref_view_grade_sorting_mode">Сортировка уроков</string>
<string name="pref_view_app_language">Язык</string>
<string name="pref_notify_header">Уведомления</string>
<string name="pref_notify_header_other">Прочее</string>
<string name="pref_notify_switch">Показывать уведомления</string>
<string name="pref_notify_upcoming_lessons_switch">Показывать уведомления о будущих уроках</string>
<string name="pref_notify_upcoming_lessons_persistent_switch">Сделать уведомления о предстоящем уроке постоянным</string>
<string name="pref_notify_upcoming_lessons_persistent_summary">Выключить, когда уведомление не отображается в чата/полосе</string>
<string name="pref_notify_open_system_settings">Открыть настройки уведомлений системы</string>
<string name="pref_notify_upcoming_lessons_switch">Показывать уведомления о предстоящих уроках</string>
<string name="pref_notify_upcoming_lessons_persistent_switch">Сделать уведомление о предстоящем уроке постоянным</string>
<string name="pref_notify_upcoming_lessons_persistent_summary">Выключите, если уведомление не отображается на умных часах</string>
<string name="pref_notify_open_system_settings">Открыть системные настройки уведомлений</string>
<string name="pref_notify_fix_sync_issues">Исправить проблемы с синхронизацией и уведомлениями</string>
<string name="pref_notify_fix_sync_issues_message">На вашем устройстве могут быть проблемы с синхронизацией данных и уведомлениями.\n\nЧтобы их исправить, вам необходимо добавить Wulkanowy в авто-старт и выключить оптимизацию/экономию батареи в настройках устройства.</string>
<string name="pref_notify_debug_switch">Показывать дебаг-уведомления</string>
<string name="pref_notify_debug_switch">Показывать отладочные уведомления</string>
<string name="pref_notify_disabled_summary">Синхронизация отключена</string>
<string name="pref_notify_notifications_piggyback_header">Официальные уведомления приложения</string>
<string name="pref_notify_notifications_piggyback">Записывать официальные уведомления</string>
<string name="pref_notify_notifications_piggyback_header">Уведомления официального приложения</string>
<string name="pref_notify_notifications_piggyback">Захватывать уведомления официального приложения</string>
<string name="pref_notify_notifications_piggyback_cancel_original">Удалить уведомления от официального приложения после захвата</string>
<string name="pref_notification_piggyback_popup_title">Показывать push-уведомления</string>
<string name="pref_notification_piggyback_popup_description">С помощью этой функции вы можете получить замену push-уведомлений, как в официальном приложении. Все, что вам нужно сделать, это разрешить Wulkanowy получать все уведомления в настройках системы.\n\nКак это работает?\nКогда вы получаете уведомление в Dziennik VULCAN, Wulkanowy будет уведомлен (это требует дополнительных прав) и запустит синхронизацию, чтобы отправить свое уведомление.\n\nТОЛЬКО ДЛЯ ПОЛЬЗОВАТЕЛЯ</string>
<string name="pref_notification_exact_alarm_popup_title">Показывать уведомления о будущих уроках</string>
<string name="pref_notification_exact_alarm_popup_descriptions">Вы должны разрешить приложению Wulkanowy установить будильник и напоминания в настройках системы, чтобы использовать эту функцию.</string>
<string name="pref_notification_piggyback_popup_title">Захват уведомлений</string>
<string name="pref_notification_piggyback_popup_description">С помощью этой функции вы можете получить аналог push-уведомлений из официального приложения. Все, что вам нужно сделать, это разрешить Wulkanowy получать все уведомления в настройках системы.\n\nКак это работает?\nКогда вы получаете уведомление в Dziennik VULCAN, Wulkanowy будет уведомлен (для этого и нужны дополнительные разрешения) и запустит синхронизацию, чтобы отправить свое уведомление.\n\nТОЛЬКО ДЛЯ ПРОДВИНУТЫХ ПОЛЬЗОВАТЕЛЕЙ</string>
<string name="pref_notification_exact_alarm_popup_title">Показывать уведомления о предстоящих уроках</string>
<string name="pref_notification_exact_alarm_popup_descriptions">Вы должны разрешить Wulkanowy устанавливать будильник и напоминания в настройках системы, чтобы использовать эту функцию.</string>
<string name="pref_notification_go_to_settings">Перейти к настройкам</string>
<string name="pref_services_header">Синхронизация</string>
<string name="pref_services_switch">Автоматическая синхронизация</string>
<string name="pref_services_suspended">Приостановить синхронизации во время каникул</string>
<string name="pref_services_suspended">Приостановлена во время каникул</string>
<string name="pref_services_interval">Интервал синхронизации</string>
<string name="pref_services_wifi">Только через Wi-Fi</string>
<string name="pref_services_force_sync">Синхронизировать</string>
<string name="pref_services_message_sync_success">Синхронизировано!</string>
<string name="pref_services_message_sync_failed">Синхронизация не удалась</string>
<string name="pref_services_sync_in_progress">Идёт синхронизация</string>
<string name="pref_services_sync_in_progress">Синхронизация...</string>
<string name="pref_services_last_full_sync_date">Последняя полная синхронизация: %s</string>
<string name="pref_other_grade_modifier_plus">Стоимость плюса</string>
<string name="pref_other_grade_modifier_minus">Стоимость минуса</string>
<string name="pref_other_fill_message_content">Отвечать с историей сообщений</string>
<string name="pref_other_optional_arithmetic_average">Показывать среднее арифметическое при отсутствии весов</string>
<string name="pref_other_optional_arithmetic_average">Показывать среднее арифметическое при отсутствии стоимости</string>
<string name="pref_ads_support_category_name">Поддержка</string>
<string name="pref_ads_support">Смотреть одиночную рекламу для поддержки проекта</string>
<string name="pref_ads_support">Посмотреть рекламу для поддержки проекта</string>
<string name="pref_ads_privacy_title">Согласие на обработку данных</string>
<string name="pref_ads_privacy_description">Для просмотра рекламы вы должны согласиться с условиями обработки данных нашей Политики конфиденциальности</string>
<string name="pref_ads_privacy_agree">Согласен</string>
<string name="pref_ads_privacy_agree">Согласиться</string>
<string name="pref_ads_privacy_link">Политика конфиденциальности</string>
<string name="pref_ads_loading">Объявление загружается</string>
<string name="pref_ads_loading">Реклама загружается</string>
<string name="pref_ads_once_per_visit">Спасибо за вашу поддержку, возвращайтесь позже для дополнительной рекламы</string>
<string name="pref_settings_advanced_title">Расширенные</string>
<string name="pref_settings_appearance_title">Внешний вид &amp; Поведение</string>
<string name="pref_settings_appearance_title">Внешний вид и поведение</string>
<string name="pref_settings_notifications_title">Уведомления</string>
<string name="pref_settings_sync_title">Синхронизация</string>
<string name="pref_settings_ads_title">Реклама</string>
<string name="pref_grades_appearance_header">Оценки</string>
<string name="pref_dashboard_appearance_header">Панель</string>
<string name="pref_dashboard_appearance_header">Главная</string>
<string name="pref_dashboard_appearance_tiles_title">Видимость плиток</string>
<string name="pref_attendance_appearance_view">Посещаемость</string>
<string name="pref_timetable_appearance_view">Расписание</string>
<string name="pref_grades_advanced_header">Оценки</string>
<string name="pref_counted_average_advanced_header">Расчетное среднее</string>
<string name="pref_counted_average_advanced_header">Рассчитанная средняя оценка</string>
<string name="pref_messages_advanced_header">Сообщения</string>
<string name="pref_appearance_category">Внешний вид &amp; Поведение</string>
<string name="pref_appearance_category_summary">Языки, темы, темы сортировки темы</string>
<string name="pref_notifications_category_summary">Уведомления приложений, проблемы с устранением</string>
<string name="pref_appearance_category">Внешний вид и поведение</string>
<string name="pref_appearance_category_summary">Язык, тема, сортировка предметов</string>
<string name="pref_notifications_category_summary">Настройки уведомлений приложения</string>
<string name="pref_notifications_category">Уведомления</string>
<string name="pref_sync_category">Синхронизация</string>
<string name="pref_sync_category_summary">Автоматическое обновление, интервал синхронизации</string>
<string name="pref_advanced_category_summary">Значения плюс и минус, средний расчет</string>
<string name="pref_sync_category_summary">Автоматическая синхронизация и её интервал</string>
<string name="pref_advanced_category_summary">Значения плюса и минуса, расчёт средней оценки</string>
<string name="pref_advanced_category">Расширенные</string>
<string name="pref_about_category_summary">Версия приложения, участники, социальные порталы</string>
<string name="pref_ads_category_summary">Отображение объявлений, поддержка проекта</string>
<string name="pref_about_category_summary">Версия приложения, разработчики, соц. сети</string>
<string name="pref_ads_category_summary">Посмотреть рекламу, чтобы поддержать преокт</string>
<!--Notification Channels-->
<string name="channel_new_grades">Новые оценки</string>
<string name="channel_new_homework">Новая домашняя работа</string>
<string name="channel_new_conference">Новые конференции</string>
<string name="channel_new_exam">Новые экзамены</string>
<string name="channel_new_homework">Новое домашнее задание</string>
<string name="channel_new_conference">Новые встречи</string>
<string name="channel_new_exam">Новые тесты</string>
<string name="channel_lucky_number">Счастливый номер</string>
<string name="channel_new_message">Новые сообщения</string>
<string name="channel_new_notes">Новые заметки</string>
<string name="channel_new_school_announcement">Объявления о новых школах</string>
<string name="channel_push">Показывать push-уведомления</string>
<string name="channel_upcoming_lessons">Будущие уроки</string>
<string name="channel_debug">Дебаг</string>
<string name="channel_change_timetable">Изменение расписания</string>
<string name="channel_new_attendance">Новое посещение</string>
<string name="channel_new_message">Новые письма</string>
<string name="channel_new_notes">Новые замечания</string>
<string name="channel_new_school_announcement">Новые школьные объявления</string>
<string name="channel_push">Push-уведомления</string>
<string name="channel_upcoming_lessons">Предстоящие уроки</string>
<string name="channel_debug">Отладка</string>
<string name="channel_change_timetable">Изменения в расписании</string>
<string name="channel_new_attendance">Новая запись о посещаемости</string>
<!--Colors-->
<string name="all_black">Чёрный</string>
<string name="all_red">Красный</string>
@ -771,16 +771,16 @@
<string name="update_download_success_button">Перезапустить</string>
<string name="update_failed">Не удалось обновить! Wulkanowy может работать некорректно. Рассмотрите возможность обновления</string>
<!--Errors-->
<string name="error_no_internet">Нет интернет-подключения</string>
<string name="error_invalid_device_datetime">Произошла ошибка. Проверьте часы вашего устройства</string>
<string name="error_timeout">Не удалось подключиться к регистрации. Серверы могут быть перегружены. Пожалуйста, повторите попытку позже</string>
<string name="error_login_failed">Не удалось загрузить данные. Пожалуйста, повторите попытку позже</string>
<string name="error_password_change_required">Необходимо изменить пароль реестра</string>
<string name="error_service_unavailable">Технический перерыв в журнале UONET + продолжается. Попробуйте позже</string>
<string name="error_unknown_uonet">Неизвестная ошибка UONET + регистр. Попробуйте позже</string>
<string name="error_unknown_app">Неизвестная ошибка приложения. Пожалуйста, повторите попытку позже</string>
<string name="error_unknown">Произошла неожиданная ошибка</string>
<string name="error_feature_disabled">Функция была выключена школой</string>
<string name="error_feature_not_available">Функция не доступна в этом режиме</string>
<string name="error_field_required">Это поле является обязательным</string>
<string name="error_no_internet">Интернет-соединение отсутствует</string>
<string name="error_invalid_device_datetime">Произошла ошибка. Проверьте время на вашем устройстве</string>
<string name="error_timeout">Не удалось подключиться к дневнику. Возможно, сервера перегружены, повторите попытку позже</string>
<string name="error_login_failed">Не удалось загрузить данные, повторите попытку позже</string>
<string name="error_password_change_required">Необходимо изменить пароль дневника</string>
<string name="error_service_unavailable">UONET+ проводит техническое обслуживание, повторите попытку позже</string>
<string name="error_unknown_uonet">Неизвестная ошибка дневника UONET+, повторите попытку позже</string>
<string name="error_unknown_app">Неизвестная ошибка приложения, повторите попытку позже</string>
<string name="error_unknown">Произошла непредвиденная ошибка</string>
<string name="error_feature_disabled">Функция отключена вашей школой</string>
<string name="error_feature_not_available">Функция недоступна в режиме Mobile API. Воспользуйтесь другим режимом</string>
<string name="error_field_required">Это поле обязательно</string>
</resources>

View File

@ -41,24 +41,24 @@
<item>Кольори оцінок в щоденнику</item>
</string-array>
<string-array name="default_expand_grade_entries">
<item>Раз до 1</item>
<item>Завжди розгорнутий</item>
<item>Необмежена кількість розширень</item>
<item>До 1 за раз</item>
<item>Завжди розгорнуті</item>
<item>Необмежена кількість розгортань</item>
</string-array>
<string-array name="grade_average_mode_entries">
<item>Середні оцінки тільки від обраного семестру</item>
<item>Середнє значення для обох семестів</item>
<item>Середнє оцінювання за весь рік</item>
<item>Середні оцінки тільки за обраний семестр</item>
<item>Середнє значення з обох семестрів</item>
<item>Середня оцінка з цілого року</item>
</string-array>
<string-array name="dashboard_tile_entries">
<item>Щасливий номер</item>
<item>Непрочитані повідомлення</item>
<item>Непрочитані листи</item>
<item>Відвідуваність</item>
<item>Уроки</item>
<item>Оцінки</item>
<item>Домашні завдання</item>
<item>Оголошення школи</item>
<item>Тести</item>
<item>Конференції</item>
<item>Зустрічі</item>
</string-array>
</resources>

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
buildscript {
ext {
kotlin_version = '1.6.20'
about_libraries = '8.9.4'
hilt_version = "2.41"
kotlin_version = '1.6.21'
about_libraries = '10.2.0'
hilt_version = "2.42"
}
repositories {
mavenCentral()
@ -16,7 +16,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:7.1.3'
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.huawei.agconnect:agcp:1.6.5.300'
classpath 'com.huawei.agconnect:agcp:1.6.6.200'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
classpath "com.github.triplet.gradle:play-publisher:3.6.0"
classpath "ru.cian:huawei-publish-gradle-plugin:1.3.3"