From 660e46884f82be4ceb79fc44a2feb4478cfba71b Mon Sep 17 00:00:00 2001 From: 7781291 <35892340+7781291@users.noreply.github.com> Date: Sat, 1 Aug 2026 00:52:22 +0300 Subject: [PATCH 1/4] Add Russian localization for Android app --- .../app/src/main/res/values-ru/strings.xml | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 android/app/src/main/res/values-ru/strings.xml diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000000..8cadb7e38d --- /dev/null +++ b/android/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,125 @@ + + + NOOP + + + Сегодня + Интеллект + Прямой эфир + Интервалы + Сон + Дыхание + Стресс + Тренировки + Тренды + Тренер + Данные + Исследование + Сравнение + Здоровье + Apple Health + Автоматизация + Источники данных + Уведомления + Поддержка + Настройки + + + Центр управления + Ваш день во всех деталях + С первого взгляда + Синтез дня + Основные метрики + Сегодня + Тренд за 14 дней + + + Истощено + Низко + Стабильно + Готово + Пик + Нет данных + + + Восстановление + Нагрузка + Дневная нагрузка + Сон + HRV + Пульс в покое + Кислород крови + Дыхание + Шаги + Вес + Калории + + + из 21 + мс + уд/мин + SpO₂ + об/мин + %% эфф + сегодня + последний + активно + + + Доброе утро + Добрый день + Добрый вечер + + + Прямой эфир. Ваши результаты строятся. + Ваш живой пульс работает от браслета, а восстановление, нагрузка и сон формируются из него в течение следующих нескольких ночей носки, совершенствуясь по мере обучения вашему базовому уровню. Хотите свою полную историю мгновенно? Импортируйте экспорт WHOOP в разделе "Источники данных" и он восстановится примерно за минуту. + Метрик еще нет. Синхронизируйте браслет для начала. + Восстановление низко + Восстановление стабильно + Восстановление сильное + но сон был короток + и сон был стабилен + + + Обзор + Прямой эфир + Восстановление + Активность + Данные + Здоровье + Система + Strand + Инструмент + ДЕМО + + + Поддержать NOOP + Открыть навигацию + Скоро + Этот раздел уже в пути. + + + Разрешение Bluetooth + Разрешение на определение местоположения + Разрешение на доступ к данным здоровья + + + Подключено + Отключено + Подключение... + Сканирование... + + + Предупреждение о здоровье + + + Загрузка... + Ошибка + Повторить + Отмена + Сохранить + Удалить + Закрыть + Настройки + О приложении + From 1096ff60fbda808f03c733db0f68d143a56a5f55 Mon Sep 17 00:00:00 2001 From: 7781291 <35892340+7781291@users.noreply.github.com> Date: Sat, 1 Aug 2026 00:58:26 +0300 Subject: [PATCH 2/4] Add Russian localization testing guide --- RUSSIAN_LOCALIZATION_GUIDE.md | 135 ++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 RUSSIAN_LOCALIZATION_GUIDE.md diff --git a/RUSSIAN_LOCALIZATION_GUIDE.md b/RUSSIAN_LOCALIZATION_GUIDE.md new file mode 100644 index 0000000000..b67dc4219e --- /dev/null +++ b/RUSSIAN_LOCALIZATION_GUIDE.md @@ -0,0 +1,135 @@ +# Инструкция по тестированию русской локализации + +## Быстрый старт + +Этот документ описывает, как собрать и протестировать APK приложения NOOP с русской локализацией. + +## Способ 1: Локальная сборка (Рекомендуется) + +### Требования: +- JDK 17+ +- Android SDK (API 34) +- Gradle 8.5 +- Android-устройство или эмулятор с Android 8.0+ + +### Шаги: + +1. **Клонируйте ветку с русской локализацией:** +```bash +git clone https://github.com/7781291/noop.git +cd noop +git checkout feat/russian-localization +``` + +2. **Перейдите в папку Android:** +```bash +cd android +``` + +3. **Создайте файл `local.properties` (если его нет):** +```bash +echo "sdk.dir=$HOME/Library/Android/sdk" > local.properties +``` +Или на Windows: +```cmd +echo sdk.dir=%USERPROFILE%\AppData\Local\Android\sdk > local.properties +``` + +4. **Соберите Debug APK:** +```bash +./gradlew assembleDebug +``` + +5. **Найдите собранный APK:** +``` +app/build/outputs/apk/debug/app-debug.apk +``` + +6. **Установите на устройство:** +```bash +./gradlew installDebug +``` + +Или вручную через ADB: +```bash +adb install app/build/outputs/apk/debug/app-debug.apk +``` + +## Способ 2: Использование Android Studio + +1. Откройте папку `android/` в Android Studio +2. Выберите меню: **Build → Build Bundle(s) / APK(s) → Build APK(s)** +3. Подождите завершения сборки +4. APK будет в `android/app/build/outputs/apk/debug/` + +## Тестирование русской локализации + +После установки приложения: + +1. **Измените язык системы на русский:** + - Откройте **Параметры → Язык и ввод → Языки** + - Выберите **Русский** + +2. **Перезапустите приложение NOOP** + +3. **Проверьте переводы:** + - ✅ Названия экранов (Сегодня, Интеллект, Прямой эфир и т.д.) + - ✅ Названия метрик (Восстановление, Нагрузка, Сон и т.д.) + - ✅ Единицы измерения (мс, уд/мин и т.д.) + - ✅ Текст навигации и кнопок + - ✅ Сообщения о данных + +## Структура файла локализации + +Русский перевод находится в: +``` +android/app/src/main/res/values-ru/strings.xml +``` + +Английский оригинал: +``` +android/app/src/main/res/values/strings.xml +``` + +## Что переведено + +✅ **Названия экранов:** 20+ экранов +✅ **Метрики:** Recovery, Strain, Sleep, HRV, RHR, SpO₂ и другие +✅ **UI элементы:** Кнопки, навигация, метки +✅ **Сообщения:** Статус, уведомления, ошибки + +## Возможные проблемы + +### Проблема: `gradlew: Permission denied` +**Решение:** +```bash +chmod +x gradlew +``` + +### Проблема: `SDK location not found` +**Решение:** Создайте `local.properties` с правильным путем к SDK + +### Проблема: `Java version mismatch` +**Решение:** Убедитесь, что используется JDK 17: +```bash +java -version +``` + +## Отправка отзыва + +Если вы нашли ошибки в переводе или хотите добавить дополнительные строки: + +1. Создайте Issue на GitHub +2. Описание проблемы + скриншот +3. Предложенный перевод + +## Полезные ссылки + +- [Android Localization Guide](https://developer.android.com/guide/topics/resources/localization) +- [NOOP Repository](https://github.com/7781291/noop) +- [Android Studio Setup](https://developer.android.com/studio) + +--- + +**Веточка:** `feat/russian-localization` +**Статус:** Готово к тестированию ✅ From 75f48aa446d267628b48bc3ef686e6d500e2379c Mon Sep 17 00:00:00 2001 From: 7781291 <35892340+7781291@users.noreply.github.com> Date: Sat, 1 Aug 2026 00:59:38 +0300 Subject: [PATCH 3/4] Add build script for Android APK --- build-apk.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 build-apk.sh diff --git a/build-apk.sh b/build-apk.sh new file mode 100644 index 0000000000..35da909c18 --- /dev/null +++ b/build-apk.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Build script for NOOP Android APK +# This script builds a debug APK for testing Russian localization + +set -e + +echo "🚀 Building NOOP Android APK..." +echo "================================" + +# Check if we're in the right directory +if [ ! -f "android/gradlew" ]; then + echo "❌ Error: gradlew not found. Run this script from the NOOP root directory." + exit 1 +fi + +# Make gradlew executable +chmod +x android/gradlew + +# Navigate to android directory +cd android + +# Build debug APK +echo "📦 Building debug APK..." +./gradlew assembleDebug + +# Check if build was successful +if [ -f "app/build/outputs/apk/debug/app-debug.apk" ]; then + echo "" + echo "✅ Build successful!" + echo "📍 APK location: $(pwd)/app/build/outputs/apk/debug/app-debug.apk" + echo "" + echo "📱 To install on device:" + echo " adb install app/build/outputs/apk/debug/app-debug.apk" + echo "" + echo "🌐 Test Russian localization:" + echo " 1. Change Android system language to Russian" + echo " 2. Restart NOOP app" + echo " 3. Verify all translations" +else + echo "❌ Build failed. Check the error messages above." + exit 1 +fi From dd50966b5749beff1d9fc674f4d273d827cdc576 Mon Sep 17 00:00:00 2001 From: 7781291 <35892340+7781291@users.noreply.github.com> Date: Sat, 1 Aug 2026 01:07:10 +0300 Subject: [PATCH 4/4] Add Dockerfile for building Android APK --- Dockerfile | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..a682da0692 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,59 @@ +FROM ubuntu:22.04 + +# Set environment variables +ENV DEBIAN_FRONTEND=noninteractive \ + JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \ + ANDROID_HOME=/root/android-sdk \ + PATH=$JAVA_HOME/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH + +# Install dependencies +RUN apt-get update && apt-get install -y \ + wget \ + unzip \ + git \ + openjdk-17-jdk \ + android-tools-adb \ + android-tools-fastboot \ + && rm -rf /var/lib/apt/lists/* + +# Create directories +RUN mkdir -p $ANDROID_HOME/cmdline-tools + +# Download and install Android SDK +RUN cd /tmp && \ + wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip && \ + unzip -q commandlinetools-linux-9477386_latest.zip && \ + mv cmdline-tools $ANDROID_HOME/cmdline-tools/latest && \ + rm commandlinetools-linux-9477386_latest.zip + +# Accept SDK licenses +RUN mkdir -p ~/.android && touch ~/.android/repositories.cfg && \ + yes | sdkmanager --licenses + +# Install SDK packages +RUN sdkmanager --install \ + "platforms;android-34" \ + "build-tools;34.0.0" \ + "platform-tools" \ + --sdk_root=$ANDROID_HOME + +# Set working directory +WORKDIR /workspace + +# Copy the project +COPY . . + +# Make gradlew executable +RUN chmod +x android/gradlew + +# Build the APK +RUN cd android && \ + ./gradlew assembleDebug + +# Output the APK +RUN cp android/app/build/outputs/apk/debug/app-debug.apk /workspace/noop-debug.apk && \ + echo "✅ APK built successfully!" && \ + ls -lh /workspace/noop-debug.apk + +# Default command +CMD ["/bin/bash"]