From d671df30a3db9ed11898bb5e01d1bddcae5ebb8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Mon, 11 Nov 2024 17:39:41 +0000 Subject: [PATCH 1/3] Translated using Weblate (Russian) Currently translated at 82.9% (473 of 570 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/ --- vue/src/locales/ru.json | 112 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/vue/src/locales/ru.json b/vue/src/locales/ru.json index ffc2a2ae9e..c5a5b20011 100644 --- a/vue/src/locales/ru.json +++ b/vue/src/locales/ru.json @@ -363,5 +363,115 @@ "recipe_property_info": "Вы также можете добавить свойства к продуктам, чтобы автоматически рассчитывать их на основе вашего рецепта!", "open_data_help_text": "Проект Tandoor Open Data предоставляет предоставленные сообществом данные для Tandoor. Это поле заполняется автоматически при импорте и допускает обновления в будущем.", "Open_Data_Import": "Открыть импорт данных", - "property_type_fdc_hint": "Только типы свойств с FDC ID могут автоматически получать данные из базы данных FDC" + "property_type_fdc_hint": "Только типы свойств с FDC ID могут автоматически получать данные из базы данных FDC", + "Pin": "Закрепить", + "Import Recipe": "Импортировать рецепт", + "Create Recipe": "Создать рецепт", + "Manage_Emails": "Управление электронной почтой", + "Change_Password": "Изменить пароль", + "API": "API", + "Disable": "Отключить", + "Enable": "Включить", + "Disabled": "Отключено", + "Foods": "Продукты", + "Nav_Color": "Цвет навигации", + "Ingredient Overview": "Обзор ингредиентов", + "Export_Not_Yet_Supported": "Экспорт пока не поддерживается", + "Last_name": "Фамилия", + "Default_Unit": "Единица измерения по умолчанию", + "Decimals": "Десятки", + "Hours": "Часы", + "Day": "День", + "Days": "Дни", + "Hour": "Час", + "download_csv": "Скачать CSV", + "Cosmetic": "Косметические", + "Account": "Аккаунт", + "Import_Supported": "Импорт поддерживается", + "g": "грамм [г] (метрическая единица, вес)", + "sql_debug": "Отладка SQL", + "Import_Result_Info": "{imported} из {total} рецептов были импортированы", + "total": "всего", + "Copy Token": "Копировать токен", + "SupermarketName": "Название супермаркета", + "Plural": "Множественное", + "plural_short": "множественное", + "in_shopping": "В списке покупок", + "App": "Приложение", + "Message": "Сообщение", + "Export_Supported": "Экспорт поддерживается", + "Import_Not_Yet_Supported": "Импорт пока не поддерживается", + "filter_to_supermarket_desc": "По умолчанию список покупок фильтруется таким образом, чтобы в него включались только категории для выбранного супермаркета.", + "Toggle": "Переключить", + "OrderInformation": "Объекты упорядочены от меньшего к большему.", + "Website": "Веб-сайт", + "Welcome": "Добро пожаловать", + "SuccessClipboard": "Список покупок скопирован в буфер обмена", + "First_name": "Имя", + "Create Food": "Создать продукт", + "UnpinnedConfirmation": "{recipe} откреплен.", + "show_ingredient_overview": "Отобразить список всех ингредиентов в начале рецепта.", + "Username": "Имя пользователя", + "Undo": "Отменить", + "NoMoreUndo": "Нет изменений, которые можно было бы отменить.", + "Delete_All": "Удалить всё", + "Input": "Ввод", + "Copy Link": "Копировать ссылку", + "Shopping_input_placeholder": "Например: Картофель/100 Картофелин/100 г Картофеля", + "created_by": "Создано", + "Use_Fractions": "Использовать дроби", + "Language": "Язык", + "Theme": "Тема", + "ShowRecentlyCompleted": "Показать недавно завершенные элементы", + "ShoppingBackgroundSyncWarning": "Плохая сеть, ожидание синхронизации...", + "Seconds": "Секунды", + "Users": "Пользователи", + "Invites": "Приглашения", + "CategoryName": "Название категории", + "CategoryInstruction": "Перетаскивайте категории, чтобы изменить порядок отображения категорий в списке покупок.", + "shopping_recent_days": "Недавние дни", + "download_pdf": "Скачать PDF", + "csv_delim_help": "Разделитель, используемый для экспорта в формате CSV.", + "csv_delim_label": "Разделитель CSV", + "copy_to_clipboard": "Копировать в буфер обмена", + "copy_markdown_table": "Копировать как таблицу Markdown", + "Unpin": "Открепить", + "PinnedConfirmation": "{recipe} закреплен.", + "QuickEntry": "Быстрый вход", + "today_recipes": "Сегодняшние рецепты", + "Created": "Создано", + "Updated": "Обновлено", + "Error": "Ошибка", + "filter": "Фильтр", + "Logo": "Логотип", + "Show_Logo": "Показать логотип", + "Comments_setting": "Показать комментарии", + "Click_To_Edit": "Нажмите, чтобы изменить", + "search_no_recipes": "Не удалось найти ни одного рецепта!", + "search_import_help_text": "Импортировать рецепт с внешнего веб-сайта или приложения.", + "search_create_help_text": "Создать новый рецепт непосредственно в Tandoor.", + "New_Supermarket_Category": "Создать новую категорию супермаркетов", + "Datatype": "Тип данных", + "kg": "килограмм [кг] (метрическая единица, вес)", + "ounce": "унция [oz] (вес)", + "pound": "фунт (вес)", + "Original_Text": "Исходный текст", + "Properties": "Свойства", + "Property": "Свойство", + "StartDate": "Дата начала", + "EndDate": "Дата окончания", + "Second": "Секунда", + "DefaultPage": "Начальная страница", + "ml": "миллилитр [мл] (метрическая единица, объём)", + "l": "литр [л] (метрическая единица, объем)", + "Choose_Category": "Выбрать категорию", + "Back": "Назад", + "Use_Plural_Unit_Always": "Всегда используйте форму множественного числа для обозначения единицы измерения", + "CustomImageHelp": "Загрузите изображение, которое будет отображаться в обзоре пространства.", + "CustomNavLogoHelp": "Загрузите изображение, которое будет использоваться в качестве логотипа панели навигации.", + "CustomLogos": "Пользовательские логотипы", + "plan_share_desc": "Выбранным пользователям будет автоматически предоставлен доступ к новым записям в Плане Питания.", + "CustomTheme": "Пользовательская тема", + "CustomThemeHelp": "Измените стили выбранной темы, загрузив собственный CSS-файл.", + "Learn_More": "Узнать больше" } From 5fea2131cd8ccbebd3fc3cdfa1bba997a5113ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Mon, 11 Nov 2024 17:59:55 +0000 Subject: [PATCH 2/3] Translated using Weblate (Russian) Currently translated at 5.5% (27 of 488 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ru/ --- cookbook/locale/ru/LC_MESSAGES/django.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cookbook/locale/ru/LC_MESSAGES/django.po b/cookbook/locale/ru/LC_MESSAGES/django.po index a34bbcce52..fe194cde29 100644 --- a/cookbook/locale/ru/LC_MESSAGES/django.po +++ b/cookbook/locale/ru/LC_MESSAGES/django.po @@ -8,17 +8,17 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-01 15:04+0200\n" -"PO-Revision-Date: 2023-05-01 07:55+0000\n" -"Last-Translator: axeron2036 \n" +"PO-Revision-Date: 2024-11-12 17:58+0000\n" +"Last-Translator: Владислав \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.15\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.6.2\n" #: .\cookbook\forms.py:45 msgid "" @@ -454,17 +454,17 @@ msgstr "" #: .\cookbook\models.py:455 .\cookbook\templates\base.html:114 #: .\cookbook\templates\meal_plan.html:7 msgid "Meal-Plan" -msgstr "" +msgstr "План питания" #: .\cookbook\models.py:456 .\cookbook\templates\base.html:122 #: .\cookbook\views\views.py:459 msgid "Books" -msgstr "Книги" +msgstr "Книги рецептов" #: .\cookbook\models.py:457 .\cookbook\templates\base.html:118 #: .\cookbook\views\views.py:460 msgid "Shopping" -msgstr "" +msgstr "Покупки" #: .\cookbook\models.py:752 msgid " is part of a recipe step and cannot be deleted" @@ -929,7 +929,7 @@ msgstr "" #: .\cookbook\templates\base.html:110 .\cookbook\templates\index.html:87 msgid "Recipes" -msgstr "" +msgstr "Рецепты" #: .\cookbook\templates\base.html:161 .\cookbook\views\lists.py:120 msgid "Foods" From c107f2f497cf6aedeb7f8971664822a4cb4124fb Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Thu, 14 Nov 2024 16:06:58 +0100 Subject: [PATCH 3/3] fixed system view --- cookbook/views/views.py | 65 +++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 05c3a0d4b3..16da7e261e 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -347,41 +347,42 @@ def system(request): migration_info[key]['total'] = len(migration_info[key]['unapplied_migrations']) + len(migration_info[key]['applied_migrations']) # API endpoint logging - r = redis.StrictRedis( - host=settings.REDIS_HOST, - port=settings.REDIS_PORT, - password='', - username='', - db=settings.REDIS_DATABASES['STATS'], - ) - - api_stats = [['Endpoint', 'Total']] - api_space_stats = [['User', 'Total']] - total_stats = ['All', int(r.get('api:request-count'))] - - for i in range(0, 6): - d = (date.today() - timedelta(days=i)).isoformat() - api_stats[0].append(d) - api_space_stats[0].append(d) - total_stats.append(int(r.get(f'api:request-count:{d}')) if r.get(f'api:request-count:{d}') else 0) - - api_stats.append(total_stats) - - for x in r.zrange('api:endpoint-request-count', 0, -1, withscores=True, desc=True): - endpoint = x[0].decode('utf-8') - endpoint_stats = [endpoint, x[1]] - for i in range(0, 6): - d = (date.today() - timedelta(days=i)).isoformat() - endpoint_stats.append(r.zscore(f'api:endpoint-request-count:{d}', endpoint)) - api_stats.append(endpoint_stats) + if settings.REDIS_HOST: + r = redis.StrictRedis( + host=settings.REDIS_HOST, + port=settings.REDIS_PORT, + password='', + username='', + db=settings.REDIS_DATABASES['STATS'], + ) + + api_stats = [['Endpoint', 'Total']] + api_space_stats = [['User', 'Total']] + total_stats = ['All', int(r.get('api:request-count'))] - for x in r.zrange('api:space-request-count', 0, 20, withscores=True, desc=True): - s = x[0].decode('utf-8') - space_stats = [Space.objects.get(pk=s).name, x[1]] for i in range(0, 6): d = (date.today() - timedelta(days=i)).isoformat() - space_stats.append(r.zscore(f'api:space-request-count:{d}', s)) - api_space_stats.append(space_stats) + api_stats[0].append(d) + api_space_stats[0].append(d) + total_stats.append(int(r.get(f'api:request-count:{d}')) if r.get(f'api:request-count:{d}') else 0) + + api_stats.append(total_stats) + + for x in r.zrange('api:endpoint-request-count', 0, -1, withscores=True, desc=True): + endpoint = x[0].decode('utf-8') + endpoint_stats = [endpoint, x[1]] + for i in range(0, 6): + d = (date.today() - timedelta(days=i)).isoformat() + endpoint_stats.append(r.zscore(f'api:endpoint-request-count:{d}', endpoint)) + api_stats.append(endpoint_stats) + + for x in r.zrange('api:space-request-count', 0, 20, withscores=True, desc=True): + s = x[0].decode('utf-8') + space_stats = [Space.objects.get(pk=s).name, x[1]] + for i in range(0, 6): + d = (date.today() - timedelta(days=i)).isoformat() + space_stats.append(r.zscore(f'api:space-request-count:{d}', s)) + api_space_stats.append(space_stats) return render( request, 'system.html', {