diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a844103f..fc3c578a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Continous Integration +name: Continuous Integration on: [push] diff --git a/README.md b/README.md index cd6442de..7af8d879 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@

The recipe manager that allows you to manage your ever growing collection of digital recipes.

- + diff --git a/SECURITY.md b/SECURITY.md index f163a7eb..e5558348 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,4 +7,4 @@ Since this software is still considered beta/WIP support is always only given fo ## Reporting a Vulnerability Please open a normal public issue if you have any security related concerns. If you feel like the issue should not be discussed in -public just open a generic issue and we will discuss further communitcation there (since GitHub does not allow everyone to create a security advisory :/). +public just open a generic issue and we will discuss further communication there (since GitHub does not allow everyone to create a security advisory :/). diff --git a/cookbook/forms.py b/cookbook/forms.py index 1e3ef688..60237ac7 100644 --- a/cookbook/forms.py +++ b/cookbook/forms.py @@ -442,7 +442,7 @@ class SearchPreferenceForm(forms.ModelForm): help_texts = { 'search': _( - 'Select type method of search. Click here for full desciption of choices.'), + 'Select type method of search. Click here for full description of choices.'), 'lookup': _('Use fuzzy matching on units, keywords and ingredients when editing and importing recipes.'), 'unaccent': _( 'Fields to search ignoring accents. Selecting this option can improve or degrade search quality depending on language'), @@ -461,7 +461,7 @@ class SearchPreferenceForm(forms.ModelForm): 'lookup': _('Fuzzy Lookups'), 'unaccent': _('Ignore Accent'), 'icontains': _("Partial Match"), - 'istartswith': _("Starts Wtih"), + 'istartswith': _("Starts With"), 'trigram': _("Fuzzy Search"), 'fulltext': _("Full Text") } diff --git a/cookbook/helper/permission_helper.py b/cookbook/helper/permission_helper.py index c577b56c..a826fb3f 100644 --- a/cookbook/helper/permission_helper.py +++ b/cookbook/helper/permission_helper.py @@ -34,7 +34,7 @@ def has_group_permission(user, groups): """ Tests if a given user is member of a certain group (or any higher group) Superusers always bypass permission checks. - Unauthenticated users cant be member of any group thus always return false. + Unauthenticated users can't be member of any group thus always return false. :param user: django auth user object :param groups: list or tuple of groups the user should be checked for :return: True if user is in allowed groups, false otherwise diff --git a/cookbook/helper/shopping_helper.py b/cookbook/helper/shopping_helper.py index c1a3dc1a..98bfe03f 100644 --- a/cookbook/helper/shopping_helper.py +++ b/cookbook/helper/shopping_helper.py @@ -126,7 +126,7 @@ def list_from_recipe(list_recipe=None, recipe=None, mealplan=None, servings=None add_ingredients = set(add_ingredients) - set(existing_list.values_list('ingredient__id', flat=True)) add_ingredients = Ingredient.objects.filter(id__in=add_ingredients, space=space) - # if servings have changed, update the ShoppingListRecipe and existing Entrys + # if servings have changed, update the ShoppingListRecipe and existing Entries if servings <= 0: servings = 1 @@ -138,7 +138,7 @@ def list_from_recipe(list_recipe=None, recipe=None, mealplan=None, servings=None sle.amount = sle.ingredient.amount * Decimal(servings_factor) sle.save() - # add any missing Entrys + # add any missing Entries for i in [x for x in add_ingredients if x.food]: ShoppingListEntry.objects.create( diff --git a/cookbook/integration/recettetek.py b/cookbook/integration/recettetek.py index be1c5ae0..7ae4115b 100644 --- a/cookbook/integration/recettetek.py +++ b/cookbook/integration/recettetek.py @@ -27,10 +27,10 @@ class RecetteTek(Integration): def get_recipe_from_file(self, file): - # Create initial recipe with just a title and a decription + # Create initial recipe with just a title and a description recipe = Recipe.objects.create(name=file['title'], created_by=self.request.user, internal=True, space=self.request.space, ) - # set the description as an empty string for later use for the source URL, incase there is no description text. + # set the description as an empty string for later use for the source URL, in case there is no description text. recipe.description = '' try: diff --git a/cookbook/locale/de/LC_MESSAGES/django.po b/cookbook/locale/de/LC_MESSAGES/django.po index 297971a6..c78fc3f2 100644 --- a/cookbook/locale/de/LC_MESSAGES/django.po +++ b/cookbook/locale/de/LC_MESSAGES/django.po @@ -15,10 +15,10 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-18 14:52+0100\n" -"PO-Revision-Date: 2021-11-12 20:06+0000\n" -"Last-Translator: A. L. \n" -"Language-Team: German \n" +"PO-Revision-Date: 2022-01-20 22:47+0000\n" +"Last-Translator: Sebastian Weber \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -122,10 +122,8 @@ msgstr "" "sollen." #: .\cookbook\forms.py:80 -#, fuzzy -#| msgid "Try the new shopping list" msgid "Users with whom to share shopping lists." -msgstr "Neue Einkaufsliste ausprobieren" +msgstr "Benutzer, mit denen Einkaufslisten geteilt werden sollen." #: .\cookbook\forms.py:82 msgid "Show recently viewed recipes on search page." diff --git a/cookbook/locale/zh_CN/LC_MESSAGES/django.po b/cookbook/locale/zh_CN/LC_MESSAGES/django.po index 56fd33de..b1a09da1 100644 --- a/cookbook/locale/zh_CN/LC_MESSAGES/django.po +++ b/cookbook/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-18 14:52+0100\n" -"PO-Revision-Date: 2022-01-18 13:43+0000\n" +"PO-Revision-Date: 2022-01-22 03:30+0000\n" "Last-Translator: 糖多 <1365143958@qq.com>\n" "Language-Team: Chinese (Simplified) \n" @@ -26,69 +26,57 @@ msgid "Ingredients" msgstr "材料" #: .\cookbook\forms.py:56 -#, fuzzy -#| msgid "Default" msgid "Default unit" -msgstr "预置" +msgstr "默认单位" #: .\cookbook\forms.py:57 -#, fuzzy -#| msgid "Section" msgid "Use fractions" -msgstr "节" +msgstr "使用分数" #: .\cookbook\forms.py:58 msgid "Use KJ" -msgstr "" +msgstr "使用千焦" #: .\cookbook\forms.py:59 msgid "Theme" -msgstr "" +msgstr "主题" #: .\cookbook\forms.py:60 msgid "Navbar color" -msgstr "" +msgstr "导航栏颜色" #: .\cookbook\forms.py:61 msgid "Sticky navbar" -msgstr "" +msgstr "悬浮导航栏" #: .\cookbook\forms.py:62 -#, fuzzy -#| msgid "Default" msgid "Default page" -msgstr "预置" +msgstr "默认页面" #: .\cookbook\forms.py:63 -#, fuzzy -#| msgid "Recipe" msgid "Show recent recipes" -msgstr "菜谱" +msgstr "显示最近的菜谱" #: .\cookbook\forms.py:64 -#, fuzzy -#| msgid "Search" msgid "Search style" -msgstr "搜索" +msgstr "搜索风格" #: .\cookbook\forms.py:65 msgid "Plan sharing" -msgstr "" +msgstr "计划分享" #: .\cookbook\forms.py:66 -#, fuzzy -#| msgid "Ingredients" msgid "Ingredient decimal places" -msgstr "材料" +msgstr "材料小数位" #: .\cookbook\forms.py:67 msgid "Shopping list auto sync period" -msgstr "" +msgstr "购物清单自动同步周期" #: .\cookbook\forms.py:68 .\cookbook\templates\recipe_view.html:21 #: .\cookbook\templates\space.html:77 .\cookbook\templates\stats.html:47 msgid "Comments" -msgstr "" +msgstr "评论" #: .\cookbook\forms.py:72 msgid "" @@ -109,16 +97,15 @@ msgstr "启用对原料数量的分数支持(例如自动将小数转换为分 #: .\cookbook\forms.py:78 msgid "Display nutritional energy amounts in joules instead of calories" -msgstr "" +msgstr "用焦耳来显示营养能量而不是卡路里" #: .\cookbook\forms.py:79 -#, fuzzy msgid "Users with whom newly created meal plans should be shared by default." -msgstr "默认情况下,新创建的膳食计划/购物清单条目应与之共享的用户。" +msgstr "默认情况下,新创建的膳食计划应与之共享的用户。" #: .\cookbook\forms.py:80 msgid "Users with whom to share shopping lists." -msgstr "" +msgstr "与之共享购物清单的用户。" #: .\cookbook\forms.py:82 msgid "Show recently viewed recipes on search page." @@ -145,15 +132,15 @@ msgstr "" #: .\cookbook\forms.py:89 msgid "Makes the navbar stick to the top of the page." -msgstr "使导航条粘在页面的顶部。" +msgstr "使导航栏悬浮在页面的顶部。" #: .\cookbook\forms.py:90 .\cookbook\forms.py:496 msgid "Automatically add meal plan ingredients to shopping list." -msgstr "" +msgstr "自动将膳食计划原料添加到购物清单中。" #: .\cookbook\forms.py:91 msgid "Exclude ingredients that are on hand." -msgstr "" +msgstr "排除现有材料。" #: .\cookbook\forms.py:108 msgid "" @@ -175,11 +162,11 @@ msgstr "关键词" #: .\cookbook\forms.py:131 msgid "Preparation time in minutes" -msgstr "准备时间(分钟)" +msgstr "准备时间(分钟)" #: .\cookbook\forms.py:132 msgid "Waiting time (cooking/baking) in minutes" -msgstr "等候时间(分钟)" +msgstr "等候(烹饪、烘焙等)时间(分钟)" #: .\cookbook\forms.py:133 .\cookbook\forms.py:267 .\cookbook\forms.py:300 msgid "Path" @@ -191,39 +178,39 @@ msgstr "存储 UID" #: .\cookbook\forms.py:164 msgid "Default" -msgstr "预置" +msgstr "默认" #: .\cookbook\forms.py:175 .\cookbook\templates\url_import.html:97 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." -msgstr "為了防止與現有菜谱同名的重複菜谱被忽略。勾选此框以导入所有内容。" +msgstr "为防止重复,忽略与现有同名的菜谱。选中此框可导入所有内容(危险操作,请先备份)。" #: .\cookbook\forms.py:197 msgid "Add your comment: " -msgstr "发表评论: " +msgstr "发表评论: " #: .\cookbook\forms.py:212 msgid "Leave empty for dropbox and enter app password for nextcloud." -msgstr "dropbox留空和为nextcloud输入应用密码。" +msgstr "Dropbox 留空并输入 Nextcloud 应用密码。" #: .\cookbook\forms.py:219 msgid "Leave empty for nextcloud and enter api token for dropbox." -msgstr "" +msgstr "Nextcloud 留空并输入 Dropbox API 令牌。" #: .\cookbook\forms.py:228 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" -msgstr "" +msgstr "Dropbox 留空并输入基础 Nextcloud 网址(/remote.php/webdav/ 会自动添加)" #: .\cookbook\forms.py:266 .\cookbook\views\edit.py:166 msgid "Storage" -msgstr "" +msgstr "存储" #: .\cookbook\forms.py:268 msgid "Active" -msgstr "" +msgstr "活跃" #: .\cookbook\forms.py:274 msgid "Search String" @@ -239,13 +226,13 @@ msgstr "你必须至少提供一份菜谱或一个标题。" #: .\cookbook\forms.py:336 msgid "You can list default users to share recipes with in the settings." -msgstr "你可以在设置中列出默认用户来分享食谱。" +msgstr "你可以在设置中列出默认用户来分享菜谱。" #: .\cookbook\forms.py:337 msgid "" "You can use markdown to format this field. See the docs here" -msgstr "" +msgstr "可以使用 Markdown 设置此字段格式。查看文档" #: .\cookbook\forms.py:363 msgid "Maximum number of users for this space reached." @@ -253,13 +240,9 @@ msgstr "已达到该空间的最大用户数。" #: .\cookbook\forms.py:369 msgid "Email address already taken!" -msgstr "电子邮件地址已被注册!" +msgstr "电子邮件地址已被注册!" #: .\cookbook\forms.py:377 -#, fuzzy -#| msgid "" -#| "An email address is not required but if present the invite link will be " -#| "send to the user." msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -271,199 +254,189 @@ msgstr "名字已被占用。" #: .\cookbook\forms.py:403 msgid "Accept Terms and Privacy" -msgstr "接受条款细则及私隐政策" +msgstr "接受条款及隐私政策" #: .\cookbook\forms.py:435 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." -msgstr "" +msgstr "确定使用三元图相似性匹配时搜索的模糊程度(例如,较低的值意味着忽略更多的打字错误)。" #: .\cookbook\forms.py:445 +#, fuzzy msgid "" "Select type method of search. Click here for " "full desciption of choices." -msgstr "" +msgstr "选择搜索类型方法。点击此处 查看选项的完整说明。" #: .\cookbook\forms.py:446 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." -msgstr "" +msgstr "编辑和导入菜谱时,对单位、关键词和材料使用模糊匹配。" #: .\cookbook\forms.py:448 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" -msgstr "" +msgstr "忽略搜索字段的重音。此选项会因语言差异导致搜索质量产生变化" #: .\cookbook\forms.py:450 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" -msgstr "" +msgstr "用于搜索部分匹配的字段。(如搜索“Pie”会返回“pie”、“piece”和“soapie”)" #: .\cookbook\forms.py:452 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" -msgstr "" +msgstr "用于搜索开头匹配的字段。(如搜索“sa”会返回“salad”和“sandwich”)" #: .\cookbook\forms.py:454 msgid "" "Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " "Note: this option will conflict with 'web' and 'raw' methods of search." -msgstr "" +msgstr "“模糊”搜索字段。(例如搜索“recpie”将会找到“recipe”。)注意:此选项将与“web”和“raw”搜索方法冲突。" #: .\cookbook\forms.py:456 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." -msgstr "" +msgstr "全文搜索字段。“web”、“phrase”和“raw”搜索方法仅适用于全文字段。" #: .\cookbook\forms.py:460 -#, fuzzy -#| msgid "Search" msgid "Search Method" -msgstr "搜索" +msgstr "搜索方法" #: .\cookbook\forms.py:461 msgid "Fuzzy Lookups" -msgstr "" +msgstr "模糊查找" #: .\cookbook\forms.py:462 msgid "Ignore Accent" -msgstr "" +msgstr "忽略重音" #: .\cookbook\forms.py:463 msgid "Partial Match" -msgstr "" +msgstr "部分匹配" #: .\cookbook\forms.py:464 msgid "Starts Wtih" -msgstr "" +msgstr "起始于" #: .\cookbook\forms.py:465 -#, fuzzy -#| msgid "Search" msgid "Fuzzy Search" -msgstr "搜索" +msgstr "模糊搜索" #: .\cookbook\forms.py:466 -#, fuzzy -#| msgid "Text" msgid "Full Text" -msgstr "文本" +msgstr "全文" #: .\cookbook\forms.py:491 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." -msgstr "" +msgstr "用户将看到你添加到购物清单中的所有商品。他们必须将你添加到列表才能看到他们清单上的项目。" #: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." -msgstr "" +msgstr "将膳食计划(手动或自动)添加到购物清单时,包括所有相关菜谱。" #: .\cookbook\forms.py:498 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." -msgstr "" +msgstr "将膳食计划(手动或自动)添加到购物清单时,排除现有材料。" #: .\cookbook\forms.py:499 msgid "Default number of hours to delay a shopping list entry." -msgstr "" +msgstr "延迟购物清单条目的默认小时数。" #: .\cookbook\forms.py:500 msgid "Filter shopping list to only include supermarket categories." -msgstr "" +msgstr "筛选购物清单仅包括超市类型。" #: .\cookbook\forms.py:501 +#, fuzzy msgid "Days of recent shopping list entries to display." -msgstr "" +msgstr "显示最近几天的购物清单条目。" #: .\cookbook\forms.py:502 msgid "Mark food 'On Hand' when checked off shopping list." -msgstr "" +msgstr "在核对购物清单时,将食物标记为“入手”。" #: .\cookbook\forms.py:503 msgid "Delimiter to use for CSV exports." -msgstr "" +msgstr "用于 CSV 导出的分隔符。" #: .\cookbook\forms.py:504 msgid "Prefix to add when copying list to the clipboard." -msgstr "" +msgstr "将清单复制到剪贴板时要添加的前缀。" #: .\cookbook\forms.py:508 -#, fuzzy -#| msgid "Shopping Lists" msgid "Share Shopping List" -msgstr "购物清单" +msgstr "分享购物清单" #: .\cookbook\forms.py:509 msgid "Autosync" -msgstr "" +msgstr "自动同步" #: .\cookbook\forms.py:510 msgid "Auto Add Meal Plan" -msgstr "" +msgstr "自动添加膳食计划" #: .\cookbook\forms.py:511 msgid "Exclude On Hand" -msgstr "" +msgstr "排除现有" #: .\cookbook\forms.py:512 msgid "Include Related" -msgstr "" +msgstr "包括相关" #: .\cookbook\forms.py:513 msgid "Default Delay Hours" -msgstr "" +msgstr "默认延迟时间" #: .\cookbook\forms.py:514 #, fuzzy #| msgid "Supermarket" msgid "Filter to Supermarket" -msgstr "超市" +msgstr "筛选到超市" #: .\cookbook\forms.py:515 msgid "Recent Days" -msgstr "" +msgstr "最近几天" #: .\cookbook\forms.py:516 msgid "CSV Delimiter" -msgstr "" +msgstr "CSV 分隔符" #: .\cookbook\forms.py:517 .\cookbook\templates\shopping_list.html:322 msgid "List Prefix" -msgstr "" +msgstr "清单前缀" #: .\cookbook\forms.py:518 msgid "Auto On Hand" -msgstr "" +msgstr "自动入手" #: .\cookbook\forms.py:528 msgid "Reset Food Inheritance" -msgstr "" +msgstr "重置食物材料" #: .\cookbook\forms.py:529 msgid "Reset all food to inherit the fields configured." -msgstr "" +msgstr "重置所有食物以继承配置的字段。" #: .\cookbook\forms.py:541 -#, fuzzy -#| msgid "Food that should be replaced." msgid "Fields on food that should be inherited by default." -msgstr "食品应被取代." +msgstr "默认情况下应继承的食物上的字段。" #: .\cookbook\forms.py:542 -#, fuzzy -#| msgid "Show recently viewed recipes on search page." msgid "Show recipe counts on search filters" -msgstr "在搜索页面上显示最近查看的菜谱。" +msgstr "显示搜索筛选器上的菜谱计数" #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" @@ -474,7 +447,7 @@ msgstr "为了防止垃圾邮件,所要求的电子邮件没有被发送。请 #: .\cookbook\helper\permission_helper.py:136 #: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:148 msgid "You are not logged in and therefore cannot view this page!" -msgstr "你没有登录,因此不能查看这个页面!" +msgstr "你没有登录,因此不能查看这个页面!" #: .\cookbook\helper\permission_helper.py:140 #: .\cookbook\helper\permission_helper.py:146 @@ -486,28 +459,25 @@ msgstr "你没有登录,因此不能查看这个页面!" #: .\cookbook\views\views.py:159 .\cookbook\views\views.py:166 #: .\cookbook\views\views.py:232 msgid "You do not have the required permissions to view this page!" -msgstr "你没有必要的权限来查看这个页面!" +msgstr "你没有必要的权限来查看这个页面!" #: .\cookbook\helper\permission_helper.py:164 #: .\cookbook\helper\permission_helper.py:187 #: .\cookbook\helper\permission_helper.py:202 -#, fuzzy msgid "You cannot interact with this object as it is not owned by you!" -msgstr "你不能与这个对象进行互动,因为它不属于你!" +msgstr "你不能与此对象交互,因为它不属于你!" #: .\cookbook\helper\recipe_search.py:473 msgid "One of queryset or hash_key must be provided" -msgstr "" +msgstr "必须提供 queryset 或 hash_key 之一" #: .\cookbook\helper\shopping_helper.py:54 -#, fuzzy -#| msgid "You must provide at least a recipe or a title." msgid "You must supply a recipe or mealplan" -msgstr "你必须至少提供一份菜谱或一个标题。" +msgstr "你必须提供菜谱或膳食计划" #: .\cookbook\helper\shopping_helper.py:58 msgid "You must supply a created_by" -msgstr "" +msgstr "你必须提供创建者" #: .\cookbook\helper\template_helper.py:61 #: .\cookbook\helper\template_helper.py:63 @@ -518,7 +488,7 @@ msgstr "无法解析模板代码。" msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" -msgstr "输入者需要一个.zip文件。你为你的数据选择了正确的导入器类型吗?" +msgstr "需要一个 .zip 文件。你是否为数据选择了正确的导入器类型?" #: .\cookbook\integration\integration.py:203 msgid "" @@ -541,7 +511,7 @@ msgstr "说明" #: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" -msgstr "营养资料" +msgstr "营养信息" #: .\cookbook\integration\paprika.py:53 .\cookbook\templates\url_import.html:42 msgid "Source" @@ -566,27 +536,27 @@ msgstr "准备时间" #: .\cookbook\templates\forms\ingredients.html:7 #: .\cookbook\templates\index.html:7 msgid "Cookbook" -msgstr "食谱" +msgstr "菜谱" #: .\cookbook\integration\saffron.py:31 msgid "Section" -msgstr "节" +msgstr "部分" #: .\cookbook\management\commands\rebuildindex.py:14 msgid "Rebuilds full text search index on Recipe" -msgstr "" +msgstr "在菜谱上重建全文搜索索引" #: .\cookbook\management\commands\rebuildindex.py:18 msgid "Only Postgress databases use full text search, no index to rebuild" -msgstr "" +msgstr "仅 Postgress 数据库使用全文搜索,没有重建索引" #: .\cookbook\management\commands\rebuildindex.py:29 msgid "Recipe index rebuild complete." -msgstr "" +msgstr "菜谱索引重建完成。" #: .\cookbook\management\commands\rebuildindex.py:31 msgid "Recipe index rebuild failed." -msgstr "" +msgstr "菜谱索引重建失败。" #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" @@ -608,7 +578,7 @@ msgstr "其他" msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." -msgstr "空间的最大文件存储量,单位为MB。0表示无限制,-1表示禁止文件上传。" +msgstr "空间的最大文件存储量,单位为 MB。0表示无限制,-1表示禁止上传文件。" #: .\cookbook\models.py:300 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:53 @@ -620,7 +590,7 @@ msgstr "搜索" #: .\cookbook\templates\meal_plan_new.html:7 .\cookbook\views\delete.py:181 #: .\cookbook\views\edit.py:220 .\cookbook\views\new.py:184 msgid "Meal-Plan" -msgstr "餐单" +msgstr "膳食计划" #: .\cookbook\models.py:302 .\cookbook\templates\base.html:90 msgid "Books" @@ -641,7 +611,7 @@ msgstr "新" #: .\cookbook\models.py:512 msgid " is part of a recipe step and cannot be deleted" -msgstr "" +msgstr " 是菜谱步骤的一部分,不能删除" #: .\cookbook\models.py:586 .\cookbook\templates\url_import.html:44 msgid "Text" @@ -664,74 +634,70 @@ msgstr "菜谱" #: .\cookbook\models.py:1041 .\cookbook\templates\search_info.html:28 msgid "Simple" -msgstr "" +msgstr "简明" #: .\cookbook\models.py:1042 .\cookbook\templates\search_info.html:33 msgid "Phrase" -msgstr "" +msgstr "短语" #: .\cookbook\models.py:1043 .\cookbook\templates\search_info.html:38 msgid "Web" -msgstr "" +msgstr "网络" #: .\cookbook\models.py:1044 .\cookbook\templates\search_info.html:47 msgid "Raw" -msgstr "" +msgstr "原始" #: .\cookbook\models.py:1082 -#, fuzzy -#| msgid "Food" msgid "Food Alias" -msgstr "食物" +msgstr "食物别名" #: .\cookbook\models.py:1082 msgid "Unit Alias" -msgstr "" +msgstr "单位别名" #: .\cookbook\models.py:1082 -#, fuzzy -#| msgid "Keywords" msgid "Keyword Alias" -msgstr "关键字" +msgstr "关键词别名" #: .\cookbook\serializer.py:175 msgid "A user is required" -msgstr "" +msgstr "需要一个用户" #: .\cookbook\serializer.py:195 msgid "File uploads are not enabled for this Space." -msgstr "文件不能上载此空间。" +msgstr "未为此空间启用文件上传。" #: .\cookbook\serializer.py:206 msgid "You have reached your file upload limit." -msgstr "你已达到文件上载的上限。" +msgstr "你已达到文件上传的限制。" #: .\cookbook\serializer.py:962 msgid "Existing shopping list to update" -msgstr "" +msgstr "要更新现有的购物清单" #: .\cookbook\serializer.py:964 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." -msgstr "" +msgstr "要添加的菜谱中材料识别符列表,不提供则添加所有材料。" #: .\cookbook\serializer.py:965 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." -msgstr "" +msgstr "提供一个菜谱列表识别符或份数为0将删除该购物清单。" #: .\cookbook\serializer.py:973 msgid "Amount of food to add to the shopping list" -msgstr "" +msgstr "要添加到购物清单中的食物数量" #: .\cookbook\serializer.py:974 msgid "ID of unit to use for the shopping list" -msgstr "" +msgstr "用于购物清单的单位识别符" #: .\cookbook\serializer.py:975 msgid "When set to true will delete all food from active shopping lists." -msgstr "" +msgstr "当设置为 true 时,将从活动的购物列表中删除所有食物。" #: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 @@ -759,7 +725,7 @@ msgstr "找不到你要找的页面。" #: .\cookbook\templates\404.html:33 msgid "Take me Home" -msgstr "带我回家" +msgstr "回到主页" #: .\cookbook\templates\404.html:35 msgid "Report a Bug" @@ -785,7 +751,7 @@ msgstr "电子邮件" #: .\cookbook\templates\account\email.html:19 msgid "The following e-mail addresses are associated with your account:" -msgstr "以下电子邮件地址与您的账户相关联:" +msgstr "以下电子邮件地址与你的帐号相关联:" #: .\cookbook\templates\account\email.html:36 msgid "Verified" @@ -817,15 +783,13 @@ msgstr "移除" #: .\cookbook\templates\account\email.html:58 msgid "Warning:" -msgstr "警告:" +msgstr "警告:" #: .\cookbook\templates\account\email.html:58 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." -msgstr "" -"你目前没有设置任何电子邮件地址。你真的应该添加一个电子邮件地址,这样你就可以" -"收到通知,重置你的密码,等等。" +msgstr "你目前没有设置任何电子邮件地址。你真的应该添加一个电子邮件地址,这样你就可以收到通知,重置你的密码等等。" #: .\cookbook\templates\account\email.html:64 msgid "Add E-mail Address" @@ -852,6 +816,10 @@ msgid "" "for user %(user_display)s\n" " ." msgstr "" +"请确认\n" +" %(email)s 是用户 %(user_display)s " +"的电子邮件地址\n" +" ." #: .\cookbook\templates\account\email_confirm.html:22 #: .\cookbook\templates\generic\delete_template.html:71 @@ -865,6 +833,8 @@ msgid "" " issue a new e-mail confirmation " "request." msgstr "" +"此电子邮件确认链接已过期或无效。请\n" +" 发起新的电子邮件确认请求。" #: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:289 msgid "Login" @@ -875,7 +845,7 @@ msgstr "登录" #: .\cookbook\templates\account\signup.html:69 #: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" -msgstr "登入" +msgstr "登录" #: .\cookbook\templates\account\login.html:34 #: .\cookbook\templates\socialaccount\signup.html:8 @@ -895,21 +865,21 @@ msgstr "遗失密码?" #: .\cookbook\templates\account\login.html:52 msgid "Social Login" -msgstr "社交登录" +msgstr "关联登录" #: .\cookbook\templates\account\login.html:53 msgid "You can use any of the following providers to sign in." -msgstr "你可以使用以下任何一个供应商来登录。" +msgstr "你可以使用以下任意提供程序来登录。" #: .\cookbook\templates\account\logout.html:5 #: .\cookbook\templates\account\logout.html:9 #: .\cookbook\templates\account\logout.html:18 msgid "Sign Out" -msgstr "登出" +msgstr "退出" #: .\cookbook\templates\account\logout.html:11 msgid "Are you sure you want to sign out?" -msgstr "你确定你要登出吗?" +msgstr "你确定要退出吗?" #: .\cookbook\templates\account\password_change.html:6 #: .\cookbook\templates\account\password_change.html:16 @@ -954,11 +924,12 @@ msgstr "该实例上的密码重置被禁用。" msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." -msgstr "我们已经向您发送了一封电子邮件。如果你在几分钟内没有收到,请联系我们。" +msgstr "我们已经向你发送了一封电子邮件。如果你在几分钟内没有收到,请联系我们。" #: .\cookbook\templates\account\password_reset_from_key.html:13 +#, fuzzy msgid "Bad Token" -msgstr "" +msgstr "坏令牌" #: .\cookbook\templates\account\password_reset_from_key.html:25 #, python-format @@ -968,17 +939,17 @@ msgid "" " Please request a new " "password reset." msgstr "" +"密码重置链接无效,可能是因为它已经被使用。\n" +" 请重新请求 重设密码。" #: .\cookbook\templates\account\password_reset_from_key.html:33 -#, fuzzy -#| msgid "Change Password" msgid "change password" msgstr "更改密码" #: .\cookbook\templates\account\password_reset_from_key.html:36 #: .\cookbook\templates\account\password_reset_from_key_done.html:19 msgid "Your password is now changed." -msgstr "" +msgstr "你的密码现在更改了。" #: .\cookbook\templates\account\password_set.html:6 #: .\cookbook\templates\account\password_set.html:16 @@ -992,7 +963,7 @@ msgstr "注册" #: .\cookbook\templates\account\signup.html:12 msgid "Create an Account" -msgstr "创建账户" +msgstr "创建帐号" #: .\cookbook\templates\account\signup.html:42 #: .\cookbook\templates\socialaccount\signup.html:33 @@ -1020,12 +991,12 @@ msgstr "创建用户" #: .\cookbook\templates\account\signup.html:69 msgid "Already have an account?" -msgstr "已有账户?" +msgstr "已有帐号?" #: .\cookbook\templates\account\signup_closed.html:5 #: .\cookbook\templates\account\signup_closed.html:11 msgid "Sign Up Closed" -msgstr "注册关闭" +msgstr "注册已关闭" #: .\cookbook\templates\account\signup_closed.html:13 msgid "We are sorry, but the sign up is currently closed." @@ -1034,7 +1005,7 @@ msgstr "我们很抱歉,但目前注册已经结束。" #: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:279 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" -msgstr "API文档" +msgstr "应用程序接口文档" #: .\cookbook\templates\base.html:86 msgid "Shopping" @@ -1045,8 +1016,6 @@ msgid "Keyword" msgstr "关键词" #: .\cookbook\templates\base.html:125 .\cookbook\views\lists.py:114 -#, fuzzy -#| msgid "Food" msgid "Foods" msgstr "食物" @@ -1055,7 +1024,7 @@ msgstr "食物" #: .\cookbook\templates\space.html:47 .\cookbook\templates\stats.html:26 #: .\cookbook\views\lists.py:131 msgid "Units" -msgstr "" +msgstr "单位" #: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:208 @@ -1064,18 +1033,16 @@ msgid "Supermarket" msgstr "超市" #: .\cookbook\templates\base.html:163 -#, fuzzy -#| msgid "Supermarket" msgid "Supermarket Category" -msgstr "超市" +msgstr "超市类型" #: .\cookbook\templates\base.html:175 .\cookbook\views\lists.py:180 msgid "Automations" -msgstr "" +msgstr "自动化" #: .\cookbook\templates\base.html:189 .\cookbook\views\lists.py:200 msgid "Files" -msgstr "" +msgstr "文件" #: .\cookbook\templates\base.html:201 msgid "Batch Edit" @@ -1084,93 +1051,93 @@ msgstr "批量编辑" #: .\cookbook\templates\base.html:213 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" -msgstr "" +msgstr "历史" #: .\cookbook\templates\base.html:228 .\cookbook\templates\export.html:14 #: .\cookbook\templates\export.html:20 #: .\cookbook\templates\shopping_list.html:310 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" -msgstr "" +msgstr "导出" #: .\cookbook\templates\base.html:244 .\cookbook\templates\index.html:47 msgid "Import Recipe" -msgstr "" +msgstr "导入菜谱" #: .\cookbook\templates\base.html:246 #: .\cookbook\templates\shopping_list.html:165 #: .\cookbook\templates\shopping_list.html:188 msgid "Create" -msgstr "" +msgstr "创建" #: .\cookbook\templates\base.html:259 #: .\cookbook\templates\generic\list_template.html:14 #: .\cookbook\templates\space.html:69 .\cookbook\templates\stats.html:43 msgid "External Recipes" -msgstr "" +msgstr "外部菜谱" #: .\cookbook\templates\base.html:262 .\cookbook\templates\space.html:8 #: .\cookbook\templates\space.html:20 .\cookbook\templates\space.html:150 msgid "Space Settings" -msgstr "" +msgstr "空间设置" #: .\cookbook\templates\base.html:267 .\cookbook\templates\system.html:13 msgid "System" -msgstr "" +msgstr "系统" #: .\cookbook\templates\base.html:269 msgid "Admin" -msgstr "" +msgstr "管理员" #: .\cookbook\templates\base.html:273 msgid "Markdown Guide" -msgstr "" +msgstr "Markdown 手册" #: .\cookbook\templates\base.html:275 msgid "GitHub" -msgstr "" +msgstr "GitHub" #: .\cookbook\templates\base.html:277 msgid "Translate Tandoor" -msgstr "" +msgstr "翻译筒状泥炉<_<" #: .\cookbook\templates\base.html:281 msgid "API Browser" -msgstr "" +msgstr "应用程序接口浏览器" #: .\cookbook\templates\base.html:284 msgid "Log out" -msgstr "" +msgstr "退出" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" -msgstr "" +msgstr "批量编辑类型" #: .\cookbook\templates\batch\edit.html:15 msgid "Batch edit Recipes" -msgstr "" +msgstr "批量编辑菜谱" #: .\cookbook\templates\batch\edit.html:20 msgid "Add the specified keywords to all recipes containing a word" -msgstr "" +msgstr "将指定的关键词添加到包含单词的所有菜谱中" #: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:82 msgid "Sync" -msgstr "" +msgstr "同步" #: .\cookbook\templates\batch\monitor.html:10 msgid "Manage watched Folders" -msgstr "" +msgstr "管理关注的文件夹" #: .\cookbook\templates\batch\monitor.html:14 msgid "" "On this Page you can manage all storage folder locations that should be " "monitored and synced." -msgstr "" +msgstr "在此页面上,你可以管理应该监视和同步的所有存储文件夹位置。" #: .\cookbook\templates\batch\monitor.html:16 msgid "The path must be in the following format" -msgstr "" +msgstr "路径必须采用以下格式" #: .\cookbook\templates\batch\monitor.html:20 #: .\cookbook\templates\forms\edit_import_recipe.html:14 @@ -1184,59 +1151,55 @@ msgstr "" #: .\cookbook\templates\shopping_list.html:311 #: .\cookbook\templates\space.html:155 msgid "Save" -msgstr "" +msgstr "保存" #: .\cookbook\templates\batch\monitor.html:21 msgid "Manage External Storage" -msgstr "" +msgstr "管理外部存储" #: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" -msgstr "" +msgstr "现在同步!" #: .\cookbook\templates\batch\monitor.html:29 -#, fuzzy -#| msgid "Recipe" msgid "Show Recipes" -msgstr "菜谱" +msgstr "显示菜谱" #: .\cookbook\templates\batch\monitor.html:30 -#, fuzzy -#| msgid "Social Login" msgid "Show Log" -msgstr "社交登录" +msgstr "显示记录" #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" -msgstr "" +msgstr "导入配方" #: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." -msgstr "" +msgstr "这可能需要几分钟,取决于同步的菜谱数量,请等待。" #: .\cookbook\templates\books.html:7 msgid "Recipe Books" -msgstr "" +msgstr "菜谱书" #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" -msgstr "" +msgstr "导出菜谱" #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" -msgstr "" +msgstr "导入新菜谱" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 msgid "Edit Recipe" -msgstr "" +msgstr "编辑菜谱" #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" -msgstr "" +msgstr "编辑材料" #: .\cookbook\templates\forms\ingredients.html:16 msgid "" @@ -1248,84 +1211,88 @@ msgid "" "them.\n" " " msgstr "" +"\n" +" 如果两个(或更多)单位或材料应该是相同的,则可使用以下形式。\n" +" 它合并了两个单位或材料,并使用它们更新所有菜谱。\n" +" " #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" -msgstr "" +msgstr "你确定要合并这两个单位吗?" #: .\cookbook\templates\forms\ingredients.html:31 #: .\cookbook\templates\forms\ingredients.html:40 msgid "Merge" -msgstr "" +msgstr "合并" #: .\cookbook\templates\forms\ingredients.html:36 msgid "Are you sure that you want to merge these two ingredients?" -msgstr "" +msgstr "你确定要合并这两种材料吗?" #: .\cookbook\templates\generic\delete_template.html:21 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " -msgstr "" +msgstr "你确定要删除 %(title)s:%(object)s " #: .\cookbook\templates\generic\delete_template.html:26 msgid "Protected" -msgstr "" +msgstr "受保护的" #: .\cookbook\templates\generic\delete_template.html:41 msgid "Cascade" -msgstr "" +msgstr "串联" #: .\cookbook\templates\generic\delete_template.html:72 msgid "Cancel" -msgstr "" +msgstr "取消" #: .\cookbook\templates\generic\edit_template.html:32 msgid "View" -msgstr "" +msgstr "查看" #: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" -msgstr "" +msgstr "删除原文件" #: .\cookbook\templates\generic\list_template.html:6 #: .\cookbook\templates\generic\list_template.html:22 msgid "List" -msgstr "" +msgstr "清单" #: .\cookbook\templates\generic\list_template.html:33 #: .\cookbook\templates\shopping_list.html:33 msgid "Try the new shopping list" -msgstr "" +msgstr "试试新的购物清单" #: .\cookbook\templates\generic\list_template.html:45 msgid "Filter" -msgstr "" +msgstr "筛选" #: .\cookbook\templates\generic\list_template.html:50 msgid "Import all" -msgstr "" +msgstr "全部导入" #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" -msgstr "" +msgstr "之前" #: .\cookbook\templates\generic\table_template.html:98 #: .\cookbook\templates\recipes_table.html:143 msgid "next" -msgstr "" +msgstr "之后" #: .\cookbook\templates\history.html:20 msgid "View Log" -msgstr "" +msgstr "查看记录" #: .\cookbook\templates\history.html:24 msgid "Cook Log" -msgstr "" +msgstr "烹饪记录" #: .\cookbook\templates\import.html:6 .\cookbook\templates\test.html:6 msgid "Import Recipes" -msgstr "" +msgstr "导入菜谱" #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 @@ -1341,11 +1308,11 @@ msgstr "导入" #: .\cookbook\templates\include\log_cooking.html:9 msgid "Log Recipe Cooking" -msgstr "" +msgstr "菜谱烹饪记录" #: .\cookbook\templates\include\log_cooking.html:15 msgid "All fields are optional and can be left empty." -msgstr "" +msgstr "所有字段都是可选的,可以留空。" #: .\cookbook\templates\include\log_cooking.html:21 msgid "Rating" @@ -1358,11 +1325,11 @@ msgstr "关闭" #: .\cookbook\templates\include\recipe_open_modal.html:32 msgid "Open Recipe" -msgstr "" +msgstr "打开菜谱" #: .\cookbook\templates\include\storage_backend_warning.html:4 msgid "Security Warning" -msgstr "" +msgstr "安全警告" #: .\cookbook\templates\include\storage_backend_warning.html:5 msgid "" @@ -1376,40 +1343,45 @@ msgid "" "can be used.\n" " " msgstr "" +"\n" +" 密码和令牌字段在数据库中存储为明文。\n" +" 这是必要的,因为它们需要发出应用程序接口请求,但这也增加了被窃取的风险。
\n" +" 为了限制可能的损害,可以使用访问受限的令牌或帐户。\n" +" " #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "" +msgstr "搜索菜谱……" #: .\cookbook\templates\index.html:44 msgid "New Recipe" -msgstr "" +msgstr "新菜谱" #: .\cookbook\templates\index.html:53 msgid "Advanced Search" -msgstr "" +msgstr "高级搜索" #: .\cookbook\templates\index.html:57 msgid "Reset Search" -msgstr "" +msgstr "重置搜索" #: .\cookbook\templates\index.html:85 msgid "Last viewed" -msgstr "" +msgstr "最近查看" #: .\cookbook\templates\index.html:87 .\cookbook\templates\space.html:37 #: .\cookbook\templates\stats.html:22 msgid "Recipes" -msgstr "" +msgstr "菜谱" #: .\cookbook\templates\index.html:94 msgid "Log in to view recipes" -msgstr "" +msgstr "登录查看菜谱" #: .\cookbook\templates\markdown_info.html:5 #: .\cookbook\templates\markdown_info.html:13 msgid "Markdown Info" -msgstr "" +msgstr "Markdown 信息" #: .\cookbook\templates\markdown_info.html:14 msgid "" @@ -1426,54 +1398,62 @@ msgid "" "below.\n" " " msgstr "" +"\n" +" Markdown 是轻量标记语言,很方便格式化纯文本。\n" +" 本站使用 Python Markdown 库转换你的文本信息成好看的 HTML。\n" +" 完整的 Markdown 文档可 点击这里 查看。\n" +" 下面可以找到一个不完整但很可能够用的文档。\n" +" " #: .\cookbook\templates\markdown_info.html:25 msgid "Headers" -msgstr "" +msgstr "标题" #: .\cookbook\templates\markdown_info.html:54 msgid "Formatting" -msgstr "" +msgstr "格式化" #: .\cookbook\templates\markdown_info.html:56 #: .\cookbook\templates\markdown_info.html:72 msgid "Line breaks are inserted by adding two spaces after the end of a line" -msgstr "" +msgstr "通过在行尾后添加两个空格插入换行符" #: .\cookbook\templates\markdown_info.html:57 #: .\cookbook\templates\markdown_info.html:73 msgid "or by leaving a blank line inbetween." -msgstr "" +msgstr "或者在中间留一个空行。" #: .\cookbook\templates\markdown_info.html:59 #: .\cookbook\templates\markdown_info.html:74 msgid "This text is bold" -msgstr "" +msgstr "这个文本是粗体的" #: .\cookbook\templates\markdown_info.html:60 #: .\cookbook\templates\markdown_info.html:75 msgid "This text is italic" -msgstr "" +msgstr "这个文本是斜体的" #: .\cookbook\templates\markdown_info.html:61 #: .\cookbook\templates\markdown_info.html:77 msgid "Blockquotes are also possible" -msgstr "" +msgstr "块引用也可以" #: .\cookbook\templates\markdown_info.html:84 msgid "Lists" -msgstr "" +msgstr "列表" #: .\cookbook\templates\markdown_info.html:85 msgid "" "Lists can ordered or unorderd. It is important to leave a blank line " "before the list!" -msgstr "" +msgstr "列表可以是有序或无序的。重要的是 在列表前留下一个空行!" #: .\cookbook\templates\markdown_info.html:87 #: .\cookbook\templates\markdown_info.html:108 msgid "Ordered List" -msgstr "" +msgstr "有序列表" #: .\cookbook\templates\markdown_info.html:89 #: .\cookbook\templates\markdown_info.html:90 @@ -1482,12 +1462,12 @@ msgstr "" #: .\cookbook\templates\markdown_info.html:111 #: .\cookbook\templates\markdown_info.html:112 msgid "unordered list item" -msgstr "" +msgstr "无序列表项" #: .\cookbook\templates\markdown_info.html:93 #: .\cookbook\templates\markdown_info.html:114 msgid "Unordered List" -msgstr "" +msgstr "无序列表" #: .\cookbook\templates\markdown_info.html:95 #: .\cookbook\templates\markdown_info.html:96 @@ -1496,26 +1476,26 @@ msgstr "" #: .\cookbook\templates\markdown_info.html:117 #: .\cookbook\templates\markdown_info.html:118 msgid "ordered list item" -msgstr "" +msgstr "有序列表项" #: .\cookbook\templates\markdown_info.html:125 msgid "Images & Links" -msgstr "" +msgstr "图片和链接" #: .\cookbook\templates\markdown_info.html:126 msgid "" "Links can be formatted with Markdown. This application also allows to paste " "links directly into markdown fields without any formatting." -msgstr "" +msgstr "链接可以使用 Markdown 格式化。此应用程序还允许粘贴链接到 markdown 字段而无需格式化。" #: .\cookbook\templates\markdown_info.html:132 #: .\cookbook\templates\markdown_info.html:145 msgid "This will become an image" -msgstr "" +msgstr "这将变成一个图像" #: .\cookbook\templates\markdown_info.html:152 msgid "Tables" -msgstr "" +msgstr "表格" #: .\cookbook\templates\markdown_info.html:153 msgid "" @@ -1523,177 +1503,178 @@ msgid "" "editor like this one." msgstr "" +"Markdown 表格难以手写。推荐使用像 这个 " +"的表格编辑器。" #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:157 #: .\cookbook\templates\markdown_info.html:171 #: .\cookbook\templates\markdown_info.html:177 msgid "Table" -msgstr "" +msgstr "表格" #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:172 msgid "Header" -msgstr "" +msgstr "头部" #: .\cookbook\templates\markdown_info.html:157 #: .\cookbook\templates\markdown_info.html:178 msgid "Cell" -msgstr "" +msgstr "单元格" #: .\cookbook\templates\meal_plan_entry.html:6 msgid "Meal Plan View" -msgstr "" +msgstr "膳食计划视图" #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" -msgstr "" +msgstr "创建者" #: .\cookbook\templates\meal_plan_entry.html:20 #: .\cookbook\templates\shopping_list.html:232 msgid "Shared with" -msgstr "" +msgstr "分享自" #: .\cookbook\templates\meal_plan_entry.html:48 #: .\cookbook\templates\recipes_table.html:64 msgid "Last cooked" -msgstr "" +msgstr "最近烹饪" #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." -msgstr "" +msgstr "从来没有烹饪。" #: .\cookbook\templates\meal_plan_entry.html:76 msgid "Other meals on this day" -msgstr "" +msgstr "这天的其他餐点" #: .\cookbook\templates\no_groups_info.html:5 #: .\cookbook\templates\no_groups_info.html:12 msgid "No Permissions" -msgstr "" +msgstr "没有权限" #: .\cookbook\templates\no_groups_info.html:17 msgid "You do not have any groups and therefor cannot use this application." -msgstr "" +msgstr "你没有任何组,因此无法使用此应用程序。" #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 msgid "Please contact your administrator." -msgstr "" +msgstr "请联系你的管理员。" #: .\cookbook\templates\no_perm_info.html:5 #: .\cookbook\templates\no_perm_info.html:12 msgid "No Permission" -msgstr "" +msgstr "没有权限" #: .\cookbook\templates\no_perm_info.html:15 msgid "" "You do not have the required permissions to view this page or perform this " "action." -msgstr "" +msgstr "你没有必要的权限来查看此页面或执行此操作。" #: .\cookbook\templates\no_space_info.html:6 #: .\cookbook\templates\no_space_info.html:13 msgid "No Space" -msgstr "" +msgstr "没有空间" #: .\cookbook\templates\no_space_info.html:17 msgid "" "Recipes, foods, shopping lists and more are organized in spaces of one or " "more people." -msgstr "" +msgstr "菜谱、食物、购物清单等都组织在一个人或多个人的空间中。" #: .\cookbook\templates\no_space_info.html:18 msgid "" "You can either be invited into an existing space or create your own one." -msgstr "" +msgstr "你可以被邀请进入现有空间,也可以创建自己的空间。" #: .\cookbook\templates\no_space_info.html:31 #: .\cookbook\templates\no_space_info.html:40 msgid "Join Space" -msgstr "" +msgstr "加入空间" #: .\cookbook\templates\no_space_info.html:34 msgid "Join an existing space." -msgstr "" +msgstr "加入一个现有的空间。" #: .\cookbook\templates\no_space_info.html:35 msgid "" "To join an existing space either enter your invite token or click on the " "invite link the space owner send you." -msgstr "" +msgstr "要加入一个现有的空间,要么输入你的邀请令牌,要么单击空间所有者发送给你的邀请链接。" #: .\cookbook\templates\no_space_info.html:48 #: .\cookbook\templates\no_space_info.html:56 msgid "Create Space" -msgstr "" +msgstr "创建空间" #: .\cookbook\templates\no_space_info.html:51 msgid "Create your own recipe space." -msgstr "" +msgstr "创建你自己的菜谱空间。" #: .\cookbook\templates\no_space_info.html:52 msgid "Start your own recipe space and invite other users to it." -msgstr "" +msgstr "创建自己的食谱空间,并邀请其他用户加入。" #: .\cookbook\templates\offline.html:6 msgid "Offline" -msgstr "" +msgstr "离线" #: .\cookbook\templates\offline.html:19 msgid "You are currently offline!" -msgstr "" +msgstr "你目前处于离线状态!" #: .\cookbook\templates\offline.html:20 msgid "" "The recipes listed below are available for offline viewing because you have " "recently viewed them. Keep in mind that data might be outdated." -msgstr "" +msgstr "下面列出的菜谱可以离线查看,因为你最近已经查看过了。请记住,数据可能是过时的。" #: .\cookbook\templates\recipe_view.html:26 msgid "by" -msgstr "" +msgstr "评论者" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:147 #: .\cookbook\views\edit.py:180 msgid "Comment" -msgstr "" +msgstr "评论" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 #: .\cookbook\templates\url_import.html:447 msgid "Recipe Image" -msgstr "" +msgstr "菜谱图像" #: .\cookbook\templates\recipes_table.html:51 #: .\cookbook\templates\url_import.html:452 msgid "Preparation time ca." -msgstr "" +msgstr "准备时间约" #: .\cookbook\templates\recipes_table.html:57 #: .\cookbook\templates\url_import.html:457 msgid "Waiting time ca." -msgstr "" +msgstr "等待时间约" #: .\cookbook\templates\recipes_table.html:60 msgid "External" -msgstr "" +msgstr "外部" #: .\cookbook\templates\recipes_table.html:86 msgid "Log Cooking" -msgstr "" +msgstr "烹饪记录" #: .\cookbook\templates\rest_framework\api.html:5 msgid "Recipe Home" -msgstr "" +msgstr "菜谱主页" #: .\cookbook\templates\search_info.html:5 #: .\cookbook\templates\search_info.html:9 #: .\cookbook\templates\settings.html:172 -#, fuzzy -#| msgid "Search String" msgid "Search Settings" -msgstr "搜索字符串" +msgstr "搜索设置" #: .\cookbook\templates\search_info.html:10 msgid "" @@ -1706,12 +1687,15 @@ msgid "" "only available if you are using Postgres for your database.\n" " " msgstr "" +"\n" +" 创造最佳的搜索体验非常复杂,并且对您的个人配置有很大影响。\n" +" 改变任何搜索设置都可能对搜索结果的速度和质量产生重大影响。\n" +" 只有在数据库使用 Postgres 时,才可以使用搜索方法、卦和全文搜索配置。\n" +" " #: .\cookbook\templates\search_info.html:19 -#, fuzzy -#| msgid "Search" msgid "Search Methods" -msgstr "搜索" +msgstr "搜索方法" #: .\cookbook\templates\search_info.html:23 msgid "" @@ -1727,6 +1711,12 @@ msgid "" "html#TEXTSEARCH-PARSING-QUERIES>Postgresql's website.\n" " " msgstr "" +" \n" +" 全文搜索尝试规范化提供的单词以匹配常见变体。例如:“forked”、“forking”、“forks”都将归为“fork”。\n" +" 下面将介绍几种可用的方法,可以控制搜索多个单词时搜索行为的反应。\n" +" 关于这些操作的完整技术细节可以在 Postgresql的网站 上查看。\n" +" " #: .\cookbook\templates\search_info.html:29 msgid "" @@ -1738,6 +1728,10 @@ msgid "" "selected for a full text search.\n" " " msgstr "" +" \n" +" 简单搜索会忽略标点符号和常用词,如“the”、“a”、“and”。并将根据需要处理单独的单词。\n" +" 搜索“apple or flour”将会在全文搜索中返回任意包含“apple”和“flour”的菜谱。\n" +" " #: .\cookbook\templates\search_info.html:34 msgid "" @@ -1793,10 +1787,8 @@ msgid "" msgstr "" #: .\cookbook\templates\search_info.html:69 -#, fuzzy -#| msgid "Search" msgid "Search Fields" -msgstr "搜索" +msgstr "搜索字段" #: .\cookbook\templates\search_info.html:73 msgid "" @@ -1834,10 +1826,8 @@ msgid "" msgstr "" #: .\cookbook\templates\search_info.html:95 -#, fuzzy -#| msgid "Search" msgid "Search Index" -msgstr "搜索" +msgstr "搜索索引" #: .\cookbook\templates\search_info.html:99 msgid "" @@ -1854,62 +1844,58 @@ msgstr "" #: .\cookbook\templates\settings.html:28 msgid "Account" -msgstr "" +msgstr "帐号" #: .\cookbook\templates\settings.html:35 msgid "Preferences" -msgstr "" +msgstr "首选项" #: .\cookbook\templates\settings.html:42 msgid "API-Settings" -msgstr "" +msgstr "应用程序接口设置" #: .\cookbook\templates\settings.html:49 -#, fuzzy -#| msgid "Search String" msgid "Search-Settings" -msgstr "搜索字符串" +msgstr "搜索设置" #: .\cookbook\templates\settings.html:56 -#, fuzzy -#| msgid "Search String" msgid "Shopping-Settings" -msgstr "搜索字符串" +msgstr "购物设置" #: .\cookbook\templates\settings.html:65 msgid "Name Settings" -msgstr "" +msgstr "名字设置" #: .\cookbook\templates\settings.html:73 msgid "Account Settings" -msgstr "" +msgstr "帐号设置" #: .\cookbook\templates\settings.html:75 msgid "Emails" -msgstr "" +msgstr "电子邮件" #: .\cookbook\templates\settings.html:78 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" -msgstr "" +msgstr "社交" #: .\cookbook\templates\settings.html:91 msgid "Language" -msgstr "" +msgstr "语言" #: .\cookbook\templates\settings.html:121 msgid "Style" -msgstr "" +msgstr "样式" #: .\cookbook\templates\settings.html:142 msgid "API Token" -msgstr "" +msgstr "应用程序接口令牌" #: .\cookbook\templates\settings.html:143 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." -msgstr "" +msgstr "您可以使用基本身份验证和基于令牌的身份验证来访问表现层状态转换应用程序接口(REST API)。" #: .\cookbook\templates\settings.html:160 msgid "" @@ -1919,116 +1905,116 @@ msgstr "" #: .\cookbook\templates\settings.html:162 msgid "or" -msgstr "" +msgstr "或" #: .\cookbook\templates\settings.html:173 msgid "" "There are many options to configure the search depending on your personal " "preferences." -msgstr "" +msgstr "根据个人偏好,有许多选项可以配置搜索。" #: .\cookbook\templates\settings.html:174 msgid "" "Usually you do not need to configure any of them and can just stick " "with either the default or one of the following presets." -msgstr "" +msgstr "通常你 不需要 配置它们中的任何一个,只需使用默认设置或以下预设值之一。" #: .\cookbook\templates\settings.html:175 msgid "" "If you do want to configure the search you can read about the different " "options here." -msgstr "" +msgstr "如果你想要配置搜索,可以在 这里 阅读不同的选项。" #: .\cookbook\templates\settings.html:180 msgid "Fuzzy" -msgstr "" +msgstr "模糊" #: .\cookbook\templates\settings.html:181 msgid "" "Find what you need even if your search or the recipe contains typos. Might " "return more results than needed to make sure you find what you are looking " "for." -msgstr "" +msgstr "即使你的搜索或菜谱中有拼写错误,也要找到你需要的东西。可能会返回比需要更多的结果,以确保你找到所需的内容。" #: .\cookbook\templates\settings.html:182 msgid "This is the default behavior" -msgstr "" +msgstr "这是默认行为" #: .\cookbook\templates\settings.html:183 #: .\cookbook\templates\settings.html:191 msgid "Apply" -msgstr "" +msgstr "应用" #: .\cookbook\templates\settings.html:188 msgid "Precise" -msgstr "" +msgstr "精确" #: .\cookbook\templates\settings.html:189 msgid "" "Allows fine control over search results but might not return results if too " "many spelling mistakes are made." -msgstr "" +msgstr "允许对搜索结果进行精细控制,但如果出现太多拼写错误,则可能不会返回结果。" #: .\cookbook\templates\settings.html:190 msgid "Perfect for large Databases" -msgstr "" +msgstr "非常适合大型数据库" #: .\cookbook\templates\settings.html:207 -#, fuzzy -#| msgid "Shopping Lists" msgid "Shopping Settings" -msgstr "购物清单" +msgstr "购物设置" #: .\cookbook\templates\setup.html:6 .\cookbook\templates\system.html:5 msgid "Cookbook Setup" -msgstr "" +msgstr "安装菜谱" #: .\cookbook\templates\setup.html:14 msgid "Setup" -msgstr "" +msgstr "安装" #: .\cookbook\templates\setup.html:15 msgid "" "To start using this application you must first create a superuser account." -msgstr "" +msgstr "要开始使用这个应用程序,你必须先创建一个超级用户帐号。" #: .\cookbook\templates\setup.html:20 msgid "Create Superuser account" -msgstr "" +msgstr "创建超级用户帐号" #: .\cookbook\templates\shopping_list.html:8 #: .\cookbook\templates\shopping_list.html:29 #: .\cookbook\templates\shopping_list.html:663 msgid "Shopping List" -msgstr "" +msgstr "采购单" #: .\cookbook\templates\shopping_list.html:55 msgid "Search Recipe" -msgstr "" +msgstr "搜索菜谱" #: .\cookbook\templates\shopping_list.html:72 msgid "Shopping Recipes" -msgstr "" +msgstr "购物菜谱" #: .\cookbook\templates\shopping_list.html:74 msgid "No recipes selected" -msgstr "" +msgstr "没选择菜谱" #: .\cookbook\templates\shopping_list.html:131 +#, fuzzy msgid "Entry Mode" -msgstr "" +msgstr "条目模式" #: .\cookbook\templates\shopping_list.html:139 +#, fuzzy msgid "Add Entry" -msgstr "" +msgstr "添加条目" #: .\cookbook\templates\shopping_list.html:152 msgid "Amount" -msgstr "" +msgstr "数量" #: .\cookbook\templates\shopping_list.html:164 msgid "Select Unit" -msgstr "" +msgstr "选择单位" #: .\cookbook\templates\shopping_list.html:166 #: .\cookbook\templates\shopping_list.html:189 @@ -2037,55 +2023,55 @@ msgstr "" #: .\cookbook\templates\url_import.html:505 #: .\cookbook\templates\url_import.html:537 msgid "Select" -msgstr "" +msgstr "选择" #: .\cookbook\templates\shopping_list.html:187 msgid "Select Food" -msgstr "" +msgstr "选择食物" #: .\cookbook\templates\shopping_list.html:218 msgid "Select Supermarket" -msgstr "" +msgstr "选择超市" #: .\cookbook\templates\shopping_list.html:242 msgid "Select User" -msgstr "" +msgstr "选择用户" #: .\cookbook\templates\shopping_list.html:258 msgid "Finished" -msgstr "" +msgstr "完成" #: .\cookbook\templates\shopping_list.html:267 msgid "You are offline, shopping list might not syncronize." -msgstr "" +msgstr "你已离线,购物清单可能无法同步。" #: .\cookbook\templates\shopping_list.html:318 msgid "Copy/Export" -msgstr "" +msgstr "复制或导出" #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:15 msgid "Account Connections" -msgstr "" +msgstr "帐号连接" #: .\cookbook\templates\socialaccount\connections.html:18 msgid "" "You can sign in to your account using any of the following third party\n" " accounts:" -msgstr "" +msgstr "你可以使用以下任何第三方帐号登录你的帐号:" #: .\cookbook\templates\socialaccount\connections.html:52 msgid "" "You currently have no social network accounts connected to this account." -msgstr "" +msgstr "你目前没有与此帐号连接的社交网络帐号。" #: .\cookbook\templates\socialaccount\connections.html:55 msgid "Add a 3rd Party Account" -msgstr "" +msgstr "添加第三方帐号" #: .\cookbook\templates\socialaccount\signup.html:5 msgid "Signup" -msgstr "" +msgstr "注册" #: .\cookbook\templates\socialaccount\signup.html:10 #, python-format @@ -2114,11 +2100,11 @@ msgstr "" #: .\cookbook\templates\space.html:25 msgid "Space:" -msgstr "" +msgstr "空间:" #: .\cookbook\templates\space.html:26 msgid "Manage Subscription" -msgstr "" +msgstr "管理订阅" #: .\cookbook\templates\space.html:34 .\cookbook\templates\stats.html:19 msgid "Number of objects" @@ -2138,72 +2124,72 @@ msgstr "" #: .\cookbook\templates\space.html:73 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" -msgstr "" +msgstr "内部菜谱" #: .\cookbook\templates\space.html:89 msgid "Members" -msgstr "" +msgstr "成员" #: .\cookbook\templates\space.html:95 msgid "Invite User" -msgstr "" +msgstr "邀请用户" #: .\cookbook\templates\space.html:107 msgid "User" -msgstr "" +msgstr "用户" #: .\cookbook\templates\space.html:108 msgid "Groups" -msgstr "" +msgstr "群组" #: .\cookbook\templates\space.html:119 msgid "admin" -msgstr "" +msgstr "管理" #: .\cookbook\templates\space.html:120 msgid "user" -msgstr "" +msgstr "用户" #: .\cookbook\templates\space.html:121 msgid "guest" -msgstr "" +msgstr "访客" #: .\cookbook\templates\space.html:122 msgid "remove" -msgstr "" +msgstr "删除" #: .\cookbook\templates\space.html:126 msgid "Update" -msgstr "" +msgstr "更新" #: .\cookbook\templates\space.html:130 msgid "You cannot edit yourself." -msgstr "" +msgstr "你不能编辑自己。" #: .\cookbook\templates\space.html:136 msgid "There are no members in your space yet!" -msgstr "" +msgstr "你的空间里还没有成员!" #: .\cookbook\templates\space.html:143 .\cookbook\templates\system.html:21 #: .\cookbook\views\lists.py:85 msgid "Invite Links" -msgstr "" +msgstr "邀请链接" #: .\cookbook\templates\stats.html:4 msgid "Stats" -msgstr "" +msgstr "统计数据" #: .\cookbook\templates\stats.html:10 msgid "Statistics" -msgstr "" +msgstr "统计数据" #: .\cookbook\templates\system.html:22 msgid "Show Links" -msgstr "" +msgstr "显示链接" #: .\cookbook\templates\system.html:32 msgid "System Information" -msgstr "" +msgstr "系统信息" #: .\cookbook\templates\system.html:34 msgid "" @@ -2215,20 +2201,27 @@ msgid "" "recipes/releases\">here.\n" " " msgstr "" +"\n" +" Django Recipes 是一个开源应用程序。\n" +" 你可以在 GitHub " +"中找到。\n" +" 更新日志在 这里。\n" +" " #: .\cookbook\templates\system.html:48 msgid "Media Serving" -msgstr "" +msgstr "媒体服务" #: .\cookbook\templates\system.html:49 .\cookbook\templates\system.html:64 #: .\cookbook\templates\system.html:80 msgid "Warning" -msgstr "" +msgstr "警告" #: .\cookbook\templates\system.html:49 .\cookbook\templates\system.html:64 #: .\cookbook\templates\system.html:80 .\cookbook\templates\system.html:95 msgid "Ok" -msgstr "" +msgstr "好的" #: .\cookbook\templates\system.html:51 msgid "" @@ -2239,15 +2232,19 @@ msgid "" " your installation.\n" " " msgstr "" +"不推荐 使用 gunicorn/python 提供媒体文件。\n" +" 请按照 这里 描述的步骤操作更新安装。\n" +" " #: .\cookbook\templates\system.html:57 .\cookbook\templates\system.html:73 #: .\cookbook\templates\system.html:88 .\cookbook\templates\system.html:102 msgid "Everything is fine!" -msgstr "" +msgstr "一切都好!" #: .\cookbook\templates\system.html:62 msgid "Secret Key" -msgstr "" +msgstr "密钥" #: .\cookbook\templates\system.html:66 msgid "" @@ -2264,7 +2261,7 @@ msgstr "" #: .\cookbook\templates\system.html:78 msgid "Debug Mode" -msgstr "" +msgstr "调试模式" #: .\cookbook\templates\system.html:82 msgid "" @@ -2279,11 +2276,11 @@ msgstr "" #: .\cookbook\templates\system.html:93 msgid "Database" -msgstr "" +msgstr "数据库" #: .\cookbook\templates\system.html:95 msgid "Info" -msgstr "" +msgstr "信息" #: .\cookbook\templates\system.html:97 msgid "" @@ -2296,43 +2293,43 @@ msgstr "" #: .\cookbook\templates\url_import.html:8 msgid "URL Import" -msgstr "" +msgstr "链接导入" #: .\cookbook\templates\url_import.html:33 msgid "Drag me to your bookmarks to import recipes from anywhere" -msgstr "" +msgstr "将我拖到书签以从任何地方导入食谱" #: .\cookbook\templates\url_import.html:34 msgid "Bookmark Me!" -msgstr "" +msgstr "给我加书签!" #: .\cookbook\templates\url_import.html:38 msgid "URL" -msgstr "" +msgstr "链接" #: .\cookbook\templates\url_import.html:40 msgid "App" -msgstr "" +msgstr "应用程序" #: .\cookbook\templates\url_import.html:64 msgid "Enter website URL" -msgstr "" +msgstr "输入网站链接" #: .\cookbook\templates\url_import.html:104 msgid "Select recipe files to import or drop them here..." -msgstr "" +msgstr "选择要导入的菜谱文件或将其放到此处……" #: .\cookbook\templates\url_import.html:125 msgid "Paste json or html source here to load recipe." -msgstr "" +msgstr "将 json 或 html 源代码粘贴到此处以加载菜谱。" #: .\cookbook\templates\url_import.html:153 msgid "Preview Recipe Data" -msgstr "" +msgstr "预览菜谱数据" #: .\cookbook\templates\url_import.html:154 msgid "Drag recipe attributes from the right into the appropriate box below." -msgstr "" +msgstr "将菜谱属性从右侧拖动到下面相应的框中。" #: .\cookbook\templates\url_import.html:163 #: .\cookbook\templates\url_import.html:180 @@ -2349,23 +2346,23 @@ msgstr "清除内容" #: .\cookbook\templates\url_import.html:165 msgid "Text dragged here will be appended to the name." -msgstr "" +msgstr "拖动到此处的文本将附加到名称中。" #: .\cookbook\templates\url_import.html:178 msgid "Description" -msgstr "" +msgstr "描述" #: .\cookbook\templates\url_import.html:182 msgid "Text dragged here will be appended to the description." -msgstr "" +msgstr "拖动到此处的文本将附加到描述中。" #: .\cookbook\templates\url_import.html:199 msgid "Keywords dragged here will be appended to current list" -msgstr "" +msgstr "拖动到这里的关键字将被添加到当前列表" #: .\cookbook\templates\url_import.html:214 msgid "Image" -msgstr "影像" +msgstr "图片" #: .\cookbook\templates\url_import.html:246 msgid "Prep Time" @@ -2377,12 +2374,12 @@ msgstr "烹调时间" #: .\cookbook\templates\url_import.html:282 msgid "Ingredients dragged here will be appended to current list." -msgstr "" +msgstr "拖动到这里的材料将被添加到当前列表。" #: .\cookbook\templates\url_import.html:304 #: .\cookbook\templates\url_import.html:579 msgid "Instructions" -msgstr "" +msgstr "说明" #: .\cookbook\templates\url_import.html:309 msgid "" @@ -2435,23 +2432,23 @@ msgstr "选择一项" #: .\cookbook\templates\url_import.html:554 msgid "Note" -msgstr "" +msgstr "笔记" #: .\cookbook\templates\url_import.html:597 msgid "Add Keyword" -msgstr "" +msgstr "添加关键词" #: .\cookbook\templates\url_import.html:610 msgid "All Keywords" -msgstr "所有关键字" +msgstr "所有关键词" #: .\cookbook\templates\url_import.html:613 msgid "Import all keywords, not only the ones already existing." -msgstr "导入所有关键字,并不只是现有的。" +msgstr "导入所有关键词,并不只是现有的。" #: .\cookbook\templates\url_import.html:640 msgid "Information" -msgstr "" +msgstr "更多信息" #: .\cookbook\templates\url_import.html:642 msgid "" @@ -2470,15 +2467,15 @@ msgstr "" #: .\cookbook\templates\url_import.html:653 msgid "GitHub Issues" -msgstr "GitHub问题" +msgstr "GitHub 问题" #: .\cookbook\templates\url_import.html:655 msgid "Recipe Markup Specification" -msgstr "" +msgstr "菜谱标记规范" #: .\cookbook\views\api.py:88 .\cookbook\views\api.py:170 msgid "Parameter updated_at incorrectly formatted" -msgstr "" +msgstr "参数 updated_at 格式不正确" #: .\cookbook\views\api.py:190 .\cookbook\views\api.py:291 #, python-brace-format @@ -2487,7 +2484,7 @@ msgstr "" #: .\cookbook\views\api.py:194 msgid "Cannot merge with the same object!" -msgstr "" +msgstr "无法与同一对象合并!" #: .\cookbook\views\api.py:201 #, python-brace-format @@ -2496,30 +2493,30 @@ msgstr "" #: .\cookbook\views\api.py:206 msgid "Cannot merge with child object!" -msgstr "" +msgstr "无法与子对象合并!" #: .\cookbook\views\api.py:239 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" -msgstr "" +msgstr "{source.name} 已成功与 {target.name} 合并" #: .\cookbook\views\api.py:244 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" -msgstr "" +msgstr "视图合并 {source.name} 和 {target.name} 时出错" #: .\cookbook\views\api.py:300 #, python-brace-format msgid "{child.name} was moved successfully to the root." -msgstr "" +msgstr "{child.name} 已成功移动到根目录。" #: .\cookbook\views\api.py:303 .\cookbook\views\api.py:321 msgid "An error occurred attempting to move " -msgstr "" +msgstr "尝试移动时出错 " #: .\cookbook\views\api.py:306 msgid "Cannot move an object to itself!" -msgstr "" +msgstr "无法将对象移动到自身!" #: .\cookbook\views\api.py:312 #, python-brace-format @@ -2529,17 +2526,17 @@ msgstr "" #: .\cookbook\views\api.py:318 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" -msgstr "" +msgstr "{child.name} 成功移动到父节点 {parent.name}" #: .\cookbook\views\api.py:470 #, python-brace-format msgid "{obj.name} was removed from the shopping list." -msgstr "" +msgstr "{obj.name} 已从购物清单中删除。" #: .\cookbook\views\api.py:475 .\cookbook\views\api.py:726 #, python-brace-format msgid "{obj.name} was added to the shopping list." -msgstr "" +msgstr "{obj.name} 已添加到购物清单中。" #: .\cookbook\views\api.py:587 msgid "ID of recipe a step is part of. For multiple repeat parameter." @@ -2628,60 +2625,59 @@ msgstr "" #: .\cookbook\views\api.py:944 msgid "Sync successful!" -msgstr "" +msgstr "同步成功!" #: .\cookbook\views\api.py:949 msgid "Error synchronizing with Storage" -msgstr "" +msgstr "与存储同步时出错" #: .\cookbook\views\api.py:1028 msgid "Nothing to do." -msgstr "" +msgstr "无事可做。" #: .\cookbook\views\api.py:1043 msgid "The requested site provided malformed data and cannot be read." -msgstr "" +msgstr "请求的站点提供了格式错误的数据,无法读取。" #: .\cookbook\views\api.py:1050 msgid "The requested page could not be found." -msgstr "" +msgstr "找不到请求的页面。" #: .\cookbook\views\api.py:1068 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." -msgstr "" +msgstr "请求的站点未提供任何可识别的数据格式,无法从中导入菜谱。" #: .\cookbook\views\api.py:1082 msgid "Connection Refused." -msgstr "" +msgstr "连接被拒绝。" #: .\cookbook\views\api.py:1091 msgid "No useable data could be found." -msgstr "" +msgstr "找不到可用的数据。" #: .\cookbook\views\api.py:1107 msgid "I couldn't find anything to do." -msgstr "" +msgstr "无所事事。" #: .\cookbook\views\data.py:34 .\cookbook\views\data.py:129 #: .\cookbook\views\edit.py:49 .\cookbook\views\import_export.py:80 #: .\cookbook\views\new.py:33 msgid "You have reached the maximum number of recipes for your space." -msgstr "" +msgstr "你已经达到了空间的菜谱的最大数量。" #: .\cookbook\views\data.py:38 .\cookbook\views\data.py:133 #: .\cookbook\views\edit.py:53 .\cookbook\views\import_export.py:84 #: .\cookbook\views\new.py:37 msgid "You have more users than allowed in your space." -msgstr "" +msgstr "你的空间中的用户数超过了允许的数量。" #: .\cookbook\views\data.py:111 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "批量编辑完成。%(count)d 个菜谱已更新。" #: .\cookbook\views\delete.py:101 msgid "Monitor" @@ -2699,7 +2695,7 @@ msgstr "" #: .\cookbook\views\delete.py:158 msgid "Recipe Book" -msgstr "" +msgstr "菜谱书" #: .\cookbook\views\delete.py:170 msgid "Bookmarks" @@ -2707,45 +2703,46 @@ msgstr "书签" #: .\cookbook\views\delete.py:192 .\cookbook\views\new.py:238 msgid "Invite Link" -msgstr "" +msgstr "邀请链接" #: .\cookbook\views\edit.py:125 msgid "You cannot edit this storage!" -msgstr "" +msgstr "你不能编辑此存储空间!" #: .\cookbook\views\edit.py:149 +#, fuzzy msgid "Storage saved!" msgstr "存储已存储!" #: .\cookbook\views\edit.py:155 msgid "There was an error updating this storage backend!" -msgstr "" +msgstr "更新此存储后端时出错!" #: .\cookbook\views\edit.py:248 msgid "Changes saved!" -msgstr "更改已保存!" +msgstr "更改已保存!" #: .\cookbook\views\edit.py:252 msgid "Error saving changes!" -msgstr "" +msgstr "保存更改时出错!" #: .\cookbook\views\import_export.py:106 msgid "Importing is not implemented for this provider" -msgstr "" +msgstr "此提供程序未实现导入" #: .\cookbook\views\import_export.py:127 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." -msgstr "" +msgstr "此实例上未启用 PDF 导出器,因为它仍处于实验状态。" #: .\cookbook\views\import_export.py:132 msgid "Exporting is not implemented for this provider" -msgstr "" +msgstr "此提供程序未实现导出" #: .\cookbook\views\lists.py:25 msgid "Import Log" -msgstr "" +msgstr "导入日志" #: .\cookbook\views\lists.py:38 msgid "Discovery" @@ -2756,34 +2753,28 @@ msgid "Shopping Lists" msgstr "购物清单" #: .\cookbook\views\lists.py:148 -#, fuzzy -#| msgid "Supermarket" msgid "Supermarkets" msgstr "超市" #: .\cookbook\views\lists.py:164 -#, fuzzy -#| msgid "Shopping Lists" msgid "Shopping Categories" -msgstr "购物清单" +msgstr "购物类别" #: .\cookbook\views\lists.py:217 msgid "Steps" -msgstr "" +msgstr "步骤" #: .\cookbook\views\lists.py:232 -#, fuzzy -#| msgid "Shopping Lists" msgid "New Shopping List" -msgstr "购物清单" +msgstr "新购物清单" #: .\cookbook\views\new.py:126 msgid "Imported new recipe!" -msgstr "" +msgstr "导入新菜谱!" #: .\cookbook\views\new.py:129 msgid "There was an error importing this recipe!" -msgstr "" +msgstr "导入此菜谱时出错!" #: .\cookbook\views\new.py:212 msgid "Hello" @@ -2845,44 +2836,44 @@ msgstr "" #: .\cookbook\views\views.py:185 msgid "Comment saved!" -msgstr "评论已保存!" +msgstr "评论已保存!" #: .\cookbook\views\views.py:276 msgid "This feature is not available in the demo version!" -msgstr "" +msgstr "此功能在演示版本中不可用!" #: .\cookbook\views\views.py:335 msgid "You must select at least one field to search!" -msgstr "" +msgstr "你必须至少选择一个字段进行搜索!" #: .\cookbook\views\views.py:340 msgid "" "To use this search method you must select at least one full text search " "field!" -msgstr "" +msgstr "要使用此搜索方法,至少选择一个全文搜索字段!" #: .\cookbook\views\views.py:344 msgid "Fuzzy search is not compatible with this search method!" -msgstr "" +msgstr "模糊搜索与此搜索方法不兼容!" #: .\cookbook\views\views.py:470 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." -msgstr "" +msgstr "设置页面只能用于创建第一个用户!如果您忘记了超级用户凭据,请参阅 Django 文档,了解如何重置密码。" #: .\cookbook\views\views.py:477 msgid "Passwords dont match!" -msgstr "密码不匹配!" +msgstr "密码不匹配!" #: .\cookbook\views\views.py:493 msgid "User has been created, please login!" -msgstr "用户已创建,請登录!" +msgstr "用户已创建,请登录!" #: .\cookbook\views\views.py:509 msgid "Malformed Invite Link supplied!" -msgstr "" +msgstr "提供了格式错误的邀请链接!" #: .\cookbook\views\views.py:516 msgid "You are already member of a space and therefore cannot join this one." @@ -2894,19 +2885,19 @@ msgstr "成功加入空间。" #: .\cookbook\views\views.py:533 msgid "Invite Link not valid or already used!" -msgstr "邀请连结无效或已使用!" +msgstr "邀请链接无效或已使用!" #: .\cookbook\views\views.py:614 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." -msgstr "" +msgstr "未为此实例启用报告共享链接。请通知页面管理员报告问题。" #: .\cookbook\views\views.py:620 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." -msgstr "" +msgstr "菜谱共享链接已被禁用!有关更多信息,请与页面管理员联系。" #~ msgid "New Unit" #~ msgstr "新单位" diff --git a/cookbook/management/commands/rebuildindex.py b/cookbook/management/commands/rebuildindex.py index 425727df..6ca4038c 100644 --- a/cookbook/management/commands/rebuildindex.py +++ b/cookbook/management/commands/rebuildindex.py @@ -15,7 +15,7 @@ class Command(BaseCommand): def handle(self, *args, **options): if settings.DATABASES['default']['ENGINE'] not in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: - self.stdout.write(self.style.WARNING(_('Only Postgress databases use full text search, no index to rebuild'))) + self.stdout.write(self.style.WARNING(_('Only Postgresql databases use full text search, no index to rebuild'))) try: language = DICTIONARY.get(translation.get_language(), 'simple') diff --git a/cookbook/migrations/0166_alter_userpreference_shopping_add_onhand.py b/cookbook/migrations/0166_alter_userpreference_shopping_add_onhand.py new file mode 100644 index 00000000..2ae2352c --- /dev/null +++ b/cookbook/migrations/0166_alter_userpreference_shopping_add_onhand.py @@ -0,0 +1,26 @@ +# Generated by Django 3.2.11 on 2022-01-20 14:39 + +from django.db import migrations, models +from django_scopes import scopes_disabled + + +def add_default_trigram(apps, schema_editor): + with scopes_disabled(): + UserPreference = apps.get_model('cookbook', 'UserPreference') + + UserPreference.objects.all().update(shopping_add_onhand=False) + + +class Migration(migrations.Migration): + dependencies = [ + ('cookbook', '0165_remove_step_type'), + ] + + operations = [ + migrations.AlterField( + model_name='userpreference', + name='shopping_add_onhand', + field=models.BooleanField(default=False), + ), + migrations.RunPython(add_default_trigram), + ] diff --git a/cookbook/migrations/0167_userpreference_left_handed.py b/cookbook/migrations/0167_userpreference_left_handed.py new file mode 100644 index 00000000..23fb0f4a --- /dev/null +++ b/cookbook/migrations/0167_userpreference_left_handed.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.11 on 2022-01-20 22:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0166_alter_userpreference_shopping_add_onhand'), + ] + + operations = [ + migrations.AddField( + model_name='userpreference', + name='left_handed', + field=models.BooleanField(default=False), + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index df6ec226..fef3ab83 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -337,8 +337,9 @@ class UserPreference(models.Model, PermissionModelMixin): mealplan_autoadd_shopping = models.BooleanField(default=False) mealplan_autoexclude_onhand = models.BooleanField(default=True) mealplan_autoinclude_related = models.BooleanField(default=True) - shopping_add_onhand = models.BooleanField(default=True) + shopping_add_onhand = models.BooleanField(default=False) filter_to_supermarket = models.BooleanField(default=False) + left_handed = models.BooleanField(default=False) default_delay = models.DecimalField(default=4, max_digits=8, decimal_places=4) shopping_recent_days = models.PositiveIntegerField(default=7) csv_delim = models.CharField(max_length=2, default=",") @@ -515,7 +516,7 @@ class Food(ExportModelOperationsMixin('food'), TreeModel, PermissionModelMixin): @staticmethod def reset_inheritance(space=None): - # resets inheritted fields to the space defaults and updates all inheritted fields to root object values + # resets inherited fields to the space defaults and updates all inherited fields to root object values inherit = space.food_inherit.all() # remove all inherited fields from food diff --git a/cookbook/provider/nextcloud.py b/cookbook/provider/nextcloud.py index 743ad821..b1d31919 100644 --- a/cookbook/provider/nextcloud.py +++ b/cookbook/provider/nextcloud.py @@ -33,7 +33,7 @@ class Nextcloud(Provider): try: files.pop(0) # remove first element because its the folder itself except IndexError: - pass # folder is emtpy, no recipes will be imported + pass # folder is empty, no recipes will be imported import_count = 0 for file in files: diff --git a/cookbook/serializer.py b/cookbook/serializer.py index a020bec7..6fa745a2 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -183,7 +183,7 @@ class UserPreferenceSerializer(WritableNestedModelSerializer): 'user', 'theme', 'nav_color', 'default_unit', 'default_page', 'use_kj', 'search_style', 'show_recent', 'plan_share', 'ingredient_decimals', 'comments', 'shopping_auto_sync', 'mealplan_autoadd_shopping', 'food_inherit_default', 'default_delay', 'mealplan_autoinclude_related', 'mealplan_autoexclude_onhand', 'shopping_share', 'shopping_recent_days', 'csv_delim', 'csv_prefix', - 'filter_to_supermarket', 'shopping_add_onhand' + 'filter_to_supermarket', 'shopping_add_onhand', 'left_handed' ) @@ -865,7 +865,7 @@ class AutomationSerializer(serializers.ModelSerializer): # CORS, REST and Scopes aren't currently working -# Scopes are evaluating before REST has authenticated the user assiging a None space +# Scopes are evaluating before REST has authenticated the user assigning a None space # I've made the change below to fix the bookmarklet, other serializers likely need a similar/better fix class BookmarkletImportSerializer(serializers.ModelSerializer): def create(self, validated_data): diff --git a/cookbook/signals.py b/cookbook/signals.py index c21d6638..d763b897 100644 --- a/cookbook/signals.py +++ b/cookbook/signals.py @@ -72,7 +72,7 @@ def update_food_inheritance(sender, instance=None, created=False, **kwargs): return inherit = inherit.values_list('field', flat=True) - # apply changes from parent to instance for each inheritted field + # apply changes from parent to instance for each inherited field if instance.parent and inherit.count() > 0: parent = instance.get_parent() if 'ignore_shopping' in inherit: diff --git a/cookbook/static/themes/tandoor.min.css b/cookbook/static/themes/tandoor.min.css index 9dc091af..f329e4e8 100644 --- a/cookbook/static/themes/tandoor.min.css +++ b/cookbook/static/themes/tandoor.min.css @@ -10461,4 +10461,9 @@ textarea, input:not([type="submit"]):not([class="multiselect__input"]):not([clas .form-control-search { font-size: 20px; +} + +.ghost { + opacity: 0.5 !important; + background: #b98766 !important; } \ No newline at end of file diff --git a/cookbook/templates/markdown_info.html b/cookbook/templates/markdown_info.html index d3d51d80..853fe14f 100644 --- a/cookbook/templates/markdown_info.html +++ b/cookbook/templates/markdown_info.html @@ -54,7 +54,7 @@

