Compare commits

..

No commits in common. "main" and "v1" have entirely different histories.
main ... v1

383 changed files with 12986 additions and 23606 deletions

View file

@ -1,10 +0,0 @@
---
name: Blank
about: Use this when the other two are not applicable
title: ''
labels: ''
assignees: vishnuraghavb
---

View file

@ -1,32 +1,31 @@
--- ---
name: Bug report name: Bug report
about: Create a report to help us improve about: Create a report to help us improve
title: "[Bug]" title: "[BUG]"
labels: bug labels: bug
assignees: vishnuraghavb assignees: vishnuraghavb
--- ---
**Describe the bug** **Describe the bug**
<!---A clear and concise description of what the bug is--> A clear and concise description of what the bug is.
**To Reproduce** **To Reproduce**
Steps to reproduce the behavior: Steps to reproduce the behavior:
1. Go to '...' 1. Go to '...'
2. Tap on '....' 2. Click on '....'
3. Scroll down to '....' 3. Scroll down to '....'
4. See error 4. See error
**Expected behavior** **Expected behavior**
<!---A clear and concise description of what you expected to happen--> A clear and concise description of what you expected to happen.
**Screenshots** **Screenshots**
<!---If applicable, add screenshots to help explain your problem--> If applicable, add screenshots to help explain your problem.
**Device information (please complete the following information):** **Device information (please complete the following information):**
- Android Version: [e.g. 8 or Oreo] - Android Version: [e.g. 8 or Oreo]
- EnRecipes Version(as in app's about page): [e.g. 2.0.0] - EnRecipes Version(as in app's about page): [e.g. 1.1.4]
**Additional context** **Additional context**
<!---Add any other context about the problem here--> Add any other context about the problem here.

View file

@ -1,7 +1,7 @@
--- ---
name: Feature request name: Feature request
about: Suggest an idea for this project about: Suggest an idea for this project
title: "[Feature request]" title: "[FEATURE REQUEST]"
labels: enhancement labels: enhancement
assignees: vishnuraghavb assignees: vishnuraghavb
@ -11,13 +11,13 @@ assignees: vishnuraghavb
- [ ] I've checked the roadmap and my feature request is not listed there - [ ] I've checked the roadmap and my feature request is not listed there
**Is your feature request related to a problem? Please describe.** **Is your feature request related to a problem? Please describe.**
<!---A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]--> A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like** **Describe the solution you'd like**
<!---A clear and concise description of what you want to happen--> A clear and concise description of what you want to happen.
**Describe alternatives you've considered** **Describe alternatives you've considered**
<!---A clear and concise description of any alternative solutions or features you've considered--> A clear and concise description of any alternative solutions or features you've considered.
**Additional context** **Additional context**
<!---Add any other context or screenshots about the feature request here--> Add any other context or screenshots about the feature request here.

View file

@ -6,4 +6,4 @@ Here are some important resources:
- The [roadmap](https://github.com/vishnuraghavb/EnRecipes/projects/1) will tell you whats the future of EnRecipes. Your feedback and suggestions are very important to make EnRecipes the best. If you have an idea to improve EnRecipes, [do let me know](https://github.com/vishnuraghavb/EnRecipes#having-issues-suggestions-and-feedback). I'm always open to ideas ;) - The [roadmap](https://github.com/vishnuraghavb/EnRecipes/projects/1) will tell you whats the future of EnRecipes. Your feedback and suggestions are very important to make EnRecipes the best. If you have an idea to improve EnRecipes, [do let me know](https://github.com/vishnuraghavb/EnRecipes#having-issues-suggestions-and-feedback). I'm always open to ideas ;)
- You can help [translate EnRecipes using Weblate](https://hosted.weblate.org/engage/enrecipes/) into the language of your choice. See [translation instructions](https://github.com/vishnuraghavb/EnRecipes/wiki/Translation-Instructions) in the wiki for more information. - You can help [translate EnRecipes using Weblate](https://hosted.weblate.org/engage/enrecipes/) into the language of your choice. See [translation instructions](https://github.com/vishnuraghavb/EnRecipes/wiki/Translation-Instructions) in the wiki for more information.
- Bugs, suggestions or feedback? You can [create an issue here](https://github.com/vishnuraghavb/EnRecipes/issues) or [join the Telegram group](http://t.me/enrecipes) (quicker replies) or contact me at apps@vishnuraghav.com - Bugs, suggestions or feedback? You can [create an issue here](https://github.com/vishnuraghavb/EnRecipes/issues) or [join the Telegram group](http://t.me/enrecipes)(quicker replies) or contact me at apps@vishnuraghav.com

View file

@ -1,16 +1,4 @@
## ⏸️ This project has been PAUSED for an unknown period of time. <p align="center"><a href="https://enrecipes.vercel.app"><img src="fastlane/metadata/android/en-GB/images/featureGraphic.png" width="100%"></a></p>
#### :warning: IMPORTANT NOTICE for users with EnRecipes v1.3.2 or before:
To continue receiving updates, please update your EnRecipes to the latest version.
There are some significant changes in this version. So, in order to continue, you must do the following:
1. Export a full backup.
2. Uninstall EnRecipes.
3. Install this version and Import your data.
<p align="center"><a href="https://enrecipes.vercel.app"><img src="fastlane/metadata/android/en-US/images/featureGraphic.png" width="100%"></a></p>
<h1 align="center">A Simple, Offline Recipe Manager</h1> <h1 align="center">A Simple, Offline Recipe Manager</h1>
<p align="center">EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes.</p> <p align="center">EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes.</p>
@ -18,16 +6,16 @@ There are some significant changes in this version. So, in order to continue, yo
<a href="https://www.gnu.org/licenses/gpl-3.0" alt="License: GPLv3"><img src="https://img.shields.io/badge/license-GPL%20v3-blue"></a> <a href="https://github.com/vishnuraghavb/EnRecipes/releases" alt="Release version"><img src="https://img.shields.io/github/v/release/vishnuraghavb/EnRecipes?color=ff5200"/></a> <a href="https://hosted.weblate.org/engage/enrecipes/"> <a href="https://www.gnu.org/licenses/gpl-3.0" alt="License: GPLv3"><img src="https://img.shields.io/badge/license-GPL%20v3-blue"></a> <a href="https://github.com/vishnuraghavb/EnRecipes/releases" alt="Release version"><img src="https://img.shields.io/github/v/release/vishnuraghavb/EnRecipes?color=ff5200"/></a> <a href="https://hosted.weblate.org/engage/enrecipes/">
<img src="https://hosted.weblate.org/widgets/enrecipes/-/app-translations/svg-badge.svg" alt="Translation status" /></a> <img src="https://hosted.weblate.org/widgets/enrecipes/-/app-translations/svg-badge.svg" alt="Translation status" /></a>
<p align="center"> <p align="center">
<a href="https://f-droid.org/packages/com.vishnuraghav.EnRecipes"><img src="assets/Images/fdroid-badge.png" height="80"/></a><a href="https://apt.izzysoft.de/fdroid/index/apk/com.vishnuraghav.EnRecipes"><img src="assets/Images/IzzyOnDroid-badge.png" height="80"/></a><a href="https://play.google.com/store/apps/details?id=com.vishnuraghav.EnRecipes"><img src="assets/Images/google-play-badge.png" height="80"/></a><br>You can also get the <a href="https://github.com/vishnuraghavb/EnRecipes/releases/latest">latest release on GitHub</a> <a href="https://play.google.com/store/apps/details?id=com.vishnuraghav.enrecipes"><img src="assets/Images/google-play-badge.png" height="80"/></a><a href="https://apt.izzysoft.de/fdroid/index/apk/com.vishnuraghav.enrecipes"><img src="assets/Images/IzzyOnDroid.png" height="80"/></a><br>You can also get the <a href="https://github.com/vishnuraghavb/EnRecipes/releases/latest">latest release on GitHub</a>
</p> </p>
<h2 align="center">Enjoying EnRecipes?</h2> <h2 align="center">Enjoying EnRecipes?</h2>
<p align="center">Please consider making a small donation to help fund the project. Developing an application, especially one that is open source and completely free, takes a lot of time and effort. <p align="center">Please consider making a small donation to help fund the project. Developing an application, especially one that is open source and completely free, takes a lot of time and effort.
<br> <br>
<br> <br>
<a href="https://www.vishnuraghav.com/donate/"><img alt="Donate to Vishnu Raghav" src="assets/Images/donate.svg" height="48"></a></p> <a href="https://www.vishnuraghav.com/donate/"><img alt="Donate to Vishnu Raghav" src="assets/Images/donate.svg" width="240"></a></p>
<hr> <hr>
<h3 align="center">Important Links</h3> <h3 align="center">Important Links</h3>
<p align="center"><a href="https://github.com/vishnuraghavb/EnRecipes/wiki/User-Guide">User Guide</a> · <a href="https://github.com/vishnuraghavb/EnRecipes/blob/main/PRIVACY.md">Privacy Policy</a> · <a href="https://github.com/vishnuraghavb/EnRecipes/blob/main/CONTRIBUTING.md">Contribution Guide</a> · <a href="https://github.com/vishnuraghavb/EnRecipes/projects/1">Roadmap</a> · <a href="https://t.me/enrecipes/">Telegram Group</a> · <a href="https://enrecipes.vercel.app/">Website</a></p> <p align="center"><a href="https://github.com/vishnuraghavb/EnRecipes/wiki/User-Guide">User Guide</a> - <a href="https://github.com/vishnuraghavb/EnRecipes/blob/main/PRIVACY.md">Privacy Policy</a> - <a href="https://github.com/vishnuraghavb/EnRecipes/blob/main/CONTRIBUTING.md">Contribution Guide</a> - <a href="https://github.com/vishnuraghavb/EnRecipes/projects/1">Roadmap</a> - <a href="https://t.me/enrecipes/">Telegram Group</a> - <a href="https://enrecipes.vercel.app/">Website</a></p>
<hr> <hr>
## Features ## Features
@ -40,34 +28,37 @@ There are some significant changes in this version. So, in order to continue, yo
- Scale your recipe ingredients to serve more or less people - Scale your recipe ingredients to serve more or less people
- Get notified of the last time you tried a recipe - Get notified of the last time you tried a recipe
- Share your recipe to anyone by any means as a nicely formatted message. You can share the recipe photo too. - Share your recipe to anyone by any means as a nicely formatted message. You can share the recipe photo too.
- Shake your device to view a random recipe - Shake device to view random recipe
- Create meal plans - Create meal plans
- Set cooking timers - Import/Export recipes
- You can Import or Export your data
- Light, Dark and Black themes - Light, Dark and Black themes
## Highlights ## Highlights
- 100% free and open-source - 100% free and open-source
- Private by Design - Private by Design
- No special permissions required - No permissions required
- No annoying ads or pop-ups - No annoying ads or pop-ups
**Languages being translated**:
[![Translation status](https://hosted.weblate.org/widgets/enrecipes/-/app-translations/multi-auto.svg)](https://hosted.weblate.org/engage/enrecipes/)
Check the [Roadmap](https://github.com/vishnuraghavb/EnRecipes/projects/1) for upcoming features. Check the [Roadmap](https://github.com/vishnuraghavb/EnRecipes/projects/1) for upcoming features.
Please read the [User Guide](https://github.com/vishnuraghavb/EnRecipes/wiki/User-Guide) to get the most out of EnRecipes. Please read the [User Guide](https://github.com/vishnuraghavb/EnRecipes/wiki/User-Guide) to get the most out of EnRecipes.
## Screenshots ## Screenshots
| <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" width=276> | <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/2.png" width=276> | | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/1.png" width=276> | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/2.png" width=276> |
| :---------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------: | | :---------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------: |
| **Home - Light theme** | **Home - Dark theme** | | **Home - Light theme** | **Home - Dark theme** |
| <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/3.png" width=276> | <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/4.png" width=276> | | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/3.png" width=276> | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/4.png" width=276> |
| **Recipe view** | **Scale ingredients** | | **Home - Black theme** | **Recipe view** |
| <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/5.png" width=276> | <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/6.png" width=276> | | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/5.png" width=276> | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/6.png" width=276> |
| **Share menu** | **Meal Planner** | | **Share menu** | **Scale ingredients** |
| <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/7.png" width=276> | <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/8.png" width=276> | | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/7.png" width=276> | <img src="fastlane/metadata/android/en-GB/images/phoneScreenshots/8.png" width=276> |
| **Cooking Timer** | **About** | | **Meal planner** | **About** |
## Contribution ## Contribution
@ -83,52 +74,19 @@ You can,
- [Join the Telegram group](http://t.me/enrecipes) (quicker replies) - [Join the Telegram group](http://t.me/enrecipes) (quicker replies)
- Contact me at apps@vishnuraghav.com - Contact me at apps@vishnuraghav.com
### Looking to translate EnRecipes? ### Looking to translate the app to your own language?
EnRecipes is being translated using [Weblate](https://hosted.weblate.org/engage/enrecipes/). See [translation instructions](https://github.com/vishnuraghavb/EnRecipes/wiki/Translation-Instructions) in the wiki for more information. EnRecipes is being translated using [Weblate](https://hosted.weblate.org/engage/enrecipes/). See [translation instructions](https://github.com/vishnuraghavb/EnRecipes/wiki/Translation-Instructions) in the wiki for more information.
<!-- <a href="https://hosted.weblate.org/engage/enrecipes/">
<img src="https://hosted.weblate.org/widgets/enrecipes/-/app-translations/287x66-grey.png" alt="Translation status" />
</a> -->
<a href="https://hosted.weblate.org/engage/enrecipes/"> <a href="https://hosted.weblate.org/engage/enrecipes/">
<img src="https://hosted.weblate.org/widgets/enrecipes/-/open-graph.png" alt="Translation status" /> <img src="https://hosted.weblate.org/widgets/enrecipes/-/app-translations/287x66-grey.png" alt="Translation status" />
</a> </a>
## Credits ## Credits
This app was written in my free time using NativeScript-Vue. I would like to thank all those people who helped me understand the concepts during the process and my special thanks to the NativeScript team and the community. I also would like to thank the members of the [EnRecipes Telegram group](https://t.me/enrecipes) for contributing their ideas for this project. This app was written in my free time using NativeScript-Vue. I would like to thank all those people who helped me understand the concepts during the process and my special thanks to the NativeScript team and the community. I also would like to thank the members of the [EnRecipes Telegram group](https://t.me/enrecipes) for contributing their ideas for this project.
### Translation credits ### Recipes used in the Screenshots
| Language | Translator(s) |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Arabic | [phwright](https://hosted.weblate.org/user/phwright/) |
| Catalan | J. Lavoie |
| Danish | [mondstern](https://hosted.weblate.org/user/mondstern/), Henrik Dankvardt, J. Lavoie, Allan Nordhøy, Jonas Hansen |
| Dutch | Heimen Stoffels |
| English (India) | Vishnu Raghav B |
| English (United Kingdom) | Vishnu Raghav B |
| English (United States) | Vishnu Raghav B |
| Finnish | J. Lavoie |
| French | J. Lavoie, Swann Fournial, fabeuss, [mondstern](https://hosted.weblate.org/user/mondstern/) |
| French (Canada) | Swann Fournial, J. Lavoie |
| French (Switzerland) | Swann Fournial, J. Lavoie |
| French (Belgium) | Swann Fournial, J. Lavoie |
| German | J. Lavoie, nautilusx, Swann Fournial |
| Hindi | Vishnu Raghav B, V |
| Indonesian | Reza Almanda, [mondstern](https://hosted.weblate.org/user/mondstern/) |
| Italian | J. Lavoie, [mondstern](https://hosted.weblate.org/user/mondstern/), Andrea Ghensi |
| Japanese | Y. Sakamoto, K. Herbert |
| Malayalam | Vishnu Raghav B |
| Norwegian Bokmål | Allan Nordhøy, [mondstern](https://hosted.weblate.org/user/mondstern/), Lars A Reinton |
| Portuguese | Sérgio Morais, [mondstern](https://hosted.weblate.org/user/mondstern/), J. Lavoie |
| Portuguese (Brazil) | [mondstern](https://hosted.weblate.org/user/mondstern/), Sérgio Morais, Wesley, Ricardo Zamarrenho Carvalho Correa, J. Lavoie, Nínive de Jesus Celestino, emmanuel einstein campos vasconcelos, Fabio Oliveira |
| Russian | dm9pZCAq, [mondstern](https://hosted.weblate.org/user/mondstern/), Leca |
| Spanish | taraletti, J. Lavoie, Sansom, [mondstern](https://hosted.weblate.org/user/mondstern/), Diego |
| Spanish (Argentina) | another-sapiens |
| Tamil | Vishnu Raghav B |
### Screenshot recipe credits
- **Meen Pollichathu** by [Bency Veronica](https://www.instagram.com/bencys_lil_kitchen) - **Meen Pollichathu** by [Bency Veronica](https://www.instagram.com/bencys_lil_kitchen)
- **Curd Vada** by P. Shanmugalakshmi - **Curd Vada** by P. Shanmugalakshmi

View file

@ -1,4 +1,3 @@
// Colours
$gray0: #f8f9fa; $gray0: #f8f9fa;
$gray1: #f1f3f5; $gray1: #f1f3f5;
$gray2: #e9ecef; $gray2: #e9ecef;
@ -12,48 +11,39 @@ $gray9: #212529;
$gray10: #000000; $gray10: #000000;
$orange: #ff5200; $orange: #ff5200;
// FontSizes based on Minor Third
$t1: 25;
$t2: 21;
$t3: 17;
$t4: 14;
$t5: 12; // Base
$t6: 10;
Page { Page {
font-family: 'Inter-Medium', sans-serif; font-family: "Inter-Medium";
font-size: $t4; font-size: 14;
} }
.ico { .ico {
font-family: 'EnRecipes'; font-family: "enrecipes";
font-size: 23; font-size: 24;
&.s { vertical-alignment: center;
font-size: $t3; &.sm {
font-size: 16;
opacity: 0.5; opacity: 0.5;
} }
} }
.vc {
vertical-align: center;
}
.tb { .tb {
font-family: 'Inter-Bold', sans-serif; font-family: "Inter-Bold";
} }
.tc { .tac {
text-align: center; text-align: center;
} }
.tw { .tw {
text-wrap: true; text-wrap: true;
} }
.pageTitle {
.pTitle { @extend .tb;
font-size: $t1; @extend .tw;
padding: 16 16 24; font-size: 25;
padding: 16;
} }
.Light { .Light {
color: $gray9; color: $gray9;
background: $gray1; background: $gray1;
Page, Page,
.filters,
.sticky { .sticky {
background: $gray1; background: $gray1;
} }
@ -68,9 +58,9 @@ Page {
.appbar, .appbar,
.modal { .modal {
background: $gray0; background: $gray0;
box-shadow: 0 2 rgba($gray10, 0.1);
} }
.fLabel, .fieldLabel,
.dayName,
.sub { .sub {
color: $gray6; color: $gray6;
} }
@ -78,7 +68,7 @@ Page {
color: $gray3; color: $gray3;
background: $gray2; background: $gray2;
} }
.snackbar { .snackBar {
color: $gray1; color: $gray1;
background: $gray9; background: $gray9;
} }
@ -90,6 +80,7 @@ Page {
color: $gray1; color: $gray1;
background: $gray9; background: $gray9;
Page, Page,
.filters,
.sticky { .sticky {
background: $gray9; background: $gray9;
} }
@ -106,7 +97,8 @@ Page {
color: $gray0; color: $gray0;
background: $gray8; background: $gray8;
} }
.fLabel, .fieldLabel,
.dayName,
.sub { .sub {
color: $gray5; color: $gray5;
} }
@ -114,7 +106,7 @@ Page {
color: $gray9; color: $gray9;
background: $gray10; background: $gray10;
} }
.snackbar { .snackBar {
color: $gray9; color: $gray9;
background: $gray1; background: $gray1;
} }
@ -126,6 +118,7 @@ Page {
color: $gray2; color: $gray2;
background: $gray10; background: $gray10;
Page, Page,
.filters,
.sticky { .sticky {
background: $gray10; background: $gray10;
} }
@ -142,7 +135,8 @@ Page {
color: $gray1; color: $gray1;
background: $gray9; background: $gray9;
} }
.fLabel, .fieldLabel,
.dayName,
.sub { .sub {
color: $gray6; color: $gray6;
} }
@ -150,7 +144,7 @@ Page {
color: $gray10; color: $gray10;
background: $gray9; background: $gray9;
} }
.snackbar { .snackBar {
color: $gray10; color: $gray10;
background: $gray2; background: $gray2;
} }
@ -158,139 +152,141 @@ Page {
color: $gray10; color: $gray10;
} }
} }
TextField.combField, TextField.combField,
#search { #searchBar {
border-color: transparent; border-color: transparent;
} }
// ----------------------------- // -----------------------------
// Elements // Elements
TextField, TextField,
TextView { TextView {
// width: 100%; width: 100%;
padding: 14 8; padding: 14 8;
border-bottom-width: 1; border-bottom-width: 1;
} }
TextView { TextView {
line-height: 4; line-height: 4;
} }
#search { #searchBar {
padding: 13 8; padding-left: 0;
margin: 0;
} }
.inputC { .inputField {
margin-bottom: 24; margin-bottom: 24;
} }
.fLabel { .fieldLabel {
font-size: $t5; font-size: 12;
} }
progress { .progressContainer {
color: $orange; width: 100%;
height: 2; }
Progress {
margin: 16;
background-color: $gray5; background-color: $gray5;
} }
Switch { Switch {
background-color: $orange; background-color: $orange;
off-background-color: $gray5; off-background-color: $gray5;
} }
button { // -----------------------------
// Side Drawer
.segment {
border-radius: 12;
margin: 0 4 0 0;
padding: 0 12;
.value {
padding-left: 8;
vertical-alignment: center;
}
&.select {
color: $orange;
@extend .hl;
}
}
Button {
background-color: transparent;
z-index: 0; z-index: 0;
padding: 8; padding: 8;
border-radius: 12; border-radius: 12;
min-width: 0; min-width: 0;
min-height: 0; min-height: 0;
text-transform: none;
background-color: transparent;
&.sst {
width: 48;
height: 48;
}
&.ico {
width: 48;
height: 48;
padding: 0;
margin: 0;
&:active { &:active {
@extend .fade; @extend .fade;
} }
} &.ico {
&.si { padding: 0;
width: 40; margin: 0;
height: 40; width: 48;
height: 48;
} }
&.text { &.text {
@extend .tb;
horizontal-alignment: left;
color: $orange; color: $orange;
} }
&.st {
font-size: $t5;
padding: 12;
}
&.big { &.big {
margin-top: 8; margin-top: 8;
padding: 16 0; padding: 16 0;
} }
&.sm {
font-size: 12;
padding: 12;
}
&.min {
width: 40;
height: 40;
}
&.x {
width: 32;
height: 32;
min-width: 0;
margin: 0 0 0 8;
vertical-alignment: center;
}
&.rate { &.rate {
margin: 0 4 0 0; margin: 0 4 0 0;
width: 32; width: 32;
height: 32; height: 32;
} }
&.fb:active {
@extend .fade;
}
} }
ActivityIndicator {
width: 24;
height: 24;
margin: 14;
color: $orange;
}
// ----------------------------- // -----------------------------
// Home // HOME
.segment { .emptyState {
border-radius: 12;
padding: 8;
.v {
padding: 0 4;
}
}
.t3 {
font-size: $t3;
}
.empty {
padding: 16 16 8; padding: 16 16 8;
Label {
@extend .tw;
}
.title {
@extend .tb;
font-size: 17;
}
} }
// ----------------------------- // -----------------------------
// Recipe Item // Recipe Items
.recipe { .recipeItem {
padding: 8 16; padding: 8 16;
.info { .recipeInfo {
padding: 0 8 4; vertical-alignment: center;
padding: 0 0 4 8;
} }
.title { .title {
padding: 0 0 4; padding: 0 0 4;
} }
.attr {
font-size: 10;
padding: 0 6 1 2;
}
} }
.oh { .simple .recipeInfo {
orientation: horizontal;
}
.t6 {
font-size: $t6;
}
.attr {
font-size: $t6;
padding: 0 4 2;
}
.simple .info {
padding: 8 0; padding: 8 0;
} }
.minimal .title { .minimal .title {
padding: 0; padding: 0;
} }
.grid { .grid {
padding: 8; padding: 8;
.info { .recipeInfo {
padding: 8 0 4; padding: 8 0 4;
} }
&.odd { &.odd {
@ -300,199 +296,239 @@ ActivityIndicator {
padding: 8 16 8 8; padding: 8 16 8 8;
} }
} }
.photogrid .info { .photogrid .recipeInfo {
padding: 8 0 0; padding: 8 0 0;
} }
.lastItem { .lastItem {
margin-bottom: 128; margin-bottom: 128;
} }
.selected {
@extend .hl;
}
.unselected {
background-color: transparent;
}
.imgHolder { .imgHolder {
border-radius: 12; border-radius: 12;
} }
// ----------------------------- // -----------------------------
// CookingTimer // SETTINGS
.timer { .group-info {
padding: 8 16 0;
.info {
margin: 8 8 8 16;
&.r {
margin: 8 16 8 8;
}
}
progress {
margin: 8 0 0;
}
}
// -----------------------------
// Settings
.groupInfo {
padding: 16 16 16 72; padding: 16 16 16 72;
&.r { line-height: 4;
padding: 16 72 16 16;
}
} }
.options { .options-list {
.option { .option {
vertical-align: center; vertical-align: center;
padding: 14 16; padding: 14 8;
margin: 0 16;
.ico { .ico {
width: 40; padding: 0;
text-align: center; margin: 0 24 0 16;
} }
.info { .info,
padding: 0 16; .sub {
@extend .tw; @extend .tw;
} }
.sub { .sub {
font-size: $t5; font-size: 12;
} }
} }
.listSpace {
height: 72;
}
} }
// ----------------------------- // -----------------------------
// About // ABOUT
.appInfo { .app-info {
.logo { .icon {
horizontal-alignment: center; horizontal-alignment: center;
} }
.name { .name {
font-size: $t2; font-size: 21;
} }
.info { .info {
padding: 8 16 24; padding: 8 16 24;
line-height: 4; line-height: 4;
} }
} }
// ----------------------------- // -----------------------------
// ViewRecipe // VIEW RECIPE
.photo { .photo {
border-radius: 12; border-radius: 12;
margin: 24 16 0 0; margin: 24 16 0 0;
vertical-align: top; vertical-align: top;
} }
.imgV { .photoviewer {
width: 96; width: 96;
height: 96; height: 96;
opacity: 0; opacity: 0;
background: #000; background: #000;
} }
.attrT { .attribute {
margin: 8 16; margin: 8 16;
.sub { .title {
font-size: $t5; margin-right: 8;
font-size: 12;
} }
.v { .value {
@extend .tb; @extend .tb;
@extend .tw; @extend .tw;
} }
.clickable {
color: $orange;
}
} }
.check { .ingredient {
padding: 0 16; padding: 0 16;
.v { .value {
padding: 14 16; @extend .tw;
vertical-align: center;
padding: 14 0 14 16;
line-height: 4; line-height: 4;
} }
.t { }
padding: 14 0; .instruction {
padding: 0 16;
.count {
@extend .tb;
font-size: 17;
}
.value {
@extend .tw;
padding: 14 0 14 16;
line-height: 4;
} }
} }
.done { .done {
opacity: 0.5; opacity: 0.5;
.v { // @extend .fade;
.value {
text-decoration: line-through; text-decoration: line-through;
} }
} }
.note { .combination {
padding: 16 24; @extend .tw;
text-align: left;
padding: 16;
line-height: 4; line-height: 4;
} }
.t5 { .note {
font-size: $t5; @extend .tw;
line-height: 4;
padding: 16 0;
}
.dateInfo {
padding: 32 16 16;
font-size: 12;
line-height: 4;
} }
// ----------------------------- // -----------------------------
// AppBar // APPBAR
.appbar { .appbar {
margin: 0 8 8; z-index: 4;
min-height: 56;
margin: 8;
padding: 4;
border-radius: 16; border-radius: 16;
padding: 2; .title {
.ico { @extend .tb;
margin: 2; @extend .tw;
vertical-align: center;
line-height: 4;
}
.msg {
padding: 14 16;
}
.fab {
margin-left: 4;
} }
} }
.toolbar { .toolbar {
height: 1; z-index: 4;
vertical-align: bottom; padding: 4;
transform: translateY(48); margin-bottom: 0;
padding: 4 2; horizontal-alignment: left;
.tool { .tool {
orientation: horizontal; padding: 0 12;
padding: 0 8; Label {
vertical-alignment: center;
}
.ico {
padding-right: 8;
} }
.v {
padding: 0 4;
} }
} }
.fab { .fab {
width: 48;
height: 48;
margin: 0 4 0 0;
border-radius: 12; border-radius: 12;
background: $orange; background: $orange;
} }
// ----------------------------- // -----------------------------
// EditRecipe // EDIT RECIPE
.section { .sectionTitle {
padding: 0 16; @extend .tb;
@extend .tw;
font-size: 21;
padding: 0;
margin: 32 0 16; margin: 32 0 16;
} }
.t2 {
font-size: $t2;
}
.sticky { .sticky {
width: 100%; width: 100%;
padding: 0 16 16; padding: 0 16 16;
margin: 0;
} }
.ingActions { .countdown {
orientation: horizontal; font-size: 17;
button { color: $orange;
margin-right: 16;
}
} }
// ----------------------------- // -----------------------------
// MealPlanner // MEAL PLANNER
.calendar { .calendar {
padding: 0 16 16;
.accent.sub {
color: rgba($orange, 0.6);
}
}
.plans {
margin: 0 16;
.date {
padding: 16 0 8;
}
.type {
padding: 8 0;
}
.plan {
min-height: 48;
padding: 4 0;
}
.info {
min-height: 40;
padding: 0 8; padding: 0 8;
.navBtn {
margin: 0;
} }
.note { .monthName {
padding: 4 0; text-align: center;
vertical-alignment: center;
font-size: 17;
}
.dayName {
margin: 8 0;
font-size: 12;
text-align: center;
}
.day {
border-radius: 12;
}
.hasPlans {
color: $orange;
}
.activeDay {
background-color: rgba($orange, 0.2);
}
}
.dayPlan {
padding: 16 16 80;
width: 100%;
.periodLabel {
font-size: 17;
text-transform: capitalize;
vertical-align: center;
}
.recipeTitle {
@extend .tw;
text-align: left;
padding: 16 8;
line-height: 4;
} }
} }
// ----------------------------- // -----------------------------
// Dialogs // DIALOGS
.modal { .modal {
max-width: 320; max-width: 320;
width: 100%; width: 100%;
@ -502,20 +538,40 @@ ActivityIndicator {
@extend .tb; @extend .tb;
@extend .tw; @extend .tw;
padding: 16; padding: 16;
font-size: $t2; font-size: 21;
} }
.input { .input {
padding: 0 16 8; padding: 0 16 8;
} }
.description {
line-height: 4;
padding: 0 16 8;
}
ListPicker { ListPicker {
width: 30%; width: 25%;
height: 144; height: 160;
margin: 16 0;
} }
.listItem { .listItem {
@extend .tw;
width: 100%;
letter-spacing: 0;
text-transform: none;
line-height: 4; line-height: 4;
padding: 13 16; padding: 13 16;
background-color: transparent; margin: 0;
background: transparent;
}
.shareItem {
border-radius: 12;
margin: 0 8 8;
text-align: center;
.ico {
padding: 16 0 0;
}
.item {
@extend .tw;
padding: 8 16 16;
}
} }
.actions { .actions {
padding: 4; padding: 4;
@ -525,68 +581,48 @@ ActivityIndicator {
margin: 0 0 8; margin: 0 0 8;
} }
} }
.noResInfo {
@extend .tac;
@extend .tw;
padding: 16;
line-height: 4;
}
// -----------------------------
ActivityIndicator {
width: 24;
height: 24;
margin: 12;
color: $orange;
}
// ----------------------------- // -----------------------------
// Transitions // Transitions
.select { .hl {
color: $orange; animation-name: hl;
animation-name: select;
animation-duration: 0.2s; animation-duration: 0.2s;
animation-fill-mode: forwards; animation-fill-mode: forwards;
animation-timing-function: ease; animation-timing-function: ease-out;
} }
.deselect { @keyframes hl {
background-color: transparent;
}
@keyframes select {
0% { 0% {
opacity: 0.5;
background-color: transparent; background-color: transparent;
} }
100% { 100% {
background-color: rgba($orange, 0.1); opacity: 1;
background-color: rgba($orange, 0.2);
} }
} }
.fade { .fade {
animation-name: fade; animation-name: fade;
animation-duration: 0.2s; animation-duration: 0.2s;
animation-fill-mode: forwards; animation-fill-mode: forwards;
animation-timing-function: ease; animation-timing-function: ease-out;
} }
@keyframes fade { @keyframes fade {
0% { 0% {
opacity: 1; opacity: 1;
} }
100% { 100% {
opacity: 0.75; opacity: 0.5;
} }
} }
// -----------------------------
// Helpers
.f {
transform: scaleX(-1);
}
.accent {
color: $orange;
}
.hal {
horizontal-alignment: left;
&.r {
horizontal-alignment: right;
}
}
.har {
horizontal-alignment: right;
&.r {
horizontal-alignment: left;
}
}
.edge {
width: 16;
}
.ls {
height: 72;
}
.lh4 {
line-height: 4;
}

View file

@ -1,454 +0,0 @@
<template>
<Page @loaded="pgLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="*">
<ScrollView
@scroll="svScroll($event)"
rowSpan="2"
scrollBarIndicatorVisible="false"
>
<StackLayout>
<RGridLayout :rtl="RTL" rows="auto" columns="*, auto, 12">
<RLabel class="pTitle tw tb" :text="'timer' | L" />
<Button col="1" class="ico" :text="icon.cog" @tap="navigateTo" />
</RGridLayout>
<Timer
v-for="timer in activeTs"
:key="timer.id + key"
:timer="timer"
:formattedTime="formattedTime"
:removeTimer="removeTimer"
:togglePause="togglePause"
:timerAlert="timerAlert"
:showToast="showToast"
/>
<StackLayout class="ls"> </StackLayout>
</StackLayout>
</ScrollView>
<GridLayout v-if="!activeTs.length" rows="*, auto">
<StackLayout row="1" class="empty">
<RLabel class="tb t3 tw" :text="'ccwt' | L" />
<RLabel class="tw" :text="'plsAdd' | L" />
</StackLayout>
</GridLayout>
<RGridLayout
:rtl="RTL"
row="1"
@loaded="abLoad"
class="appbar"
:hidden="showUndo"
columns="auto, *, auto"
>
<Button class="ico rtl" :text="icon.back" @tap="navigateBack" />
<Button class="ico fab" :text="icon.plus" @tap="addTimer" col="2" />
</RGridLayout>
<SnackBar
:hidden="!showUndo || toast"
:count="countdown"
:msg="snackMsg"
:undo="undoDel"
:action="hideBar"
:onload="sbLoad"
/>
<Toast :onload="tbLoad" :toast="toast" :action="hideBar" />
<Label
rowSpan="2"
class="edge hal"
:class="{ 'f r': RTL }"
@swipe="swipeBack($event, navigateBack)"
/>
<Label
rowSpan="2"
class="edge har rtl"
:class="{ r: RTL, f: !RTL }"
@swipe="swipeBack($event, navigateBack)"
/>
</GridLayout>
</Page>
</template>
<script lang="ts">
import { localize } from "@nativescript/localize";
import {
Observable,
Application,
Utils,
Device,
Frame,
} from "@nativescript/core";
import {
getNumber,
setNumber,
remove,
} from "@nativescript/core/application-settings";
import { mapState, mapActions } from "vuex";
import EnRecipes from "./EnRecipes.vue";
import Action from "./modals/Action.vue";
import CTSettings from "./settings/CTSettings.vue";
import TimePickerHMS from "./modals/TimePickerHMS.vue";
import TimerReminder from "./modals/TimerReminder.vue";
import Timer from "./sub/Timer.vue";
import Toast from "./sub/Toast.vue";
import SnackBar from "./sub/SnackBar.vue";
import * as utils from "~/shared/utils";
import { EvtBus } from "~/main";
let barTimer;
declare const com, android: any;
export default {
components: { Timer, Toast, SnackBar },
props: ["recipeID"],
data() {
return {
scrollPos: 1,
appbar: null,
toastbar: null,
snackbar: null,
scrollView: null,
countdown: 5,
snackMsg: null,
showUndo: 0,
undo: 0,
toast: null,
key: 99,
};
},
computed: {
...mapState([
"icon",
"recipes",
"timerS",
"timerV",
"timerPs",
"activeTs",
"FGS",
"RTL",
]),
hasBackStack() {
return Frame.topmost().backStack.length;
},
},
methods: {
...mapActions(["addAT", "removeAT", "clearATIs", "updateAT", "setFgS"]),
pgLoad({ object }) {
object.bindingContext = new Observable();
if (this.activeTs.filter((e: any) => e.done).length) this.openReminder();
setNumber("isTimer", 1);
},
abLoad({ object }) {
this.appbar = object;
},
tbLoad({ object }) {
this.toastbar = object;
},
sbLoad({ object }) {
this.snackbar = object;
},
svScroll(args) {
this.scrollView = args.object;
let scrollUp;
let y = args.scrollY;
if (y) {
scrollUp = y < this.scrollPos;
this.scrollPos = Math.abs(y);
let ab = this.appbar.translateY;
if (!scrollUp && ab == 0) this.animateBar(this.appbar, 0);
else if (scrollUp && ab == 64) this.animateBar(this.appbar, 1);
}
},
// HELPERS
getRecipeTitle(id) {
let recipe = this.recipes.filter((e) => e.id === id)[0];
return recipe ? recipe.title : `[ ${localize("resNF")} ]`;
},
formattedTime(time) {
let hr = localize("hr");
let min = localize("min");
let sec = localize("sec");
let t = time.split(":");
let h = parseInt(t[0]);
let m = parseInt(t[1]);
let s = parseInt(t[2]);
let hasHrs = h ? `${h} ${hr}` : "";
let hasMins = m ? `${h ? " " : ""}${m} ${min}` : "";
let hasSecs = s ? `${h || m ? " " : ""}${s} ${sec}` : "";
return hasHrs + hasMins + hasSecs;
},
// NOTIFICATION HANDLERS
timerInfo() {
let activeCount = this.activeTs.length;
let pausedCount = this.activeTs.filter((e) => e.isPaused).length;
let ongoingCount = activeCount - pausedCount;
this.foregroundService(activeCount);
function show() {
utils.TimerNotif.show({
bID: "info",
cID: "cti",
cName: "Cooking Timer info",
description: localize("oAP", ongoingCount + "", pausedCount),
nID: 6,
priority: -2,
sound: null,
title: localize("timer"),
});
}
if (this.FGS) setTimeout(() => this.activeTs.length && show(), 250);
utils.wakeLock(ongoingCount);
},
timerAlert() {
let title, description, bID;
let firedTimers = this.activeTs.filter((e) => e.done);
let timer = firedTimers[0];
if (firedTimers.length > 1) {
title = localize("texp", firedTimers.length);
description = localize("ttv");
bID = "alerts";
} else if (firedTimers.length == 1) {
title =
timer.label +
(timer.recipeID ? " - " + this.getRecipeTitle(timer.recipeID) : "");
description = this.formattedTime(timer.time);
bID = "timer" + timer.id;
} else {
utils.TimerNotif.clear(7);
return;
}
utils.TimerNotif.show({
actions: 1,
bID,
cID: "cta",
cName: "Cooking Timer alerts",
description,
multi: firedTimers.length > 1,
nID: 7,
priority: 1,
sound: this.timerS.uri,
title,
vibrate: this.timerV,
});
if (firedTimers.length == 1) {
Application.android.registerBroadcastReceiver(bID, (ctx, intent) => {
EvtBus.$emit(bID, intent.getStringExtra("action"));
Application.android.unregisterBroadcastReceiver(bID);
});
} else {
Application.android.unregisterBroadcastReceiver(bID);
Application.android.registerBroadcastReceiver(bID, (ctx, intent) => {
if (intent.getStringExtra("action") == "dismissAll") {
firedTimers.forEach((t) => this.removeTimer(t.id, 1));
Application.android.unregisterBroadcastReceiver(bID);
}
});
}
},
openReminder() {
this.clearATIs();
this.$showModal(TimerReminder, {
fullscreen: true,
props: {
formattedTime: this.formattedTime,
removeTimer: this.removeTimer,
togglePause: this.togglePause,
timerAlert: this.timerAlert,
showToast: this.showToast,
},
}).then(() => {
this.clearATIs();
this.key = Math.floor(Math.random() * 900) + 100;
});
},
foregroundService(n) {
const ctx = Utils.ad.getApplicationContext();
const intent = new android.content.Intent(
ctx,
com.tns.ForegroundService.class
);
if (n && !this.FGS) {
parseInt(Device.sdkVersion) < 26
? ctx.startService(intent)
: ctx.startForegroundService(intent);
this.setFgS(1);
setNumber("FGS", 1);
} else if (!this.activeTs.length) {
ctx.stopService(intent);
this.setFgS(0);
setNumber("FGS", 0);
}
},
// DATA HANDLERS
addTimer() {
this.$showModal(TimePickerHMS, {
props: {
title: "ntmr",
label: `${localize("tmr", this.activeTs.length + 1)}`,
action: "strtBtn",
showPreset: this.timerPs.length,
},
}).then((res) => {
if (res) {
if (res == "presets") {
let list = this.timerPs.map(
(e) => `${e.label} - ${this.formattedTime(e.time)}`
);
this.$showModal(Action, {
props: {
title: "prsts",
list,
},
}).then((preset) => {
if (preset) {
let timer = JSON.parse(
JSON.stringify(this.timerPs[list.indexOf(preset)])
);
timer.id = utils.getRandomID(1);
timer.recipeID = this.recipeID;
timer.timerInt = timer.isPaused = 0;
timer.preset = timer.mode = 1;
this.addAT({
timer,
i: this.activeTs.length,
});
this.timerInfo();
}
});
} else {
let mode = res.time != "00:00:00" ? 1 : 0;
this.addAT({
timer: {
id: utils.getRandomID(1),
label: res.label,
recipeID: this.recipeID,
time: res.time,
timerInt: 0,
isPaused: 0,
preset: 0,
done: 0,
mode,
},
i: this.activeTs.length,
});
this.timerInfo();
}
}
});
},
removeTimer(id, noUndo) {
let i = this.activeTs.findIndex((e) => e.id == id);
let temp = this.activeTs[i];
clearInterval(temp.timerInt);
temp.timerInt = 0;
this.removeAT(i);
let secs = [getNumber(`${temp.id}c`, 0), getNumber(`${temp.id}d`, 0)];
function removeSettings() {
remove(`${temp.id}c`);
remove(`${temp.id}d`);
}
removeSettings();
if (!noUndo) {
this.showUndoBar("tmrRm")
.then(() => {
setNumber(`${temp.id}c`, secs[0]),
setNumber(`${temp.id}d`, secs[1]),
this.addAT({
timer: temp,
i,
});
this.timerInfo();
})
.catch(() => removeSettings());
}
this.timerAlert();
this.timerInfo();
},
togglePause(timer, n) {
timer.isPaused =
typeof n === "number" ? n : (!timer.isPaused as boolean | 0);
this.updateAT(timer);
n ? 0 : this.timerInfo();
},
showToast(data) {
this.animateBar(this.snackbar, 0);
this.animateBar(this.appbar, 0).then(() => {
this.showUndo = 0;
this.toast = localize(data);
this.animateBar(this.toastbar, 1, 1);
let a = 5;
clearInterval(barTimer);
barTimer = setInterval(() => a-- < 1 && this.hideBar(), 1000);
});
},
showUndoBar(message) {
return new Promise((resolve, reject) => {
this.animateBar(this.toastbar, 0);
this.animateBar(this.appbar, 0).then(() => {
this.toast = null;
this.showUndo = 1;
this.snackMsg = message;
this.countdown = 5;
this.animateBar(this.snackbar, 1, 1).then(() => {
let a = 5;
clearInterval(barTimer);
barTimer = setInterval(() => {
if (this.undo) {
this.hideBar();
resolve(1);
}
this.countdown = Math.round((a -= 0.1));
if (this.countdown < 1) {
this.hideBar();
reject(1);
}
}, 100);
});
});
});
},
hideBar() {
clearInterval(barTimer);
this.animateBar(this.toast ? this.toastbar : this.snackbar, 0).then(
() => {
this.showUndo = this.undo = 0;
this.toast = null;
this.animateBar(this.appbar, 1);
}
);
},
undoDel() {
this.undo = 1;
},
//NAVIGATION HANDLERS
navigateTo() {
this.$navigateTo(CTSettings, {
transition: {
name: this.RTL ? "slideRight" : "slide",
duration: 200,
curve: "easeOut",
},
});
},
navigateBack() {
setNumber("isTimer", 0);
this.hasBackStack
? this.$navigateBack()
: this.$navigateTo(EnRecipes, {
clearHistory: true,
});
},
// HELPERS
},
created() {
this.clearATIs();
this.recipeID && this.addTimer();
},
destroyed() {
setNumber("isTimer", 0);
},
};
</script>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,57 @@
<template>
<Page @loaded="onPageLoad">
<ActionBar flat="true">
<GridLayout rows="*" columns="auto, *, auto">
<Button class="ico left" :text="icon.back" @tap="$navigateBack()" />
<Label class="title tb" :text="'grocery' | L" col="1" />
<Button class="ico left" :text="icon.today" col="2" />
</GridLayout>
</ActionBar>
<GridLayout columns="" rows=""> </GridLayout>
</Page>
</template>
<script>
import { ApplicationSettings, Observable } from "@nativescript/core";
import { mapState, mapActions } from "vuex";
export default {
data() {
return {
appTheme: "Light",
};
},
computed: {
...mapState(["icon", "recipes", "mealPlans"]),
isLightMode() {
return this.appTheme === "Light";
},
},
methods: {
...mapActions(["setComponent"]),
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
this.setComponent("GroceryList");
},
// HELPERS
// NAVIGATION HANDLERS
viewRecipe(recipeID) {
let recipe = this.recipes.filter((e) => e.id === recipeID)[0];
if (recipe) {
this.$navigateTo(ViewRecipe, {
props: {
filterTrylater: true,
recipeID,
},
backstackVisible: false,
});
}
},
// DATA HANDLERS
},
created() {
this.appTheme = ApplicationSettings.getString("appTheme", "Light");
},
};
</script>

File diff suppressed because it is too large Load diff

106
app/components/Settings.vue Normal file
View file

@ -0,0 +1,106 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
colSpan="2"
rowSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'Settings' | L" />
</v-template>
<v-template if="$index == 6">
<StackLayout class="listSpace"> </StackLayout>
</v-template>
<v-template>
<GridLayout
columns="auto, *"
class="option"
@touch="touch($event, item.view)"
>
<Label
verticalAlignment="center"
class="ico"
:text="icon[item.icon]"
/>
<Label verticalAlignment="center" col="1" :text="item.title | L" />
</GridLayout>
</v-template>
</ListView>
<GridLayout row="1" class="appbar" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import { Observable } from "@nativescript/core";
import { mapState, mapActions } from "vuex";
import Interface from "./Settings/Interface.vue";
import Options from "./Settings/Options.vue";
import Database from "./Settings/Database.vue";
import Reset from "./Settings/Reset.vue";
import About from "./Settings/About.vue";
export default {
data() {
return {
items: [
{},
{
icon: "interface",
title: "intf",
view: Interface,
},
{
icon: "opts",
title: "opts",
view: Options,
},
{
icon: "db",
title: "db",
view: Database,
},
{
icon: "reset",
title: "rest",
view: Reset,
},
{
icon: "info",
title: "About",
view: About,
},
{},
],
};
},
computed: {
...mapState(["icon"]),
},
methods: {
...mapActions(["setComponent"]),
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
this.setComponent("Settings");
},
// HELPERS
navigateTo(view) {
this.$navigateTo(view, {
transition: {
name: "slide",
duration: 200,
curve: "easeOut",
},
});
},
touch({ object, action }, view) {
object.className = action.match(/down|move/) ? "option fade" : "option";
if (action == "up") this.navigateTo(view);
},
},
};
</script>

View file

@ -0,0 +1,116 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
rowSpan="2"
colSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'About' | L" />
</v-template>
<v-template if="$index == 1">
<StackLayout class="app-info">
<Image
class="icon"
src="res://logo"
stretch="none"
/>
<Label class="name tb tac" :text="'EnRecipes' | L" />
<Label :text="getVersion" class="version tb tac" />
<Label class="info tac tw" :text="'appInfo' | L" />
</StackLayout>
</v-template>
<v-template if="$index == 8">
<StackLayout class="listSpace"> </StackLayout>
</v-template>
<v-template>
<GridLayout
columns="auto, *"
class="option"
@touch="touch($event, item.url)"
>
<Label class="ico" :text="icon[item.icon]" />
<Label col="1" :text="item.title | L" />
</GridLayout>
</v-template>
</ListView>
<GridLayout row="1" class="appbar" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import { Application, Observable, Utils } from "@nativescript/core";
import { mapState } from "vuex";
export default {
computed: {
...mapState(["icon"]),
items() {
return [
{},
{},
{
icon: "gh",
title: "gh",
url: "https://github.com/vishnuraghavb/EnRecipes",
},
{
icon: "tg",
title: "joinTG",
url: "https://t.me/enrecipes",
},
{
icon: "help",
title: "guide",
url: "https://github.com/vishnuraghavb/EnRecipes/wiki/User-Guide",
},
{
icon: "priv",
title: "priv",
url:
"https://github.com/vishnuraghavb/EnRecipes/blob/main/PRIVACY.md",
},
{
icon: "don",
title: "donate",
url: "https://www.vishnuraghav.com/donate",
},
{
icon: "trans",
title: "trnsl",
url: "https://hosted.weblate.org/projects/enrecipes/app-translations",
},
{},
];
},
getVersion() {
let ctx = Application.android.context;
return (
"v" +
ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0)
.versionName
);
},
},
methods: {
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
},
// HELPERS
openURL(url) {
Utils.openUrl(url);
},
touch({ object, action }, url) {
object.className = action.match(/down|move/) ? "option fade" : "option";
if (action == "up") this.openURL(url);
},
},
};
</script>

View file

@ -0,0 +1,139 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
colSpan="2"
rowSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'Settings' | L" />
</v-template>
<v-template if="item.type == 'switch'">
<GridLayout columns="auto, *, auto" class="option">
<Label class="ico" :text="icon[item.icon]" />
<StackLayout col="1" verticalAlignment="center">
<Label :text="item.title | L" class="info" />
<Label
v-if="item.subTitle"
:text="item.subTitle | L"
class="sub"
/>
</StackLayout>
<Switch
:color="item.checked ? '#ff5200' : '#adb5bd'"
col="2"
:checked="item.checked"
@checkedChange="item.action"
/>
</GridLayout>
</v-template>
<v-template if="item.type == 'list'">
<GridLayout
columns="auto, *"
class="option"
@touch="touch($event, item.action)"
>
<Label class="ico" :text="icon[item.icon]" />
<StackLayout col="1">
<Label :text="item.title | L" class="info" />
<Label :text="item.subTitle" class="sub" />
</StackLayout>
</GridLayout>
</v-template>
<v-template>
<StackLayout class="listSpace"> </StackLayout>
</v-template>
</ListView>
<GridLayout row="1" class="appbar" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import { Observable } from "@nativescript/core";
import { mapState, mapActions } from "vuex";
import { localize } from "@nativescript/localize";
import ActionDialog from "../modal/ActionDialog.vue";
import * as utils from "~/shared/utils";
export default {
computed: {
...mapState(["icon", "timerDelay", "timerSound", "timerVibrate"]),
items() {
return [
{},
{
type: "list",
icon: "delay",
title: "dlyDur",
subTitle: this.timerDelay,
action: this.showDelayList,
},
{
type: "list",
icon: "sound",
title: "tmrSnd",
subTitle: this.timerSound.title,
action: this.showSoundsList,
},
{
type: "switch",
icon: "vibrate",
title: "tmrvbrt",
checked: this.timerVibrate,
action: this.toggleTimerVibrate,
},
{},
];
},
},
methods: {
...mapActions(["setTimerDelay", "setTimerSound", "setTimerVibrate"]),
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
},
toggleTimerVibrate({ object }) {
this.setTimerVibrate(object.checked);
},
showDelayList() {
let list = [
...Array.from(Array(4), (_, x) => x + 1),
...Array.from(Array(6), (_, x) => (x + 1) * 5),
].map(
(e, i) => `${e} ${i == 0 ? localize("minute") : localize("minutes")}`
);
this.$showModal(ActionDialog, {
props: {
title: "dlyDur",
list,
},
}).then((dur) => dur && this.setTimerDelay(dur));
},
showSoundsList() {
let tones = utils.getTones();
this.$showModal(ActionDialog, {
props: {
title: "tmrSnd",
list: tones.map((e) => e.title),
},
}).then(
(tone) =>
tone &&
tone !== this.timerSound.title &&
this.setTimerSound(tones.filter((e) => e.title === tone)[0])
);
},
// HELPERS
touch({ object, action }, method) {
object.className = action.match(/down|move/) ? "option fade" : "option";
if (action == "up") method();
},
},
};
</script>

View file

@ -0,0 +1,455 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
colSpan="2"
rowSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'db' | L" />
</v-template>
<v-template if="$index == 4">
<StackLayout class="listSpace"> </StackLayout>
</v-template>
<v-template>
<GridLayout
columns="auto, *"
class="option"
@touch="touch($event, item.action)"
>
<Label class="ico" :text="icon[item.icon]" />
<StackLayout col="1" verticalAlignment="center">
<Label :text="item.title | L" class="info" />
<Label v-if="item.subTitle" :text="item.subTitle" class="sub" />
</StackLayout>
</GridLayout>
</v-template>
</ListView>
<GridLayout
v-show="!toast && !progress"
row="1"
class="appbar"
rows="*"
columns="auto, *"
>
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<GridLayout
v-show="toast"
row="1"
colSpan="2"
class="appbar snackBar"
columns="*"
@tap="toast = null"
>
<FlexboxLayout minHeight="48" alignItems="center">
<Label class="title msg" :text="toast" />
</FlexboxLayout>
</GridLayout>
<GridLayout
v-show="progress"
row="1"
colSpan="2"
class="appbar snackBar"
columns="auto, *"
>
<ActivityIndicator :busy="progress ? true : false" />
<Label col="1" class="title" :text="progress" textWrap="true" />
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import {
ApplicationSettings,
path,
knownFolders,
File,
Folder,
Observable,
Application,
} from "@nativescript/core";
import { localize } from "@nativescript/localize";
import ConfirmDialog from "../modal/ConfirmDialog.vue";
import { mapState, mapActions } from "vuex";
import * as utils from "~/shared/utils";
export default {
data() {
return {
backupFolder: null,
progress: null,
toast: null,
};
},
computed: {
...mapState([
"icon",
"recipes",
"cuisines",
"categories",
"yieldUnits",
"units",
"mealPlans",
"importSummary",
]),
items() {
return [
{},
{
icon: "folder",
title: "buFol",
subTitle: this.backupFolder,
action: this.setBackupFolder,
},
{
icon: "exp",
title: "expBu",
subTitle: localize("buInfo"),
action: this.exportCheck,
},
{
icon: "imp",
title: "impBu",
subTitle: localize("impInfo"),
action: this.openZipFile,
},
{},
];
},
},
methods: {
...mapActions([
"importListItemsAction",
"importRecipesAction",
"importMealPlansAction",
"unlinkBrokenImages",
"clearImportSummary",
]),
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
const ContentResolver = Application.android.nativeApp.getContentResolver();
this.backupFolder = ApplicationSettings.getString("backupFolder");
if (
!this.backupFolder ||
ContentResolver.getPersistedUriPermissions().isEmpty()
) {
this.backupFolder = null;
}
},
// BACKUP FOLDER PICKER
setBackupFolder(startExport) {
const ContentResolver = Application.android.nativeApp.getContentResolver();
const FLAGS =
android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION |
android.content.Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
utils.getBackupFolder().then((uri) => {
if (uri != null) {
if (this.backupFolder)
ContentResolver.releasePersistableUriPermission(
new android.net.Uri.parse(this.backupFolder),
FLAGS
);
this.backupFolder = uri.toString();
ApplicationSettings.setString("backupFolder", this.backupFolder);
// PERSIST PERMISSIONS
ContentResolver.takePersistableUriPermission(uri, FLAGS);
if (startExport && this.backupFolder) {
this.exportBackup();
}
}
});
},
// EXPORT HANDLERS
exportCheck() {
const ContentResolver = Application.android.nativeApp.getContentResolver();
if (!this.recipes.length) {
this.toast = localize("aFBu");
utils.timer(5, (val) => {
if (!val) this.toast = val;
});
} else {
if (
!this.backupFolder ||
ContentResolver.getPersistedUriPermissions().isEmpty()
) {
this.setBackupFolder(true);
} else this.exportBackup();
}
},
exportBackup() {
this.progress = localize("expip");
this.exportFiles("create");
let date = new Date();
let formattedDate =
date.getFullYear() +
"-" +
("0" + (date.getMonth() + 1)).slice(-2) +
"-" +
("0" + date.getDate()).slice(-2) +
"_" +
("0" + date.getHours()).slice(-2) +
("0" + date.getMinutes()).slice(-2) +
("0" + date.getSeconds()).slice(-2);
let filename = `${localize("EnRecipes")}_${formattedDate}.zip`;
let fromPath = path.join(knownFolders.documents().path, "EnRecipes");
utils.Zip.zip(fromPath, this.backupFolder, filename)
.then((res) => res && this.showExportSummary(filename))
.catch((err) => {
console.log("Backup error: ", err);
this.progress = null;
this.setBackupFolder(true);
});
},
exportFiles(option) {
const folder = path.join(knownFolders.documents().path, "EnRecipes");
const EnRecipesFile = File.fromPath(path.join(folder, "recipes.json"));
let userCuisinesFile,
userCategoriesFile,
userYieldUnitsFile,
userUnitsFile,
mealPlansFile;
if (this.cuisines.length)
userCuisinesFile = File.fromPath(
path.join(folder, "userCuisines.json")
);
if (this.categories.length)
userCategoriesFile = File.fromPath(
path.join(folder, "userCategories.json")
);
if (this.yieldUnits.length)
userYieldUnitsFile = File.fromPath(
path.join(folder, "userYieldUnits.json")
);
if (this.units.length)
userUnitsFile = File.fromPath(path.join(folder, "userUnits.json"));
if (this.mealPlans.length)
mealPlansFile = File.fromPath(path.join(folder, "mealPlans.json"));
switch (option) {
case "create":
this.writeDataToFile(EnRecipesFile, this.recipes);
this.cuisines.length &&
this.writeDataToFile(userCuisinesFile, this.cuisines);
this.categories.length &&
this.writeDataToFile(userCategoriesFile, this.categories);
this.yieldUnits.length &&
this.writeDataToFile(userYieldUnitsFile, this.yieldUnits);
this.units.length && this.writeDataToFile(userUnitsFile, this.units);
this.mealPlans.length &&
this.writeDataToFile(mealPlansFile, this.mealPlans);
break;
case "delete":
EnRecipesFile.remove();
this.cuisines.length && userCuisinesFile.remove();
this.categories.length && userCategoriesFile.remove();
this.yieldUnits.length && userYieldUnitsFile.remove();
this.units.length && userUnitsFile.remove();
this.mealPlans.length && mealPlansFile.remove();
break;
}
},
writeDataToFile(file, data) {
file.writeText(JSON.stringify(data));
},
showExportSummary(filename) {
this.progress = null;
let description = localize("buto", `"${filename}"`);
this.$showModal(ConfirmDialog, {
props: {
title: "expSuc",
description,
okButtonText: "OK",
},
});
},
// IMPORT HANDLERS
openZipFile() {
utils.getBackupFile().then((uri) => {
if (uri) {
let dest = knownFolders.temp().path;
utils.Zip.unzip(uri, dest)
.then((res) => res && this.validateZipContent(res, uri))
.catch(() => this.failedImport(localize("buInc")));
}
});
},
validateZipContent(extractedFolderPath, uri) {
this.progress = localize("impip");
let cacheFolderPath = extractedFolderPath + "/EnRecipes";
const EnRecipesFilePath = cacheFolderPath + "/recipes.json";
const ImagesFolderPath = cacheFolderPath + "/Images";
const userCuisinesFilePath = cacheFolderPath + "/userCuisines.json";
const userCategoriesFilePath = cacheFolderPath + "/userCategories.json";
const userYieldUnitsFilePath = cacheFolderPath + "/userYieldUnits.json";
const userUnitsFilePath = cacheFolderPath + "/userUnits.json";
const mealPlansFilePath = cacheFolderPath + "/mealPlans.json";
if (Folder.exists(cacheFolderPath)) {
this.isFileDataValid([
{
path: EnRecipesFilePath,
db: "EnRecipesDB",
file: "recipes.json",
},
{
path: userCuisinesFilePath,
db: "userCuisinesDB",
file: "userCuisines.json",
},
{
path: userCategoriesFilePath,
db: "userCategoriesDB",
file: "userCategories.json",
},
{
path: userYieldUnitsFilePath,
db: "userYieldUnitsDB",
file: "userYieldUnits.json",
},
{
path: userUnitsFilePath,
db: "userUnitsDB",
file: "userUnits.json",
},
{
path: mealPlansFilePath,
db: "mealPlansDB",
file: "mealPlans.json",
},
]);
const timer = setInterval(() => {
if (!this.progress) clearInterval(timer);
if (this.progress && this.importSummary.found) {
Folder.exists(ImagesFolderPath)
? this.importImages(uri)
: this.showImportSummary();
}
}, 100);
} else this.failedImport(localize("buInc"));
},
isFileDataValid(file) {
const files = file.filter((e) => File.exists(e.path));
if (files.length) {
let isValid = files.map((e) => false);
files.forEach((file, i) => {
File.fromPath(file.path)
.readText()
.then((data) => {
isValid[i] = this.hasValidJSON(data);
if (!isValid[i]) {
this.failedImport(
`${localize("buMod")}\n\n${localize("invFile")}: ${file.file}`
);
return 0;
}
if (isValid.every((e) => e === true)) {
files.forEach((file) => {
File.fromPath(file.path)
.readText()
.then((data) => {
this.importDataToDB(JSON.parse(data), file.db);
});
});
}
});
});
} else this.failedImport(localize("buEmp"));
},
failedImport(description) {
this.progress = null;
knownFolders.temp().clear();
this.$showModal(ConfirmDialog, {
props: {
title: "impFail",
description,
okButtonText: "OK",
},
});
},
hasValidJSON(data) {
try {
JSON.parse(data) && Array.isArray(JSON.parse(data));
} catch (e) {
return false;
}
return true;
},
importDataToDB(data, db) {
switch (db) {
case "EnRecipesDB":
this.importRecipesAction(data);
break;
case "userCuisinesDB":
this.importListItemsAction({
data,
listName: "cuisines",
});
break;
case "userCategoriesDB":
this.importListItemsAction({
data,
listName: "categories",
});
break;
case "userYieldUnitsDB":
this.importListItemsAction({
data,
listName: "yieldUnits",
});
break;
case "userUnitsDB":
this.importListItemsAction({
data,
listName: "units",
});
break;
case "mealPlansDB":
this.importMealPlansAction(data);
break;
}
},
importImages(uri) {
let destPath = knownFolders.documents().path;
Folder.fromPath(destPath);
utils.Zip.unzip(uri, destPath).then((res) => {
if (res) {
this.showImportSummary();
this.unlinkBrokenImages();
}
});
},
showImportSummary() {
this.progress = null;
knownFolders.temp().clear();
this.exportFiles("delete");
let { found, imported, updated } = this.importSummary;
let exists = Math.abs(found - imported - updated) + updated;
let importedNote = `\n${localize("recI")} ${imported}`;
let existsNote = `\n${localize("recE")} ${exists}`;
let updatedNote = `\n${localize("recU")} ${updated}`;
this.$showModal(ConfirmDialog, {
props: {
title: "impSuc",
description: `${found} ${localize(
"recF"
)}\n${importedNote}${existsNote}${updatedNote}`,
okButtonText: "OK",
},
}).then(() => this.clearImportSummary());
},
// HELPERS
touch({ object, action }, method) {
object.className = action.match(/down|move/) ? "option fade" : "option";
if (action == "up") method();
},
},
};
</script>

View file

@ -0,0 +1,171 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
colSpan="2"
rowSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'intf' | L" />
</v-template>
<v-template if="$index == 4">
<StackLayout class="listSpace"> </StackLayout>
</v-template>
<v-template>
<GridLayout
columns="auto, *"
class="option"
@touch="touch($event, item.action)"
>
<Label class="ico" :text="icon[item.icon]" />
<StackLayout col="1">
<Label :text="item.title | L" class="info" />
<Label :text="item.subTitle" class="sub" />
</StackLayout>
</GridLayout>
</v-template>
</ListView>
<GridLayout row="1" class="appbar" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import {
ApplicationSettings,
Observable,
Device,
Frame,
} from "@nativescript/core";
import { localize, overrideLocale } from "@nativescript/localize";
import ActionDialog from "../modal/ActionDialog.vue";
import ConfirmDialog from "../modal/ConfirmDialog.vue";
import { mapState, mapActions } from "vuex";
import * as utils from "~/shared/utils";
export default {
data() {
return {
appLanguage: "English",
};
},
computed: {
...mapState(["icon", "language", "appTheme", "layout"]),
items() {
return [
{},
{
icon: "lang",
title: "lang",
subTitle: this.appLanguage,
action: this.selectAppLanguage,
},
{
icon: "theme",
title: "Theme",
subTitle: localize(
ApplicationSettings.getString("appTheme", "sysDef")
),
action: this.selectThemes,
},
{
icon: "layout",
title: "listVM",
subTitle: localize(this.layout),
action: this.setLayoutMode,
},
{},
];
},
},
methods: {
...mapActions(["setTheme", "setLayout"]),
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
},
// LANGUAGE SELECTION
selectAppLanguage() {
let languages = this.language.map((e) => e.title);
this.$showModal(ActionDialog, {
props: {
title: "lang",
list: [...languages],
},
}).then((action) => {
if (action && action !== "Cancel" && this.appLanguage !== action) {
let currentLocale = Device.language.split("-")[0];
let locale = this.language.filter((e) => e.title === action)[0]
.locale;
if (currentLocale !== locale) {
this.$showModal(ConfirmDialog, {
props: {
title: "appRst",
description: localize("nLangInfo"),
cancelButtonText: "cBtn",
okButtonText: "rst",
},
}).then((result) => {
if (result) {
this.appLanguage = action;
ApplicationSettings.setString("appLanguage", action);
overrideLocale(locale);
setTimeout(utils.restartApp, 250);
}
});
}
}
});
},
// THEME SELECTION
selectThemes() {
this.$showModal(ActionDialog, {
props: {
title: "Theme",
list: ["Light", "Dark", "Black", "sysDef", "sysDefB"],
},
}).then((action) => {
if (
action &&
(ApplicationSettings.getString("appTheme") != this.appTheme
? true
: this.appTheme != action)
) {
this.setTheme(action);
Frame.reloadPage();
}
});
},
// LAYOUT MODE
setLayoutMode() {
this.$showModal(ActionDialog, {
props: {
title: "listVM",
list: ["detailed", "grid", "photogrid", "simple", "minimal"],
},
}).then((action) => {
if (action && action !== "Cancel" && this.layoutMode !== action) {
let act = action.toLowerCase();
ApplicationSettings.setString("layout", act);
this.setLayout(act);
}
});
},
// HELPERS
touch({ object, action }, method) {
object.className = action.match(/down|move/) ? "option fade" : "option";
if (action == "up") method();
},
},
mounted() {
this.appLanguage = ApplicationSettings.getString(
"appLanguage",
localize("sysDef")
);
},
};
</script>

View file

@ -0,0 +1,119 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
colSpan="2"
rowSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'opts' | L" />
</v-template>
<v-template if="item.type == 'switch'">
<GridLayout columns="auto, *, auto" class="option">
<Label class="ico" :text="icon[item.icon]" />
<StackLayout col="1" verticalAlignment="center">
<Label :text="item.title | L" class="info" />
<Label
v-if="item.subTitle"
:text="item.subTitle | L"
class="sub"
/>
</StackLayout>
<Switch
:color="item.checked ? '#ff5200' : '#adb5bd'"
col="2"
:checked="item.checked"
@checkedChange="item.action"
/>
</GridLayout>
</v-template>
<v-template>
<StackLayout class="listSpace"> </StackLayout>
</v-template>
</ListView>
<GridLayout
v-show="!toast"
row="1"
class="appbar"
rows="*"
columns="auto, *"
>
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<GridLayout
v-show="toast"
row="1"
colSpan="2"
class="appbar snackBar"
columns="*"
@tap="toast = null"
>
<FlexboxLayout minHeight="48" alignItems="center">
<Label class="title msg" :text="toast" />
</FlexboxLayout>
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import { Observable } from "@nativescript/core";
import { mapState, mapActions } from "vuex";
import { localize } from "@nativescript/localize";
import * as utils from "~/shared/utils";
export default {
data() {
return {
toast: null,
};
},
computed: {
...mapState(["icon", "shakeEnabled", "mondayFirst"]),
items() {
return [
{},
{
type: "switch",
icon: "shuf",
title: "sVw",
subTitle: "sVwInfo",
checked: this.shakeEnabled,
action: this.toggleShake,
},
{
type: "switch",
icon: "week",
title: "swm",
checked: this.mondayFirst,
action: this.toggleFirstDay,
},
{},
];
},
},
methods: {
...mapActions(["setShake", "setFirstDay"]),
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
},
toggleFirstDay({ object }) {
this.setFirstDay(object.checked);
},
// SHAKE VIEW RANDOM RECIPE
toggleShake({ object }) {
let checked = object.checked;
if (checked && !utils.hasAccelerometer()) {
object.checked = false;
this.toast = localize("noAccSensor");
utils.timer(5, (val) => {
if (!val) this.toast = val;
});
} else this.setShake(checked);
},
},
};
</script>

View file

@ -0,0 +1,112 @@
<template>
<Page @loaded="onPageLoad" actionBarHidden="true">
<GridLayout rows="*, auto" columns="auto, *">
<ListView
colSpan="2"
rowSpan="2"
class="options-list"
for="item in items"
>
<v-template if="$index == 0">
<Label class="pageTitle" :text="'rest' | L" />
</v-template>
<v-template if="$index == 5">
<Label class="group-info sub tw" :text="'restInfo' | L" />
</v-template>
<v-template if="$index == 6">
<StackLayout class="listSpace"> </StackLayout>
</v-template>
<v-template>
<GridLayout
columns="auto, *"
class="option"
@touch="touch($event, item.type)"
>
<Label class="ico" :text="icon.reset" />
<Label col="1" :text="item.title | L" class="info" />
</GridLayout>
</v-template>
</ListView>
<GridLayout
v-show="!toast"
row="1"
class="appbar"
rows="*"
columns="auto, *"
>
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<GridLayout
v-show="toast"
row="1"
colSpan="2"
class="appbar snackBar"
columns="*"
@tap="toast = null"
>
<FlexboxLayout minHeight="48" alignItems="center">
<Label class="title msg" :text="toast" />
</FlexboxLayout>
</GridLayout>
</GridLayout>
</Page>
</template>
<script>
import { Observable } from "@nativescript/core";
import { localize } from "@nativescript/localize";
import { mapState, mapActions } from "vuex";
import * as utils from "~/shared/utils";
export default {
data() {
return {
toast: null,
};
},
computed: {
...mapState(["icon"]),
items() {
return [
{},
{
type: "cuisines",
title: "restCuiL",
},
{
type: "categories",
title: "restCatL",
},
{
type: "yieldUnits",
title: "restYUL",
},
{
type: "units",
title: "restUL",
},
{},
{},
];
},
},
methods: {
...mapActions(["resetListItemsAction"]),
onPageLoad(args) {
const page = args.object;
page.bindingContext = new Observable();
},
// RESET
resetListItems(listName) {
this.resetListItemsAction(listName);
this.toast = localize("restDone");
utils.timer(5, (val) => {
if (!val) this.toast = val;
});
},
touch({ object, action }, type) {
object.className = action.match(/down|move/) ? "option fade" : "option";
if (action == "up") this.resetListItems(type);
},
},
};
</script>

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,15 @@
<template> <template>
<Page @loaded="mLoad" backgroundColor="transparent" :class="theme"> <Page
@loaded="transparentPage"
backgroundColor="transparent"
:class="appTheme"
>
<GridLayout <GridLayout
columns="*" columns="*"
:rows="`auto, auto, ${stretch ? '*' : 'auto'}, auto`" :rows="`auto, auto, ${stretch ? '*' : 'auto'}, auto`"
class="modal" class="modal"
> >
<RLabel class="title" :text="title | L" /> <Label class="title" :text="title | L" />
<ListView <ListView
rowHeight="48" rowHeight="48"
row="2" row="2"
@ -13,9 +17,10 @@
:height="stretch ? '100%' : listHeight" :height="stretch ? '100%' : listHeight"
> >
<v-template> <v-template>
<RLabel <Label
class="listItem" class="listItem"
:class="{ select: item == selected || $index == selected }" :class="{ tb: title === 'srt' && sortType === item }"
:color="title === 'srt' && sortType === item ? '#ff5200' : ''"
:text="`${localized(item)}`" :text="`${localized(item)}`"
@touch="touch" @touch="touch"
@tap="tapAction(item)" @tap="tapAction(item)"
@ -23,20 +28,20 @@
/> />
</v-template> </v-template>
</ListView> </ListView>
<RGridLayout :rtl="RTL" row="3" columns="auto, *, auto" class="actions"> <GridLayout row="3" columns="auto, *, auto" class="actions">
<Button <Button
:hidden="!action" v-if="action"
class="text tb st fb" class="text sm"
:text="action | L" :text="action | L"
@tap="$modal.close(action)" @tap="$modal.close(action)"
/> />
<Button <Button
col="2" col="2"
class="text tb st fb" class="text sm"
:text="'cBtn' | L" :text="'cBtn' | L"
@tap="$modal.close(0)" @tap="$modal.close(false)"
/> />
</RGridLayout> </GridLayout>
</GridLayout> </GridLayout>
</Page> </Page>
</template> </template>
@ -45,11 +50,11 @@
import { Screen } from "@nativescript/core"; import { Screen } from "@nativescript/core";
import { localize } from "@nativescript/localize"; import { localize } from "@nativescript/localize";
import { mapState, mapActions } from "vuex"; import { mapState, mapActions } from "vuex";
import Confirm from "./Confirm.vue"; import ConfirmDialog from "./ConfirmDialog.vue";
interface IData { interface IData {
newList: unknown[]; newList: unknown[];
stretch: number; stretch: boolean;
listHeight: number; listHeight: number;
} }
@ -67,31 +72,27 @@ export default {
type: String, type: String,
required: false, required: false,
}, },
selected: {
type: String,
required: false,
},
}, },
data(): IData { data(): IData {
return { return {
newList: this.list, newList: this.list,
stretch: 0, stretch: false,
listHeight: 0, listHeight: 0,
}; };
}, },
computed: { computed: {
...mapState(["icon", "theme", "RTL"]), ...mapState(["sortType", "icon", "appTheme"]),
}, },
methods: { methods: {
...mapActions(["removeLI", "deleteTP"]), ...mapActions(["removeListItemAction"]),
localized(item: string): string { localized(item: string): string {
return this.title !== "lang" ? localize(item) : item; return this.title !== "lang" ? localize(item) : item;
}, },
tapAction(item: string): void { tapAction(item: string): void {
this.$modal.close(item); this.$modal.close(item);
}, },
removeConfirmation(description: string): void { deletionConfirmation(description: string): void {
return this.$showModal(Confirm, { return this.$showModal(ConfirmDialog, {
props: { props: {
title: "conf", title: "conf",
description, description,
@ -100,61 +101,39 @@ export default {
}, },
}); });
}, },
deletionConfirmation(description: string): void {
return this.$showModal(Confirm, {
props: {
title: "conf",
description,
cancelButtonText: "cBtn",
okButtonText: "dBtn",
},
});
},
removeItem(item: string): void { removeItem(item: string): void {
let vm = this; let vm = this;
let index = this.newList.findIndex((e) => e === item);
let localizedItem = `"${localize(item)}"`; let localizedItem = `"${localize(item)}"`;
function removeLI(listName: string, desc: string): void { function removeListItem(listName: string, desc: string): void {
vm.removeConfirmation(`${localize(desc, localizedItem)}`).then( vm.deletionConfirmation(`${localize(desc, localizedItem)}`).then(
(action: boolean) => { (action: boolean) => {
if (action) if (action != null && action)
vm.removeLI({ vm.removeListItemAction({
item, item,
listName, listName,
}); });
} }
); );
} }
function deleteTP(): void {
vm.deletionConfirmation(`${localize("delPrst", `"${item}"`)}`).then(
(action: boolean) => {
if (action) {
vm.deleteTP(index);
vm.newList.splice(index, 1);
}
}
);
}
switch (this.title) { switch (this.title) {
case "cui": case "cui":
removeLI("cuisines", "rmCuiInfo"); removeListItem("cuisines", "rmCuiInfo");
break; break;
case "cat": case "cat":
removeLI("categories", "rmCatInfo"); removeListItem("categories", "rmCatInfo");
break; break;
case "yieldU": case "yieldU":
removeLI("yieldUnits", "rmYUInfo"); removeListItem("yieldUnits", "rmYUInfo");
break; break;
case "Unit": case "Unit":
removeLI("units", "rmUInfo"); removeListItem("units", "rmUInfo");
break;
case "prsts":
deleteTP();
break; break;
} }
}, },
touch({ object, action }): void { touch({ object, action }): void {
this.touchFade(object, action); object.className = action.match(/down|move/)
? "listItem fade"
: "listItem";
}, },
}, },
created() { created() {
@ -166,7 +145,7 @@ export default {
if (modalHeight < usableHeight) { if (modalHeight < usableHeight) {
this.listHeight = listHeight; this.listHeight = listHeight;
} else { } else {
this.stretch = 1; this.stretch = true;
} }
}, },
}; };

View file

@ -1,14 +1,17 @@
<template> <template>
<Page @loaded="mLoad" backgroundColor="transparent" :class="theme"> <Page
@loaded="transparentPage"
backgroundColor="transparent"
:class="appTheme"
>
<GridLayout columns="*" rows="auto, auto, *, auto" class="modal"> <GridLayout columns="*" rows="auto, auto, *, auto" class="modal">
<RLabel class="title" :text="title | L" /> <Label class="title" :text="title | L" />
<StackLayout <StackLayout
row="1" row="1"
:hidden="!filteredRecipes.length && !searchQuery" v-if="filteredRecipes.length || searchQuery"
class="input" class="input"
> >
<TextField <TextField
@loaded="setGravity"
class="modalInput" class="modalInput"
:hint="'ser' | L" :hint="'ser' | L"
v-model="searchQuery" v-model="searchQuery"
@ -16,7 +19,7 @@
</StackLayout> </StackLayout>
<ListView row="2" for="recipe in filteredRecipes"> <ListView row="2" for="recipe in filteredRecipes">
<v-template> <v-template>
<RLabel <Label
class="listItem" class="listItem"
:text="recipe.title" :text="recipe.title"
@touch="touch($event, recipe)" @touch="touch($event, recipe)"
@ -25,26 +28,30 @@
</ListView> </ListView>
<Label <Label
row="2" row="2"
padding="16" class="noResInfo"
lineHeight="4" v-if="!filteredRecipes.length && !searchQuery"
class="tc tw" :text="'recListEmp' | L"
:hidden="!noResult"
:text="noResult | L"
/> />
<RGridLayout :rtl="RTL" row="3" columns="auto, *, auto" class="actions"> <Label
row="2"
class="noResInfo"
v-if="!filteredRecipes.length && searchQuery"
:text="'noRecs' | L"
/>
<GridLayout row="3" columns="auto, *, auto" class="actions">
<Button <Button
:hidden="!action" v-if="action"
class="text tb st fb" class="text sm"
:text="action | L" :text="action | L"
@tap="$modal.close(action)" @tap="$modal.close(action)"
/> />
<Button <Button
col="2" col="2"
class="text tb st fb" class="text sm"
:text="'cBtn' | L" :text="'CANCEL' | L"
@tap="$modal.close(0)" @tap="$modal.close(false)"
/> />
</RGridLayout> </GridLayout>
</GridLayout> </GridLayout>
</Page> </Page>
</template> </template>
@ -59,7 +66,7 @@ export default {
}; };
}, },
computed: { computed: {
...mapState(["icon", "theme", "RTL"]), ...mapState(["icon", "appTheme"]),
filteredRecipes() { filteredRecipes() {
return this.recipes return this.recipes
.map((e, i) => { .map((e, i) => {
@ -69,22 +76,19 @@ export default {
cuisine: e.cuisine, cuisine: e.cuisine,
category: e.category, category: e.category,
tags: e.tags.map((e) => e.toLowerCase()).join(), tags: e.tags.map((e) => e.toLowerCase()).join(),
ingredients: e.ingredients.map((e) => e.value.toLowerCase()).join(), ingredients: e.ingredients.map((e) => e.item.toLowerCase()).join(),
}; };
}) })
.filter((e) => this.recipeFilter(e)); .filter((e) => this.recipeFilter(e));
}, },
noResult() {
if (!this.recipes.length) return "recListEmp";
else if (!this.filteredRecipes.length && this.searchQuery)
return "noRecs";
else 0;
},
}, },
methods: { methods: {
tapAction(recipe) { tapAction(recipe) {
this.$modal.close(recipe.id); this.$modal.close(recipe.id);
}, },
centerLabel(args) {
args.object.android.setGravity(16);
},
recipeFilter(e) { recipeFilter(e) {
let searchQuery = this.searchQuery.toLowerCase(); let searchQuery = this.searchQuery.toLowerCase();
return ( return (
@ -96,7 +100,9 @@ export default {
); );
}, },
touch({ object, action }, recipe) { touch({ object, action }, recipe) {
this.touchFade(object, action); object.className = action.match(/down|move/)
? "listItem fade"
: "listItem";
if (action == "up") this.tapAction(recipe); if (action == "up") this.tapAction(recipe);
}, },
}, },

View file

@ -1,28 +1,32 @@
<template> <template>
<Page @loaded="mLoad" backgroundColor="transparent" :class="theme"> <Page
@loaded="transparentPage"
backgroundColor="transparent"
:class="appTheme"
>
<GridLayout rows="auto, auto, auto" class="modal"> <GridLayout rows="auto, auto, auto" class="modal">
<RLabel class="title" :text="title | L" /> <Label class="title" :text="title | L" />
<Label <Label
row="1" row="1"
v-if="description" v-if="description"
class="desc input tw lh4" class="description tw"
:text="description" :text="description"
/> />
<RGridLayout :rtl="RTL" row="2" columns="*, auto, auto" class="actions"> <GridLayout row="2" columns="*, auto, auto" class="actions">
<Button <Button
v-if="cancelButtonText" v-if="cancelButtonText"
col="1" col="1"
class="text tb st fb" class="text sm"
:text="cancelButtonText | L" :text="cancelButtonText | L"
@tap="$modal.close(0)" @tap="$modal.close(false)"
/> />
<Button <Button
col="2" col="2"
class="text tb st fb" class="text sm"
:text="okButtonText | L" :text="okButtonText | L"
@tap="$modal.close(1)" @tap="$modal.close(true)"
/> />
</RGridLayout> </GridLayout>
</GridLayout> </GridLayout>
</Page> </Page>
</template> </template>
@ -49,7 +53,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapState(["icon", "theme", "RTL"]), ...mapState(["icon", "appTheme"]),
}, },
}; };
</script> </script>

View file

@ -1,32 +1,28 @@
<template> <template>
<Page @loaded="pgLoad" backgroundColor="transparent" :class="theme"> <Page @loaded="onPageLoad" backgroundColor="transparent" :class="appTheme">
<GridLayout rows="auto, auto, *, auto" columns="*" class="modal"> <GridLayout rows="auto, auto, *, auto" columns="*" class="modal">
<RLabel class="title a" :text="`fltr` | L" /> <Label class="title" :text="`fltr` | L" />
<ScrollView orientation="horizontal" row="1" @loaded="onScrollLoad"> <ScrollView orientation="horizontal" row="1" @loaded="onScrollLoad">
<RStackLayout :rtl="RTL" class="filters" orientation="horizontal"> <StackLayout class="filters" orientation="horizontal">
<GridLayout <GridLayout
rows="32" rows="48"
columns="32, auto" columns="auto, auto"
class="segment rtl" class="segment"
v-for="(item, index) in pathList" v-for="(item, index) in pathList"
:key="index" :key="index"
:class="{ select: filter === item.type }" :class="{
select: filterType === item.type,
}"
@touch="touchSelector($event, item.type)" @touch="touchSelector($event, item.type)"
> >
<Label class="ico tc vc" :text="icon[item.type]" /> <Label class="ico" :text="icon[item.type]" />
<Label <Label v-if="item.title" class="value" :text="item.title" col="1" />
:hidden="!item.title"
class="v vc"
:class="{ f: RTL }"
:text="item.title"
col="1"
/>
</GridLayout> </GridLayout>
</RStackLayout> </StackLayout>
</ScrollView> </ScrollView>
<ListView row="2" class="options" for="item in filterList"> <ListView row="2" class="options-list" for="item in filterList">
<v-template> <v-template>
<RLabel <Label
class="listItem" class="listItem"
verticalAlignment="center" verticalAlignment="center"
col="1" col="1"
@ -35,26 +31,21 @@
/> />
</v-template> </v-template>
</ListView> </ListView>
<RGridLayout <GridLayout row="3" columns="auto, *, auto, auto" class="actions">
:rtl="RTL" <Button class="text sm" :text="'rest' | L" @tap="resetFilter" />
row="3"
columns="auto, *, auto, auto"
class="actions"
>
<Button class="text tb st fb" :text="'rstBtn' | L" @tap="resetFilter" />
<Button <Button
col="2" col="2"
class="text tb st fb" class="text sm"
:text="'cBtn' | L" :text="'cBtn' | L"
@tap="$modal.close()" @tap="$modal.close()"
/> />
<Button <Button
col="3" col="3"
class="text tb st fb" class="text sm"
:text="'apply' | L" :text="'apply' | L"
@tap="applyFilter" @tap="applyFilter"
/> />
</RGridLayout> </GridLayout>
</GridLayout> </GridLayout>
</Page> </Page>
</template> </template>
@ -66,11 +57,11 @@ let filterTimer;
export default { export default {
data() { data() {
return { return {
filter: "cuisine", filterType: "cuisine",
localCuisine: null, localCuisine: null,
localCategory: null, localCategory: null,
localTag: null, localTag: null,
reset: 0, reset: false,
}; };
}, },
computed: { computed: {
@ -79,11 +70,10 @@ export default {
"recipes", "recipes",
"cuisines", "cuisines",
"categories", "categories",
"selCuisine", "selectedCuisine",
"selCategory", "selectedCategory",
"selTag", "selectedTag",
"theme", "appTheme",
"RTL",
]), ]),
pathList() { pathList() {
let arr = [ let arr = [
@ -100,7 +90,7 @@ export default {
title: localize(this.localTag), title: localize(this.localTag),
}, },
]; ];
switch (this.filter) { switch (this.filterType) {
case "cuisine": case "cuisine":
return arr.slice(0, -2); return arr.slice(0, -2);
case "category": case "category":
@ -109,7 +99,7 @@ export default {
return arr; return arr;
}, },
filterList() { filterList() {
switch (this.filter) { switch (this.filterType) {
case "cuisine": case "cuisine":
return this.cuisineList; return this.cuisineList;
case "category": case "category":
@ -173,21 +163,27 @@ export default {
}, },
}, },
methods: { methods: {
...mapActions(["setCuisine", "setCategory", "setTag"]), ...mapActions([
pgLoad(args) { "setComponent",
this.mLoad(args); "setCuisine",
this.localCuisine = this.selCuisine; "setCategory",
this.localCategory = this.selCategory; "setTag",
this.localTag = this.selTag; "clearFilter",
if (this.localCuisine) this.filter = "category"; ]),
if (this.localCategory && this.localTag) this.filter = "tag"; onPageLoad(args) {
this.transparentPage(args);
this.localCuisine = this.selectedCuisine;
this.localCategory = this.selectedCategory;
this.localTag = this.selectedTag;
if (this.localCuisine) this.filterType = "category";
if (this.localCategory && this.localTag) this.filterType = "tag";
this.scrollToRight(); this.scrollToRight();
}, },
onScrollLoad(args) { onScrollLoad(args) {
this.scrollview = args.object; this.scrollview = args.object;
}, },
setFilterType(type) { setFilterType(type) {
this.filter = type; this.filterType = type;
switch (type) { switch (type) {
case "cuisine": case "cuisine":
this.localCategory = null; this.localCategory = null;
@ -202,22 +198,22 @@ export default {
setTimeout( setTimeout(
() => () =>
this.scrollview.scrollToHorizontalOffset( this.scrollview.scrollToHorizontalOffset(
this.RTL ? 0 : this.scrollview.scrollableWidth, this.scrollview.scrollableWidth,
true true
), ),
10 10
); );
}, },
setRecipeFilter(item) { setRecipeFilter(item) {
this.reset = 0; this.reset = false;
switch (this.filter) { switch (this.filterType) {
case "cuisine": case "cuisine":
this.localCuisine = item; this.localCuisine = item;
this.filter = "category"; this.filterType = "category";
break; break;
case "category": case "category":
this.localCategory = item; this.localCategory = item;
if (this.tagList.length) this.filter = "tag"; if (this.tagList.length) this.filterType = "tag";
break; break;
default: default:
this.localTag = item; this.localTag = item;
@ -229,23 +225,28 @@ export default {
this.setCuisine(this.localCuisine); this.setCuisine(this.localCuisine);
this.setCategory(this.localCategory); this.setCategory(this.localCategory);
this.setTag(this.localTag); this.setTag(this.localTag);
this.filterFavourites = this.filterTrylater = 0; this.filterFavourites = this.filterTrylater = false;
this.$modal.close(this.reset); if (this.reset) this.setComponent("EnRecipes");
else this.setComponent("Filtered recipes");
this.$modal.close();
}, },
resetFilter() { resetFilter() {
this.filter = "cuisine"; this.filterType = "cuisine";
this.localCuisine = this.localCategory = this.localTag = null; this.localCuisine = this.localCategory = this.localTag = null;
this.reset = 1; this.reset = true;
}, },
touch({ object, action }, item) { touch({ object, action }, item) {
this.touchFade(object, action); object.className = action.match(/down|move/)
? "listItem fade"
: "listItem";
if (action == "up") this.setRecipeFilter(item); if (action == "up") this.setRecipeFilter(item);
}, },
touchSelector({ object, action }, type) { touchSelector({ object, action }, type) {
if (this.filter != type) { let selected = this.filterType == type;
this.touchFade(object, action); object.className = action.match(/down|move/)
? `segment ${selected ? "select" : "fade"}`
: `segment ${selected && "select"}`;
if (action == "up") this.setFilterType(type); if (action == "up") this.setFilterType(type);
}
}, },
}, },
}; };

View file

@ -1,44 +1,46 @@
<template> <template>
<Page <Page
@loaded="mLoad" @loaded="transparentPage"
backgroundColor="transparent" backgroundColor="transparent"
:class="theme" :class="appTheme"
> >
<GridLayout rows="auto, auto, auto" class="modal"> <GridLayout rows="auto, auto, auto" class="modal">
<RLabel class="title" :text="title | L" /> <Label class="title" :text="title | L" />
<RStackLayout <StackLayout
:rtl="RTL"
row="1" row="1"
class="dialogListPicker"
orientation="horizontal" orientation="horizontal"
horizontalAlignment="center" horizontalAlignment="center"
> >
<ListPicker <ListPicker
@loaded="onLPLoad" @loaded="onLPLoad"
ref="hrPicker"
:items="hrsList" :items="hrsList"
:selectedIndex="hrIndex" :selectedIndex="hrIndex"
@selectedIndexChange="setHrs" @selectedIndexChange="setHrs"
></ListPicker> ></ListPicker>
<ListPicker <ListPicker
@loaded="onLPLoad" @loaded="onLPLoad"
ref="minPicker"
:items="minsList" :items="minsList"
:selectedIndex="minIndex" :selectedIndex="minIndex"
@selectedIndexChange="setMins" @selectedIndexChange="setMins"
></ListPicker> ></ListPicker>
</RStackLayout> </StackLayout>
<RGridLayout :rtl="RTL" row="2" columns="*, auto, auto" class="actions"> <GridLayout row="2" columns="*, auto, auto" class="actions">
<Button <Button
col="1" col="1"
class="text tb st fb" class="text sm"
:text="'cBtn' | L" :text="'cBtn' | L"
@tap="$modal.close(0)" @tap="$modal.close(false)"
/> />
<Button <Button
col="2" col="2"
class="text tb st fb" class="text sm"
:text="'SET' | L" :text="action | L"
@tap="$modal.close(selectedTime)" @tap="$modal.close(selectedTime)"
/> />
</RGridLayout> </GridLayout>
</GridLayout> </GridLayout>
</Page> </Page>
</template> </template>
@ -47,7 +49,7 @@
import { mapState } from "vuex"; import { mapState } from "vuex";
import { localize } from "@nativescript/localize"; import { localize } from "@nativescript/localize";
export default { export default {
props: ["title", "selectedHr", "selectedMin"], props: ["title", "selectedHr", "selectedMin", "action"],
data() { data() {
return { return {
hrs: [], hrs: [],
@ -57,14 +59,19 @@ export default {
}; };
}, },
computed: { computed: {
...mapState(["icon", "theme", "RTL"]), ...mapState(["icon", "appTheme"]),
hrsList() { hrsList() {
let h = [...Array(24).keys()]; let h = [...Array(24).keys()];
this.hrs = h; this.hrs = h;
return h.map((e) => `${e} ${localize("hr")}`); return h.map((e) => `${e} ${localize("hr")}`);
}, },
minsList() { minsList() {
let m = [...Array(60).keys()]; let m = [
...new Set([
...Array(11).keys(),
...Array.from(Array(12), (_, x) => x * 5),
]),
];
this.mins = m; this.mins = m;
return m.map((e) => `${e} ${localize("min")}`); return m.map((e) => `${e} ${localize("min")}`);
}, },

View file

@ -1,44 +1,33 @@
<template> <template>
<Page <Page
@loaded="mLoad" @loaded="transparentPage"
backgroundColor="transparent" backgroundColor="transparent"
:class="theme" :class="appTheme"
> >
<GridLayout rows="auto, auto, auto" class="modal"> <GridLayout rows="auto, auto, auto" class="modal">
<RLabel class="title" :text="title | L" /> <Label class="title" :text="title | L" />
<StackLayout row="1" class="input"> <StackLayout row="1" class="input">
<TextView
v-if="type == 'view'"
autocorrect="true"
autocapitalizationType="sentences"
class="modalInput"
@loaded="focusField"
v-model="text"
/>
<TextField <TextField
autocapitalizationType="sentences"
autocorrect="true"
v-else
class="modalInput" class="modalInput"
@loaded="focusField" @loaded="focusField"
v-model="text" v-model="text"
@returnPress="$modal.close(text)" @returnPress="$modal.close(text)"
/> />
</StackLayout> </StackLayout>
<RGridLayout :rtl="RTL" row="2" columns="*, auto, auto" class="actions"> <GridLayout row="2" columns="*, auto, auto" class="actions">
<Button <Button
col="1" col="1"
class="text tb st fb" class="text sm"
:text="'cBtn' | L" :text="'cBtn' | L"
@tap="$modal.close(0)" @tap="$modal.close(false)"
/> />
<Button <Button
col="2" col="2"
class="text tb st fb" class="text sm"
:text="action | L" :text="action | L"
@tap="$modal.close(text)" @tap="$modal.close(text)"
/> />
</RGridLayout> </GridLayout>
</GridLayout> </GridLayout>
</Page> </Page>
</template> </template>
@ -48,23 +37,20 @@ import { Utils } from "@nativescript/core";
import { localize } from "@nativescript/localize"; import { localize } from "@nativescript/localize";
import { mapState } from "vuex"; import { mapState } from "vuex";
export default { export default {
props: ["title", "type", "hint", "placeholder", "action"], props: ["title", "hint", "placeholder", "action"],
data() { data() {
return { return {
text: null, text: null,
}; };
}, },
computed: { computed: {
...mapState(["icon", "theme", "RTL"]), ...mapState(["icon", "appTheme"]),
}, },
methods: { methods: {
focusField({ object }) { focusField({ object }) {
this.setGravity(object);
let a = this.placeholder; let a = this.placeholder;
typeof a == "number" typeof a == "number"
? (object.keyboardType = "number") ? (object.keyboardType = "number")
: this.type
? ""
: (object.autocapitalizationType = "words"); : (object.autocapitalizationType = "words");
object.hint = this.hint; object.hint = this.hint;
object.focus(); object.focus();

View file

@ -1,108 +0,0 @@
<template>
<Page
@loaded="mLoad"
backgroundColor="transparent"
:class="theme"
>
<GridLayout rows="auto, auto, auto" class="modal">
<RLabel class="title" :text="title | L" />
<RStackLayout
:rtl="RTL"
row="1"
orientation="horizontal"
horizontalAlignment="center"
>
<ListPicker
@loaded="onLPLoad"
:items="days"
:selectedIndex="dIndex"
@selectedIndexChange="setD"
></ListPicker>
<ListPicker
@loaded="onLPLoad"
:items="months"
:selectedIndex="currentM"
@selectedIndexChange="setM"
></ListPicker>
<ListPicker
:items="years"
:selectedIndex="yIndex"
@selectedIndexChange="setY"
></ListPicker>
</RStackLayout>
<RGridLayout :rtl="RTL" row="2" columns="*, auto, auto" class="actions">
<Button
col="1"
class="text tb st fb"
:text="'cBtn' | L"
@tap="$modal.close(0)"
/>
<Button
col="2"
class="text tb st fb"
:text="'SET' | L"
@tap="$modal.close(selected)"
/>
</RGridLayout>
</GridLayout>
</Page>
</template>
<script>
import { mapState } from "vuex";
import { localize } from "@nativescript/localize";
export default {
props: ["title", "monthNames", "currentD", "currentM", "currentY"],
data() {
return {
selectedD: 0,
selectedM: 0,
selectedY: 0,
};
},
computed: {
...mapState(["icon", "theme", "RTL"]),
days() {
let ld = new Date(this.selectedY, this.selectedM + 1, 0).getDate();
return Array.from({ length: ld }, (v, i) => i + 1);
},
dIndex() {
return this.days.indexOf(this.selectedD || this.currentD);
},
months() {
return this.monthNames.map((e) => localize(e));
},
years() {
let min = 1900;
let max = min + 200;
let years = [];
for (let i = min; i <= max; i++) years.push(i);
return years;
},
yIndex() {
return this.years.indexOf(this.currentY);
},
selected() {
return {
date: this.selectedD,
month: this.selectedM,
year: this.selectedY,
};
},
},
methods: {
onLPLoad({ object }) {
object.android.setWrapSelectorWheel(true);
},
setD(args) {
this.selectedD = args.object.selectedIndex + 1;
},
setM(args) {
this.selectedM = args.object.selectedIndex;
},
setY(args) {
this.selectedY = this.years[args.object.selectedIndex];
},
},
};
</script>

View file

@ -1,133 +0,0 @@
<template>
<Page @loaded="mLoad" backgroundColor="transparent" :class="theme">
<GridLayout rows="auto, auto, auto" class="modal">
<RLabel class="title" :text="title | L" />
<StackLayout row="1">
<StackLayout class="input">
<TextField
@loaded="setGravity"
class="modalInput"
v-model="setLabel"
:hint="label"
autocapitalizationType="words"
autocorrect="true"
/></StackLayout>
<RStackLayout
:rtl="RTL"
orientation="horizontal"
horizontalAlignment="center"
>
<ListPicker
@loaded="onLPLoad"
:items="hrsList"
@selectedIndexChange="setHr"
></ListPicker>
<ListPicker
@loaded="onLPLoad"
:items="minsList"
@selectedIndexChange="setMin"
></ListPicker>
<ListPicker
@loaded="onLPLoad"
:items="secsList"
@selectedIndexChange="setSec"
></ListPicker>
</RStackLayout>
</StackLayout>
<RGridLayout
:rtl="RTL"
row="2"
columns="auto, *, auto, auto"
class="actions r"
>
<Button
v-if="showPreset"
class="text tb st fb"
:text="'prstBtn' | L"
@tap="$modal.close('presets')"
/>
<Button
col="2"
class="text tb st fb"
:text="'cBtn' | L"
@tap="$modal.close(0)"
/>
<Button
col="3"
class="text tb st fb"
:text="action | L"
@tap="respond"
/>
</RGridLayout>
</GridLayout>
</Page>
</template>
<script>
import { Utils } from "@nativescript/core";
import { localize } from "@nativescript/localize";
import { mapState } from "vuex";
export default {
props: ["title", "label", "action", "showPreset"],
data() {
return {
hrs: [],
mins: [],
secs: [],
selectedHrs: "00",
selectedMins: "00",
selectedSecs: "00",
setLabel: null,
};
},
computed: {
...mapState(["icon", "theme", "RTL"]),
hrsList() {
let h = [...Array(24).keys()];
this.hrs = h;
return h.map((e) => `${e} ${localize("hr")}`);
},
minsList() {
let m = [...Array(60).keys()];
this.mins = m;
return m.map((e) => `${e} ${localize("min")}`);
},
secsList() {
let s = [...Array(60).keys()];
this.secs = s;
return s.map((e) => `${e} ${localize("sec")}`);
},
selectedTime() {
return `${this.selectedHrs}:${this.selectedMins}:${this.selectedSecs}`;
},
},
methods: {
onLPLoad({ object }) {
object.android.setWrapSelectorWheel(true);
},
setHr(args) {
let hr = "0" + this.hrs[args.object.selectedIndex];
this.selectedHrs = hr.slice(-2);
},
setMin(args) {
let min = "0" + this.mins[args.object.selectedIndex];
this.selectedMins = min.slice(-2);
},
setSec(args) {
let sec = "0" + this.secs[args.object.selectedIndex];
this.selectedSecs = sec.slice(-2);
},
focusField({ object }) {
object.focus();
setTimeout(() => Utils.ad.showSoftInput(object.android), 100);
},
respond() {
this.$modal.close({
label: this.setLabel ? this.setLabel : this.label,
time: this.selectedTime,
});
},
},
};
</script>

View file

@ -1,112 +0,0 @@
<template>
<Page @loaded="pgLoad" :class="theme" backgroundColor="#ff5200">
<GridLayout rows="*, *">
<Button
class="ico fab"
fontSize="128"
:width="screenWidth"
:height="screenWidth"
:text="icon.timer"
/>
<GridLayout row="1" rows="*, auto" columns="*, auto, *">
<ScrollView :class="theme" rowSpan="2" colSpan="3">
<StackLayout paddingTop="8">
<Timer
v-for="timer in timers"
:key="timer.id"
:timer="timer"
:formattedTime="formattedTime"
:removeTimer="removeTimer"
:togglePause="togglePause"
:timerAlert="timerAlert"
:showToast="showToast"
/>
<StackLayout class="ls"> </StackLayout>
</StackLayout>
</ScrollView>
<GridLayout col="1" row="1" class="appbar">
<Button
class="ico fab"
margin="0"
:text="icon.x"
@tap="removeTimers"
col="1"
/>
</GridLayout>
</GridLayout>
</GridLayout>
</Page>
</template>
<script lang="ts">
import { Application, Screen, Device, Color, Utils } from "@nativescript/core";
import Timer from "../sub/Timer.vue";
import * as utils from "~/shared/utils";
import { mapState } from "vuex";
const windowMgr = android.view.WindowManager;
export default {
components: { Timer },
props: [
"formattedTime",
"removeTimer",
"togglePause",
"timerAlert",
"showToast",
],
computed: {
...mapState(["icon", "theme", "activeTs"]),
screenWidth() {
return Screen.mainScreen.widthDIPs;
},
timers() {
let timers = this.activeTs.filter((e) => e.done);
if (!timers.length) {
this.$modal.close(1);
this.isScreenLocked && this.turnOffScreen();
}
return timers;
},
sdkv() {
return parseInt(Device.sdkVersion);
},
isScreenLocked() {
const keyguardMgr = Utils.ad
.getApplicationContext()
.getSystemService(android.content.Context.KEYGUARD_SERVICE);
return this.sdkv > 21
? keyguardMgr.isDeviceLocked()
: keyguardMgr.isKeyguardLocked();
},
},
methods: {
pgLoad({ object }) {
let dialog = object._dialogFragment.getDialog();
let dialogWindow = dialog.getWindow();
let decorView = dialogWindow.getDecorView();
dialog.setCancelable(false);
if (this.isScreenLocked) {
const flags =
windowMgr.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
windowMgr.LayoutParams.FLAG_TURN_SCREEN_ON |
windowMgr.LayoutParams.FLAG_KEEP_SCREEN_ON;
dialogWindow.addFlags(flags);
}
utils.setBarColors(dialogWindow, decorView, this.theme);
dialogWindow.setStatusBarColor(new Color("#ff5200").android);
},
removeTimers() {
this.timers.forEach((timer) => this.removeTimer(timer.id, 1));
this.isScreenLocked && this.turnOffScreen();
},
turnOffScreen() {
const window = Application.android.startActivity.getWindow();
const flags =
windowMgr.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
windowMgr.LayoutParams.FLAG_TURN_SCREEN_ON |
windowMgr.LayoutParams.FLAG_KEEP_SCREEN_ON;
window.clearFlags(flags);
},
},
};
</script>

View file

@ -1,120 +0,0 @@
<template>
<Page @loaded="pgLoad" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<ListView rowSpan="2" colSpan="2" class="options" for="item in items">
<v-template if="$index == 0">
<Label class="pTitle tw tb" :text="'About' | L" />
</v-template>
<v-template if="$index == 1">
<StackLayout class="appInfo">
<Image class="logo" src="res://logo" stretch="none" />
<Label class="name tb tc" :text="'EnRecipes' | L" />
<Label :text="getVersion" class="tb tc" />
<Label class="info tc tw lh4" text="by Vishnu Raghav B" />
<Label class="info tc tw lh4" :text="'appInfo' | L" />
</StackLayout>
</v-template>
<v-template if="$index == 8">
<StackLayout class="ls"> </StackLayout>
</v-template>
<v-template>
<RGridLayout
:rtl="RTL"
columns="auto, *"
class="option"
@touch="touch($event, item.url)"
>
<Label
class="ico"
:class="{ rtl: /help|don/.test(item.icon) }"
:text="icon[item.icon]"
/>
<Label col="1" class="info" :text="item.title | L" />
</RGridLayout>
</v-template>
</ListView>
<GridLayout row="1" class="appbar rtl" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script>
import { Application, Observable, Utils } from '@nativescript/core'
import { mapState } from 'vuex'
export default {
computed: {
...mapState(['icon', 'RTL']),
items() {
return [
{},
{},
{
icon: 'lang',
title: 'Official Website',
url: 'https://enrecipes.vercel.app',
},
// {
// icon: 'gh',
// title: 'gh',
// url: 'https://github.com/vishnuraghavb/EnRecipes',
// },
{
icon: 'tg',
title: 'joinTG',
url: 'https://t.me/enrecipes',
},
{
icon: 'help',
title: 'guide',
url: 'https://github.com/vishnuraghavb/EnRecipes-Wiki/wiki/User-Guide',
},
{
icon: 'priv',
title: 'priv',
url: 'https://github.com/vishnuraghavb/EnRecipes-Wiki/blob/main/PRIVACY.md',
},
{
icon: 'don',
title: 'donate',
url: 'https://www.vishnuraghav.com/donate',
},
// {
// icon: "trans",
// title: "trnsl",
// url: "https://hosted.weblate.org/projects/enrecipes/app-translations",
// },
{},
]
},
getVersion() {
let ctx = Application.android.context
return (
'v' +
ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0)
.versionName
)
},
},
methods: {
pgLoad({ object }) {
object.bindingContext = new Observable()
},
touch({ object, action }, url) {
this.touchFade(object, action)
if (action == 'up') Utils.openUrl(url)
},
},
}
</script>

View file

@ -1,87 +0,0 @@
<template>
<Page @loaded="pgLoad" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<OptionsList title="Settings" :items="items" :action="navigateTo" />
<GridLayout row="1" class="appbar rtl" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script lang="ts">
import { Observable } from "@nativescript/core";
import { mapState } from "vuex";
import Interface from "./Interface.vue";
import Options from "./Options.vue";
import Database from "./Database.vue";
import Reset from "./Reset.vue";
import About from "./About.vue";
import OptionsList from "../sub/OptionsList.vue";
export default {
components: { OptionsList },
data() {
return {
items: [
{},
{
type: "list",
icon: "interface",
rtl: 0,
title: "intf",
data: Interface,
},
{
type: "list",
icon: "opts",
rtl: 1,
title: "opts",
data: Options,
},
{
type: "list",
icon: "db",
rtl: 0,
title: "db",
data: Database,
},
{
type: "list",
icon: "reset",
rtl: 1,
title: "rest",
data: Reset,
},
{
type: "list",
icon: "info",
rtl: 0,
title: "About",
data: About,
},
{},
],
};
},
computed: {
...mapState(["icon", "RTL"]),
},
methods: {
pgLoad({ object }) {
object.bindingContext = new Observable();
},
navigateTo(view) {
this.$navigateTo(view, {
animated: false,
});
},
},
};
</script>

View file

@ -1,161 +0,0 @@
<template>
<Page @loaded="pgLoad" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<OptionsList title="Settings" :items="items" />
<GridLayout row="1" class="appbar rtl" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script>
import {
Observable,
Device,
Application,
ApplicationSettings,
Utils,
} from "@nativescript/core";
import { mapState, mapActions } from "vuex";
import { localize } from "@nativescript/localize";
import OptionsList from "../sub/OptionsList";
import Action from "../modals/Action";
import * as utils from "~/shared/utils";
export default {
components: { OptionsList },
computed: {
...mapState(["icon", "timerD", "timerS", "timerV", "RTL"]),
items() {
let options = [
{
type: "list",
icon: "sound",
rtl: 0,
title: "tmrSnd",
subTitle: this.timerS.title,
action: this.showSoundsList,
},
{
type: "switch",
icon: "vibrate",
rtl: 0,
title: "tmrvbrt",
checked: !!this.timerV,
action: this.toggleTimerVibrate,
},
];
let openSettings = [
{
type: "list",
icon: "sound",
rtl: 0,
title: "notifSetg",
subTitle: null,
action: this.openNotificationChannelSettings,
},
];
let list = this.channelExists() ? openSettings : options;
return [
{},
{
type: "list",
icon: "delay",
rtl: 0,
title: "dlyDur",
subTitle:
this.delayList[this.delayList.findIndex((e) => e.n == this.timerD)]
.l,
action: this.showDelayList,
},
...list,
{},
];
},
delayList() {
return [
...Array.from(Array(4), (_, x) => x + 1),
...Array.from(Array(6), (_, x) => (x + 1) * 5),
].map((e) => {
return {
l: `${this.localeN(e)} ${localize(e > 1 ? "minutes" : "minute")}`,
n: e,
};
});
},
},
methods: {
...mapActions(["setTD", "setTS", "setTV"]),
pgLoad({ object }) {
object.bindingContext = new Observable();
ApplicationSettings.setNumber("isTimer", 2);
},
showDelayList() {
this.$showModal(Action, {
props: {
title: "dlyDur",
list: this.delayList.map((e) => e.l),
selected: this.delayList.findIndex((e) => e.n == this.timerD),
},
}).then(
(res) =>
res &&
this.setTD(
this.delayList[this.delayList.findIndex((e) => e.l == res)].n
)
);
},
showSoundsList() {
let getTones = utils.getTones();
this.$showModal(Action, {
props: {
title: "tmrSnd",
list: getTones.tones.map((e) => e.title),
selected: getTones.tones.findIndex(
(e) => e.title == this.timerS.title
),
},
}).then(
(tone) =>
tone &&
tone !== this.timerS.title &&
this.setTS(getTones.tones.filter((e) => e.title === tone)[0])
);
},
toggleTimerVibrate() {
this.setTV(!this.timerV | 0);
},
openNotificationChannelSettings() {
const ctx = Application.android.context;
const Settings = android.provider.Settings;
const Intent = android.content.Intent;
let intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(
Settings.EXTRA_APP_PACKAGE,
Application.android.packageName
);
intent.putExtra(Settings.EXTRA_CHANNEL_ID, "cta");
intent.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(intent);
},
channelExists() {
if (Device.sdkVersion * 1 >= 26) {
const ctx = Utils.ad.getApplicationContext();
const NotifySrv = ctx.getSystemService(
android.content.Context.NOTIFICATION_SERVICE
);
return NotifySrv.getNotificationChannel("cta");
}
return null;
},
},
};
</script>

View file

@ -1,488 +0,0 @@
<template>
<Page @loaded="pageL" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<OptionsList title="db" :items="items" />
<GridLayout
:hidden="toast || progress"
@loaded="appbarL"
row="1"
class="appbar rtl"
rows="*"
columns="auto, *"
>
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Toast :onload="toastL" :toast="toast" :action="hideBar" />
<RGridLayout
:rtl="RTL"
v-show="progress"
row="1"
colSpan="2"
class="appbar snackbar rtl"
columns="auto, *"
>
<ActivityIndicator :busy="!!progress" />
<RLabel margin="0 2" col="1" class="tb tw vc lh4" :text="progress" />
</RGridLayout>
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script>
import {
ApplicationSettings,
path,
knownFolders,
AndroidApplication,
File,
Folder,
Observable,
Application,
getFileAccess,
} from "@nativescript/core";
import { localize } from "@nativescript/localize";
import Confirm from "../modals/Confirm";
import OptionsList from "../sub/OptionsList";
import Toast from "../sub/Toast";
import { mapState, mapActions } from "vuex";
import { openOrCreate } from "@akylas/nativescript-sqlite";
import * as utils from "~/shared/utils";
export default {
components: { OptionsList, Toast },
data() {
return {
backupFolder: 0,
progress: null,
toast: 0,
appbar: 0,
toastbar: 0,
};
},
computed: {
...mapState([
"icon",
"recipes",
"cuisines",
"categories",
"yieldUnits",
"units",
"mealPlans",
"impSum",
"RTL",
]),
items() {
return [
{},
{
type: "list",
icon: "folder",
title: "buFol",
subTitle: this.backupFolder,
action: this.setBackupFolder,
},
{
type: "list",
icon: "exp",
title: "expBu",
subTitle: localize("buInfo"),
action: this.exportCheck,
},
{
type: "list",
icon: "imp",
title: "impBu",
subTitle: localize("impInfo"),
action: this.openZipFile,
},
{},
];
},
},
methods: {
...mapActions([
"importLIs",
"importRsJSON",
"importRsDB",
"importMPsJSON",
"importMPsDB",
"importTPs",
"unLinkBIs",
"clearIS",
]),
pageL({ object }) {
object.bindingContext = new Observable();
const ContentResolver =
Application.android.nativeApp.getContentResolver();
this.backupFolder = ApplicationSettings.getString("backupFolder", null);
if (
!this.backupFolder ||
ContentResolver.getPersistedUriPermissions().isEmpty()
) {
this.backupFolder = null;
}
},
appbarL({ object }) {
this.appbar = object;
},
toastL({ object }) {
this.toastbar = object;
},
// BackupFolderPicker
setBackupFolder(startExport) {
const ContentResolver =
Application.android.nativeApp.getContentResolver();
const FLAGS =
android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION |
android.content.Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
utils.getBackupFolder().then((uri) => {
if (uri != null) {
// ReleaseExistingPermissions
if (this.backupFolder && this.backupFolder != uri.toString())
ContentResolver.releasePersistableUriPermission(
new android.net.Uri.parse(this.backupFolder),
FLAGS
);
this.backupFolder = uri.toString();
ApplicationSettings.setString("backupFolder", this.backupFolder);
// PersistPermissions
ContentResolver.takePersistableUriPermission(uri, FLAGS);
if (startExport && this.backupFolder) {
this.exportBackup();
}
}
});
},
// EXPORT HANDLERS
exportCheck() {
const ContentResolver =
Application.android.nativeApp.getContentResolver();
if (!this.recipes.length) this.showToast(localize("aFBu"));
else {
if (
!this.backupFolder ||
ContentResolver.getPersistedUriPermissions().isEmpty()
) {
this.setBackupFolder(1);
} else this.exportBackup();
}
},
exportBackup() {
this.progress = localize("expip");
this.hijackBackEvent();
let date = new Date();
let intlDate =
date.getFullYear() +
"-" +
("0" + (date.getMonth() + 1)).slice(-2) +
"-" +
("0" + date.getDate()).slice(-2) +
"_" +
("0" + date.getHours()).slice(-2) +
("0" + date.getMinutes()).slice(-2) +
("0" + date.getSeconds()).slice(-2);
// Copy db file to EnRecipes folder
utils.copyDBToExport();
let filename = `${localize("EnRecipes")}_${intlDate}.zip`;
let fromPath = path.join(knownFolders.documents().path, "EnRecipes");
utils.Zip.zip(fromPath, this.backupFolder, filename)
.then((res) => res && this.showExportSummary(filename))
.catch((err) => {
console.log("Backup error: ", err);
this.progress = 0;
this.releaseBackEvent();
this.setBackupFolder(1);
});
},
showExportSummary(filename) {
// delete copied db file
getFileAccess().deleteFile(
path.join(
knownFolders.documents().getFolder("EnRecipes").path,
"EnRecipes.db"
)
);
this.progress = 0;
this.releaseBackEvent();
let description = localize("buto", `"${filename}"`);
this.$showModal(Confirm, {
props: {
title: "expSuc",
description,
okButtonText: "OK",
},
});
},
// IMPORT HANDLERS
openZipFile() {
utils.getBackupFile().then((uri) => {
if (uri) {
knownFolders.temp().clear();
let dest = knownFolders.temp().path;
utils.Zip.unzip(uri, dest)
.then((res) => res && this.validateZipContent(res, uri))
.catch(() => this.failedImport(localize("buInc")));
}
});
},
validateZipContent(dest, uri) {
this.progress = localize("impip");
this.hijackBackEvent();
let cache = dest + "/EnRecipes";
const recipesDB = cache + "/EnRecipes.db";
const recipes = cache + "/recipes.json";
const images = cache + "/Images";
const userCuisines = cache + "/userCuisines.json";
const userCategories = cache + "/userCategories.json";
const userYieldUnits = cache + "/userYieldUnits.json";
const userUnits = cache + "/userUnits.json";
const mealPlans = cache + "/mealPlans.json";
let vm = this;
// IMPORT IMAGES FINALLY
function importImages() {
const timer = setInterval(() => {
if (!vm.progress) clearInterval(timer);
if (vm.progress && vm.impSum.found) {
Folder.exists(images)
? vm.importImages(uri)
: vm.showImportSummary();
}
}, 100);
}
if (Folder.exists(cache)) {
if (File.exists(recipesDB)) {
// IMPORT FROM DB FILE
this.extractData(recipesDB);
importImages();
} else if (File.exists(recipes)) {
// IMPORT FROM JSON FILES
this.isFileDataValid([
{
path: recipes,
db: "recipes",
file: "recipes.json",
},
{
path: userCuisines,
db: "userCuisines",
file: "userCuisines.json",
},
{
path: userCategories,
db: "userCategories",
file: "userCategories.json",
},
{
path: userYieldUnits,
db: "userYieldUnits",
file: "userYieldUnits.json",
},
{
path: userUnits,
db: "userUnits",
file: "userUnits.json",
},
{
path: mealPlans,
db: "mealPlans",
file: "mealPlans.json",
},
]);
importImages();
} else this.failedImport(localize("buEmp"));
} else this.failedImport(localize("buInc"));
},
isFileDataValid(file) {
const files = file.filter((e) => File.exists(e.path));
if (files.length) {
let isValid = files.map(() => 0);
files.forEach((file, i) => {
File.fromPath(file.path)
.readText()
.then((data) => {
isValid[i] = this.hasValidJSON(data);
if (!isValid[i]) {
this.failedImport(
`${localize("buMod")}\n\n${localize("invFile")}: ${file.file}`
);
return 0;
}
if (isValid.every((e) => e === 1)) {
files.forEach((file) => {
File.fromPath(file.path)
.readText()
.then((data) => {
this.importData(JSON.parse(data), file.db);
});
});
}
});
});
} else this.failedImport(localize("buEmp"));
},
failedImport(description) {
this.progress = 0;
this.releaseBackEvent();
knownFolders.temp().clear();
this.$showModal(Confirm, {
props: {
title: "impFail",
description,
okButtonText: "OK",
},
});
},
hasValidJSON(data) {
try {
JSON.parse(data) && Array.isArray(JSON.parse(data));
} catch (e) {
return 0;
}
return 1;
},
extractData(recipesDB) {
const db = openOrCreate(recipesDB);
// Import recipes
db.select("SELECT * FROM recipes").then((res) => {
this.importRsDB(res);
});
// Import listitems
db.select(
`SELECT cuisines, categories, yieldUnits, units FROM lists`
).then((res) =>
Object.keys(res[0]).forEach((listName) =>
this.importLIs({
data: JSON.parse(res[0][listName]),
listName,
})
)
);
// Import mealPlans
db.select(`SELECT * FROM mealPlans`).then((res) => this.importMPsDB(res));
// Import timerPs
db.select(`SELECT * FROM timerPresets`).then((res) =>
this.importTPs(res)
);
},
importData(data, db) {
switch (db) {
case "recipes":
this.importRsJSON(data);
break;
case "userCuisines":
this.importLIs({
data,
listName: "cuisines",
});
break;
case "userCategories":
this.importLIs({
data,
listName: "categories",
});
break;
case "userYieldUnits":
this.importLIs({
data,
listName: "yieldUnits",
});
break;
case "userUnits":
this.importLIs({
data,
listName: "units",
});
break;
case "mealPlans":
this.importMPsJSON(data);
break;
}
},
importImages(uri) {
let destPath = knownFolders.documents().path;
Folder.fromPath(destPath);
utils.Zip.unzip(uri, destPath).then((res) => {
if (res) {
// delete unzipped data files
Folder.fromPath(path.join(destPath, "EnRecipes"))
.getEntities()
.then((entities) => {
entities.forEach((entity) => {
if (/.json|.db/.test(entity._extension))
File.fromPath(entity._path).remove();
});
});
this.showImportSummary();
this.unLinkBIs();
}
});
},
showImportSummary() {
this.progress = 0;
this.releaseBackEvent();
let { found, imported, updated } = this.impSum;
let exists = Math.abs(found - imported - updated) + updated;
let importedNote = `\n${localize("recI")} ${imported}`;
let existsNote = `\n${localize("recE")} ${exists}`;
let updatedNote = `\n${localize("recU")} ${updated}`;
this.$showModal(Confirm, {
props: {
title: "impSuc",
description: `${found} ${localize(
"recF"
)}\n${importedNote}${existsNote}${updatedNote}`,
okButtonText: "OK",
},
}).then(() => this.clearIS());
},
// NAVIGATION HANDLERS
hijackBackEvent() {
AndroidApplication.on(
AndroidApplication.activityBackPressedEvent,
this.backEvent
);
},
releaseBackEvent() {
AndroidApplication.off(
AndroidApplication.activityBackPressedEvent,
this.backEvent
);
},
backEvent(args) {
args.cancel = true;
},
// TOAST
showToast(data) {
this.animateBar(this.appbar, 0).then(() => {
this.toast = data;
this.animateBar(this.toastbar, 1, 1);
utils.timer(5, (val) => !val && this.hideBar());
});
},
hideBar() {
this.animateBar(this.toastbar, 0).then(() => {
this.toast = null;
this.animateBar(this.appbar, 1);
});
},
},
};
</script>

View file

@ -1,160 +0,0 @@
<template>
<Page @loaded="pageL" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<OptionsList title="intf" :items="items" />
<GridLayout row="1" class="appbar rtl" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script>
import { ApplicationSettings, Observable, Frame } from "@nativescript/core";
import Action from "../modals/Action";
import OptionsList from "../sub/OptionsList";
import { mapState, mapActions } from "vuex";
import * as utils from "~/shared/utils";
import { localize } from "@nativescript/localize";
export default {
components: { OptionsList },
data() {
return {
applang: 0,
};
},
computed: {
...mapState(["icon", "langs", "theme", "layout", "RTL", "mSystem"]),
items() {
return [
{},
{
type: "list",
icon: "lang",
rtl: 0,
title: "lang",
subTitle: localize(this.applang),
action: this.setAppLang,
},
{
type: "list",
icon: "theme",
rtl: 0,
title: "Theme",
subTitle: localize(ApplicationSettings.getString("theme", "sysDef")),
action: this.setTheme,
},
{
type: "list",
icon: "layout",
rtl: 1,
title: "listVM",
subTitle: localize(this.layout),
action: this.setLayoutMode,
},
// {
// type: "list",
// icon: "layout",
// rtl: 0,
// title: "mSystem",
// subTitle: localize(this.mSystem),
// action: this.setMSystem,
// },
{},
];
},
},
methods: {
...mapActions(["setT", "setL", "setRTL", "setMS"]),
pageL({ object }) {
object.bindingContext = new Observable();
},
// LanguageSelection
setAppLang() {
let languages = this.langs.map((e) => e.title);
this.$showModal(Action, {
props: {
title: "lang",
list: [...languages],
selected: this.applang,
},
}).then((action) => {
if (action && this.applang !== action) {
let currentLocale = ApplicationSettings.getString(
"appLocale",
"none"
).split("-");
let locale = this.langs.filter((e) => e.title === action)[0].locale;
if (currentLocale !== locale) {
this.applang = action;
ApplicationSettings.setString("applang", action);
ApplicationSettings.setString("appLocale", locale);
utils.updateLocale();
this.setRTL();
Frame.reloadPage();
}
}
});
},
// ThemeSelection
setTheme() {
this.$showModal(Action, {
props: {
title: "Theme",
list: ["Light", "Dark", "Black", "sysDef", "sysDefB"],
selected: ApplicationSettings.getString("theme", "sysDef"),
},
}).then((action) => {
if (
action &&
(ApplicationSettings.getString("theme") != this.theme
? 1
: this.theme != action)
) {
this.setT(action);
Frame.reloadPage();
}
});
},
// LayoutMode
setLayoutMode() {
this.$showModal(Action, {
props: {
title: "listVM",
list: ["detailed", "grid", "photogrid", "simple", "minimal"],
selected: this.layout,
},
}).then((mode) => {
if (mode && this.layout !== mode) this.setL(mode.toLowerCase());
});
},
// MeasuringSystem
setMSystem() {
this.$showModal(Action, {
props: {
title: "mSystem",
list: ["mtrc", "imprl"],
selected: this.mSystem,
},
}).then((sys) => {
if (sys && this.mSystem !== sys) this.setMS(sys);
});
},
},
created() {
this.applang = ApplicationSettings.getString("applang", "sysDef");
},
};
</script>

View file

@ -1,90 +0,0 @@
<template>
<Page @loaded="pgLoad" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<OptionsList title="Settings" :items="items" />
<GridLayout row="1" class="appbar rtl" rows="*" columns="auto, *">
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script>
import { Observable } from "@nativescript/core";
import { mapState, mapActions } from "vuex";
import Action from "../modals/Action";
import OptionsList from "../sub/OptionsList";
import { localize } from "@nativescript/localize";
export default {
components: { OptionsList },
computed: {
...mapState(["icon", "startMon", "RTL", "plannerV", "planDel"]),
items() {
return [
{},
{
type: "list",
icon: "calv",
title: "calVM",
subTitle: localize(this.plannerV),
action: this.selectPlannerView,
},
{
type: "switch",
icon: "week",
title: "swm",
checked: !!this.startMon,
action: this.toggleFirstDay,
},
{
type: "list",
icon: "mpd",
title: "admp",
subTitle: localize(this.planDel),
action: this.selectDeletionTime,
},
{},
];
},
},
methods: {
...mapActions(["setFD", "setPlannerV", "setPlanDel"]),
pgLoad({ object }) {
object.bindingContext = new Observable();
},
toggleFirstDay() {
this.setFD(!this.startMon | 0);
},
selectPlannerView() {
this.$showModal(Action, {
props: {
title: "calVM",
list: ["d", "wk", "mnth"],
selected: this.plannerV,
},
}).then((res) => {
if (res && this.plannerV != res) this.setPlannerV(res);
});
},
selectDeletionTime() {
this.$showModal(Action, {
props: {
title: "admp",
list: ["otaw", "otam", "otay", "nvr"],
selected: this.planDel,
},
}).then((res) => {
if (res && this.planDel != res) this.setPlanDel(res);
});
},
},
};
</script>

View file

@ -1,117 +0,0 @@
<template>
<Page @loaded="pgLoad" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<OptionsList title="opts" :items="items" />
<GridLayout
:hidden="toast"
@loaded="abLoad"
row="1"
class="appbar rtl"
rows="*"
columns="auto, *"
>
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Toast :onload="tbLoad" :toast="toast" :action="hideBar" />
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script>
import { Observable } from "@nativescript/core";
import { mapState, mapActions } from "vuex";
import { localize } from "@nativescript/localize";
import OptionsList from "../sub/OptionsList";
import Toast from "../sub/Toast";
import * as utils from "~/shared/utils";
export default {
components: { OptionsList, Toast },
data() {
return {
appbar: null,
toastbar: null,
toast: null,
};
},
computed: {
...mapState(["icon", "shake", "RTL", "edgeS", "awakeV"]),
items() {
return [
{},
{
type: "switch",
icon: "shuf",
title: "sVw",
subTitle: localize("sVwInfo"),
checked: !!this.shake,
action: this.toggleShake,
},
{
type: "switch",
icon: "awake",
title: "ksavr",
subTitle: localize("ksavrInfo"),
checked: !!this.awakeV,
action: this.toggleAwake,
},
{
type: "switch",
icon: "edge",
title: "esgb",
subTitle: localize("esgbInfo"),
checked: !!this.edgeS,
action: this.toggleSwipe,
},
{},
];
},
},
methods: {
...mapActions(["setS", "toggleEdgeS", "toggleAwakeV"]),
pgLoad({ object }) {
object.bindingContext = new Observable();
},
abLoad({ object }) {
this.appbar = object;
},
tbLoad({ object }) {
this.toastbar = object;
},
toggleShake() {
let checked = this.shake;
if (checked && !utils.hasAccelerometer())
this.showToast(localize("noAccSensor"));
else this.setS(+!checked);
},
toggleSwipe() {
this.toggleEdgeS(+!this.edgeS);
},
toggleAwake() {
this.toggleAwakeV(+!this.awakeV);
},
showToast(data) {
this.animateBar(this.appbar, 0).then(() => {
this.toast = data;
this.animateBar(this.toastbar, 1, 1);
utils.timer(5, (val) => !val && this.hideBar());
});
},
hideBar() {
this.animateBar(this.toastbar, 0).then(() => {
this.toast = null;
this.animateBar(this.appbar, 1);
});
},
},
};
</script>

View file

@ -1,115 +0,0 @@
<template>
<Page @loaded="pgLoad" actionBarHidden="true">
<RGridLayout :rtl="RTL" rows="*, auto" columns="auto, *">
<OptionsList title="rest" :items="items" :action="reset" />
<GridLayout
:hidden="toast"
row="1"
class="appbar rtl"
@loaded="abLoad"
columns="auto, *"
>
<Button class="ico" :text="icon.back" @tap="$navigateBack()" />
</GridLayout>
<Toast :onload="tbLoad" :toast="toast" :action="hideToast" />
<Label rowSpan="2" class="edge hal rtl" @swipe="swipeBack" />
<Label
rowSpan="2"
colSpan="2"
class="edge har rtl f"
@swipe="swipeBack"
/>
</RGridLayout>
</Page>
</template>
<script>
import { Observable } from "@nativescript/core";
import { localize } from "@nativescript/localize";
import { mapState, mapActions } from "vuex";
import * as utils from "~/shared/utils";
import OptionsList from "../sub/OptionsList";
import Toast from "../sub/Toast";
let barTimer;
export default {
components: { OptionsList, Toast },
data() {
return {
toast: 0,
appbar: 0,
toastbar: 0,
};
},
computed: {
...mapState(["icon", "RTL"]),
items() {
return [
{},
{
type: "list",
icon: "reset",
rtl: 1,
title: "restCuiL",
data: "cuisines",
},
{
type: "list",
icon: "reset",
rtl: 1,
title: "restCatL",
data: "categories",
},
{
type: "list",
icon: "reset",
rtl: 1,
title: "restYUL",
data: "yieldUnits",
},
{
type: "list",
icon: "reset",
rtl: 1,
title: "restUL",
data: "units",
},
{
type: "info",
title: "restInfo",
},
{},
];
},
},
methods: {
...mapActions(["resetLIs"]),
pgLoad({ object }) {
object.bindingContext = new Observable();
},
abLoad({ object }) {
this.appbar = object;
},
tbLoad({ object }) {
this.toastbar = object;
},
reset(list) {
this.resetLIs(list);
this.showToast();
},
showToast() {
this.animateBar(this.appbar, 0).then(() => {
this.toast = localize("restDone");
this.animateBar(this.toastbar, 1, 1);
});
utils.timer(5, (val) => !val && this.hideToast());
},
hideToast() {
this.animateBar(this.toastbar, 0).then(() => {
this.toast = null;
this.animateBar(this.appbar, 1);
});
},
},
};
</script>

View file

@ -1,87 +0,0 @@
<template>
<ListView colSpan="2" rowSpan="2" class="options" for="item in items">
<v-template if="$index == 0">
<Label class="pTitle tw tb" :text="title | L" />
</v-template>
<v-template if="item.type == 'switch'">
<RGridLayout
:rtl="RTL"
columns="auto, *, auto"
class="option"
@touch="touch($event, item.data, item.action)"
>
<Label class="ico vc rtl" :text="icon[item.icon]" />
<StackLayout col="1" class="info">
<RLabel :text="item.title | L" class="tw" />
<RLabel
v-if="item.subTitle"
:text="item.subTitle | L"
class="sub tw"
/>
</StackLayout>
<Switch
@loaded="swLoad"
isUserInteractionEnabled="false"
:color="item.checked ? '#ff5200' : '#adb5bd'"
col="2"
:checked="item.checked"
/>
</RGridLayout>
</v-template>
<v-template if="item.type == 'list'">
<RGridLayout
:rtl="RTL"
columns="auto, *"
class="option"
@touch="touch($event, item.data, item.action)"
>
<Label
class="ico vc"
:class="{ rtl: item.rtl }"
:text="icon[item.icon]"
/>
<StackLayout col="1" class="info">
<RLabel :text="item.title | L" class="tw" />
<RLabel
:hidden="!item.subTitle"
:text="item.subTitle"
class="sub tw"
/>
</StackLayout>
</RGridLayout>
</v-template>
<v-template if="item.type == 'info'">
<Label
class="groupInfo sub tw lh4"
:class="{ r: RTL }"
:text="item.title | L"
/>
</v-template>
<v-template>
<StackLayout class="ls"> </StackLayout>
</v-template>
</ListView>
</template>
<script>
import { mapState } from "vuex";
import * as utils from "~/shared/utils";
export default {
props: ["title", "items", "action"],
computed: {
...mapState(["icon", "RTL"]),
},
methods: {
swLoad({ object }) {
object.android.setRotation(
this.RTL && utils.sysRTL() ? 0 : this.RTL || utils.sysRTL() ? 180 : 0
);
},
touch({ object, action }, data, localAction) {
this.touchFade(object, action);
if (action == "up") localAction ? localAction(data) : this.action(data);
},
},
};
</script>

View file

@ -1,31 +0,0 @@
<template>
<RGridLayout
:rtl="RTL"
row="1"
class="appbar snackbar"
columns="auto, *, auto"
@swipe="action"
@loaded="onload"
>
<Button @tap="action" :text="count" class="ico t3 accent tb" />
<RLabel
@tap="action"
margin="0 2"
class="tw vc lh4"
col="1"
:text="msg | L"
/>
<Button class="ico fab rtl" :text="icon.undo" @tap="undo" col="3" />
</RGridLayout>
</template>
<script>
import { mapState } from "vuex";
export default {
props: ["count", "msg", "undo", "action", "onload"],
computed: {
...mapState(["icon", "RTL"]),
},
};
</script>

View file

@ -1,272 +0,0 @@
<template>
<RGridLayout
:rtl="RTL"
rows="auto, auto"
columns="auto, *, auto, auto, auto"
class="timer"
>
<Button
class="ico si rtl"
:text="done ? icon.ring : timer.isPaused ? icon.start : icon.pause"
@tap="!done && toggleProgress()"
/>
<StackLayout
col="1"
class="info"
:colSpan="timer.isPaused || !timer.preset ? 1 : 2"
>
<RLabel :text="timer.label" class="tb title tw a" />
<RLabel
:hidden="!timer.recipeID && done"
@touch="!done && touch($event)"
:text="getRecipeTitle"
class="a accent"
/>
<RLabel
:text="
progress == 0
? countUp
? getCount
: formattedTime(timer.time)
: getCount
"
/>
</StackLayout>
<Button
col="2"
class="ico rtl"
:hidden="(!timer.isPaused && timer.preset) || done || countUp"
:text="isReset || timer.preset ? icon.reset : icon.addTo"
@tap="isReset || timer.preset ? resetTimer() : addPreset()"
/>
<Button
col="3"
class="ico"
@tap="countUp ? addPreset() : addDelay()"
:text="countUp ? icon.addTo : icon.delay"
/>
<Button
col="4"
class="ico si"
:text="icon.x"
@tap="removeTimer(timer.id, done)"
/>
<Progress @loaded="pLoaded" row="1" colSpan="5" />
</RGridLayout>
</template>
<script>
import { ApplicationSettings, Device } from "@nativescript/core";
import { localize } from "@nativescript/localize";
import { mapState, mapActions } from "vuex";
import ActionWithSearch from "../modals/ActionWithSearch";
import EditRecipe from "../EditRecipe";
import * as utils from "~/shared/utils";
import { EvtBus } from "~/main";
export default {
props: [
"timer",
"formattedTime",
"removeTimer",
"togglePause",
"timerAlert",
"showToast",
],
data() {
return {
pBar: 0,
count: 0,
delay: 0,
progress: 0,
};
},
computed: {
...mapState(["icon", "recipes", "timerD", "timerPs", "RTL"]),
getRecipeTitle() {
let { recipeID } = this.timer;
if (recipeID) {
let recipe = this.recipes.filter((e) => e.id == this.timer.recipeID)[0];
if (recipe) return recipe.title;
else {
this.timer.recipeID = null;
return localize("fwr");
}
} else return localize("fwr");
},
done() {
return this.timer.done;
},
countUp() {
return this.timer.mode == 0;
},
isReset() {
return this.timer.isPaused && this.progress != 0;
},
getTotalTime() {
return this.delay + this.actualTime;
},
actualTime() {
let t = this.timer.time.split(":");
return +t[0] * 60 * 60 + +t[1] * 60 + +t[2];
},
getCount() {
let c = this.count;
let s = Math.abs(c);
return (
(c < 0 ? "-" : "") +
new Date(s * 1000)
.toISOString()
.slice(
s < 10
? 18
: s < 60
? 17
: s < 600
? 15
: s < 3600
? 14
: s < 36000
? 12
: s < 86400
? 11
: 0,
19
)
);
},
sdkv() {
return parseInt(Device.sdkVersion);
},
},
methods: {
...mapActions(["addTP", "sortATs"]),
pLoaded({ object }) {
this.pBar = object.android;
this.pBar.setRotation(
this.RTL && utils.sysRTL() ? 0 : this.RTL || utils.sysRTL() ? 180 : 0
);
this.initTimer();
},
attachRecipe() {
this.$showModal(ActionWithSearch, {
props: {
title: "selRec",
recipes: this.recipes,
action: "aNBtn",
},
}).then((res) => {
if (res == "aNBtn") {
this.$navigateTo(EditRecipe, {
animated: false,
});
} else if (res) {
let timer = this.timer;
timer.recipeID = res;
this.sortATs();
}
});
},
setNum(type, val) {
ApplicationSettings.setNumber(`${this.timer.id}${type}`, val);
},
setProgress() {
this.progress = 100 - (this.count / this.getTotalTime) * 100;
this.sdkv > 23
? this.pBar.setProgress(this.progress, true)
: this.pBar.setProgress(this.progress);
},
initTimer() {
this.resetInterval();
this.setProgress();
!this.timer.isPaused && this.pBar.setIndeterminate(this.countUp);
if (this.progress < 100 || !this.timer.timerInt) {
this.timer.timerInt = setInterval(() => {
if (!this.timer.isPaused) {
this.setNum("c", this.countUp ? this.count++ : --this.count);
this.setProgress();
} else this.resetInterval();
if (this.progress >= 100 && this.count >= 0) {
this.timer.done = 1;
this.timerAlert();
}
}, 1000);
}
},
resetInterval() {
clearInterval(this.timer.timerInt);
this.timer.timerInt = 0;
this.pBar.setIndeterminate(false);
},
resetTimer() {
this.count = this.actualTime;
this.progress = this.delay = this.timer.done = 0;
ApplicationSettings.remove(`${this.timer.id}d`);
this.setNum("c", this.count);
this.toggleProgress(1);
this.sdkv > 23
? this.pBar.setProgress(0, true)
: this.pBar.setProgress(0);
},
toggleProgress(n) {
this.togglePause(this.timer, n);
this.timer.isPaused ? this.resetInterval() : this.initTimer();
},
addPreset() {
let exist = this.timerPs.some((e) => e.id == this.timer.id);
this.timer.preset = 1;
if (this.countUp) {
this.timer.time = new Date(this.count * 1000)
.toISOString()
.substr(11, 8);
}
let timer = JSON.parse(JSON.stringify(this.timer));
let { recipeID, timerInt, isPaused, preset, done, mode, ...presetTimer } =
timer;
this.addTP(presetTimer);
exist ? this.showToast("prstTU") : this.showToast("aTPrst");
},
addDelay() {
this.timer.done = 0;
let td = this.timerD;
let delayDur =
this.localeN(td) + " " + localize(td > 1 ? "minutes" : "minute");
this.showToast(localize("wDBy", this.timer.label, delayDur));
let delay = td * 60;
if (this.done) this.delay = delay;
else this.delay += delay;
if (this.count >= 0) this.count += delay;
else this.count = this.delay;
this.setNum("d", this.delay);
this.setNum("c", this.count);
this.resetInterval();
this.initTimer();
this.timerAlert();
},
// HELPERS
touch({ object, action }) {
this.touchFade(object, action);
if (action == "up") this.attachRecipe();
},
},
created() {
this.delay = ApplicationSettings.getNumber(`${this.timer.id}d`, 0);
this.count = ApplicationSettings.getNumber(
`${this.timer.id}c`,
this.actualTime
);
let bID = "timer" + this.timer.id;
EvtBus.$off(bID);
EvtBus.$on(bID, (e) => {
switch (e) {
case "delay":
this.addDelay();
break;
case "dismiss":
this.removeTimer(this.timer.id, 1);
break;
}
});
},
};
</script>

View file

@ -1,22 +0,0 @@
<template>
<GridLayout
:hidden="!toast"
row="1"
colSpan="2"
class="appbar snackbar"
columns="*"
@swipe="action"
@tap="action"
@loaded="onload"
>
<StackLayout minHeight="48">
<RLabel padding="16 20" :text="toast" />
</StackLayout>
</GridLayout>
</template>
<script>
export default {
props: ["toast", "action", "onload"],
};
</script>

Binary file not shown.

BIN
app/fonts/enrecipes.ttf Normal file

Binary file not shown.

View file

@ -1,292 +0,0 @@
{
"aap": "ألحق صورة",
"About": "حول",
"aBtn": "أضف",
"aD": "انتهى!",
"addCmbBtn": "ADD COMBINATION",
"aFBu": "أضف وصفة لتقوم بالنسخ الاحتياطي",
"aIngBtn": "أضف مكون",
"allCats": "كل الأصناف",
"allCuis": "كل المطابخ",
"allTs": "كل العلامات",
"American": "أمريكية",
"aNBtn": "أضف جديدة",
"aNoBtn": "أضف ملاحظة",
"app.name": "EnRecipes",
"appCrd": "شورك عبر EnRecipes. احصل عليه على F-Droid, IzzyOnDroid, أو متجر بلاي.",
"Appetizers": "مقبلات",
"appInfo": "EnRecipes كتاب طبخ مفتوح المصدر صديق للخصوصية يتيح لك إنشاء وصفاتك و إدارتها ومشاركتها",
"apply": "طبق",
"appRst": "إعادة تشغيل التطبيق متطلبة",
"aStpBtn": "أضف خطوة",
"Barbecue": "شواء",
"Beverages": "مشروبات",
"Black": "أسود",
"Brazilian": "برازيلية",
"Breads": "أخباز",
"breakfast": "فطور",
"British": "بريطانية",
"buEmp": "مجلد النسخ الاحتيطية فارغ",
"buFol": "مجلد النسخ الاحتياطية",
"buInc": "ملف نسخة احتياطي مشوه أو فاسد",
"buInfo": "يولد ملف ZIP يحتوي على جميع بياناتك يمكن استيراده مجدداً",
"buMod": "لف النسخة الاحتياطة عدل في مكان آخر",
"cat": "الصنف",
"cBtn": "ألغ",
"Challenging": "صعبة",
"Chinese": "صينية",
"clove": "فص",
"cm": "سم",
"cmbs": "مجموعات",
"conBtn": "أكمل",
"conf": "أكد",
"cookT": "وقت الطبخ",
"cPic": "قص الصورة",
"Created": "أنشئت",
"cui": "المطبخ",
"cup": "كأس",
"Cup": "كأس",
"dAgo": "قبل %s أيام",
"Danish": "دنماركي",
"Dark": "داكن",
"db": "قاعدة البيانات",
"dBtn": "DELETE",
"delRecInfo": "أنت على وشك أن تحذف الوصفة %s أبدياً",
"delRecsInfo": "أنت على وشك أنت تحذف %s أبدياً",
"Desserts": "حلا",
"detailed": "مفصل",
"Difficulty level": "مستوى الصعوبة",
"dinner": "عشاء",
"disBtn": "استبعد",
"disc": "هذه الوصفة فيها تغييرات غير محفوظة. ما الذي تريد فعله؟",
"donate": "تبرع",
"dozen": "درزن",
"drop": "قطرة",
"dsp": "dstspn",
"Easy": "سهلة",
"editRec": "عدل الوصفة",
"Egyptian": "مصرية",
"English": "إنجليزية",
"EnRecipes": "EnRecipes",
"expBu": "صدر نسخة احتياطية كاملة",
"expip": "جار التصدير",
"expSuc": "نجح التصدير",
"favourites": "المفضلات",
"Filipino": "فلبينية",
"Filtered recipes": "الوصفات المصفاة",
"fl oz": "fl oz",
"fltr": "المصفاة",
"Fluid Ounce": "أونصة سائلة",
"French": "فرنسية",
"fsList": "وصفاتك المفضلة مسرودة هنا",
"g": "غ",
"gal": "جال",
"Gallon": "جالون",
"German": "ألمانية",
"gh": "اعرض على GitHub",
"Gram": "غرام",
"Greek": "إغريقية",
"grid": "شبكة",
"grocery": "قائمة التسوق",
"guide": "دليل المستخدم",
"Healthy": "صحية",
"hr": "hr",
"impBu": "استورد البيانات",
"impFail": "فشل الاستيراد",
"impInfo": "يدعم النسخ الاحتياطية الكاملة المصدرة من هذا التطبيق",
"impip": "جار الاستيراد",
"impSuc": "نجح الاستيراد",
"in": "إن",
"Indian": "هندية",
"ings": "المكونات",
"inss": "التعليمات",
"intf": "الواجهة",
"invFile": "ملف غير صحيح",
"Irish": "إيرلندية",
"it": "Item",
"Italian": "إيطالية",
"Jamaican": "جمايكية",
"Japanese": "يابانية",
"Jewish": "يهودية",
"joinTG": "انضم لمجموعة التلغرام",
"kEdit": "KEEP EDITING",
"Kenyan": "كينية",
"kg": "كغ",
"Kilogram": "كيلوغرام",
"Korean": "كورية",
"l": "ل",
"lang": "اللغة",
"large": "كبير",
"Last updated": "آخر تحديث",
"lb": "lb",
"leaf": "ورقة",
"Light": "فاتح",
"listVM": "وضع عرض القائمة",
"Litre": "لتر",
"Loaf": "رغيف",
"ltAgo": "منذ وقت طويل",
"lunch": "غداء",
"mAgo": "منذ %s أشهر",
"Main dishes": "الأطباق الرئيسة",
"Meat": "لحم",
"medium": "medium",
"Mexican": "مكسيكية",
"mg": "مغ",
"Millilitre": "مللتر",
"min": "min",
"sec": "ثان",
"minimal": "الأقل",
"ml": "مل",
"Moderate": "متوسطة",
"newCui": "مطبخ جديد",
"Newest first": "الأجد أولاً",
"newRec": "وصفة جديدة",
"newUnit": "وحدة جديدة",
"Nigerian": "نيجيرية",
"nLangInfo": "أعد تشغيل EnRecipes لاستخدام اللغة الجديدة",
"nNBtn": "ليس الآن",
"no": "ملاحظة",
"noAccSensor": "مقياس التسارع إما معطل أو لا يعمل",
"noFavs": "لا مفضلات حتى الآن",
"Noodles": "نودلز",
"noRecs": "لا وصفات مطابقة لبحثك",
"noRecsInL": "لا توجد وصفات هنا تطابق بحثك",
"nos": "ملاحظات",
"nwCat": "صنف جديد",
"nwYiU": "وحدة إنتاج جديدة",
"OK": "OK",
"Oldest first": "الأقدم أولاً",
"opts": "الاعدادات",
"Ounce": "أونصة",
"oz": "oz",
"Pasta": "باستا",
"Patty": "فطيرة",
"photogrid": "شبكة صور",
"pht": "صورة الوصفة",
"piece": "قطعة",
"Piece": "قطعة",
"pinch": "رشة",
"planner": "مخططة الوجبات",
"plsAdd": "استعمل زر الزائد لإضافة واحدة",
"Portuguese": "برتغالية",
"Poultry": "دواجن",
"Pound": "رطل",
"prepT": "وقت التحضير",
"priv": "سياسة الخصوصية",
"pt": "pt",
"qt": "qt",
"Quickest first": "الاسرع أولاً",
"Rating": "التقييم",
"rBtn": "REMOVE",
"rec": "الوصفة",
"recE": "موجود أصلاً:",
"recF": "وصفات عثرت",
"recI": "المستورد:",
"recListEmp": "لا شيء هنا! أضف بعض الوصفات ثم حاول مجدداً",
"recPic": "صورة الوصفة",
"recRm": "أزيلت الوصفة",
"recs": "الوصفات",
"recTitle": "وصفتي الصحية",
"recU": "حدثت:",
"req": "%s مطلوب(ة)",
"resNF": "لم يعثر على الوصفة",
"rest": "إعادة تعيين",
"restCatL": "أعد تعيين قائمة الأصناف",
"restCuiL": "أعد تعيين قائمة المطابخ",
"restDone": "انتهت إعادة التعيين",
"restInfo": "ستؤدي إعادة تعيين قائمة ما إلى حذف الإدخالات التي أنشأها المستخدم واستعادة الإدخالات الافتراضية. الوصفات الحالية لن تتأثر.",
"restUL": "Reset unit list",
"restYUL": "أعد تعيين قائمة وحدات الإنتاج",
"Rice": "أرز",
"rmCatInfo": "أنت على وشك أن تزيل %s من قائمة الأصناف",
"rmCmb": "أزيلت المجموعة",
"rmCuiInfo": "أنت على وشك أن تزيل %s من قائمة المطابخ",
"rmIng": "أزيل المكون",
"rmIns": "أزيلت التعليمة",
"rmN": "أزيلت الملاحظة",
"rmUInfo": "أنت على وشك أن تزيل %s من قائمة الوحدات",
"rmYUInfo": "أنت على وشك أن تزيل %s من قائمة وحدات الإنتاج",
"Roll": "لفة",
"rp": "أزل الصورة",
"rst": "أعد التشغيل",
"Russian": "روسية",
"Salads": "سلطات",
"Sauces": "صلصات",
"Scottish": "سكتلندية",
"Seafood": "بحرية",
"selRec": "اختر وصفة",
"ser": "ابحث",
"Serving": "حصة",
"SET": "SET",
"Settings": "الإعدادات",
"shr": "شارك",
"Side dishes": "الأطباق الجانبية",
"simple": "بسيط",
"Slowest first": "الأبطأ أولاً",
"sltd": "المختارة",
"small": "صغير",
"snacks": "وجبات خفيفة",
"Soups": "شوربات",
"Spanish": "اسبانية",
"Sri Lankan": "سري لانكية",
"srpu": "شارك صورة الوصفة باستعمال...",
"srt": "افرز",
"sru": "شارك وصفة باستعمال...",
"stars": "التقييم النجمي",
"stick": "اصبع",
"stp": "خطوة",
"strAdd": "ابدأ إضافة وصفاتك!",
"sVw": "هز لرؤية وصفة عشوائية",
"sVwInfo": "لمساعدتك على اختيار ما تطبخ عندما لا تستطيع الاختيار",
"Swedish": "سويدية",
"swm": "ابدأ الاسبوع يوم الاثنين",
"sysDef": "System default",
"Tablespoon": "ملعقة",
"tbsp": "ملعقة كبيرة",
"Teaspoon": "ملعقة شاي",
"Thai": "تايلندية",
"Theme": "السمة",
"title": "العنوان",
"tLInfo": "الوصفات التي تريد تجربتها مسرودة هنا",
"today": "اليوم",
"triedInfo": "جربت هذه الوصفة %s",
"trnsl": "ترجم",
"trylater": "حاول لاحقاً",
"trySer": "ابحث في كل الوصفات؟",
"ts": "العلامات",
"tsInfo": "افصل بمساقات",
"tsp": "ملعقة كبيرة",
"Turkish": "تركية",
"Undefined": "غير معرف",
"unit": "وحدة",
"Unit": "وحدة",
"unsaved": "تغيرات غبر محفوظة",
"untRec": "وصفة بلا عنوان",
"Vegan": "نباتي صرف",
"Vegetarian": "نباتي",
"Vietnamese": "فيتنامية",
"wAgo": "قبل %s أسابيع",
"yesterday": "أمس",
"yieldQ": "كمية الإنتاج",
"yieldU": "وحدة الانتاج",
"yld": "الانتاج",
"buto": "نسخ احتياطياً إلى %s",
"sysDefB": "System default + Black",
"timer": "مؤقت الطبخ",
"ntmr": "مؤقت جديد",
"strtBtn": "ابدأ",
"stop": "قف",
"delay": "التأخير",
"tmr": "مؤقت %s",
"prstBtn": "PRESETS",
"fwr": "لأي وصفة؟",
"aTPrst": "أضيف إلى الإعدادات المسبقة",
"tmrSnd": "صوت المؤقت",
"tmrvbrt": "اهتزاز المؤقت",
"dlyDur": "مدة التأخير",
"minute": "دقيقة",
"minutes": "دقائق",
"hour": "ساعة",
"hours": "ساعات",
"seconds": "ثوان"
}

View file

@ -7,6 +7,8 @@
"Appetizers": "Aperitius", "Appetizers": "Aperitius",
"appInfo": "LEnRecipes és un receptari digital, de codi obert i privat, que us permet crear, gestionar i compartir les vostres receptes", "appInfo": "LEnRecipes és un receptari digital, de codi obert i privat, que us permet crear, gestionar i compartir les vostres receptes",
"appRst": "Cal reiniciar laplicació", "appRst": "Cal reiniciar laplicació",
"April": "abril",
"August": "agost",
"Barbecue": "Barbacoes", "Barbecue": "Barbacoes",
"Beverages": "Begudes", "Beverages": "Begudes",
"Breads": "Pans", "Breads": "Pans",
@ -15,26 +17,37 @@
"cPic": "Escapça la foto", "cPic": "Escapça la foto",
"Cup": "Tassa", "Cup": "Tassa",
"dBtn": "SUPRIMEIX", "dBtn": "SUPRIMEIX",
"December": "desembre",
"Desserts": "Postres", "Desserts": "Postres",
"disBtn": "DESCARTALS", "disBtn": "DESCARTALS",
"disc": "Aquesta recepta té canvis no desats. Què voleu fer?", "disc": "Aquesta recepta té canvis no desats. Què voleu fer?",
"EnRecipes": "EnRecipes", "EnRecipes": "EnRecipes",
"favourites": "Preferits", "favourites": "Preferits",
"February": "febrer",
"Fluid Ounce": "Unça líquida", "Fluid Ounce": "Unça líquida",
"FRI": "DV.",
"Gallon": "Galó", "Gallon": "Galó",
"Gram": "Gram", "Gram": "Gram",
"grid": "Graella", "grid": "Graella",
"grocery": "Llista de queviures", "grocery": "Llista de queviures",
"impFail": "Ha fallat la importació", "impFail": "Ha fallat la importació",
"invFile": "El fitxer no és vàlid", "invFile": "El fitxer no és vàlid",
"January": "gener",
"July": "juliol",
"June": "juny",
"Kilogram": "Quilogram", "Kilogram": "Quilogram",
"Litre": "Litre", "Litre": "Litre",
"March": "març",
"May": "maig",
"Meat": "Carn", "Meat": "Carn",
"Mexican": "Mexicana", "Mexican": "Mexicana",
"Millilitre": "Mil·lilitre", "Millilitre": "Mil·lilitre",
"MON": "DL.",
"nNBtn": "ARA NO", "nNBtn": "ARA NO",
"Noodles": "Fideus", "Noodles": "Fideus",
"November": "novembre",
"nwCat": "Categoria nova", "nwCat": "Categoria nova",
"October": "octubre",
"OK": "Dacord", "OK": "Dacord",
"Ounce": "Unça", "Ounce": "Unça",
"Pasta": "Pasta", "Pasta": "Pasta",
@ -46,8 +59,10 @@
"Rice": "Arròs", "Rice": "Arròs",
"rst": "REINICIA", "rst": "REINICIA",
"Salads": "Amanides", "Salads": "Amanides",
"SAT": "DS.",
"Sauces": "Salses", "Sauces": "Salses",
"Seafood": "Peix i marisc", "Seafood": "Peix i marisc",
"September": "setembre",
"ser": "Cerca", "ser": "Cerca",
"Serving": "Ració", "Serving": "Ració",
"SET": "DEFINEIX", "SET": "DEFINEIX",
@ -57,30 +72,19 @@
"snacks": "piscolabis", "snacks": "piscolabis",
"Soups": "Brous", "Soups": "Brous",
"Spanish": "Espanyola", "Spanish": "Espanyola",
"SUN": "DG.",
"Tablespoon": "Cullerada", "Tablespoon": "Cullerada",
"Teaspoon": "Culleradeta", "Teaspoon": "Culleradeta",
"THU": "DJ.",
"trnsl": "Tradueix", "trnsl": "Tradueix",
"trylater": "Per a provar més tard", "trylater": "Per a provar més tard",
"ts": "Etiquetes", "ts": "Etiquetes",
"TUE": "DT.",
"Undefined": "Sense definir", "Undefined": "Sense definir",
"unsaved": "Canvis no desats", "unsaved": "Canvis no desats",
"untRec": "Recepta sense títol", "untRec": "Recepta sense títol",
"Vegan": "Veganes", "Vegan": "Veganes",
"Vegetarian": "Vegetarianes", "Vegetarian": "Vegetarianes",
"sec": "s", "WED": "DC.",
"dinner": "Sopar", "sec": "s"
"Brazilian": "Brasilera",
"Black": "Negre",
"aStpBtn": "AFEGEIX UN PAS",
"apply": "APLICA",
"aNoBtn": "AFEGEIX UNA NOTA",
"American": "Americà",
"allCuis": "Totes les cuines",
"aIngBtn": "AFEGEIX UN INGREDIENT",
"aFBu": "Afegeix una recepta per fer una còpia de seguretat",
"addCmbBtn": "AFEGEIX-HI UNA COMBINACIÓ",
"aD": "Llest!",
"aBtn": "AFEGEIX",
"aap": "Adjunta-hi una fotografia",
"piece": "peça"
} }

View file

@ -143,6 +143,13 @@
"yesterday": "i går", "yesterday": "i går",
"disBtn": "AFFALD", "disBtn": "AFFALD",
"fltr": "Filtrer", "fltr": "Filtrer",
"FRI": "FRE",
"MON": "MAN",
"SAT": "LøR",
"SUN": "SøN",
"THU": "TOR",
"TUE": "TIR",
"WED": "ONS",
"no": "Bemærk", "no": "Bemærk",
"nNBtn": "IKKE NU", "nNBtn": "IKKE NU",
"nLangInfo": "Genstart EnRecipes for at bruge det nye sprog", "nLangInfo": "Genstart EnRecipes for at bruge det nye sprog",
@ -150,6 +157,8 @@
"newRec": "Ny opskrift", "newRec": "Ny opskrift",
"newCui": "Nyt køkken", "newCui": "Nyt køkken",
"minimal": "Minimalt", "minimal": "Minimalt",
"May": "maj",
"March": "Marts",
"mAgo": "%s måneder siden", "mAgo": "%s måneder siden",
"noAccSensor": "Accelerometersensoren er enten deaktiveret eller fungerer ikke", "noAccSensor": "Accelerometersensoren er enten deaktiveret eller fungerer ikke",
"noRecsInL": "Ingen af opskrifterne her matcher din søgning", "noRecsInL": "Ingen af opskrifterne her matcher din søgning",
@ -161,7 +170,10 @@
"ltAgo": "for lang tid siden", "ltAgo": "for lang tid siden",
"listVM": "Visning af liste", "listVM": "Visning af liste",
"kEdit": "FORTSÆT REDIGERING", "kEdit": "FORTSÆT REDIGERING",
"June": "Juni",
"July": "Juli",
"joinTG": "Tilmeld dig Telegram-gruppen", "joinTG": "Tilmeld dig Telegram-gruppen",
"January": "Januar",
"it": "Varen", "it": "Varen",
"invFile": "Ugyldig fil", "invFile": "Ugyldig fil",
"inss": "Vejledning", "inss": "Vejledning",
@ -174,6 +186,7 @@
"grid": "Gitter", "grid": "Gitter",
"gh": "Se på GitHub", "gh": "Se på GitHub",
"Filtered recipes": "Filtrerede opskrifter", "Filtered recipes": "Filtrerede opskrifter",
"February": "Februar",
"expip": "Eksport i gang", "expip": "Eksport i gang",
"editRec": "Rediger opskrift", "editRec": "Rediger opskrift",
"donate": "Donér", "donate": "Donér",
@ -194,9 +207,11 @@
"simple": "Enkel", "simple": "Enkel",
"shr": "Del", "shr": "Del",
"ser": "Søg", "ser": "Søg",
"September": "September",
"detailed": "Detaljeret", "detailed": "Detaljeret",
"delRecsInfo": "Du er ved at slette %s permanent", "delRecsInfo": "Du er ved at slette %s permanent",
"delRecInfo": "Du er ved at slette opskriften %s permanent", "delRecInfo": "Du er ved at slette opskriften %s permanent",
"December": "December",
"dBtn": "SLETNING", "dBtn": "SLETNING",
"dAgo": "%s dage siden", "dAgo": "%s dage siden",
"cui": "Køkken", "cui": "Køkken",
@ -213,7 +228,9 @@
"buFol": "Backup-mappe", "buFol": "Backup-mappe",
"buEmp": "Backup-filen er tom", "buEmp": "Backup-filen er tom",
"Black": "Sort", "Black": "Sort",
"August": "August",
"aStpBtn": "TILFØJ TRIN", "aStpBtn": "TILFØJ TRIN",
"April": "April",
"appRst": "App genstart nødvendig", "appRst": "App genstart nødvendig",
"apply": "ANSØG", "apply": "ANSØG",
"appInfo": "EnRecipes er en open source, privatlivsvenlig digital kogebog, som giver dig mulighed for at oprette, administrere og dele dine opskrifter", "appInfo": "EnRecipes er en open source, privatlivsvenlig digital kogebog, som giver dig mulighed for at oprette, administrere og dele dine opskrifter",
@ -268,29 +285,10 @@
"pht": "Foto af opskriften", "pht": "Foto af opskriften",
"photogrid": "Foto gitter", "photogrid": "Foto gitter",
"opts": "Indstillinger", "opts": "Indstillinger",
"October": "Oktober",
"nwYiU": "Ny udbytteenhed", "nwYiU": "Ny udbytteenhed",
"nwCat": "Ny kategori", "nwCat": "Ny kategori",
"November": "November",
"sysDefB": "Systemstandard + sort", "sysDefB": "Systemstandard + sort",
"sec": "s", "sec": "s"
"delay": "Udset",
"stop": "Stopper",
"strtBtn": "STARTER",
"ntmr": "Ny timer",
"timer": "Kogetid Timer",
"hour": "timer",
"hours": "timers",
"aTPrst": "Tilføjet til forudindstillinger",
"fwr": "til hvilken opskrift?",
"prstBtn": "FORUDSÆTTER",
"tmrSnd": "Timeren lyd",
"tmr": "Timeren %s",
"tmrvbrt": "Timer vibrerer",
"dlyDur": "Forsinkelsens varighed",
"minute": "minut",
"minutes": "minutter",
"seconds": "sekunder",
"notifSetg": "Indstillinger for meddelelser",
"tmrRm": "Timer fjernet",
"delPrst": "Du er ved at slette %s fra de forudindstillinger",
"prsts": "Forindstillinger"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes ist ein quelloffenes, datenschutzfreundliches, digitales Kochbuch, mit dem du deine Rezepte erstellen, verwalten und teilen kannst", "appInfo": "EnRecipes ist ein quelloffenes, datenschutzfreundliches, digitales Kochbuch, mit dem du deine Rezepte erstellen, verwalten und teilen kannst",
"apply": "ANWENDEN", "apply": "ANWENDEN",
"appRst": "Neustart der Anwendung erforderlich", "appRst": "Neustart der Anwendung erforderlich",
"April": "April",
"aStpBtn": "SCHRITT HINZUFÜGEN", "aStpBtn": "SCHRITT HINZUFÜGEN",
"August": "August",
"Barbecue": "Grill", "Barbecue": "Grill",
"Beverages": "Getränke", "Beverages": "Getränke",
"Black": "Schwarz", "Black": "Schwarz",
@ -51,6 +53,7 @@
"Dark": "Dunkel", "Dark": "Dunkel",
"db": "Datenbank", "db": "Datenbank",
"dBtn": "LÖSCHEN", "dBtn": "LÖSCHEN",
"December": "Dezember",
"delRecInfo": "Du bist dabei, das Rezept %s dauerhaft zu löschen", "delRecInfo": "Du bist dabei, das Rezept %s dauerhaft zu löschen",
"delRecsInfo": "Du bist dabei, %s dauerhaft zu löschen", "delRecsInfo": "Du bist dabei, %s dauerhaft zu löschen",
"Desserts": "Nachspeisen", "Desserts": "Nachspeisen",
@ -72,12 +75,14 @@
"expip": "Export wird durchgeführt", "expip": "Export wird durchgeführt",
"expSuc": "Export erfolgreich", "expSuc": "Export erfolgreich",
"favourites": "Favoriten", "favourites": "Favoriten",
"February": "Februar",
"Filipino": "Philipinisch", "Filipino": "Philipinisch",
"Filtered recipes": "Gefilterte Rezepte", "Filtered recipes": "Gefilterte Rezepte",
"fl oz": "fl", "fl oz": "fl",
"fltr": "Filter", "fltr": "Filter",
"Fluid Ounce": "Flüssige Unze", "Fluid Ounce": "Flüssige Unze",
"French": "Französisch", "French": "Französisch",
"FRI": "Fr.",
"fsList": "Deine Lieblingsrezepte findest du hier", "fsList": "Deine Lieblingsrezepte findest du hier",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -103,12 +108,15 @@
"intf": "Benutzeroberfläche", "intf": "Benutzeroberfläche",
"invFile": "Ungültige Datei", "invFile": "Ungültige Datei",
"Irish": "Irisch", "Irish": "Irisch",
"it": "Element %s", "it": "Element",
"Italian": "Italienisch", "Italian": "Italienisch",
"Jamaican": "Jamaikanisch", "Jamaican": "Jamaikanisch",
"January": "Januar",
"Japanese": "Japanisch", "Japanese": "Japanisch",
"Jewish": "Jüdisch", "Jewish": "Jüdisch",
"joinTG": "Tritt der Telegram-Gruppe bei", "joinTG": "Tritt der Telegram-Gruppe bei",
"July": "Juli",
"June": "Juni",
"kEdit": "WEITER BEARBEITEN", "kEdit": "WEITER BEARBEITEN",
"Kenyan": "Kenianisch", "Kenyan": "Kenianisch",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Mittagessen", "lunch": "Mittagessen",
"mAgo": "%s Monate zuvor", "mAgo": "%s Monate zuvor",
"Main dishes": "Hauptspeisen", "Main dishes": "Hauptspeisen",
"March": "März",
"May": "Mai",
"Meat": "Fleisch", "Meat": "Fleisch",
"medium": "medium", "medium": "medium",
"Mexican": "Mexikanisch", "Mexican": "Mexikanisch",
@ -137,6 +147,7 @@
"minimal": "Minimal", "minimal": "Minimal",
"ml": "ml", "ml": "ml",
"Moderate": "Moderat", "Moderate": "Moderat",
"MON": "Mo.",
"newCui": "Neue Küche", "newCui": "Neue Küche",
"Newest first": "Neueste zuerst", "Newest first": "Neueste zuerst",
"newRec": "Neues Rezept", "newRec": "Neues Rezept",
@ -151,8 +162,10 @@
"noRecs": "Keine Rezepte passen zu deiner Suche", "noRecs": "Keine Rezepte passen zu deiner Suche",
"noRecsInL": "Keines der hier aufgeführten Rezepte entspricht deiner Suche", "noRecsInL": "Keines der hier aufgeführten Rezepte entspricht deiner Suche",
"nos": "Notizen", "nos": "Notizen",
"November": "November",
"nwCat": "Neue Kategorie", "nwCat": "Neue Kategorie",
"nwYiU": "Neue Ertragseinheit", "nwYiU": "Neue Ertragseinheit",
"October": "Oktober",
"OK": "OK", "OK": "OK",
"Oldest first": "Älteste zuerst", "Oldest first": "Älteste zuerst",
"opts": "Optionen", "opts": "Optionen",
@ -166,7 +179,7 @@
"Piece": "Stück", "Piece": "Stück",
"pinch": "Prise", "pinch": "Prise",
"planner": "Essensplaner", "planner": "Essensplaner",
"plsAdd": "Verwende das +-Schaltfläche, um eins hinzuzufügen", "plsAdd": "Verwende das Plus-Symbol, um eins hinzuzufügen",
"Portuguese": "Portugiesisch", "Portuguese": "Portugiesisch",
"Poultry": "Geflügel", "Poultry": "Geflügel",
"Pound": "Pfund", "Pound": "Pfund",
@ -210,10 +223,12 @@
"rst": "NEU STARTEN", "rst": "NEU STARTEN",
"Russian": "Russisch", "Russian": "Russisch",
"Salads": "Salate", "Salads": "Salate",
"SAT": "Sa.",
"Sauces": "Soßen", "Sauces": "Soßen",
"Scottish": "Schottisch", "Scottish": "Schottisch",
"Seafood": "Meeresfrüchte", "Seafood": "Meeresfrüchte",
"selRec": "Rezept auswählen", "selRec": "Rezept auswählen",
"September": "September",
"ser": "Suchen", "ser": "Suchen",
"Serving": "Portion", "Serving": "Portion",
"SET": "EINSTELLEN", "SET": "EINSTELLEN",
@ -233,8 +248,9 @@
"sru": "Rezept teilen mit …", "sru": "Rezept teilen mit …",
"stars": "Bewertung in Sternen", "stars": "Bewertung in Sternen",
"stick": "Stange", "stick": "Stange",
"stp": "Schritt %s", "stp": "Schritt",
"strAdd": "Beginne deine Rezepte hinzuzufügen!", "strAdd": "Beginne deine Rezepte hinzuzufügen!",
"SUN": "So.",
"sVw": "Schütteln, um ein zufälliges Rezept anzuzeigen", "sVw": "Schütteln, um ein zufälliges Rezept anzuzeigen",
"sVwInfo": "Hilft dir, wenn du dich nicht entscheiden kannst, was gekocht werden soll", "sVwInfo": "Hilft dir, wenn du dich nicht entscheiden kannst, was gekocht werden soll",
"Swedish": "Swedisch", "Swedish": "Swedisch",
@ -245,6 +261,7 @@
"Teaspoon": "TL", "Teaspoon": "TL",
"Thai": "Thailändisch", "Thai": "Thailändisch",
"Theme": "Thema", "Theme": "Thema",
"THU": "Do.",
"title": "Titel", "title": "Titel",
"tLInfo": "Rezepte, die du später ausprobieren willst, sind hier aufgelistet", "tLInfo": "Rezepte, die du später ausprobieren willst, sind hier aufgelistet",
"today": "heute", "today": "heute",
@ -255,6 +272,7 @@
"ts": "Markierungen", "ts": "Markierungen",
"tsInfo": "mit Leerzeichen trennen", "tsInfo": "mit Leerzeichen trennen",
"tsp": "TL", "tsp": "TL",
"TUE": "Di.",
"Turkish": "Türkisch", "Turkish": "Türkisch",
"Undefined": "Unsortiert", "Undefined": "Unsortiert",
"unit": "Einheit", "unit": "Einheit",
@ -265,19 +283,21 @@
"Vegetarian": "Vegetarisch", "Vegetarian": "Vegetarisch",
"Vietnamese": "Vietnamesisch", "Vietnamese": "Vietnamesisch",
"wAgo": "%s Wochen zuvor", "wAgo": "%s Wochen zuvor",
"WED": "Mi.",
"yesterday": "gestern", "yesterday": "gestern",
"yieldQ": "Ertragsmenge", "yieldQ": "Ertragsmenge",
"yieldU": "Ertragseinheit", "yieldU": "Ertragseinheit",
"yld": "Ergebnis", "yld": "Ergebnis",
"buto": "Gesichert in %s", "buto": "Gesichert in %s",
"sysDefB": "Systemstandard + schwarz", "sysDefB": "Systemstandard + schwarz",
"tmr": "Kurzzeitwecker %s", "tmr": "Kochwecker %s",
"strtBtn": "START", "strtBtn": "START",
"ntmr": "Neuer Kurzzeitwecker", "ntmr": "Neuer Kochwecker",
"timer": "Kurzzeitwecker", "timer": "Kochwecker",
"sec": "s", "sec": "sec",
"tmrvbrt": "Kurzzeitweckervibration", "tmrvbrt": "Kochwecker vibrieren",
"tmrSnd": "Kurzzeitweckerton", "tmrSnd": "Kochwecker-Ton",
"tmrPrsts": "Voreinstellungen des Kochweckers",
"aTPrst": "Zu Voreinstellungen hinzugefügt", "aTPrst": "Zu Voreinstellungen hinzugefügt",
"fwr": "für welches Rezept?", "fwr": "für welches Rezept?",
"prstBtn": "Voreinstellungen", "prstBtn": "Voreinstellungen",
@ -288,44 +308,5 @@
"minutes": "Minuten", "minutes": "Minuten",
"minute": "Minute", "minute": "Minute",
"dlyDur": "Verzögerungsdauer", "dlyDur": "Verzögerungsdauer",
"delay": "Verzögern", "delay": "Verzögerung"
"tmrRm": "Kurzzeitwecker entfernt",
"notifSetg": "Benachrichtigungseinstellungen",
"delPrst": "Du bist dabei, %s aus den Voreinstellungen zu löschen",
"prsts": "Voreinstellungen",
"ttv": "Zum Anzeigen tippen",
"dismissAll": "Alle Kurzzeitwecker verwerfen",
"dismiss": "Verwerfen",
"texp": "%s Kurzzeitwecker abgelaufen",
"wDBy": "%1$s wurde um %2$s verzögert",
"prstTU": "Voreingestellte Zeit aktualisiert",
"ccwt": "Koche selbstbewusst mit Kurzzeitweckern!",
"gtD": "Zu Datum gehen",
"random": "Zufällig",
"oAP": "%1$s laufend, %2$s angehalten",
"ystr": "Gestern",
"tmrw": "Morgen",
"tdy": "Heute",
"cpy": "Kopie",
"calVM": "Modus der Kalenderansicht",
"d": "Tag",
"wk": "Woche",
"mnth": "Monat",
"nvr": "Nie",
"otaw": "Älter als eine Woche",
"otam": "Älter als ein Monat",
"otay": "Älter als ein Jahr",
"admp": "Mahlzeitenpläne automatisch löschen",
"plsCrt": "Verwende die Plus-Schaltfläche, um einen zu erstellen",
"ehwmp": "Iss gesund mit Essensplänen!",
"selMT": "Mahlzeitentyp auswählen",
"rstBtn": "ZURÜCKSETZEN",
"add": "Hinzufügen",
"ksavr": "Bildschirm während der Rezeptanzeige eingeschaltet halten",
"esgbInfo": "Deaktiviere diese Option, wenn du Probleme mit der Navigation hast",
"esgb": "Randwischen zum Zurückgehen",
"ksavrInfo": "Verhindert, dass sich der Bildschirm während der Anzeige eines Rezepts ausschaltet",
"sectRm": "Abschnitt entfernt",
"addSectBtn": "ABSCHNITT HINZUFÜGEN",
"sect": "Abschnitt %s"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes", "appInfo": "EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes",
"apply": "APPLY", "apply": "APPLY",
"appRst": "App restart required", "appRst": "App restart required",
"April": "April",
"aStpBtn": "ADD STEP", "aStpBtn": "ADD STEP",
"August": "August",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Beverages", "Beverages": "Beverages",
"Black": "Black", "Black": "Black",
@ -51,6 +53,7 @@
"Dark": "Dark", "Dark": "Dark",
"db": "Database", "db": "Database",
"dBtn": "DELETE", "dBtn": "DELETE",
"December": "December",
"delRecInfo": "You are about to permanently delete the recipe %s", "delRecInfo": "You are about to permanently delete the recipe %s",
"delRecsInfo": "You are about to permanently delete %s", "delRecsInfo": "You are about to permanently delete %s",
"Desserts": "Desserts", "Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Export in progress", "expip": "Export in progress",
"expSuc": "Export success", "expSuc": "Export success",
"favourites": "Favourites", "favourites": "Favourites",
"February": "February",
"Filipino": "Filipino", "Filipino": "Filipino",
"Filtered recipes": "Filtered recipes", "Filtered recipes": "Filtered recipes",
"fl oz": "fl oz", "fl oz": "fl oz",
"fltr": "Filter", "fltr": "Filter",
"Fluid Ounce": "Fluid Ounce", "Fluid Ounce": "Fluid Ounce",
"French": "French", "French": "French",
"FRI": "FRI",
"fsList": "Your favourite recipes are listed here", "fsList": "Your favourite recipes are listed here",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -103,12 +108,15 @@
"intf": "Interface", "intf": "Interface",
"invFile": "Invalid file", "invFile": "Invalid file",
"Irish": "Irish", "Irish": "Irish",
"it": "Item %s", "it": "Item",
"Italian": "Italian", "Italian": "Italian",
"Jamaican": "Jamaican", "Jamaican": "Jamaican",
"January": "January",
"Japanese": "Japanese", "Japanese": "Japanese",
"Jewish": "Jewish", "Jewish": "Jewish",
"joinTG": "Join the Telegram group", "joinTG": "Join the Telegram group",
"July": "July",
"June": "June",
"kEdit": "KEEP EDITING", "kEdit": "KEEP EDITING",
"Kenyan": "Kenyan", "Kenyan": "Kenyan",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch", "lunch": "Lunch",
"mAgo": "%s months ago", "mAgo": "%s months ago",
"Main dishes": "Main dishes", "Main dishes": "Main dishes",
"March": "March",
"May": "May",
"Meat": "Meat", "Meat": "Meat",
"medium": "medium", "medium": "medium",
"Mexican": "Mexican", "Mexican": "Mexican",
@ -138,6 +148,7 @@
"minimal": "Minimal", "minimal": "Minimal",
"ml": "ml", "ml": "ml",
"Moderate": "Moderate", "Moderate": "Moderate",
"MON": "MON",
"newCui": "New cuisine", "newCui": "New cuisine",
"Newest first": "Newest first", "Newest first": "Newest first",
"newRec": "New recipe", "newRec": "New recipe",
@ -152,8 +163,10 @@
"noRecs": "No recipes match your search", "noRecs": "No recipes match your search",
"noRecsInL": "None of the recipes here matches your search", "noRecsInL": "None of the recipes here matches your search",
"nos": "Notes", "nos": "Notes",
"November": "November",
"nwCat": "New category", "nwCat": "New category",
"nwYiU": "New yield unit", "nwYiU": "New yield unit",
"October": "October",
"OK": "OK", "OK": "OK",
"Oldest first": "Oldest first", "Oldest first": "Oldest first",
"opts": "Options", "opts": "Options",
@ -167,7 +180,7 @@
"Piece": "Piece", "Piece": "Piece",
"pinch": "pinch", "pinch": "pinch",
"planner": "Meal Planner", "planner": "Meal Planner",
"plsAdd": "Use the + button to add one", "plsAdd": "Use the plus button to add one",
"Portuguese": "Portuguese", "Portuguese": "Portuguese",
"Poultry": "Poultry", "Poultry": "Poultry",
"Pound": "Pound", "Pound": "Pound",
@ -211,10 +224,12 @@
"rst": "RESTART", "rst": "RESTART",
"Russian": "Russian", "Russian": "Russian",
"Salads": "Salads", "Salads": "Salads",
"SAT": "SAT",
"Sauces": "Sauces", "Sauces": "Sauces",
"Scottish": "Scottish", "Scottish": "Scottish",
"Seafood": "Seafood", "Seafood": "Seafood",
"selRec": "Select recipe", "selRec": "Select recipe",
"September": "September",
"ser": "Search", "ser": "Search",
"Serving": "Serving", "Serving": "Serving",
"SET": "SET", "SET": "SET",
@ -234,8 +249,9 @@
"sru": "Share recipe using...", "sru": "Share recipe using...",
"stars": "Star rating", "stars": "Star rating",
"stick": "stick", "stick": "stick",
"stp": "Step %s", "stp": "Step",
"strAdd": "Start adding your recipes!", "strAdd": "Start adding your recipes!",
"SUN": "SUN",
"sVw": "Shake to view random recipe", "sVw": "Shake to view random recipe",
"sVwInfo": "Helps you choose what to cook when you can't decide", "sVwInfo": "Helps you choose what to cook when you can't decide",
"Swedish": "Swedish", "Swedish": "Swedish",
@ -246,6 +262,7 @@
"Teaspoon": "Teaspoon", "Teaspoon": "Teaspoon",
"Thai": "Thai", "Thai": "Thai",
"Theme": "Theme", "Theme": "Theme",
"THU": "THU",
"title": "Title", "title": "Title",
"tLInfo": "Recipes you want to try later are listed here", "tLInfo": "Recipes you want to try later are listed here",
"today": "today", "today": "today",
@ -256,6 +273,7 @@
"ts": "Tags", "ts": "Tags",
"tsInfo": "separate with spaces", "tsInfo": "separate with spaces",
"tsp": "tsp", "tsp": "tsp",
"TUE": "TUE",
"Turkish": "Turkish", "Turkish": "Turkish",
"Undefined": "Undefined", "Undefined": "Undefined",
"unit": "unit", "unit": "unit",
@ -266,6 +284,7 @@
"Vegetarian": "Vegetarian", "Vegetarian": "Vegetarian",
"Vietnamese": "Vietnamese", "Vietnamese": "Vietnamese",
"wAgo": "%s weeks ago", "wAgo": "%s weeks ago",
"WED": "WED",
"yesterday": "yesterday", "yesterday": "yesterday",
"yieldQ": "Yield quantity", "yieldQ": "Yield quantity",
"yieldU": "Yield unit", "yieldU": "Yield unit",
@ -279,8 +298,7 @@
"delay": "Delay", "delay": "Delay",
"tmr": "Timer %s", "tmr": "Timer %s",
"prstBtn": "PRESETS", "prstBtn": "PRESETS",
"prsts": "Presets", "tmrPrsts": "Timer presets",
"delPrst": "You are about to delete %s from the presets",
"fwr": "for which recipe?", "fwr": "for which recipe?",
"aTPrst": "Added to presets", "aTPrst": "Added to presets",
"tmrSnd": "Timer sound", "tmrSnd": "Timer sound",
@ -290,42 +308,5 @@
"minutes": "minutes", "minutes": "minutes",
"hour": "hour", "hour": "hour",
"hours": "hours", "hours": "hours",
"seconds": "seconds", "seconds": "seconds"
"tmrRm": "Timer removed",
"notifSetg": "Notification settings",
"random": "Random",
"gtD": "Go to date",
"ccwt": "Cook confidently with timers!",
"prstTU": "Preset time updated",
"wDBy": "%1$s was delayed by %2$s",
"texp": "%s timers expired",
"dismiss": "Dismiss",
"dismissAll": "Dismiss all timers",
"ttv": "Tap to view",
"oAP": "%1$s ongoing, %2$s paused",
"calVM": "Calendar view mode",
"mnth": "Month",
"wk": "Week",
"d": "Day",
"cpy": "copy",
"tdy": "Today",
"tmrw": "Tomorrow",
"ystr": "Yesterday",
"selMT": "Select meal type",
"ehwmp": "Eat healthy with meal plans!",
"plsCrt": "Use the + button to create one",
"admp": "Auto-delete meal plans",
"otay": "Older than a year",
"otam": "Older than a month",
"otaw": "Older than a week",
"nvr": "Never",
"add": "Add",
"rstBtn": "RESET",
"ksavr": "Keep screen awake while viewing recipe",
"ksavrInfo": "Prevents the screen from turning off while viewing a recipe",
"esgb": "Edge swipe to go back",
"esgbInfo": "Disable this option if you have any navigation issues",
"sect": "Section %s",
"addSectBtn": "ADD SECTION",
"sectRm": "Section removed"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes", "appInfo": "EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes",
"apply": "APPLY", "apply": "APPLY",
"appRst": "App restart required", "appRst": "App restart required",
"April": "April",
"aStpBtn": "ADD STEP", "aStpBtn": "ADD STEP",
"August": "August",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Beverages", "Beverages": "Beverages",
"Black": "Black", "Black": "Black",
@ -51,6 +53,7 @@
"Dark": "Dark", "Dark": "Dark",
"db": "Database", "db": "Database",
"dBtn": "DELETE", "dBtn": "DELETE",
"December": "December",
"delRecInfo": "You are about to permanently delete the recipe %s", "delRecInfo": "You are about to permanently delete the recipe %s",
"delRecsInfo": "You are about to permanently delete %s", "delRecsInfo": "You are about to permanently delete %s",
"Desserts": "Desserts", "Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Export in progress", "expip": "Export in progress",
"expSuc": "Export success", "expSuc": "Export success",
"favourites": "Favourites", "favourites": "Favourites",
"February": "February",
"Filipino": "Filipino", "Filipino": "Filipino",
"Filtered recipes": "Filtered recipes", "Filtered recipes": "Filtered recipes",
"fl oz": "fl oz", "fl oz": "fl oz",
"fltr": "Filter", "fltr": "Filter",
"Fluid Ounce": "Fluid Ounce", "Fluid Ounce": "Fluid Ounce",
"French": "French", "French": "French",
"FRI": "FRI",
"fsList": "Your favourite recipes are listed here", "fsList": "Your favourite recipes are listed here",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -90,7 +95,7 @@
"grocery": "Grocery List", "grocery": "Grocery List",
"guide": "User guide", "guide": "User guide",
"Healthy": "Healthy", "Healthy": "Healthy",
"hr": "h", "hr": "hr",
"impBu": "Import data", "impBu": "Import data",
"impFail": "Import failed", "impFail": "Import failed",
"impInfo": "Supports full backups exported by this app", "impInfo": "Supports full backups exported by this app",
@ -103,12 +108,15 @@
"intf": "Interface", "intf": "Interface",
"invFile": "Invalid file", "invFile": "Invalid file",
"Irish": "Irish", "Irish": "Irish",
"it": "Item %s", "it": "Item",
"Italian": "Italian", "Italian": "Italian",
"Jamaican": "Jamaican", "Jamaican": "Jamaican",
"January": "January",
"Japanese": "Japanese", "Japanese": "Japanese",
"Jewish": "Jewish", "Jewish": "Jewish",
"joinTG": "Join the Telegram group", "joinTG": "Join the Telegram group",
"July": "July",
"June": "June",
"kEdit": "KEEP EDITING", "kEdit": "KEEP EDITING",
"Kenyan": "Kenyan", "Kenyan": "Kenyan",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch", "lunch": "Lunch",
"mAgo": "%s months ago", "mAgo": "%s months ago",
"Main dishes": "Main dishes", "Main dishes": "Main dishes",
"March": "March",
"May": "May",
"Meat": "Meat", "Meat": "Meat",
"medium": "medium", "medium": "medium",
"Mexican": "Mexican", "Mexican": "Mexican",
@ -137,6 +147,7 @@
"minimal": "Minimal", "minimal": "Minimal",
"ml": "ml", "ml": "ml",
"Moderate": "Moderate", "Moderate": "Moderate",
"MON": "MON",
"newCui": "New cuisine", "newCui": "New cuisine",
"Newest first": "Newest first", "Newest first": "Newest first",
"newRec": "New recipe", "newRec": "New recipe",
@ -151,8 +162,10 @@
"noRecs": "No recipes match your search", "noRecs": "No recipes match your search",
"noRecsInL": "None of the recipes here matches your search", "noRecsInL": "None of the recipes here matches your search",
"nos": "Notes", "nos": "Notes",
"November": "November",
"nwCat": "New category", "nwCat": "New category",
"nwYiU": "New yield unit", "nwYiU": "New yield unit",
"October": "October",
"OK": "OK", "OK": "OK",
"Oldest first": "Oldest first", "Oldest first": "Oldest first",
"opts": "Options", "opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Piece", "Piece": "Piece",
"pinch": "pinch", "pinch": "pinch",
"planner": "Meal Planner", "planner": "Meal Planner",
"plsAdd": "Use the + button to add one", "plsAdd": "Use the plus button to add one",
"Portuguese": "Portuguese", "Portuguese": "Portuguese",
"Poultry": "Poultry", "Poultry": "Poultry",
"Pound": "Pound", "Pound": "Pound",
@ -210,10 +223,12 @@
"rst": "RESTART", "rst": "RESTART",
"Russian": "Russian", "Russian": "Russian",
"Salads": "Salads", "Salads": "Salads",
"SAT": "SAT",
"Sauces": "Sauces", "Sauces": "Sauces",
"Scottish": "Scottish", "Scottish": "Scottish",
"Seafood": "Seafood", "Seafood": "Seafood",
"selRec": "Select recipe", "selRec": "Select recipe",
"September": "September",
"ser": "Search", "ser": "Search",
"Serving": "Serving", "Serving": "Serving",
"SET": "SET", "SET": "SET",
@ -233,8 +248,9 @@
"sru": "Share recipe using...", "sru": "Share recipe using...",
"stars": "Star rating", "stars": "Star rating",
"stick": "stick", "stick": "stick",
"stp": "Step %s", "stp": "Step",
"strAdd": "Start adding your recipes!", "strAdd": "Start adding your recipes!",
"SUN": "SUN",
"sVw": "Shake to view random recipe", "sVw": "Shake to view random recipe",
"sVwInfo": "Helps you choose what to cook when you can't decide", "sVwInfo": "Helps you choose what to cook when you can't decide",
"Swedish": "Swedish", "Swedish": "Swedish",
@ -245,6 +261,7 @@
"Teaspoon": "Teaspoon", "Teaspoon": "Teaspoon",
"Thai": "Thai", "Thai": "Thai",
"Theme": "Theme", "Theme": "Theme",
"THU": "THU",
"title": "Title", "title": "Title",
"tLInfo": "Recipes you want to try later are listed here", "tLInfo": "Recipes you want to try later are listed here",
"today": "today", "today": "today",
@ -255,6 +272,7 @@
"ts": "Tags", "ts": "Tags",
"tsInfo": "separate with spaces", "tsInfo": "separate with spaces",
"tsp": "tsp", "tsp": "tsp",
"TUE": "TUE",
"Turkish": "Turkish", "Turkish": "Turkish",
"Undefined": "Undefined", "Undefined": "Undefined",
"unit": "unit", "unit": "unit",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetarian", "Vegetarian": "Vegetarian",
"Vietnamese": "Vietnamese", "Vietnamese": "Vietnamese",
"wAgo": "%s weeks ago", "wAgo": "%s weeks ago",
"WED": "WED",
"yesterday": "yesterday", "yesterday": "yesterday",
"yieldQ": "Yield quantity", "yieldQ": "Yield quantity",
"yieldU": "Yield unit", "yieldU": "Yield unit",
@ -275,6 +294,7 @@
"tmrSnd": "Timer sound", "tmrSnd": "Timer sound",
"aTPrst": "Added to presets", "aTPrst": "Added to presets",
"fwr": "for which recipe?", "fwr": "for which recipe?",
"tmrPrsts": "Timer presets",
"prstBtn": "PRESETS", "prstBtn": "PRESETS",
"tmr": "Timer %s", "tmr": "Timer %s",
"stop": "Stop", "stop": "Stop",
@ -288,44 +308,5 @@
"minutes": "minutes", "minutes": "minutes",
"minute": "minute", "minute": "minute",
"dlyDur": "Delay duration", "dlyDur": "Delay duration",
"delay": "Delay", "delay": "Delay"
"notifSetg": "Notification settings",
"tmrRm": "Timer removed",
"delPrst": "You are about to delete %s from the presets",
"prsts": "Presets",
"ttv": "Tap to view",
"dismissAll": "Dismiss all timers",
"dismiss": "Dismiss",
"texp": "%s timers expired",
"wDBy": "%1$s was delayed by %2$s",
"prstTU": "Preset time updated",
"ccwt": "Cook confidently with timers!",
"gtD": "Go to date",
"random": "Random",
"ystr": "Yesterday",
"tmrw": "Tomorrow",
"tdy": "Today",
"cpy": "copy",
"calVM": "Calendar view mode",
"oAP": "%1$s ongoing, %2$s paused",
"d": "Day",
"wk": "Week",
"mnth": "Month",
"nvr": "Never",
"otaw": "Older than a week",
"otam": "Older than a month",
"otay": "Older than a year",
"admp": "Auto-delete meal plans",
"plsCrt": "Use the + button to create one",
"ehwmp": "Eat healthy with meal plans!",
"selMT": "Select meal type",
"rstBtn": "RESET",
"add": "Add",
"esgbInfo": "Disable this option if you have any navigation issues",
"esgb": "Edge swipe to go back",
"ksavrInfo": "Prevents the screen from turning off while viewing a recipe",
"ksavr": "Keep screen awake while viewing recipe",
"sectRm": "Section removed",
"addSectBtn": "ADD SECTION",
"sect": "Section %s"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes", "appInfo": "EnRecipes is an open source, privacy-friendly digital cookbook that lets you create, manage and share your recipes",
"apply": "APPLY", "apply": "APPLY",
"appRst": "App restart required", "appRst": "App restart required",
"April": "April",
"aStpBtn": "ADD STEP", "aStpBtn": "ADD STEP",
"August": "August",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Beverages", "Beverages": "Beverages",
"Black": "Black", "Black": "Black",
@ -51,6 +53,7 @@
"Dark": "Dark", "Dark": "Dark",
"db": "Database", "db": "Database",
"dBtn": "DELETE", "dBtn": "DELETE",
"December": "December",
"delRecInfo": "You are about to permanently delete the recipe %s", "delRecInfo": "You are about to permanently delete the recipe %s",
"delRecsInfo": "You are about to permanently delete %s", "delRecsInfo": "You are about to permanently delete %s",
"Desserts": "Desserts", "Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Export in progress", "expip": "Export in progress",
"expSuc": "Export success", "expSuc": "Export success",
"favourites": "Favorites", "favourites": "Favorites",
"February": "February",
"Filipino": "Filipino", "Filipino": "Filipino",
"Filtered recipes": "Filtered recipes", "Filtered recipes": "Filtered recipes",
"fl oz": "fl oz", "fl oz": "fl oz",
"fltr": "Filter", "fltr": "Filter",
"Fluid Ounce": "Fluid Ounce", "Fluid Ounce": "Fluid Ounce",
"French": "French", "French": "French",
"FRI": "FRI",
"fsList": "Your favorite recipes are listed here", "fsList": "Your favorite recipes are listed here",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -90,7 +95,7 @@
"grocery": "Grocery List", "grocery": "Grocery List",
"guide": "User guide", "guide": "User guide",
"Healthy": "Healthy", "Healthy": "Healthy",
"hr": "h", "hr": "hr",
"impBu": "Import data", "impBu": "Import data",
"impFail": "Import failed", "impFail": "Import failed",
"impInfo": "Supports full backups exported by this app", "impInfo": "Supports full backups exported by this app",
@ -103,12 +108,15 @@
"intf": "Interface", "intf": "Interface",
"invFile": "Invalid file", "invFile": "Invalid file",
"Irish": "Irish", "Irish": "Irish",
"it": "Item %s", "it": "Item",
"Italian": "Italian", "Italian": "Italian",
"Jamaican": "Jamaican", "Jamaican": "Jamaican",
"January": "January",
"Japanese": "Japanese", "Japanese": "Japanese",
"Jewish": "Jewish", "Jewish": "Jewish",
"joinTG": "Join the Telegram group", "joinTG": "Join the Telegram group",
"July": "July",
"June": "June",
"kEdit": "KEEP EDITING", "kEdit": "KEEP EDITING",
"Kenyan": "Kenyan", "Kenyan": "Kenyan",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch", "lunch": "Lunch",
"mAgo": "%s months ago", "mAgo": "%s months ago",
"Main dishes": "Main dishes", "Main dishes": "Main dishes",
"March": "March",
"May": "May",
"Meat": "Meat", "Meat": "Meat",
"medium": "medium", "medium": "medium",
"Mexican": "Mexican", "Mexican": "Mexican",
@ -137,6 +147,7 @@
"minimal": "Minimal", "minimal": "Minimal",
"ml": "ml", "ml": "ml",
"Moderate": "Moderate", "Moderate": "Moderate",
"MON": "MON",
"newCui": "New cuisine", "newCui": "New cuisine",
"Newest first": "Newest first", "Newest first": "Newest first",
"newRec": "New recipe", "newRec": "New recipe",
@ -151,8 +162,10 @@
"noRecs": "No recipes match your search", "noRecs": "No recipes match your search",
"noRecsInL": "None of the recipes here matches your search", "noRecsInL": "None of the recipes here matches your search",
"nos": "Notes", "nos": "Notes",
"November": "November",
"nwCat": "New category", "nwCat": "New category",
"nwYiU": "New yield unit", "nwYiU": "New yield unit",
"October": "October",
"OK": "OK", "OK": "OK",
"Oldest first": "Oldest first", "Oldest first": "Oldest first",
"opts": "Options", "opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Piece", "Piece": "Piece",
"pinch": "pinch", "pinch": "pinch",
"planner": "Meal Planner", "planner": "Meal Planner",
"plsAdd": "Use the + button to add one", "plsAdd": "Use the plus button to add one",
"Portuguese": "Portuguese", "Portuguese": "Portuguese",
"Poultry": "Poultry", "Poultry": "Poultry",
"Pound": "Pound", "Pound": "Pound",
@ -210,10 +223,12 @@
"rst": "RESTART", "rst": "RESTART",
"Russian": "Russian", "Russian": "Russian",
"Salads": "Salads", "Salads": "Salads",
"SAT": "SAT",
"Sauces": "Sauces", "Sauces": "Sauces",
"Scottish": "Scottish", "Scottish": "Scottish",
"Seafood": "Seafood", "Seafood": "Seafood",
"selRec": "Select recipe", "selRec": "Select recipe",
"September": "September",
"ser": "Search", "ser": "Search",
"Serving": "Serving", "Serving": "Serving",
"SET": "SET", "SET": "SET",
@ -233,8 +248,9 @@
"sru": "Share recipe using...", "sru": "Share recipe using...",
"stars": "Star rating", "stars": "Star rating",
"stick": "stick", "stick": "stick",
"stp": "Step %s", "stp": "Step",
"strAdd": "Start adding your recipes!", "strAdd": "Start adding your recipes!",
"SUN": "SUN",
"sVw": "Shake to view random recipe", "sVw": "Shake to view random recipe",
"sVwInfo": "Helps you choose what to cook when you can't decide", "sVwInfo": "Helps you choose what to cook when you can't decide",
"Swedish": "Swedish", "Swedish": "Swedish",
@ -245,6 +261,7 @@
"Teaspoon": "Teaspoon", "Teaspoon": "Teaspoon",
"Thai": "Thai", "Thai": "Thai",
"Theme": "Theme", "Theme": "Theme",
"THU": "THU",
"title": "Title", "title": "Title",
"tLInfo": "Recipes you want to try later are listed here", "tLInfo": "Recipes you want to try later are listed here",
"today": "today", "today": "today",
@ -255,6 +272,7 @@
"ts": "Tags", "ts": "Tags",
"tsInfo": "separate with spaces", "tsInfo": "separate with spaces",
"tsp": "tsp", "tsp": "tsp",
"TUE": "TUE",
"Turkish": "Turkish", "Turkish": "Turkish",
"Undefined": "Undefined", "Undefined": "Undefined",
"unit": "unit", "unit": "unit",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetarian", "Vegetarian": "Vegetarian",
"Vietnamese": "Vietnamese", "Vietnamese": "Vietnamese",
"wAgo": "%s weeks ago", "wAgo": "%s weeks ago",
"WED": "WED",
"yesterday": "yesterday", "yesterday": "yesterday",
"yieldQ": "Yield quantity", "yieldQ": "Yield quantity",
"yieldU": "Yield unit", "yieldU": "Yield unit",
@ -275,6 +294,7 @@
"tmrSnd": "Timer sound", "tmrSnd": "Timer sound",
"aTPrst": "Added to presets", "aTPrst": "Added to presets",
"fwr": "for which recipe?", "fwr": "for which recipe?",
"tmrPrsts": "Timer presets",
"prstBtn": "PRESETS", "prstBtn": "PRESETS",
"tmr": "Timer %s", "tmr": "Timer %s",
"stop": "Stop", "stop": "Stop",
@ -288,44 +308,5 @@
"minutes": "minutes", "minutes": "minutes",
"minute": "minute", "minute": "minute",
"dlyDur": "Delay duration", "dlyDur": "Delay duration",
"delay": "Delay", "delay": "Delay"
"notifSetg": "Notification settings",
"tmrRm": "Timer removed",
"delPrst": "You are about to delete %s from the presets",
"prsts": "Presets",
"ttv": "Tap to view",
"dismissAll": "Dismiss all timers",
"dismiss": "Dismiss",
"texp": "%s timers expired",
"wDBy": "%1$s was delayed by %2$s",
"prstTU": "Preset time updated",
"ccwt": "Cook confidently with timers!",
"gtD": "Go to date",
"random": "Random",
"ystr": "Yesterday",
"tmrw": "Tomorrow",
"tdy": "Today",
"cpy": "copy",
"calVM": "Calendar view mode",
"oAP": "%1$s ongoing, %2$s paused",
"d": "Day",
"wk": "Week",
"mnth": "Month",
"nvr": "Never",
"otaw": "Older than a week",
"otam": "Older than a month",
"otay": "Older than a year",
"admp": "Auto-delete meal plans",
"plsCrt": "Use the + button to create one",
"ehwmp": "Eat healthy with meal plans!",
"selMT": "Select meal type",
"rstBtn": "RESET",
"add": "Add",
"esgbInfo": "Disable this option if you have any navigation issues",
"esgb": "Edge swipe to go back",
"ksavrInfo": "Prevents the screen from turning off while viewing a recipe",
"ksavr": "Keep screen awake while viewing recipe",
"sectRm": "Section removed",
"addSectBtn": "ADD SECTION",
"sect": "Section %s"
} }

View file

@ -1,20 +1,3 @@
{ {
"sec": "s", "sec": "s"
"aStpBtn": "AGREGAR PASO",
"appRst": "Se requiere reiniciar la app",
"apply": "APLICAR",
"appInfo": "EnRecipes es un libro de cocina digital, privado y de código abierto, que te permite crear, administrar y compartir tus recetas",
"Appetizers": "Aperitivos",
"appCrd": "Compartido vía EnRecipes. Conseguilo en F-Droid, IzzyOnDroid o en la Play Store.",
"aNoBtn": "AGREGAR NOTA",
"aNBtn": "AGREGAR NUEVA",
"American": "Americana",
"allCats": "Todas las categorías",
"aIngBtn": "AGREGAR INGREDIENTE",
"aFBu": "Agregá recetas para hacer un backup",
"addCmbBtn": "AGREGAR COMBINACIÓN",
"aD": "¡Todo listo!",
"aBtn": "AGREGAR",
"About": "Acerca de",
"aap": "Adjuntá una foto"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes es un libro de cocinas de código abierto, amigo de tu privacidad, que te deja crear, manejar y compartir tus recetas", "appInfo": "EnRecipes es un libro de cocinas de código abierto, amigo de tu privacidad, que te deja crear, manejar y compartir tus recetas",
"apply": "APLICAR", "apply": "APLICAR",
"appRst": "Se requiere reiniciar la aplicación", "appRst": "Se requiere reiniciar la aplicación",
"April": "Abril",
"aStpBtn": "AÑADIR PASO", "aStpBtn": "AÑADIR PASO",
"August": "Agosto",
"Barbecue": "Barbacoa", "Barbecue": "Barbacoa",
"Beverages": "Bebidas", "Beverages": "Bebidas",
"Black": "Negro", "Black": "Negro",
@ -51,6 +53,7 @@
"Dark": "Oscuro", "Dark": "Oscuro",
"db": "Base de datos", "db": "Base de datos",
"dBtn": "ELIMINAR", "dBtn": "ELIMINAR",
"December": "Diciembre",
"delRecInfo": "Estás a punto de eliminar definitivamente la receta %s", "delRecInfo": "Estás a punto de eliminar definitivamente la receta %s",
"delRecsInfo": "Estás a punto de eliminar permanentemente %s", "delRecsInfo": "Estás a punto de eliminar permanentemente %s",
"Desserts": "Postres", "Desserts": "Postres",
@ -72,12 +75,14 @@
"expip": "Exportación en curso", "expip": "Exportación en curso",
"expSuc": "Exportación satisfactoria", "expSuc": "Exportación satisfactoria",
"favourites": "Favoritos", "favourites": "Favoritos",
"February": "Febrero",
"Filipino": "Filipina", "Filipino": "Filipina",
"Filtered recipes": "Recetas filtradas", "Filtered recipes": "Recetas filtradas",
"fl oz": "oz liq", "fl oz": "oz liq",
"fltr": "Filtro", "fltr": "Filtro",
"Fluid Ounce": "Onza líquida", "Fluid Ounce": "Onza líquida",
"French": "Francesa", "French": "Francesa",
"FRI": "VIE",
"fsList": "Aquí se enumeran tus recetas favoritas", "fsList": "Aquí se enumeran tus recetas favoritas",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -106,9 +111,12 @@
"it": "Artículo", "it": "Artículo",
"Italian": "Italiano", "Italian": "Italiano",
"Jamaican": "Jamaiquino", "Jamaican": "Jamaiquino",
"January": "Enero",
"Japanese": "Japonés", "Japanese": "Japonés",
"Jewish": "Judía", "Jewish": "Judía",
"joinTG": "Únete al grupo de Telegram", "joinTG": "Únete al grupo de Telegram",
"July": "Julio",
"June": "Junio",
"kEdit": "SEGUIR EDITANDO", "kEdit": "SEGUIR EDITANDO",
"Kenyan": "Keniata", "Kenyan": "Keniata",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Almuerzo", "lunch": "Almuerzo",
"mAgo": "hace %s meses", "mAgo": "hace %s meses",
"Main dishes": "Platos principales", "Main dishes": "Platos principales",
"March": "Marzo",
"May": "Mayo",
"Meat": "Carnes", "Meat": "Carnes",
"medium": "mediano", "medium": "mediano",
"Mexican": "Mejicana", "Mexican": "Mejicana",
@ -137,6 +147,7 @@
"minimal": "Mínimo", "minimal": "Mínimo",
"ml": "ml", "ml": "ml",
"Moderate": "Moderada", "Moderate": "Moderada",
"MON": "LUN",
"newCui": "Nueva cocina", "newCui": "Nueva cocina",
"Newest first": "Más nuevas primero", "Newest first": "Más nuevas primero",
"newRec": "Nueva receta", "newRec": "Nueva receta",
@ -151,8 +162,10 @@
"noRecs": "No hay recetas que coincidan con tu búsqueda", "noRecs": "No hay recetas que coincidan con tu búsqueda",
"noRecsInL": "Ninguna de las recetas aquí coincide con su búsqueda", "noRecsInL": "Ninguna de las recetas aquí coincide con su búsqueda",
"nos": "Notas", "nos": "Notas",
"November": "Noviembre",
"nwCat": "Nueva categoría", "nwCat": "Nueva categoría",
"nwYiU": "Nueva unidad de medida", "nwYiU": "Nueva unidad de medida",
"October": "Octubre",
"OK": "OK", "OK": "OK",
"Oldest first": "Más antiguas primero", "Oldest first": "Más antiguas primero",
"opts": "Opciones", "opts": "Opciones",
@ -210,10 +223,12 @@
"rst": "REINICIAR", "rst": "REINICIAR",
"Russian": "Rusa", "Russian": "Rusa",
"Salads": "Ensaladas", "Salads": "Ensaladas",
"SAT": "SAB",
"Sauces": "Salsas", "Sauces": "Salsas",
"Scottish": "Escocesa", "Scottish": "Escocesa",
"Seafood": "Comida del mar", "Seafood": "Comida del mar",
"selRec": "Selecciona una receta", "selRec": "Selecciona una receta",
"September": "Septiembre",
"ser": "Buscar", "ser": "Buscar",
"Serving": "Servicio", "Serving": "Servicio",
"SET": "ESTABLECER", "SET": "ESTABLECER",
@ -235,6 +250,7 @@
"stick": "rama", "stick": "rama",
"stp": "Paso", "stp": "Paso",
"strAdd": "¡Empieza a añadir tus recetas!", "strAdd": "¡Empieza a añadir tus recetas!",
"SUN": "DOM",
"sVw": "Agita para ver una receta aleatoria", "sVw": "Agita para ver una receta aleatoria",
"sVwInfo": "Te ayuda a elegir que cocinar cuando no podés decidirte", "sVwInfo": "Te ayuda a elegir que cocinar cuando no podés decidirte",
"Swedish": "Sueca", "Swedish": "Sueca",
@ -245,6 +261,7 @@
"Teaspoon": "Cucharadita", "Teaspoon": "Cucharadita",
"Thai": "Thai", "Thai": "Thai",
"Theme": "Tema", "Theme": "Tema",
"THU": "JUE",
"title": "Título", "title": "Título",
"tLInfo": "Las recetas que el usuario quería probar más tarde están listadas aquí", "tLInfo": "Las recetas que el usuario quería probar más tarde están listadas aquí",
"today": "hoy", "today": "hoy",
@ -255,6 +272,7 @@
"ts": "Etiquetas", "ts": "Etiquetas",
"tsInfo": "separa con espacios", "tsInfo": "separa con espacios",
"tsp": "cdt", "tsp": "cdt",
"TUE": "MAR",
"Turkish": "Turca", "Turkish": "Turca",
"Undefined": "Indefinido", "Undefined": "Indefinido",
"unit": "unidad", "unit": "unidad",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetariano", "Vegetarian": "Vegetariano",
"Vietnamese": "Vietnamita", "Vietnamese": "Vietnamita",
"wAgo": "hace %s semanas", "wAgo": "hace %s semanas",
"WED": "MIE",
"yesterday": "ayer", "yesterday": "ayer",
"yieldQ": "Cantidad de rendimiento", "yieldQ": "Cantidad de rendimiento",
"yieldU": "Unidad de medida", "yieldU": "Unidad de medida",
@ -282,41 +301,12 @@
"minutes": "minutos", "minutes": "minutos",
"minute": "minuto", "minute": "minuto",
"stop": "Detener", "stop": "Detener",
"delay": "Retrasar", "delay": "Retraso",
"prstBtn": "PRECIPIOS", "prstBtn": "PRECIPIOS",
"tmrPrsts": "Preselecciones del temporizador",
"fwr": "para qué receta?", "fwr": "para qué receta?",
"aTPrst": "Añadido a los preajustes", "aTPrst": "Añadido a los preajustes",
"tmrSnd": "Sonido del temporizador", "tmrSnd": "Sonido del temporizador",
"tmrvbrt": "Vibrador del temporizador", "tmrvbrt": "Vibrador del temporizador",
"dlyDur": "Duración del retraso", "dlyDur": "Duración del retraso"
"notifSetg": "Ajustes de notificación",
"tmrRm": "Temporizador eliminado",
"delPrst": "Está a punto de eliminar %s de los preajustes",
"prsts": "Preselecciones",
"cpy": "copia",
"d": "Día",
"wk": "Semana",
"mnth": "Mes",
"ystr": "Ayer",
"tmrw": "Mañana",
"tdy": "Hoy",
"calVM": "Modo de vista del calendario",
"oAP": "%1$s en curso, %2$s en pausa",
"ttv": "Toca para ver",
"gtD": "Ir a la fecha",
"random": "Aleatorio",
"ehwmp": "¡Coma sano con los planes de comidas!",
"selMT": "Seleccione el tipo de comida",
"dismissAll": "Descartar todos los temporizadores",
"dismiss": "Descartar",
"texp": "%s temporizadores expirados",
"prstTU": "Tiempo preestablecido actualizado",
"rstBtn": "RESTABLECER",
"add": "Añadir",
"nvr": "Nunca",
"otaw": "Más de una semana",
"otam": "Más de un mes",
"otay": "Más de un año",
"plsCrt": "Usa el botón + para crear una",
"ccwt": "¡Cocine con confianza con los temporizadores!"
} }

303
app/i18n/fi.json Normal file
View file

@ -0,0 +1,303 @@
{
"aap": "Liitä valokuva",
"About": "Tietoja",
"aBtn": "LISÄÄ",
"aD": "Valmista!",
"addCmbBtn": "LISÄÄ YHDISTELMÄ",
"aFBu": "Lisää resepti varmuuskopioinnin suorittamiseen",
"aIngBtn": "LISÄÄ AINESOSA",
"allCats": "Kaikki luokat",
"allCuis": "Kaikki keittiöt",
"allTs": "Kaikki tunnisteet",
"American": "amerikkalainen",
"aNBtn": "LISÄÄ UUSI",
"aNoBtn": "LISÄÄ HUOMAUTUS",
"app.name": "",
"appCrd": "Jaettu EnRecipesin kautta. Lataa se F-Droidista, IzzyOnDroidista tai Play Storesta.",
"Appetizers": "Alkupalat",
"appInfo": "EnRecipes on avoimen lähdekoodin, yksityisyyden suojaa kunnioittava digitaalinen keittokirja, jonka avulla voit luoda, hallita ja jakaa reseptejäsi",
"apply": "KÄYTÄ",
"appRst": "Sovelluksen uudelleenkäynnistys vaaditaan",
"April": "huhtikuu",
"aStpBtn": "",
"August": "elokuu",
"Barbecue": "Grilli",
"Beverages": "Juomat",
"Black": "Musta",
"Brazilian": "brasilialainen",
"Breads": "Leivät",
"breakfast": "Aamiainen",
"British": "brittiläinen",
"buEmp": "Varmuuskopiotiedosto on tyhjä",
"buFol": "Varmuuskopioiden hakemisto",
"buInc": "Virheellinen tai vioittunut varmuuskopiotiedosto",
"buInfo": "Luo ZIP-tiedoston, joka sisältää kaikki tiedot, jotka voidaan tuoda takaisin",
"buMod": "Varmuuskopiotiedostoa muutettiin muualla",
"cat": "Luokka",
"cBtn": "PERUUTA",
"Challenging": "Haastava",
"Chinese": "kiinalainen",
"clove": "kynsi",
"cm": "cm",
"cmbs": "Yhdistelmät",
"conBtn": "JATKA",
"conf": "Vahvista",
"cookT": "Kypsennysaika",
"cPic": "Rajaa kuva",
"Created": "Luotu",
"cui": "Keittiö",
"cup": "cup",
"Cup": "Kuppi",
"dAgo": "%s päivää sitten",
"Danish": "tanskalainen",
"Dark": "Tumma",
"db": "Tietokanta",
"dBtn": "POISTA",
"December": "joulukuu",
"delRecInfo": "Olet poistamassa reseptiä %s pysyvästi",
"delRecsInfo": "Olet poistamassa %s pysyvästi",
"Desserts": "Jälkiruoat",
"detailed": "Yksityiskohtainen",
"Difficulty level": "Vaikeustaso",
"dinner": "Illallinen",
"disBtn": "HYLKÄÄ",
"disc": "Tässä reseptissä on tallentamattomia muutoksia. Mitä haluaisit tehdä?",
"donate": "Lahjoita",
"dozen": "tusina",
"drop": "",
"dsp": "",
"Easy": "Helppo",
"editRec": "Muokkaa resepti",
"Egyptian": "egyptiläinen",
"English": "englantilainen",
"EnRecipes": "",
"expBu": "Vie koko varmuuskopio",
"expip": "Vienti käynnissä",
"expSuc": "",
"favourites": "",
"February": "helmikuu",
"Filipino": "",
"Filtered recipes": "",
"fl oz": "",
"fltr": "",
"Fluid Ounce": "",
"French": "",
"FRI": "",
"fsList": "",
"g": "",
"gal": "",
"Gallon": "",
"German": "",
"gh": "",
"Gram": "",
"Greek": "",
"grid": "",
"grocery": "",
"guide": "",
"Healthy": "",
"hr": "",
"impBu": "",
"impFail": "",
"impInfo": "",
"impip": "",
"impSuc": "",
"in": "",
"Indian": "",
"ings": "",
"inss": "",
"intf": "",
"invFile": "",
"Irish": "",
"it": "",
"Italian": "",
"Jamaican": "",
"January": "",
"Japanese": "",
"Jewish": "",
"joinTG": "",
"July": "",
"June": "",
"kEdit": "",
"Kenyan": "",
"kg": "",
"Kilogram": "",
"Korean": "",
"l": "",
"lang": "",
"large": "",
"Last updated": "",
"lb": "",
"leaf": "",
"Light": "",
"listVM": "",
"Litre": "",
"Loaf": "",
"ltAgo": "",
"lunch": "",
"mAgo": "",
"Main dishes": "",
"March": "",
"May": "",
"Meat": "",
"medium": "",
"Mexican": "",
"mg": "",
"Millilitre": "",
"min": "",
"minimal": "",
"ml": "",
"Moderate": "",
"MON": "",
"newCui": "",
"Newest first": "",
"newRec": "",
"newUnit": "",
"Nigerian": "",
"nLangInfo": "",
"nNBtn": "",
"no": "",
"noAccSensor": "",
"noFavs": "",
"Noodles": "",
"noRecs": "Hakua vastaavia reseptejä ei ole",
"noRecsInL": "",
"nos": "",
"November": "marraskuu",
"nwCat": "Uusi luokka",
"nwYiU": "",
"October": "lokakuu",
"OK": "OK",
"Oldest first": "",
"opts": "Valinnat",
"Ounce": "",
"oz": "",
"Pasta": "",
"Patty": "",
"photogrid": "",
"pht": "Reseptivalokuva",
"piece": "pala",
"Piece": "Pala",
"pinch": "",
"planner": "Ateriasuunnittelija",
"plsAdd": "Lisää resepti pluspainikkeella",
"Portuguese": "portugalilainen",
"Poultry": "",
"Pound": "",
"prepT": "Valmisteluaika",
"priv": "Tietosuojakäytäntö",
"pt": "",
"qt": "",
"Quickest first": "",
"Rating": "",
"rBtn": "POISTA",
"rec": "Resepti",
"recE": "On jo olemassa:",
"recF": "löydettyä reseptiä",
"recI": "",
"recListEmp": "",
"recPic": "Reseptivalokuva",
"recRm": "Resepti poistettu",
"recs": "reseptiä",
"recTitle": "Minun terveellinen reseptini",
"recU": "Päivitetty:",
"req": "",
"resNF": "",
"rest": "Nollaa",
"restCatL": "",
"restCuiL": "",
"restDone": "",
"restInfo": "",
"restUL": "",
"restYUL": "",
"Rice": "Riisi",
"rmCatInfo": "Olet poistamassa %s luokkaluettelosta",
"rmCmb": "Yhdistelmä poistettu",
"rmCuiInfo": "",
"rmIng": "Ainesosa poistettu",
"rmIns": "Ohje poistettu",
"rmN": "Huomautus poistettu",
"rmUInfo": "",
"rmYUInfo": "",
"Roll": "",
"rp": "Poista valokuva",
"rst": "UUDELLEENKÄYNNISTÄ",
"Russian": "venäläinen",
"Salads": "Salaatit",
"SAT": "la",
"Sauces": "Kastikkeet",
"Scottish": "skotlantilainen",
"Seafood": "",
"selRec": "",
"September": "",
"ser": "Etsi",
"Serving": "",
"SET": "ASETA",
"Settings": "Asetukset",
"shr": "Jaa",
"Side dishes": "",
"simple": "",
"Slowest first": "",
"sltd": "",
"small": "",
"snacks": "",
"Soups": "Keitot",
"Spanish": "espanjalainen",
"Sri Lankan": "srilankalainen",
"srpu": "Jaa reseptikuva käyttämällä…",
"srt": "Järjestä",
"sru": "Jaa resepti käyttämällä…",
"stars": "",
"stick": "",
"stp": "",
"strAdd": "",
"SUN": "su",
"sVw": "Ravista nähdäksesi satunnainen resepti",
"sVwInfo": "Auttaa sinua valitsemaan, mitä valmistaa, kun et osaa päättää.",
"Swedish": "ruotsalainen",
"swm": "Aloita viikko maanantaina",
"sysDef": "Järjestelmän oletus",
"Tablespoon": "",
"tbsp": "",
"Teaspoon": "",
"Thai": "thaimaalainen",
"Theme": "Teema",
"THU": "to",
"title": "Otsikko",
"tLInfo": "Reseptit, joita haluat kokeilla myöhemmin, on lueteltu täällä",
"today": "tänään",
"triedInfo": "Kokeilit tätä reseptiä %s",
"trnsl": "Käännä",
"trylater": "",
"trySer": "ETSI KAIKISTA RESEPTEISTÄ?",
"ts": "Tunnisteet",
"tsInfo": "",
"tsp": "",
"TUE": "ti",
"Turkish": "",
"Undefined": "Määrittelemätön",
"unit": "",
"Unit": "",
"unsaved": "",
"untRec": "",
"Vegan": "Vegaani",
"Vegetarian": "Kasvissyöjä",
"Vietnamese": "vietnamilainen",
"wAgo": "%s viikkoa sitten",
"WED": "ke",
"yesterday": "eilen",
"yieldQ": "",
"yieldU": "",
"yld": "",
"buto": "",
"sysDefB": "Järjestelmän oletusarvo + Musta",
"tmr": "Ajastin %s",
"stop": "Pysäytä",
"ntmr": "Uusi ajastin",
"timer": "Keittoajastin",
"tmrSnd": "Ajastinääni",
"aTPrst": "Lisätty esiasetuksiin",
"fwr": "mitä reseptiä varten?",
"tmrPrsts": "Ajastimen esiasetukset",
"prstBtn": "ESIASETUKSET",
"sec": "s"
}

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes", "appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes",
"apply": "APPLIQUER", "apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire", "appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE", "aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "aout",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Boissons", "Beverages": "Boissons",
"Black": "Noir", "Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre", "Dark": "Sombre",
"db": "Base de données", "db": "Base de données",
"dBtn": "SUPPRIMER", "dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s", "delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s", "delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts", "Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours", "expip": "Exportation en cours",
"expSuc": "Exportation réussie", "expSuc": "Exportation réussie",
"favourites": "Favoris", "favourites": "Favoris",
"February": "février",
"Filipino": "philippine", "Filipino": "philippine",
"Filtered recipes": "Recettes filtrées", "Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq", "fl oz": "oz liq",
"fltr": "Filtre", "fltr": "Filtre",
"Fluid Ounce": "Once liquide", "Fluid Ounce": "Once liquide",
"French": "française", "French": "française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici", "fsList": "Vos recettes favorites sont listées ici",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -106,9 +111,12 @@
"it": "Élément", "it": "Élément",
"Italian": "italienne", "Italian": "italienne",
"Jamaican": "jamaïcaine", "Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise", "Japanese": "japonaise",
"Jewish": "juive", "Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram", "joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER", "kEdit": "CONTINUER",
"Kenyan": "kényane", "Kenyan": "kényane",
"kg": "kg", "kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche", "Loaf": "Miche",
"ltAgo": "il y a longtemps", "ltAgo": "il y a longtemps",
"lunch": "Diner", "lunch": "Diner",
"mAgo": "il y a %s mois", "mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux", "Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande", "Meat": "Viande",
"medium": "moyen", "medium": "moyen",
"Mexican": "mexicaine", "Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale", "minimal": "Minimale",
"ml": "ml", "ml": "ml",
"Moderate": "Modéré", "Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine", "newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord", "Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette", "newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette", "noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche", "noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes", "nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie", "nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de rendement", "nwYiU": "Nouvelle unité de rendement",
"October": "octobre",
"OK": "OK", "OK": "OK",
"Oldest first": "La plus ancienne dabord", "Oldest first": "La plus ancienne dabord",
"opts": "Options", "opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau", "Piece": "Morceau",
"pinch": "pincée", "pinch": "pincée",
"planner": "Planificateur de repas", "planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une", "plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise", "Portuguese": "portugaise",
"Poultry": "Volaille", "Poultry": "Volaille",
"Pound": "Livre", "Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes", "recs": "recettes",
"recTitle": "Ma recette saine", "recTitle": "Ma recette saine",
"recU": "mise à jour:", "recU": "mise à jour:",
"req": "%s nécessaire", "req": "%s requis(e)",
"resNF": "Recette introuvable", "resNF": "Recette introuvable",
"rest": "Réinitialiser", "rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories", "restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER", "rst": "REDÉMARRER",
"Russian": "russe", "Russian": "russe",
"Salads": "Salades", "Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces", "Sauces": "Sauces",
"Scottish": "écossaise", "Scottish": "écossaise",
"Seafood": "Fruits de mer", "Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette", "selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher", "ser": "Chercher",
"Serving": "Portion", "Serving": "Portion",
"SET": "DÉFINIR", "SET": "DÉFINIR",
@ -235,6 +250,7 @@
"stick": "barre", "stick": "barre",
"stp": "Étape", "stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes !", "strAdd": "Commencez à ajouter vos recettes !",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard", "sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider", "sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise", "Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à café", "Teaspoon": "Cuillère à café",
"Thai": "thaïlandaise", "Thai": "thaïlandaise",
"Theme": "Thème", "Theme": "Thème",
"THU": "jeu",
"title": "Titre", "title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici", "tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui", "today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s", "triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire", "trnsl": "Traduire",
"trylater": "À essayer plus tard", "trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES ?", "trySer": "RECHERCHE DANS TOUTES LES RECETTES ?",
"ts": "Étiquettes", "ts": "Étiquettes",
"tsInfo": "séparez par des espaces", "tsInfo": "séparez par des espaces",
"tsp": "c.à.c", "tsp": "c.à.c",
"TUE": "mar",
"Turkish": "turque", "Turkish": "turque",
"Undefined": "Indéfini", "Undefined": "Indéfini",
"unit": "unité", "unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien", "Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne", "Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines", "wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier", "yesterday": "hier",
"yieldQ": "Quantité de rendement", "yieldQ": "Quantité de rendement",
"yieldU": "Unité de rendement", "yieldU": "Unité de rendement",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie", "tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages", "aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette ?", "fwr": "pour quelle recette ?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES", "prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s", "tmr": "Minuterie %s",
"stop": "Arrêter", "stop": "Arrêter",
@ -288,41 +308,5 @@
"minutes": "minutes", "minutes": "minutes",
"minute": "minute", "minute": "minute",
"dlyDur": "Durée du retard", "dlyDur": "Durée du retard",
"delay": "Retarder", "delay": "Retard"
"notifSetg": "Paramètres de notification",
"tmrRm": "Minuterie retirée",
"delPrst": "Vous êtes sur le point de supprimer %s des préréglages",
"prsts": "Préréglages",
"ttv": "Appuyez pour voir",
"dismissAll": "Rejeter toutes les minuteries",
"dismiss": "Rejeter",
"texp": "%s minuteries ont expiré",
"wDBy": "%1$s a été retardée de %2$s",
"prstTU": "Temps du préréglage mis à jour",
"ccwt": "Cuisinez avec confiance avec des minuteries !",
"gtD": "Aller à la date",
"random": "Aléatoire",
"ystr": "Hier",
"tmrw": "Demain",
"tdy": "Aujourdhui",
"cpy": "copie",
"d": "Jour",
"wk": "Semaine",
"mnth": "Mois",
"calVM": "Mode daffichage du calendrier",
"oAP": "%1$s en cours, %2$s en pause",
"otaw": "Après une semaine",
"otam": "Après un mois",
"otay": "Après un an",
"admp": "Supprimer automatiquement les planifications de repas",
"nvr": "Jamais",
"plsCrt": "Utilisez le bouton + pour en créer une",
"ehwmp": "Mangez sainement grâce aux planifications de repas !",
"selMT": "Sélectionnez le type de repas",
"rstBtn": "RÉINITIALISER",
"add": "Ajouter",
"esgbInfo": "Désactivez cette option si vous avez des problèmes de navigation",
"esgb": "Balayer le bord pour revenir en arrière",
"ksavrInfo": "Empêche lécran de séteindre durant la visualisation dune recette",
"ksavr": "Garder lécran allumé durant laffichage dune recette"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes", "appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes",
"apply": "APPLIQUER", "apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire", "appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE", "aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "août",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Breuvages", "Beverages": "Breuvages",
"Black": "Noir", "Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre", "Dark": "Sombre",
"db": "Base de données", "db": "Base de données",
"dBtn": "SUPPRIMER", "dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s", "delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s", "delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts", "Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours", "expip": "Exportation en cours",
"expSuc": "Exportation réussie", "expSuc": "Exportation réussie",
"favourites": "Favoris", "favourites": "Favoris",
"February": "février",
"Filipino": "philippine", "Filipino": "philippine",
"Filtered recipes": "Recettes filtrées", "Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq", "fl oz": "oz liq",
"fltr": "Filtre", "fltr": "Filtre",
"Fluid Ounce": "Once liquide", "Fluid Ounce": "Once liquide",
"French": "française", "French": "française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici", "fsList": "Vos recettes favorites sont listées ici",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -96,7 +101,7 @@
"impInfo": "Prend en charge les sauvegardes complètes exportées par cette application", "impInfo": "Prend en charge les sauvegardes complètes exportées par cette application",
"impip": "Importation en cours", "impip": "Importation en cours",
"impSuc": "Importation réussie", "impSuc": "Importation réussie",
"in": "po", "in": "in",
"Indian": "indienne", "Indian": "indienne",
"ings": "Ingrédients", "ings": "Ingrédients",
"inss": "Instructions", "inss": "Instructions",
@ -106,9 +111,12 @@
"it": "Élément", "it": "Élément",
"Italian": "italienne", "Italian": "italienne",
"Jamaican": "jamaïcaine", "Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise", "Japanese": "japonaise",
"Jewish": "juive", "Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram", "joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER", "kEdit": "CONTINUER",
"Kenyan": "kényane", "Kenyan": "kényane",
"kg": "kg", "kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche", "Loaf": "Miche",
"ltAgo": "il y a longtemps", "ltAgo": "il y a longtemps",
"lunch": "Dîner", "lunch": "Dîner",
"mAgo": "il y a %s mois", "mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux", "Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande", "Meat": "Viande",
"medium": "moyen", "medium": "moyen",
"Mexican": "mexicaine", "Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale", "minimal": "Minimale",
"ml": "ml", "ml": "ml",
"Moderate": "Modéré", "Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine", "newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord", "Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette", "newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette", "noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche", "noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes", "nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie", "nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de rendement", "nwYiU": "Nouvelle unité de rendement",
"October": "octobre",
"OK": "OK", "OK": "OK",
"Oldest first": "La plus ancienne dabord", "Oldest first": "La plus ancienne dabord",
"opts": "Options", "opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau", "Piece": "Morceau",
"pinch": "pincée", "pinch": "pincée",
"planner": "Planificateur de repas", "planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une", "plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise", "Portuguese": "portugaise",
"Poultry": "Volaille", "Poultry": "Volaille",
"Pound": "Livre", "Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes", "recs": "recettes",
"recTitle": "Ma recette saine", "recTitle": "Ma recette saine",
"recU": "mise à jour:", "recU": "mise à jour:",
"req": "%s nécessaire", "req": "%s requis(e)",
"resNF": "Recette introuvable", "resNF": "Recette introuvable",
"rest": "Réinitialiser", "rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories", "restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER", "rst": "REDÉMARRER",
"Russian": "russe", "Russian": "russe",
"Salads": "Salades", "Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces", "Sauces": "Sauces",
"Scottish": "écossaise", "Scottish": "écossaise",
"Seafood": "Fruits de mer", "Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette", "selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher", "ser": "Chercher",
"Serving": "Portion", "Serving": "Portion",
"SET": "DÉFINIR", "SET": "DÉFINIR",
@ -235,6 +250,7 @@
"stick": "barre", "stick": "barre",
"stp": "Étape", "stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes!", "strAdd": "Commencez à ajouter vos recettes!",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard", "sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider", "sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise", "Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à thé", "Teaspoon": "Cuillère à thé",
"Thai": "thaïlandaise", "Thai": "thaïlandaise",
"Theme": "Thème", "Theme": "Thème",
"THU": "jeu",
"title": "Titre", "title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici", "tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui", "today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s", "triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire", "trnsl": "Traduire",
"trylater": "À essayer plus tard", "trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES?", "trySer": "RECHERCHE DANS TOUTES LES RECETTES?",
"ts": "Étiquettes", "ts": "Étiquettes",
"tsInfo": "séparez par des espaces", "tsInfo": "séparez par des espaces",
"tsp": "c.à.t", "tsp": "c.à.t",
"TUE": "mar",
"Turkish": "turque", "Turkish": "turque",
"Undefined": "Indéfini", "Undefined": "Indéfini",
"unit": "unité", "unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien", "Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne", "Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines", "wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier", "yesterday": "hier",
"yieldQ": "Quantité de rendement", "yieldQ": "Quantité de rendement",
"yieldU": "Unité de rendement", "yieldU": "Unité de rendement",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie", "tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages", "aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette?", "fwr": "pour quelle recette?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES", "prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s", "tmr": "Minuterie %s",
"stop": "Arrêter", "stop": "Arrêter",
@ -288,41 +308,5 @@
"minutes": "minutes", "minutes": "minutes",
"minute": "minute", "minute": "minute",
"dlyDur": "Durée du retard", "dlyDur": "Durée du retard",
"delay": "Retarder", "delay": "Retard"
"notifSetg": "Paramètres de notification",
"tmrRm": "Minuterie retirée",
"delPrst": "Vous êtes sur le point de supprimer %s des préréglages",
"prsts": "Préréglages",
"ttv": "Appuyez pour voir",
"dismissAll": "Rejeter toutes les minuteries",
"dismiss": "Rejeter",
"texp": "%s minuteries ont expiré",
"wDBy": "%1$s a été retardée de %2$s",
"prstTU": "Temps du préréglage mis à jour",
"ccwt": "Cuisinez avec confiance avec des minuteries!",
"gtD": "Aller à la date",
"random": "Aléatoire",
"ystr": "Hier",
"tmrw": "Demain",
"tdy": "Aujourdhui",
"cpy": "copie",
"d": "Jour",
"wk": "Semaine",
"mnth": "Mois",
"calVM": "Mode daffichage du calendrier",
"oAP": "%1$s en cours, %2$s en pause",
"otaw": "Après une semaine",
"otam": "Après un mois",
"otay": "Après un an",
"admp": "Supprimer automatiquement les planifications de repas",
"nvr": "Jamais",
"plsCrt": "Utilisez le bouton + pour en créer une",
"ehwmp": "Mangez sainement grâce aux planifications de repas!",
"selMT": "Sélectionnez le type de repas",
"rstBtn": "RÉINITIALISER",
"add": "Ajouter",
"esgbInfo": "Désactivez cette option si vous avez des problèmes de navigation",
"esgb": "Balayer le bord pour revenir en arrière",
"ksavrInfo": "Empêche lécran de séteindre durant la visualisation dune recette",
"ksavr": "Garder lécran allumé durant laffichage dune recette"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes", "appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes",
"apply": "APPLIQUER", "apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire", "appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE", "aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "août",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Boissons", "Beverages": "Boissons",
"Black": "Noir", "Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre", "Dark": "Sombre",
"db": "Base de données", "db": "Base de données",
"dBtn": "SUPPRIMER", "dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s", "delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s", "delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts", "Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours", "expip": "Exportation en cours",
"expSuc": "Exportation réussie", "expSuc": "Exportation réussie",
"favourites": "Favoris", "favourites": "Favoris",
"February": "février",
"Filipino": "philippine", "Filipino": "philippine",
"Filtered recipes": "Recettes filtrées", "Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq", "fl oz": "oz liq",
"fltr": "Filtre", "fltr": "Filtre",
"Fluid Ounce": "Once liquide", "Fluid Ounce": "Once liquide",
"French": "française", "French": "française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici", "fsList": "Vos recettes favorites sont listées ici",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -106,9 +111,12 @@
"it": "Élément", "it": "Élément",
"Italian": "italienne", "Italian": "italienne",
"Jamaican": "jamaïcaine", "Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise", "Japanese": "japonaise",
"Jewish": "juive", "Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram", "joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER", "kEdit": "CONTINUER",
"Kenyan": "kényane", "Kenyan": "kényane",
"kg": "kg", "kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche", "Loaf": "Miche",
"ltAgo": "il y a longtemps", "ltAgo": "il y a longtemps",
"lunch": "Dîner", "lunch": "Dîner",
"mAgo": "il y a %s mois", "mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux", "Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande", "Meat": "Viande",
"medium": "moyen", "medium": "moyen",
"Mexican": "mexicaine", "Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale", "minimal": "Minimale",
"ml": "ml", "ml": "ml",
"Moderate": "Modéré", "Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine", "newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord", "Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette", "newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette", "noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche", "noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes", "nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie", "nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de rendement", "nwYiU": "Nouvelle unité de rendement",
"October": "octobre",
"OK": "OK", "OK": "OK",
"Oldest first": "La plus ancienne dabord", "Oldest first": "La plus ancienne dabord",
"opts": "Options", "opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau", "Piece": "Morceau",
"pinch": "pincée", "pinch": "pincée",
"planner": "Planificateur de repas", "planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une", "plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise", "Portuguese": "portugaise",
"Poultry": "Volaille", "Poultry": "Volaille",
"Pound": "Livre", "Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes", "recs": "recettes",
"recTitle": "Ma recette saine", "recTitle": "Ma recette saine",
"recU": "mise à jour:", "recU": "mise à jour:",
"req": "%s nécessaire", "req": "%s requis(e)",
"resNF": "Recette introuvable", "resNF": "Recette introuvable",
"rest": "Réinitialiser", "rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories", "restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER", "rst": "REDÉMARRER",
"Russian": "russe", "Russian": "russe",
"Salads": "Salades", "Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces", "Sauces": "Sauces",
"Scottish": "écossaise", "Scottish": "écossaise",
"Seafood": "Fruits de mer", "Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette", "selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher", "ser": "Chercher",
"Serving": "Portion", "Serving": "Portion",
"SET": "DÉFINIR", "SET": "DÉFINIR",
@ -235,6 +250,7 @@
"stick": "barre", "stick": "barre",
"stp": "Étape", "stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes!", "strAdd": "Commencez à ajouter vos recettes!",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard", "sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider", "sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise", "Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à café", "Teaspoon": "Cuillère à café",
"Thai": "thaïlandaise", "Thai": "thaïlandaise",
"Theme": "Thème", "Theme": "Thème",
"THU": "jeu",
"title": "Titre", "title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici", "tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui", "today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s", "triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire", "trnsl": "Traduire",
"trylater": "À essayer plus tard", "trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES?", "trySer": "RECHERCHE DANS TOUTES LES RECETTES?",
"ts": "Étiquettes", "ts": "Étiquettes",
"tsInfo": "séparez par des espaces", "tsInfo": "séparez par des espaces",
"tsp": "c.à.c", "tsp": "c.à.c",
"TUE": "mar",
"Turkish": "turque", "Turkish": "turque",
"Undefined": "Indéfini", "Undefined": "Indéfini",
"unit": "unité", "unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien", "Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne", "Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines", "wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier", "yesterday": "hier",
"yieldQ": "Quantité de rendement", "yieldQ": "Quantité de rendement",
"yieldU": "Unité de rendement", "yieldU": "Unité de rendement",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie", "tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages", "aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette?", "fwr": "pour quelle recette?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES", "prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s", "tmr": "Minuterie %s",
"stop": "Arrêter", "stop": "Arrêter",
@ -288,41 +308,5 @@
"minutes": "minutes", "minutes": "minutes",
"minute": "minute", "minute": "minute",
"dlyDur": "Durée du retard", "dlyDur": "Durée du retard",
"delay": "Retarder", "delay": "Retard"
"notifSetg": "Paramètres de notification",
"tmrRm": "Minuterie retirée",
"delPrst": "Vous êtes sur le point de supprimer %s des préréglages",
"prsts": "Préréglages",
"ttv": "Appuyez pour voir",
"dismissAll": "Rejeter toutes les minuteries",
"dismiss": "Rejeter",
"texp": "%s minuteries ont expiré",
"wDBy": "%1$s a été retardée de %2$s",
"prstTU": "Temps du préréglage mis à jour",
"ccwt": "Cuisinez avec confiance avec des minuterie!",
"gtD": "Aller à la date",
"random": "Aléatoire",
"ystr": "Hier",
"tmrw": "Demain",
"tdy": "Aujourdhui",
"cpy": "copie",
"d": "Jour",
"wk": "Semaine",
"mnth": "Mois",
"calVM": "Mode daffichage du calendrier",
"oAP": "%1$s en cours, %2$s en pause",
"nvr": "Jamais",
"otaw": "Après une semaine",
"otam": "Après un mois",
"otay": "Après un an",
"admp": "Supprimer automatiquement les planifications de repas",
"plsCrt": "Utilisez le bouton + pour en créer une",
"ehwmp": "Mangez sainement grâce aux planifications de repas!",
"selMT": "Sélectionnez le type de repas",
"rstBtn": "RÉINITIALISER",
"add": "Ajouter",
"esgbInfo": "Désactivez cette option si vous avez des problèmes de navigation",
"esgb": "Balayer le bord pour revenir en arrière",
"ksavrInfo": "Empêche lécran de séteindre durant la visualisation dune recette",
"ksavr": "Garder lécran allumé durant laffichage dune recette"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes", "appInfo": "EnRecipes est un livre de cuisine numérique à code source ouvert et respectueux de la vie privée qui vous permet de créer, gérer et partager vos recettes",
"apply": "APPLIQUER", "apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire", "appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE", "aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "août",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Boissons", "Beverages": "Boissons",
"Black": "Noir", "Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre", "Dark": "Sombre",
"db": "Base de données", "db": "Base de données",
"dBtn": "SUPPRIMER", "dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s", "delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s", "delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts", "Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours", "expip": "Exportation en cours",
"expSuc": "Exportation réussie", "expSuc": "Exportation réussie",
"favourites": "Favoris", "favourites": "Favoris",
"February": "février",
"Filipino": "philippine", "Filipino": "philippine",
"Filtered recipes": "Recettes filtrées", "Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq", "fl oz": "oz liq",
"fltr": "Filtre", "fltr": "Filtre",
"Fluid Ounce": "Once liquide", "Fluid Ounce": "Once liquide",
"French": "française", "French": "Française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici", "fsList": "Vos recettes favorites sont listées ici",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -103,12 +108,15 @@
"intf": "Interface", "intf": "Interface",
"invFile": "Fichier invalide", "invFile": "Fichier invalide",
"Irish": "irlandaise", "Irish": "irlandaise",
"it": "Élément %s", "it": "Élément",
"Italian": "italienne", "Italian": "italienne",
"Jamaican": "jamaïcaine", "Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise", "Japanese": "japonaise",
"Jewish": "juive", "Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram", "joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER", "kEdit": "CONTINUER",
"Kenyan": "kényane", "Kenyan": "kényane",
"kg": "kg", "kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche", "Loaf": "Miche",
"ltAgo": "il y a longtemps", "ltAgo": "il y a longtemps",
"lunch": "Déjeuner", "lunch": "Déjeuner",
"mAgo": "il y a %s mois", "mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux", "Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande", "Meat": "Viande",
"medium": "moyen", "medium": "moyen",
"Mexican": "mexicaine", "Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale", "minimal": "Minimale",
"ml": "ml", "ml": "ml",
"Moderate": "Modéré", "Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine", "newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord", "Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette", "newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette", "noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche", "noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes", "nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie", "nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de portion", "nwYiU": "Nouvelle unité de portion",
"October": "octobre",
"OK": "OK", "OK": "OK",
"Oldest first": "La plus ancienne dabord", "Oldest first": "La plus ancienne dabord",
"opts": "Options", "opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau", "Piece": "Morceau",
"pinch": "pincée", "pinch": "pincée",
"planner": "Planificateur de repas", "planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une", "plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise", "Portuguese": "portugaise",
"Poultry": "Volaille", "Poultry": "Volaille",
"Pound": "Livre", "Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes", "recs": "recettes",
"recTitle": "Ma recette saine", "recTitle": "Ma recette saine",
"recU": "mise à jour:", "recU": "mise à jour:",
"req": "%s nécessaire", "req": "%s requis(e)",
"resNF": "Recette introuvable", "resNF": "Recette introuvable",
"rest": "Réinitialiser", "rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories", "restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER", "rst": "REDÉMARRER",
"Russian": "russe", "Russian": "russe",
"Salads": "Salades", "Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces", "Sauces": "Sauces",
"Scottish": "écossaise", "Scottish": "écossaise",
"Seafood": "Fruits de mer", "Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette", "selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher", "ser": "Chercher",
"Serving": "Portion", "Serving": "Portion",
"SET": "DÉFINIR", "SET": "DÉFINIR",
@ -233,8 +248,9 @@
"sru": "Partager la recette en utilisant…", "sru": "Partager la recette en utilisant…",
"stars": "Évaluation étoilée", "stars": "Évaluation étoilée",
"stick": "barre", "stick": "barre",
"stp": "Étape %s", "stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes !", "strAdd": "Commencez à ajouter vos recettes !",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard", "sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider", "sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise", "Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à café", "Teaspoon": "Cuillère à café",
"Thai": "thaïlandaise", "Thai": "thaïlandaise",
"Theme": "Thème", "Theme": "Thème",
"THU": "jeu",
"title": "Titre", "title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici", "tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui", "today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s", "triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire", "trnsl": "Traduire",
"trylater": "À essayer plus tard", "trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES ?", "trySer": "RECHERCHE DANS TOUTES LES RECETTES ?",
"ts": "Étiquettes", "ts": "Étiquettes",
"tsInfo": "séparez par des espaces", "tsInfo": "séparez par des espaces",
"tsp": "c.à.c", "tsp": "c.à.c",
"TUE": "mar",
"Turkish": "turque", "Turkish": "turque",
"Undefined": "Indéfini", "Undefined": "Indéfini",
"unit": "unité", "unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien", "Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne", "Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines", "wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier", "yesterday": "hier",
"yieldQ": "Quantité de portion", "yieldQ": "Quantité de portion",
"yieldU": "Unité de portion", "yieldU": "Unité de portion",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie", "tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages", "aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette ?", "fwr": "pour quelle recette ?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES", "prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s", "tmr": "Minuterie %s",
"stop": "Arrêter", "stop": "Arrêter",
@ -288,44 +308,5 @@
"minutes": "minutes", "minutes": "minutes",
"minute": "minute", "minute": "minute",
"dlyDur": "Durée du retard", "dlyDur": "Durée du retard",
"delay": "Retarder", "delay": "Retard"
"notifSetg": "Paramètres de notification",
"tmrRm": "Minuterie retirée",
"delPrst": "Vous êtes sur le point de supprimer %s des préréglages",
"prsts": "Préréglages",
"wDBy": "%1$s a été retardée de %2$s",
"ttv": "Appuyez pour voir",
"dismissAll": "Rejeter toutes les minuteries",
"dismiss": "Rejeter",
"texp": "%s minuteries ont expiré",
"prstTU": "Temps du préréglage mis à jour",
"ccwt": "Cuisinez avec confiance avec des minuteries !",
"gtD": "Aller à la date",
"random": "Aléatoire",
"ystr": "Hier",
"tmrw": "Demain",
"tdy": "Aujourdhui",
"cpy": "copie",
"d": "Jour",
"wk": "Semaine",
"mnth": "Mois",
"calVM": "Mode daffichage du calendrier",
"oAP": "%1$s en cours, %2$s en pause",
"otaw": "Après une semaine",
"otam": "Après un mois",
"otay": "Après un an",
"admp": "Supprimer automatiquement les planifications de repas",
"nvr": "Jamais",
"plsCrt": "Utilisez le bouton + pour en créer une",
"ehwmp": "Mangez sainement grâce aux planifications de repas !",
"selMT": "Sélectionnez le type de repas",
"rstBtn": "RÉINITIALISER",
"add": "Ajouter",
"ksavr": "Garder lécran allumé durant laffichage dune recette",
"esgbInfo": "Désactivez cette option si vous avez des problèmes de navigation",
"esgb": "Balayer le bord pour revenir en arrière",
"ksavrInfo": "Empêche lécran de séteindre durant la visualisation dune recette",
"sectRm": "Section retiré",
"addSectBtn": "AJOUTER UNE SECTION",
"sect": "Section %s"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "एनरेसिपीज़ एक खुला स्रोत, गोपनीयता-अनुकूल डिजिटल रसोई की किताब है जो आपको अपने व्यंजनों को बनाने, प्रबंधित करने और साझा करने देता है", "appInfo": "एनरेसिपीज़ एक खुला स्रोत, गोपनीयता-अनुकूल डिजिटल रसोई की किताब है जो आपको अपने व्यंजनों को बनाने, प्रबंधित करने और साझा करने देता है",
"apply": "लागू", "apply": "लागू",
"appRst": "एप्लिकेशन पुनरारंभ की आवश्यकता है", "appRst": "एप्लिकेशन पुनरारंभ की आवश्यकता है",
"April": "अप्रैल",
"aStpBtn": "निर्देश जोड़ें", "aStpBtn": "निर्देश जोड़ें",
"August": "अगस्त",
"Barbecue": "बारबेक्यू", "Barbecue": "बारबेक्यू",
"Beverages": "पेय", "Beverages": "पेय",
"Black": "काला", "Black": "काला",
@ -51,6 +53,7 @@
"Dark": "गहरा", "Dark": "गहरा",
"db": "डेटाबेस", "db": "डेटाबेस",
"dBtn": "हटाएँ", "dBtn": "हटाएँ",
"December": "दिसंबर",
"delRecInfo": "आप के बारे में स्थायी रूप से नुस्खा %s को नष्ट करने के लिए कर रहे हैं", "delRecInfo": "आप के बारे में स्थायी रूप से नुस्खा %s को नष्ट करने के लिए कर रहे हैं",
"delRecsInfo": "आप %s को स्थायी रूप से हटाने वाले हैं", "delRecsInfo": "आप %s को स्थायी रूप से हटाने वाले हैं",
"Desserts": "डेसर्ट", "Desserts": "डेसर्ट",
@ -72,12 +75,14 @@
"expip": "निर्यात प्रगति पर है", "expip": "निर्यात प्रगति पर है",
"expSuc": "निर्यात की सफलता", "expSuc": "निर्यात की सफलता",
"favourites": "पसंदीदा", "favourites": "पसंदीदा",
"February": "फ़रवरी",
"Filipino": "filipino", "Filipino": "filipino",
"Filtered recipes": "फ़िल्टर किए गए व्यंजनों", "Filtered recipes": "फ़िल्टर किए गए व्यंजनों",
"fl oz": "द्रव-औंस", "fl oz": "द्रव-औंस",
"fltr": "फ़िल्टर", "fltr": "फ़िल्टर",
"Fluid Ounce": "द्रव-औंस", "Fluid Ounce": "द्रव-औंस",
"French": "फ्रेंच", "French": "फ्रेंच",
"FRI": "शुक्र",
"fsList": "आपकी पसंदीदा रेसिपी यहाँ सूचीबद्ध हैं", "fsList": "आपकी पसंदीदा रेसिपी यहाँ सूचीबद्ध हैं",
"g": "ग्राम", "g": "ग्राम",
"gal": "गैलन", "gal": "गैलन",
@ -103,12 +108,15 @@
"intf": "इंटरफेस", "intf": "इंटरफेस",
"invFile": "अवैध फाइल", "invFile": "अवैध फाइल",
"Irish": "आयरिश", "Irish": "आयरिश",
"it": "मद %s", "it": "मद",
"Italian": "इतालवी", "Italian": "इतालवी",
"Jamaican": "जमैका", "Jamaican": "जमैका",
"January": "जनवरी",
"Japanese": "जापानी", "Japanese": "जापानी",
"Jewish": "यहूदी", "Jewish": "यहूदी",
"joinTG": "टेलीग्राम समूह में शामिल हों", "joinTG": "टेलीग्राम समूह में शामिल हों",
"July": "जुलाई",
"June": "जून",
"kEdit": "संपादन रखें", "kEdit": "संपादन रखें",
"Kenyan": "केन्याई", "Kenyan": "केन्याई",
"kg": "किलोग्राम", "kg": "किलोग्राम",
@ -128,6 +136,8 @@
"lunch": "दोपहर का भोजन", "lunch": "दोपहर का भोजन",
"mAgo": "%s महीने पहले", "mAgo": "%s महीने पहले",
"Main dishes": "मुख्य व्यंजन", "Main dishes": "मुख्य व्यंजन",
"March": "जुलूस",
"May": "मई",
"Meat": "मांस", "Meat": "मांस",
"medium": "मध्यम", "medium": "मध्यम",
"Mexican": "मैक्सिकन", "Mexican": "मैक्सिकन",
@ -137,6 +147,7 @@
"minimal": "कम से कम", "minimal": "कम से कम",
"ml": "मिली लीटर", "ml": "मिली लीटर",
"Moderate": "उदारवादी", "Moderate": "उदारवादी",
"MON": "सोम",
"newCui": "नए भोजन", "newCui": "नए भोजन",
"Newest first": "नवीनतम पहले", "Newest first": "नवीनतम पहले",
"newRec": "नई रेसिपी", "newRec": "नई रेसिपी",
@ -151,8 +162,10 @@
"noRecs": "कोई भी रेसिपी आपकी खोज से मेल नहीं खाती", "noRecs": "कोई भी रेसिपी आपकी खोज से मेल नहीं खाती",
"noRecsInL": "यहां कोई भी रेसिपी आपकी खोज से मेल नहीं खाती है", "noRecsInL": "यहां कोई भी रेसिपी आपकी खोज से मेल नहीं खाती है",
"nos": "नोट्स", "nos": "नोट्स",
"November": "नवंबर",
"nwCat": "नई श्रेणी", "nwCat": "नई श्रेणी",
"nwYiU": "नई उपज इकाई", "nwYiU": "नई उपज इकाई",
"October": "अक्टूबर",
"OK": "ठीक है", "OK": "ठीक है",
"Oldest first": "सबसे पुराना पहले", "Oldest first": "सबसे पुराना पहले",
"opts": "विकल्प", "opts": "विकल्प",
@ -166,7 +179,7 @@
"Piece": "टुकड़ा", "Piece": "टुकड़ा",
"pinch": "chutakee", "pinch": "chutakee",
"planner": "भोजन नियोजक", "planner": "भोजन नियोजक",
"plsAdd": "एक जोड़ने के लिए + बटन का प्रयोग करें", "plsAdd": "एक जोड़ने के लिए प्लस बटन का उपयोग करें",
"Portuguese": "पुर्तगाली", "Portuguese": "पुर्तगाली",
"Poultry": "मुर्गी पालन", "Poultry": "मुर्गी पालन",
"Pound": "पौंड", "Pound": "पौंड",
@ -210,10 +223,12 @@
"rst": "पुनरारंभ", "rst": "पुनरारंभ",
"Russian": "रूसी", "Russian": "रूसी",
"Salads": "सलाद", "Salads": "सलाद",
"SAT": "शनि",
"Sauces": "सॉस", "Sauces": "सॉस",
"Scottish": "स्कॉटिश", "Scottish": "स्कॉटिश",
"Seafood": "समुद्री भोजन", "Seafood": "समुद्री भोजन",
"selRec": "नुस्खा चुनें", "selRec": "नुस्खा चुनें",
"September": "सितंबर",
"ser": "खोज", "ser": "खोज",
"Serving": "सर्विंग", "Serving": "सर्विंग",
"SET": "सेट", "SET": "सेट",
@ -233,8 +248,9 @@
"sru": "शेयर रेसिपी...", "sru": "शेयर रेसिपी...",
"stars": "स्टार रेटिंग", "stars": "स्टार रेटिंग",
"stick": "लाठी", "stick": "लाठी",
"stp": "कदम %s", "stp": "कदम",
"strAdd": "अपने व्यंजनों को जोड़ना शुरू करें!", "strAdd": "अपने व्यंजनों को जोड़ना शुरू करें!",
"SUN": "रवि",
"sVw": "यादृच्छिक नुस्खा देखने के लिए हिलाएं", "sVw": "यादृच्छिक नुस्खा देखने के लिए हिलाएं",
"sVwInfo": "जब आप तय नहीं कर सकते तो आपको क्या खाना बनाना है, यह चुनने में मदद करता है", "sVwInfo": "जब आप तय नहीं कर सकते तो आपको क्या खाना बनाना है, यह चुनने में मदद करता है",
"Swedish": "स्वीडिश", "Swedish": "स्वीडिश",
@ -245,6 +261,7 @@
"Teaspoon": "छोटी चम्मच", "Teaspoon": "छोटी चम्मच",
"Thai": "थाई", "Thai": "थाई",
"Theme": "थीम", "Theme": "थीम",
"THU": "गुरु",
"title": "शीर्षक", "title": "शीर्षक",
"tLInfo": "जिन व्यंजनों को आप बाद में आज़माना चाहते हैं, वे यहाँ सूचीबद्ध हैं", "tLInfo": "जिन व्यंजनों को आप बाद में आज़माना चाहते हैं, वे यहाँ सूचीबद्ध हैं",
"today": "आज", "today": "आज",
@ -255,6 +272,7 @@
"ts": "टैग", "ts": "टैग",
"tsInfo": "रिक्त स्थान के साथ अलग", "tsInfo": "रिक्त स्थान के साथ अलग",
"tsp": "छोटी चम्मच", "tsp": "छोटी चम्मच",
"TUE": "मंगल",
"Turkish": "तुर्की", "Turkish": "तुर्की",
"Undefined": "अपरिभाषित", "Undefined": "अपरिभाषित",
"unit": "इकाई", "unit": "इकाई",
@ -265,67 +283,11 @@
"Vegetarian": "शाकाहारी", "Vegetarian": "शाकाहारी",
"Vietnamese": "वियतनामी", "Vietnamese": "वियतनामी",
"wAgo": "%s हफ्ते पहले", "wAgo": "%s हफ्ते पहले",
"WED": "बुध",
"yesterday": "कल", "yesterday": "कल",
"yieldQ": "उपज की मात्रा", "yieldQ": "उपज की मात्रा",
"yieldU": "उपज इकाई", "yieldU": "उपज इकाई",
"yld": "मान जाना", "yld": "मान जाना",
"buto": "%s में बैकअप लिया गया", "buto": "%s में बैकअप लिया गया",
"sysDefB": "प्रणालीगत चूक + काला", "sysDefB": "प्रणालीगत चूक + काला"
"fwr": "किस विधि के लिए?",
"seconds": "सेकंड",
"hours": "घंटे",
"hour": "घंटा",
"minutes": "मिनटो",
"minute": "मिनट",
"dlyDur": "विलंब अवधि",
"tmrvbrt": "टाइमर वाइब्रेट",
"tmrSnd": "टाइमर की आवाज़",
"aTPrst": "प्रीसेट में जोड़ा गया",
"prstBtn": "प्रीसेट",
"tmr": "टाइमर %s",
"delay": "देरी",
"stop": "रुकें",
"strtBtn": "शुरू",
"ntmr": "नया टाइमर",
"timer": "कुकिंग टाइमर",
"sec": "सेकंड",
"notifSetg": "अधिसूचना सेटिंग्स",
"tmrRm": "टाइमर हटा दिया गया",
"prsts": "प्रीसेट",
"delPrst": "आप प्रीसेट से %s मिटाने वाले हैं",
"ystr": "कल",
"tmrw": "कल",
"tdy": "आज",
"cpy": "कॉपी",
"calVM": "कैलेंडर दृश्य मोड",
"oAP": "%1$s चल रहा है, %2$s रुका हुआ है",
"ttv": "देखने के लिए टैप करें",
"dismissAll": "सभी टाइमर्स खारिज करें",
"dismiss": "खारिज",
"texp": "%s टाइमर समाप्त हो गए",
"wDBy": "%1$s वा %2$s की देरी से",
"prstTU": "प्रीसेट समय अपडेट किया गया",
"ccwt": "टाइमर्स के साथ आत्मविश्वास से पकाएं!",
"gtD": "डेट पर जाएं",
"random": "बेतरतीब",
"esgbInfo": "यदि आपके पास नेविगेशन समस्याएं हैं तो इसे अक्षम करें",
"esgb": "वापस जाने के लिए किनारे से स्वाइप करें",
"ksavrInfo": "नुस्खा देखते समय स्क्रीन को बंद होने से रोकता है",
"ksavr": "रेसिपी देखते समय स्क्रीन को चालू रखें",
"rstBtn": "रीसेट",
"add": "जोड़ना",
"nvr": "कभी नहीँ",
"otaw": "एक सप्ताह से अधिक पुराना",
"otam": "एक महीने से अधिक पुराना",
"otay": "एक वर्ष से अधिक पुराना",
"admp": "भोजन योजनाओं को स्वतः हटाएं",
"plsCrt": "एक बनाने के लिए + बटन का प्रयोग करें",
"ehwmp": "भोजन योजना के साथ स्वस्थ खाओ!",
"selMT": "भोजन का प्रकार चुनें",
"d": "दिन",
"wk": "सप्ताह",
"mnth": "महीना",
"sectRm": "धारा हटा दिया गया",
"addSectBtn": "धारा जोड़ें",
"sect": "भाग %s"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes adalah buku resep digital sumber terbuka, ramah privasi yang memungkinkan anda untuk membuat, mengatur dan berbagi resep", "appInfo": "EnRecipes adalah buku resep digital sumber terbuka, ramah privasi yang memungkinkan anda untuk membuat, mengatur dan berbagi resep",
"apply": "MENERAPKAN", "apply": "MENERAPKAN",
"appRst": "Aplikasi perlu dimulai ulang", "appRst": "Aplikasi perlu dimulai ulang",
"April": "April",
"aStpBtn": "TAMBAH LANGKAH", "aStpBtn": "TAMBAH LANGKAH",
"August": "Agustus",
"Barbecue": "barbekyu", "Barbecue": "barbekyu",
"Beverages": "Minuman", "Beverages": "Minuman",
"Black": "Hitam", "Black": "Hitam",
@ -51,6 +53,7 @@
"Dark": "Gelap", "Dark": "Gelap",
"db": "Basisdata", "db": "Basisdata",
"dBtn": "HAPUS", "dBtn": "HAPUS",
"December": "Desember",
"delRecInfo": "Anda akan menghapus resep %s secara permanen", "delRecInfo": "Anda akan menghapus resep %s secara permanen",
"delRecsInfo": "Anda akan menghapus %s secara permanen", "delRecsInfo": "Anda akan menghapus %s secara permanen",
"Desserts": "Makanan pencuci mulut", "Desserts": "Makanan pencuci mulut",
@ -72,12 +75,14 @@
"expip": "Ekspor sedang berlangsung", "expip": "Ekspor sedang berlangsung",
"expSuc": "Ekspor berhasil", "expSuc": "Ekspor berhasil",
"favourites": "Favorit", "favourites": "Favorit",
"February": "Februari",
"Filipino": "Filipina", "Filipino": "Filipina",
"Filtered recipes": "Resep yang difilter", "Filtered recipes": "Resep yang difilter",
"fl oz": "fl oz", "fl oz": "fl oz",
"fltr": "Saring", "fltr": "Saring",
"Fluid Ounce": "Ons Cairan", "Fluid Ounce": "Ons Cairan",
"French": "Perancis", "French": "Perancis",
"FRI": "JUM",
"fsList": "Resep favorit Anda tercantum di sini", "fsList": "Resep favorit Anda tercantum di sini",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -106,9 +111,12 @@
"it": "Item", "it": "Item",
"Italian": "Italia", "Italian": "Italia",
"Jamaican": "Jamaika", "Jamaican": "Jamaika",
"January": "Januari",
"Japanese": "Jepang", "Japanese": "Jepang",
"Jewish": "Yahudi", "Jewish": "Yahudi",
"joinTG": "Gabung grup Telegram", "joinTG": "Gabung grup Telegram",
"July": "Juli",
"June": "Juni",
"kEdit": "TETAP MENYUNTING", "kEdit": "TETAP MENYUNTING",
"Kenyan": "Kenya", "Kenyan": "Kenya",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Makan siang", "lunch": "Makan siang",
"mAgo": "%s bulan yang lalu", "mAgo": "%s bulan yang lalu",
"Main dishes": "Hidangan utama", "Main dishes": "Hidangan utama",
"March": "Maret",
"May": "Mei",
"Meat": "Daging", "Meat": "Daging",
"medium": "sedang", "medium": "sedang",
"Mexican": "Meksiko", "Mexican": "Meksiko",
@ -137,6 +147,7 @@
"minimal": "paling sedikit", "minimal": "paling sedikit",
"ml": "ml", "ml": "ml",
"Moderate": "Sedang", "Moderate": "Sedang",
"MON": "SEN",
"newCui": "Hidangan baru", "newCui": "Hidangan baru",
"Newest first": "Yang terbaru", "Newest first": "Yang terbaru",
"newRec": "Resep baru", "newRec": "Resep baru",
@ -151,8 +162,10 @@
"noRecs": "Tidak ada resep yang cocok dengan pencarian anda", "noRecs": "Tidak ada resep yang cocok dengan pencarian anda",
"noRecsInL": "Tidak ada resep di sini yang cocok dengan pencarian Anda", "noRecsInL": "Tidak ada resep di sini yang cocok dengan pencarian Anda",
"nos": "Catatan-catatan", "nos": "Catatan-catatan",
"November": "November",
"nwCat": "Kategori baru", "nwCat": "Kategori baru",
"nwYiU": "Satuan hasil baru", "nwYiU": "Satuan hasil baru",
"October": "Oktober",
"OK": "Baik", "OK": "Baik",
"Oldest first": "Yang terlama", "Oldest first": "Yang terlama",
"opts": "Pilihan", "opts": "Pilihan",
@ -210,10 +223,12 @@
"rst": "Mulai ulang", "rst": "Mulai ulang",
"Russian": "Russia", "Russian": "Russia",
"Salads": "Salad", "Salads": "Salad",
"SAT": "SAB",
"Sauces": "Saus", "Sauces": "Saus",
"Scottish": "Skotlandia", "Scottish": "Skotlandia",
"Seafood": "Hidangan laut", "Seafood": "Hidangan laut",
"selRec": "Pilih resep", "selRec": "Pilih resep",
"September": "September",
"ser": "Cari", "ser": "Cari",
"Serving": "Penyajian", "Serving": "Penyajian",
"SET": "ATUR", "SET": "ATUR",
@ -235,6 +250,7 @@
"stick": "batang", "stick": "batang",
"stp": "Langkah", "stp": "Langkah",
"strAdd": "Mulai tambahkan resep Anda!", "strAdd": "Mulai tambahkan resep Anda!",
"SUN": "MIN",
"sVw": "Kocok untuk melihat resep acak", "sVw": "Kocok untuk melihat resep acak",
"sVwInfo": "Membantu anda untuk memilih apa yang dimasak ketika anda tidak bisa menentukan", "sVwInfo": "Membantu anda untuk memilih apa yang dimasak ketika anda tidak bisa menentukan",
"Swedish": "Swedia", "Swedish": "Swedia",
@ -245,6 +261,7 @@
"Teaspoon": "Sendok teh", "Teaspoon": "Sendok teh",
"Thai": "Thailand", "Thai": "Thailand",
"Theme": "Tema", "Theme": "Tema",
"THU": "KAM",
"title": "Judul", "title": "Judul",
"tLInfo": "Resep yang ingin Anda coba nanti tercantum di sini", "tLInfo": "Resep yang ingin Anda coba nanti tercantum di sini",
"today": "hari ini", "today": "hari ini",
@ -255,42 +272,23 @@
"ts": "Tag", "ts": "Tag",
"tsInfo": "pisahkan dengan spasi", "tsInfo": "pisahkan dengan spasi",
"tsp": "sdt", "tsp": "sdt",
"TUE": "SEL",
"Turkish": "Turki", "Turkish": "Turki",
"Undefined": "Belum terdefinisi", "Undefined": "Belum terdefinisi",
"unit": "Satuan", "unit": "Satuan",
"Unit": "Satuan", "Unit": "Satuan",
"unsaved": "Perubahan yang belum disimpan", "unsaved": "Perubahan yang belum disimpan",
"untRec": "Resep tanpa judul", "untRec": "Resep tanpa judul",
"Vegan": "vegan", "Vegan": "Vegan",
"Vegetarian": "vegetarian", "Vegetarian": "Vegetarian",
"Vietnamese": "Vietnam", "Vietnamese": "Vietnam",
"wAgo": "%s minggu yang lalu", "wAgo": "%s minggu yang lalu",
"WED": "RAB",
"yesterday": "kemarin", "yesterday": "kemarin",
"yieldQ": "Kuantitas hasil", "yieldQ": "Kuantitas hasil",
"yieldU": "Satuan hasil", "yieldU": "Satuan hasil",
"yld": "Menghasilkan", "yld": "Menghasilkan",
"buto": "Didukung ke %s", "buto": "Didukung ke %s",
"sysDefB": "Default sistem + Hitam", "sysDefB": "Default sistem + Hitam",
"sec": "s", "sec": "s"
"strtBtn": "MULAI",
"ntmr": "Timer baru",
"timer": "Timer Memasak",
"seconds": "detik",
"hours": "jam",
"hour": "jam",
"minutes": "menit",
"minute": "menit",
"dlyDur": "Durasi penundaan",
"tmrvbrt": "Timer bergetar",
"tmrSnd": "Suara timer",
"aTPrst": "Ditambahkan ke preset",
"fwr": "untuk resep yang mana?",
"prstBtn": "PRESET",
"tmr": "Timer %s",
"delay": "Menunda",
"stop": "Berhenti",
"prsts": "Preset",
"delPrst": "Anda akan menghapus %s dari presets",
"tmrRm": "Timer dihapus",
"notifSetg": "Pengaturan notifikasi"
} }

View file

@ -17,8 +17,10 @@
"Appetizers": "Antipasti", "Appetizers": "Antipasti",
"appInfo": "EnRecipes è un ricettario digitale a codice aperto e rispettoso della riservatezza che ti consente di creare, gestire e condividere le tue ricette", "appInfo": "EnRecipes è un ricettario digitale a codice aperto e rispettoso della riservatezza che ti consente di creare, gestire e condividere le tue ricette",
"apply": "APPLICA", "apply": "APPLICA",
"appRst": "Riavvio dellapp necessario", "appRst": "Riavvio dell'app necessario",
"April": "aprile",
"aStpBtn": "AGGIUNGI UN PASSO", "aStpBtn": "AGGIUNGI UN PASSO",
"August": "agosto",
"Barbecue": "Grigliata", "Barbecue": "Grigliata",
"Beverages": "Bevande", "Beverages": "Bevande",
"Black": "Nero", "Black": "Nero",
@ -51,6 +53,7 @@
"Dark": "Scuro", "Dark": "Scuro",
"db": "Banca dati", "db": "Banca dati",
"dBtn": "ELIMINA", "dBtn": "ELIMINA",
"December": "dicembre",
"delRecInfo": "Stai per eliminare definitivamente la ricetta %s", "delRecInfo": "Stai per eliminare definitivamente la ricetta %s",
"delRecsInfo": "Stai per eliminare definitivamente %s", "delRecsInfo": "Stai per eliminare definitivamente %s",
"Desserts": "Dolci", "Desserts": "Dolci",
@ -72,12 +75,14 @@
"expip": "Esportazione in corso", "expip": "Esportazione in corso",
"expSuc": "Exportation réussie", "expSuc": "Exportation réussie",
"favourites": "Preferiti", "favourites": "Preferiti",
"February": "febbraio",
"Filipino": "filippina", "Filipino": "filippina",
"Filtered recipes": "Ricette filtrate", "Filtered recipes": "Ricette filtrate",
"fl oz": "fl oz", "fl oz": "fl oz",
"fltr": "Filtro", "fltr": "Filtro",
"Fluid Ounce": "Oncia liquida", "Fluid Ounce": "Oncia liquida",
"French": "francese", "French": "francese",
"FRI": "ven",
"fsList": "Le tue ricette preferite sono elencate qui", "fsList": "Le tue ricette preferite sono elencate qui",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -106,9 +111,12 @@
"it": "Voce", "it": "Voce",
"Italian": "italiana", "Italian": "italiana",
"Jamaican": "giamaicana", "Jamaican": "giamaicana",
"January": "gennaio",
"Japanese": "giapponese", "Japanese": "giapponese",
"Jewish": "ebraica", "Jewish": "ebraica",
"joinTG": "Unisciti al gruppo Telegram", "joinTG": "Unisciti al gruppo Telegram",
"July": "luglio",
"June": "giugno",
"kEdit": "CONTINUA A MODIFICARE", "kEdit": "CONTINUA A MODIFICARE",
"Kenyan": "keniota", "Kenyan": "keniota",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Pranzo", "lunch": "Pranzo",
"mAgo": "%s mesi fa", "mAgo": "%s mesi fa",
"Main dishes": "Piatti principali", "Main dishes": "Piatti principali",
"March": "marzo",
"May": "maggio",
"Meat": "Carne", "Meat": "Carne",
"medium": "medio", "medium": "medio",
"Mexican": "messicana", "Mexican": "messicana",
@ -137,6 +147,7 @@
"minimal": "Minima", "minimal": "Minima",
"ml": "ml", "ml": "ml",
"Moderate": "Moderato", "Moderate": "Moderato",
"MON": "lun",
"newCui": "Nuova cucina", "newCui": "Nuova cucina",
"Newest first": "Prima la più ricente", "Newest first": "Prima la più ricente",
"newRec": "Nuova ricetta", "newRec": "Nuova ricetta",
@ -151,8 +162,10 @@
"noRecs": "Nessuna ricetta corrisponde alla tua ricerca", "noRecs": "Nessuna ricetta corrisponde alla tua ricerca",
"noRecsInL": "Nessuna delle ricette qui corrisponde alla tua ricerca", "noRecsInL": "Nessuna delle ricette qui corrisponde alla tua ricerca",
"nos": "Note", "nos": "Note",
"November": "novembre",
"nwCat": "Nuova categoria", "nwCat": "Nuova categoria",
"nwYiU": "Nuova unità di resa", "nwYiU": "Nuova unità di resa",
"October": "ottobre",
"OK": "OK", "OK": "OK",
"Oldest first": "Prima la più vecchia", "Oldest first": "Prima la più vecchia",
"opts": "Opzioni", "opts": "Opzioni",
@ -166,7 +179,7 @@
"Piece": "Pezzo", "Piece": "Pezzo",
"pinch": "pizzico", "pinch": "pizzico",
"planner": "Pianificatore di pasti", "planner": "Pianificatore di pasti",
"plsAdd": "Usa il pulsante + per aggiungerne uno", "plsAdd": "Usa il pulsante più per aggiungerne uno",
"Portuguese": "portoghese", "Portuguese": "portoghese",
"Poultry": "Pollame", "Poultry": "Pollame",
"Pound": "Libbra", "Pound": "Libbra",
@ -187,33 +200,35 @@
"recs": "ricette", "recs": "ricette",
"recTitle": "La mia ricetta sana", "recTitle": "La mia ricetta sana",
"recU": "Aggiornate:", "recU": "Aggiornate:",
"req": "%s necessario", "req": "%s richiesto",
"resNF": "Ricetta non trovata", "resNF": "Ricetta non trovata",
"rest": "Ripristina", "rest": "Ripristina",
"restCatL": "Reimposta lelenco delle categorie", "restCatL": "Reimposta l'elenco delle categorie",
"restCuiL": "Reimposta lelenco cucina", "restCuiL": "Reimposta l'elenco cucina",
"restDone": "Reimpostazione eseguito", "restDone": "Reimpostazione eseguito",
"restInfo": "Il ripristino di un elenco eliminerà le voci create dallutente e ripristinerà le voci predefinite. Le ricette esistenti non saranno interessate.", "restInfo": "Il ripristino di un elenco eliminerà le voci create dall'utente e ripristinerà le voci predefinite. Le ricette esistenti non saranno interessate.",
"restUL": "Reimposta lelenco delle unità", "restUL": "Reimposta l'elenco delle unità",
"restYUL": "Reimposta lelenco delle unità di resa", "restYUL": "Reimposta l'elenco delle unità di resa",
"Rice": "Riso", "Rice": "Riso",
"rmCatInfo": "Stai per rimuovere %s dallelenco delle categorie", "rmCatInfo": "Stai per rimuovere %s dall'elenco delle categorie",
"rmCmb": "Combinazione rimossa", "rmCmb": "Combinazione rimossa",
"rmCuiInfo": "Stai per rimuovere %s dallelenco della cucina", "rmCuiInfo": "Stai per rimuovere %s dall'elenco della cucina",
"rmIng": "Ingrediente rimosso", "rmIng": "Ingrediente rimosso",
"rmIns": "Istruzione rimossa", "rmIns": "Istruzione rimossa",
"rmN": "Nota rimossa", "rmN": "Nota rimossa",
"rmUInfo": "Stai per rimuovere %s dallelenco delle unità", "rmUInfo": "Stai per rimuovere %s dall'elenco delle unità",
"rmYUInfo": "Stai per rimuovere %s dallelenco delle unità di rendimento", "rmYUInfo": "Stai per rimuovere %s dall'elenco delle unità di rendimento",
"Roll": "Rotolo", "Roll": "Rotolo",
"rp": "Rimuovi la foto", "rp": "Rimuovi la foto",
"rst": "RIAVVIA", "rst": "RIAVVIA",
"Russian": "russa", "Russian": "russa",
"Salads": "Insalate", "Salads": "Insalate",
"SAT": "sab",
"Sauces": "Salse", "Sauces": "Salse",
"Scottish": "scozzese", "Scottish": "scozzese",
"Seafood": "Frutti di mare", "Seafood": "Frutti di mare",
"selRec": "Seleziona una ricetta", "selRec": "Seleziona una ricetta",
"September": "settembre",
"ser": "Cerca", "ser": "Cerca",
"Serving": "Porzione", "Serving": "Porzione",
"SET": "IMPOSTA", "SET": "IMPOSTA",
@ -235,6 +250,7 @@
"stick": "bastone", "stick": "bastone",
"stp": "Passo", "stp": "Passo",
"strAdd": "Inizia ad aggiungere le tue ricette!", "strAdd": "Inizia ad aggiungere le tue ricette!",
"SUN": "dom",
"sVw": "Scuoti per visualizzare una ricetta casuale", "sVw": "Scuoti per visualizzare una ricetta casuale",
"sVwInfo": "Ti aiuta a scegliere cosa cucinare quando non puoi decidere", "sVwInfo": "Ti aiuta a scegliere cosa cucinare quando non puoi decidere",
"Swedish": "svedese", "Swedish": "svedese",
@ -245,16 +261,18 @@
"Teaspoon": "Cucchiaino", "Teaspoon": "Cucchiaino",
"Thai": "tailandese", "Thai": "tailandese",
"Theme": "Tema", "Theme": "Tema",
"THU": "gio",
"title": "Titolo", "title": "Titolo",
"tLInfo": "Le ricette che vuoi provare in seguito sono elencate qui", "tLInfo": "Le ricette che vuoi provare in seguito sono elencate qui",
"today": "oggi", "today": "oggi",
"triedInfo": "Hai provato questa ricetta %s", "triedInfo": "Hai provato questa ricetta %s",
"trnsl": "Traduci", "trnsl": "Traduci",
"trylater": "Da provare più tardi", "trylater": "Prova più tardi",
"trySer": "CERCARE IN TUTTE LE RICETTE?", "trySer": "CERCARE IN TUTTE LE RICETTE?",
"ts": "Etichette", "ts": "Etichette",
"tsInfo": "separa con spazi", "tsInfo": "separa con spazi",
"tsp": "cucchiaino", "tsp": "cucchiaino",
"TUE": "mar",
"Turkish": "turca", "Turkish": "turca",
"Undefined": "Indefinito", "Undefined": "Indefinito",
"unit": "unità", "unit": "unità",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetariano", "Vegetarian": "Vegetariano",
"Vietnamese": "vietnamita", "Vietnamese": "vietnamita",
"wAgo": "%s settimane fa", "wAgo": "%s settimane fa",
"WED": "mer",
"yesterday": "ieri", "yesterday": "ieri",
"yieldQ": "Quantità di resa", "yieldQ": "Quantità di resa",
"yieldU": "Unità di resa", "yieldU": "Unità di resa",
@ -272,13 +291,14 @@
"buto": "Backup salvato in %s", "buto": "Backup salvato in %s",
"sysDefB": "Predefinito del sistema + Nero", "sysDefB": "Predefinito del sistema + Nero",
"tmr": "Contaminuti %s", "tmr": "Contaminuti %s",
"strtBtn": "AVVIA", "strtBtn": "AVVIO",
"ntmr": "Nuovo contaminuti", "ntmr": "Nuovo contaminuti",
"timer": "Contaminuti di cottura", "timer": "Contaminuti di cottura",
"tmrvbrt": "Vibrazione contaminuti", "tmrvbrt": "Vibrazione contaminuti",
"tmrSnd": "Suono del contaminuti", "tmrSnd": "Suono del contaminuti",
"aTPrst": "Aggiunto alle preimpostazioni", "aTPrst": "Aggiunto alle preimpostazioni",
"fwr": "per quale ricetta?", "fwr": "per quale ricetta?",
"tmrPrsts": "Preimpostazioni del contaminuti",
"prstBtn": "Preimpostazioni", "prstBtn": "Preimpostazioni",
"stop": "Ferma", "stop": "Ferma",
"sec": "s", "sec": "s",
@ -288,41 +308,5 @@
"minutes": "minuti", "minutes": "minuti",
"minute": "minuto", "minute": "minuto",
"dlyDur": "Durata del ritardo", "dlyDur": "Durata del ritardo",
"delay": "Ritarda", "delay": "Ritardo"
"notifSetg": "Impostazioni di notifica",
"tmrRm": "Contaminuti rimosso",
"delPrst": "Stai per eliminare %s dalle preimpostazioni",
"prsts": "Preimpostazioni",
"ttv": "Tocca per visualizzare",
"dismissAll": "Disattiva tutti i contaminuti",
"dismiss": "Diattiva",
"texp": "%s contaminuti scaduti",
"wDBy": "%1$s è stato ritardato di %2$s",
"prstTU": "Tempo preimpostato aggiornato",
"ccwt": "Cucina con fiducia con i contaminuti!",
"gtD": "Vai alla data",
"random": "Casuale",
"ystr": "Ieri",
"tmrw": "Domani",
"tdy": "Oggi",
"cpy": "copia",
"d": "Giorno",
"wk": "Settimana",
"mnth": "Mese",
"calVM": "Modalità di visualizzazione calendario",
"oAP": "%1$s in corso, %2$s in pausa",
"otaw": "Dopo una settimana",
"otam": "Dopo un mese",
"otay": "Dopo un anno",
"nvr": "Mai",
"admp": "Elimina automaticamente i piani pasto",
"plsCrt": "Usa il pulsante + per crearne uno",
"ehwmp": "Mangia sano con i piani dei pasti!",
"selMT": "Seleziona il tipo di pasto",
"rstBtn": "RIPRISTINA",
"add": "Aggiungi",
"esgbInfo": "Disabilita questa opzione se hai problemi di navigazione",
"esgb": "Scorri sul bordo per tornare indietro",
"ksavrInfo": "Impedisce che lo schermo si spenga durante la visualizzazione di una ricetta",
"ksavr": "Mantieni lo schermo attivo durante la visualizzazione di una ricetta"
} }

View file

@ -12,13 +12,14 @@
"American": "アメリカ料理", "American": "アメリカ料理",
"aNBtn": "新しく追加", "aNBtn": "新しく追加",
"aNoBtn": "メモを追加", "aNoBtn": "メモを追加",
"app.name": "EnRecipes",
"appCrd": "EnRecipesから共有されました。F-DroidかIzzyOnDroidかPlayストアからダウンロード出来ます。", "appCrd": "EnRecipesから共有されました。F-DroidかIzzyOnDroidかPlayストアからダウンロード出来ます。",
"Appetizers": "前菜", "Appetizers": "前菜",
"appInfo": "EnRecipesはレシピを作成・管理・共有することができる、オープンソースでプライバシーに配慮したデジタル料理本です", "appInfo": "EnRecipesはレシピを作成・管理・共有することができる、オープンソースでプライバシーに配慮したデジタル料理本です",
"apply": "適用する", "apply": "適用する",
"appRst": "アプリの再起動が必要", "appRst": "アプリの再起動が必要",
"April": "4月",
"aStpBtn": "手順を追加", "aStpBtn": "手順を追加",
"August": "8月",
"Barbecue": "キャンプ料理", "Barbecue": "キャンプ料理",
"Beverages": "飲物", "Beverages": "飲物",
"Black": "黒", "Black": "黒",
@ -51,6 +52,7 @@
"Dark": "ダーク", "Dark": "ダーク",
"db": "データベース", "db": "データベース",
"dBtn": "削除", "dBtn": "削除",
"December": "12月",
"delRecInfo": "レシピ %s を削除しようとしています", "delRecInfo": "レシピ %s を削除しようとしています",
"delRecsInfo": "%s 件のレシピを削除しようとしています", "delRecsInfo": "%s 件のレシピを削除しようとしています",
"Desserts": "デザート", "Desserts": "デザート",
@ -67,17 +69,18 @@
"editRec": "レシピを編集する", "editRec": "レシピを編集する",
"Egyptian": "エジプト料理", "Egyptian": "エジプト料理",
"English": "イングランド料理", "English": "イングランド料理",
"EnRecipes": "EnRecipes",
"expBu": "バックアップをエクスポート", "expBu": "バックアップをエクスポート",
"expip": "エクスポートを実行中", "expip": "エクスポートを実行中",
"expSuc": "エクスポートに成功", "expSuc": "エクスポートに成功",
"favourites": "お気に入り", "favourites": "お気に入り",
"February": "2月",
"Filipino": "フィリピン料理", "Filipino": "フィリピン料理",
"Filtered recipes": "絞り込み結果", "Filtered recipes": "絞り込み結果",
"fl oz": "液量オンス", "fl oz": "液量オンス",
"fltr": "絞り込み", "fltr": "絞り込み",
"Fluid Ounce": "液量オンス", "Fluid Ounce": "液量オンス",
"French": "フランス料理", "French": "フランス料理",
"FRI": "金",
"fsList": "お気に入りのレシピはここに表示されます", "fsList": "お気に入りのレシピはここに表示されます",
"g": "g", "g": "g",
"gal": "ガロン", "gal": "ガロン",
@ -104,9 +107,12 @@
"Irish": "アイルランド料理", "Irish": "アイルランド料理",
"Italian": "イタリア料理", "Italian": "イタリア料理",
"Jamaican": "ジャマイカ料理", "Jamaican": "ジャマイカ料理",
"January": "1月",
"Japanese": "和食", "Japanese": "和食",
"Jewish": "ユダヤ料理", "Jewish": "ユダヤ料理",
"joinTG": "Telegramグループに参加", "joinTG": "Telegramグループに参加",
"July": "7月",
"June": "6月",
"kEdit": "編集を続ける", "kEdit": "編集を続ける",
"Kenyan": "ケニア料理", "Kenyan": "ケニア料理",
"kg": "kg", "kg": "kg",
@ -124,6 +130,8 @@
"lunch": "昼食", "lunch": "昼食",
"mAgo": "%s か月前", "mAgo": "%s か月前",
"Main dishes": "主菜", "Main dishes": "主菜",
"March": "3月",
"May": "5月",
"Meat": "肉料理", "Meat": "肉料理",
"Mexican": "メキシコ料理", "Mexican": "メキシコ料理",
"mg": "mg", "mg": "mg",
@ -132,6 +140,7 @@
"minimal": "最小", "minimal": "最小",
"ml": "ml", "ml": "ml",
"Moderate": "普通", "Moderate": "普通",
"MON": "月",
"newCui": "新しいジャンル", "newCui": "新しいジャンル",
"Newest first": "新しい順", "Newest first": "新しい順",
"newRec": "新しいレシピ", "newRec": "新しいレシピ",
@ -145,8 +154,10 @@
"noRecs": "検索に一致するレシピがありません", "noRecs": "検索に一致するレシピがありません",
"noRecsInL": "検索に一致するレシピが見つかりませんでした", "noRecsInL": "検索に一致するレシピが見つかりませんでした",
"nos": "メモ", "nos": "メモ",
"November": "11月",
"nwCat": "新しいカテゴリー", "nwCat": "新しいカテゴリー",
"nwYiU": "新しい仕上がり単位", "nwYiU": "新しい仕上がり単位",
"October": "10月",
"OK": "OK", "OK": "OK",
"Oldest first": "古いもの順", "Oldest first": "古いもの順",
"opts": "オプション", "opts": "オプション",
@ -202,10 +213,12 @@
"rst": "再起動", "rst": "再起動",
"Russian": "ロシア料理", "Russian": "ロシア料理",
"Salads": "サラダ", "Salads": "サラダ",
"SAT": "土",
"Sauces": "ソース", "Sauces": "ソース",
"Scottish": "スコットランド料理", "Scottish": "スコットランド料理",
"Seafood": "シーフード", "Seafood": "シーフード",
"selRec": "レシピを選択", "selRec": "レシピを選択",
"September": "9月",
"ser": "検索", "ser": "検索",
"Serving": "人前", "Serving": "人前",
"SET": "設定", "SET": "設定",
@ -225,6 +238,7 @@
"stars": "星評価", "stars": "星評価",
"stp": "作り方", "stp": "作り方",
"strAdd": "レシピを追加しましょう!", "strAdd": "レシピを追加しましょう!",
"SUN": "日",
"sVw": "振ってランダムなレシピを表示", "sVw": "振ってランダムなレシピを表示",
"sVwInfo": "何を作るか決められないときに使います", "sVwInfo": "何を作るか決められないときに使います",
"Swedish": "スウェーデン料理", "Swedish": "スウェーデン料理",
@ -235,6 +249,7 @@
"Teaspoon": "小さじ", "Teaspoon": "小さじ",
"Thai": "タイ料理", "Thai": "タイ料理",
"Theme": "テーマ", "Theme": "テーマ",
"THU": "木",
"title": "タイトル", "title": "タイトル",
"tLInfo": "あとで試したいレシピはここに並びます", "tLInfo": "あとで試したいレシピはここに並びます",
"today": "今日", "today": "今日",
@ -245,6 +260,7 @@
"ts": "タグ", "ts": "タグ",
"tsInfo": "スペースで区切ってください", "tsInfo": "スペースで区切ってください",
"tsp": "小さじ", "tsp": "小さじ",
"TUE": "火",
"Turkish": "トルコ料理", "Turkish": "トルコ料理",
"unit": "個", "unit": "個",
"Unit": "単位", "Unit": "単位",
@ -254,6 +270,7 @@
"Vegetarian": "ベジタリアン", "Vegetarian": "ベジタリアン",
"Vietnamese": "ベトナム料理", "Vietnamese": "ベトナム料理",
"wAgo": "%s 週前", "wAgo": "%s 週前",
"WED": "水",
"yesterday": "昨日", "yesterday": "昨日",
"yieldQ": "仕上がり分量", "yieldQ": "仕上がり分量",
"yieldU": "仕上がり分量の単位", "yieldU": "仕上がり分量の単位",
@ -270,6 +287,5 @@
"it": "材料", "it": "材料",
"small": "小", "small": "小",
"large": "大", "large": "大",
"medium": "中", "medium": "中"
"sec": "s"
} }

1
app/i18n/kn.json Normal file
View file

@ -0,0 +1 @@
{}

View file

@ -18,7 +18,9 @@
"appInfo": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ സൃഷ്ടിക്കാനും നിയന്ത്രിക്കാനും പങ്കിടാനും അനുവദിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ്, സ്വകാര്യത കേന്ദ്രീകരിച്ച ഡിജിറ്റൽ പാചകപുസ്തകമാണ് എന്റെരെസിപീസ്", "appInfo": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ സൃഷ്ടിക്കാനും നിയന്ത്രിക്കാനും പങ്കിടാനും അനുവദിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ്, സ്വകാര്യത കേന്ദ്രീകരിച്ച ഡിജിറ്റൽ പാചകപുസ്തകമാണ് എന്റെരെസിപീസ്",
"apply": "പ്രയോഗിക്കുക", "apply": "പ്രയോഗിക്കുക",
"appRst": "അപ്ലിക്കേഷൻ പുനരാരംഭിക്കൽ ആവശ്യമാണ്", "appRst": "അപ്ലിക്കേഷൻ പുനരാരംഭിക്കൽ ആവശ്യമാണ്",
"April": "ഏപ്രിൽ",
"aStpBtn": "നിർദ്ദേശം ചേർക്കുക", "aStpBtn": "നിർദ്ദേശം ചേർക്കുക",
"August": "ഓഗസ്റ്റ്",
"Barbecue": "ബാർബിക്യൂ", "Barbecue": "ബാർബിക്യൂ",
"Beverages": "പാനീയങ്ങൾ", "Beverages": "പാനീയങ്ങൾ",
"Black": "കറുപ്പ്", "Black": "കറുപ്പ്",
@ -51,6 +53,7 @@
"Dark": "ഇരുണ്ടത്", "Dark": "ഇരുണ്ടത്",
"db": "ഡാറ്റാബേസ്", "db": "ഡാറ്റാബേസ്",
"dBtn": "ഇല്ലാതാക്കുക", "dBtn": "ഇല്ലാതാക്കുക",
"December": "ഡിസംബർ",
"delRecInfo": "%s പാചകക്കുറിപ്പ് നിങ്ങൾ ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു", "delRecInfo": "%s പാചകക്കുറിപ്പ് നിങ്ങൾ ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു",
"delRecsInfo": "നിങ്ങൾ %s ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു", "delRecsInfo": "നിങ്ങൾ %s ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു",
"Desserts": "മധുരപലഹാരങ്ങൾ", "Desserts": "മധുരപലഹാരങ്ങൾ",
@ -72,12 +75,14 @@
"expip": "കയറ്റുമതി പുരോഗതിയിലാണ്", "expip": "കയറ്റുമതി പുരോഗതിയിലാണ്",
"expSuc": "കയറ്റുമതി വിജയം", "expSuc": "കയറ്റുമതി വിജയം",
"favourites": "പ്രിയങ്കരങ്ങൾ", "favourites": "പ്രിയങ്കരങ്ങൾ",
"February": "ഫെബ്രുവരി",
"Filipino": "ഫിലിപ്പിനോ", "Filipino": "ഫിലിപ്പിനോ",
"Filtered recipes": "ഫിൽട്ടർ ചെയ്ത പാചകക്കുറിപ്പുകൾ", "Filtered recipes": "ഫിൽട്ടർ ചെയ്ത പാചകക്കുറിപ്പുകൾ",
"fl oz": "ഫ്ലൂയിഡ് un ൺസ്", "fl oz": "ഫ്ലൂയിഡ് un ൺസ്",
"fltr": "ഫിൽട്ടർ ചെയ്യുക", "fltr": "ഫിൽട്ടർ ചെയ്യുക",
"Fluid Ounce": "ഫ്ലൂയിഡ് un ൺസ്", "Fluid Ounce": "ഫ്ലൂയിഡ് un ൺസ്",
"French": "ഫ്രഞ്ച്", "French": "ഫ്രഞ്ച്",
"FRI": "വെള്ളി",
"fsList": "നിങ്ങളുടെ പ്രിയപ്പെട്ട പാചകക്കുറിപ്പുകൾ ഇവിടെ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്", "fsList": "നിങ്ങളുടെ പ്രിയപ്പെട്ട പാചകക്കുറിപ്പുകൾ ഇവിടെ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്",
"g": "ഗ്രാം", "g": "ഗ്രാം",
"gal": "ഗാലൺ", "gal": "ഗാലൺ",
@ -103,12 +108,15 @@
"intf": "ഇന്റർഫേസ്", "intf": "ഇന്റർഫേസ്",
"invFile": "അസാധുവായ ഫയൽ", "invFile": "അസാധുവായ ഫയൽ",
"Irish": "ഐറിഷ്", "Irish": "ഐറിഷ്",
"it": "ഇനം %s", "it": "ഇനം",
"Italian": "ഇറ്റാലിയൻ", "Italian": "ഇറ്റാലിയൻ",
"Jamaican": "ജമൈക്കൻ", "Jamaican": "ജമൈക്കൻ",
"January": "ജനുവരി",
"Japanese": "ജാപ്പനീസ്", "Japanese": "ജാപ്പനീസ്",
"Jewish": "ജൂതൻ", "Jewish": "ജൂതൻ",
"joinTG": "ടെലിഗ്രാം ഗ്രൂപ്പിൽ ചേരുക", "joinTG": "ടെലിഗ്രാം ഗ്രൂപ്പിൽ ചേരുക",
"July": "ജൂലൈ",
"June": "ജൂൺ",
"kEdit": "എഡിറ്റിംഗ് തുടരുക", "kEdit": "എഡിറ്റിംഗ് തുടരുക",
"Kenyan": "കെനിയൻ", "Kenyan": "കെനിയൻ",
"kg": "കി. ഗ്രാം", "kg": "കി. ഗ്രാം",
@ -128,6 +136,8 @@
"lunch": "ഉച്ചഭക്ഷണം", "lunch": "ഉച്ചഭക്ഷണം",
"mAgo": "%s മാസം മുമ്പ്", "mAgo": "%s മാസം മുമ്പ്",
"Main dishes": "പ്രധാന വിഭവങ്ങൾ", "Main dishes": "പ്രധാന വിഭവങ്ങൾ",
"March": "മാർച്ച്",
"May": "മെയ്",
"Meat": "മാംസം", "Meat": "മാംസം",
"medium": "ഇടത്തരം", "medium": "ഇടത്തരം",
"Mexican": "മെക്സിക്കൻ", "Mexican": "മെക്സിക്കൻ",
@ -137,6 +147,7 @@
"minimal": "കുറഞ്ഞത്", "minimal": "കുറഞ്ഞത്",
"ml": "മില്ലി", "ml": "മില്ലി",
"Moderate": "മിതത്വം", "Moderate": "മിതത്വം",
"MON": "തിങ്കൾ",
"newCui": "പുതിയ പാചകരീതി", "newCui": "പുതിയ പാചകരീതി",
"Newest first": "ആദ്യത്തെ പുതിയത്", "Newest first": "ആദ്യത്തെ പുതിയത്",
"newRec": "പുതിയ പാചകക്കുറിപ്പ്", "newRec": "പുതിയ പാചകക്കുറിപ്പ്",
@ -151,8 +162,10 @@
"noRecs": "പാചകക്കുറിപ്പുകളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല", "noRecs": "പാചകക്കുറിപ്പുകളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല",
"noRecsInL": "ഇവിടെയുള്ള പാചകങ്ങളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല", "noRecsInL": "ഇവിടെയുള്ള പാചകങ്ങളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല",
"nos": "കുറിപ്പുകൾ", "nos": "കുറിപ്പുകൾ",
"November": "നവംബർ",
"nwCat": "പുതിയ വിഭാഗം", "nwCat": "പുതിയ വിഭാഗം",
"nwYiU": "പുതിയ വിളവ് യൂണിറ്റ്", "nwYiU": "പുതിയ വിളവ് യൂണിറ്റ്",
"October": "ഒക്ടോബർ",
"OK": "ശരി", "OK": "ശരി",
"Oldest first": "ആദ്യം പഴയത്", "Oldest first": "ആദ്യം പഴയത്",
"opts": "ഓപ്ഷനുകൾ", "opts": "ഓപ്ഷനുകൾ",
@ -166,7 +179,7 @@
"Piece": "പീസ്", "Piece": "പീസ്",
"pinch": "നുള്ള്", "pinch": "നുള്ള്",
"planner": "ഭക്ഷണ പ്ലാനർ", "planner": "ഭക്ഷണ പ്ലാനർ",
"plsAdd": "ഒരെണ്ണം ചേർക്കാൻ + ബട്ടൺ ഉപയോഗിക്കുക", "plsAdd": "ഒരെണ്ണം ചേർക്കാൻ പ്ലസ് ബട്ടൺ ഉപയോഗിക്കുക",
"Portuguese": "പോർച്ചുഗീസ്", "Portuguese": "പോർച്ചുഗീസ്",
"Poultry": "കോഴി", "Poultry": "കോഴി",
"Pound": "പൗണ്ട്", "Pound": "പൗണ്ട്",
@ -210,10 +223,12 @@
"rst": "പുനരാരംഭിക്കുക", "rst": "പുനരാരംഭിക്കുക",
"Russian": "റഷ്യൻ", "Russian": "റഷ്യൻ",
"Salads": "സലാഡുകൾ", "Salads": "സലാഡുകൾ",
"SAT": "ശനി",
"Sauces": "സോസുകൾ", "Sauces": "സോസുകൾ",
"Scottish": "സ്കോട്ടിഷ്", "Scottish": "സ്കോട്ടിഷ്",
"Seafood": "കടൽ ഭക്ഷണം", "Seafood": "കടൽ ഭക്ഷണം",
"selRec": "പാചകക്കുറിപ്പ് തിരഞ്ഞെടുക്കുക", "selRec": "പാചകക്കുറിപ്പ് തിരഞ്ഞെടുക്കുക",
"September": "സെപ്റ്റംബർ",
"ser": "തിരയുക", "ser": "തിരയുക",
"Serving": "സേവിക്കുന്നു", "Serving": "സേവിക്കുന്നു",
"SET": "സെറ്റ്", "SET": "സെറ്റ്",
@ -233,8 +248,9 @@
"sru": "പാചകക്കുറിപ്പ് പങ്കിടുക...", "sru": "പാചകക്കുറിപ്പ് പങ്കിടുക...",
"stars": "നക്ഷത്ര റേറ്റിംഗ്", "stars": "നക്ഷത്ര റേറ്റിംഗ്",
"stick": "വടി", "stick": "വടി",
"stp": "ഘട്ടം %s", "stp": "ഘട്ടം",
"strAdd": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ ചേർക്കാൻ ആരംഭിക്കുക!", "strAdd": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ ചേർക്കാൻ ആരംഭിക്കുക!",
"SUN": "ഞായ",
"sVw": "ക്രമരഹിതമായ പാചകക്കുറിപ്പ് കാണാൻ കുലുക്കുക", "sVw": "ക്രമരഹിതമായ പാചകക്കുറിപ്പ് കാണാൻ കുലുക്കുക",
"sVwInfo": "നിങ്ങൾക്ക് തീരുമാനിക്കാൻ കഴിയാത്തപ്പോൾ എന്താണ് പാചകം ചെയ്യേണ്ടതെന്ന് തിരഞ്ഞെടുക്കാൻ നിങ്ങളെ സഹായിക്കുന്നു", "sVwInfo": "നിങ്ങൾക്ക് തീരുമാനിക്കാൻ കഴിയാത്തപ്പോൾ എന്താണ് പാചകം ചെയ്യേണ്ടതെന്ന് തിരഞ്ഞെടുക്കാൻ നിങ്ങളെ സഹായിക്കുന്നു",
"Swedish": "സ്വീഡിഷ്", "Swedish": "സ്വീഡിഷ്",
@ -245,6 +261,7 @@
"Teaspoon": "ടീസ്പൂൺ", "Teaspoon": "ടീസ്പൂൺ",
"Thai": "തായ്", "Thai": "തായ്",
"Theme": "തീം", "Theme": "തീം",
"THU": "വ്യാഴം",
"title": "ശീർഷകം", "title": "ശീർഷകം",
"tLInfo": "നിങ്ങൾ പിന്നീട് ശ്രമിക്കാൻ ആഗ്രഹിക്കുന്ന പാചകക്കുറിപ്പുകൾ ഇവിടെ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്", "tLInfo": "നിങ്ങൾ പിന്നീട് ശ്രമിക്കാൻ ആഗ്രഹിക്കുന്ന പാചകക്കുറിപ്പുകൾ ഇവിടെ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്",
"today": "ഇന്ന്", "today": "ഇന്ന്",
@ -255,6 +272,7 @@
"ts": "ടാഗുകൾ", "ts": "ടാഗുകൾ",
"tsInfo": "സ്‌പെയ്‌സുകൾ ഉപയോഗിച്ച് വേർതിരിക്കുക", "tsInfo": "സ്‌പെയ്‌സുകൾ ഉപയോഗിച്ച് വേർതിരിക്കുക",
"tsp": "ടീസ്പൂൺ", "tsp": "ടീസ്പൂൺ",
"TUE": "ചൊവ്വ",
"Turkish": "ടർക്കിഷ്", "Turkish": "ടർക്കിഷ്",
"Undefined": "നിർവചിച്ചിട്ടില്ല", "Undefined": "നിർവചിച്ചിട്ടില്ല",
"unit": "യൂണിറ്റ്", "unit": "യൂണിറ്റ്",
@ -265,67 +283,11 @@
"Vegetarian": "വെജിറ്റേറിയൻ", "Vegetarian": "വെജിറ്റേറിയൻ",
"Vietnamese": "വിയറ്റ്നാമീസ്", "Vietnamese": "വിയറ്റ്നാമീസ്",
"wAgo": "%s ആഴ്ച മുമ്പ്", "wAgo": "%s ആഴ്ച മുമ്പ്",
"WED": "ബുധൻ",
"yesterday": "ഇന്നലെ", "yesterday": "ഇന്നലെ",
"yieldQ": "വിളവ് അളവ്", "yieldQ": "വിളവ് അളവ്",
"yieldU": "വിളവ് യൂണിറ്റ്", "yieldU": "വിളവ് യൂണിറ്റ്",
"yld": "വരുമാനം", "yld": "വരുമാനം",
"buto": "%s ലേക്ക് ബാക്കപ്പ് ചെയ്തു", "buto": "%s ലേക്ക് ബാക്കപ്പ് ചെയ്തു",
"sysDefB": "സിസ്റ്റം സ്ഥിരസ്ഥിതി + കറുപ്പ്", "sysDefB": "സിസ്റ്റം സ്ഥിരസ്ഥിതി + കറുപ്പ്"
"esgbInfo": "നിങ്ങൾക്ക് എന്തെങ്കിലും നാവിഗേഷൻ പ്രശ്നങ്ങളുണ്ടെങ്കിൽ ഈ ഓപ്ഷൻ അപ്രാപ്തമാക്കുക",
"esgb": "തിരിച്ചുപോകാൻ എഡ്ജ് സ്വൈപ്പ്",
"ksavrInfo": "ഒരു പാചകക്കുറിപ്പ് കാണുമ്പോൾ സ്ക്രീൻ ഓഫാകുന്നത് തടയുന്നു",
"ksavr": "പാചകക്കുറിപ്പ് കാണുമ്പോൾ സ്ക്രീൻ ഓണാക്കുക",
"rstBtn": "പുനഃക്രമീകരിക്കുക",
"add": "ചേർക്കുക",
"nvr": "ഒരിക്കലും",
"otaw": "ഒരാഴ്ചയേക്കാൾ പഴയത്",
"otam": "ഒരു മാസത്തേക്കാൾ പഴയത്",
"otay": "ഒരു വർഷത്തേക്കാൾ പഴയത്",
"admp": "യാന്ത്രിക-ഇല്ലാതാക്കുക ഭക്ഷണ പദ്ധതികൾ",
"plsCrt": "ഒരെണ്ണം സൃഷ്ടിക്കാൻ + ബട്ടൺ ഉപയോഗിക്കുക",
"ehwmp": "ഭക്ഷണ പദ്ധതികളോടെ ആരോഗ്യത്തോടെ ഭക്ഷണം കഴിക്കുക!",
"selMT": "ഭക്ഷണ തരം തിരഞ്ഞെടുക്കുക",
"ystr": "തലേനാള്",
"tmrw": "അടുത്തദിവസം",
"tdy": "ഇന്നേദിവസം",
"cpy": "പകർപ്പ്",
"d": "ദിവസം",
"wk": "ആഴ്ച",
"mnth": "മാസം",
"calVM": "കലണ്ടർ വ്യൂ മോഡ്",
"oAP": "%1$s നിലവിലുള്ളത്, %2$s താൽക്കാലികമായി നിർത്തി",
"ttv": "കാണാൻ ടാപ്പുചെയ്യുക",
"dismissAll": "എല്ലാ ടൈമറുകളും നിരസിക്കുക",
"dismiss": "പുറംതള്ളുക",
"texp": "%s ടൈമറുകൾ കാലഹരണപ്പെട്ടു",
"wDBy": "%1$s %2$s വൈകി",
"prstTU": "പ്രീസെറ്റ് സമയം അപ്ഡേറ്റുചെയ്തു",
"ccwt": "ടൈമറുകളുമായി ആത്മവിശ്വാസത്തോടെ വേവിക്കുക!",
"gtD": "തീയതിയിലേക്ക് പോകുക",
"random": "വികലമായ",
"notifSetg": "അറിയിപ്പ് ക്രമീകരണങ്ങൾ",
"tmrRm": "ടൈമർ നീക്കംചെയ്തു",
"seconds": "സെക്കൻഡ്",
"hours": "മണിക്കൂറുകൾ",
"hour": "മണിക്കൂര്",
"minutes": "മിനിറ്റ്",
"minute": "മിനിറ്റ്",
"dlyDur": "കാലതാമസം",
"tmrvbrt": "ടൈമർ വൈബ്രേറ്റ്",
"tmrSnd": "ടൈമർ ശബ്ദം",
"aTPrst": "പ്രീസെറ്റുകളിലേക്ക് ചേർത്തു",
"fwr": "ഏത് പാചകത്തിന്?",
"delPrst": "നിങ്ങൾ പ്രീസെറ്റുകളിൽ നിന്ന് %s ഇല്ലാതാക്കാൻ പോകുന്നു",
"prsts": "പ്രെസ്റ്റുകൾ",
"prstBtn": "പ്രെസ്റ്റുകൾ",
"tmr": "ടൈമർ %s",
"delay": "താമസിക്കുക",
"stop": "നിർത്തുക",
"strtBtn": "ആരംഭിക്കുക",
"ntmr": "പുതിയ ടൈമർ",
"timer": "പാചക ടൈമർ",
"sec": "സെക്കൻഡ്",
"addSectBtn": "വിഭാഗം ചേർക്കുക",
"sectRm": "വിഭാഗം നീക്കംചെയ്തു",
"sect": "ഭാഗം %s"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes er et fritt kokeboksprogram som respekterer ditt personvern der du kan lage, håndtere og dele dine oppskrifter", "appInfo": "EnRecipes er et fritt kokeboksprogram som respekterer ditt personvern der du kan lage, håndtere og dele dine oppskrifter",
"apply": "Bruk", "apply": "Bruk",
"appRst": "Programomstart kreves", "appRst": "Programomstart kreves",
"April": "April",
"aStpBtn": "Legg til steg", "aStpBtn": "Legg til steg",
"August": "August",
"Barbecue": "Grill", "Barbecue": "Grill",
"Beverages": "Drikke", "Beverages": "Drikke",
"Black": "Svart", "Black": "Svart",
@ -51,6 +53,7 @@
"Dark": "Mørk", "Dark": "Mørk",
"db": "Database", "db": "Database",
"dBtn": "Slett", "dBtn": "Slett",
"December": "Desember",
"delRecInfo": "Du er i ferd med å slette oppskriften %s for godt", "delRecInfo": "Du er i ferd med å slette oppskriften %s for godt",
"delRecsInfo": "Du er i ferd med å slette %s for godt", "delRecsInfo": "Du er i ferd med å slette %s for godt",
"Desserts": "Desserter", "Desserts": "Desserter",
@ -72,12 +75,14 @@
"expip": "Eksport pågår", "expip": "Eksport pågår",
"expSuc": "Eksportert", "expSuc": "Eksportert",
"favourites": "Favoritter", "favourites": "Favoritter",
"February": "Februar",
"Filipino": "Filipinsk", "Filipino": "Filipinsk",
"Filtered recipes": "Filtrerte oppskrifter", "Filtered recipes": "Filtrerte oppskrifter",
"fl oz": "flytende unse", "fl oz": "flytende unse",
"fltr": "Filter", "fltr": "Filter",
"Fluid Ounce": "Flytende unse", "Fluid Ounce": "Flytende unse",
"French": "Fransk", "French": "Fransk",
"FRI": "Fre",
"fsList": "Dine favorittoppskrifter listes opp her", "fsList": "Dine favorittoppskrifter listes opp her",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -106,9 +111,12 @@
"it": "Element", "it": "Element",
"Italian": "Italiensk", "Italian": "Italiensk",
"Jamaican": "Jamaikansk", "Jamaican": "Jamaikansk",
"January": "Januar",
"Japanese": "Japansk", "Japanese": "Japansk",
"Jewish": "Jødisk", "Jewish": "Jødisk",
"joinTG": "Ta del i Telegram-gruppen", "joinTG": "Ta del i Telegram-gruppen",
"July": "July",
"June": "June",
"kEdit": "Fortsett å redigere", "kEdit": "Fortsett å redigere",
"Kenyan": "Kenyansk", "Kenyan": "Kenyansk",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunsj", "lunch": "Lunsj",
"mAgo": "for %s måneder siden", "mAgo": "for %s måneder siden",
"Main dishes": "Hovedretter", "Main dishes": "Hovedretter",
"March": "March",
"May": "May",
"Meat": "Kjøtt", "Meat": "Kjøtt",
"medium": "middels", "medium": "middels",
"Mexican": "Meksikansk", "Mexican": "Meksikansk",
@ -137,6 +147,7 @@
"minimal": "minimalistisk", "minimal": "minimalistisk",
"ml": "ml", "ml": "ml",
"Moderate": "Moderat", "Moderate": "Moderat",
"MON": "Man",
"newCui": "Nytt kjøkken", "newCui": "Nytt kjøkken",
"Newest first": "Nyeste først", "Newest first": "Nyeste først",
"newRec": "Ny oppskrift", "newRec": "Ny oppskrift",
@ -151,8 +162,10 @@
"noRecs": "Ingen oppskrifter samsvarte med søket ditt", "noRecs": "Ingen oppskrifter samsvarte med søket ditt",
"noRecsInL": "Ingen av oppskriftene her samsvarer med søket", "noRecsInL": "Ingen av oppskriftene her samsvarer med søket",
"nos": "Notiser", "nos": "Notiser",
"November": "November",
"nwCat": "Ny kategori", "nwCat": "Ny kategori",
"nwYiU": "Ny nyttemengdeenhet", "nwYiU": "Ny nyttemengdeenhet",
"October": "Oktober",
"OK": "OK", "OK": "OK",
"Oldest first": "Eldste først", "Oldest first": "Eldste først",
"opts": "Innstillinger", "opts": "Innstillinger",
@ -210,10 +223,12 @@
"rst": "Omstart", "rst": "Omstart",
"Russian": "Russisk", "Russian": "Russisk",
"Salads": "Salater", "Salads": "Salater",
"SAT": "Sat",
"Sauces": "Sauser", "Sauces": "Sauser",
"Scottish": "Skotsk", "Scottish": "Skotsk",
"Seafood": "Sjømat", "Seafood": "Sjømat",
"selRec": "Velg oppskrift", "selRec": "Velg oppskrift",
"September": "September",
"ser": "Søk", "ser": "Søk",
"Serving": "Posjon", "Serving": "Posjon",
"SET": "Sett", "SET": "Sett",
@ -235,6 +250,7 @@
"stick": "stang", "stick": "stang",
"stp": "Steg", "stp": "Steg",
"strAdd": "Begynn å legge til oppskriftene dine!", "strAdd": "Begynn å legge til oppskriftene dine!",
"SUN": "Søn",
"sVw": "Rist for å vise tilfeldig oppskrift", "sVw": "Rist for å vise tilfeldig oppskrift",
"sVwInfo": "Hjelper deg å velge hva du skal lage når du ikke kan bestemme deg", "sVwInfo": "Hjelper deg å velge hva du skal lage når du ikke kan bestemme deg",
"Swedish": "Svensk", "Swedish": "Svensk",
@ -245,6 +261,7 @@
"Teaspoon": "Teskje", "Teaspoon": "Teskje",
"Thai": "Thailandsk", "Thai": "Thailandsk",
"Theme": "Drakt", "Theme": "Drakt",
"THU": "Tor",
"title": "Tittel", "title": "Tittel",
"tLInfo": "Oppskrifter du ønsker å prøve senere listes opp her", "tLInfo": "Oppskrifter du ønsker å prøve senere listes opp her",
"today": "i dag", "today": "i dag",
@ -255,6 +272,7 @@
"ts": "Etiketter", "ts": "Etiketter",
"tsInfo": "inndel med mellomrom", "tsInfo": "inndel med mellomrom",
"tsp": "ts", "tsp": "ts",
"TUE": "Tir",
"Turkish": "Tyrkisk", "Turkish": "Tyrkisk",
"Undefined": "Udefinert", "Undefined": "Udefinert",
"unit": "enhet", "unit": "enhet",
@ -265,24 +283,12 @@
"Vegetarian": "Vegetar", "Vegetarian": "Vegetar",
"Vietnamese": "Vietnamesisk", "Vietnamese": "Vietnamesisk",
"wAgo": "for %s uker siden", "wAgo": "for %s uker siden",
"WED": "Ons",
"yesterday": "i går", "yesterday": "i går",
"yieldQ": "Nyttemengde", "yieldQ": "Nyttemengde",
"yieldU": "Enhet for nyttemengde", "yieldU": "Enhet for nyttemengde",
"yld": "Nyttemengde", "yld": "Nyttemengde",
"buto": "Støttet opp til %s", "buto": "Støttet opp til %s",
"sysDefB": "Systemforvalg + Svart", "sysDefB": "Systemforvalg + Svart",
"sec": "s", "sec": "s"
"ntmr": "Nytt tidsur",
"gtD": "Gå til dato",
"random": "Tilfeldig",
"notifSetg": "Merknadsinnstillinger",
"tmrRm": "Tidsur fjernet",
"seconds": "sekunder",
"hours": "timer",
"hour": "time",
"minutes": "minutter",
"minute": "minutt",
"delay": "Utsett",
"stop": "Stopp",
"strtBtn": "Start"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes in een open source, privacybewust digitaal kookboek waarmee je recepten kunt aanmaken, beheren en delen", "appInfo": "EnRecipes in een open source, privacybewust digitaal kookboek waarmee je recepten kunt aanmaken, beheren en delen",
"apply": "TOEPASSEN", "apply": "TOEPASSEN",
"appRst": "Herstart vereist", "appRst": "Herstart vereist",
"April": "april",
"aStpBtn": "STAP TOEVOEGEN", "aStpBtn": "STAP TOEVOEGEN",
"August": "augustus",
"Barbecue": "Barbecue", "Barbecue": "Barbecue",
"Beverages": "Drankjes", "Beverages": "Drankjes",
"Black": "Zwart", "Black": "Zwart",
@ -51,6 +53,7 @@
"Dark": "Donker", "Dark": "Donker",
"db": "Databank", "db": "Databank",
"dBtn": "VERWIJDEREN", "dBtn": "VERWIJDEREN",
"December": "december",
"delRecInfo": "Je staat op het punt om %s te verwijderen", "delRecInfo": "Je staat op het punt om %s te verwijderen",
"delRecsInfo": "Je staat op het punt om %s permanent te verwijderen", "delRecsInfo": "Je staat op het punt om %s permanent te verwijderen",
"Desserts": "Nagerechten", "Desserts": "Nagerechten",
@ -72,12 +75,14 @@
"expip": "Bezig met exporteren", "expip": "Bezig met exporteren",
"expSuc": "Exporteren voltooid", "expSuc": "Exporteren voltooid",
"favourites": "Favorieten", "favourites": "Favorieten",
"February": "februari",
"Filipino": "Filipijns", "Filipino": "Filipijns",
"Filtered recipes": "Gefilterde recepten", "Filtered recipes": "Gefilterde recepten",
"fl oz": "fl oz", "fl oz": "fl oz",
"fltr": "Filteren", "fltr": "Filteren",
"Fluid Ounce": "Vloeibaar ons", "Fluid Ounce": "Vloeibaar ons",
"French": "Frans", "French": "Frans",
"FRI": "VRIJ",
"fsList": "Hier vind je je favoriete recepten terug", "fsList": "Hier vind je je favoriete recepten terug",
"g": "g", "g": "g",
"gal": "gal", "gal": "gal",
@ -103,12 +108,15 @@
"intf": "Uiterlijk", "intf": "Uiterlijk",
"invFile": "Ongeldig bestand", "invFile": "Ongeldig bestand",
"Irish": "Iers", "Irish": "Iers",
"it": "Item %s", "it": "Item",
"Italian": "Italiaans", "Italian": "Italiaans",
"Jamaican": "Jamaicaans", "Jamaican": "Jamaicaans",
"January": "januari",
"Japanese": "Japans", "Japanese": "Japans",
"Jewish": "Joods", "Jewish": "Joods",
"joinTG": "Word lid van de Telegram-groep", "joinTG": "Word lid van de Telegram-groep",
"July": "juli",
"June": "juni",
"kEdit": "DOORGAAN MET BEWERKEN", "kEdit": "DOORGAAN MET BEWERKEN",
"Kenyan": "Keniaans", "Kenyan": "Keniaans",
"kg": "kg", "kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch", "lunch": "Lunch",
"mAgo": "%s maanden geleden", "mAgo": "%s maanden geleden",
"Main dishes": "Hoofdgerechten", "Main dishes": "Hoofdgerechten",
"March": "maart",
"May": "mei",
"Meat": "Vlees", "Meat": "Vlees",
"medium": "middelgroot", "medium": "middelgroot",
"Mexican": "Mexicaans", "Mexican": "Mexicaans",
@ -137,6 +147,7 @@
"minimal": "Minimaal", "minimal": "Minimaal",
"ml": "ml", "ml": "ml",
"Moderate": "Gemiddeld", "Moderate": "Gemiddeld",
"MON": "MA",
"newCui": "Nieuwe keuken", "newCui": "Nieuwe keuken",
"Newest first": "Nieuwste bovenaan", "Newest first": "Nieuwste bovenaan",
"newRec": "Nieuw recept", "newRec": "Nieuw recept",
@ -151,8 +162,10 @@
"noRecs": "Er zijn geen overeenkomende zoekresultaten", "noRecs": "Er zijn geen overeenkomende zoekresultaten",
"noRecsInL": "Geen van deze recepten komt overeen met je zoekopdracht", "noRecsInL": "Geen van deze recepten komt overeen met je zoekopdracht",
"nos": "Aantekeningen", "nos": "Aantekeningen",
"November": "november",
"nwCat": "Nieuwe categorie", "nwCat": "Nieuwe categorie",
"nwYiU": "Nieuwe eenheid", "nwYiU": "Nieuwe eenheid",
"October": "oktober",
"OK": "Oké", "OK": "Oké",
"Oldest first": "Oudste bovenaan", "Oldest first": "Oudste bovenaan",
"opts": "Opties", "opts": "Opties",
@ -187,7 +200,7 @@
"recs": "recepten", "recs": "recepten",
"recTitle": "Mijn gezonde recept", "recTitle": "Mijn gezonde recept",
"recU": "Bijgewerkt:", "recU": "Bijgewerkt:",
"req": "%s vereist", "req": "Vereiste %s",
"resNF": "Recept niet gevonden", "resNF": "Recept niet gevonden",
"rest": "Standaardwaarden", "rest": "Standaardwaarden",
"restCatL": "Categorieënlijst herstellen", "restCatL": "Categorieënlijst herstellen",
@ -210,10 +223,12 @@
"rst": "HERSTARTEN", "rst": "HERSTARTEN",
"Russian": "Russisch", "Russian": "Russisch",
"Salads": "Salades", "Salads": "Salades",
"SAT": "ZA",
"Sauces": "Sausen", "Sauces": "Sausen",
"Scottish": "Schots", "Scottish": "Schots",
"Seafood": "Zeevruchten", "Seafood": "Zeevruchten",
"selRec": "Recept kiezen", "selRec": "Recept kiezen",
"September": "september",
"ser": "Zoeken", "ser": "Zoeken",
"Serving": "Portie", "Serving": "Portie",
"SET": "INSTELLEN", "SET": "INSTELLEN",
@ -233,8 +248,9 @@
"sru": "Recept delen via…", "sru": "Recept delen via…",
"stars": "Waardering", "stars": "Waardering",
"stick": "stokje", "stick": "stokje",
"stp": "Stap %s", "stp": "Stap",
"strAdd": "Voeg je recepten toe!", "strAdd": "Voeg je recepten toe!",
"SUN": "ZO",
"sVw": "Schudden om willekeurig recept te tonen", "sVw": "Schudden om willekeurig recept te tonen",
"sVwInfo": "Handig voor als je even niet weet wat je wilt maken", "sVwInfo": "Handig voor als je even niet weet wat je wilt maken",
"Swedish": "Zweeds", "Swedish": "Zweeds",
@ -245,6 +261,7 @@
"Teaspoon": "Theelepel", "Teaspoon": "Theelepel",
"Thai": "Thais", "Thai": "Thais",
"Theme": "Thema", "Theme": "Thema",
"THU": "DO",
"title": "Naam", "title": "Naam",
"tLInfo": "Hier vind je de recepten terug die je later wilt uitproberen", "tLInfo": "Hier vind je de recepten terug die je later wilt uitproberen",
"today": "vandaag", "today": "vandaag",
@ -255,6 +272,7 @@
"ts": "Labels", "ts": "Labels",
"tsInfo": "kommagescheiden", "tsInfo": "kommagescheiden",
"tsp": "tl", "tsp": "tl",
"TUE": "DI",
"Turkish": "Turks", "Turkish": "Turks",
"Undefined": "Onbekend", "Undefined": "Onbekend",
"unit": "eenheid", "unit": "eenheid",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetarisch", "Vegetarian": "Vegetarisch",
"Vietnamese": "Vietnamees", "Vietnamese": "Vietnamees",
"wAgo": "%s weken geleden", "wAgo": "%s weken geleden",
"WED": "WOE",
"yesterday": "gisteren", "yesterday": "gisteren",
"yieldQ": "Hoeveelheid", "yieldQ": "Hoeveelheid",
"yieldU": "Eenheid", "yieldU": "Eenheid",
@ -279,6 +298,7 @@
"tmrSnd": "Kookwekkergeluid", "tmrSnd": "Kookwekkergeluid",
"aTPrst": "Toegevoegd aan voorinstellingen", "aTPrst": "Toegevoegd aan voorinstellingen",
"fwr": "bij welk recept?", "fwr": "bij welk recept?",
"tmrPrsts": "Kookwekker: voorinstellingen",
"prstBtn": "VOORINSTELLINGEN", "prstBtn": "VOORINSTELLINGEN",
"stop": "Stoppen", "stop": "Stoppen",
"tmrvbrt": "Kookwekker laten trillen", "tmrvbrt": "Kookwekker laten trillen",
@ -288,44 +308,5 @@
"minutes": "minuten", "minutes": "minuten",
"minute": "minuut", "minute": "minuut",
"dlyDur": "Vertragingsduur", "dlyDur": "Vertragingsduur",
"delay": "Vertraging", "delay": "Vertraging"
"notifSetg": "Meldingsinstellingen",
"tmrRm": "De kookwekker is verwijderd",
"delPrst": "Je staat op het punt om %s te verwijderen uit de voorinstellingen",
"prsts": "Voorinstellingen",
"ttv": "Druk om te bekijken",
"dismissAll": "Alle kookwekkers verwerpen",
"dismiss": "Verwerpen",
"texp": "%s kookwekkers zijn afgegaan",
"wDBy": "%1$s is %2$s vertraagd",
"prstTU": "De tijd is bijgewerkt",
"ccwt": "Kook vol vertrouwen d.m.v. kookwekkers!",
"gtD": "Ga naar datum",
"random": "Willekeurig",
"ystr": "Gisteren",
"tmrw": "Morgen",
"tdy": "Vandaag",
"cpy": "kopie",
"d": "Dag",
"wk": "Week",
"mnth": "Maand",
"calVM": "Weergavemodus van kalender",
"oAP": "%1$s lopende; %2$s onderbroken",
"nvr": "Nooit",
"otaw": "Ouder dan een week",
"otam": "Ouder dan een maand",
"otay": "Ouder dan een jaar",
"admp": "Schema's automatisch verwijderen",
"plsCrt": "Druk op de plusknop om een schema toe te voegen",
"ehwmp": "Eet gezond met maaltijdschema's!",
"selMT": "Kies het soort maaltijd",
"rstBtn": "STANDAARDWAARDEN",
"add": "Toevoegen",
"esgbInfo": "Schakel deze optie uit als je problemen ervaart tijdens het navigeren",
"esgb": "Vegen vanaf schermrand om terug te gaan",
"ksavrInfo": "Voorkomt dat het scherm wordt uitgeschakeld tijdens het bekijken van een recept",
"ksavr": "Scherm niet uitschakelen tijdens bekijken van recept",
"addSectBtn": "SECTIE TOEVOEGEN",
"sect": "Sectie %s",
"sectRm": "De sectie is verwijderd"
} }

View file

@ -5,7 +5,7 @@
"addCmbBtn": "ADICIONE COMBINAÇÃO", "addCmbBtn": "ADICIONE COMBINAÇÃO",
"aFBu": "Adicione um receita para realizar um backup", "aFBu": "Adicione um receita para realizar um backup",
"aIngBtn": "ADICIONE INGREDIENTE", "aIngBtn": "ADICIONE INGREDIENTE",
"aNBtn": "ADICIONAR NOVO", "aNBtn": "adicionar novo",
"aNoBtn": "ADICIONAR NOTA", "aNoBtn": "ADICIONAR NOTA",
"app.name": "EnRecipes", "app.name": "EnRecipes",
"Appetizers": "Aperitivos", "Appetizers": "Aperitivos",
@ -18,29 +18,29 @@
"cat": "Categoria", "cat": "Categoria",
"cBtn": "CANCELAR", "cBtn": "CANCELAR",
"clove": "dente de alho", "clove": "dente de alho",
"cm": "cm", "cm": "Centimetro",
"cmbs": "Combinações", "cmbs": "Combinação",
"conBtn": "CONTINUAR", "conBtn": "continuar",
"conf": "Confirmar", "conf": "Confirmar",
"cookT": "Tempo de cozimento", "cookT": "Tempo de cozimento",
"Created": "Criada", "Created": "Criar",
"cup": "copo", "cup": "copo",
"Cup": "Copo", "Cup": "Copo",
"Dark": "Escuro", "Dark": "Escuro",
"db": "Banco de dados", "db": "Base de dados",
"dBtn": "APAGAR", "dBtn": "Deletar",
"Desserts": "Sobremesas", "Desserts": "Sobremesas",
"dozen": "dúzia", "dozen": "dúzia",
"drop": "gota", "drop": "solta",
"dsp": "cds", "dsp": "cds",
"editRec": "Editar receita", "editRec": "Editar receita",
"EnRecipes": "EnRecipes", "EnRecipes": "EnRecipes",
"expBu": "Exportar backup completo", "expBu": "Exportar backup completo",
"favourites": "Favoritos", "favourites": "Favoritos",
"fl oz": "fl oz", "fl oz": "onça fluída",
"Fluid Ounce": "Onça fluída (Oz.)", "Fluid Ounce": "Onça Fluída (Oz.)",
"fsList": "Suas receitas favoritas estão listadas aqui", "fsList": "Suas receitas favoritas estão listadas aqui",
"g": "g", "g": "grama",
"gal": "gal", "gal": "gal",
"Gallon": "Galão", "Gallon": "Galão",
"Gram": "Grama", "Gram": "Grama",
@ -49,13 +49,13 @@
"hr": "h", "hr": "h",
"impBu": "Importar dados", "impBu": "Importar dados",
"impInfo": "Suporta backups completos exportados por este aplicativo", "impInfo": "Suporta backups completos exportados por este aplicativo",
"in": "in", "in": "Entrar",
"ings": "Ingredientes", "ings": "Ingredientes",
"inss": "Instruções", "inss": "Instruções",
"intf": "Interface", "intf": "Interface",
"it": "Item", "it": "Item",
"joinTG": "Junte-se ao grupo Telegram", "joinTG": "Junte-se ao grupo Telegram",
"kg": "kg", "kg": "Kilo",
"Kilogram": "Quilograma", "Kilogram": "Quilograma",
"l": "litro", "l": "litro",
"lang": "Idioma", "lang": "Idioma",
@ -69,7 +69,7 @@
"Main dishes": "Pratos principais", "Main dishes": "Pratos principais",
"Meat": "Carnes", "Meat": "Carnes",
"medium": "médio", "medium": "médio",
"mg": "mg", "mg": "Miligrama",
"Millilitre": "Mililitro", "Millilitre": "Mililitro",
"min": "min", "min": "min",
"ml": "ml", "ml": "ml",
@ -79,18 +79,19 @@
"no": "Nota", "no": "Nota",
"noFavs": "Ainda não há favoritos", "noFavs": "Ainda não há favoritos",
"Noodles": "Macarrão fita", "Noodles": "Macarrão fita",
"noRecs": "Nenhuma receita corresponde à sua busca", "noRecs": "Nenhuma receita corresponde à sua pesquisa",
"nos": "Notas", "nos": "Notas",
"November": "Novembro",
"Ounce": "Onça", "Ounce": "Onça",
"oz": "onça", "oz": "onça",
"Pasta": "Macarrão", "Pasta": "Macarrão",
"Patty": "Empada", "Patty": "Empada",
"pht": "Foto da receita", "pht": "Foto da receita",
"piece": "peça", "piece": "peça",
"Piece": "Peça", "Piece": "Pedaço",
"pinch": "pitada", "pinch": "pitada",
"planner": "Planejador de refeições", "planner": "Planejador de refeições",
"plsAdd": "Use o botão de adição para adicionar uma", "plsAdd": "Use o botão de adição para adicionar um",
"Poultry": "Carne de aves", "Poultry": "Carne de aves",
"Pound": "Libra", "Pound": "Libra",
"prepT": "Tempo de preparação", "prepT": "Tempo de preparação",
@ -99,12 +100,12 @@
"rBtn": "REMOVER", "rBtn": "REMOVER",
"rec": "Receita", "rec": "Receita",
"recListEmp": "Nada aqui! Adicione algumas receitas e tente novamente", "recListEmp": "Nada aqui! Adicione algumas receitas e tente novamente",
"recTitle": "Minha receita saudável", "recTitle": "Minha Receita Saudável",
"Rice": "Arroz", "Rice": "Arroz",
"rmCatInfo": "Você está prestes a remover %s da lista de categorias", "rmCatInfo": "Você está prestes a remover a categoria",
"rmCuiInfo": "Você está prestes a remover %s da lista de cozinha", "rmCuiInfo": "Você está prestes a remover a cozinha",
"rmUInfo": "Você está prestes a remover %s da lista de unidades", "rmUInfo": "Você está prestes a remover a unidade",
"rmYUInfo": "Você está prestes a remover %s das unidades de porção", "rmYUInfo": "Você está prestes a remover a unidade de porção",
"Roll": "Lista", "Roll": "Lista",
"rst": "REINICIAR", "rst": "REINICIAR",
"Salads": "Saladas", "Salads": "Saladas",
@ -113,11 +114,11 @@
"selRec": "Selecione a receita", "selRec": "Selecione a receita",
"ser": "Procurar", "ser": "Procurar",
"Serving": "Porção", "Serving": "Porção",
"SET": "DEFINIR", "SET": "definir",
"Settings": "Ajustes", "Settings": "Ajustes",
"shr": "Compartilhar", "shr": "compartilhar",
"Side dishes": "Acompanhamentos", "Side dishes": "Acompanhamentos",
"sltd": "selecionada", "sltd": "Selecionar",
"small": "pequeno", "small": "pequeno",
"Soups": "Sopas", "Soups": "Sopas",
"srt": "Ordenar", "srt": "Ordenar",
@ -134,36 +135,48 @@
"trylater": "Experimentar depois", "trylater": "Experimentar depois",
"tsp": "cc", "tsp": "cc",
"Undefined": "Indefinido", "Undefined": "Indefinido",
"unit": "unidade", "unit": "Unidade",
"Vegan": "Vegana", "Vegan": "Vegano",
"Vegetarian": "Vegetariana", "Vegetarian": "Vegetariano",
"yieldQ": "Quantidade de porção", "yieldQ": "Quantidade de porção",
"yieldU": "Unidade de porção", "yieldU": "Unidade de porção",
"MON": "SEG",
"FRI": "SEX",
"WED": "VIA",
"req": "Necessárias %s", "req": "Necessárias %s",
"kEdit": "CONTINUAR EDITANDO", "SAT": "SÁB",
"Kenyan": "Queniana", "SUN": "DOM",
"Korean": "Coreana", "THU": "QUI",
"TUE": "TER",
"July": "Julho",
"June": "Junho",
"kEdit": "EDITOR DE KEEP",
"Kenyan": "Queniano",
"Korean": "Coreano",
"Last updated": "Última atualização", "Last updated": "Última atualização",
"ltAgo": "há muito tempo", "ltAgo": "há muito tempo",
"lunch": "Almoço", "lunch": "Almoço",
"Mexican": "Mexicana", "March": "Março",
"May": "Maio",
"Mexican": "Mexicano",
"minimal": "Mínimo", "minimal": "Mínimo",
"Moderate": "Moderado", "Moderate": "Moderado",
"newCui": "Nova cozinha", "newCui": "Nova cozinha",
"Newest first": "A mais nova primeiro", "Newest first": "O mais novo primeiro",
"newUnit": "Nova unidade", "newUnit": "Nova unidade",
"Nigerian": "Nigeriana", "Nigerian": "Nigeriano",
"noAccSensor": "O sensor do acelerômetro está desativado ou não está funcionando", "noAccSensor": "O sensor do acelerômetro está desativado ou não está funcionando",
"noRecsInL": "Nenhuma das receitas aqui corresponde à sua busca", "noRecsInL": "Nenhuma das receitas aqui corresponde à sua busca",
"nwCat": "Nova categoria", "nwCat": "Nova categoria",
"nwYiU": "Nova unidade de porção", "nwYiU": "Nova unidade de porção",
"October": "Outubro",
"OK": "OK", "OK": "OK",
"Oldest first": "As mais antigas primeiro", "Oldest first": "Os mais antigos",
"opts": "Opções", "opts": "Opções",
"photogrid": "Grade de fotos", "photogrid": "Grade de fotos",
"Portuguese": "Portuguesa", "Portuguese": "Português",
"priv": "Política de privacidade", "priv": "Política de privacidade",
"Quickest first": "Primeiro a mais rápida", "Quickest first": "Primeiro o mais rápido",
"Rating": "Classificação", "Rating": "Classificação",
"recE": "Já existe:", "recE": "Já existe:",
"swm": "Início da semana na segunda", "swm": "Início da semana na segunda",
@ -173,66 +186,70 @@
"trySer": "PROCURAR EM TODAS AS RECEITAS?", "trySer": "PROCURAR EM TODAS AS RECEITAS?",
"ts": "Etiquetas", "ts": "Etiquetas",
"tsInfo": "separar com espaços", "tsInfo": "separar com espaços",
"Turkish": "Turca", "Turkish": "Turco",
"Unit": "Unidade", "Unit": "Unidade",
"unsaved": "Mudanças não salvas", "unsaved": "Mudanças não salvas",
"untRec": "Receita sem título", "untRec": "Receita sem título",
"Vietnamese": "Vietnamita", "Vietnamese": "Vietnamita",
"yesterday": "ontem", "yesterday": "ontem",
"buto": "Backup em %s", "buto": "Com apoio até %s",
"Swedish": "Sueca", "Swedish": "Sueco",
"sVwInfo": "Ajuda a escolher o que cozinhar quando você não pode decidir", "sVwInfo": "Ajuda a escolher o que cozinhar quando você não pode decidir",
"sVw": "Sacudir para ver a receita aleatória", "sVw": "Sacudir para ver a receita aleatória",
"stars": "Classificação em estrelas", "stars": "Classificação em estrelas",
"sru": "Compartilhar receita usando...", "sru": "Compartilhar receita usando...",
"srpu": "Compartilhar foto da receita usando...", "srpu": "Compartilhar foto da receita usando...",
"Sri Lankan": "Cingalesa", "Sri Lankan": "Sri Lanka",
"Spanish": "Espanhola", "Spanish": "Espanhol",
"snacks": "Lanches", "snacks": "Lanches",
"Slowest first": "Mais lenta primeiro", "Slowest first": "Mais lento primeiro",
"simple": "Simples", "simple": "Simples",
"Scottish": "Escocesa", "September": "Setembro",
"Russian": "Russa", "Scottish": "Escocês",
"Russian": "Russo",
"rp": "Retirar foto", "rp": "Retirar foto",
"rmN": "Nota removida", "rmN": "Nota removida",
"rmIns": "Instrução removida", "rmIns": "Instrução retirada",
"rmIng": "Ingrediente removido", "rmIng": "Ingrediente removido",
"rmCmb": "Combinação removida", "rmCmb": "Combinação removida",
"restYUL": "Redefinir a lista de unidades de porção", "restYUL": "Redefinir a lista de unidades de porção",
"restUL": "Redefinir a lista de unidades", "restUL": "Reiniciar a lista de unidades",
"restInfo": "A redefinição de uma lista eliminará as entradas criadas pelo usuário e restaurará as entradas padrão. As receitas existentes não serão afetadas.", "restInfo": "A redefinição de uma lista eliminará as entradas criadas pelo usuário e restaurará as entradas padrão. As receitas existentes não serão afetadas.",
"restDone": "Reposição feita", "restDone": "Reposição feita",
"restCuiL": "Redefinir a lista de cozinha", "restCuiL": "Reiniciar a lista de cozinha",
"restCatL": "Redefinir lista de categorias", "restCatL": "Redefinir lista de categorias",
"rest": "Redefinir", "rest": "Redefinir",
"resNF": "Receita não encontrada", "resNF": "Receita não encontrada",
"recU": "Atualizado:", "recU": "Atualizado:",
"recs": "receitas", "recs": "receitas",
"recRm": "Receita removida", "recRm": "Receita retirada",
"recF": "receitas encontradas", "recF": "receitas encontradas",
"recI": "Importado:", "recI": "Importado:",
"recPic": "Foto da receita", "recPic": "Foto da receita",
"aap": "Anexe uma foto", "aap": "Anexe uma foto",
"allCats": "Todas as categorias", "allCats": "Todas as categorias",
"allCuis": "Todas as culinárias", "allCuis": "Todas as culinárias",
"allTs": "Todas as etiquetas", "allTs": "Todas as Tags",
"American": "Americana", "American": "Americano",
"appCrd": "Compartilhado via EnRecipes. Obtenha-o no F-Droid, IzzyOnDroid ou na Play Store.", "appCrd": "Compartilhado via EnRecipes. Obtenha-o no F-Droid, IzzyOnDroid ou na Play Store.",
"appInfo": "EnRecipes é um livro de receitas digital de código aberto, que lhe permite criar, gerenciar e compartilhar suas receitas", "appInfo": "EnRecipes é um livro de receitas digital de código aberto, que lhe permite criar, gerenciar e compartilhar suas receitas",
"apply": "APLIQUE", "apply": "APLIQUE",
"April": "Abril",
"August": "Agosto",
"Black": "Preto", "Black": "Preto",
"Brazilian": "Brasileira", "Brazilian": "Brasileiro",
"breakfast": "Café da manhã", "breakfast": "Café da manhã",
"British": "Britânica", "British": "Britânico",
"buEmp": "O arquivo de backup está vazio", "buEmp": "O arquivo de backup está vazio",
"buFol": "Pasta de backup", "buFol": "Pasta de backup",
"buInc": "Arquivo de backup malformado ou corrupto", "buInc": "Arquivo de backup malformado ou corrupto",
"buMod": "O arquivo de backup foi modificado em outro lugar", "buMod": "O arquivo de backup foi modificado em outro lugar",
"Challenging": "Difícil", "Challenging": "Desafiando",
"Chinese": "Chinesa", "Chinese": "Chinês",
"cPic": "Recorte da foto", "cPic": "Foto do corte",
"cui": "Cozinha", "cui": "Cozinha",
"Danish": "Dinamarquesa", "Danish": "Dinamarquês",
"December": "Dezembro",
"delRecInfo": "Você está prestes a apagar permanentemente a receita %s", "delRecInfo": "Você está prestes a apagar permanentemente a receita %s",
"delRecsInfo": "Você está prestes a apagar permanentemente %s", "delRecsInfo": "Você está prestes a apagar permanentemente %s",
"detailed": "Detalhado", "detailed": "Detalhado",
@ -242,30 +259,32 @@
"disc": "Esta receita tem mudanças não salvas. O que você gostaria de fazer?", "disc": "Esta receita tem mudanças não salvas. O que você gostaria de fazer?",
"donate": "Doe", "donate": "Doe",
"Easy": "Fácil", "Easy": "Fácil",
"Egyptian": "Egípcia", "Egyptian": "Egípcio",
"English": "Inglesa", "English": "Inglês",
"expip": "Exportação em curso", "expip": "Exportação em curso",
"expSuc": "Sucesso na exportação", "expSuc": "Sucesso na exportação",
"February": "Fevereiro",
"Filtered recipes": "Receitas filtradas", "Filtered recipes": "Receitas filtradas",
"fltr": "Filtro", "fltr": "Filtro",
"French": "Francesa", "French": "Francês",
"German": "Alemã", "German": "Alemão",
"gh": "Veja em GitHub", "gh": "Vista em GitHub",
"Greek": "Grega", "Greek": "Grego",
"grid": "Grade", "grid": "Grade",
"guide": "Guia do usuário", "guide": "Guia do usuário",
"impFail": "A importação falhou", "impFail": "A importação falhou",
"impip": "Importação em curso", "impip": "Importação em curso",
"impSuc": "Importação com êxito", "impSuc": "Importação com êxito",
"Indian": "Indiana", "Indian": "Índio",
"invFile": "Arquivo inválido", "invFile": "Arquivo inválido",
"Irish": "Irlandesa", "Irish": "Irlandês",
"Italian": "Italiana", "Italian": "Italiano",
"Jamaican": "Jamaicana", "Jamaican": "Jamaicano",
"Japanese": "Japonesa", "January": "Janeiro",
"Jewish": "Judaica", "Japanese": "Japonês",
"Jewish": "Judeu",
"yld": "Porção", "yld": "Porção",
"sysDefB": "Padrão do sistema + preto", "sysDefB": "Padrão do sistema + Preto",
"wAgo": "%s semanas atrás", "wAgo": "%s semanas atrás",
"Thai": "Tailandesa", "Thai": "Tailandesa",
"mAgo": "%s meses atrás", "mAgo": "%s meses atrás",
@ -273,53 +292,21 @@
"dAgo": "%s dias atrás", "dAgo": "%s dias atrás",
"tmr": "Temporizador %s", "tmr": "Temporizador %s",
"strtBtn": "INICIAR", "strtBtn": "INICIAR",
"ntmr": "Novo temporizador", "ntmr": "Novo timer",
"timer": "Temporizador de culinária", "timer": "Temporizador de Culinária",
"prstBtn": "PREDEFINIÇÕES", "prstBtn": "PERSPECTIVAS",
"sec": "s", "sec": "s",
"stop": "Parada", "stop": "Parada",
"delay": "Atraso", "delay": "Atraso",
"tmrPrsts": "Predefinições temporizadas",
"fwr": "para qual receita?", "fwr": "para qual receita?",
"aTPrst": "Adicionado às predefinições", "aTPrst": "Adicionado às predefinições",
"tmrSnd": "Som do temporizador", "tmrSnd": "Som temporizador",
"tmrvbrt": "Vibração do temporizador", "tmrvbrt": "Temporizador vibrar",
"dlyDur": "Duração do atraso", "dlyDur": "Duração do atraso",
"minute": "minuto", "minute": "minuto",
"minutes": "minutos", "minutes": "atas",
"hour": "hora", "hour": "hora",
"hours": "horas", "hours": "horas",
"seconds": "segundos", "seconds": "segundos"
"prsts": "Predefinições",
"delPrst": "Você está prestes a apagar %s das predefinições",
"tmrRm": "Temporizador removido",
"notifSetg": "Configurações de notificação",
"admp": "Apagar automaticamente planos de refeições",
"wDBy": "%1$s foi atrasada por %2$s",
"otaw": "Mais antigas que 1 semana",
"otam": "Mais antigas que 1 mês",
"otay": "Mais antigas que 1 ano",
"plsCrt": "Use o botão mais para criar uma",
"ehwmp": "Coma saudavelmente com planejamento de refeições!",
"selMT": "Selecione tipo de refeição",
"ystr": "Ontem",
"tmrw": "Amanhã",
"tdy": "Hoje",
"cpy": "cópia",
"d": "Dia",
"wk": "Semana",
"mnth": "Mês",
"calVM": "Modo de vista de calendário",
"oAP": "%1$s decorrendo, %2$s pausado",
"ttv": "Pressionar para ver",
"dismissAll": "Rejeitar todos os temporizadores",
"dismiss": "Rejeitar",
"texp": "%s temporizadores expiraram",
"prstTU": "Tempo predefinido atualiado",
"ccwt": "Cozinhe co confiança com temporizadores!",
"random": "Aleatória",
"nvr": "Nunca",
"gtD": "Ir à data",
"rstBtn": "REINICIAR",
"add": "Adicionar",
"ksavr": "Manter tela ligada ao ver receitas"
} }

View file

@ -14,7 +14,7 @@
"Chinese": "Chinesa", "Chinese": "Chinesa",
"clove": "bulbo", "clove": "bulbo",
"cm": "cm", "cm": "cm",
"Created": "Criada", "Created": "Criado",
"cup": "copo", "cup": "copo",
"Cup": "Copo", "Cup": "Copo",
"Danish": "Dinamarquesa", "Danish": "Dinamarquesa",
@ -23,7 +23,7 @@
"Difficulty level": "Nível de dificuldade", "Difficulty level": "Nível de dificuldade",
"dinner": "Jantar", "dinner": "Jantar",
"dozen": "dúzia", "dozen": "dúzia",
"drop": "gota", "drop": "solta",
"dsp": "colher de sobremesa", "dsp": "colher de sobremesa",
"Easy": "Fácil", "Easy": "Fácil",
"Egyptian": "Egípcia", "Egyptian": "Egípcia",
@ -87,7 +87,7 @@
"planner": "Plano de refeições", "planner": "Plano de refeições",
"Portuguese": "Portuguesa", "Portuguese": "Portuguesa",
"Poultry": "Aves", "Poultry": "Aves",
"Pound": "Libra", "Pound": "Pound",
"pt": "pt", "pt": "pt",
"qt": "qt", "qt": "qt",
"Quickest first": "Mais rápidas primeiro", "Quickest first": "Mais rápidas primeiro",
@ -100,8 +100,8 @@
"Scottish": "Escocesa", "Scottish": "Escocesa",
"Seafood": "Marisco", "Seafood": "Marisco",
"Serving": "Porção", "Serving": "Porção",
"SET": "APLICAR", "SET": "DEFINIR",
"Settings": "Configurações", "Settings": "Definições",
"Side dishes": "Acompanhamentos", "Side dishes": "Acompanhamentos",
"Slowest first": "Mais lentas primeiro", "Slowest first": "Mais lentas primeiro",
"small": "pequeno", "small": "pequeno",
@ -124,8 +124,8 @@
"Undefined": "Indefinido", "Undefined": "Indefinido",
"unit": "unidade", "unit": "unidade",
"Unit": "Unidade", "Unit": "Unidade",
"Vegan": "Vegana", "Vegan": "Vegano",
"Vegetarian": "Vegetariana", "Vegetarian": "Vegetariano",
"Vietnamese": "Vietnamita", "Vietnamese": "Vietnamita",
"yesterday": "ontem", "yesterday": "ontem",
"noAccSensor": "O sensor do acelerómetro ou está desativado ou não está a funcionar", "noAccSensor": "O sensor do acelerómetro ou está desativado ou não está a funcionar",
@ -133,12 +133,12 @@
"rmCuiInfo": "Está prestes a retirar %s da lista de cozinha", "rmCuiInfo": "Está prestes a retirar %s da lista de cozinha",
"rmUInfo": "Está prestes a remover %s da lista de unidades", "rmUInfo": "Está prestes a remover %s da lista de unidades",
"rmYUInfo": "Está prestes a remover %s da lista de unidades de porções", "rmYUInfo": "Está prestes a remover %s da lista de unidades de porções",
"sVw": "Agitar para ver uma receita aleatória", "sVw": "Sacudir para ver a receita aleatória",
"sVwInfo": "Ajuda-o a escolher o que deve cozinhar quando não consegue decidir", "sVwInfo": "Ajuda-o a escolher o que deve cozinhar quando não consegue decidir",
"swm": "Começa na segunda-feira", "swm": "Começa na segunda-feira",
"sysDef": "Padrão do sistema", "sysDef": "Padrão do sistema",
"title": "Título", "title": "Título",
"tLInfo": "As receitas que quer experimentar mais tarde estão mostradas aqui", "tLInfo": "As receitas que quer experimentar mais tarde estão listadas aqui",
"triedInfo": "Experimentou esta receita %s", "triedInfo": "Experimentou esta receita %s",
"trnsl": "Traduzir", "trnsl": "Traduzir",
"ts": "Etiquetas", "ts": "Etiquetas",
@ -148,32 +148,36 @@
"wAgo": "%s semanas atrás", "wAgo": "%s semanas atrás",
"photogrid": "Grelha de fotos", "photogrid": "Grelha de fotos",
"opts": "Opções", "opts": "Opções",
"October": "Outubro",
"nwYiU": "Nova unidade de porção", "nwYiU": "Nova unidade de porção",
"nwCat": "Nova categoria", "nwCat": "Nova categoria",
"November": "Novembro",
"nos": "Notas", "nos": "Notas",
"noRecsInL": "Nenhuma das receitas aqui apresentadas corresponde à sua pesquisa", "noRecsInL": "Nenhuma das receitas aqui apresentadas corresponde à sua pesquisa",
"fltr": "Filtro", "fltr": "Filtro",
"Filtered recipes": "Receitas filtradas", "Filtered recipes": "Receitas filtradas",
"February": "Fevereiro",
"expSuc": "Exportado com sucesso", "expSuc": "Exportado com sucesso",
"expip": "Exportação em curso", "expip": "Exportação em curso",
"expBu": "Exportar cópia de segurança completa", "expBu": "Exportar apoio total",
"editRec": "Editar receita", "editRec": "Editar receita",
"donate": "Doação", "donate": "Doação",
"disc": "Esta receita tem alterações por guardar. O que quer fazer?", "disc": "Esta receita tem alterações não guardadas. O que gostaria de fazer?",
"detailed": "Detalhado", "detailed": "Detalhado",
"delRecsInfo": "Está prestes a eliminar permanentemente %s", "delRecsInfo": "Está prestes a eliminar permanentemente %s",
"delRecInfo": "Está prestes a eliminar permanentemente a receita %s", "delRecInfo": "Está prestes a eliminar permanentemente a receita %s",
"December": "Dezembro",
"db": "Base de dados", "db": "Base de dados",
"dAgo": "%s dias atrás", "dAgo": "%s dias atrás",
"cui": "Cozinha", "cui": "Cozinha",
"cPic": "Recortar fotografia", "cPic": "Foto do corte",
"cookT": "Tempo de cozedura", "cookT": "Tempo de cozedura",
"conf": "Confirme", "conf": "Confirme",
"cmbs": "Combinações", "cmbs": "Combinações",
"cat": "Categoria", "cat": "Categoria",
"buMod": "O ficheiro da cópia de segurança foi alterado noutro local", "buMod": "O ficheiro de cópia de segurança foi modificado noutro local",
"buInfo": "Gera um ficheiro ZIP contendo todos os seus dados que podem ser importados de volta", "buInfo": "Gera um ficheiro ZIP contendo todos os seus dados que podem ser importados de volta",
"buInc": "O ficheiro da cópia de segurança está mal formado ou corrupto", "buInc": "Ficheiro da cópia de segurança está mal formado ou corrupto",
"buFol": "Pasta da cópia de segurança", "buFol": "Pasta da cópia de segurança",
"buEmp": "O ficheiro da cópia de segurança está vazio", "buEmp": "O ficheiro da cópia de segurança está vazio",
"Black": "Preto", "Black": "Preto",
@ -182,23 +186,30 @@
"buto": "Cópia de segurança guardada em %s", "buto": "Cópia de segurança guardada em %s",
"restDone": "Reposição feita", "restDone": "Reposição feita",
"restCuiL": "Repor a lista de cozinha", "restCuiL": "Repor a lista de cozinha",
"restCatL": "Repor lista de categorias", "restCatL": "Reiniciar lista de categorias",
"rest": "Repor", "rest": "Reiniciar",
"resNF": "Receita não encontrada", "resNF": "Receita não encontrada",
"req": "Necessário %s", "req": "Necessárias %s",
"recU": "Atualizado:", "recU": "Atualizado:",
"recTitle": "A minha receita saudável", "recTitle": "A minha receita saudável",
"recs": "receitas", "recs": "receitas",
"recRm": "Receita removida", "recRm": "Receita retirada",
"recPic": "Fotografia da receita", "recPic": "Fotografia de receita",
"recListEmp": "Nada aqui! Adicione algumas receitas e tente novamente", "recListEmp": "Nada aqui! Adicione algumas receitas e tente novamente",
"recI": "Importadas:", "recI": "Importado:",
"recF": "receitas encontradas", "recF": "receitas encontradas",
"recE": "Já existem:", "recE": "Já existem:",
"rec": "Receita", "rec": "Receita",
"sysDefB": "Padrão do sistema + preto", "THU": "QUI",
"WED": "QUA",
"TUE": "TER",
"SUN": "DOM",
"SAT": "SÁB",
"MON": "SEG",
"FRI": "SEX",
"sysDefB": "Padrão do sistema + Preto",
"trySer": "PROCURAR EM TODAS AS RECEITAS?", "trySer": "PROCURAR EM TODAS AS RECEITAS?",
"stp": "Etapa %s", "stp": "Etapa",
"stars": "Classificação por estrelas", "stars": "Classificação por estrelas",
"sru": "Partilhar receita usando...", "sru": "Partilhar receita usando...",
"srt": "Ordenar", "srt": "Ordenar",
@ -207,6 +218,7 @@
"simple": "Simples", "simple": "Simples",
"shr": "Partilhar", "shr": "Partilhar",
"ser": "Pesquisar", "ser": "Pesquisar",
"September": "Setembro",
"selRec": "Selecione a receita", "selRec": "Selecione a receita",
"rst": "REINICIAR", "rst": "REINICIAR",
"rp": "Remover fotografia", "rp": "Remover fotografia",
@ -217,11 +229,11 @@
"yld": "Porção", "yld": "Porção",
"restYUL": "Repor lista de unidades de porções", "restYUL": "Repor lista de unidades de porções",
"restUL": "Repor lista de unidades", "restUL": "Repor lista de unidades",
"restInfo": "A reposição de uma lista eliminará as entradas criadas pelo utilizador e restaurará as entradas predefinidas. As receitas existentes não serão afetadas.", "restInfo": "A redefinição de uma lista eliminará as entradas criadas pelo utilizador e restaurará as entradas predefinidas. As receitas existentes não serão afetadas.",
"rBtn": "REMOVER", "rBtn": "REMOVER",
"priv": "Política de privacidade", "priv": "Política de privacidade",
"prepT": "Tempo de preparação", "prepT": "Tempo de preparação",
"plsAdd": "Use o botão + para adicionar uma", "plsAdd": "Use o botão mais para adicionar uma",
"pht": "Fotografia da receita", "pht": "Fotografia da receita",
"noRecs": "Nenhuma receita corresponde à pesquisa", "noRecs": "Nenhuma receita corresponde à pesquisa",
"noFavs": "Ainda não tem favoritos", "noFavs": "Ainda não tem favoritos",
@ -232,13 +244,18 @@
"newRec": "Nova receita", "newRec": "Nova receita",
"newCui": "Nova cozinha", "newCui": "Nova cozinha",
"minimal": "Mínimo", "minimal": "Mínimo",
"May": "Maio",
"March": "Março",
"mAgo": "%s meses atrás", "mAgo": "%s meses atrás",
"ltAgo": "há muito tempo", "ltAgo": "há muito tempo",
"listVM": "Modo de vista em lista", "listVM": "Modo de vista em lista",
"lang": "Idioma", "lang": "Idioma",
"kEdit": "CONTINUAR A EDITAR", "kEdit": "CONTINUAR A EDITAR",
"June": "Junho",
"July": "Julho",
"joinTG": "Junte-se ao grupo no Telegram", "joinTG": "Junte-se ao grupo no Telegram",
"it": "Item %s", "January": "Janeiro",
"it": "Item",
"invFile": "Ficheiro inválido", "invFile": "Ficheiro inválido",
"intf": "Interface", "intf": "Interface",
"inss": "Instruções", "inss": "Instruções",
@ -256,7 +273,9 @@
"dBtn": "ELIMINAR", "dBtn": "ELIMINAR",
"conBtn": "CONTINUAR", "conBtn": "CONTINUAR",
"cBtn": "CANCELAR", "cBtn": "CANCELAR",
"August": "Agosto",
"aStpBtn": "ADICIONAR PASSO", "aStpBtn": "ADICIONAR PASSO",
"April": "Abril",
"appRst": "É necessário reiniciar a aplicação", "appRst": "É necessário reiniciar a aplicação",
"apply": "APLICAR", "apply": "APLICAR",
"appInfo": "EnRecipes é um livro de receitas digital de código aberto, amigo da privacidade, que lhe permite criar, gerir e partilhar as suas receitas", "appInfo": "EnRecipes é um livro de receitas digital de código aberto, amigo da privacidade, que lhe permite criar, gerir e partilhar as suas receitas",
@ -284,47 +303,10 @@
"hour": "hora", "hour": "hora",
"hours": "horas", "hours": "horas",
"seconds": "segundos", "seconds": "segundos",
"tmrvbrt": "Vibrador do temporizador", "tmrvbrt": "Vibrador temporizador",
"tmrSnd": "Som do temporizador", "tmrSnd": "Som temporizador",
"aTPrst": "Adicionado às predefinições", "aTPrst": "Adicionado às predefinições",
"fwr": "para qual receita?", "fwr": "para que receita?",
"prstBtn": "PREDEFINIÇÕES", "tmrPrsts": "Predefinições temporizadas",
"notifSetg": "Configurações de notificação", "prstBtn": "PRIMEIROS"
"tmrRm": "Temporizador removido",
"delPrst": "Está prestes a eliminar %s das predefinições",
"prsts": "Predefinições",
"ttv": "Tocar para ver",
"dismissAll": "Rejeitar todos os temporizadores",
"dismiss": "Rejeitar",
"texp": "%s temporizadores expiraram",
"wDBy": "%1$s foi adiado por %2$s",
"prstTU": "Tempo predefinido atualizado",
"ccwt": "Cozinhe com segurança com temporizadores!",
"gtD": "Ir à data",
"random": "Aleatória",
"nvr": "Nunca",
"otaw": "Mais antigas que 1 semana",
"otam": "Mais antigas que 1 mês",
"otay": "Mais antigas que 1 ano",
"admp": "Eliminar automaticamente planos de refeições",
"plsCrt": "Use o botão + para criar uma",
"ehwmp": "Coma saudavelmente com planificações de refeições!",
"selMT": "Selecionar tipo de refeição",
"ystr": "Ontem",
"tmrw": "Amanhã",
"tdy": "Hoje",
"cpy": "cópia",
"d": "Dia",
"wk": "Semana",
"mnth": "Mês",
"calVM": "Modo de vista tipo calendário",
"oAP": "%1$s a decorrer, %2$s em pausa",
"rstBtn": "REINICIAR",
"add": "Adicionar",
"esgb": "Deslizar para a borda para voltar",
"esgbInfo": "Desative esta opção se tiver problemas ao navegar",
"ksavrInfo": "Impede que o ecrã desligue ao ver uma receita",
"ksavr": "Manter ecrã ligado ao ver receitas",
"addSectBtn": "ADICIONAR SECÇÃO",
"sect": "Secção %s"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes - это цифровая кулинарная книга с открытым исходным кодом, обеспечивающая конфиденциальность, которая позволяет вам создавать, управлять и делиться своими рецептами", "appInfo": "EnRecipes - это цифровая кулинарная книга с открытым исходным кодом, обеспечивающая конфиденциальность, которая позволяет вам создавать, управлять и делиться своими рецептами",
"apply": "ПРИМЕНЯТЬ", "apply": "ПРИМЕНЯТЬ",
"appRst": "Требуется перезапуск приложения", "appRst": "Требуется перезапуск приложения",
"April": "Апрель",
"aStpBtn": "ДОБАВИТЬ ШАГ", "aStpBtn": "ДОБАВИТЬ ШАГ",
"August": "Август",
"Barbecue": "Барбекю", "Barbecue": "Барбекю",
"Beverages": "Напитки", "Beverages": "Напитки",
"Black": "Чернить", "Black": "Чернить",
@ -51,6 +53,7 @@
"Dark": "Темная", "Dark": "Темная",
"db": "База данных", "db": "База данных",
"dBtn": "УДАЛИТЬ", "dBtn": "УДАЛИТЬ",
"December": "Декабрь",
"delRecInfo": "Вы собираетесь полностью удалить рецепт %s", "delRecInfo": "Вы собираетесь полностью удалить рецепт %s",
"delRecsInfo": "Вы собираетесь безвозвратно удалить %s", "delRecsInfo": "Вы собираетесь безвозвратно удалить %s",
"Desserts": "Десерты", "Desserts": "Десерты",
@ -72,12 +75,14 @@
"expip": "Выполняется экспорт", "expip": "Выполняется экспорт",
"expSuc": "Успех экспорта", "expSuc": "Успех экспорта",
"favourites": "Избранное", "favourites": "Избранное",
"February": "Февраль",
"Filipino": "Филиппинская", "Filipino": "Филиппинская",
"Filtered recipes": "Отфильтрованные рецепты", "Filtered recipes": "Отфильтрованные рецепты",
"fl oz": "жидкая унция", "fl oz": "жидкая унция",
"fltr": "Фильтр", "fltr": "Фильтр",
"Fluid Ounce": "Жидкая унция", "Fluid Ounce": "Жидкая унция",
"French": "Французская", "French": "Французская",
"FRI": "ПТ",
"fsList": "Здесь будут перечислены рецепты, которые вы отметили как любимые", "fsList": "Здесь будут перечислены рецепты, которые вы отметили как любимые",
"g": "г", "g": "г",
"gal": "галлон", "gal": "галлон",
@ -106,9 +111,12 @@
"it": "Ингредиент", "it": "Ингредиент",
"Italian": "Итальянская", "Italian": "Итальянская",
"Jamaican": "Ямайская", "Jamaican": "Ямайская",
"January": "Январь",
"Japanese": "Японская", "Japanese": "Японская",
"Jewish": "Еврейская", "Jewish": "Еврейская",
"joinTG": "Присоединяйтесь к группе в Telegram", "joinTG": "Присоединяйтесь к группе в Telegram",
"July": "Июль",
"June": "Июнь",
"kEdit": "ПРОДОЛЖИТЬ РЕДАКТИРОВАНИЕ", "kEdit": "ПРОДОЛЖИТЬ РЕДАКТИРОВАНИЕ",
"Kenyan": "Кенийская", "Kenyan": "Кенийская",
"kg": "кг", "kg": "кг",
@ -128,6 +136,8 @@
"lunch": "Обед", "lunch": "Обед",
"mAgo": "%s месяцев назад", "mAgo": "%s месяцев назад",
"Main dishes": "Основные блюда", "Main dishes": "Основные блюда",
"March": "Март",
"May": "Май",
"Meat": "Мясо", "Meat": "Мясо",
"medium": "средний", "medium": "средний",
"Mexican": "Мексиканская", "Mexican": "Мексиканская",
@ -137,6 +147,7 @@
"minimal": "Минимальный", "minimal": "Минимальный",
"ml": "мл", "ml": "мл",
"Moderate": "Средний", "Moderate": "Средний",
"MON": "ПН",
"newCui": "Новая кухня", "newCui": "Новая кухня",
"Newest first": "Сначала новое", "Newest first": "Сначала новое",
"newRec": "Новый рецепт", "newRec": "Новый рецепт",
@ -151,8 +162,10 @@
"noRecs": "По вашему запросу ничего не найдено", "noRecs": "По вашему запросу ничего не найдено",
"noRecsInL": "Ни один из рецептов здесь не соответствует вашему запросу", "noRecsInL": "Ни один из рецептов здесь не соответствует вашему запросу",
"nos": "Заметки", "nos": "Заметки",
"November": "Ноябрь",
"nwCat": "Новая категория", "nwCat": "Новая категория",
"nwYiU": "Новая единица измерения подачи", "nwYiU": "Новая единица измерения подачи",
"October": "Октябрь",
"OK": "ОК", "OK": "ОК",
"Oldest first": "Сначала старые", "Oldest first": "Сначала старые",
"opts": "Параметры", "opts": "Параметры",
@ -210,10 +223,12 @@
"rst": "ПЕРЕЗАПУСТИТЬ", "rst": "ПЕРЕЗАПУСТИТЬ",
"Russian": "Русская", "Russian": "Русская",
"Salads": "Салаты", "Salads": "Салаты",
"SAT": "СБ",
"Sauces": "Соусы", "Sauces": "Соусы",
"Scottish": "Шотландская", "Scottish": "Шотландская",
"Seafood": "Морепродукты", "Seafood": "Морепродукты",
"selRec": "Выберите рецепт", "selRec": "Выберите рецепт",
"September": "Сентябрь",
"ser": "Поиск", "ser": "Поиск",
"Serving": "Порция", "Serving": "Порция",
"SET": "УСТАНОВИТЬ", "SET": "УСТАНОВИТЬ",
@ -235,6 +250,7 @@
"stick": "палочка", "stick": "палочка",
"stp": "Шаг", "stp": "Шаг",
"strAdd": "Начните добавлять свои рецепты!", "strAdd": "Начните добавлять свои рецепты!",
"SUN": "ВС",
"sVw": "Встряхнуть, чтобы показать случайный рецепт", "sVw": "Встряхнуть, чтобы показать случайный рецепт",
"sVwInfo": "Помогает выбрать, что приготовить, когда вы не можете решить", "sVwInfo": "Помогает выбрать, что приготовить, когда вы не можете решить",
"Swedish": "Шведская", "Swedish": "Шведская",
@ -245,6 +261,7 @@
"Teaspoon": "Чайная ложка", "Teaspoon": "Чайная ложка",
"Thai": "Тайская", "Thai": "Тайская",
"Theme": "Тема", "Theme": "Тема",
"THU": "ЧТ",
"title": "Заголовок", "title": "Заголовок",
"tLInfo": "Здесь будут перечислены рецепты, которые вы хотите попробовать позже", "tLInfo": "Здесь будут перечислены рецепты, которые вы хотите попробовать позже",
"today": "сегодня", "today": "сегодня",
@ -255,6 +272,7 @@
"ts": "Теги", "ts": "Теги",
"tsInfo": "разделяйте пробелами", "tsInfo": "разделяйте пробелами",
"tsp": "ч.л..", "tsp": "ч.л..",
"TUE": "ВТ",
"Turkish": "Турецкая", "Turkish": "Турецкая",
"Undefined": "Не указано", "Undefined": "Не указано",
"unit": "единица измерения", "unit": "единица измерения",
@ -265,6 +283,7 @@
"Vegetarian": "Вегетарианский", "Vegetarian": "Вегетарианский",
"Vietnamese": "Вьетнамская", "Vietnamese": "Вьетнамская",
"wAgo": "%s недель назад", "wAgo": "%s недель назад",
"WED": "СР",
"yesterday": "вчера", "yesterday": "вчера",
"yieldQ": "Подавать в количестве", "yieldQ": "Подавать в количестве",
"yieldU": "Подавать в", "yieldU": "Подавать в",
@ -279,6 +298,7 @@
"stop": "Стоп", "stop": "Стоп",
"delay": "Задержка", "delay": "Задержка",
"prstBtn": "ПРЕЗЕТЫ", "prstBtn": "ПРЕЗЕТЫ",
"tmrPrsts": "Предустановки таймера",
"fwr": "для какого рецепта?", "fwr": "для какого рецепта?",
"aTPrst": "Добавлено в предустановки", "aTPrst": "Добавлено в предустановки",
"tmrSnd": "Звук таймера", "tmrSnd": "Звук таймера",
@ -288,9 +308,5 @@
"minutes": "минут", "minutes": "минут",
"hour": "час", "hour": "час",
"hours": "часы", "hours": "часы",
"seconds": "секунды", "seconds": "секунды"
"prsts": "Пресеты",
"delPrst": "Вы собираетесь удалить %s из предустановок",
"tmrRm": "Таймер удален",
"notifSetg": "Настройки уведомлений"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "என்ரெசிபீஸ் என்பது ஒரு திறந்த மூல, தனியுரிமைக்கு ஏற்ற டிஜிட்டல் சமையல் புத்தகம், இது உங்கள் சமையல் குறிப்புகளை உருவாக்க, நிர்வகிக்க மற்றும் பகிர உதவுகிறது", "appInfo": "என்ரெசிபீஸ் என்பது ஒரு திறந்த மூல, தனியுரிமைக்கு ஏற்ற டிஜிட்டல் சமையல் புத்தகம், இது உங்கள் சமையல் குறிப்புகளை உருவாக்க, நிர்வகிக்க மற்றும் பகிர உதவுகிறது",
"apply": "இடு", "apply": "இடு",
"appRst": "பயன்பாட்டு மறுதொடக்கம் தேவை", "appRst": "பயன்பாட்டு மறுதொடக்கம் தேவை",
"April": "ஏப்ரல்",
"aStpBtn": "செய்முறையைச் சேர்", "aStpBtn": "செய்முறையைச் சேர்",
"August": "ஆகஸ்ட்",
"Barbecue": "பார்பெக்யூ", "Barbecue": "பார்பெக்யூ",
"Beverages": "பானங்கள்", "Beverages": "பானங்கள்",
"Black": "கருப்பு", "Black": "கருப்பு",
@ -51,6 +53,7 @@
"Dark": "இருள்", "Dark": "இருள்",
"db": "தரவுத்தளம்", "db": "தரவுத்தளம்",
"dBtn": "நீக்கு", "dBtn": "நீக்கு",
"December": "டிசம்பர்",
"delRecInfo": "நீங்கள் %s சமையல் குறிப்பை நிரந்தரமாக நீக்க உள்ளீர்கள்", "delRecInfo": "நீங்கள் %s சமையல் குறிப்பை நிரந்தரமாக நீக்க உள்ளீர்கள்",
"delRecsInfo": "நீங்கள் %s நிரந்தரமாக நீக்க உள்ளீர்கள்", "delRecsInfo": "நீங்கள் %s நிரந்தரமாக நீக்க உள்ளீர்கள்",
"Desserts": "இனிப்புகள்", "Desserts": "இனிப்புகள்",
@ -72,18 +75,20 @@
"expip": "ஏற்றுமதி செயலில் உள்ளது", "expip": "ஏற்றுமதி செயலில் உள்ளது",
"expSuc": "வெற்றிகரமாக ஏற்றுமதி செய்யப்பட்டது", "expSuc": "வெற்றிகரமாக ஏற்றுமதி செய்யப்பட்டது",
"favourites": "பிடித்தவை", "favourites": "பிடித்தவை",
"February": "பிப்ரவரி",
"Filipino": "பிலிப்பைன்ஸ்", "Filipino": "பிலிப்பைன்ஸ்",
"Filtered recipes": "வடிகட்டப்பட்ட சமையல் குறிப்புகள்", "Filtered recipes": "வடிகட்டப்பட்ட சமையல் குறிப்புகள்",
"fl oz": "திரவ அவுன்ஸ", "fl oz": "திரவ அவுன்ஸ",
"fltr": "வடிகட்டு", "fltr": "வடிகட்டு",
"Fluid Ounce": "திரவ அவுன்ஸ்", "Fluid Ounce": "திரவ அவுன்ஸ்",
"French": "பிரஞ்சு", "French": "பிரஞ்சு",
"FRI": "வெ",
"fsList": "உங்களுக்கு பிடித்த சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்", "fsList": "உங்களுக்கு பிடித்த சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்",
"g": "கிராம்", "g": "கிராம்",
"gal": "கேலன்", "gal": "கேலன்",
"Gallon": "கேலன்", "Gallon": "கேலன்",
"German": "ஜெர்மன்", "German": "ஜெர்மன்",
"gh": "GitHub இல் காண்க", "gh": "கிட்ஹப்பில் காண்க",
"Gram": "கிராம்", "Gram": "கிராம்",
"Greek": "கிரேக்க", "Greek": "கிரேக்க",
"grid": "கட்டம்", "grid": "கட்டம்",
@ -103,12 +108,15 @@
"intf": "இடைமுகம்", "intf": "இடைமுகம்",
"invFile": "தவறான கோப்பு", "invFile": "தவறான கோப்பு",
"Irish": "ஐரிஷ்", "Irish": "ஐரிஷ்",
"it": "பொருள் %s", "it": "பொருள்",
"Italian": "இத்தாலிய", "Italian": "இத்தாலிய",
"Jamaican": "ஜமைக்கா", "Jamaican": "ஜமைக்கா",
"January": "ஜனவரி",
"Japanese": "ஜப்பானிய", "Japanese": "ஜப்பானிய",
"Jewish": "யூத", "Jewish": "யூத",
"joinTG": "டெலிகிராம் குழுவில் சேர்க", "joinTG": "டெலிகிராம் குழுவில் சேர்க",
"July": "ஜூலை",
"June": "ஜூன்",
"kEdit": "தொடர்ந்து திருத்து", "kEdit": "தொடர்ந்து திருத்து",
"Kenyan": "கென்ய", "Kenyan": "கென்ய",
"kg": "கிலோகிராம்", "kg": "கிலோகிராம்",
@ -128,6 +136,8 @@
"lunch": "மதிய உணவு", "lunch": "மதிய உணவு",
"mAgo": "%s மாதங்களுக்கு முன்பு", "mAgo": "%s மாதங்களுக்கு முன்பு",
"Main dishes": "முக்கிய உணவுகள்", "Main dishes": "முக்கிய உணவுகள்",
"March": "மார்ச்",
"May": "மே",
"Meat": "இறைச்சி", "Meat": "இறைச்சி",
"medium": "நடுத்தர", "medium": "நடுத்தர",
"Mexican": "மெக்சிகன்", "Mexican": "மெக்சிகன்",
@ -137,6 +147,7 @@
"minimal": "குறைந்தபட்சம்", "minimal": "குறைந்தபட்சம்",
"ml": "மில்லிலிட்டர்", "ml": "மில்லிலிட்டர்",
"Moderate": "மிதமானது", "Moderate": "மிதமானது",
"MON": "தி",
"newCui": "புதிய உணவு வகை", "newCui": "புதிய உணவு வகை",
"Newest first": "புதியது முதலில்", "Newest first": "புதியது முதலில்",
"newRec": "புதிய சமையல் குறிப்பு", "newRec": "புதிய சமையல் குறிப்பு",
@ -151,8 +162,10 @@
"noRecs": "உங்கள் தேடலுடன் எந்த சமையல் குறிப்புகளும் பொருந்தவில்லை", "noRecs": "உங்கள் தேடலுடன் எந்த சமையல் குறிப்புகளும் பொருந்தவில்லை",
"noRecsInL": "இங்குள்ள சமையல் குறிப்புகள் எதுவும் உங்கள் தேடலுடன் பொருந்தவில்லை", "noRecsInL": "இங்குள்ள சமையல் குறிப்புகள் எதுவும் உங்கள் தேடலுடன் பொருந்தவில்லை",
"nos": "குறிப்புகள்", "nos": "குறிப்புகள்",
"November": "நவம்பர்",
"nwCat": "புதிய பகுப்பு", "nwCat": "புதிய பகுப்பு",
"nwYiU": "புதிய மகசூல் அலகு", "nwYiU": "புதிய மகசூல் அலகு",
"October": "அக்டோபர்",
"OK": "சரி", "OK": "சரி",
"Oldest first": "பழையன முதலில்", "Oldest first": "பழையன முதலில்",
"opts": "விருப்பங்கள்", "opts": "விருப்பங்கள்",
@ -166,7 +179,7 @@
"Piece": "துண்டு", "Piece": "துண்டு",
"pinch": "கிள்ளு", "pinch": "கிள்ளு",
"planner": "உணவுத் திட்டம்", "planner": "உணவுத் திட்டம்",
"plsAdd": "ஒன்றைச் சேர்க்க + பொத்தானைப் பயன்படுத்தவும்", "plsAdd": "ஒன்றைச் சேர்க்க பிளஸ் பொத்தானைப் பயன்படுத்தவும்",
"Portuguese": "போர்த்துகீசியம்", "Portuguese": "போர்த்துகீசியம்",
"Poultry": "கோழி", "Poultry": "கோழி",
"Pound": "பவுண்டு", "Pound": "பவுண்டு",
@ -210,10 +223,12 @@
"rst": "மறுதொடக்கம்", "rst": "மறுதொடக்கம்",
"Russian": "ரஷ்ய", "Russian": "ரஷ்ய",
"Salads": "சாலடுகள்", "Salads": "சாலடுகள்",
"SAT": "ச",
"Sauces": "சாஸ்கள்", "Sauces": "சாஸ்கள்",
"Scottish": "ஸ்காட்டிஷ்", "Scottish": "ஸ்காட்டிஷ்",
"Seafood": "கடல் உணவு", "Seafood": "கடல் உணவு",
"selRec": "சமையல் குறிப்பைத் தேர்ந்தெடுக்கவும்", "selRec": "சமையல் குறிப்பைத் தேர்ந்தெடுக்கவும்",
"September": "செப்டம்பர்",
"ser": "தேடு", "ser": "தேடு",
"Serving": "கூறு", "Serving": "கூறு",
"SET": "அமை", "SET": "அமை",
@ -233,8 +248,9 @@
"sru": "சமையல் குறிப்பை பகிரவும்...", "sru": "சமையல் குறிப்பை பகிரவும்...",
"stars": "நட்சத்திர மதிப்பீடு", "stars": "நட்சத்திர மதிப்பீடு",
"stick": "குச்சி", "stick": "குச்சி",
"stp": "செய்முறை %s", "stp": "செய்முறை",
"strAdd": "உங்கள் சமையல் குறிப்புகளைச் சேர்க்கத் தொடங்குங்கள்!", "strAdd": "உங்கள் சமையல் குறிப்புகளைச் சேர்க்கத் தொடங்குங்கள்!",
"SUN": "ஞா",
"sVw": "சாதனத்தை அசைத்து சீரற்ற சமையல் குறிப்பை காண்க", "sVw": "சாதனத்தை அசைத்து சீரற்ற சமையல் குறிப்பை காண்க",
"sVwInfo": "நீங்கள் தீர்மானிக்க முடியாதபோது என்ன சமைக்கலாம் என்பதைத் தேர்வுசெய்ய உதவும்", "sVwInfo": "நீங்கள் தீர்மானிக்க முடியாதபோது என்ன சமைக்கலாம் என்பதைத் தேர்வுசெய்ய உதவும்",
"Swedish": "ஸ்வீடிஷ்", "Swedish": "ஸ்வீடிஷ்",
@ -245,6 +261,7 @@
"Teaspoon": "டீஸ்பூன்", "Teaspoon": "டீஸ்பூன்",
"Thai": "தாய்", "Thai": "தாய்",
"Theme": "தீம்", "Theme": "தீம்",
"THU": "வி",
"title": "தலைப்பு", "title": "தலைப்பு",
"tLInfo": "நீங்கள் பின்னர் முயற்சிக்க விரும்பும் சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்", "tLInfo": "நீங்கள் பின்னர் முயற்சிக்க விரும்பும் சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்",
"today": "இன்று", "today": "இன்று",
@ -255,6 +272,7 @@
"ts": "குறிச்சொற்கள்", "ts": "குறிச்சொற்கள்",
"tsInfo": "இடைவெளிகளுடன் பிரிக்கவும்", "tsInfo": "இடைவெளிகளுடன் பிரிக்கவும்",
"tsp": "டீஸ்பூன்", "tsp": "டீஸ்பூன்",
"TUE": "செ",
"Turkish": "துருக்கிய", "Turkish": "துருக்கிய",
"Undefined": "வரையறுக்கப்படாதவை", "Undefined": "வரையறுக்கப்படாதவை",
"unit": "அலகு", "unit": "அலகு",
@ -265,67 +283,11 @@
"Vegetarian": "சைவம்", "Vegetarian": "சைவம்",
"Vietnamese": "வியட்நாமிய", "Vietnamese": "வியட்நாமிய",
"wAgo": "%s வாரங்களுக்கு முன்பு", "wAgo": "%s வாரங்களுக்கு முன்பு",
"WED": "பு",
"yesterday": "நேற்று", "yesterday": "நேற்று",
"yieldQ": "மகசூல் அளவு", "yieldQ": "மகசூல் அளவு",
"yieldU": "மகசூல் அலகு", "yieldU": "மகசூல் அலகு",
"yld": "மகசூல்", "yld": "மகசூல்",
"buto": "%s இல் காப்புப் பிரதி எடுக்கப்பட்டது", "buto": "%s இல் காப்புப் பிரதி எடுக்கப்பட்டது",
"sysDefB": "அமைப்பு இயல்புநிலை + கருப்பு", "sysDefB": "அமைப்பு இயல்புநிலை + கருப்பு"
"notifSetg": "அறிவிப்பு அமைப்புகள்",
"tmrRm": "டைமர் நீக்கப்பட்டது",
"seconds": "வினாடிகள்",
"hours": "மணி",
"hour": "மணி",
"minutes": "நிமிடங்கள்",
"minute": "நிமிடம்",
"dlyDur": "தாமத காலம்",
"tmrvbrt": "டைமர் அதிர்வு",
"tmrSnd": "டைமர் ஒலி",
"aTPrst": "முன்னமைவுகளில் சேர்க்கப்பட்டது",
"fwr": "எந்த சமையல் குறிப்புக்காக?",
"delPrst": "நீங்கள் முன்னமைவுகளிலிருந்து %s ஐ நீக்க உள்ளீர்கள்",
"prsts": "முன்னமைவுகள்",
"prstBtn": "முன்னமைவுகள்",
"tmr": "டைமர் %s",
"delay": "தாமதப்படுத்து",
"stop": "நிறுத்து",
"strtBtn": "துடங்கு",
"ntmr": "புதிய டைமர்",
"timer": "சமையல் டைமர்",
"sec": "வினாடி",
"gtD": "தேதிக்குச் செல்",
"random": "ஒழுங்குமுறையின்றி",
"prstTU": "முன்னமைவின் நேரம் புதுப்பிக்கப்பட்டது",
"ccwt": "டைமர்களுடன் நம்பிக்கையுடன் சமையுங்கள்!",
"ttv": "பார்க்க தட்டவும்",
"dismissAll": "அனைத்து டைமர்களையும் அகற்று",
"dismiss": "அகற்று",
"texp": "%s டைமர்கள் முடிந்துவிட்டன",
"wDBy": "%1$s %2$s தாமதமாக்கப்பட்டது",
"ystr": "நேற்று",
"tmrw": "நாளை",
"tdy": "இன்று",
"cpy": "நகல்",
"calVM": "கேலெண்டர் காட்சி முறை",
"oAP": "%1$s செயலில் உள்ளது,%2$s இடைநிறுத்தப்பட்டது",
"d": "நாள்",
"wk": "வாரம்",
"mnth": "மாதம்",
"nvr": "ஒருபோதும்",
"otaw": "ஒரு வாரத்திற்கும் மேலானது",
"otam": "ஒரு மாதத்திற்கும் மேலானது",
"otay": "ஒரு வருடத்திற்கும் மேலானது",
"admp": "உணவு திட்டங்களை தானாக நீக்கு",
"plsCrt": "ஒன்றை உருவாக்க + பொத்தானைப் பயன்படுத்தவும்",
"ehwmp": "உணவு திட்டங்களுடன் ஆரோக்கியமாக சாப்பிடுங்கள்!",
"selMT": "உணவு வகையைத் தேர்ந்தெடுக்கவும்",
"esgbInfo": "வழிசெலுத்தலில் சிக்கல்கள் இருந்தால் இந்த விருப்பத்தை முடக்குக",
"esgb": "விளிம்பிலிருந்து ஸ்வைப் செய்து பின் செல்",
"ksavrInfo": "சமையல் குறிப்பு பார்க்கும் போது திரையை உறக்கநிலைக்குச் செல்லாது தடுக்கும்",
"ksavr": "சமையல் குறிப்பு பார்க்கும் போது திரையை விழித்திரு",
"rstBtn": "மீட்டமை",
"add": "சேர்",
"sectRm": "பிரிவு நீக்கப்பட்டது",
"addSectBtn": "பிரிவைச் சேர்",
"sect": "பிரிவு %s"
} }

View file

@ -18,7 +18,9 @@
"appInfo": "నారెసిపీస్ అనేది ఓపెన్ సోర్స్, గోప్యతా-స్నేహపూర్వక డిజిటల్ కుక్‌బుక్, ఇది మీ వంటకాలను సృష్టించడానికి, నిర్వహించడానికి మరియు భాగస్వామ్యం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది", "appInfo": "నారెసిపీస్ అనేది ఓపెన్ సోర్స్, గోప్యతా-స్నేహపూర్వక డిజిటల్ కుక్‌బుక్, ఇది మీ వంటకాలను సృష్టించడానికి, నిర్వహించడానికి మరియు భాగస్వామ్యం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది",
"apply": "వర్తించు", "apply": "వర్తించు",
"appRst": "అప్లికేషన్ పున art ప్రారంభం అవసరం", "appRst": "అప్లికేషన్ పున art ప్రారంభం అవసరం",
"April": "ఏప్రిల్",
"aStpBtn": "దశను జోడించండి", "aStpBtn": "దశను జోడించండి",
"August": "ఆగస్టు",
"Barbecue": "బార్బెక్యూ", "Barbecue": "బార్బెక్యూ",
"Beverages": "పానీయాలు", "Beverages": "పానీయాలు",
"Black": "నలుపు", "Black": "నలుపు",
@ -51,6 +53,7 @@
"Dark": "ముదురు", "Dark": "ముదురు",
"db": "డేటాబేస్", "db": "డేటాబేస్",
"dBtn": "ఎంచుకోబడింది", "dBtn": "ఎంచుకోబడింది",
"December": "డిసెంబర్",
"delRecInfo": "మీరు %s రెసిపీని శాశ్వతంగా తొలగించబోతున్నారు", "delRecInfo": "మీరు %s రెసిపీని శాశ్వతంగా తొలగించబోతున్నారు",
"delRecsInfo": "మీరు %s ని శాశ్వతంగా తొలగించబోతున్నారు", "delRecsInfo": "మీరు %s ని శాశ్వతంగా తొలగించబోతున్నారు",
"Desserts": "డెజర్ట్స్", "Desserts": "డెజర్ట్స్",
@ -72,12 +75,14 @@
"expip": "ఎగుమతి పురోగతిలో ఉంది", "expip": "ఎగుమతి పురోగతిలో ఉంది",
"expSuc": "ఎగుమతి విజయం", "expSuc": "ఎగుమతి విజయం",
"favourites": "ఇష్టమైనవి", "favourites": "ఇష్టమైనవి",
"February": "ఫిబ్రవరి",
"Filipino": "ఫిలిపినో", "Filipino": "ఫిలిపినో",
"Filtered recipes": "ఫిల్టర్ చేసిన వంటకాలు", "Filtered recipes": "ఫిల్టర్ చేసిన వంటకాలు",
"fl oz": "ద్రవం oun న్స్", "fl oz": "ద్రవం oun న్స్",
"fltr": "ఫిల్టర్", "fltr": "ఫిల్టర్",
"Fluid Ounce": "ద్రవం oun న్స్", "Fluid Ounce": "ద్రవం oun న్స్",
"French": "ఫ్రెంచ్", "French": "ఫ్రెంచ్",
"FRI": "శుక్ర",
"fsList": "ఇష్టమైన వంటకాలు ఇంకా ఏమీ లేవు", "fsList": "ఇష్టమైన వంటకాలు ఇంకా ఏమీ లేవు",
"g": "గ్రాము", "g": "గ్రాము",
"gal": "గాలన్", "gal": "గాలన్",
@ -103,12 +108,15 @@
"intf": "ఇంటర్ఫేస్", "intf": "ఇంటర్ఫేస్",
"invFile": "చెల్లుబాటులోలేని ఫైలు", "invFile": "చెల్లుబాటులోలేని ఫైలు",
"Irish": "ఐరిష్", "Irish": "ఐరిష్",
"it": "అంశం %s", "it": "అంశం",
"Italian": "ఇటాలియన్", "Italian": "ఇటాలియన్",
"Jamaican": "జమైకా", "Jamaican": "జమైకా",
"January": "జనవరి",
"Japanese": "జపనీస్", "Japanese": "జపనీస్",
"Jewish": "యూదుల", "Jewish": "యూదుల",
"joinTG": "టెలిగ్రామ్ సమూహంలో చేరండి", "joinTG": "టెలిగ్రామ్ సమూహంలో చేరండి",
"July": "జూలై",
"June": "జూన్",
"kEdit": "సవరణ కొనసాగించండి", "kEdit": "సవరణ కొనసాగించండి",
"Kenyan": "కెన్యా", "Kenyan": "కెన్యా",
"kg": "కిలోగ్రాము", "kg": "కిలోగ్రాము",
@ -128,6 +136,8 @@
"lunch": "భోజనం", "lunch": "భోజనం",
"mAgo": "%s నెలల క్రితం", "mAgo": "%s నెలల క్రితం",
"Main dishes": "ప్రధాన వంటకాలు", "Main dishes": "ప్రధాన వంటకాలు",
"March": "మార్చి",
"May": "మే",
"Meat": "మాంసం", "Meat": "మాంసం",
"medium": "మీడియం", "medium": "మీడియం",
"Mexican": "మెక్సికన్", "Mexican": "మెక్సికన్",
@ -137,6 +147,7 @@
"minimal": "కనిష్ట", "minimal": "కనిష్ట",
"ml": "మిల్లీలీటర్", "ml": "మిల్లీలీటర్",
"Moderate": "మోస్తరు", "Moderate": "మోస్తరు",
"MON": "సోమ",
"newCui": "కొత్త వంటకాలు", "newCui": "కొత్త వంటకాలు",
"Newest first": "క్రొత్తది మొదటిది", "Newest first": "క్రొత్తది మొదటిది",
"newRec": "కొత్త వంటకం", "newRec": "కొత్త వంటకం",
@ -151,8 +162,10 @@
"noRecs": "మీ శోధనకు వంటకాలు ఏవీ సరిపోలడం లేదు", "noRecs": "మీ శోధనకు వంటకాలు ఏవీ సరిపోలడం లేదు",
"noRecsInL": "ఇక్కడ ఉన్న వంటకాలు ఏవీ మీ శోధనతో సరిపోలడం లేదు", "noRecsInL": "ఇక్కడ ఉన్న వంటకాలు ఏవీ మీ శోధనతో సరిపోలడం లేదు",
"nos": "గమనికలు", "nos": "గమనికలు",
"November": "నవంబర్",
"nwCat": "కొత్త వర్గం", "nwCat": "కొత్త వర్గం",
"nwYiU": "కొత్త దిగుబడి యూనిట్", "nwYiU": "కొత్త దిగుబడి యూనిట్",
"October": "అక్టోబర్",
"OK": "అలాగే", "OK": "అలాగే",
"Oldest first": "పురాతన మొదటి", "Oldest first": "పురాతన మొదటి",
"opts": "ఎంపికలు", "opts": "ఎంపికలు",
@ -166,7 +179,7 @@
"Piece": "ముక్క", "Piece": "ముక్క",
"pinch": "చిటికెడు", "pinch": "చిటికెడు",
"planner": "భోజన ప్రణాళిక", "planner": "భోజన ప్రణాళిక",
"plsAdd": "ఒకదాన్ని జోడించడానికి + బటన్‌ను ఉపయోగించండి", "plsAdd": "ఒకదాన్ని జోడించడానికి ప్లస్ బటన్‌ను ఉపయోగించండి",
"Portuguese": "పోర్చుగీస్", "Portuguese": "పోర్చుగీస్",
"Poultry": "పౌల్ట్రీ", "Poultry": "పౌల్ట్రీ",
"Pound": "పౌండ్", "Pound": "పౌండ్",
@ -187,7 +200,7 @@
"recs": "వంటకాలు", "recs": "వంటకాలు",
"recTitle": "నా ఆరోగ్యకరమైన వంటకం", "recTitle": "నా ఆరోగ్యకరమైన వంటకం",
"recU": "నవీకరించబడింది:", "recU": "నవీకరించబడింది:",
"req": "అవసరమైన %s", "req": "అవసరమైన %",
"resNF": "రెసిపీ కనుగొనబడలేదు", "resNF": "రెసిపీ కనుగొనబడలేదు",
"rest": "రీసెట్ చేయండి", "rest": "రీసెట్ చేయండి",
"restCatL": "వర్గం జాబితాను రీసెట్ చేయండి", "restCatL": "వర్గం జాబితాను రీసెట్ చేయండి",
@ -210,10 +223,12 @@
"rst": "పునఃప్రారంభించు", "rst": "పునఃప్రారంభించు",
"Russian": "రష్యన్", "Russian": "రష్యన్",
"Salads": "సలాడ్లు", "Salads": "సలాడ్లు",
"SAT": "శని",
"Sauces": "సాస్", "Sauces": "సాస్",
"Scottish": "స్కాటిష్", "Scottish": "స్కాటిష్",
"Seafood": "సముద్రపు ఆహారం", "Seafood": "సముద్రపు ఆహారం",
"selRec": "రెసిపీని ఎంచుకోండి", "selRec": "రెసిపీని ఎంచుకోండి",
"September": "సెప్టెంబర్",
"ser": "శోధించు", "ser": "శోధించు",
"Serving": "అందిస్తోంది", "Serving": "అందిస్తోంది",
"SET": "సెట్", "SET": "సెట్",
@ -233,8 +248,9 @@
"sru": "రెసిపీని భాగస్వామ్యం చేయండి ...", "sru": "రెసిపీని భాగస్వామ్యం చేయండి ...",
"stars": "స్టార్ రేటింగ్", "stars": "స్టార్ రేటింగ్",
"stick": "కర్ర", "stick": "కర్ర",
"stp": "దశ %s", "stp": "దశ",
"strAdd": "మీ వంటకాలను జోడించడం ప్రారంభించండి!", "strAdd": "మీ వంటకాలను జోడించడం ప్రారంభించండి!",
"SUN": "ఆది",
"sVw": "యాదృచ్ఛిక రెసిపీని చూడటానికి షేక్ చేయండి", "sVw": "యాదృచ్ఛిక రెసిపీని చూడటానికి షేక్ చేయండి",
"sVwInfo": "మీరు నిర్ణయించలేనప్పుడు ఏమి ఉడికించాలో ఎంచుకోవడానికి మీకు సహాయపడుతుంది", "sVwInfo": "మీరు నిర్ణయించలేనప్పుడు ఏమి ఉడికించాలో ఎంచుకోవడానికి మీకు సహాయపడుతుంది",
"Swedish": "స్వీడిష్", "Swedish": "స్వీడిష్",
@ -245,6 +261,7 @@
"Teaspoon": "టీస్పూన్", "Teaspoon": "టీస్పూన్",
"Thai": "థాయ్", "Thai": "థాయ్",
"Theme": "థీమ్", "Theme": "థీమ్",
"THU": "గురు",
"title": "శీర్షిక", "title": "శీర్షిక",
"tLInfo": "మీరు తరువాత ప్రయత్నించాలనుకునే వంటకాలు ఇక్కడ ఇవ్వబడ్డాయి", "tLInfo": "మీరు తరువాత ప్రయత్నించాలనుకునే వంటకాలు ఇక్కడ ఇవ్వబడ్డాయి",
"today": "ఈ రోజు", "today": "ఈ రోజు",
@ -255,6 +272,7 @@
"ts": "టాగ్లు", "ts": "టాగ్లు",
"tsInfo": "ఖాళీలతో వేరు", "tsInfo": "ఖాళీలతో వేరు",
"tsp": "స్పూన్", "tsp": "స్పూన్",
"TUE": "మంగళ",
"Turkish": "టర్కిష్", "Turkish": "టర్కిష్",
"Undefined": "వివరించబడలేదు", "Undefined": "వివరించబడలేదు",
"unit": "యూనిట్", "unit": "యూనిట్",
@ -265,67 +283,11 @@
"Vegetarian": "శాఖాహారం", "Vegetarian": "శాఖాహారం",
"Vietnamese": "వియత్నామీస్", "Vietnamese": "వియత్నామీస్",
"wAgo": "%s వారాల క్రితం", "wAgo": "%s వారాల క్రితం",
"WED": "బుధ",
"yesterday": "నిన్న", "yesterday": "నిన్న",
"yieldQ": "దిగుబడి పరిమాణం", "yieldQ": "దిగుబడి పరిమాణం",
"yieldU": "దిగుబడి యూనిట్", "yieldU": "దిగుబడి యూనిట్",
"yld": "దిగుబడి", "yld": "దిగుబడి",
"buto": "%s కు బ్యాకప్ చేయబడింది", "buto": "%s కు బ్యాకప్ చేయబడింది",
"sysDefB": "సిస్టమ్ డిఫాల్ట్ + నలుపు", "sysDefB": "సిస్టమ్ డిఫాల్ట్ + నలుపు"
"notifSetg": "నోటిఫికేషన్ సెట్టింగులు",
"tmrRm": "టైమర్ తొలగించబడింది",
"seconds": "సెకన్లు",
"hours": "గంటలు",
"hour": "గంట",
"minutes": "నిమిషాలు",
"minute": "నిమిషం",
"dlyDur": "ఆలస్యం వ్యవధి",
"tmrvbrt": "టైమర్ వైబ్రేట్",
"tmrSnd": "టైమర్ ధ్వని",
"aTPrst": "ప్రీసెట్లు జోడించబడ్డాయి",
"fwr": "ఏ రెసిపీ కోసం?",
"delPrst": "మీరు ప్రీసెట్లు నుండి %s ను తొలగించబోతున్నారు",
"prsts": "ప్రీసెట్లు",
"prstBtn": "ప్రీసెట్లు",
"tmr": "టైమర్ %s",
"delay": "ఆలస్యం",
"stop": "ఆపు",
"strtBtn": "ప్రారం",
"ntmr": "క్రొత్త టైమర్",
"timer": "వంట టైమర్",
"sec": "సెక",
"ystr": "నిన్న",
"tmrw": "రేపు",
"tdy": "నేడు",
"cpy": "కాపీ",
"calVM": "క్యాలెండర్ వీక్షణ మోడ్",
"oAP": "%1$s పురోగతిలో ఉంది, %2$s పాజ్ చేయబడ్డాయి",
"ttv": "వీక్షించడానికి నొక్కండి",
"dismissAll": "అన్ని టైమర్‌లను తొలగించండి",
"dismiss": "రద్దుచేసే",
"texp": "%s టైమర్‌ల గడువు ముగిసింది",
"wDBy": "%1$s %2$s ఆలస్యం అయింది",
"prstTU": "ప్రీసెట్ సమయం నవీకరించబడింది",
"ccwt": "టైమర్‌లతో నమ్మకంగా ఉడికించాలి!",
"gtD": "తేదీకి వెళ్ళండి",
"random": "యాదృచ్ఛికం",
"esgbInfo": "మీకు నావిగేషన్ సమస్యలు ఉంటే ఈ ఎంపికను నిలిపివేయండి",
"esgb": "తిరిగి వెళ్ళడానికి అంచుని స్వైప్ చేయండి",
"ksavrInfo": "రెసిపీని చూసేటప్పుడు స్క్రీన్ ఆపివేయకుండా నిరోధిస్తుంది",
"ksavr": "రెసిపీని చూసేటప్పుడు స్క్రీన్‌ను మేల్కొని ఉండండి",
"rstBtn": "రీసెట్ చేయండి",
"add": "జోడించు",
"nvr": "ఎప్పుడూ",
"otaw": "వారం కన్నా పాతది",
"otam": "ఒక నెల కన్నా పాతది",
"otay": "ఒక సంవత్సరం కన్నా పాతది",
"admp": "భోజన పథకాలను స్వయంచాలకంగా తొలగించండి",
"plsCrt": "ఒకదాన్ని సృష్టించడానికి + బటన్‌ను ఉపయోగించండి",
"ehwmp": "భోజన పథకాలతో ఆరోగ్యంగా తినండి!",
"selMT": "భోజన రకాన్ని ఎంచుకోండి",
"d": "రోజు",
"wk": "వారం",
"mnth": "నెల",
"sectRm": "విభాగం తొలగించబడింది",
"addSectBtn": "విభాగం జోడించండి",
"sect": "విభాగం %s"
} }

View file

@ -1,149 +1,28 @@
import {
localize,
androidLaunchEventLocalizationHandler,
} from '@nativescript/localize'
import { on, launchEvent } from '@nativescript/core/application'
on(launchEvent, (args) => {
if (args.android) {
androidLaunchEventLocalizationHandler()
}
})
import Vue from 'nativescript-vue' import Vue from 'nativescript-vue'
import store from './store'
import {
Application,
AndroidApplication,
Utils,
Frame,
} from '@nativescript/core'
import {
setNumber,
getNumber,
getString,
} from '@nativescript/core/application-settings'
import { localize } from '@nativescript/localize'
import EnRecipes from './components/EnRecipes.vue' import EnRecipes from './components/EnRecipes.vue'
import EditRecipe from './components/EditRecipe.vue' import store from './store'
import MealPlanner from './components/MealPlanner.vue'
import CookingTimer from './components/CookingTimer.vue'
// import GroceryList from './components/GroceryList.vue'
import * as utils from '~/shared/utils'
export const EvtBus = new Vue()
let renderView: any = EnRecipes
import CollectionView from '@nativescript-community/ui-collectionview/vue' import CollectionView from '@nativescript-community/ui-collectionview/vue'
Vue.use(CollectionView) Vue.use(CollectionView)
import { RGridLayout, RStackLayout, RLabel } from './rtl-ui' import { lvMixin } from './shared/mixins.js'
Vue.registerElement('RGridLayout', () => RGridLayout) Vue.mixin(lvMixin)
Vue.registerElement('RStackLayout', () => RStackLayout)
Vue.registerElement('RLabel', () => RLabel)
import { myMixin } from './shared/mixins'
Vue.mixin(myMixin)
Vue.filter('L', localize)
const initFrame = () => {
const s = store
// MainInit
s.commit('setT', getString('theme', 'sysDef'))
s.commit('initRs')
s.commit('initMPs')
s.commit('initLIs')
s.commit('initTPs')
if (!Object.keys(s.state.timerS).length) {
let hasTimerSound = getString('timerS', null)
s.commit(
'setTS',
hasTimerSound ? JSON.parse(hasTimerSound) : utils.getTones().defaultTone
)
}
// InitFrame
const window = Application.android.startActivity.getWindow()
const decorView = window.getDecorView()
utils.setBarColors(window, decorView, s.state.theme)
Frame.topmost().className = s.state.theme
}
const showOverLockscreen = () => {
let ctx = Utils.ad.getApplicationContext()
const pm = ctx.getSystemService(android.content.Context.POWER_SERVICE)
let isScreenOff = !pm.isInteractive()
if (isScreenOff) {
const window = Application.android.startActivity.getWindow()
const windowMgr = android.view.WindowManager
const flags =
windowMgr.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
windowMgr.LayoutParams.FLAG_TURN_SCREEN_ON |
windowMgr.LayoutParams.FLAG_KEEP_SCREEN_ON
window.addFlags(flags)
}
}
const intentListener = ({ intent, android }: any) => {
let action = ((intent || android).getStringExtra('action') ||
(android && android.getAction())) as string
if (action) {
switch (action) {
case 'new_recipe':
renderView = EditRecipe
break
case 'planner':
renderView = MealPlanner
break
case 'timer':
renderView = CookingTimer
switch (getNumber('isTimer', 0)) {
case 0:
// Closing all modals if available before navigation
if (Frame.topmost()) {
let modals = Frame.topmost()._getRootModalViews()
for (let i = modals.length - 1; i >= 0; i--) {
Frame.topmost()
._getRootModalViews()
[i].closeModal()
}
}
Vue.navigateTo(CookingTimer as any, {
animated: false,
})
setNumber('isTimer', 1)
break
case 2:
Vue.navigateBack()
break
}
break
// case 'grocery':
// renderView = GroceryList
// break
}
}
}
Application.on(Application.launchEvent, (args) => {
utils.updateLocale()
store.commit('setRTL')
intentListener(args)
Application.android.on(
AndroidApplication.activityNewIntentEvent,
intentListener
)
Frame.on(Frame.loadedEvent, initFrame)
})
Application.on(Application.resumeEvent, () => {
showOverLockscreen()
if (utils.sysLocale() !== getString('sysLocale', utils.sysLocale())) {
Frame.reloadPage()
utils.updateLocale()
store.commit('setRTL')
}
})
Application.on(Application.exitEvent, () => {
renderView = EnRecipes
Application.android.off(
AndroidApplication.activityNewIntentEvent,
intentListener
)
})
Vue.config.silent = false Vue.config.silent = false
Vue.filter('L', localize)
new Vue({ new Vue({
store, store,
render: (h) => h('Frame', [h(renderView)]), render: (h) => h(EnRecipes),
}).$start() }).$start()

View file

@ -15,18 +15,29 @@
android { android {
defaultConfig { defaultConfig {
versionCode 2 versionCode 8
versionName '2.0.1' versionName '1.3.3'
applicationId 'com.vishnuraghav.enrecipes'
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 30 targetSdkVersion 30
compileSdkVersion 30 compileSdkVersion 30
generatedDensities = [] generatedDensities = []
// ndk { ndk {
// abiFilters.clear() abiFilters.clear()
// abiFilters.addAll(['arm64-v8a']) abiFilters.addAll(['arm64-v8a', 'armeabi-v7a', 'x86'])
// } }
} }
aaptOptions { aaptOptions {
additionalParameters "--no-version-vectors" additionalParameters "--no-version-vectors"
} }
// buildTypes {
// release {
// minifyEnabled true
// shrinkResources false
// debuggable false
// jniDebuggable false
// renderscriptDebuggable false
// }
// }
} }

View file

@ -1,29 +1,32 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="__PACKAGE__" android:versionCode="10000" android:versionName="1.0"> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="__PACKAGE__" android:versionCode="10000" android:versionName="1.0">
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" /> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:targetApi="28" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:targetApi="29" />
<uses-permission android:name="android.permission.CAMERA" tools:node="remove" /> <uses-permission android:name="android.permission.CAMERA" tools:node="remove" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" tools:node="remove" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" tools:node="remove" />
<uses-permission android:name="android.permission.INTERNET" tools:node="remove" /> <uses-permission android:name="android.permission.INTERNET" tools:node="remove" />
<uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove" /> <uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove" />
<application android:extractNativeLibs="true" android:name="com.tns.NativeScriptApplication" android:allowBackup="true" android:icon="@drawable/app_icon" android:label="@string/app_name" android:supportsRtl="true" android:hardwareAccelerated="true" android:largeHeap="true" android:theme="@style/AppTheme"> <application android:extractNativeLibs="true"
<activity android:name="com.tns.NativeScriptActivity" android:label="@string/title_activity_kimera" android:launchMode="singleTop" android:screenOrientation="userPortrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|locale|uiMode" android:theme="@style/LaunchScreenTheme" android:windowSoftInputMode="adjustResize"> android:name="com.tns.NativeScriptApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:hardwareAccelerated="true" android:largeHeap="true" android:theme="@style/AppTheme">
<activity android:name="com.tns.NativeScriptActivity" android:label="@string/title_activity_kimera" android:screenOrientation="userPortrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|locale|uiMode" android:theme="@style/LaunchScreenTheme" android:windowSoftInputMode="adjustResize">
<meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" /> <meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
</activity> </activity>
<activity android:name="com.tns.ErrorReportActivity" /> <activity android:name="com.tns.ErrorReportActivity" />
<service android:name="com.tns.ForegroundService" android:enabled="true" android:exported="false" /> <provider
<provider android:name="androidx.core.content.FileProvider" android:exported="false" android:authorities="${applicationId}.provider" android:grantUriPermissions="true"> android:name="androidx.core.content.FileProvider"
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider" /> android:exported="false"
android:authorities="${applicationId}.provider"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider"/>
</provider> </provider>
</application> </application>
</manifest> </manifest>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<foreground android:drawable="@drawable/app_icon_fg" /> <foreground android:drawable="@drawable/ic_launcher_foreground" />
<background android:drawable="@color/white" /> <background android:drawable="@color/white" />
</adaptive-icon> </adaptive-icon>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<foreground android:drawable="@drawable/sc_add_fg" />
<background android:drawable="@color/orange" />
</adaptive-icon>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<foreground android:drawable="@drawable/sc_grocery_fg" />
<background android:drawable="@color/orange" />
</adaptive-icon>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<foreground android:drawable="@drawable/sc_planner_fg" />
<background android:drawable="@color/orange" />
</adaptive-icon>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<foreground android:drawable="@drawable/sc_timer_fg" />
<background android:drawable="@color/orange" />
</adaptive-icon>

View file

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 938 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,016 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Some files were not shown because too many files have changed in this diff Show more