Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/andrewthemaster_flashcardsapp.json

1 line
42 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "andrewthemaster/flashcardsapp", "files": {"lib/localization/app_localizations.dart": {"1cc1ab43410bceb341c7a289a6c6bc195ee8535b": {"t": 1785745917.0336866, "n": 10625, "h": "d8d20548dd6ab0dd", "c": "import 'package:flutter/material.dart';\nimport '../models/settings_model.dart';\n\nclass AppLocalizations {\n final AppLanguage language;\n\n AppLocalizations(this.language);\n\n static AppLocalizations of(BuildContext context) {\n return Localizations.of<AppLocalizations>(context, AppLocalizations) ??\n AppLocalizations(AppLanguage.english);\n }\n\n static Map<String, Map<String, String>> _localizedValues = {\n 'en': {\n 'app_title': 'Flashcards',\n 'welcome_message': 'Welcome to Flashcards App',\n 'create_new_pack': 'Create New Pack',\n 'enter_pack_name': 'Enter pack name',\n 'enter_characters': 'Enter characters (one per line)',\n 'cancel': 'Cancel',\n 'create': 'Create',\n 'cards_to_review': 'Card to review',\n 'no_cards_in_pack': 'No cards in this pack',\n 'again_button': 'Again',\n 'good_button': 'Good',\n 'new_pack': 'New Pack',\n 'next_card': 'Next Card',\n 'settings': 'Settings',\n 'theme': 'Theme',\n 'language': 'Language',\n 'light_mode': 'Light Mode',\n 'dark_mode': 'Dark Mode',\n 'system_mode': 'System Mode',\n 'english': 'English',\n 'russian': 'Russian',\n 'fill_blanks': 'Fill in the Blanks',\n 'no_cards_available': 'No cards available',\n 'correct_answer': 'Correct answer',\n 'check': 'Check',\n 'next': 'Next',\n 'flashcards': 'Flashcards',\n 'edit_cards': 'Edit Cards',\n 'memory_game': 'Memory Game',\n 'victory': 'Victory!',\n 'found_all_pairs': 'You found all pairs!',\n 'play_again': 'Play Again',\n 'find_matching_pairs': 'Find matching pairs',\n 'edit_flashcard': 'Edit Flashcard',\n 'hanzi': 'Character',\n 'pinyin': 'Pinyin',\n 'translation': 'Translation',\n 'save': 'Save',\n 'suggested_translation': 'Suggested translation:',\n 'translation_error': 'Translation error',\n 'required_fields_error': 'Please fill in all required fields',\n 'exercises': 'Exercises',\n 'translation_service': 'Translation Service',\n 'exercise_service': 'Exercise Generation Service',\n 'server_settings': 'Server Settings',\n 'bkrs_parser': 'BKRS Parser',\n 'bkrs_parser_desc': 'Parse translations from BKRS dictionary website',\n 'rest_api_bert': 'REST API (Argos+BERT)',\n 'rest_api_bert_desc': 'Use local BERT-based server for translations',\n 'bert_chinese': 'BERT Chinese WWM',\n 'bert_chinese_desc': 'Use local BERT model for generating exercises',\n 'deepseek': 'DeepSeek',\n 'deepseek_desc': 'Use DeepSeek API for generating exercises',\n 'helsinki_translation': 'Helsinki-NLP',\n 'helsinki_translation_desc': 'Use server translation with Helsinki-NLP models',\n 'gemma3_bert_wwm': 'Gemma3-IT-QAT + BERT-WWM',\n 'gemma3_bert_wwm_desc': 'Use server generation with subsequent validation',\n 'offline_mode': 'Offline Mode',\n 'offline_mode_desc': 'Use local resources only, no server connection',\n 'server_address': 'Server Address',\n 'test_connection': 'Test Connection',\n 'checking_server': 'Checking server connection...',\n 'server_connected': 'Server connected successfully',\n 'server_error': 'Server connection error',\n 'api_keys': 'API Keys',\n 'deepseek_api_key': 'DeepSeek API Key',\n 'deepseek_api_key_desc': 'Required for DeepSeek API exercises generation',\n 'exercise_complexity': 'Exercise Complexity',\n 'simple_complexity': 'Simple',\n 'simple_complexity_desc': 'Easier exercises with fewer options',\n 'normal_complexity': 'Normal',\n 'normal_complexity_desc': 'Balanced difficulty for regular practice',\n 'complex_complexity': 'Complex',\n 'complex_complexity_desc': 'More challenging exercises with additional options',\n 'tech': 'Technical',\n 'food': 'Food',\n 'everyday': 'Everyday',\n 'professions': 'Professions',\n 'general': 'General',\n 'found_in_dictionary': 'Found in local dictionary',\n 'no_reverse_translation': 'No translation found',\n 'reverse_translation_error': 'Translation error',\n 'reverse_translation_success': 'Translation found',\n 'Type translation to find Chinese': 'Type translation to find Chinese',\n 'srs_quiz': 'SRS Quiz',\n 'character_first': 'Character',\n 'translation_first': 'Translation',\n 'type_translation': 'Type translation',\n 'type_character': 'Type character',\n 'correct': 'Correct!',\n 'incorrect': 'Incorrect',\n 'clear_cache': 'Clear Cache',\n 'cache_cleared': 'Exercise cache cleared successfully',\n 'cache_clear_error': 'Error clearing cache',\n 'testing_connection': 'Testing connection...',\n 'connection_successful': 'Connection successful',\n 'connection_failed': 'Connection failed',\n 'connection_error': 'Connection error',\n 'server_modules': 'Server modules',\n 'translator': 'Translator',\n 'validator': 'Validator',\n 'available_models': 'Available models',\n 'debug_mode': 'Debug Mode',\n 'debug_mode_desc': 'Hide answer blocks and validation data for exercises',\n },\n 'ru': {\n 'app_title': 'Карточки',\n 'welcome_message': 'Добро пожаловать в приложение Карточки',\n 'create_new_pack': 'Создать новый набор',\n 'enter_pack_name': 'Введите название набора',\n 'enter_characters': 'Введите символы (по одному в строке)',\n 'cancel': 'Отмена',\n 'create': 'Создать',\n 'cards_to_review': 'Карточка для повторения',\n 'no_cards_in_pack': 'В этом наборе нет карточек',\n 'again_button': 'Снова',\n 'good_button': 'Хорошо',\n 'new_pack': 'Новый набор',\n 'next_card': 'Следующая карточка',\n 'settings': 'Настройки',\n 'theme': 'Тема',\n 'language': 'Язык',\n 'light_mode': 'Светлая тема',\n 'dark_mode': 'Тёмная тема',\n 'system_mode': 'Системная тема',\n 'english': 'Английский',\n 'russian': 'Русский',\n 'fill_blanks': 'Заполните пропуски',\n 'no_cards_available': 'Нет доступных карточек',\n 'correct_answer': 'Правильный ответ',\n 'check': 'Проверить',\n 'next': 'Далее',\n 'flashcards': 'Карточки',\n 'edit_cards': 'Редактировать карточки',\n 'memory_game': 'Игра на память',\n 'victory': 'Победа!',\n 'found_all_pairs': 'Вы нашли все пары!',\n 'play_again': 'Играть снова',\n 'find_matching_pairs': 'Найдите соответствующие пары',\n 'edit_flashcard': 'Редактировать карточку',\n 'hanzi': 'Символ',\n 'pinyin': 'Пиньинь',\n 'translation': 'Перевод',\n 'save': 'Сохранить',\n 'suggested_translation': 'Предлагаемый перевод:',\n 'translation_error': 'Ошибка перевода',\n 'required_fields_error': 'Пожалуйста, заполните все обязательные поля',\n 'exercises': 'Упражнения',\n 'translation_service': 'Сервис перевода',\n 'exercise_service': 'Сервис генерации упражнений',\n 'server_settings': 'Настройки сервера',\n 'bkrs_parser': 'Парсинг БКРС',\n 'bkrs_parser_desc': 'Получать переводы с сайта словаря БКРС',\n 'rest_api_bert': 'REST API (Argos+BERT)',\n 'rest_api_bert_desc': 'Использовать локальный сервер на базе BERT для переводов',\n 'bert_chinese': 'BERT Chinese WWM',\n 'bert_chinese_desc': 'Использовать локальную модель BERT для создания упражнений',\n 'deepseek': 'DeepSeek',\n 'deepseek_desc': 'Использовать API DeepSeek для создания упражнений',\n 'helsinki_translation': 'Helsinki-NLP',\n 'helsinki_translation_desc': 'Использовать серверный перевод с моделями Helsinki-NLP',\n 'gemma3_bert_wwm': 'Gemma3-IT-QAT + BERT-WWM',\n 'gemma3_bert_wwm_desc': 'Использовать серверную генерацию с последующей валидацией',\n 'offline_mode': 'Автономный режим',\n 'offline_mode_desc': 'Использовать только локальные ресурсы, без подключения к серверу',\n 'server_address': 'Адрес сервера',\n 'test_connection': 'Проверить соединение',\n 'checking_server': 'Проверка подключения к серверу...',\n 'server_connected': 'Сервер успешно подключен',\n 'server_error': 'Ошибка подключения к серверу',\n 'api_keys': 'API ключи',\n 'deepseek_api_key': 'DeepSeek API ключ',\n 'deepseek_api_key_desc': 'Необходим для генерации упражнений через DeepSeek API',\n 'exercise_complexity': 'Сложность упражнений',\n 'simple_complexity': 'Простой',\n 'simple_complexity_desc': 'Более лёгкие упражнения с меньшим количеством вариантов',\n 'normal_complexity': 'Обычный',\n 'normal_complexity_desc': 'Сбалансированная сложность для регулярных тренировок',\n 'complex_complexity': 'Сложный',\n 'complex_complexity_desc': 'Более сложные упражнения с дополнительными вариантами',\n 'tech': 'Технические',\n 'food': 'Еда',\n 'everyday': 'Повседневные',\n 'professions': 'Профессии',\n 'general': 'Общие',\n 'found_in_dictionary': 'Найдено в локальном словаре',\n 'no_reverse_translation': 'Перевод не найден',\n 'reverse_translation_error': 'Ошибка перевода',\n 'reverse_translation_success': 'Перевод найден',\n 'Type translation to find Chinese': 'Введите перевод, чтобы найти китайский',\n 'srs_quiz': 'SRS-тренировка',\n 'character_first': 'Иероглиф',\n 'translation_first': 'Перевод',\n 'type_translation': 'Введите перевод',\n 'type_character': 'Введите иероглиф',\n 'correct': 'Правильно!',\n 'incorrect': 'Неправильно',\n 'clear_cache': 'Очистить кэш',\n 'cache_cleared': 'Кэш упражнений успешно очищен',\n 'cache_clear_error': 'Ошибка при очистке кэша',\n 'testing_connection': 'Проверка соединения...',\n 'connection_successful': 'Соединение установлено',\n 'connection_failed': 'Ошибка соединения',\n 'connection_error': 'Ошибка подключения',\n 'server_modules': 'Модули сервера',\n 'translator': 'Переводчик',\n 'validator': 'Валидатор',\n 'available_models': 'Доступные модели',\n 'debug_mode': 'Режим отладки',\n 'debug_mode_desc': 'Скрывать блоки ответов и данные проверки для упражнений',\n },\n };\n\n String translate(String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n\n static String staticTranslate(AppLanguage language, String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n}\n\n// Extension method for String to easily use translations\nextension StringExtension on String {\n String tr(BuildContext context) {\n return AppLocalizations.of(context).translate(this);\n }\n} "}, "bd2c254d903cd65071a54d3d01b6c65337bb1678": {"t": 1785757894.8195944, "n": 10625, "h": "d8d20548dd6ab0dd", "c": "import 'package:flutter/material.dart';\nimport '../models/settings_model.dart';\n\nclass AppLocalizations {\n final AppLanguage language;\n\n AppLocalizations(this.language);\n\n static AppLocalizations of(BuildContext context) {\n return Localizations.of<AppLocalizations>(context, AppLocalizations) ??\n AppLocalizations(AppLanguage.english);\n }\n\n static Map<String, Map<String, String>> _localizedValues = {\n 'en': {\n 'app_title': 'Flashcards',\n 'welcome_message': 'Welcome to Flashcards App',\n 'create_new_pack': 'Create New Pack',\n 'enter_pack_name': 'Enter pack name',\n 'enter_characters': 'Enter characters (one per line)',\n 'cancel': 'Cancel',\n 'create': 'Create',\n 'cards_to_review': 'Card to review',\n 'no_cards_in_pack': 'No cards in this pack',\n 'again_button': 'Again',\n 'good_button': 'Good',\n 'new_pack': 'New Pack',\n 'next_card': 'Next Card',\n 'settings': 'Settings',\n 'theme': 'Theme',\n 'language': 'Language',\n 'light_mode': 'Light Mode',\n 'dark_mode': 'Dark Mode',\n 'system_mode': 'System Mode',\n 'english': 'English',\n 'russian': 'Russian',\n 'fill_blanks': 'Fill in the Blanks',\n 'no_cards_available': 'No cards available',\n 'correct_answer': 'Correct answer',\n 'check': 'Check',\n 'next': 'Next',\n 'flashcards': 'Flashcards',\n 'edit_cards': 'Edit Cards',\n 'memory_game': 'Memory Game',\n 'victory': 'Victory!',\n 'found_all_pairs': 'You found all pairs!',\n 'play_again': 'Play Again',\n 'find_matching_pairs': 'Find matching pairs',\n 'edit_flashcard': 'Edit Flashcard',\n 'hanzi': 'Character',\n 'pinyin': 'Pinyin',\n 'translation': 'Translation',\n 'save': 'Save',\n 'suggested_translation': 'Suggested translation:',\n 'translation_error': 'Translation error',\n 'required_fields_error': 'Please fill in all required fields',\n 'exercises': 'Exercises',\n 'translation_service': 'Translation Service',\n 'exercise_service': 'Exercise Generation Service',\n 'server_settings': 'Server Settings',\n 'bkrs_parser': 'BKRS Parser',\n 'bkrs_parser_desc': 'Parse translations from BKRS dictionary website',\n 'rest_api_bert': 'REST API (Argos+BERT)',\n 'rest_api_bert_desc': 'Use local BERT-based server for translations',\n 'bert_chinese': 'BERT Chinese WWM',\n 'bert_chinese_desc': 'Use local BERT model for generating exercises',\n 'deepseek': 'DeepSeek',\n 'deepseek_desc': 'Use DeepSeek API for generating exercises',\n 'helsinki_translation': 'Helsinki-NLP',\n 'helsinki_translation_desc': 'Use server translation with Helsinki-NLP models',\n 'gemma3_bert_wwm': 'Gemma3-IT-QAT + BERT-WWM',\n 'gemma3_bert_wwm_desc': 'Use server generation with subsequent validation',\n 'offline_mode': 'Offline Mode',\n 'offline_mode_desc': 'Use local resources only, no server connection',\n 'server_address': 'Server Address',\n 'test_connection': 'Test Connection',\n 'checking_server': 'Checking server connection...',\n 'server_connected': 'Server connected successfully',\n 'server_error': 'Server connection error',\n 'api_keys': 'API Keys',\n 'deepseek_api_key': 'DeepSeek API Key',\n 'deepseek_api_key_desc': 'Required for DeepSeek API exercises generation',\n 'exercise_complexity': 'Exercise Complexity',\n 'simple_complexity': 'Simple',\n 'simple_complexity_desc': 'Easier exercises with fewer options',\n 'normal_complexity': 'Normal',\n 'normal_complexity_desc': 'Balanced difficulty for regular practice',\n 'complex_complexity': 'Complex',\n 'complex_complexity_desc': 'More challenging exercises with additional options',\n 'tech': 'Technical',\n 'food': 'Food',\n 'everyday': 'Everyday',\n 'professions': 'Professions',\n 'general': 'General',\n 'found_in_dictionary': 'Found in local dictionary',\n 'no_reverse_translation': 'No translation found',\n 'reverse_translation_error': 'Translation error',\n 'reverse_translation_success': 'Translation found',\n 'Type translation to find Chinese': 'Type translation to find Chinese',\n 'srs_quiz': 'SRS Quiz',\n 'character_first': 'Character',\n 'translation_first': 'Translation',\n 'type_translation': 'Type translation',\n 'type_character': 'Type character',\n 'correct': 'Correct!',\n 'incorrect': 'Incorrect',\n 'clear_cache': 'Clear Cache',\n 'cache_cleared': 'Exercise cache cleared successfully',\n 'cache_clear_error': 'Error clearing cache',\n 'testing_connection': 'Testing connection...',\n 'connection_successful': 'Connection successful',\n 'connection_failed': 'Connection failed',\n 'connection_error': 'Connection error',\n 'server_modules': 'Server modules',\n 'translator': 'Translator',\n 'validator': 'Validator',\n 'available_models': 'Available models',\n 'debug_mode': 'Debug Mode',\n 'debug_mode_desc': 'Hide answer blocks and validation data for exercises',\n },\n 'ru': {\n 'app_title': 'Карточки',\n 'welcome_message': 'Добро пожаловать в приложение Карточки',\n 'create_new_pack': 'Создать новый набор',\n 'enter_pack_name': 'Введите название набора',\n 'enter_characters': 'Введите символы (по одному в строке)',\n 'cancel': 'Отмена',\n 'create': 'Создать',\n 'cards_to_review': 'Карточка для повторения',\n 'no_cards_in_pack': 'В этом наборе нет карточек',\n 'again_button': 'Снова',\n 'good_button': 'Хорошо',\n 'new_pack': 'Новый набор',\n 'next_card': 'Следующая карточка',\n 'settings': 'Настройки',\n 'theme': 'Тема',\n 'language': 'Язык',\n 'light_mode': 'Светлая тема',\n 'dark_mode': 'Тёмная тема',\n 'system_mode': 'Системная тема',\n 'english': 'Английский',\n 'russian': 'Русский',\n 'fill_blanks': 'Заполните пропуски',\n 'no_cards_available': 'Нет доступных карточек',\n 'correct_answer': 'Правильный ответ',\n 'check': 'Проверить',\n 'next': 'Далее',\n 'flashcards': 'Карточки',\n 'edit_cards': 'Редактировать карточки',\n 'memory_game': 'Игра на память',\n 'victory': 'Победа!',\n 'found_all_pairs': 'Вы нашли все пары!',\n 'play_again': 'Играть снова',\n 'find_matching_pairs': 'Найдите соответствующие пары',\n 'edit_flashcard': 'Редактировать карточку',\n 'hanzi': 'Символ',\n 'pinyin': 'Пиньинь',\n 'translation': 'Перевод',\n 'save': 'Сохранить',\n 'suggested_translation': 'Предлагаемый перевод:',\n 'translation_error': 'Ошибка перевода',\n 'required_fields_error': 'Пожалуйста, заполните все обязательные поля',\n 'exercises': 'Упражнения',\n 'translation_service': 'Сервис перевода',\n 'exercise_service': 'Сервис генерации упражнений',\n 'server_settings': 'Настройки сервера',\n 'bkrs_parser': 'Парсинг БКРС',\n 'bkrs_parser_desc': 'Получать переводы с сайта словаря БКРС',\n 'rest_api_bert': 'REST API (Argos+BERT)',\n 'rest_api_bert_desc': 'Использовать локальный сервер на базе BERT для переводов',\n 'bert_chinese': 'BERT Chinese WWM',\n 'bert_chinese_desc': 'Использовать локальную модель BERT для создания упражнений',\n 'deepseek': 'DeepSeek',\n 'deepseek_desc': 'Использовать API DeepSeek для создания упражнений',\n 'helsinki_translation': 'Helsinki-NLP',\n 'helsinki_translation_desc': 'Использовать серверный перевод с моделями Helsinki-NLP',\n 'gemma3_bert_wwm': 'Gemma3-IT-QAT + BERT-WWM',\n 'gemma3_bert_wwm_desc': 'Использовать серверную генерацию с последующей валидацией',\n 'offline_mode': 'Автономный режим',\n 'offline_mode_desc': 'Использовать только локальные ресурсы, без подключения к серверу',\n 'server_address': 'Адрес сервера',\n 'test_connection': 'Проверить соединение',\n 'checking_server': 'Проверка подключения к серверу...',\n 'server_connected': 'Сервер успешно подключен',\n 'server_error': 'Ошибка подключения к серверу',\n 'api_keys': 'API ключи',\n 'deepseek_api_key': 'DeepSeek API ключ',\n 'deepseek_api_key_desc': 'Необходим для генерации упражнений через DeepSeek API',\n 'exercise_complexity': 'Сложность упражнений',\n 'simple_complexity': 'Простой',\n 'simple_complexity_desc': 'Более лёгкие упражнения с меньшим количеством вариантов',\n 'normal_complexity': 'Обычный',\n 'normal_complexity_desc': 'Сбалансированная сложность для регулярных тренировок',\n 'complex_complexity': 'Сложный',\n 'complex_complexity_desc': 'Более сложные упражнения с дополнительными вариантами',\n 'tech': 'Технические',\n 'food': 'Еда',\n 'everyday': 'Повседневные',\n 'professions': 'Профессии',\n 'general': 'Общие',\n 'found_in_dictionary': 'Найдено в локальном словаре',\n 'no_reverse_translation': 'Перевод не найден',\n 'reverse_translation_error': 'Ошибка перевода',\n 'reverse_translation_success': 'Перевод найден',\n 'Type translation to find Chinese': 'Введите перевод, чтобы найти китайский',\n 'srs_quiz': 'SRS-тренировка',\n 'character_first': 'Иероглиф',\n 'translation_first': 'Перевод',\n 'type_translation': 'Введите перевод',\n 'type_character': 'Введите иероглиф',\n 'correct': 'Правильно!',\n 'incorrect': 'Неправильно',\n 'clear_cache': 'Очистить кэш',\n 'cache_cleared': 'Кэш упражнений успешно очищен',\n 'cache_clear_error': 'Ошибка при очистке кэша',\n 'testing_connection': 'Проверка соединения...',\n 'connection_successful': 'Соединение установлено',\n 'connection_failed': 'Ошибка соединения',\n 'connection_error': 'Ошибка подключения',\n 'server_modules': 'Модули сервера',\n 'translator': 'Переводчик',\n 'validator': 'Валидатор',\n 'available_models': 'Доступные модели',\n 'debug_mode': 'Режим отладки',\n 'debug_mode_desc': 'Скрывать блоки ответов и данные проверки для упражнений',\n },\n };\n\n String translate(String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n\n static String staticTranslate(AppLanguage language, String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n}\n\n// Extension method for String to easily use translations\nextension StringExtension on String {\n String tr(BuildContext context) {\n return AppLocalizations.of(context).translate(this);\n }\n} "}, "e278ed0bc4bf8c916147b39d835d943c7674eb4d": {"t": 1785757896.1917152, "n": 10389, "h": "bffc293d00686822", "c": "import 'package:flutter/material.dart';\nimport '../models/settings_model.dart';\n\nclass AppLocalizations {\n final AppLanguage language;\n\n AppLocalizations(this.language);\n\n static AppLocalizations of(BuildContext context) {\n return Localizations.of<AppLocalizations>(context, AppLocalizations) ??\n AppLocalizations(AppLanguage.english);\n }\n\n static Map<String, Map<String, String>> _localizedValues = {\n 'en': {\n 'app_title': 'Flashcards',\n 'welcome_message': 'Welcome to Flashcards App',\n 'create_new_pack': 'Create New Pack',\n 'enter_pack_name': 'Enter pack name',\n 'enter_characters': 'Enter characters (one per line)',\n 'cancel': 'Cancel',\n 'create': 'Create',\n 'cards_to_review': 'Card to review',\n 'no_cards_in_pack': 'No cards in this pack',\n 'again_button': 'Again',\n 'good_button': 'Good',\n 'new_pack': 'New Pack',\n 'next_card': 'Next Card',\n 'settings': 'Settings',\n 'theme': 'Theme',\n 'language': 'Language',\n 'light_mode': 'Light Mode',\n 'dark_mode': 'Dark Mode',\n 'system_mode': 'System Mode',\n 'english': 'English',\n 'russian': 'Russian',\n 'fill_blanks': 'Fill in the Blanks',\n 'no_cards_available': 'No cards available',\n 'correct_answer': 'Correct answer',\n 'check': 'Check',\n 'next': 'Next',\n 'flashcards': 'Flashcards',\n 'edit_cards': 'Edit Cards',\n 'memory_game': 'Memory Game',\n 'victory': 'Victory!',\n 'found_all_pairs': 'You found all pairs!',\n 'play_again': 'Play Again',\n 'find_matching_pairs': 'Find matching pairs',\n 'edit_flashcard': 'Edit Flashcard',\n 'hanzi': 'Character',\n 'pinyin': 'Pinyin',\n 'translation': 'Translation',\n 'save': 'Save',\n 'suggested_translation': 'Suggested translation:',\n 'translation_error': 'Translation error',\n 'required_fields_error': 'Please fill in all required fields',\n 'exercises': 'Exercises',\n 'translation_service': 'Translation Service',\n 'exercise_service': 'Exercise Generation Service',\n 'server_settings': 'Server Settings',\n 'bkrs_parser': 'BKRS Parser',\n 'bkrs_parser_desc': 'Parse translations from BKRS dictionary website',\n 'rest_api_bert': 'REST API (Argos+BERT)',\n 'rest_api_bert_desc': 'Use local BERT-based server for translations',\n 'bert_chinese': 'BERT Chinese WWM',\n 'bert_chinese_desc': 'Use local BERT model for generating exercises',\n 'deepseek': 'DeepSeek',\n 'deepseek_desc': 'Use DeepSeek API for generating exercises',\n 'helsinki_translation': 'Helsinki-NLP',\n 'helsinki_translation_desc': 'Use server translation with Helsinki-NLP models',\n 'gemma3_bert_wwm': 'Gemma3-IT-QAT + BERT-WWM',\n 'gemma3_bert_wwm_desc': 'Use server generation with subsequent validation',\n 'offline_mode': 'Offline Mode',\n 'offline_mode_desc': 'Use local resources only, no server connection',\n 'server_address': 'Server Address',\n 'test_connection': 'Test Connection',\n 'checking_server': 'Checking server connection...',\n 'server_connected': 'Server connected successfully',\n 'server_error': 'Server connection error',\n 'api_keys': 'API Keys',\n 'deepseek_api_key': 'DeepSeek API Key',\n 'deepseek_api_key_desc': 'Required for DeepSeek API exercises generation',\n 'exercise_complexity': 'Exercise Complexity',\n 'simple_complexity': 'Simple',\n 'simple_complexity_desc': 'Easier exercises with fewer options',\n 'normal_complexity': 'Normal',\n 'normal_complexity_desc': 'Balanced difficulty for regular practice',\n 'complex_complexity': 'Complex',\n 'complex_complexity_desc': 'More challenging exercises with additional options',\n 'tech': 'Technical',\n 'food': 'Food',\n 'everyday': 'Everyday',\n 'professions': 'Professions',\n 'general': 'General',\n 'found_in_dictionary': 'Found in local dictionary',\n 'no_reverse_translation': 'No translation found',\n 'reverse_translation_error': 'Translation error',\n 'reverse_translation_success': 'Translation found',\n 'Type translation to find Chinese': 'Type translation to find Chinese',\n 'srs_quiz': 'SRS Quiz',\n 'character_first': 'Character',\n 'translation_first': 'Translation',\n 'type_translation': 'Type translation',\n 'type_character': 'Type character',\n 'correct': 'Correct!',\n 'incorrect': 'Incorrect',\n 'clear_cache': 'Clear Cache',\n 'cache_cleared': 'Exercise cache cleared successfully',\n 'cache_clear_error': 'Error clearing cache',\n 'testing_connection': 'Testing connection...',\n 'connection_successful': 'Connection successful',\n 'connection_failed': 'Connection failed',\n 'connection_error': 'Connection error',\n 'server_modules': 'Server modules',\n 'translator': 'Translator',\n 'validator': 'Validator',\n 'available_models': 'Available models',\n },\n 'ru': {\n 'app_title': 'Карточки',\n 'welcome_message': 'Добро пожаловать в приложение Карточки',\n 'create_new_pack': 'Создать новый набор',\n 'enter_pack_name': 'Введите название набора',\n 'enter_characters': 'Введите символы (по одному в строке)',\n 'cancel': 'Отмена',\n 'create': 'Создать',\n 'cards_to_review': 'Карточка для повторения',\n 'no_cards_in_pack': 'В этом наборе нет карточек',\n 'again_button': 'Снова',\n 'good_button': 'Хорошо',\n 'new_pack': 'Новый набор',\n 'next_card': 'Следующая карточка',\n 'settings': 'Настройки',\n 'theme': 'Тема',\n 'language': 'Язык',\n 'light_mode': 'Светлая тема',\n 'dark_mode': 'Тёмная тема',\n 'system_mode': 'Системная тема',\n 'english': 'Английский',\n 'russian': 'Русский',\n 'fill_blanks': 'Заполните пропуски',\n 'no_cards_available': 'Нет доступных карточек',\n 'correct_answer': 'Правильный ответ',\n 'check': 'Проверить',\n 'next': 'Далее',\n 'flashcards': 'Карточки',\n 'edit_cards': 'Редактировать карточки',\n 'memory_game': 'Игра на память',\n 'victory': 'Победа!',\n 'found_all_pairs': 'Вы нашли все пары!',\n 'play_again': 'Играть снова',\n 'find_matching_pairs': 'Найдите соответствующие пары',\n 'edit_flashcard': 'Редактировать карточку',\n 'hanzi': 'Символ',\n 'pinyin': 'Пиньинь',\n 'translation': 'Перевод',\n 'save': 'Сохранить',\n 'suggested_translation': 'Предлагаемый перевод:',\n 'translation_error': 'Ошибка перевода',\n 'required_fields_error': 'Пожалуйста, заполните все обязательные поля',\n 'exercises': 'Упражнения',\n 'translation_service': 'Сервис перевода',\n 'exercise_service': 'Сервис генерации упражнений',\n 'server_settings': 'Настройки сервера',\n 'bkrs_parser': 'Парсинг БКРС',\n 'bkrs_parser_desc': 'Получать переводы с сайта словаря БКРС',\n 'rest_api_bert': 'REST API (Argos+BERT)',\n 'rest_api_bert_desc': 'Использовать локальный сервер на базе BERT для переводов',\n 'bert_chinese': 'BERT Chinese WWM',\n 'bert_chinese_desc': 'Использовать локальную модель BERT для создания упражнений',\n 'deepseek': 'DeepSeek',\n 'deepseek_desc': 'Использовать API DeepSeek для создания упражнений',\n 'helsinki_translation': 'Helsinki-NLP',\n 'helsinki_translation_desc': 'Использовать серверный перевод с моделями Helsinki-NLP',\n 'gemma3_bert_wwm': 'Gemma3-IT-QAT + BERT-WWM',\n 'gemma3_bert_wwm_desc': 'Использовать серверную генерацию с последующей валидацией',\n 'offline_mode': 'Автономный режим',\n 'offline_mode_desc': 'Использовать только локальные ресурсы, без подключения к серверу',\n 'server_address': 'Адрес сервера',\n 'test_connection': 'Проверить соединение',\n 'checking_server': 'Проверка подключения к серверу...',\n 'server_connected': 'Сервер успешно подключен',\n 'server_error': 'Ошибка подключения к серверу',\n 'api_keys': 'API ключи',\n 'deepseek_api_key': 'DeepSeek API ключ',\n 'deepseek_api_key_desc': 'Необходим для генерации упражнений через DeepSeek API',\n 'exercise_complexity': 'Сложность упражнений',\n 'simple_complexity': 'Простой',\n 'simple_complexity_desc': 'Более лёгкие упражнения с меньшим количеством вариантов',\n 'normal_complexity': 'Обычный',\n 'normal_complexity_desc': 'Сбалансированная сложность для регулярных тренировок',\n 'complex_complexity': 'Сложный',\n 'complex_complexity_desc': 'Более сложные упражнения с дополнительными вариантами',\n 'tech': 'Технические',\n 'food': 'Еда',\n 'everyday': 'Повседневные',\n 'professions': 'Профессии',\n 'general': 'Общие',\n 'found_in_dictionary': 'Найдено в локальном словаре',\n 'no_reverse_translation': 'Перевод не найден',\n 'reverse_translation_error': 'Ошибка перевода',\n 'reverse_translation_success': 'Перевод найден',\n 'Type translation to find Chinese': 'Введите перевод, чтобы найти китайский',\n 'srs_quiz': 'SRS-тренировка',\n 'character_first': 'Иероглиф',\n 'translation_first': 'Перевод',\n 'type_translation': 'Введите перевод',\n 'type_character': 'Введите иероглиф',\n 'correct': 'Правильно!',\n 'incorrect': 'Неправильно',\n 'clear_cache': 'Очистить кэш',\n 'cache_cleared': 'Кэш упражнений успешно очищен',\n 'cache_clear_error': 'Ошибка при очистке кэша',\n 'testing_connection': 'Проверка соединения...',\n 'connection_successful': 'Соединение установлено',\n 'connection_failed': 'Ошибка соединения',\n 'connection_error': 'Ошибка подключения',\n 'server_modules': 'Модули сервера',\n 'translator': 'Переводчик',\n 'validator': 'Валидатор',\n 'available_models': 'Доступные модели',\n },\n };\n\n String translate(String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n\n static String staticTranslate(AppLanguage language, String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n}\n\n// Extension method for String to easily use translations\nextension StringExtension on String {\n String tr(BuildContext context) {\n return AppLocalizations.of(context).translate(this);\n }\n} "}, "53f3c6df36dbf70e44551799a15c65453811bbb0": {"t": 1785757898.025141, "n": 4244, "h": "b5d35b6da503058e", "c": "import 'package:flutter/material.dart';\nimport '../models/settings_model.dart';\n\nclass AppLocalizations {\n final AppLanguage language;\n\n AppLocalizations(this.language);\n\n static AppLocalizations of(BuildContext context) {\n return Localizations.of<AppLocalizations>(context, AppLocalizations) ??\n AppLocalizations(AppLanguage.english);\n }\n\n static Map<String, Map<String, String>> _localizedValues = {\n 'en': {\n 'app_title': 'Flashcards',\n 'welcome_message': 'Welcome to Flashcards App',\n 'create_new_pack': 'Create New Pack',\n 'enter_pack_name': 'Enter pack name',\n 'enter_characters': 'Enter characters (one per line)',\n 'cancel': 'Cancel',\n 'create': 'Create',\n 'cards_to_review': 'Card to review',\n 'no_cards_in_pack': 'No cards in this pack',\n 'again_button': 'Again',\n 'good_button': 'Good',\n 'new_pack': 'New Pack',\n 'next_card': 'Next Card',\n 'settings': 'Settings',\n 'theme': 'Theme',\n 'language': 'Language',\n 'light_mode': 'Light Mode',\n 'dark_mode': 'Dark Mode',\n 'system_mode': 'System Mode',\n 'english': 'English',\n 'russian': 'Russian',\n 'fill_blanks': 'Fill in the Blanks',\n 'no_cards_available': 'No cards available',\n 'correct_answer': 'Correct answer',\n 'check': 'Check',\n 'next': 'Next',\n 'flashcards': 'Flashcards',\n 'edit_cards': 'Edit Cards',\n 'memory_game': 'Memory Game',\n 'victory': 'Victory!',\n 'found_all_pairs': 'You found all pairs!',\n 'play_again': 'Play Again',\n 'find_matching_pairs': 'Find matching pairs',\n 'edit_flashcard': 'Edit Flashcard',\n 'hanzi': 'Character',\n 'pinyin': 'Pinyin',\n 'translation': 'Translation',\n 'save': 'Save',\n 'suggested_translation': 'Suggested translation:',\n 'translation_error': 'Translation error',\n 'required_fields_error': 'Please fill in all required fields',\n 'exercises': 'Exercises',\n },\n 'ru': {\n 'app_title': 'Карточки',\n 'welcome_message': 'Добро пожаловать в приложение Карточки',\n 'create_new_pack': 'Создать новый набор',\n 'enter_pack_name': 'Введите название набора',\n 'enter_characters': 'Введите символы (по одному в строке)',\n 'cancel': 'Отмена',\n 'create': 'Создать',\n 'cards_to_review': 'Карточка для повторения',\n 'no_cards_in_pack': 'В этом наборе нет карточек',\n 'again_button': 'Снова',\n 'good_button': 'Хорошо',\n 'new_pack': 'Новый набор',\n 'next_card': 'Следующая карточка',\n 'settings': 'Настройки',\n 'theme': 'Тема',\n 'language': 'Язык',\n 'light_mode': 'Светлая тема',\n 'dark_mode': 'Тёмная тема',\n 'system_mode': 'Системная тема',\n 'english': 'Английский',\n 'russian': 'Русский',\n 'fill_blanks': 'Заполните пропуски',\n 'no_cards_available': 'Нет доступных карточек',\n 'correct_answer': 'Правильный ответ',\n 'check': 'Проверить',\n 'next': 'Далее',\n 'flashcards': 'Карточки',\n 'edit_cards': 'Редактировать карточки',\n 'memory_game': 'Игра на память',\n 'victory': 'Победа!',\n 'found_all_pairs': 'Вы нашли все пары!',\n 'play_again': 'Играть снова',\n 'find_matching_pairs': 'Найдите соответствующие пары',\n 'edit_flashcard': 'Редактировать карточку',\n 'hanzi': 'Символ',\n 'pinyin': 'Пиньинь',\n 'translation': 'Перевод',\n 'save': 'Сохранить',\n 'suggested_translation': 'Предложенный перевод:',\n 'translation_error': 'Ошибка перевода',\n 'required_fields_error': 'Пожалуйста, заполните все обязательные поля',\n 'exercises': 'Упражнения',\n },\n };\n\n String translate(String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n\n static String staticTranslate(AppLanguage language, String key) {\n final languageCode = language == AppLanguage.russian ? 'ru' : 'en';\n return _localizedValues[languageCode]?[key] ?? key;\n }\n}\n\n// Extension method for String to easily use translations\nextension StringExtension on String {\n String tr(BuildContext context) {\n return AppLocalizations.of(context).translate(this);\n }\n} "}}}}