{% trans 'Formatting' %}


         {% trans 'Line breaks are inserted by adding two spaces after the end of a line' %}
-        {% trans 'or by leaving a blank line inbetween.' %}
+        {% trans 'or by leaving a blank line in between.' %}
 
         **{% trans 'This text is bold' %}**
         *{% trans 'This text is italic' %}*
@@ -70,7 +70,7 @@
     
{% trans 'Line breaks are inserted by adding two spaces after the end of a line' %}
- {% trans 'or by leaving a blank line inbetween.' %}

+ {% trans 'or by leaving a blank line in between.' %}

{% trans 'This text is bold' %}
{% trans 'This text is italic' %}
@@ -82,7 +82,7 @@

{% trans 'Lists' %}

- {% trans 'Lists can ordered or unorderd. It is important to leave a blank line before the list!' %} + {% trans 'Lists can ordered or unordered. It is important to leave a blank line before the list!' %}

         {% trans 'Ordered List' %}
 
diff --git a/cookbook/templates/search_info.html b/cookbook/templates/search_info.html
index 6f267a58..262b0428 100644
--- a/cookbook/templates/search_info.html
+++ b/cookbook/templates/search_info.html
@@ -27,7 +27,7 @@
             {% endblocktrans %}

{% trans 'Simple' %}

{% blocktrans %} - Simple searches ignore punctuation and common words such as 'the', 'a', 'and'. And will treat seperate words as required. + Simple searches ignore punctuation and common words such as 'the', 'a', 'and'. And will treat separate words as required. Searching for 'apple or flour' will return any recipe that includes both 'apple' and 'flour' anywhere in the fields that have been selected for a full text search. {% endblocktrans %}

{% trans 'Phrase' %}

@@ -39,7 +39,7 @@

{% blocktrans %} Web searches simulate functionality found on many web search sites supporting special syntax. Placing quotes around several words will convert those words into a phrase. - 'or' is recongized as searching for the word (or phrase) immediately before 'or' OR the word (or phrase) directly after. + 'or' is recognized as searching for the word (or phrase) immediately before 'or' OR the word (or phrase) directly after. '-' is recognized as searching for recipes that do not include the word (or phrase) that comes immediately after. For example searching for 'apple pie' or cherry -butter will return any recipe that includes the phrase 'apple pie' or the word 'cherry' in any field included in the full text search but exclude any recipe that has the word 'butter' in any field included. @@ -59,7 +59,7 @@ {% blocktrans %} Another approach to searching that also requires Postgresql is fuzzy search or trigram similarity. A trigram is a group of three consecutive characters. For example searching for 'apple' will create x trigrams 'app', 'ppl', 'ple' and will create a score of how closely words match the generated trigrams. - One benefit of searching trigams is that a search for 'sandwich' will find mispelled words such as 'sandwhich' that would be missed by other methods. + One benefit of searching trigams is that a search for 'sandwich' will find misspelled words such as 'sandwhich' that would be missed by other methods. {% endblocktrans %}

diff --git a/cookbook/templates/shopping_list.html b/cookbook/templates/shopping_list.html index dcc4ba53..cfb2cb7f 100644 --- a/cookbook/templates/shopping_list.html +++ b/cookbook/templates/shopping_list.html @@ -263,7 +263,7 @@ {% if request.user.userpreference.shopping_auto_sync > 0 %}
- +
{% endif %} @@ -634,7 +634,7 @@ console.log('updating recipe', this.shopping_list.recipes[i]) recipe_promises.push(this.$http.post("{% url 'api:shoppinglistrecipe-list' %}", this.shopping_list.recipes[i], {}).then((response) => { let old_id = this.shopping_list.recipes[i].id - console.log("list recipe create respose ", response.body) + console.log("list recipe create response ", response.body) this.$set(this.shopping_list.recipes, i, response.body) for (let e of this.shopping_list.entries.filter(item => item.list_recipe === old_id)) { console.log("found recipe updating ID") diff --git a/cookbook/templates/url_import.html b/cookbook/templates/url_import.html index 1b6de710..8404527d 100644 --- a/cookbook/templates/url_import.html +++ b/cookbook/templates/url_import.html @@ -908,28 +908,22 @@ // }) }, searchUnits: function (query) { - let apiFactory = new ApiApiFactory() - this.units_loading = true - apiFactory - .listUnits(query, 1, this.options_limit) - .then((response) => { - this.units = response.data.results - - if (this.recipe !== undefined) { - for (let s of this.recipe.steps) { - for (let i of s.ingredients) { - if (i.unit !== null && i.unit.id === undefined) { - this.units.push(i.unit) - } - } + this.$http.get("{% url 'dal_unit' %}" + '?q=' + query).then((response) => { + this.units = response.data.results; + if (this.recipe_data !== undefined) { + for (let x of Array.from(this.recipe_data.recipeIngredient)) { + if (x.unit !== null && x.unit.text !== '') { + this.units = this.units.filter(item => item.text !== x.unit.text) + this.units.push(x.unit) } } - this.units_loading = false - }) - .catch((err) => { - StandardToasts.makeStandardToast(StandardToasts.FAIL_FETCH) - }) + } + this.units_loading = false + }).catch((err) => { + console.log(err) + this.makeToast(gettext('Error'), gettext('There was an error loading a resource!') + err.bodyText, 'danger') + }) }, searchIngredients: function (query) { this.ingredients_loading = true diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 5726bbae..1d514056 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -1088,7 +1088,7 @@ def recipe_from_source(request): return JsonResponse( { 'error': True, - 'msg': _('No useable data could be found.') + 'msg': _('No usable data could be found.') }, status=400 ) diff --git a/cookbook/views/views.py b/cookbook/views/views.py index c40dce37..088d18bb 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -411,7 +411,7 @@ def user_settings(request): if (api_token := Token.objects.filter(user=request.user).first()) is None: api_token = Token.objects.create(user=request.user) - # these fields require postgress - just disable them if postgress isn't available + # these fields require postgresql - just disable them if postgresql isn't available if not settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: search_form.fields['search'].disabled = True diff --git a/docs/faq.md b/docs/faq.md index 768f19fa..a9b0bdc5 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -51,7 +51,7 @@ In technical terms it is a multi tenant system. You can compare a space to something like google drive or dropbox. There is only one installation of the Dropbox system, but it handles multiple users without them noticing each other. For Tandoor that means all people that work together on one recipe collection can be in one space. -If you want to host the collection of your friends family or your neighbor you can create a separate space for them (trough the admin interface). +If you want to host the collection of your friends family or your neighbor you can create a separate space for them (through the admin interface). Sharing between spaces is currently not possible but is planned for future releases. diff --git a/docs/features/authentication.md b/docs/features/authentication.md index 0f611488..abdd6660 100644 --- a/docs/features/authentication.md +++ b/docs/features/authentication.md @@ -25,8 +25,8 @@ SOCIAL_PROVIDERS=allauth.socialaccount.providers.github,allauth.socialaccount.pr The exact formatting is important so make sure to follow the steps explained here! Depending on your authentication provider you **might need** to configure it. -This needs to be done trough the settings system. To make the system flexible (allow multiple providers) and to -not require another file to be mounted into the container the configuration ins done trough a single +This needs to be done through the settings system. To make the system flexible (allow multiple providers) and to +not require another file to be mounted into the container the configuration ins done through a single environment variable. The downside of this approach is that the configuration needs to be put into a single line as environment files loaded by docker compose don't support multiple lines for a single variable. diff --git a/docs/features/external_recipes.md b/docs/features/external_recipes.md index 325f509d..29a0be42 100644 --- a/docs/features/external_recipes.md +++ b/docs/features/external_recipes.md @@ -35,7 +35,7 @@ The basic configuration is the same for all providers. ### Local !!! info - There is currently no way to upload files trough the webinterface. This is a feature that might be added later. + There is currently no way to upload files through the webinterface. This is a feature that might be added later. The local provider does not need any configuration. For the monitor you will need to define a valid path on your host system. diff --git a/docs/index.md b/docs/index.md index e4e1bfb2..4a44fa27 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,7 +9,7 @@

The recipe manager that allows you to manage your ever growing collection of digital recipes.

- + @@ -85,7 +85,7 @@ there are some greater overall goals for the future (in no particular order) - Improve the UI! The Design is inconsistent and many pages work but don't look great. This needs to change. - I strongly believe in Open Data and Systems. Thus adding importers and exporters for all relevant other recipe management systems is something i really want to do. -- Move all Javascript Libraries to a packet manger and clean up some of the mess I made in the early days +- Move all Javascript Libraries to a packet manager and clean up some of the mess I made in the early days - Improve Test coverage and also the individual tests themselves - Improve the documentation for all features and aspects of this project and add some application integrated help diff --git a/docs/install/kubernetes.md b/docs/install/kubernetes.md index 8a67b5de..1b7125c3 100644 --- a/docs/install/kubernetes.md +++ b/docs/install/kubernetes.md @@ -3,7 +3,7 @@ ## K8s Setup -This is a setup which should be sufficent for production use. Be sure to replace the default secrets! +This is a setup which should be sufficient for production use. Be sure to replace the default secrets! ## Files @@ -49,7 +49,7 @@ The creation of the persistent volume claims for media and static content. May y ### 40-sts-postgresql.yaml -The PostgreSQL stateful set, based on a bitnami image. It runs a init container as root to do the preparations. The postgres container itsef runs as a lower privileged user. The recipes app uses the database super user (postgres) as the recipies app is doing some db migrations on startup, which needs super user privileges. +The PostgreSQL stateful set, based on a bitnami image. It runs a init container as root to do the preparations. The postgres container itself runs as a lower privileged user. The recipes app uses the database super user (postgres) as the recipes app is doing some db migrations on startup, which needs super user privileges. ### 45-service-db.yaml @@ -57,7 +57,7 @@ Creating the database service. ### 50-deployment.yaml -The deployment first fires up a init container to do the database migrations and file modifications. This init container runs as root. The init conainer runs part of the [boot.sh](https://github.com/TandoorRecipes/recipes/blob/develop/boot.sh) script from the `vabene1111/recipes` image. +The deployment first fires up a init container to do the database migrations and file modifications. This init container runs as root. The init container runs part of the [boot.sh](https://github.com/TandoorRecipes/recipes/blob/develop/boot.sh) script from the `vabene1111/recipes` image. The deployment then runs two containers, the recipes-nginx and the recipes container which runs the gunicorn app. The nginx container gets it's nginx.conf via config map to deliver static content `/static` and `/media`. The guincorn container gets it's secret key and the database password from the secret `recipes`. `gunicorn` runs as user `nobody`. diff --git a/docs/install/manual.md b/docs/install/manual.md index 4601c0cd..e37334dd 100644 --- a/docs/install/manual.md +++ b/docs/install/manual.md @@ -1,6 +1,6 @@ # Manual installation instructions -These intructions are inspired from a standard django/gunicorn/postgresql instructions ([for example](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04)) +These instructions are inspired from a standard django/gunicorn/postgresql instructions ([for example](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04)) !!! warning Be sure to use python 3.9 and pip related to python 3.9. Depending on your distribution calling `python` or `pip` will use python2 instead of python 3.9. @@ -122,7 +122,7 @@ ExecStart=/var/www/recipes/bin/gunicorn --error-logfile /tmp/gunicorn_err.log -- WantedBy=multi-user.target ``` -*Note*: `-error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output` are usefull for debugging and can be removed later +*Note*: `-error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output` are useful for debugging and can be removed later *Note2*: Fix the path in the `ExecStart` line to where you gunicorn and recipes are diff --git a/docs/install/other.md b/docs/install/other.md index 4b42eb09..a060b057 100644 --- a/docs/install/other.md +++ b/docs/install/other.md @@ -57,4 +57,4 @@ apache: I used two paths `` and `` for simplicity. In my case I have ` = recipes` and ` = serve/recipes`. One could also change the matching rules of traefik to have everything under one path. -I left out the TLS config in this example for simplicty. +I left out the TLS config in this example for simplicity. diff --git a/docs/install/synology.md b/docs/install/synology.md index 2ff6247e..c4bb27e3 100644 --- a/docs/install/synology.md +++ b/docs/install/synology.md @@ -80,7 +80,7 @@ Easiest way is to do it via Reverse Proxy. - insert name - Source: - Protocol: HTTPS - - Hostname: URL if you acces from outside, otherwise ip in network + - Hostname: URL if you access from outside, otherwise ip in network - Port: The port you want to access, has to be a different one that the one in the docker-compose file - HSTS can be enabled - Destination: @@ -90,14 +90,14 @@ Easiest way is to do it via Reverse Proxy. - Click on Custom Header and press Create -> Websocket - Save - Control Panel -> Security -> Firewall -> Edit Rules -> Create - - Ports: Select form a list of build-in applications -> Select -> You find your Reverse Proxy, enable it + - Ports: Select form a list of built-in applications -> Select -> You find your Reverse Proxy, enable it - Source IP: Depends, All allows access from outside, i use specific to only connect in my network - Action: Allow - Save and make sure it's above the deny rules [Deprecated, Note: ssl Path changed for DSM 7] 6.1 Additional SSL Setup -- create foler `ssl` inside `nginx` folder +- create folder `ssl` inside `nginx` folder - download your ssl certificate from `security` tab in dsm `control panel` - or create a task in `task manager` because Synology will update the certificate every few months - set task to repeat every day diff --git a/docs/install/traefik.md b/docs/install/traefik.md index 6e773b57..e049b3d3 100644 --- a/docs/install/traefik.md +++ b/docs/install/traefik.md @@ -1,6 +1,6 @@ !!! danger - Please refer to [the offical documentation](https://doc.traefik.io/traefik/). - This example just shows something similar to my setup in case you dont understand the offical documentation. + Please refer to [the official documentation](https://doc.traefik.io/traefik/). + This example just shows something similar to my setup in case you dont understand the official documentation. You need to create a network called `traefik` using `docker network create traefik`. ## docker-compose.yml diff --git a/docs/system/backup.md b/docs/system/backup.md index 80af942a..b265eeb9 100644 --- a/docs/system/backup.md +++ b/docs/system/backup.md @@ -2,7 +2,7 @@ There is currently no "good" way of backing up your data implemented in the appl This mean that you will be responsible for backing up your data. It is planned to add a "real" backup feature similar to applications like homeassistant where a snapshot can be -downloaded and restored trough the web interface. +downloaded and restored through the web interface. !!! warning When developing a new backup strategy, make sure to also test the restore process! diff --git a/docs/system/permissions.md b/docs/system/permissions.md index bdf34073..3c3374a5 100644 --- a/docs/system/permissions.md +++ b/docs/system/permissions.md @@ -21,13 +21,13 @@ The following table roughly defines the capabilities of each role !!! warning Users without groups cannot do anything. Make sure to assign them a group! -You can either create new users trough the admin interface or by sending them invite links. +You can either create new users through the admin interface or by sending them invite links. Invite links can be generated on the System page. If you specify a username during the creation of the link the person using it won't be able to change that name. ## Managing Permissions -Management of permissions can currently only be achieved trough the django admin interface. +Management of permissions can currently only be achieved through the django admin interface. !!! warning Please do not rename the groups as this breaks the permission system. diff --git a/recipes/settings.py b/recipes/settings.py index e5283271..a4e07133 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -407,7 +407,7 @@ TEST_RUNNER = "cookbook.helper.CustomTestRunner.CustomTestRunner" # settings for cross site origin (CORS) # all origins allowed to support bookmarklet # all of this may or may not work with nginx or other web servers -# TODO make this user configureable - enable or disable bookmarklets +# TODO make this user configurable - enable or disable bookmarklets # TODO since token auth is enabled - this all should be https by default CORS_ORIGIN_ALLOW_ALL = True diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue index 85485d4e..d45fb075 100644 --- a/vue/src/apps/MealPlanView/MealPlanView.vue +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -79,21 +79,20 @@

{{ $t("Meal_Types") }}
- - + - +
-
+
-
+
{{ meal_type.icon }} {{ meal_type.name - }} diff --git a/vue/src/apps/RecipeSearchView/RecipeSearchView.vue b/vue/src/apps/RecipeSearchView/RecipeSearchView.vue index 669af365..7a66b7c4 100644 --- a/vue/src/apps/RecipeSearchView/RecipeSearchView.vue +++ b/vue/src/apps/RecipeSearchView/RecipeSearchView.vue @@ -1,6 +1,6 @@