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
about: Create a report to help us improve
title: "[Bug]"
title: "[BUG]"
labels: bug
assignees: vishnuraghavb
---
**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**
Steps to reproduce the behavior:
1. Go to '...'
2. Tap on '....'
2. Click on '....'
3. Scroll down to '....'
4. See error
**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**
<!---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):**
- 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**
<!---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
about: Suggest an idea for this project
title: "[Feature request]"
title: "[FEATURE REQUEST]"
labels: enhancement
assignees: vishnuraghavb
@ -11,13 +11,13 @@ assignees: vishnuraghavb
- [ ] I've checked the roadmap and my feature request is not listed there
**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**
<!---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**
<!---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**
<!---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 ;)
- 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.
#### :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>
<p align="center"><a href="https://enrecipes.vercel.app"><img src="fastlane/metadata/android/en-GB/images/featureGraphic.png" width="100%"></a></p>
<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>
@ -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/">
<img src="https://hosted.weblate.org/widgets/enrecipes/-/app-translations/svg-badge.svg" alt="Translation status" /></a>
<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>
<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.
<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>
<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>
## 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
- 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.
- Shake your device to view a random recipe
- Shake device to view random recipe
- Create meal plans
- Set cooking timers
- You can Import or Export your data
- Import/Export recipes
- Light, Dark and Black themes
## Highlights
- 100% free and open-source
- Private by Design
- No special permissions required
- No permissions required
- 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.
Please read the [User Guide](https://github.com/vishnuraghavb/EnRecipes/wiki/User-Guide) to get the most out of EnRecipes.
## 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** |
| <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> |
| **Recipe view** | **Scale ingredients** |
| <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> |
| **Share menu** | **Meal Planner** |
| <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> |
| **Cooking Timer** | **About** |
| <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> |
| **Home - Black theme** | **Recipe view** |
| <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** | **Scale ingredients** |
| <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> |
| **Meal planner** | **About** |
## Contribution
@ -83,52 +74,19 @@ You can,
- [Join the Telegram group](http://t.me/enrecipes) (quicker replies)
- 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.
<!-- <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/">
<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>
## 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.
### Translation credits
| 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
### Recipes used in the Screenshots
- **Meen Pollichathu** by [Bency Veronica](https://www.instagram.com/bencys_lil_kitchen)
- **Curd Vada** by P. Shanmugalakshmi

View file

@ -1,4 +1,3 @@
// Colours
$gray0: #f8f9fa;
$gray1: #f1f3f5;
$gray2: #e9ecef;
@ -12,48 +11,39 @@ $gray9: #212529;
$gray10: #000000;
$orange: #ff5200;
// FontSizes based on Minor Third
$t1: 25;
$t2: 21;
$t3: 17;
$t4: 14;
$t5: 12; // Base
$t6: 10;
Page {
font-family: 'Inter-Medium', sans-serif;
font-size: $t4;
font-family: "Inter-Medium";
font-size: 14;
}
.ico {
font-family: 'EnRecipes';
font-size: 23;
&.s {
font-size: $t3;
font-family: "enrecipes";
font-size: 24;
vertical-alignment: center;
&.sm {
font-size: 16;
opacity: 0.5;
}
}
.vc {
vertical-align: center;
}
.tb {
font-family: 'Inter-Bold', sans-serif;
font-family: "Inter-Bold";
}
.tc {
.tac {
text-align: center;
}
.tw {
text-wrap: true;
}
.pTitle {
font-size: $t1;
padding: 16 16 24;
.pageTitle {
@extend .tb;
@extend .tw;
font-size: 25;
padding: 16;
}
.Light {
color: $gray9;
background: $gray1;
Page,
.filters,
.sticky {
background: $gray1;
}
@ -68,9 +58,9 @@ Page {
.appbar,
.modal {
background: $gray0;
box-shadow: 0 2 rgba($gray10, 0.1);
}
.fLabel,
.fieldLabel,
.dayName,
.sub {
color: $gray6;
}
@ -78,7 +68,7 @@ Page {
color: $gray3;
background: $gray2;
}
.snackbar {
.snackBar {
color: $gray1;
background: $gray9;
}
@ -90,6 +80,7 @@ Page {
color: $gray1;
background: $gray9;
Page,
.filters,
.sticky {
background: $gray9;
}
@ -106,7 +97,8 @@ Page {
color: $gray0;
background: $gray8;
}
.fLabel,
.fieldLabel,
.dayName,
.sub {
color: $gray5;
}
@ -114,7 +106,7 @@ Page {
color: $gray9;
background: $gray10;
}
.snackbar {
.snackBar {
color: $gray9;
background: $gray1;
}
@ -126,6 +118,7 @@ Page {
color: $gray2;
background: $gray10;
Page,
.filters,
.sticky {
background: $gray10;
}
@ -142,7 +135,8 @@ Page {
color: $gray1;
background: $gray9;
}
.fLabel,
.fieldLabel,
.dayName,
.sub {
color: $gray6;
}
@ -150,7 +144,7 @@ Page {
color: $gray10;
background: $gray9;
}
.snackbar {
.snackBar {
color: $gray10;
background: $gray2;
}
@ -158,139 +152,141 @@ Page {
color: $gray10;
}
}
TextField.combField,
#search {
#searchBar {
border-color: transparent;
}
// -----------------------------
// Elements
TextField,
TextView {
// width: 100%;
width: 100%;
padding: 14 8;
border-bottom-width: 1;
}
TextView {
line-height: 4;
}
#search {
padding: 13 8;
#searchBar {
padding-left: 0;
margin: 0;
}
.inputC {
.inputField {
margin-bottom: 24;
}
.fLabel {
font-size: $t5;
.fieldLabel {
font-size: 12;
}
progress {
color: $orange;
height: 2;
.progressContainer {
width: 100%;
}
Progress {
margin: 16;
background-color: $gray5;
}
Switch {
background-color: $orange;
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;
padding: 8;
border-radius: 12;
min-width: 0;
min-height: 0;
text-transform: none;
background-color: transparent;
&.sst {
width: 48;
height: 48;
&:active {
@extend .fade;
}
&.ico {
width: 48;
height: 48;
padding: 0;
margin: 0;
&:active {
@extend .fade;
}
}
&.si {
width: 40;
height: 40;
width: 48;
height: 48;
}
&.text {
@extend .tb;
horizontal-alignment: left;
color: $orange;
}
&.st {
font-size: $t5;
padding: 12;
}
&.big {
margin-top: 8;
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 {
margin: 0 4 0 0;
width: 32;
height: 32;
}
&.fb:active {
@extend .fade;
}
}
ActivityIndicator {
width: 24;
height: 24;
margin: 14;
color: $orange;
}
// -----------------------------
// Home
.segment {
border-radius: 12;
padding: 8;
.v {
padding: 0 4;
}
}
.t3 {
font-size: $t3;
}
.empty {
// HOME
.emptyState {
padding: 16 16 8;
Label {
@extend .tw;
}
.title {
@extend .tb;
font-size: 17;
}
}
// -----------------------------
// Recipe Item
.recipe {
// Recipe Items
.recipeItem {
padding: 8 16;
.info {
padding: 0 8 4;
.recipeInfo {
vertical-alignment: center;
padding: 0 0 4 8;
}
.title {
padding: 0 0 4;
}
.attr {
font-size: 10;
padding: 0 6 1 2;
}
}
.oh {
orientation: horizontal;
}
.t6 {
font-size: $t6;
}
.attr {
font-size: $t6;
padding: 0 4 2;
}
.simple .info {
.simple .recipeInfo {
padding: 8 0;
}
.minimal .title {
padding: 0;
}
.grid {
padding: 8;
.info {
.recipeInfo {
padding: 8 0 4;
}
&.odd {
@ -300,199 +296,239 @@ ActivityIndicator {
padding: 8 16 8 8;
}
}
.photogrid .info {
.photogrid .recipeInfo {
padding: 8 0 0;
}
.lastItem {
margin-bottom: 128;
}
.selected {
@extend .hl;
}
.unselected {
background-color: transparent;
}
.imgHolder {
border-radius: 12;
}
// -----------------------------
// CookingTimer
.timer {
padding: 8 16 0;
.info {
margin: 8 8 8 16;
&.r {
margin: 8 16 8 8;
}
}
progress {
margin: 8 0 0;
}
}
// -----------------------------
// Settings
.groupInfo {
// SETTINGS
.group-info {
padding: 16 16 16 72;
&.r {
padding: 16 72 16 16;
}
line-height: 4;
}
.options {
.options-list {
.option {
vertical-align: center;
padding: 14 16;
padding: 14 8;
margin: 0 16;
.ico {
width: 40;
text-align: center;
padding: 0;
margin: 0 24 0 16;
}
.info {
padding: 0 16;
.info,
.sub {
@extend .tw;
}
.sub {
font-size: $t5;
font-size: 12;
}
}
.listSpace {
height: 72;
}
}
// -----------------------------
// About
.appInfo {
.logo {
// ABOUT
.app-info {
.icon {
horizontal-alignment: center;
}
.name {
font-size: $t2;
font-size: 21;
}
.info {
padding: 8 16 24;
line-height: 4;
}
}
// -----------------------------
// ViewRecipe
// VIEW RECIPE
.photo {
border-radius: 12;
margin: 24 16 0 0;
vertical-align: top;
}
.imgV {
.photoviewer {
width: 96;
height: 96;
opacity: 0;
background: #000;
}
.attrT {
.attribute {
margin: 8 16;
.sub {
font-size: $t5;
.title {
margin-right: 8;
font-size: 12;
}
.v {
.value {
@extend .tb;
@extend .tw;
}
.clickable {
color: $orange;
}
}
.check {
.ingredient {
padding: 0 16;
.v {
padding: 14 16;
.value {
@extend .tw;
vertical-align: center;
padding: 14 0 14 16;
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 {
opacity: 0.5;
.v {
// @extend .fade;
.value {
text-decoration: line-through;
}
}
.note {
padding: 16 24;
.combination {
@extend .tw;
text-align: left;
padding: 16;
line-height: 4;
}
.t5 {
font-size: $t5;
.note {
@extend .tw;
line-height: 4;
padding: 16 0;
}
.dateInfo {
padding: 32 16 16;
font-size: 12;
line-height: 4;
}
// -----------------------------
// AppBar
// APPBAR
.appbar {
margin: 0 8 8;
z-index: 4;
min-height: 56;
margin: 8;
padding: 4;
border-radius: 16;
padding: 2;
.ico {
margin: 2;
.title {
@extend .tb;
@extend .tw;
vertical-align: center;
line-height: 4;
}
.msg {
padding: 14 16;
}
.fab {
margin-left: 4;
}
}
.toolbar {
height: 1;
vertical-align: bottom;
transform: translateY(48);
padding: 4 2;
z-index: 4;
padding: 4;
margin-bottom: 0;
horizontal-alignment: left;
.tool {
orientation: horizontal;
padding: 0 8;
}
.v {
padding: 0 4;
padding: 0 12;
Label {
vertical-alignment: center;
}
.ico {
padding-right: 8;
}
}
}
.fab {
width: 48;
height: 48;
margin: 0 4 0 0;
border-radius: 12;
background: $orange;
}
// -----------------------------
// EditRecipe
.section {
padding: 0 16;
// EDIT RECIPE
.sectionTitle {
@extend .tb;
@extend .tw;
font-size: 21;
padding: 0;
margin: 32 0 16;
}
.t2 {
font-size: $t2;
}
.sticky {
width: 100%;
padding: 0 16 16;
margin: 0;
}
.ingActions {
orientation: horizontal;
button {
margin-right: 16;
}
.countdown {
font-size: 17;
color: $orange;
}
// -----------------------------
// MealPlanner
// MEAL PLANNER
.calendar {
padding: 0 16 16;
.accent.sub {
color: rgba($orange, 0.6);
padding: 0 8;
.navBtn {
margin: 0;
}
.monthName {
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);
}
}
.plans {
margin: 0 16;
.date {
padding: 16 0 8;
.dayPlan {
padding: 16 16 80;
width: 100%;
.periodLabel {
font-size: 17;
text-transform: capitalize;
vertical-align: center;
}
.type {
padding: 8 0;
}
.plan {
min-height: 48;
padding: 4 0;
}
.info {
min-height: 40;
padding: 0 8;
}
.note {
padding: 4 0;
.recipeTitle {
@extend .tw;
text-align: left;
padding: 16 8;
line-height: 4;
}
}
// -----------------------------
// Dialogs
// DIALOGS
.modal {
max-width: 320;
width: 100%;
@ -502,20 +538,40 @@ ActivityIndicator {
@extend .tb;
@extend .tw;
padding: 16;
font-size: $t2;
font-size: 21;
}
.input {
padding: 0 16 8;
}
.description {
line-height: 4;
padding: 0 16 8;
}
ListPicker {
width: 30%;
height: 144;
margin: 16 0;
width: 25%;
height: 160;
}
.listItem {
@extend .tw;
width: 100%;
letter-spacing: 0;
text-transform: none;
line-height: 4;
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 {
padding: 4;
@ -525,68 +581,48 @@ ActivityIndicator {
margin: 0 0 8;
}
}
.noResInfo {
@extend .tac;
@extend .tw;
padding: 16;
line-height: 4;
}
// -----------------------------
ActivityIndicator {
width: 24;
height: 24;
margin: 12;
color: $orange;
}
// -----------------------------
// Transitions
.select {
color: $orange;
animation-name: select;
.hl {
animation-name: hl;
animation-duration: 0.2s;
animation-fill-mode: forwards;
animation-timing-function: ease;
animation-timing-function: ease-out;
}
.deselect {
background-color: transparent;
}
@keyframes select {
@keyframes hl {
0% {
opacity: 0.5;
background-color: transparent;
}
100% {
background-color: rgba($orange, 0.1);
opacity: 1;
background-color: rgba($orange, 0.2);
}
}
.fade {
animation-name: fade;
animation-duration: 0.2s;
animation-fill-mode: forwards;
animation-timing-function: ease;
animation-timing-function: ease-out;
}
@keyframes fade {
0% {
opacity: 1;
}
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>
<Page @loaded="mLoad" backgroundColor="transparent" :class="theme">
<Page
@loaded="transparentPage"
backgroundColor="transparent"
:class="appTheme"
>
<GridLayout
columns="*"
:rows="`auto, auto, ${stretch ? '*' : 'auto'}, auto`"
class="modal"
>
<RLabel class="title" :text="title | L" />
<Label class="title" :text="title | L" />
<ListView
rowHeight="48"
row="2"
@ -13,9 +17,10 @@
:height="stretch ? '100%' : listHeight"
>
<v-template>
<RLabel
<Label
class="listItem"
:class="{ select: item == selected || $index == selected }"
:class="{ tb: title === 'srt' && sortType === item }"
:color="title === 'srt' && sortType === item ? '#ff5200' : ''"
:text="`${localized(item)}`"
@touch="touch"
@tap="tapAction(item)"
@ -23,20 +28,20 @@
/>
</v-template>
</ListView>
<RGridLayout :rtl="RTL" row="3" columns="auto, *, auto" class="actions">
<GridLayout row="3" columns="auto, *, auto" class="actions">
<Button
:hidden="!action"
class="text tb st fb"
v-if="action"
class="text sm"
:text="action | L"
@tap="$modal.close(action)"
/>
<Button
col="2"
class="text tb st fb"
class="text sm"
:text="'cBtn' | L"
@tap="$modal.close(0)"
@tap="$modal.close(false)"
/>
</RGridLayout>
</GridLayout>
</GridLayout>
</Page>
</template>
@ -45,11 +50,11 @@
import { Screen } from "@nativescript/core";
import { localize } from "@nativescript/localize";
import { mapState, mapActions } from "vuex";
import Confirm from "./Confirm.vue";
import ConfirmDialog from "./ConfirmDialog.vue";
interface IData {
newList: unknown[];
stretch: number;
stretch: boolean;
listHeight: number;
}
@ -67,31 +72,27 @@ export default {
type: String,
required: false,
},
selected: {
type: String,
required: false,
},
},
data(): IData {
return {
newList: this.list,
stretch: 0,
stretch: false,
listHeight: 0,
};
},
computed: {
...mapState(["icon", "theme", "RTL"]),
...mapState(["sortType", "icon", "appTheme"]),
},
methods: {
...mapActions(["removeLI", "deleteTP"]),
...mapActions(["removeListItemAction"]),
localized(item: string): string {
return this.title !== "lang" ? localize(item) : item;
},
tapAction(item: string): void {
this.$modal.close(item);
},
removeConfirmation(description: string): void {
return this.$showModal(Confirm, {
deletionConfirmation(description: string): void {
return this.$showModal(ConfirmDialog, {
props: {
title: "conf",
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 {
let vm = this;
let index = this.newList.findIndex((e) => e === item);
let localizedItem = `"${localize(item)}"`;
function removeLI(listName: string, desc: string): void {
vm.removeConfirmation(`${localize(desc, localizedItem)}`).then(
function removeListItem(listName: string, desc: string): void {
vm.deletionConfirmation(`${localize(desc, localizedItem)}`).then(
(action: boolean) => {
if (action)
vm.removeLI({
if (action != null && action)
vm.removeListItemAction({
item,
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) {
case "cui":
removeLI("cuisines", "rmCuiInfo");
removeListItem("cuisines", "rmCuiInfo");
break;
case "cat":
removeLI("categories", "rmCatInfo");
removeListItem("categories", "rmCatInfo");
break;
case "yieldU":
removeLI("yieldUnits", "rmYUInfo");
removeListItem("yieldUnits", "rmYUInfo");
break;
case "Unit":
removeLI("units", "rmUInfo");
break;
case "prsts":
deleteTP();
removeListItem("units", "rmUInfo");
break;
}
},
touch({ object, action }): void {
this.touchFade(object, action);
object.className = action.match(/down|move/)
? "listItem fade"
: "listItem";
},
},
created() {
@ -166,7 +145,7 @@ export default {
if (modalHeight < usableHeight) {
this.listHeight = listHeight;
} else {
this.stretch = 1;
this.stretch = true;
}
},
};

View file

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

View file

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

View file

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

View file

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

View file

@ -1,44 +1,33 @@
<template>
<Page
@loaded="mLoad"
@loaded="transparentPage"
backgroundColor="transparent"
:class="theme"
:class="appTheme"
>
<GridLayout rows="auto, auto, auto" class="modal">
<RLabel class="title" :text="title | L" />
<Label class="title" :text="title | L" />
<StackLayout row="1" class="input">
<TextView
v-if="type == 'view'"
autocorrect="true"
autocapitalizationType="sentences"
class="modalInput"
@loaded="focusField"
v-model="text"
/>
<TextField
autocapitalizationType="sentences"
autocorrect="true"
v-else
class="modalInput"
@loaded="focusField"
v-model="text"
@returnPress="$modal.close(text)"
/>
</StackLayout>
<RGridLayout :rtl="RTL" row="2" columns="*, auto, auto" class="actions">
<GridLayout row="2" columns="*, auto, auto" class="actions">
<Button
col="1"
class="text tb st fb"
class="text sm"
:text="'cBtn' | L"
@tap="$modal.close(0)"
@tap="$modal.close(false)"
/>
<Button
col="2"
class="text tb st fb"
class="text sm"
:text="action | L"
@tap="$modal.close(text)"
/>
</RGridLayout>
</GridLayout>
</GridLayout>
</Page>
</template>
@ -48,23 +37,20 @@ import { Utils } from "@nativescript/core";
import { localize } from "@nativescript/localize";
import { mapState } from "vuex";
export default {
props: ["title", "type", "hint", "placeholder", "action"],
props: ["title", "hint", "placeholder", "action"],
data() {
return {
text: null,
};
},
computed: {
...mapState(["icon", "theme", "RTL"]),
...mapState(["icon", "appTheme"]),
},
methods: {
focusField({ object }) {
this.setGravity(object);
let a = this.placeholder;
typeof a == "number"
? (object.keyboardType = "number")
: this.type
? ""
: (object.autocapitalizationType = "words");
object.hint = this.hint;
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",
"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ó",
"April": "abril",
"August": "agost",
"Barbecue": "Barbacoes",
"Beverages": "Begudes",
"Breads": "Pans",
@ -15,26 +17,37 @@
"cPic": "Escapça la foto",
"Cup": "Tassa",
"dBtn": "SUPRIMEIX",
"December": "desembre",
"Desserts": "Postres",
"disBtn": "DESCARTALS",
"disc": "Aquesta recepta té canvis no desats. Què voleu fer?",
"EnRecipes": "EnRecipes",
"favourites": "Preferits",
"February": "febrer",
"Fluid Ounce": "Unça líquida",
"FRI": "DV.",
"Gallon": "Galó",
"Gram": "Gram",
"grid": "Graella",
"grocery": "Llista de queviures",
"impFail": "Ha fallat la importació",
"invFile": "El fitxer no és vàlid",
"January": "gener",
"July": "juliol",
"June": "juny",
"Kilogram": "Quilogram",
"Litre": "Litre",
"March": "març",
"May": "maig",
"Meat": "Carn",
"Mexican": "Mexicana",
"Millilitre": "Mil·lilitre",
"MON": "DL.",
"nNBtn": "ARA NO",
"Noodles": "Fideus",
"November": "novembre",
"nwCat": "Categoria nova",
"October": "octubre",
"OK": "Dacord",
"Ounce": "Unça",
"Pasta": "Pasta",
@ -46,8 +59,10 @@
"Rice": "Arròs",
"rst": "REINICIA",
"Salads": "Amanides",
"SAT": "DS.",
"Sauces": "Salses",
"Seafood": "Peix i marisc",
"September": "setembre",
"ser": "Cerca",
"Serving": "Ració",
"SET": "DEFINEIX",
@ -57,30 +72,19 @@
"snacks": "piscolabis",
"Soups": "Brous",
"Spanish": "Espanyola",
"SUN": "DG.",
"Tablespoon": "Cullerada",
"Teaspoon": "Culleradeta",
"THU": "DJ.",
"trnsl": "Tradueix",
"trylater": "Per a provar més tard",
"ts": "Etiquetes",
"TUE": "DT.",
"Undefined": "Sense definir",
"unsaved": "Canvis no desats",
"untRec": "Recepta sense títol",
"Vegan": "Veganes",
"Vegetarian": "Vegetarianes",
"sec": "s",
"dinner": "Sopar",
"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"
"WED": "DC.",
"sec": "s"
}

View file

@ -143,6 +143,13 @@
"yesterday": "i går",
"disBtn": "AFFALD",
"fltr": "Filtrer",
"FRI": "FRE",
"MON": "MAN",
"SAT": "LøR",
"SUN": "SøN",
"THU": "TOR",
"TUE": "TIR",
"WED": "ONS",
"no": "Bemærk",
"nNBtn": "IKKE NU",
"nLangInfo": "Genstart EnRecipes for at bruge det nye sprog",
@ -150,6 +157,8 @@
"newRec": "Ny opskrift",
"newCui": "Nyt køkken",
"minimal": "Minimalt",
"May": "maj",
"March": "Marts",
"mAgo": "%s måneder siden",
"noAccSensor": "Accelerometersensoren er enten deaktiveret eller fungerer ikke",
"noRecsInL": "Ingen af opskrifterne her matcher din søgning",
@ -161,7 +170,10 @@
"ltAgo": "for lang tid siden",
"listVM": "Visning af liste",
"kEdit": "FORTSÆT REDIGERING",
"June": "Juni",
"July": "Juli",
"joinTG": "Tilmeld dig Telegram-gruppen",
"January": "Januar",
"it": "Varen",
"invFile": "Ugyldig fil",
"inss": "Vejledning",
@ -174,6 +186,7 @@
"grid": "Gitter",
"gh": "Se på GitHub",
"Filtered recipes": "Filtrerede opskrifter",
"February": "Februar",
"expip": "Eksport i gang",
"editRec": "Rediger opskrift",
"donate": "Donér",
@ -194,9 +207,11 @@
"simple": "Enkel",
"shr": "Del",
"ser": "Søg",
"September": "September",
"detailed": "Detaljeret",
"delRecsInfo": "Du er ved at slette %s permanent",
"delRecInfo": "Du er ved at slette opskriften %s permanent",
"December": "December",
"dBtn": "SLETNING",
"dAgo": "%s dage siden",
"cui": "Køkken",
@ -213,7 +228,9 @@
"buFol": "Backup-mappe",
"buEmp": "Backup-filen er tom",
"Black": "Sort",
"August": "August",
"aStpBtn": "TILFØJ TRIN",
"April": "April",
"appRst": "App genstart nødvendig",
"apply": "ANSØG",
"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",
"photogrid": "Foto gitter",
"opts": "Indstillinger",
"October": "Oktober",
"nwYiU": "Ny udbytteenhed",
"nwCat": "Ny kategori",
"November": "November",
"sysDefB": "Systemstandard + sort",
"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"
"sec": "s"
}

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes ist ein quelloffenes, datenschutzfreundliches, digitales Kochbuch, mit dem du deine Rezepte erstellen, verwalten und teilen kannst",
"apply": "ANWENDEN",
"appRst": "Neustart der Anwendung erforderlich",
"April": "April",
"aStpBtn": "SCHRITT HINZUFÜGEN",
"August": "August",
"Barbecue": "Grill",
"Beverages": "Getränke",
"Black": "Schwarz",
@ -51,6 +53,7 @@
"Dark": "Dunkel",
"db": "Datenbank",
"dBtn": "LÖSCHEN",
"December": "Dezember",
"delRecInfo": "Du bist dabei, das Rezept %s dauerhaft zu löschen",
"delRecsInfo": "Du bist dabei, %s dauerhaft zu löschen",
"Desserts": "Nachspeisen",
@ -72,12 +75,14 @@
"expip": "Export wird durchgeführt",
"expSuc": "Export erfolgreich",
"favourites": "Favoriten",
"February": "Februar",
"Filipino": "Philipinisch",
"Filtered recipes": "Gefilterte Rezepte",
"fl oz": "fl",
"fltr": "Filter",
"Fluid Ounce": "Flüssige Unze",
"French": "Französisch",
"FRI": "Fr.",
"fsList": "Deine Lieblingsrezepte findest du hier",
"g": "g",
"gal": "gal",
@ -103,12 +108,15 @@
"intf": "Benutzeroberfläche",
"invFile": "Ungültige Datei",
"Irish": "Irisch",
"it": "Element %s",
"it": "Element",
"Italian": "Italienisch",
"Jamaican": "Jamaikanisch",
"January": "Januar",
"Japanese": "Japanisch",
"Jewish": "Jüdisch",
"joinTG": "Tritt der Telegram-Gruppe bei",
"July": "Juli",
"June": "Juni",
"kEdit": "WEITER BEARBEITEN",
"Kenyan": "Kenianisch",
"kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Mittagessen",
"mAgo": "%s Monate zuvor",
"Main dishes": "Hauptspeisen",
"March": "März",
"May": "Mai",
"Meat": "Fleisch",
"medium": "medium",
"Mexican": "Mexikanisch",
@ -137,6 +147,7 @@
"minimal": "Minimal",
"ml": "ml",
"Moderate": "Moderat",
"MON": "Mo.",
"newCui": "Neue Küche",
"Newest first": "Neueste zuerst",
"newRec": "Neues Rezept",
@ -151,8 +162,10 @@
"noRecs": "Keine Rezepte passen zu deiner Suche",
"noRecsInL": "Keines der hier aufgeführten Rezepte entspricht deiner Suche",
"nos": "Notizen",
"November": "November",
"nwCat": "Neue Kategorie",
"nwYiU": "Neue Ertragseinheit",
"October": "Oktober",
"OK": "OK",
"Oldest first": "Älteste zuerst",
"opts": "Optionen",
@ -166,7 +179,7 @@
"Piece": "Stück",
"pinch": "Prise",
"planner": "Essensplaner",
"plsAdd": "Verwende das +-Schaltfläche, um eins hinzuzufügen",
"plsAdd": "Verwende das Plus-Symbol, um eins hinzuzufügen",
"Portuguese": "Portugiesisch",
"Poultry": "Geflügel",
"Pound": "Pfund",
@ -210,10 +223,12 @@
"rst": "NEU STARTEN",
"Russian": "Russisch",
"Salads": "Salate",
"SAT": "Sa.",
"Sauces": "Soßen",
"Scottish": "Schottisch",
"Seafood": "Meeresfrüchte",
"selRec": "Rezept auswählen",
"September": "September",
"ser": "Suchen",
"Serving": "Portion",
"SET": "EINSTELLEN",
@ -233,8 +248,9 @@
"sru": "Rezept teilen mit …",
"stars": "Bewertung in Sternen",
"stick": "Stange",
"stp": "Schritt %s",
"stp": "Schritt",
"strAdd": "Beginne deine Rezepte hinzuzufügen!",
"SUN": "So.",
"sVw": "Schütteln, um ein zufälliges Rezept anzuzeigen",
"sVwInfo": "Hilft dir, wenn du dich nicht entscheiden kannst, was gekocht werden soll",
"Swedish": "Swedisch",
@ -245,6 +261,7 @@
"Teaspoon": "TL",
"Thai": "Thailändisch",
"Theme": "Thema",
"THU": "Do.",
"title": "Titel",
"tLInfo": "Rezepte, die du später ausprobieren willst, sind hier aufgelistet",
"today": "heute",
@ -255,6 +272,7 @@
"ts": "Markierungen",
"tsInfo": "mit Leerzeichen trennen",
"tsp": "TL",
"TUE": "Di.",
"Turkish": "Türkisch",
"Undefined": "Unsortiert",
"unit": "Einheit",
@ -265,19 +283,21 @@
"Vegetarian": "Vegetarisch",
"Vietnamese": "Vietnamesisch",
"wAgo": "%s Wochen zuvor",
"WED": "Mi.",
"yesterday": "gestern",
"yieldQ": "Ertragsmenge",
"yieldU": "Ertragseinheit",
"yld": "Ergebnis",
"buto": "Gesichert in %s",
"sysDefB": "Systemstandard + schwarz",
"tmr": "Kurzzeitwecker %s",
"tmr": "Kochwecker %s",
"strtBtn": "START",
"ntmr": "Neuer Kurzzeitwecker",
"timer": "Kurzzeitwecker",
"sec": "s",
"tmrvbrt": "Kurzzeitweckervibration",
"tmrSnd": "Kurzzeitweckerton",
"ntmr": "Neuer Kochwecker",
"timer": "Kochwecker",
"sec": "sec",
"tmrvbrt": "Kochwecker vibrieren",
"tmrSnd": "Kochwecker-Ton",
"tmrPrsts": "Voreinstellungen des Kochweckers",
"aTPrst": "Zu Voreinstellungen hinzugefügt",
"fwr": "für welches Rezept?",
"prstBtn": "Voreinstellungen",
@ -288,44 +308,5 @@
"minutes": "Minuten",
"minute": "Minute",
"dlyDur": "Verzögerungsdauer",
"delay": "Verzögern",
"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"
"delay": "Verzögerung"
}

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",
"apply": "APPLY",
"appRst": "App restart required",
"April": "April",
"aStpBtn": "ADD STEP",
"August": "August",
"Barbecue": "Barbecue",
"Beverages": "Beverages",
"Black": "Black",
@ -51,6 +53,7 @@
"Dark": "Dark",
"db": "Database",
"dBtn": "DELETE",
"December": "December",
"delRecInfo": "You are about to permanently delete the recipe %s",
"delRecsInfo": "You are about to permanently delete %s",
"Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Export in progress",
"expSuc": "Export success",
"favourites": "Favourites",
"February": "February",
"Filipino": "Filipino",
"Filtered recipes": "Filtered recipes",
"fl oz": "fl oz",
"fltr": "Filter",
"Fluid Ounce": "Fluid Ounce",
"French": "French",
"FRI": "FRI",
"fsList": "Your favourite recipes are listed here",
"g": "g",
"gal": "gal",
@ -103,12 +108,15 @@
"intf": "Interface",
"invFile": "Invalid file",
"Irish": "Irish",
"it": "Item %s",
"it": "Item",
"Italian": "Italian",
"Jamaican": "Jamaican",
"January": "January",
"Japanese": "Japanese",
"Jewish": "Jewish",
"joinTG": "Join the Telegram group",
"July": "July",
"June": "June",
"kEdit": "KEEP EDITING",
"Kenyan": "Kenyan",
"kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch",
"mAgo": "%s months ago",
"Main dishes": "Main dishes",
"March": "March",
"May": "May",
"Meat": "Meat",
"medium": "medium",
"Mexican": "Mexican",
@ -138,6 +148,7 @@
"minimal": "Minimal",
"ml": "ml",
"Moderate": "Moderate",
"MON": "MON",
"newCui": "New cuisine",
"Newest first": "Newest first",
"newRec": "New recipe",
@ -152,8 +163,10 @@
"noRecs": "No recipes match your search",
"noRecsInL": "None of the recipes here matches your search",
"nos": "Notes",
"November": "November",
"nwCat": "New category",
"nwYiU": "New yield unit",
"October": "October",
"OK": "OK",
"Oldest first": "Oldest first",
"opts": "Options",
@ -167,7 +180,7 @@
"Piece": "Piece",
"pinch": "pinch",
"planner": "Meal Planner",
"plsAdd": "Use the + button to add one",
"plsAdd": "Use the plus button to add one",
"Portuguese": "Portuguese",
"Poultry": "Poultry",
"Pound": "Pound",
@ -211,10 +224,12 @@
"rst": "RESTART",
"Russian": "Russian",
"Salads": "Salads",
"SAT": "SAT",
"Sauces": "Sauces",
"Scottish": "Scottish",
"Seafood": "Seafood",
"selRec": "Select recipe",
"September": "September",
"ser": "Search",
"Serving": "Serving",
"SET": "SET",
@ -234,8 +249,9 @@
"sru": "Share recipe using...",
"stars": "Star rating",
"stick": "stick",
"stp": "Step %s",
"stp": "Step",
"strAdd": "Start adding your recipes!",
"SUN": "SUN",
"sVw": "Shake to view random recipe",
"sVwInfo": "Helps you choose what to cook when you can't decide",
"Swedish": "Swedish",
@ -246,6 +262,7 @@
"Teaspoon": "Teaspoon",
"Thai": "Thai",
"Theme": "Theme",
"THU": "THU",
"title": "Title",
"tLInfo": "Recipes you want to try later are listed here",
"today": "today",
@ -256,6 +273,7 @@
"ts": "Tags",
"tsInfo": "separate with spaces",
"tsp": "tsp",
"TUE": "TUE",
"Turkish": "Turkish",
"Undefined": "Undefined",
"unit": "unit",
@ -266,6 +284,7 @@
"Vegetarian": "Vegetarian",
"Vietnamese": "Vietnamese",
"wAgo": "%s weeks ago",
"WED": "WED",
"yesterday": "yesterday",
"yieldQ": "Yield quantity",
"yieldU": "Yield unit",
@ -279,8 +298,7 @@
"delay": "Delay",
"tmr": "Timer %s",
"prstBtn": "PRESETS",
"prsts": "Presets",
"delPrst": "You are about to delete %s from the presets",
"tmrPrsts": "Timer presets",
"fwr": "for which recipe?",
"aTPrst": "Added to presets",
"tmrSnd": "Timer sound",
@ -290,42 +308,5 @@
"minutes": "minutes",
"hour": "hour",
"hours": "hours",
"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"
"seconds": "seconds"
}

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",
"apply": "APPLY",
"appRst": "App restart required",
"April": "April",
"aStpBtn": "ADD STEP",
"August": "August",
"Barbecue": "Barbecue",
"Beverages": "Beverages",
"Black": "Black",
@ -51,6 +53,7 @@
"Dark": "Dark",
"db": "Database",
"dBtn": "DELETE",
"December": "December",
"delRecInfo": "You are about to permanently delete the recipe %s",
"delRecsInfo": "You are about to permanently delete %s",
"Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Export in progress",
"expSuc": "Export success",
"favourites": "Favourites",
"February": "February",
"Filipino": "Filipino",
"Filtered recipes": "Filtered recipes",
"fl oz": "fl oz",
"fltr": "Filter",
"Fluid Ounce": "Fluid Ounce",
"French": "French",
"FRI": "FRI",
"fsList": "Your favourite recipes are listed here",
"g": "g",
"gal": "gal",
@ -90,7 +95,7 @@
"grocery": "Grocery List",
"guide": "User guide",
"Healthy": "Healthy",
"hr": "h",
"hr": "hr",
"impBu": "Import data",
"impFail": "Import failed",
"impInfo": "Supports full backups exported by this app",
@ -103,12 +108,15 @@
"intf": "Interface",
"invFile": "Invalid file",
"Irish": "Irish",
"it": "Item %s",
"it": "Item",
"Italian": "Italian",
"Jamaican": "Jamaican",
"January": "January",
"Japanese": "Japanese",
"Jewish": "Jewish",
"joinTG": "Join the Telegram group",
"July": "July",
"June": "June",
"kEdit": "KEEP EDITING",
"Kenyan": "Kenyan",
"kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch",
"mAgo": "%s months ago",
"Main dishes": "Main dishes",
"March": "March",
"May": "May",
"Meat": "Meat",
"medium": "medium",
"Mexican": "Mexican",
@ -137,6 +147,7 @@
"minimal": "Minimal",
"ml": "ml",
"Moderate": "Moderate",
"MON": "MON",
"newCui": "New cuisine",
"Newest first": "Newest first",
"newRec": "New recipe",
@ -151,8 +162,10 @@
"noRecs": "No recipes match your search",
"noRecsInL": "None of the recipes here matches your search",
"nos": "Notes",
"November": "November",
"nwCat": "New category",
"nwYiU": "New yield unit",
"October": "October",
"OK": "OK",
"Oldest first": "Oldest first",
"opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Piece",
"pinch": "pinch",
"planner": "Meal Planner",
"plsAdd": "Use the + button to add one",
"plsAdd": "Use the plus button to add one",
"Portuguese": "Portuguese",
"Poultry": "Poultry",
"Pound": "Pound",
@ -210,10 +223,12 @@
"rst": "RESTART",
"Russian": "Russian",
"Salads": "Salads",
"SAT": "SAT",
"Sauces": "Sauces",
"Scottish": "Scottish",
"Seafood": "Seafood",
"selRec": "Select recipe",
"September": "September",
"ser": "Search",
"Serving": "Serving",
"SET": "SET",
@ -233,8 +248,9 @@
"sru": "Share recipe using...",
"stars": "Star rating",
"stick": "stick",
"stp": "Step %s",
"stp": "Step",
"strAdd": "Start adding your recipes!",
"SUN": "SUN",
"sVw": "Shake to view random recipe",
"sVwInfo": "Helps you choose what to cook when you can't decide",
"Swedish": "Swedish",
@ -245,6 +261,7 @@
"Teaspoon": "Teaspoon",
"Thai": "Thai",
"Theme": "Theme",
"THU": "THU",
"title": "Title",
"tLInfo": "Recipes you want to try later are listed here",
"today": "today",
@ -255,6 +272,7 @@
"ts": "Tags",
"tsInfo": "separate with spaces",
"tsp": "tsp",
"TUE": "TUE",
"Turkish": "Turkish",
"Undefined": "Undefined",
"unit": "unit",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetarian",
"Vietnamese": "Vietnamese",
"wAgo": "%s weeks ago",
"WED": "WED",
"yesterday": "yesterday",
"yieldQ": "Yield quantity",
"yieldU": "Yield unit",
@ -275,6 +294,7 @@
"tmrSnd": "Timer sound",
"aTPrst": "Added to presets",
"fwr": "for which recipe?",
"tmrPrsts": "Timer presets",
"prstBtn": "PRESETS",
"tmr": "Timer %s",
"stop": "Stop",
@ -288,44 +308,5 @@
"minutes": "minutes",
"minute": "minute",
"dlyDur": "Delay duration",
"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"
"delay": "Delay"
}

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",
"apply": "APPLY",
"appRst": "App restart required",
"April": "April",
"aStpBtn": "ADD STEP",
"August": "August",
"Barbecue": "Barbecue",
"Beverages": "Beverages",
"Black": "Black",
@ -51,6 +53,7 @@
"Dark": "Dark",
"db": "Database",
"dBtn": "DELETE",
"December": "December",
"delRecInfo": "You are about to permanently delete the recipe %s",
"delRecsInfo": "You are about to permanently delete %s",
"Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Export in progress",
"expSuc": "Export success",
"favourites": "Favorites",
"February": "February",
"Filipino": "Filipino",
"Filtered recipes": "Filtered recipes",
"fl oz": "fl oz",
"fltr": "Filter",
"Fluid Ounce": "Fluid Ounce",
"French": "French",
"FRI": "FRI",
"fsList": "Your favorite recipes are listed here",
"g": "g",
"gal": "gal",
@ -90,7 +95,7 @@
"grocery": "Grocery List",
"guide": "User guide",
"Healthy": "Healthy",
"hr": "h",
"hr": "hr",
"impBu": "Import data",
"impFail": "Import failed",
"impInfo": "Supports full backups exported by this app",
@ -103,12 +108,15 @@
"intf": "Interface",
"invFile": "Invalid file",
"Irish": "Irish",
"it": "Item %s",
"it": "Item",
"Italian": "Italian",
"Jamaican": "Jamaican",
"January": "January",
"Japanese": "Japanese",
"Jewish": "Jewish",
"joinTG": "Join the Telegram group",
"July": "July",
"June": "June",
"kEdit": "KEEP EDITING",
"Kenyan": "Kenyan",
"kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch",
"mAgo": "%s months ago",
"Main dishes": "Main dishes",
"March": "March",
"May": "May",
"Meat": "Meat",
"medium": "medium",
"Mexican": "Mexican",
@ -137,6 +147,7 @@
"minimal": "Minimal",
"ml": "ml",
"Moderate": "Moderate",
"MON": "MON",
"newCui": "New cuisine",
"Newest first": "Newest first",
"newRec": "New recipe",
@ -151,8 +162,10 @@
"noRecs": "No recipes match your search",
"noRecsInL": "None of the recipes here matches your search",
"nos": "Notes",
"November": "November",
"nwCat": "New category",
"nwYiU": "New yield unit",
"October": "October",
"OK": "OK",
"Oldest first": "Oldest first",
"opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Piece",
"pinch": "pinch",
"planner": "Meal Planner",
"plsAdd": "Use the + button to add one",
"plsAdd": "Use the plus button to add one",
"Portuguese": "Portuguese",
"Poultry": "Poultry",
"Pound": "Pound",
@ -210,10 +223,12 @@
"rst": "RESTART",
"Russian": "Russian",
"Salads": "Salads",
"SAT": "SAT",
"Sauces": "Sauces",
"Scottish": "Scottish",
"Seafood": "Seafood",
"selRec": "Select recipe",
"September": "September",
"ser": "Search",
"Serving": "Serving",
"SET": "SET",
@ -233,8 +248,9 @@
"sru": "Share recipe using...",
"stars": "Star rating",
"stick": "stick",
"stp": "Step %s",
"stp": "Step",
"strAdd": "Start adding your recipes!",
"SUN": "SUN",
"sVw": "Shake to view random recipe",
"sVwInfo": "Helps you choose what to cook when you can't decide",
"Swedish": "Swedish",
@ -245,6 +261,7 @@
"Teaspoon": "Teaspoon",
"Thai": "Thai",
"Theme": "Theme",
"THU": "THU",
"title": "Title",
"tLInfo": "Recipes you want to try later are listed here",
"today": "today",
@ -255,6 +272,7 @@
"ts": "Tags",
"tsInfo": "separate with spaces",
"tsp": "tsp",
"TUE": "TUE",
"Turkish": "Turkish",
"Undefined": "Undefined",
"unit": "unit",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetarian",
"Vietnamese": "Vietnamese",
"wAgo": "%s weeks ago",
"WED": "WED",
"yesterday": "yesterday",
"yieldQ": "Yield quantity",
"yieldU": "Yield unit",
@ -275,6 +294,7 @@
"tmrSnd": "Timer sound",
"aTPrst": "Added to presets",
"fwr": "for which recipe?",
"tmrPrsts": "Timer presets",
"prstBtn": "PRESETS",
"tmr": "Timer %s",
"stop": "Stop",
@ -288,44 +308,5 @@
"minutes": "minutes",
"minute": "minute",
"dlyDur": "Delay duration",
"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"
"delay": "Delay"
}

View file

@ -1,20 +1,3 @@
{
"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"
"sec": "s"
}

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",
"apply": "APLICAR",
"appRst": "Se requiere reiniciar la aplicación",
"April": "Abril",
"aStpBtn": "AÑADIR PASO",
"August": "Agosto",
"Barbecue": "Barbacoa",
"Beverages": "Bebidas",
"Black": "Negro",
@ -51,6 +53,7 @@
"Dark": "Oscuro",
"db": "Base de datos",
"dBtn": "ELIMINAR",
"December": "Diciembre",
"delRecInfo": "Estás a punto de eliminar definitivamente la receta %s",
"delRecsInfo": "Estás a punto de eliminar permanentemente %s",
"Desserts": "Postres",
@ -72,12 +75,14 @@
"expip": "Exportación en curso",
"expSuc": "Exportación satisfactoria",
"favourites": "Favoritos",
"February": "Febrero",
"Filipino": "Filipina",
"Filtered recipes": "Recetas filtradas",
"fl oz": "oz liq",
"fltr": "Filtro",
"Fluid Ounce": "Onza líquida",
"French": "Francesa",
"FRI": "VIE",
"fsList": "Aquí se enumeran tus recetas favoritas",
"g": "g",
"gal": "gal",
@ -106,9 +111,12 @@
"it": "Artículo",
"Italian": "Italiano",
"Jamaican": "Jamaiquino",
"January": "Enero",
"Japanese": "Japonés",
"Jewish": "Judía",
"joinTG": "Únete al grupo de Telegram",
"July": "Julio",
"June": "Junio",
"kEdit": "SEGUIR EDITANDO",
"Kenyan": "Keniata",
"kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Almuerzo",
"mAgo": "hace %s meses",
"Main dishes": "Platos principales",
"March": "Marzo",
"May": "Mayo",
"Meat": "Carnes",
"medium": "mediano",
"Mexican": "Mejicana",
@ -137,6 +147,7 @@
"minimal": "Mínimo",
"ml": "ml",
"Moderate": "Moderada",
"MON": "LUN",
"newCui": "Nueva cocina",
"Newest first": "Más nuevas primero",
"newRec": "Nueva receta",
@ -151,8 +162,10 @@
"noRecs": "No hay recetas que coincidan con tu búsqueda",
"noRecsInL": "Ninguna de las recetas aquí coincide con su búsqueda",
"nos": "Notas",
"November": "Noviembre",
"nwCat": "Nueva categoría",
"nwYiU": "Nueva unidad de medida",
"October": "Octubre",
"OK": "OK",
"Oldest first": "Más antiguas primero",
"opts": "Opciones",
@ -210,10 +223,12 @@
"rst": "REINICIAR",
"Russian": "Rusa",
"Salads": "Ensaladas",
"SAT": "SAB",
"Sauces": "Salsas",
"Scottish": "Escocesa",
"Seafood": "Comida del mar",
"selRec": "Selecciona una receta",
"September": "Septiembre",
"ser": "Buscar",
"Serving": "Servicio",
"SET": "ESTABLECER",
@ -235,6 +250,7 @@
"stick": "rama",
"stp": "Paso",
"strAdd": "¡Empieza a añadir tus recetas!",
"SUN": "DOM",
"sVw": "Agita para ver una receta aleatoria",
"sVwInfo": "Te ayuda a elegir que cocinar cuando no podés decidirte",
"Swedish": "Sueca",
@ -245,6 +261,7 @@
"Teaspoon": "Cucharadita",
"Thai": "Thai",
"Theme": "Tema",
"THU": "JUE",
"title": "Título",
"tLInfo": "Las recetas que el usuario quería probar más tarde están listadas aquí",
"today": "hoy",
@ -255,6 +272,7 @@
"ts": "Etiquetas",
"tsInfo": "separa con espacios",
"tsp": "cdt",
"TUE": "MAR",
"Turkish": "Turca",
"Undefined": "Indefinido",
"unit": "unidad",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetariano",
"Vietnamese": "Vietnamita",
"wAgo": "hace %s semanas",
"WED": "MIE",
"yesterday": "ayer",
"yieldQ": "Cantidad de rendimiento",
"yieldU": "Unidad de medida",
@ -282,41 +301,12 @@
"minutes": "minutos",
"minute": "minuto",
"stop": "Detener",
"delay": "Retrasar",
"delay": "Retraso",
"prstBtn": "PRECIPIOS",
"tmrPrsts": "Preselecciones del temporizador",
"fwr": "para qué receta?",
"aTPrst": "Añadido a los preajustes",
"tmrSnd": "Sonido del temporizador",
"tmrvbrt": "Vibrador del temporizador",
"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!"
"dlyDur": "Duración del retraso"
}

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",
"apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "aout",
"Barbecue": "Barbecue",
"Beverages": "Boissons",
"Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre",
"db": "Base de données",
"dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours",
"expSuc": "Exportation réussie",
"favourites": "Favoris",
"February": "février",
"Filipino": "philippine",
"Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq",
"fltr": "Filtre",
"Fluid Ounce": "Once liquide",
"French": "française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici",
"g": "g",
"gal": "gal",
@ -106,9 +111,12 @@
"it": "Élément",
"Italian": "italienne",
"Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise",
"Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER",
"Kenyan": "kényane",
"kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche",
"ltAgo": "il y a longtemps",
"lunch": "Diner",
"mAgo": "il y a %s mois",
"mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande",
"medium": "moyen",
"Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale",
"ml": "ml",
"Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de rendement",
"October": "octobre",
"OK": "OK",
"Oldest first": "La plus ancienne dabord",
"opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau",
"pinch": "pincée",
"planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une",
"plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise",
"Poultry": "Volaille",
"Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes",
"recTitle": "Ma recette saine",
"recU": "mise à jour:",
"req": "%s nécessaire",
"req": "%s requis(e)",
"resNF": "Recette introuvable",
"rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER",
"Russian": "russe",
"Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces",
"Scottish": "écossaise",
"Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher",
"Serving": "Portion",
"SET": "DÉFINIR",
@ -235,6 +250,7 @@
"stick": "barre",
"stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes !",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à café",
"Thai": "thaïlandaise",
"Theme": "Thème",
"THU": "jeu",
"title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s",
"triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire",
"trylater": "À essayer plus tard",
"trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES ?",
"ts": "Étiquettes",
"tsInfo": "séparez par des espaces",
"tsp": "c.à.c",
"TUE": "mar",
"Turkish": "turque",
"Undefined": "Indéfini",
"unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier",
"yieldQ": "Quantité de rendement",
"yieldU": "Unité de rendement",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette ?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s",
"stop": "Arrêter",
@ -288,41 +308,5 @@
"minutes": "minutes",
"minute": "minute",
"dlyDur": "Durée du retard",
"delay": "Retarder",
"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"
"delay": "Retard"
}

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",
"apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "août",
"Barbecue": "Barbecue",
"Beverages": "Breuvages",
"Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre",
"db": "Base de données",
"dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours",
"expSuc": "Exportation réussie",
"favourites": "Favoris",
"February": "février",
"Filipino": "philippine",
"Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq",
"fltr": "Filtre",
"Fluid Ounce": "Once liquide",
"French": "française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici",
"g": "g",
"gal": "gal",
@ -96,7 +101,7 @@
"impInfo": "Prend en charge les sauvegardes complètes exportées par cette application",
"impip": "Importation en cours",
"impSuc": "Importation réussie",
"in": "po",
"in": "in",
"Indian": "indienne",
"ings": "Ingrédients",
"inss": "Instructions",
@ -106,9 +111,12 @@
"it": "Élément",
"Italian": "italienne",
"Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise",
"Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER",
"Kenyan": "kényane",
"kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche",
"ltAgo": "il y a longtemps",
"lunch": "Dîner",
"mAgo": "il y a %s mois",
"mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande",
"medium": "moyen",
"Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale",
"ml": "ml",
"Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de rendement",
"October": "octobre",
"OK": "OK",
"Oldest first": "La plus ancienne dabord",
"opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau",
"pinch": "pincée",
"planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une",
"plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise",
"Poultry": "Volaille",
"Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes",
"recTitle": "Ma recette saine",
"recU": "mise à jour:",
"req": "%s nécessaire",
"req": "%s requis(e)",
"resNF": "Recette introuvable",
"rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER",
"Russian": "russe",
"Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces",
"Scottish": "écossaise",
"Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher",
"Serving": "Portion",
"SET": "DÉFINIR",
@ -235,6 +250,7 @@
"stick": "barre",
"stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes!",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à thé",
"Thai": "thaïlandaise",
"Theme": "Thème",
"THU": "jeu",
"title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire",
"trylater": "À essayer plus tard",
"trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES?",
"ts": "Étiquettes",
"tsInfo": "séparez par des espaces",
"tsp": "c.à.t",
"TUE": "mar",
"Turkish": "turque",
"Undefined": "Indéfini",
"unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier",
"yieldQ": "Quantité de rendement",
"yieldU": "Unité de rendement",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s",
"stop": "Arrêter",
@ -288,41 +308,5 @@
"minutes": "minutes",
"minute": "minute",
"dlyDur": "Durée du retard",
"delay": "Retarder",
"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"
"delay": "Retard"
}

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",
"apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "août",
"Barbecue": "Barbecue",
"Beverages": "Boissons",
"Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre",
"db": "Base de données",
"dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours",
"expSuc": "Exportation réussie",
"favourites": "Favoris",
"February": "février",
"Filipino": "philippine",
"Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq",
"fltr": "Filtre",
"Fluid Ounce": "Once liquide",
"French": "française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici",
"g": "g",
"gal": "gal",
@ -106,9 +111,12 @@
"it": "Élément",
"Italian": "italienne",
"Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise",
"Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER",
"Kenyan": "kényane",
"kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche",
"ltAgo": "il y a longtemps",
"lunch": "Dîner",
"mAgo": "il y a %s mois",
"mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande",
"medium": "moyen",
"Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale",
"ml": "ml",
"Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de rendement",
"October": "octobre",
"OK": "OK",
"Oldest first": "La plus ancienne dabord",
"opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau",
"pinch": "pincée",
"planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une",
"plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise",
"Poultry": "Volaille",
"Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes",
"recTitle": "Ma recette saine",
"recU": "mise à jour:",
"req": "%s nécessaire",
"req": "%s requis(e)",
"resNF": "Recette introuvable",
"rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER",
"Russian": "russe",
"Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces",
"Scottish": "écossaise",
"Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher",
"Serving": "Portion",
"SET": "DÉFINIR",
@ -235,6 +250,7 @@
"stick": "barre",
"stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes!",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à café",
"Thai": "thaïlandaise",
"Theme": "Thème",
"THU": "jeu",
"title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire",
"trylater": "À essayer plus tard",
"trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES?",
"ts": "Étiquettes",
"tsInfo": "séparez par des espaces",
"tsp": "c.à.c",
"TUE": "mar",
"Turkish": "turque",
"Undefined": "Indéfini",
"unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier",
"yieldQ": "Quantité de rendement",
"yieldU": "Unité de rendement",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s",
"stop": "Arrêter",
@ -288,41 +308,5 @@
"minutes": "minutes",
"minute": "minute",
"dlyDur": "Durée du retard",
"delay": "Retarder",
"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"
"delay": "Retard"
}

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",
"apply": "APPLIQUER",
"appRst": "Redémarrage de lappli nécessaire",
"April": "avril",
"aStpBtn": "AJOUTER UNE ÉTAPE",
"August": "août",
"Barbecue": "Barbecue",
"Beverages": "Boissons",
"Black": "Noir",
@ -51,6 +53,7 @@
"Dark": "Sombre",
"db": "Base de données",
"dBtn": "SUPPRIMER",
"December": "décembre",
"delRecInfo": "Vous êtes sur le point de supprimer définitivement la recette %s",
"delRecsInfo": "Vous êtes sur le point de supprimer définitivement %s",
"Desserts": "Desserts",
@ -72,12 +75,14 @@
"expip": "Exportation en cours",
"expSuc": "Exportation réussie",
"favourites": "Favoris",
"February": "février",
"Filipino": "philippine",
"Filtered recipes": "Recettes filtrées",
"fl oz": "oz liq",
"fltr": "Filtre",
"Fluid Ounce": "Once liquide",
"French": "française",
"French": "Française",
"FRI": "ven",
"fsList": "Vos recettes favorites sont listées ici",
"g": "g",
"gal": "gal",
@ -103,12 +108,15 @@
"intf": "Interface",
"invFile": "Fichier invalide",
"Irish": "irlandaise",
"it": "Élément %s",
"it": "Élément",
"Italian": "italienne",
"Jamaican": "jamaïcaine",
"January": "janvier",
"Japanese": "japonaise",
"Jewish": "juive",
"joinTG": "Rejoignez le groupe Telegram",
"July": "juillet",
"June": "juin",
"kEdit": "CONTINUER",
"Kenyan": "kényane",
"kg": "kg",
@ -126,8 +134,10 @@
"Loaf": "Miche",
"ltAgo": "il y a longtemps",
"lunch": "Déjeuner",
"mAgo": "il y a %s mois",
"mAgo": "Il y a %s mois",
"Main dishes": "Plats principaux",
"March": "mars",
"May": "mai",
"Meat": "Viande",
"medium": "moyen",
"Mexican": "mexicaine",
@ -137,6 +147,7 @@
"minimal": "Minimale",
"ml": "ml",
"Moderate": "Modéré",
"MON": "lun",
"newCui": "Nouvelle cuisine",
"Newest first": "La plus récente dabord",
"newRec": "Nouvelle recette",
@ -151,8 +162,10 @@
"noRecs": "Aucune recette ne correspond à votre recette",
"noRecsInL": "Aucune des recettes ici ne correspond à votre recherche",
"nos": "Notes",
"November": "novembre",
"nwCat": "Nouvelle catégorie",
"nwYiU": "Nouvelle unité de portion",
"October": "octobre",
"OK": "OK",
"Oldest first": "La plus ancienne dabord",
"opts": "Options",
@ -166,7 +179,7 @@
"Piece": "Morceau",
"pinch": "pincée",
"planner": "Planificateur de repas",
"plsAdd": "Utilisez le bouton + pour en ajouter une",
"plsAdd": "Utilisez le bouton plus pour en ajouter une",
"Portuguese": "portugaise",
"Poultry": "Volaille",
"Pound": "Livre",
@ -187,7 +200,7 @@
"recs": "recettes",
"recTitle": "Ma recette saine",
"recU": "mise à jour:",
"req": "%s nécessaire",
"req": "%s requis(e)",
"resNF": "Recette introuvable",
"rest": "Réinitialiser",
"restCatL": "Réinitialiser la liste des catégories",
@ -210,10 +223,12 @@
"rst": "REDÉMARRER",
"Russian": "russe",
"Salads": "Salades",
"SAT": "sam",
"Sauces": "Sauces",
"Scottish": "écossaise",
"Seafood": "Fruits de mer",
"selRec": "Sélectionner une recette",
"September": "septembre",
"ser": "Chercher",
"Serving": "Portion",
"SET": "DÉFINIR",
@ -233,8 +248,9 @@
"sru": "Partager la recette en utilisant…",
"stars": "Évaluation étoilée",
"stick": "barre",
"stp": "Étape %s",
"stp": "Étape",
"strAdd": "Commencez à ajouter vos recettes !",
"SUN": "dim",
"sVw": "Secouez pour voir une recette au hasard",
"sVwInfo": "Vous aide à choisir quoi cuisiner quand vous ne pouvez pas vous décider",
"Swedish": "suédoise",
@ -245,16 +261,18 @@
"Teaspoon": "Cuillère à café",
"Thai": "thaïlandaise",
"Theme": "Thème",
"THU": "jeu",
"title": "Titre",
"tLInfo": "Les recettes que vous voulez essayer plus tard sont listées ici",
"today": "aujourdhui",
"triedInfo": "Vous avez essayé cette recette %s",
"trnsl": "Traduire",
"trylater": "À essayer plus tard",
"trylater": "Essayer plus tard",
"trySer": "RECHERCHE DANS TOUTES LES RECETTES ?",
"ts": "Étiquettes",
"tsInfo": "séparez par des espaces",
"tsp": "c.à.c",
"TUE": "mar",
"Turkish": "turque",
"Undefined": "Indéfini",
"unit": "unité",
@ -265,6 +283,7 @@
"Vegetarian": "Végétarien",
"Vietnamese": "vietnamienne",
"wAgo": "il y a %s semaines",
"WED": "mer",
"yesterday": "hier",
"yieldQ": "Quantité de portion",
"yieldU": "Unité de portion",
@ -275,6 +294,7 @@
"tmrSnd": "Son de la minuterie",
"aTPrst": "Ajouté aux préréglages",
"fwr": "pour quelle recette ?",
"tmrPrsts": "Préréglages de la minuterie",
"prstBtn": "PRÉRÉGLAGES",
"tmr": "Minuterie %s",
"stop": "Arrêter",
@ -288,44 +308,5 @@
"minutes": "minutes",
"minute": "minute",
"dlyDur": "Durée du retard",
"delay": "Retarder",
"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"
"delay": "Retard"
}

View file

@ -1,331 +1,293 @@
{
"aap": "एक तस्वीर लगाओ",
"About": "तकरीबन",
"aBtn": "जोड़ें",
"aD": "सब कुछ कर दिया!",
"addCmbBtn": "संयोजन जोड़ें",
"aFBu": "बैकअप करने के लिए एक नुस्खा जोड़ें",
"aIngBtn": "सामग्री जोड़ें",
"allCats": "सब वर्ग",
"allCuis": "सभी व्यंजनों",
"allTs": "सभी टैग",
"American": "अमेरिकन",
"aNBtn": "नया जोड़ो",
"aNoBtn": "नोट जोड़ें",
"app.name": "एनरेसिपीज़",
"appCrd": "एनरेसिपीज़ के माध्यम से साझा किया गया। इसे F-Droid, IzzyOnDroid या Play Store पर प्राप्त करें।",
"Appetizers": "ऐपेटाइज़र",
"appInfo": "एनरेसिपीज़ एक खुला स्रोत, गोपनीयता-अनुकूल डिजिटल रसोई की किताब है जो आपको अपने व्यंजनों को बनाने, प्रबंधित करने और साझा करने देता है",
"apply": "लागू",
"appRst": "एप्लिकेशन पुनरारंभ की आवश्यकता है",
"aStpBtn": "निर्देश जोड़ें",
"Barbecue": "बारबेक्यू",
"Beverages": "पेय",
"Black": "काला",
"Brazilian": "ब्राजील",
"Breads": "ब्रेड",
"breakfast": "सुबह का नाश्ता",
"British": "अंग्रेजों",
"buEmp": "बैकअप फ़ाइल खाली है",
"buFol": "बैकअप फ़ोल्डर",
"buInc": "विकृत या भ्रष्ट बैकअप फ़ाइल",
"buInfo": "आपके सभी डेटा युक्त एक ज़िप फ़ाइल बनाता है जिसे वापस आयात किया जा सकता है",
"buMod": "बैकअप फ़ाइल को कहीं और संशोधित किया गया था",
"cat": "वर्ग",
"cBtn": "रद्द करना",
"Challenging": "चुनौतीपूर्ण",
"Chinese": "चीनी",
"clove": "लौंग",
"cm": "सेंटीमीटर",
"cmbs": "संयोजनों",
"conBtn": "जारी रखें",
"conf": "कन्फ़र्म",
"cookT": "पकाने का समय",
"cPic": "फ़ोटो संपादित करें",
"Created": "बनाया था",
"cui": "भोजन",
"cup": "कप",
"Cup": "कप",
"dAgo": "%s दिन पहले",
"Danish": "दानिश",
"Dark": "गहरा",
"db": "डेटाबेस",
"dBtn": "हटाएँ",
"delRecInfo": "आप के बारे में स्थायी रूप से नुस्खा %s को नष्ट करने के लिए कर रहे हैं",
"delRecsInfo": "आप %s को स्थायी रूप से हटाने वाले हैं",
"Desserts": "डेसर्ट",
"detailed": "विस्तृत",
"Difficulty level": "कठिनाई स्तर",
"dinner": "रात का खाना",
"disBtn": "रद्द करें",
"disc": "इस रेसिपी में अनचाहे बदलाव हैं। आप क्या करना चाहेंगे?",
"donate": "दान करना",
"dozen": "darjan",
"drop": "बूंद",
"dsp": "मझोली चम्मच",
"Easy": "आसान",
"editRec": "नुस्खा संपादित करें",
"Egyptian": "मिस्र के",
"English": "अंग्रेज़ी",
"EnRecipes": "एनरेसिपीज़",
"expBu": "पूर्ण बैकअप निर्यात करें",
"expip": "निर्यात प्रगति पर है",
"expSuc": "निर्यात की सफलता",
"favourites": "पसंदीदा",
"Filipino": "filipino",
"Filtered recipes": "फ़िल्टर किए गए व्यंजनों",
"fl oz": "द्रव-औंस",
"fltr": "फ़िल्टर",
"Fluid Ounce": "द्रव-औंस",
"French": "फ्रेंच",
"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": "मद %s",
"Italian": "इतालवी",
"Jamaican": "जमैका",
"Japanese": "जापानी",
"Jewish": "यहूदी",
"joinTG": "टेलीग्राम समूह में शामिल हों",
"kEdit": "संपादन रखें",
"Kenyan": "केन्याई",
"kg": "किलोग्राम",
"Kilogram": "किलोग्राम",
"Korean": "कोरियाई",
"l": "लीटर",
"lang": "भाषा",
"large": "बड़ा",
"Last updated": "आखरी अपडेट",
"lb": "पौंड",
"leaf": "पत्ता",
"Light": "हल्का",
"listVM": "सूची दृश्य मोड",
"Litre": "लीटर",
"Loaf": "पाव रोटी",
"ltAgo": "बहुत पहले",
"lunch": "दोपहर का भोजन",
"mAgo": "%s महीने पहले",
"Main dishes": "मुख्य व्यंजन",
"Meat": "मांस",
"medium": "मध्यम",
"Mexican": "मैक्सिकन",
"mg": "मिलीग्राम",
"Millilitre": "मिलीलीटर",
"min": "मिनट",
"minimal": "कम से कम",
"ml": "मिली लीटर",
"Moderate": "उदारवादी",
"newCui": "नए भोजन",
"Newest first": "नवीनतम पहले",
"newRec": "नई रेसिपी",
"newUnit": "नई इकाई",
"Nigerian": "नाइजीरियाई",
"nLangInfo": "नई भाषा का उपयोग करने के लिए एनरेसिपीज़ को पुनः आरंभ करें",
"nNBtn": "अब मत",
"no": "टिप्पणी",
"noAccSensor": "एक्सेलेरोमीटर सेंसर या तो अक्षम है या काम नहीं कर रहा है",
"noFavs": "अभी तक कोई पसंदीदा नहीं",
"Noodles": "नूडल्स",
"noRecs": "कोई भी रेसिपी आपकी खोज से मेल नहीं खाती",
"noRecsInL": "यहां कोई भी रेसिपी आपकी खोज से मेल नहीं खाती है",
"nos": "नोट्स",
"nwCat": "नई श्रेणी",
"nwYiU": "नई उपज इकाई",
"OK": "ठीक है",
"Oldest first": "सबसे पुराना पहले",
"opts": "विकल्प",
"Ounce": "औंस",
"oz": "औंस",
"Pasta": "पास्ता",
"Patty": "पैटी",
"photogrid": "फोटो ग्रिड",
"pht": "पकाने की विधि फोटो",
"piece": "टुकड़े",
"Piece": "टुकड़ा",
"pinch": "chutakee",
"planner": "भोजन नियोजक",
"plsAdd": "एक जोड़ने के लिए + बटन का प्रयोग करें",
"Portuguese": "पुर्तगाली",
"Poultry": "मुर्गी पालन",
"Pound": "पौंड",
"prepT": "तैयारी का समय",
"priv": "गोपनीयता नीति",
"pt": "पिंट",
"qt": "चौथाई गेलन",
"Quickest first": "सबसे पहले",
"Rating": "रेटिंग",
"rBtn": "हटाना",
"rec": "नुस्खा",
"recE": "पहले से ही मौजूद:",
"recF": "रेसिपी मिली",
"recI": "आयातित:",
"recListEmp": "यहाँ कुछ नहीं! कुछ व्यंजनों को जोड़ें और फिर से प्रयास करें",
"recPic": "पकाने की विधि फोटो",
"recRm": "नुस्खा हटा दिया गया",
"recs": "व्यंजनों",
"recTitle": "मेरी हेल्दी रेसिपी",
"recU": "अपडेट किया गया:",
"req": "आवश्यक %s",
"resNF": "पकाने की विधि नहीं मिली",
"rest": "रीसेट",
"restCatL": "श्रेणी सूची रीसेट करें",
"restCuiL": "व्यंजनों की सूची रीसेट करें",
"restDone": "सफल रीसेट करें",
"restInfo": "सूची को रीसेट करने से उपयोगकर्ता द्वारा बनाई गई प्रविष्टियां हट जाएंगी और डिफ़ॉल्ट प्रविष्टियों को पुनर्स्थापित किया जाएगा। मौजूदा व्यंजनों को प्रभावित नहीं किया जाएगा।",
"restUL": "इकाई सूची रीसेट करें",
"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": "सेट",
"Settings": "समायोजन",
"shr": "शेयर",
"Side dishes": "सह भोजन",
"simple": "सरल",
"Slowest first": "पहले धीमी",
"sltd": "चयनित",
"small": "छोटा",
"snacks": "नाश्ता",
"Soups": "सूप",
"Spanish": "स्पेनिश",
"Sri Lankan": "श्रीलंका",
"srpu": "शेयर करें रेसिपी फोटो...",
"srt": "तरह",
"sru": "शेयर रेसिपी...",
"stars": "स्टार रेटिंग",
"stick": "लाठी",
"stp": "कदम %s",
"strAdd": "अपने व्यंजनों को जोड़ना शुरू करें!",
"sVw": "यादृच्छिक नुस्खा देखने के लिए हिलाएं",
"sVwInfo": "जब आप तय नहीं कर सकते तो आपको क्या खाना बनाना है, यह चुनने में मदद करता है",
"Swedish": "स्वीडिश",
"swm": "सप्ताह की शुरुआत सोमवार से करें",
"sysDef": "प्रणालीगत चूक",
"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": "प्रणालीगत चूक + काला",
"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"
"aap": "एक तस्वीर लगाओ",
"About": "तकरीबन",
"aBtn": "जोड़ें",
"aD": "सब कुछ कर दिया!",
"addCmbBtn": "संयोजन जोड़ें",
"aFBu": "बैकअप करने के लिए एक नुस्खा जोड़ें",
"aIngBtn": "सामग्री जोड़ें",
"allCats": "सब वर्ग",
"allCuis": "सभी व्यंजनों",
"allTs": "सभी टैग",
"American": "अमेरिकन",
"aNBtn": "नया जोड़ो",
"aNoBtn": "नोट जोड़ें",
"app.name": "एनरेसिपीज़",
"appCrd": "एनरेसिपीज़ के माध्यम से साझा किया गया। इसे F-Droid, IzzyOnDroid या Play Store पर प्राप्त करें।",
"Appetizers": "ऐपेटाइज़र",
"appInfo": "एनरेसिपीज़ एक खुला स्रोत, गोपनीयता-अनुकूल डिजिटल रसोई की किताब है जो आपको अपने व्यंजनों को बनाने, प्रबंधित करने और साझा करने देता है",
"apply": "लागू",
"appRst": "एप्लिकेशन पुनरारंभ की आवश्यकता है",
"April": "अप्रैल",
"aStpBtn": "निर्देश जोड़ें",
"August": "अगस्त",
"Barbecue": "बारबेक्यू",
"Beverages": "पेय",
"Black": "काला",
"Brazilian": "ब्राजील",
"Breads": "ब्रेड",
"breakfast": "सुबह का नाश्ता",
"British": "अंग्रेजों",
"buEmp": "बैकअप फ़ाइल खाली है",
"buFol": "बैकअप फ़ोल्डर",
"buInc": "विकृत या भ्रष्ट बैकअप फ़ाइल",
"buInfo": "आपके सभी डेटा युक्त एक ज़िप फ़ाइल बनाता है जिसे वापस आयात किया जा सकता है",
"buMod": "बैकअप फ़ाइल को कहीं और संशोधित किया गया था",
"cat": "वर्ग",
"cBtn": "रद्द करना",
"Challenging": "चुनौतीपूर्ण",
"Chinese": "चीनी",
"clove": "लौंग",
"cm": "सेंटीमीटर",
"cmbs": "संयोजनों",
"conBtn": "जारी रखें",
"conf": "कन्फ़र्म",
"cookT": "पकाने का समय",
"cPic": "फ़ोटो संपादित करें",
"Created": "बनाया था",
"cui": "भोजन",
"cup": "कप",
"Cup": "कप",
"dAgo": "%s दिन पहले",
"Danish": "दानिश",
"Dark": "गहरा",
"db": "डेटाबेस",
"dBtn": "हटाएँ",
"December": "दिसंबर",
"delRecInfo": "आप के बारे में स्थायी रूप से नुस्खा %s को नष्ट करने के लिए कर रहे हैं",
"delRecsInfo": "आप %s को स्थायी रूप से हटाने वाले हैं",
"Desserts": "डेसर्ट",
"detailed": "विस्तृत",
"Difficulty level": "कठिनाई स्तर",
"dinner": "रात का खाना",
"disBtn": "रद्द करें",
"disc": "इस रेसिपी में अनचाहे बदलाव हैं। आप क्या करना चाहेंगे?",
"donate": "दान करना",
"dozen": "darjan",
"drop": "बूंद",
"dsp": "मझोली चम्मच",
"Easy": "आसान",
"editRec": "नुस्खा संपादित करें",
"Egyptian": "मिस्र के",
"English": "अंग्रेज़ी",
"EnRecipes": "एनरेसिपीज़",
"expBu": "पूर्ण बैकअप निर्यात करें",
"expip": "निर्यात प्रगति पर है",
"expSuc": "निर्यात की सफलता",
"favourites": "पसंदीदा",
"February": "फ़रवरी",
"Filipino": "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": "%s महीने पहले",
"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": "कोई भी रेसिपी आपकी खोज से मेल नहीं खाती",
"noRecsInL": "यहां कोई भी रेसिपी आपकी खोज से मेल नहीं खाती है",
"nos": "नोट्स",
"November": "नवंबर",
"nwCat": "नई श्रेणी",
"nwYiU": "नई उपज इकाई",
"October": "अक्टूबर",
"OK": "ठीक है",
"Oldest first": "सबसे पुराना पहले",
"opts": "विकल्प",
"Ounce": "औंस",
"oz": "औंस",
"Pasta": "पास्ता",
"Patty": "पैटी",
"photogrid": "फोटो ग्रिड",
"pht": "पकाने की विधि फोटो",
"piece": "टुकड़े",
"Piece": "टुकड़ा",
"pinch": "chutakee",
"planner": "भोजन नियोजक",
"plsAdd": "एक जोड़ने के लिए प्लस बटन का उपयोग करें",
"Portuguese": "पुर्तगाली",
"Poultry": "मुर्गी पालन",
"Pound": "पौंड",
"prepT": "तैयारी का समय",
"priv": "गोपनीयता नीति",
"pt": "पिंट",
"qt": "चौथाई गेलन",
"Quickest first": "सबसे पहले",
"Rating": "रेटिंग",
"rBtn": "हटाना",
"rec": "नुस्खा",
"recE": "पहले से ही मौजूद:",
"recF": "रेसिपी मिली",
"recI": "आयातित:",
"recListEmp": "यहाँ कुछ नहीं! कुछ व्यंजनों को जोड़ें और फिर से प्रयास करें",
"recPic": "पकाने की विधि फोटो",
"recRm": "नुस्खा हटा दिया गया",
"recs": "व्यंजनों",
"recTitle": "मेरी हेल्दी रेसिपी",
"recU": "अपडेट किया गया:",
"req": "आवश्यक %s",
"resNF": "पकाने की विधि नहीं मिली",
"rest": "रीसेट",
"restCatL": "श्रेणी सूची रीसेट करें",
"restCuiL": "व्यंजनों की सूची रीसेट करें",
"restDone": "सफल रीसेट करें",
"restInfo": "सूची को रीसेट करने से उपयोगकर्ता द्वारा बनाई गई प्रविष्टियां हट जाएंगी और डिफ़ॉल्ट प्रविष्टियों को पुनर्स्थापित किया जाएगा। मौजूदा व्यंजनों को प्रभावित नहीं किया जाएगा।",
"restUL": "इकाई सूची रीसेट करें",
"restYUL": "उपज इकाई सूची रीसेट करें",
"Rice": "चावल",
"rmCatInfo": "आप श्रेणी सूची से %s को हटाने के बारे में हैं",
"rmCmb": "संयोजन हटाया",
"rmCuiInfo": "आप के बारे में भोजन की सूची से %s को दूर करने के लिए कर रहे है",
"rmIng": "संघटक हटाया गया",
"rmIns": "निर्देश हटाया गया",
"rmN": "नोट निकाला गया",
"rmUInfo": "आप के बारे में इकाई सूची से %s को दूर करने के लिए कर रहे है",
"rmYUInfo": "आप उपज इकाई सूची से %s को हटाने के बारे में हैं",
"Roll": "रोल",
"rp": "फोटो निकालें",
"rst": "पुनरारंभ",
"Russian": "रूसी",
"Salads": "सलाद",
"SAT": "शनि",
"Sauces": "सॉस",
"Scottish": "स्कॉटिश",
"Seafood": "समुद्री भोजन",
"selRec": "नुस्खा चुनें",
"September": "सितंबर",
"ser": "खोज",
"Serving": "सर्विंग",
"SET": "सेट",
"Settings": "समायोजन",
"shr": "शेयर",
"Side dishes": "सह भोजन",
"simple": "सरल",
"Slowest first": "पहले धीमी",
"sltd": "चयनित",
"small": "छोटा",
"snacks": "नाश्ता",
"Soups": "सूप",
"Spanish": "स्पेनिश",
"Sri Lankan": "श्रीलंका",
"srpu": "शेयर करें रेसिपी फोटो...",
"srt": "तरह",
"sru": "शेयर रेसिपी...",
"stars": "स्टार रेटिंग",
"stick": "लाठी",
"stp": "कदम",
"strAdd": "अपने व्यंजनों को जोड़ना शुरू करें!",
"SUN": "रवि",
"sVw": "यादृच्छिक नुस्खा देखने के लिए हिलाएं",
"sVwInfo": "जब आप तय नहीं कर सकते तो आपको क्या खाना बनाना है, यह चुनने में मदद करता है",
"Swedish": "स्वीडिश",
"swm": "सप्ताह की शुरुआत सोमवार से करें",
"sysDef": "प्रणालीगत चूक",
"Tablespoon": "बड़ा चमचा",
"tbsp": "बड़ा चमचा",
"Teaspoon": "छोटी चम्मच",
"Thai": "थाई",
"Theme": "थीम",
"THU": "गुरु",
"title": "शीर्षक",
"tLInfo": "जिन व्यंजनों को आप बाद में आज़माना चाहते हैं, वे यहाँ सूचीबद्ध हैं",
"today": "आज",
"triedInfo": "आपने यह %s नुस्खा द्वारा आजमाया",
"trnsl": "अनुवाद करना",
"trylater": "बाद में कोशिश करें",
"trySer": "सभी व्यंजनों में खोजे?",
"ts": "टैग",
"tsInfo": "रिक्त स्थान के साथ अलग",
"tsp": "छोटी चम्मच",
"TUE": "मंगल",
"Turkish": "तुर्की",
"Undefined": "अपरिभाषित",
"unit": "इकाई",
"Unit": "इकाई",
"unsaved": "अनकवित परिवर्तन",
"untRec": "शीर्षकहीन नुस्खा",
"Vegan": "वीगन",
"Vegetarian": "शाकाहारी",
"Vietnamese": "वियतनामी",
"wAgo": "%s हफ्ते पहले",
"WED": "बुध",
"yesterday": "कल",
"yieldQ": "उपज की मात्रा",
"yieldU": "उपज इकाई",
"yld": "मान जाना",
"buto": "%s में बैकअप लिया गया",
"sysDefB": "प्रणालीगत चूक + काला"
}

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

View file

@ -17,8 +17,10 @@
"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",
"apply": "APPLICA",
"appRst": "Riavvio dellapp necessario",
"appRst": "Riavvio dell'app necessario",
"April": "aprile",
"aStpBtn": "AGGIUNGI UN PASSO",
"August": "agosto",
"Barbecue": "Grigliata",
"Beverages": "Bevande",
"Black": "Nero",
@ -51,6 +53,7 @@
"Dark": "Scuro",
"db": "Banca dati",
"dBtn": "ELIMINA",
"December": "dicembre",
"delRecInfo": "Stai per eliminare definitivamente la ricetta %s",
"delRecsInfo": "Stai per eliminare definitivamente %s",
"Desserts": "Dolci",
@ -72,12 +75,14 @@
"expip": "Esportazione in corso",
"expSuc": "Exportation réussie",
"favourites": "Preferiti",
"February": "febbraio",
"Filipino": "filippina",
"Filtered recipes": "Ricette filtrate",
"fl oz": "fl oz",
"fltr": "Filtro",
"Fluid Ounce": "Oncia liquida",
"French": "francese",
"FRI": "ven",
"fsList": "Le tue ricette preferite sono elencate qui",
"g": "g",
"gal": "gal",
@ -106,9 +111,12 @@
"it": "Voce",
"Italian": "italiana",
"Jamaican": "giamaicana",
"January": "gennaio",
"Japanese": "giapponese",
"Jewish": "ebraica",
"joinTG": "Unisciti al gruppo Telegram",
"July": "luglio",
"June": "giugno",
"kEdit": "CONTINUA A MODIFICARE",
"Kenyan": "keniota",
"kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Pranzo",
"mAgo": "%s mesi fa",
"Main dishes": "Piatti principali",
"March": "marzo",
"May": "maggio",
"Meat": "Carne",
"medium": "medio",
"Mexican": "messicana",
@ -137,6 +147,7 @@
"minimal": "Minima",
"ml": "ml",
"Moderate": "Moderato",
"MON": "lun",
"newCui": "Nuova cucina",
"Newest first": "Prima la più ricente",
"newRec": "Nuova ricetta",
@ -151,8 +162,10 @@
"noRecs": "Nessuna ricetta corrisponde alla tua ricerca",
"noRecsInL": "Nessuna delle ricette qui corrisponde alla tua ricerca",
"nos": "Note",
"November": "novembre",
"nwCat": "Nuova categoria",
"nwYiU": "Nuova unità di resa",
"October": "ottobre",
"OK": "OK",
"Oldest first": "Prima la più vecchia",
"opts": "Opzioni",
@ -166,7 +179,7 @@
"Piece": "Pezzo",
"pinch": "pizzico",
"planner": "Pianificatore di pasti",
"plsAdd": "Usa il pulsante + per aggiungerne uno",
"plsAdd": "Usa il pulsante più per aggiungerne uno",
"Portuguese": "portoghese",
"Poultry": "Pollame",
"Pound": "Libbra",
@ -187,33 +200,35 @@
"recs": "ricette",
"recTitle": "La mia ricetta sana",
"recU": "Aggiornate:",
"req": "%s necessario",
"req": "%s richiesto",
"resNF": "Ricetta non trovata",
"rest": "Ripristina",
"restCatL": "Reimposta lelenco delle categorie",
"restCuiL": "Reimposta lelenco cucina",
"restCatL": "Reimposta l'elenco delle categorie",
"restCuiL": "Reimposta l'elenco cucina",
"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.",
"restUL": "Reimposta lelenco delle unità",
"restYUL": "Reimposta lelenco delle unità di resa",
"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 l'elenco delle unità",
"restYUL": "Reimposta l'elenco delle unità di resa",
"Rice": "Riso",
"rmCatInfo": "Stai per rimuovere %s dallelenco delle categorie",
"rmCatInfo": "Stai per rimuovere %s dall'elenco delle categorie",
"rmCmb": "Combinazione rimossa",
"rmCuiInfo": "Stai per rimuovere %s dallelenco della cucina",
"rmCuiInfo": "Stai per rimuovere %s dall'elenco della cucina",
"rmIng": "Ingrediente rimosso",
"rmIns": "Istruzione rimossa",
"rmN": "Nota rimossa",
"rmUInfo": "Stai per rimuovere %s dallelenco delle unità",
"rmYUInfo": "Stai per rimuovere %s dallelenco delle unità di rendimento",
"rmUInfo": "Stai per rimuovere %s dall'elenco delle unità",
"rmYUInfo": "Stai per rimuovere %s dall'elenco delle unità di rendimento",
"Roll": "Rotolo",
"rp": "Rimuovi la foto",
"rst": "RIAVVIA",
"Russian": "russa",
"Salads": "Insalate",
"SAT": "sab",
"Sauces": "Salse",
"Scottish": "scozzese",
"Seafood": "Frutti di mare",
"selRec": "Seleziona una ricetta",
"September": "settembre",
"ser": "Cerca",
"Serving": "Porzione",
"SET": "IMPOSTA",
@ -235,6 +250,7 @@
"stick": "bastone",
"stp": "Passo",
"strAdd": "Inizia ad aggiungere le tue ricette!",
"SUN": "dom",
"sVw": "Scuoti per visualizzare una ricetta casuale",
"sVwInfo": "Ti aiuta a scegliere cosa cucinare quando non puoi decidere",
"Swedish": "svedese",
@ -245,16 +261,18 @@
"Teaspoon": "Cucchiaino",
"Thai": "tailandese",
"Theme": "Tema",
"THU": "gio",
"title": "Titolo",
"tLInfo": "Le ricette che vuoi provare in seguito sono elencate qui",
"today": "oggi",
"triedInfo": "Hai provato questa ricetta %s",
"trnsl": "Traduci",
"trylater": "Da provare più tardi",
"trylater": "Prova più tardi",
"trySer": "CERCARE IN TUTTE LE RICETTE?",
"ts": "Etichette",
"tsInfo": "separa con spazi",
"tsp": "cucchiaino",
"TUE": "mar",
"Turkish": "turca",
"Undefined": "Indefinito",
"unit": "unità",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetariano",
"Vietnamese": "vietnamita",
"wAgo": "%s settimane fa",
"WED": "mer",
"yesterday": "ieri",
"yieldQ": "Quantità di resa",
"yieldU": "Unità di resa",
@ -272,13 +291,14 @@
"buto": "Backup salvato in %s",
"sysDefB": "Predefinito del sistema + Nero",
"tmr": "Contaminuti %s",
"strtBtn": "AVVIA",
"strtBtn": "AVVIO",
"ntmr": "Nuovo contaminuti",
"timer": "Contaminuti di cottura",
"tmrvbrt": "Vibrazione contaminuti",
"tmrSnd": "Suono del contaminuti",
"aTPrst": "Aggiunto alle preimpostazioni",
"fwr": "per quale ricetta?",
"tmrPrsts": "Preimpostazioni del contaminuti",
"prstBtn": "Preimpostazioni",
"stop": "Ferma",
"sec": "s",
@ -288,41 +308,5 @@
"minutes": "minuti",
"minute": "minuto",
"dlyDur": "Durata del ritardo",
"delay": "Ritarda",
"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"
"delay": "Ritardo"
}

View file

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

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

@ -0,0 +1 @@
{}

View file

@ -1,331 +1,293 @@
{
"aap": "ഒരു ഫോട്ടോ അറ്റാച്ചുചെയ്യുക",
"About": "കുറിച്ച്",
"aBtn": "ചേർക്കുക",
"aD": "എല്ലാം ചെയ്തു!",
"addCmbBtn": "സംയോജനം ചേർക്കുക",
"aFBu": "ഒരു ബാക്കപ്പ് നടത്താൻ ഒരു പാചകക്കുറിപ്പ് ചേർക്കുക",
"aIngBtn": "ചേരുവ ചേർക്കുക",
"allCats": "എല്ലാ വിഭാഗങ്ങളും",
"allCuis": "എല്ലാ പാചകരീതികളും",
"allTs": "എല്ലാ ടാഗുകളും",
"American": "അമേരിക്കൻ",
"aNBtn": "പുതിയത് ചേർക്കുക",
"aNoBtn": "കുറിപ്പ് ചേര്ക്കുക",
"app.name": "ൻന്റെസിപിഎസ്",
"appCrd": "എന്റെരെസിപീസ് വഴി പങ്കിട്ടു. എഫ്-ആൻഡ്രോയിഡ്, ഇസിഓൺഡ്രോയിഡ് അല്ലെങ്കിൽ പ്ലേ സ്റ്റോറിൽ ഇത് നേടുക.",
"Appetizers": "വിശപ്പ്",
"appInfo": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ സൃഷ്ടിക്കാനും നിയന്ത്രിക്കാനും പങ്കിടാനും അനുവദിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ്, സ്വകാര്യത കേന്ദ്രീകരിച്ച ഡിജിറ്റൽ പാചകപുസ്തകമാണ് എന്റെരെസിപീസ്",
"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": "ഇല്ലാതാക്കുക",
"delRecInfo": "%s പാചകക്കുറിപ്പ് നിങ്ങൾ ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു",
"delRecsInfo": "നിങ്ങൾ %s ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു",
"Desserts": "മധുരപലഹാരങ്ങൾ",
"detailed": "വിശദമായ",
"Difficulty level": "വൈഷമ്യ നില",
"dinner": "അത്താഴം",
"disBtn": "നിരസിക്കുക",
"disc": "ഈ പാചകക്കുറിപ്പിൽ സംരക്ഷിക്കാത്ത മാറ്റങ്ങളുണ്ട്. നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്?",
"donate": "സംഭാവനചെയ്യുക",
"dozen": "ഡസൻ",
"drop": "തുള്ളി",
"dsp": "ഡെസേർട്ട് സ്പൂൺ",
"Easy": "എളുപ്പമാണ്",
"editRec": "പാചകക്കുറിപ്പ് എഡിറ്റുചെയ്യുക",
"Egyptian": "ഈജിപ്ഷ്യൻ",
"English": "ഇംഗ്ലീഷ്",
"EnRecipes": "ൻന്റെസിപിഎസ്",
"expBu": "പൂർണ്ണ ബാക്കപ്പ് എക്‌സ്‌പോർട്ടുചെയ്യുക",
"expip": "കയറ്റുമതി പുരോഗതിയിലാണ്",
"expSuc": "കയറ്റുമതി വിജയം",
"favourites": "പ്രിയങ്കരങ്ങൾ",
"Filipino": "ഫിലിപ്പിനോ",
"Filtered recipes": "ഫിൽട്ടർ ചെയ്ത പാചകക്കുറിപ്പുകൾ",
"fl oz": "ഫ്ലൂയിഡ് un ൺസ്",
"fltr": "ഫിൽട്ടർ ചെയ്യുക",
"Fluid Ounce": "ഫ്ലൂയിഡ് un ൺസ്",
"French": "ഫ്രഞ്ച്",
"fsList": "നിങ്ങളുടെ പ്രിയപ്പെട്ട പാചകക്കുറിപ്പുകൾ ഇവിടെ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്",
"g": "ഗ്രാം",
"gal": "ഗാലൺ",
"Gallon": "ഗാലൺ",
"German": "ജർമ്മൻ",
"gh": "GitHub- ൽ കാണുക",
"Gram": "ഗ്രാം",
"Greek": "ഗ്രീക്ക്",
"grid": "ഗ്രിഡ്",
"grocery": "പലചരക്ക് പട്ടിക",
"guide": "ഉപയോക്തൃ ഗൈഡ്",
"Healthy": "ആരോഗ്യമുള്ള",
"hr": "മണിക്കൂർ",
"impBu": "ഡാറ്റ ഇറക്കുമതി ചെയ്യുക",
"impFail": "ഇറക്കുമതി പരാജയപ്പെട്ടു",
"impInfo": "ഈ അപ്ലിക്കേഷൻ എക്‌സ്‌പോർട്ടുചെയ്‌ത പൂർണ്ണ ബാക്കപ്പുകൾ പിന്തുണയ്‌ക്കുന്നു",
"impip": "ഇറക്കുമതി പുരോഗതിയിലാണ്",
"impSuc": "ഇറക്കുമതി വിജയം",
"in": "ഇഞ്ച്",
"Indian": "ഇന്ത്യൻ",
"ings": "ചേരുവകൾ",
"inss": "നിർദ്ദേശങ്ങൾ",
"intf": "ഇന്റർഫേസ്",
"invFile": "അസാധുവായ ഫയൽ",
"Irish": "ഐറിഷ്",
"it": "ഇനം %s",
"Italian": "ഇറ്റാലിയൻ",
"Jamaican": "ജമൈക്കൻ",
"Japanese": "ജാപ്പനീസ്",
"Jewish": "ജൂതൻ",
"joinTG": "ടെലിഗ്രാം ഗ്രൂപ്പിൽ ചേരുക",
"kEdit": "എഡിറ്റിംഗ് തുടരുക",
"Kenyan": "കെനിയൻ",
"kg": "കി. ഗ്രാം",
"Kilogram": "കിലോഗ്രാം",
"Korean": "കൊറിയൻ",
"l": "ലിറ്റർ",
"lang": "ഭാഷ",
"large": "വലുത്",
"Last updated": "അവസാനമായി പുതുക്കിയത്",
"lb": "പൗണ്ട്",
"leaf": "ഇല",
"Light": "പ്രകാശം",
"listVM": "പട്ടിക കാഴ്ച മോഡ്",
"Litre": "ലിറ്റർ",
"Loaf": "അപ്പം",
"ltAgo": "വളരെക്കാലം മുമ്പ്",
"lunch": "ഉച്ചഭക്ഷണം",
"mAgo": "%s മാസം മുമ്പ്",
"Main dishes": "പ്രധാന വിഭവങ്ങൾ",
"Meat": "മാംസം",
"medium": "ഇടത്തരം",
"Mexican": "മെക്സിക്കൻ",
"mg": "മില്ലിഗ്രാം",
"Millilitre": "മില്ലിലിറ്റർ",
"min": "മിനിറ്റ്",
"minimal": "കുറഞ്ഞത്",
"ml": "മില്ലി",
"Moderate": "മിതത്വം",
"newCui": "പുതിയ പാചകരീതി",
"Newest first": "ആദ്യത്തെ പുതിയത്",
"newRec": "പുതിയ പാചകക്കുറിപ്പ്",
"newUnit": "പുതിയ യൂണിറ്റ്",
"Nigerian": "നൈജീരിയൻ",
"nLangInfo": "പുതിയ ഭാഷ ഉപയോഗിക്കുന്നതിന് എന്റെരെസിപീസ് പുനരാരംഭിക്കുക",
"nNBtn": "ഇപ്പോൾ വേണ്ട",
"no": "കുറിപ്പ്",
"noAccSensor": "ആക്‌സിലറോമീറ്റർ സെൻസർ പ്രവർത്തനരഹിതമാക്കി അല്ലെങ്കിൽ പ്രവർത്തിക്കുന്നില്ല",
"noFavs": "ഇതുവരെ പ്രിയപ്പെട്ട പാചകക്കുറിപ്പുകളൊന്നുമില്ല",
"Noodles": "നൂഡിൽസ്",
"noRecs": "പാചകക്കുറിപ്പുകളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല",
"noRecsInL": "ഇവിടെയുള്ള പാചകങ്ങളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല",
"nos": "കുറിപ്പുകൾ",
"nwCat": "പുതിയ വിഭാഗം",
"nwYiU": "പുതിയ വിളവ് യൂണിറ്റ്",
"OK": "ശരി",
"Oldest first": "ആദ്യം പഴയത്",
"opts": "ഓപ്ഷനുകൾ",
"Ounce": "Un ൺസ്",
"oz": "oun ൺസ്",
"Pasta": "പാസ്ത",
"Patty": "പാറ്റി",
"photogrid": "ഫോട്ടോ ഗ്രിഡ്",
"pht": "പാചകക്കുറിപ്പ് ഫോട്ടോ",
"piece": "കഷണം",
"Piece": "പീസ്",
"pinch": "നുള്ള്",
"planner": "ഭക്ഷണ പ്ലാനർ",
"plsAdd": "ഒരെണ്ണം ചേർക്കാൻ + ബട്ടൺ ഉപയോഗിക്കുക",
"Portuguese": "പോർച്ചുഗീസ്",
"Poultry": "കോഴി",
"Pound": "പൗണ്ട്",
"prepT": "തയ്യാറാക്കൽ സമയം",
"priv": "സ്വകാര്യതാ നയം",
"pt": "പിന്റ്",
"qt": "ക്വാർട്ട്",
"Quickest first": "ആദ്യ വേഗത്തിലുള്ളത്",
"Rating": "റേറ്റിംഗ്",
"rBtn": "നീക്കംചെയ്യുക",
"rec": "പാചകക്കുറിപ്പ്",
"recE": "നിലവിലുള്ളത്:",
"recF": "പാചകക്കുറിപ്പുകൾ കണ്ടെത്തി",
"recI": "ഇറക്കുമതി ചെയ്തത്:",
"recListEmp": "ഇവിടെ ഒന്നുമില്ല! കുറച്ച് പാചകക്കുറിപ്പുകൾ ചേർത്ത് വീണ്ടും ശ്രമിക്കുക",
"recPic": "പാചകക്കുറിപ്പ് ഫോട്ടോ",
"recRm": "പാചകക്കുറിപ്പ് നീക്കംചെയ്‌തു",
"recs": "പാചകക്കുറിപ്പുകൾ",
"recTitle": "എന്റെ ആരോഗ്യകരമായ പാചകക്കുറിപ്പ്",
"recU": "അപ്‌ഡേറ്റുചെയ്‌തത്:",
"req": "ആവശ്യമായ %s",
"resNF": "പാചകക്കുറിപ്പ് കണ്ടെത്തിയില്ല",
"rest": "പുനഃക്രമീകരിക്കുക",
"restCatL": "വിഭാഗ ലിസ്റ്റ് പുന .സജ്ജമാക്കുക",
"restCuiL": "പാചകരീതി പട്ടിക പുന .സജ്ജമാക്കുക",
"restDone": "പുന .സജ്ജീകരണം പൂർത്തിയായി",
"restInfo": "ഒരു ലിസ്റ്റ് പുന .സജ്ജമാക്കുന്നത് ഉപയോക്താവ് സൃഷ്ടിച്ച എൻ‌ട്രികൾ ഇല്ലാതാക്കുകയും സ്ഥിരസ്ഥിതി എൻ‌ട്രികൾ പുന restore സ്ഥാപിക്കുകയും ചെയ്യും. നിലവിലുള്ള പാചകത്തെ ബാധിക്കില്ല.",
"restUL": "യൂണിറ്റ് ലിസ്റ്റ് പുന .സജ്ജമാക്കുക",
"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": "സെറ്റ്",
"Settings": "ക്രമീകരണങ്ങൾ",
"shr": "പങ്കിടുക",
"Side dishes": "സൈഡ് വിഭവങ്ങൾ",
"simple": "ലളിതം",
"Slowest first": "ആദ്യ വേഗത",
"sltd": "തിരഞ്ഞെടുത്തു",
"small": "ചെറുത്",
"snacks": "ലഘുഭക്ഷണങ്ങൾ",
"Soups": "സൂപ്പ്",
"Spanish": "സ്പാനിഷ്",
"Sri Lankan": "ശ്രീലങ്കൻ",
"srpu": "പാചകക്കുറിപ്പ് ഫോട്ടോ പങ്കിടുക...",
"srt": "അടുക്കുക",
"sru": "പാചകക്കുറിപ്പ് പങ്കിടുക...",
"stars": "നക്ഷത്ര റേറ്റിംഗ്",
"stick": "വടി",
"stp": "ഘട്ടം %s",
"strAdd": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ ചേർക്കാൻ ആരംഭിക്കുക!",
"sVw": "ക്രമരഹിതമായ പാചകക്കുറിപ്പ് കാണാൻ കുലുക്കുക",
"sVwInfo": "നിങ്ങൾക്ക് തീരുമാനിക്കാൻ കഴിയാത്തപ്പോൾ എന്താണ് പാചകം ചെയ്യേണ്ടതെന്ന് തിരഞ്ഞെടുക്കാൻ നിങ്ങളെ സഹായിക്കുന്നു",
"Swedish": "സ്വീഡിഷ്",
"swm": "ആഴ്ചയിലെ ആദ്യ ദിവസം തിങ്കളാഴ്ച",
"sysDef": "സിസ്റ്റം സ്ഥിരസ്ഥിതി",
"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": "സിസ്റ്റം സ്ഥിരസ്ഥിതി + കറുപ്പ്",
"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"
"aap": "ഒരു ഫോട്ടോ അറ്റാച്ചുചെയ്യുക",
"About": "കുറിച്ച്",
"aBtn": "ചേർക്കുക",
"aD": "എല്ലാം ചെയ്തു!",
"addCmbBtn": "സംയോജനം ചേർക്കുക",
"aFBu": "ഒരു ബാക്കപ്പ് നടത്താൻ ഒരു പാചകക്കുറിപ്പ് ചേർക്കുക",
"aIngBtn": "ചേരുവ ചേർക്കുക",
"allCats": "എല്ലാ വിഭാഗങ്ങളും",
"allCuis": "എല്ലാ പാചകരീതികളും",
"allTs": "എല്ലാ ടാഗുകളും",
"American": "അമേരിക്കൻ",
"aNBtn": "പുതിയത് ചേർക്കുക",
"aNoBtn": "കുറിപ്പ് ചേര്ക്കുക",
"app.name": "ൻന്റെസിപിഎസ്",
"appCrd": "എന്റെരെസിപീസ് വഴി പങ്കിട്ടു. എഫ്-ആൻഡ്രോയിഡ്, ഇസിഓൺഡ്രോയിഡ് അല്ലെങ്കിൽ പ്ലേ സ്റ്റോറിൽ ഇത് നേടുക.",
"Appetizers": "വിശപ്പ്",
"appInfo": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ സൃഷ്ടിക്കാനും നിയന്ത്രിക്കാനും പങ്കിടാനും അനുവദിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്‌സ്, സ്വകാര്യത കേന്ദ്രീകരിച്ച ഡിജിറ്റൽ പാചകപുസ്തകമാണ് എന്റെരെസിപീസ്",
"apply": "പ്രയോഗിക്കുക",
"appRst": "അപ്ലിക്കേഷൻ പുനരാരംഭിക്കൽ ആവശ്യമാണ്",
"April": "ഏപ്രിൽ",
"aStpBtn": "നിർദ്ദേശം ചേർക്കുക",
"August": "ഓഗസ്റ്റ്",
"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": "ഇല്ലാതാക്കുക",
"December": "ഡിസംബർ",
"delRecInfo": "%s പാചകക്കുറിപ്പ് നിങ്ങൾ ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു",
"delRecsInfo": "നിങ്ങൾ %s ശാശ്വതമായി ഇല്ലാതാക്കാൻ പോകുന്നു",
"Desserts": "മധുരപലഹാരങ്ങൾ",
"detailed": "വിശദമായ",
"Difficulty level": "വൈഷമ്യ നില",
"dinner": "അത്താഴം",
"disBtn": "നിരസിക്കുക",
"disc": "ഈ പാചകക്കുറിപ്പിൽ സംരക്ഷിക്കാത്ത മാറ്റങ്ങളുണ്ട്. നിങ്ങൾ എന്താണ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത്?",
"donate": "സംഭാവനചെയ്യുക",
"dozen": "ഡസൻ",
"drop": "തുള്ളി",
"dsp": "ഡെസേർട്ട് സ്പൂൺ",
"Easy": "എളുപ്പമാണ്",
"editRec": "പാചകക്കുറിപ്പ് എഡിറ്റുചെയ്യുക",
"Egyptian": "ഈജിപ്ഷ്യൻ",
"English": "ഇംഗ്ലീഷ്",
"EnRecipes": "ൻന്റെസിപിഎസ്",
"expBu": "പൂർണ്ണ ബാക്കപ്പ് എക്‌സ്‌പോർട്ടുചെയ്യുക",
"expip": "കയറ്റുമതി പുരോഗതിയിലാണ്",
"expSuc": "കയറ്റുമതി വിജയം",
"favourites": "പ്രിയങ്കരങ്ങൾ",
"February": "ഫെബ്രുവരി",
"Filipino": "ഫിലിപ്പിനോ",
"Filtered recipes": "ഫിൽട്ടർ ചെയ്ത പാചകക്കുറിപ്പുകൾ",
"fl oz": "ഫ്ലൂയിഡ് un ൺസ്",
"fltr": "ഫിൽട്ടർ ചെയ്യുക",
"Fluid Ounce": "ഫ്ലൂയിഡ് un ൺസ്",
"French": "ഫ്രഞ്ച്",
"FRI": "വെള്ളി",
"fsList": "നിങ്ങളുടെ പ്രിയപ്പെട്ട പാചകക്കുറിപ്പുകൾ ഇവിടെ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്",
"g": "ഗ്രാം",
"gal": "ഗാലൺ",
"Gallon": "ഗാലൺ",
"German": "ജർമ്മൻ",
"gh": "GitHub- ൽ കാണുക",
"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": "%s മാസം മുമ്പ്",
"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": "പാചകക്കുറിപ്പുകളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല",
"noRecsInL": "ഇവിടെയുള്ള പാചകങ്ങളൊന്നും നിങ്ങളുടെ തിരയലുമായി പൊരുത്തപ്പെടുന്നില്ല",
"nos": "കുറിപ്പുകൾ",
"November": "നവംബർ",
"nwCat": "പുതിയ വിഭാഗം",
"nwYiU": "പുതിയ വിളവ് യൂണിറ്റ്",
"October": "ഒക്ടോബർ",
"OK": "ശരി",
"Oldest first": "ആദ്യം പഴയത്",
"opts": "ഓപ്ഷനുകൾ",
"Ounce": "Un ൺസ്",
"oz": "oun ൺസ്",
"Pasta": "പാസ്ത",
"Patty": "പാറ്റി",
"photogrid": "ഫോട്ടോ ഗ്രിഡ്",
"pht": "പാചകക്കുറിപ്പ് ഫോട്ടോ",
"piece": "കഷണം",
"Piece": "പീസ്",
"pinch": "നുള്ള്",
"planner": "ഭക്ഷണ പ്ലാനർ",
"plsAdd": "ഒരെണ്ണം ചേർക്കാൻ പ്ലസ് ബട്ടൺ ഉപയോഗിക്കുക",
"Portuguese": "പോർച്ചുഗീസ്",
"Poultry": "കോഴി",
"Pound": "പൗണ്ട്",
"prepT": "തയ്യാറാക്കൽ സമയം",
"priv": "സ്വകാര്യതാ നയം",
"pt": "പിന്റ്",
"qt": "ക്വാർട്ട്",
"Quickest first": "ആദ്യ വേഗത്തിലുള്ളത്",
"Rating": "റേറ്റിംഗ്",
"rBtn": "നീക്കംചെയ്യുക",
"rec": "പാചകക്കുറിപ്പ്",
"recE": "നിലവിലുള്ളത്:",
"recF": "പാചകക്കുറിപ്പുകൾ കണ്ടെത്തി",
"recI": "ഇറക്കുമതി ചെയ്തത്:",
"recListEmp": "ഇവിടെ ഒന്നുമില്ല! കുറച്ച് പാചകക്കുറിപ്പുകൾ ചേർത്ത് വീണ്ടും ശ്രമിക്കുക",
"recPic": "പാചകക്കുറിപ്പ് ഫോട്ടോ",
"recRm": "പാചകക്കുറിപ്പ് നീക്കംചെയ്‌തു",
"recs": "പാചകക്കുറിപ്പുകൾ",
"recTitle": "എന്റെ ആരോഗ്യകരമായ പാചകക്കുറിപ്പ്",
"recU": "അപ്‌ഡേറ്റുചെയ്‌തത്:",
"req": "ആവശ്യമായ %s",
"resNF": "പാചകക്കുറിപ്പ് കണ്ടെത്തിയില്ല",
"rest": "പുനഃക്രമീകരിക്കുക",
"restCatL": "വിഭാഗ ലിസ്റ്റ് പുന .സജ്ജമാക്കുക",
"restCuiL": "പാചകരീതി പട്ടിക പുന .സജ്ജമാക്കുക",
"restDone": "പുന .സജ്ജീകരണം പൂർത്തിയായി",
"restInfo": "ഒരു ലിസ്റ്റ് പുന .സജ്ജമാക്കുന്നത് ഉപയോക്താവ് സൃഷ്ടിച്ച എൻ‌ട്രികൾ ഇല്ലാതാക്കുകയും സ്ഥിരസ്ഥിതി എൻ‌ട്രികൾ പുന restore സ്ഥാപിക്കുകയും ചെയ്യും. നിലവിലുള്ള പാചകത്തെ ബാധിക്കില്ല.",
"restUL": "യൂണിറ്റ് ലിസ്റ്റ് പുന .സജ്ജമാക്കുക",
"restYUL": "വിളവ് യൂണിറ്റ് ലിസ്റ്റ് പുന .സജ്ജമാക്കുക",
"Rice": "അരി",
"rmCatInfo": "നിങ്ങൾ കാറ്റഗറി ലിസ്റ്റിൽ നിന്ന് %s നീക്കംചെയ്യാൻ പോകുന്നു",
"rmCmb": "കോമ്പിനേഷൻ നീക്കംചെയ്‌തു",
"rmCuiInfo": "നിങ്ങൾ പാചക പട്ടികയിൽ നിന്ന് %s നീക്കംചെയ്യാൻ പോകുന്നു",
"rmIng": "ചേരുവ നീക്കംചെയ്‌തു",
"rmIns": "നിർദ്ദേശം നീക്കംചെയ്‌തു",
"rmN": "കുറിപ്പ് നീക്കംചെയ്‌തു",
"rmUInfo": "നിങ്ങൾ %s യെ യൂണിറ്റ് പട്ടികയിൽ നിന്ന് നീക്കംചെയ്യാൻ പോവുകയാണ്",
"rmYUInfo": "വിളവ് യൂണിറ്റ് പട്ടികയിൽ നിന്ന് നിങ്ങൾ %s നീക്കംചെയ്യാൻ പോകുന്നു",
"Roll": "റോൾ",
"rp": "ഫോട്ടോ നീക്കംചെയ്യുക",
"rst": "പുനരാരംഭിക്കുക",
"Russian": "റഷ്യൻ",
"Salads": "സലാഡുകൾ",
"SAT": "ശനി",
"Sauces": "സോസുകൾ",
"Scottish": "സ്കോട്ടിഷ്",
"Seafood": "കടൽ ഭക്ഷണം",
"selRec": "പാചകക്കുറിപ്പ് തിരഞ്ഞെടുക്കുക",
"September": "സെപ്റ്റംബർ",
"ser": "തിരയുക",
"Serving": "സേവിക്കുന്നു",
"SET": "സെറ്റ്",
"Settings": "ക്രമീകരണങ്ങൾ",
"shr": "പങ്കിടുക",
"Side dishes": "സൈഡ് വിഭവങ്ങൾ",
"simple": "ലളിതം",
"Slowest first": "ആദ്യ വേഗത",
"sltd": "തിരഞ്ഞെടുത്തു",
"small": "ചെറുത്",
"snacks": "ലഘുഭക്ഷണങ്ങൾ",
"Soups": "സൂപ്പ്",
"Spanish": "സ്പാനിഷ്",
"Sri Lankan": "ശ്രീലങ്കൻ",
"srpu": "പാചകക്കുറിപ്പ് ഫോട്ടോ പങ്കിടുക...",
"srt": "അടുക്കുക",
"sru": "പാചകക്കുറിപ്പ് പങ്കിടുക...",
"stars": "നക്ഷത്ര റേറ്റിംഗ്",
"stick": "വടി",
"stp": "ഘട്ടം",
"strAdd": "നിങ്ങളുടെ പാചകക്കുറിപ്പുകൾ ചേർക്കാൻ ആരംഭിക്കുക!",
"SUN": "ഞായ",
"sVw": "ക്രമരഹിതമായ പാചകക്കുറിപ്പ് കാണാൻ കുലുക്കുക",
"sVwInfo": "നിങ്ങൾക്ക് തീരുമാനിക്കാൻ കഴിയാത്തപ്പോൾ എന്താണ് പാചകം ചെയ്യേണ്ടതെന്ന് തിരഞ്ഞെടുക്കാൻ നിങ്ങളെ സഹായിക്കുന്നു",
"Swedish": "സ്വീഡിഷ്",
"swm": "ആഴ്ചയിലെ ആദ്യ ദിവസം തിങ്കളാഴ്ച",
"sysDef": "സിസ്റ്റം സ്ഥിരസ്ഥിതി",
"Tablespoon": "ടേബിൾസ്പൂൺ",
"tbsp": "ടേബിൾസ്പൂൺ",
"Teaspoon": "ടീസ്പൂൺ",
"Thai": "തായ്",
"Theme": "തീം",
"THU": "വ്യാഴം",
"title": "ശീർഷകം",
"tLInfo": "നിങ്ങൾ പിന്നീട് ശ്രമിക്കാൻ ആഗ്രഹിക്കുന്ന പാചകക്കുറിപ്പുകൾ ഇവിടെ പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്",
"today": "ഇന്ന്",
"triedInfo": "നിങ്ങൾ %s ഈ പാചകക്കുറിപ്പ് പരീക്ഷിച്ചു",
"trnsl": "വിവർത്തനം ചെയ്യുക",
"trylater": "പിന്നീട് ശ്രമിക്കുക",
"trySer": "എല്ലാ പാചകക്കുറിപ്പുകളിലും തിരയണോ?",
"ts": "ടാഗുകൾ",
"tsInfo": "സ്‌പെയ്‌സുകൾ ഉപയോഗിച്ച് വേർതിരിക്കുക",
"tsp": "ടീസ്പൂൺ",
"TUE": "ചൊവ്വ",
"Turkish": "ടർക്കിഷ്",
"Undefined": "നിർവചിച്ചിട്ടില്ല",
"unit": "യൂണിറ്റ്",
"Unit": "യൂണിറ്റ്",
"unsaved": "സംരക്ഷിക്കാത്ത മാറ്റങ്ങൾ",
"untRec": "ശീർഷകമില്ലാത്ത പാചകക്കുറിപ്പ്",
"Vegan": "വെഗാൻ",
"Vegetarian": "വെജിറ്റേറിയൻ",
"Vietnamese": "വിയറ്റ്നാമീസ്",
"wAgo": "%s ആഴ്ച മുമ്പ്",
"WED": "ബുധൻ",
"yesterday": "ഇന്നലെ",
"yieldQ": "വിളവ് അളവ്",
"yieldU": "വിളവ് യൂണിറ്റ്",
"yld": "വരുമാനം",
"buto": "%s ലേക്ക് ബാക്കപ്പ് ചെയ്തു",
"sysDefB": "സിസ്റ്റം സ്ഥിരസ്ഥിതി + കറുപ്പ്"
}

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

View file

@ -18,7 +18,9 @@
"appInfo": "EnRecipes in een open source, privacybewust digitaal kookboek waarmee je recepten kunt aanmaken, beheren en delen",
"apply": "TOEPASSEN",
"appRst": "Herstart vereist",
"April": "april",
"aStpBtn": "STAP TOEVOEGEN",
"August": "augustus",
"Barbecue": "Barbecue",
"Beverages": "Drankjes",
"Black": "Zwart",
@ -51,6 +53,7 @@
"Dark": "Donker",
"db": "Databank",
"dBtn": "VERWIJDEREN",
"December": "december",
"delRecInfo": "Je staat op het punt om %s te verwijderen",
"delRecsInfo": "Je staat op het punt om %s permanent te verwijderen",
"Desserts": "Nagerechten",
@ -72,12 +75,14 @@
"expip": "Bezig met exporteren",
"expSuc": "Exporteren voltooid",
"favourites": "Favorieten",
"February": "februari",
"Filipino": "Filipijns",
"Filtered recipes": "Gefilterde recepten",
"fl oz": "fl oz",
"fltr": "Filteren",
"Fluid Ounce": "Vloeibaar ons",
"French": "Frans",
"FRI": "VRIJ",
"fsList": "Hier vind je je favoriete recepten terug",
"g": "g",
"gal": "gal",
@ -103,12 +108,15 @@
"intf": "Uiterlijk",
"invFile": "Ongeldig bestand",
"Irish": "Iers",
"it": "Item %s",
"it": "Item",
"Italian": "Italiaans",
"Jamaican": "Jamaicaans",
"January": "januari",
"Japanese": "Japans",
"Jewish": "Joods",
"joinTG": "Word lid van de Telegram-groep",
"July": "juli",
"June": "juni",
"kEdit": "DOORGAAN MET BEWERKEN",
"Kenyan": "Keniaans",
"kg": "kg",
@ -128,6 +136,8 @@
"lunch": "Lunch",
"mAgo": "%s maanden geleden",
"Main dishes": "Hoofdgerechten",
"March": "maart",
"May": "mei",
"Meat": "Vlees",
"medium": "middelgroot",
"Mexican": "Mexicaans",
@ -137,6 +147,7 @@
"minimal": "Minimaal",
"ml": "ml",
"Moderate": "Gemiddeld",
"MON": "MA",
"newCui": "Nieuwe keuken",
"Newest first": "Nieuwste bovenaan",
"newRec": "Nieuw recept",
@ -151,8 +162,10 @@
"noRecs": "Er zijn geen overeenkomende zoekresultaten",
"noRecsInL": "Geen van deze recepten komt overeen met je zoekopdracht",
"nos": "Aantekeningen",
"November": "november",
"nwCat": "Nieuwe categorie",
"nwYiU": "Nieuwe eenheid",
"October": "oktober",
"OK": "Oké",
"Oldest first": "Oudste bovenaan",
"opts": "Opties",
@ -187,7 +200,7 @@
"recs": "recepten",
"recTitle": "Mijn gezonde recept",
"recU": "Bijgewerkt:",
"req": "%s vereist",
"req": "Vereiste %s",
"resNF": "Recept niet gevonden",
"rest": "Standaardwaarden",
"restCatL": "Categorieënlijst herstellen",
@ -210,10 +223,12 @@
"rst": "HERSTARTEN",
"Russian": "Russisch",
"Salads": "Salades",
"SAT": "ZA",
"Sauces": "Sausen",
"Scottish": "Schots",
"Seafood": "Zeevruchten",
"selRec": "Recept kiezen",
"September": "september",
"ser": "Zoeken",
"Serving": "Portie",
"SET": "INSTELLEN",
@ -233,8 +248,9 @@
"sru": "Recept delen via…",
"stars": "Waardering",
"stick": "stokje",
"stp": "Stap %s",
"stp": "Stap",
"strAdd": "Voeg je recepten toe!",
"SUN": "ZO",
"sVw": "Schudden om willekeurig recept te tonen",
"sVwInfo": "Handig voor als je even niet weet wat je wilt maken",
"Swedish": "Zweeds",
@ -245,6 +261,7 @@
"Teaspoon": "Theelepel",
"Thai": "Thais",
"Theme": "Thema",
"THU": "DO",
"title": "Naam",
"tLInfo": "Hier vind je de recepten terug die je later wilt uitproberen",
"today": "vandaag",
@ -255,6 +272,7 @@
"ts": "Labels",
"tsInfo": "kommagescheiden",
"tsp": "tl",
"TUE": "DI",
"Turkish": "Turks",
"Undefined": "Onbekend",
"unit": "eenheid",
@ -265,6 +283,7 @@
"Vegetarian": "Vegetarisch",
"Vietnamese": "Vietnamees",
"wAgo": "%s weken geleden",
"WED": "WOE",
"yesterday": "gisteren",
"yieldQ": "Hoeveelheid",
"yieldU": "Eenheid",
@ -279,6 +298,7 @@
"tmrSnd": "Kookwekkergeluid",
"aTPrst": "Toegevoegd aan voorinstellingen",
"fwr": "bij welk recept?",
"tmrPrsts": "Kookwekker: voorinstellingen",
"prstBtn": "VOORINSTELLINGEN",
"stop": "Stoppen",
"tmrvbrt": "Kookwekker laten trillen",
@ -288,44 +308,5 @@
"minutes": "minuten",
"minute": "minuut",
"dlyDur": "Vertragingsduur",
"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"
"delay": "Vertraging"
}

View file

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

View file

@ -14,7 +14,7 @@
"Chinese": "Chinesa",
"clove": "bulbo",
"cm": "cm",
"Created": "Criada",
"Created": "Criado",
"cup": "copo",
"Cup": "Copo",
"Danish": "Dinamarquesa",
@ -23,7 +23,7 @@
"Difficulty level": "Nível de dificuldade",
"dinner": "Jantar",
"dozen": "dúzia",
"drop": "gota",
"drop": "solta",
"dsp": "colher de sobremesa",
"Easy": "Fácil",
"Egyptian": "Egípcia",
@ -87,7 +87,7 @@
"planner": "Plano de refeições",
"Portuguese": "Portuguesa",
"Poultry": "Aves",
"Pound": "Libra",
"Pound": "Pound",
"pt": "pt",
"qt": "qt",
"Quickest first": "Mais rápidas primeiro",
@ -100,8 +100,8 @@
"Scottish": "Escocesa",
"Seafood": "Marisco",
"Serving": "Porção",
"SET": "APLICAR",
"Settings": "Configurações",
"SET": "DEFINIR",
"Settings": "Definições",
"Side dishes": "Acompanhamentos",
"Slowest first": "Mais lentas primeiro",
"small": "pequeno",
@ -124,8 +124,8 @@
"Undefined": "Indefinido",
"unit": "unidade",
"Unit": "Unidade",
"Vegan": "Vegana",
"Vegetarian": "Vegetariana",
"Vegan": "Vegano",
"Vegetarian": "Vegetariano",
"Vietnamese": "Vietnamita",
"yesterday": "ontem",
"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",
"rmUInfo": "Está prestes a remover %s da lista de unidades",
"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",
"swm": "Começa na segunda-feira",
"sysDef": "Padrão do sistema",
"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",
"trnsl": "Traduzir",
"ts": "Etiquetas",
@ -148,32 +148,36 @@
"wAgo": "%s semanas atrás",
"photogrid": "Grelha de fotos",
"opts": "Opções",
"October": "Outubro",
"nwYiU": "Nova unidade de porção",
"nwCat": "Nova categoria",
"November": "Novembro",
"nos": "Notas",
"noRecsInL": "Nenhuma das receitas aqui apresentadas corresponde à sua pesquisa",
"fltr": "Filtro",
"Filtered recipes": "Receitas filtradas",
"February": "Fevereiro",
"expSuc": "Exportado com sucesso",
"expip": "Exportação em curso",
"expBu": "Exportar cópia de segurança completa",
"expBu": "Exportar apoio total",
"editRec": "Editar receita",
"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",
"delRecsInfo": "Está prestes a eliminar permanentemente %s",
"delRecInfo": "Está prestes a eliminar permanentemente a receita %s",
"December": "Dezembro",
"db": "Base de dados",
"dAgo": "%s dias atrás",
"cui": "Cozinha",
"cPic": "Recortar fotografia",
"cPic": "Foto do corte",
"cookT": "Tempo de cozedura",
"conf": "Confirme",
"cmbs": "Combinações",
"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",
"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",
"buEmp": "O ficheiro da cópia de segurança está vazio",
"Black": "Preto",
@ -182,23 +186,30 @@
"buto": "Cópia de segurança guardada em %s",
"restDone": "Reposição feita",
"restCuiL": "Repor a lista de cozinha",
"restCatL": "Repor lista de categorias",
"rest": "Repor",
"restCatL": "Reiniciar lista de categorias",
"rest": "Reiniciar",
"resNF": "Receita não encontrada",
"req": "Necessário %s",
"req": "Necessárias %s",
"recU": "Atualizado:",
"recTitle": "A minha receita saudável",
"recs": "receitas",
"recRm": "Receita removida",
"recPic": "Fotografia da receita",
"recRm": "Receita retirada",
"recPic": "Fotografia de receita",
"recListEmp": "Nada aqui! Adicione algumas receitas e tente novamente",
"recI": "Importadas:",
"recI": "Importado:",
"recF": "receitas encontradas",
"recE": "Já existem:",
"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?",
"stp": "Etapa %s",
"stp": "Etapa",
"stars": "Classificação por estrelas",
"sru": "Partilhar receita usando...",
"srt": "Ordenar",
@ -207,6 +218,7 @@
"simple": "Simples",
"shr": "Partilhar",
"ser": "Pesquisar",
"September": "Setembro",
"selRec": "Selecione a receita",
"rst": "REINICIAR",
"rp": "Remover fotografia",
@ -217,11 +229,11 @@
"yld": "Porção",
"restYUL": "Repor lista de unidades de porções",
"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",
"priv": "Política de privacidade",
"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",
"noRecs": "Nenhuma receita corresponde à pesquisa",
"noFavs": "Ainda não tem favoritos",
@ -232,13 +244,18 @@
"newRec": "Nova receita",
"newCui": "Nova cozinha",
"minimal": "Mínimo",
"May": "Maio",
"March": "Março",
"mAgo": "%s meses atrás",
"ltAgo": "há muito tempo",
"listVM": "Modo de vista em lista",
"lang": "Idioma",
"kEdit": "CONTINUAR A EDITAR",
"June": "Junho",
"July": "Julho",
"joinTG": "Junte-se ao grupo no Telegram",
"it": "Item %s",
"January": "Janeiro",
"it": "Item",
"invFile": "Ficheiro inválido",
"intf": "Interface",
"inss": "Instruções",
@ -256,7 +273,9 @@
"dBtn": "ELIMINAR",
"conBtn": "CONTINUAR",
"cBtn": "CANCELAR",
"August": "Agosto",
"aStpBtn": "ADICIONAR PASSO",
"April": "Abril",
"appRst": "É necessário reiniciar a aplicação",
"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",
@ -284,47 +303,10 @@
"hour": "hora",
"hours": "horas",
"seconds": "segundos",
"tmrvbrt": "Vibrador do temporizador",
"tmrSnd": "Som do temporizador",
"tmrvbrt": "Vibrador temporizador",
"tmrSnd": "Som temporizador",
"aTPrst": "Adicionado às predefinições",
"fwr": "para qual receita?",
"prstBtn": "PREDEFINIÇÕES",
"notifSetg": "Configurações de notificação",
"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"
"fwr": "para que receita?",
"tmrPrsts": "Predefinições temporizadas",
"prstBtn": "PRIMEIROS"
}

View file

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

View file

@ -18,7 +18,9 @@
"appInfo": "என்ரெசிபீஸ் என்பது ஒரு திறந்த மூல, தனியுரிமைக்கு ஏற்ற டிஜிட்டல் சமையல் புத்தகம், இது உங்கள் சமையல் குறிப்புகளை உருவாக்க, நிர்வகிக்க மற்றும் பகிர உதவுகிறது",
"apply": "இடு",
"appRst": "பயன்பாட்டு மறுதொடக்கம் தேவை",
"April": "ஏப்ரல்",
"aStpBtn": "செய்முறையைச் சேர்",
"August": "ஆகஸ்ட்",
"Barbecue": "பார்பெக்யூ",
"Beverages": "பானங்கள்",
"Black": "கருப்பு",
@ -51,6 +53,7 @@
"Dark": "இருள்",
"db": "தரவுத்தளம்",
"dBtn": "நீக்கு",
"December": "டிசம்பர்",
"delRecInfo": "நீங்கள் %s சமையல் குறிப்பை நிரந்தரமாக நீக்க உள்ளீர்கள்",
"delRecsInfo": "நீங்கள் %s நிரந்தரமாக நீக்க உள்ளீர்கள்",
"Desserts": "இனிப்புகள்",
@ -72,18 +75,20 @@
"expip": "ஏற்றுமதி செயலில் உள்ளது",
"expSuc": "வெற்றிகரமாக ஏற்றுமதி செய்யப்பட்டது",
"favourites": "பிடித்தவை",
"February": "பிப்ரவரி",
"Filipino": "பிலிப்பைன்ஸ்",
"Filtered recipes": "வடிகட்டப்பட்ட சமையல் குறிப்புகள்",
"fl oz": "திரவ அவுன்ஸ",
"fltr": "வடிகட்டு",
"Fluid Ounce": "திரவ அவுன்ஸ்",
"French": "பிரஞ்சு",
"FRI": "வெ",
"fsList": "உங்களுக்கு பிடித்த சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்",
"g": "கிராம்",
"gal": "கேலன்",
"Gallon": "கேலன்",
"German": "ஜெர்மன்",
"gh": "GitHub இல் காண்க",
"gh": "கிட்ஹப்பில் காண்க",
"Gram": "கிராம்",
"Greek": "கிரேக்க",
"grid": "கட்டம்",
@ -103,12 +108,15 @@
"intf": "இடைமுகம்",
"invFile": "தவறான கோப்பு",
"Irish": "ஐரிஷ்",
"it": "பொருள் %s",
"it": "பொருள்",
"Italian": "இத்தாலிய",
"Jamaican": "ஜமைக்கா",
"January": "ஜனவரி",
"Japanese": "ஜப்பானிய",
"Jewish": "யூத",
"joinTG": "டெலிகிராம் குழுவில் சேர்க",
"July": "ஜூலை",
"June": "ஜூன்",
"kEdit": "தொடர்ந்து திருத்து",
"Kenyan": "கென்ய",
"kg": "கிலோகிராம்",
@ -128,6 +136,8 @@
"lunch": "மதிய உணவு",
"mAgo": "%s மாதங்களுக்கு முன்பு",
"Main dishes": "முக்கிய உணவுகள்",
"March": "மார்ச்",
"May": "மே",
"Meat": "இறைச்சி",
"medium": "நடுத்தர",
"Mexican": "மெக்சிகன்",
@ -137,6 +147,7 @@
"minimal": "குறைந்தபட்சம்",
"ml": "மில்லிலிட்டர்",
"Moderate": "மிதமானது",
"MON": "தி",
"newCui": "புதிய உணவு வகை",
"Newest first": "புதியது முதலில்",
"newRec": "புதிய சமையல் குறிப்பு",
@ -151,8 +162,10 @@
"noRecs": "உங்கள் தேடலுடன் எந்த சமையல் குறிப்புகளும் பொருந்தவில்லை",
"noRecsInL": "இங்குள்ள சமையல் குறிப்புகள் எதுவும் உங்கள் தேடலுடன் பொருந்தவில்லை",
"nos": "குறிப்புகள்",
"November": "நவம்பர்",
"nwCat": "புதிய பகுப்பு",
"nwYiU": "புதிய மகசூல் அலகு",
"October": "அக்டோபர்",
"OK": "சரி",
"Oldest first": "பழையன முதலில்",
"opts": "விருப்பங்கள்",
@ -166,7 +179,7 @@
"Piece": "துண்டு",
"pinch": "கிள்ளு",
"planner": "உணவுத் திட்டம்",
"plsAdd": "ஒன்றைச் சேர்க்க + பொத்தானைப் பயன்படுத்தவும்",
"plsAdd": "ஒன்றைச் சேர்க்க பிளஸ் பொத்தானைப் பயன்படுத்தவும்",
"Portuguese": "போர்த்துகீசியம்",
"Poultry": "கோழி",
"Pound": "பவுண்டு",
@ -210,10 +223,12 @@
"rst": "மறுதொடக்கம்",
"Russian": "ரஷ்ய",
"Salads": "சாலடுகள்",
"SAT": "ச",
"Sauces": "சாஸ்கள்",
"Scottish": "ஸ்காட்டிஷ்",
"Seafood": "கடல் உணவு",
"selRec": "சமையல் குறிப்பைத் தேர்ந்தெடுக்கவும்",
"September": "செப்டம்பர்",
"ser": "தேடு",
"Serving": "கூறு",
"SET": "அமை",
@ -233,8 +248,9 @@
"sru": "சமையல் குறிப்பை பகிரவும்...",
"stars": "நட்சத்திர மதிப்பீடு",
"stick": "குச்சி",
"stp": "செய்முறை %s",
"stp": "செய்முறை",
"strAdd": "உங்கள் சமையல் குறிப்புகளைச் சேர்க்கத் தொடங்குங்கள்!",
"SUN": "ஞா",
"sVw": "சாதனத்தை அசைத்து சீரற்ற சமையல் குறிப்பை காண்க",
"sVwInfo": "நீங்கள் தீர்மானிக்க முடியாதபோது என்ன சமைக்கலாம் என்பதைத் தேர்வுசெய்ய உதவும்",
"Swedish": "ஸ்வீடிஷ்",
@ -245,6 +261,7 @@
"Teaspoon": "டீஸ்பூன்",
"Thai": "தாய்",
"Theme": "தீம்",
"THU": "வி",
"title": "தலைப்பு",
"tLInfo": "நீங்கள் பின்னர் முயற்சிக்க விரும்பும் சமையல் குறிப்புகள் இங்கே பட்டியலிடப்படும்",
"today": "இன்று",
@ -255,6 +272,7 @@
"ts": "குறிச்சொற்கள்",
"tsInfo": "இடைவெளிகளுடன் பிரிக்கவும்",
"tsp": "டீஸ்பூன்",
"TUE": "செ",
"Turkish": "துருக்கிய",
"Undefined": "வரையறுக்கப்படாதவை",
"unit": "அலகு",
@ -265,67 +283,11 @@
"Vegetarian": "சைவம்",
"Vietnamese": "வியட்நாமிய",
"wAgo": "%s வாரங்களுக்கு முன்பு",
"WED": "பு",
"yesterday": "நேற்று",
"yieldQ": "மகசூல் அளவு",
"yieldU": "மகசூல் அலகு",
"yld": "மகசூல்",
"buto": "%s இல் காப்புப் பிரதி எடுக்கப்பட்டது",
"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"
"sysDefB": "அமைப்பு இயல்புநிலை + கருப்பு"
}

View file

@ -1,331 +1,293 @@
{
"aap": "ఫోటోను అటాచ్ చేయండి",
"About": "గురించి",
"aBtn": "చేర్చు",
"aD": "అన్నీ పూర్తయ్యాయి!",
"addCmbBtn": "కలయికను జోడించండి",
"aFBu": "బ్యాకప్ చేయడం కొరకు ఒక రెసిపీని జోడించండి",
"aIngBtn": "పదార్ధాన్ని జోడించండి",
"allCats": "అన్ని వర్గాలు",
"allCuis": "అన్ని వంటకాలు",
"allTs": "అన్ని టాగ్లు",
"American": "అమెరికన్",
"aNBtn": "కొత్తది జత పరచండి",
"aNoBtn": "గమనిక చేర్చు",
"app.name": "ఎన్రెసిపీస్",
"appCrd": "నారెసిపీస్ ద్వారా భాగస్వామ్యం చేయబడింది. F-Droid, IzzyOnDroid లేదా Play Store లో పొందండి.",
"Appetizers": "ఆకలి పుట్టించేవి",
"appInfo": "నారెసిపీస్ అనేది ఓపెన్ సోర్స్, గోప్యతా-స్నేహపూర్వక డిజిటల్ కుక్‌బుక్, ఇది మీ వంటకాలను సృష్టించడానికి, నిర్వహించడానికి మరియు భాగస్వామ్యం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది",
"apply": "వర్తించు",
"appRst": "అప్లికేషన్ పున art ప్రారంభం అవసరం",
"aStpBtn": "దశను జోడించండి",
"Barbecue": "బార్బెక్యూ",
"Beverages": "పానీయాలు",
"Black": "నలుపు",
"Brazilian": "బ్రెజిలియన్",
"Breads": "రొట్టెలు",
"breakfast": "అల్పాహారం",
"British": "బ్రిటిష్",
"buEmp": "బ్యాకప్ ఫైల్ ఖాళీగా ఉంది",
"buFol": "బ్యాకప్ ఫోల్డర్",
"buInc": "చెడ్డ లేదా పాడైన బ్యాకప్ ఫైల్",
"buInfo": "తిరిగి దిగుమతి చేయగల మీ మొత్తం డేటాను కలిగి ఉన్న జిప్ ఫైల్‌ను సృష్టిస్తుంది",
"buMod": "బ్యాకప్ ఫైల్ మరెక్కడా సవరించబడింది",
"cat": "వర్గం",
"cBtn": "రద్దు చేయండి",
"Challenging": "సవాలు",
"Chinese": "చైనీస్",
"clove": "లవంగం",
"cm": "సెంటీమీటర్",
"cmbs": "కలయికలు",
"conBtn": "కొనసాగించు",
"conf": "నిర్ధారించండి",
"cookT": "వంట సమయం",
"cPic": "ఫోటోను సవరించండి",
"Created": "సృష్టించబడింది",
"cui": "వంటకాలు",
"cup": "కప్పు",
"Cup": "కప్పు",
"dAgo": "%s రోజుల క్రితం",
"Danish": "డానిష్",
"Dark": "ముదురు",
"db": "డేటాబేస్",
"dBtn": "ఎంచుకోబడింది",
"delRecInfo": "మీరు %s రెసిపీని శాశ్వతంగా తొలగించబోతున్నారు",
"delRecsInfo": "మీరు %s ని శాశ్వతంగా తొలగించబోతున్నారు",
"Desserts": "డెజర్ట్స్",
"detailed": "వివరణాత్మక",
"Difficulty level": "కఠినత స్థాయి",
"dinner": "విందు",
"disBtn": "పారవేయండి",
"disc": "ఈ రెసిపీలో సేవ్ చేయని మార్పులు ఉన్నాయి. మీరు ఏమి చేయడానికి ఇష్టపడతారు?",
"donate": "దానం చేయండి",
"dozen": "డజను",
"drop": "చుక్క",
"dsp": "డెజర్ట్ చెంచా",
"Easy": "సులభం",
"editRec": "రెసిపీని సవరించండి",
"Egyptian": "ఈజిప్షియన్",
"English": "ఇంగ్లీష్",
"EnRecipes": "ఎన్రెసిపీస్",
"expBu": "పూర్తి బ్యాకప్‌ను ఎగుమతి చేయండి",
"expip": "ఎగుమతి పురోగతిలో ఉంది",
"expSuc": "ఎగుమతి విజయం",
"favourites": "ఇష్టమైనవి",
"Filipino": "ఫిలిపినో",
"Filtered recipes": "ఫిల్టర్ చేసిన వంటకాలు",
"fl oz": "ద్రవం oun న్స్",
"fltr": "ఫిల్టర్",
"Fluid Ounce": "ద్రవం oun న్స్",
"French": "ఫ్రెంచ్",
"fsList": "ఇష్టమైన వంటకాలు ఇంకా ఏమీ లేవు",
"g": "గ్రాము",
"gal": "గాలన్",
"Gallon": "గాలన్",
"German": "జర్మన్",
"gh": "GitHub లో చూడండి",
"Gram": "గ్రాము",
"Greek": "గ్రీకు",
"grid": "గ్రిడ్",
"grocery": "సరుకుల చిట్టా",
"guide": "వినియోగదారుని మార్గనిర్దేషిక",
"Healthy": "ఆరోగ్యకరమైనది",
"hr": "గంట",
"impBu": "డేటాను దిగుమతి చేయండి",
"impFail": "దిగుమతి విఫలమైంది",
"impInfo": "ఈ అనువర్తనం ఎగుమతి చేసిన పూర్తి బ్యాకప్‌లకు మద్దతు ఇస్తుంది",
"impip": "దిగుమతి పురోగతిలో ఉంది",
"impSuc": "దిగుమతి విజయం",
"in": "అంగుళం",
"Indian": "భారతీయ",
"ings": "పదార్థాలు",
"inss": "సూచనలు",
"intf": "ఇంటర్ఫేస్",
"invFile": "చెల్లుబాటులోలేని ఫైలు",
"Irish": "ఐరిష్",
"it": "అంశం %s",
"Italian": "ఇటాలియన్",
"Jamaican": "జమైకా",
"Japanese": "జపనీస్",
"Jewish": "యూదుల",
"joinTG": "టెలిగ్రామ్ సమూహంలో చేరండి",
"kEdit": "సవరణ కొనసాగించండి",
"Kenyan": "కెన్యా",
"kg": "కిలోగ్రాము",
"Kilogram": "కిలోగ్రాము",
"Korean": "కొరియన్",
"l": "లీటర్",
"lang": "భాష",
"large": "పెద్ద",
"Last updated": "చివరిగా నవీకరించబడింది",
"lb": "పౌండ్",
"leaf": "ఆకు",
"Light": "లేత",
"listVM": "జాబితా వీక్షణ మోడ్",
"Litre": "లీటర్",
"Loaf": "రొట్టె",
"ltAgo": "చాలా కాలం క్రితం",
"lunch": "భోజనం",
"mAgo": "%s నెలల క్రితం",
"Main dishes": "ప్రధాన వంటకాలు",
"Meat": "మాంసం",
"medium": "మీడియం",
"Mexican": "మెక్సికన్",
"mg": "మిల్లీగ్రామ్",
"Millilitre": "మిల్లీలీటర్",
"min": "నిమిషం",
"minimal": "కనిష్ట",
"ml": "మిల్లీలీటర్",
"Moderate": "మోస్తరు",
"newCui": "కొత్త వంటకాలు",
"Newest first": "క్రొత్తది మొదటిది",
"newRec": "కొత్త వంటకం",
"newUnit": "కొత్త యూనిట్",
"Nigerian": "నైజీరియన్",
"nLangInfo": "కొత్త భాషను ఉపయోగించడం కొరకు ఎన్రెసిపీస్ పునఃప్రారంభించండి",
"nNBtn": "ఇప్పుడు కాదు",
"no": "గమనిక",
"noAccSensor": "యాక్సిలెరోమీటర్ సెన్సార్ నిలిపివేయబడింది లేదా పనిచేయడం లేదు",
"noFavs": "ఇంకా ఇష్టమైనవి లేవు",
"Noodles": "నూడుల్స్",
"noRecs": "మీ శోధనకు వంటకాలు ఏవీ సరిపోలడం లేదు",
"noRecsInL": "ఇక్కడ ఉన్న వంటకాలు ఏవీ మీ శోధనతో సరిపోలడం లేదు",
"nos": "గమనికలు",
"nwCat": "కొత్త వర్గం",
"nwYiU": "కొత్త దిగుబడి యూనిట్",
"OK": "అలాగే",
"Oldest first": "పురాతన మొదటి",
"opts": "ఎంపికలు",
"Ounce": "oun న్స్",
"oz": "oun న్స్",
"Pasta": "పాస్తా",
"Patty": "పాటీ",
"photogrid": "ఫోటో గ్రిడ్",
"pht": "రెసిపీ ఫోటో",
"piece": "ముక్క",
"Piece": "ముక్క",
"pinch": "చిటికెడు",
"planner": "భోజన ప్రణాళిక",
"plsAdd": "ఒకదాన్ని జోడించడానికి + బటన్‌ను ఉపయోగించండి",
"Portuguese": "పోర్చుగీస్",
"Poultry": "పౌల్ట్రీ",
"Pound": "పౌండ్",
"prepT": "తయారీ సమయం",
"priv": "గోప్యతా విధానం",
"pt": "pt",
"qt": "క్వార్ట్",
"Quickest first": "శీఘ్రమైనవి ప్రధమ",
"Rating": "రేటింగ్",
"rBtn": "తొలగించండి",
"rec": "రెసిపీ",
"recE": "ఇప్పటికే ఉన్నవి:",
"recF": "వంటకాలు కనుగొనబడ్డాయి",
"recI": "దిగుమతి చేసుకున్నవి:",
"recListEmp": "ఇక్కడ ఏమి లేదు! కొన్ని వంటకాలను జోడించి, మళ్లీ ప్రయత్నించండి",
"recPic": "రెసిపీ ఫోటో",
"recRm": "రెసిపీ తొలగించబడింది",
"recs": "వంటకాలు",
"recTitle": "నా ఆరోగ్యకరమైన వంటకం",
"recU": "నవీకరించబడింది:",
"req": "అవసరమైన %s",
"resNF": "రెసిపీ కనుగొనబడలేదు",
"rest": "రీసెట్ చేయండి",
"restCatL": "వర్గం జాబితాను రీసెట్ చేయండి",
"restCuiL": "వంటల జాబితాను రీసెట్ చేయండి",
"restDone": "రీసెట్ పూర్తయింది",
"restInfo": "జాబితాను రీసెట్ చేస్తే వినియోగదారు సృష్టించిన ఎంట్రీలను తొలగిస్తుంది మరియు డిఫాల్ట్ ఎంట్రీలను పునరుద్ధరిస్తుంది. ఇప్పటికే ఉన్న వంటకాలు ప్రభావితం కావు.",
"restUL": "యూనిట్ జాబితాను రీసెట్ చేయండి",
"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": "సెట్",
"Settings": "సెట్టింగులు",
"shr": "పంచుకో",
"Side dishes": "సైడ్ డిషెస్",
"simple": "సాధారణ",
"Slowest first": "నెమ్మదిగా ఉన్నవి మొదట",
"sltd": "ఎంచుకోబడింది",
"small": "చిన్న",
"snacks": "స్నాక్స్",
"Soups": "సూప్‌లు",
"Spanish": "స్పానిష్",
"Sri Lankan": "శ్రీలంక",
"srpu": "రెసిపీ ఫోటోను భాగస్వామ్యం చేయండి ...",
"srt": "క్రమబద్ధీకరించు",
"sru": "రెసిపీని భాగస్వామ్యం చేయండి ...",
"stars": "స్టార్ రేటింగ్",
"stick": "కర్ర",
"stp": "దశ %s",
"strAdd": "మీ వంటకాలను జోడించడం ప్రారంభించండి!",
"sVw": "యాదృచ్ఛిక రెసిపీని చూడటానికి షేక్ చేయండి",
"sVwInfo": "మీరు నిర్ణయించలేనప్పుడు ఏమి ఉడికించాలో ఎంచుకోవడానికి మీకు సహాయపడుతుంది",
"Swedish": "స్వీడిష్",
"swm": "సోమవారం వారం ప్రారంభించండి",
"sysDef": "సిస్టమ్ డిఫాల్ట్",
"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": "సిస్టమ్ డిఫాల్ట్ + నలుపు",
"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"
"aap": "ఫోటోను అటాచ్ చేయండి",
"About": "గురించి",
"aBtn": "చేర్చు",
"aD": "అన్నీ పూర్తయ్యాయి!",
"addCmbBtn": "కలయికను జోడించండి",
"aFBu": "బ్యాకప్ చేయడం కొరకు ఒక రెసిపీని జోడించండి",
"aIngBtn": "పదార్ధాన్ని జోడించండి",
"allCats": "అన్ని వర్గాలు",
"allCuis": "అన్ని వంటకాలు",
"allTs": "అన్ని టాగ్లు",
"American": "అమెరికన్",
"aNBtn": "కొత్తది జత పరచండి",
"aNoBtn": "గమనిక చేర్చు",
"app.name": "ఎన్రెసిపీస్",
"appCrd": "నారెసిపీస్ ద్వారా భాగస్వామ్యం చేయబడింది. F-Droid, IzzyOnDroid లేదా Play Store లో పొందండి.",
"Appetizers": "ఆకలి పుట్టించేవి",
"appInfo": "నారెసిపీస్ అనేది ఓపెన్ సోర్స్, గోప్యతా-స్నేహపూర్వక డిజిటల్ కుక్‌బుక్, ఇది మీ వంటకాలను సృష్టించడానికి, నిర్వహించడానికి మరియు భాగస్వామ్యం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది",
"apply": "వర్తించు",
"appRst": "అప్లికేషన్ పున art ప్రారంభం అవసరం",
"April": "ఏప్రిల్",
"aStpBtn": "దశను జోడించండి",
"August": "ఆగస్టు",
"Barbecue": "బార్బెక్యూ",
"Beverages": "పానీయాలు",
"Black": "నలుపు",
"Brazilian": "బ్రెజిలియన్",
"Breads": "రొట్టెలు",
"breakfast": "అల్పాహారం",
"British": "బ్రిటిష్",
"buEmp": "బ్యాకప్ ఫైల్ ఖాళీగా ఉంది",
"buFol": "బ్యాకప్ ఫోల్డర్",
"buInc": "చెడ్డ లేదా పాడైన బ్యాకప్ ఫైల్",
"buInfo": "తిరిగి దిగుమతి చేయగల మీ మొత్తం డేటాను కలిగి ఉన్న జిప్ ఫైల్‌ను సృష్టిస్తుంది",
"buMod": "బ్యాకప్ ఫైల్ మరెక్కడా సవరించబడింది",
"cat": "వర్గం",
"cBtn": "రద్దు చేయండి",
"Challenging": "సవాలు",
"Chinese": "చైనీస్",
"clove": "లవంగం",
"cm": "సెంటీమీటర్",
"cmbs": "కలయికలు",
"conBtn": "కొనసాగించు",
"conf": "నిర్ధారించండి",
"cookT": "వంట సమయం",
"cPic": "ఫోటోను సవరించండి",
"Created": "సృష్టించబడింది",
"cui": "వంటకాలు",
"cup": "కప్పు",
"Cup": "కప్పు",
"dAgo": "%s రోజుల క్రితం",
"Danish": "డానిష్",
"Dark": "ముదురు",
"db": "డేటాబేస్",
"dBtn": "ఎంచుకోబడింది",
"December": "డిసెంబర్",
"delRecInfo": "మీరు %s రెసిపీని శాశ్వతంగా తొలగించబోతున్నారు",
"delRecsInfo": "మీరు %s ని శాశ్వతంగా తొలగించబోతున్నారు",
"Desserts": "డెజర్ట్స్",
"detailed": "వివరణాత్మక",
"Difficulty level": "కఠినత స్థాయి",
"dinner": "విందు",
"disBtn": "పారవేయండి",
"disc": "ఈ రెసిపీలో సేవ్ చేయని మార్పులు ఉన్నాయి. మీరు ఏమి చేయడానికి ఇష్టపడతారు?",
"donate": "దానం చేయండి",
"dozen": "డజను",
"drop": "చుక్క",
"dsp": "డెజర్ట్ చెంచా",
"Easy": "సులభం",
"editRec": "రెసిపీని సవరించండి",
"Egyptian": "ఈజిప్షియన్",
"English": "ఇంగ్లీష్",
"EnRecipes": "ఎన్రెసిపీస్",
"expBu": "పూర్తి బ్యాకప్‌ను ఎగుమతి చేయండి",
"expip": "ఎగుమతి పురోగతిలో ఉంది",
"expSuc": "ఎగుమతి విజయం",
"favourites": "ఇష్టమైనవి",
"February": "ఫిబ్రవరి",
"Filipino": "ఫిలిపినో",
"Filtered recipes": "ఫిల్టర్ చేసిన వంటకాలు",
"fl oz": "ద్రవం oun న్స్",
"fltr": "ఫిల్టర్",
"Fluid Ounce": "ద్రవం oun న్స్",
"French": "ఫ్రెంచ్",
"FRI": "శుక్ర",
"fsList": "ఇష్టమైన వంటకాలు ఇంకా ఏమీ లేవు",
"g": "గ్రాము",
"gal": "గాలన్",
"Gallon": "గాలన్",
"German": "జర్మన్",
"gh": "GitHub లో చూడండి",
"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": "%s నెలల క్రితం",
"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": "మీ శోధనకు వంటకాలు ఏవీ సరిపోలడం లేదు",
"noRecsInL": "ఇక్కడ ఉన్న వంటకాలు ఏవీ మీ శోధనతో సరిపోలడం లేదు",
"nos": "గమనికలు",
"November": "నవంబర్",
"nwCat": "కొత్త వర్గం",
"nwYiU": "కొత్త దిగుబడి యూనిట్",
"October": "అక్టోబర్",
"OK": "అలాగే",
"Oldest first": "పురాతన మొదటి",
"opts": "ఎంపికలు",
"Ounce": "oun న్స్",
"oz": "oun న్స్",
"Pasta": "పాస్తా",
"Patty": "పాటీ",
"photogrid": "ఫోటో గ్రిడ్",
"pht": "రెసిపీ ఫోటో",
"piece": "ముక్క",
"Piece": "ముక్క",
"pinch": "చిటికెడు",
"planner": "భోజన ప్రణాళిక",
"plsAdd": "ఒకదాన్ని జోడించడానికి ప్లస్ బటన్‌ను ఉపయోగించండి",
"Portuguese": "పోర్చుగీస్",
"Poultry": "పౌల్ట్రీ",
"Pound": "పౌండ్",
"prepT": "తయారీ సమయం",
"priv": "గోప్యతా విధానం",
"pt": "pt",
"qt": "క్వార్ట్",
"Quickest first": "శీఘ్రమైనవి ప్రధమ",
"Rating": "రేటింగ్",
"rBtn": "తొలగించండి",
"rec": "రెసిపీ",
"recE": "ఇప్పటికే ఉన్నవి:",
"recF": "వంటకాలు కనుగొనబడ్డాయి",
"recI": "దిగుమతి చేసుకున్నవి:",
"recListEmp": "ఇక్కడ ఏమి లేదు! కొన్ని వంటకాలను జోడించి, మళ్లీ ప్రయత్నించండి",
"recPic": "రెసిపీ ఫోటో",
"recRm": "రెసిపీ తొలగించబడింది",
"recs": "వంటకాలు",
"recTitle": "నా ఆరోగ్యకరమైన వంటకం",
"recU": "నవీకరించబడింది:",
"req": "అవసరమైన %",
"resNF": "రెసిపీ కనుగొనబడలేదు",
"rest": "రీసెట్ చేయండి",
"restCatL": "వర్గం జాబితాను రీసెట్ చేయండి",
"restCuiL": "వంటల జాబితాను రీసెట్ చేయండి",
"restDone": "రీసెట్ పూర్తయింది",
"restInfo": "జాబితాను రీసెట్ చేస్తే వినియోగదారు సృష్టించిన ఎంట్రీలను తొలగిస్తుంది మరియు డిఫాల్ట్ ఎంట్రీలను పునరుద్ధరిస్తుంది. ఇప్పటికే ఉన్న వంటకాలు ప్రభావితం కావు.",
"restUL": "యూనిట్ జాబితాను రీసెట్ చేయండి",
"restYUL": "దిగుబడి యూనిట్ జాబితాను రీసెట్ చేయండి",
"Rice": "అన్నం",
"rmCatInfo": "మీరు వర్గం జాబితా నుండి %s ను తొలగించబోతున్నారు",
"rmCmb": "కాంబినేషన్ తొలగించబడింది",
"rmCuiInfo": "మీరు వంటల జాబితా నుండి %s ను తొలగించబోతున్నారు",
"rmIng": "పదార్ధం తొలగించబడింది",
"rmIns": "ఆదేశాలు తొలగించబడ్డాయి",
"rmN": "గమనిక తొలగించబడింది",
"rmUInfo": "మీరు యూనిట్ జాబితా నుండి %s ను తొలగించబోతున్నారు",
"rmYUInfo": "మీరు దిగుబడి యూనిట్ జాబితా నుండి %s ను తొలగించబోతున్నారు",
"Roll": "రోల్",
"rp": "ఫోటోను తొలగించండి",
"rst": "పునఃప్రారంభించు",
"Russian": "రష్యన్",
"Salads": "సలాడ్లు",
"SAT": "శని",
"Sauces": "సాస్",
"Scottish": "స్కాటిష్",
"Seafood": "సముద్రపు ఆహారం",
"selRec": "రెసిపీని ఎంచుకోండి",
"September": "సెప్టెంబర్",
"ser": "శోధించు",
"Serving": "అందిస్తోంది",
"SET": "సెట్",
"Settings": "సెట్టింగులు",
"shr": "పంచుకో",
"Side dishes": "సైడ్ డిషెస్",
"simple": "సాధారణ",
"Slowest first": "నెమ్మదిగా ఉన్నవి మొదట",
"sltd": "ఎంచుకోబడింది",
"small": "చిన్న",
"snacks": "స్నాక్స్",
"Soups": "సూప్‌లు",
"Spanish": "స్పానిష్",
"Sri Lankan": "శ్రీలంక",
"srpu": "రెసిపీ ఫోటోను భాగస్వామ్యం చేయండి ...",
"srt": "క్రమబద్ధీకరించు",
"sru": "రెసిపీని భాగస్వామ్యం చేయండి ...",
"stars": "స్టార్ రేటింగ్",
"stick": "కర్ర",
"stp": "దశ",
"strAdd": "మీ వంటకాలను జోడించడం ప్రారంభించండి!",
"SUN": "ఆది",
"sVw": "యాదృచ్ఛిక రెసిపీని చూడటానికి షేక్ చేయండి",
"sVwInfo": "మీరు నిర్ణయించలేనప్పుడు ఏమి ఉడికించాలో ఎంచుకోవడానికి మీకు సహాయపడుతుంది",
"Swedish": "స్వీడిష్",
"swm": "సోమవారం వారం ప్రారంభించండి",
"sysDef": "సిస్టమ్ డిఫాల్ట్",
"Tablespoon": "టేబుల్ స్పూన్",
"tbsp": "టేబుల్ స్పూన్",
"Teaspoon": "టీస్పూన్",
"Thai": "థాయ్",
"Theme": "థీమ్",
"THU": "గురు",
"title": "శీర్షిక",
"tLInfo": "మీరు తరువాత ప్రయత్నించాలనుకునే వంటకాలు ఇక్కడ ఇవ్వబడ్డాయి",
"today": "ఈ రోజు",
"triedInfo": "మీరు %s ఈ రెసిపీని ప్రయత్నించారు",
"trnsl": "అనువదించండి",
"trylater": "తరువాత ప్రయత్నం చెయ్",
"trySer": "అన్ని వంటకాలలో వెతకాలా?",
"ts": "టాగ్లు",
"tsInfo": "ఖాళీలతో వేరు",
"tsp": "స్పూన్",
"TUE": "మంగళ",
"Turkish": "టర్కిష్",
"Undefined": "వివరించబడలేదు",
"unit": "యూనిట్",
"Unit": "యూనిట్",
"unsaved": "సేవ్ చేయని మార్పులు",
"untRec": "పేరులేని రెసిపీ",
"Vegan": "వేగన్",
"Vegetarian": "శాఖాహారం",
"Vietnamese": "వియత్నామీస్",
"wAgo": "%s వారాల క్రితం",
"WED": "బుధ",
"yesterday": "నిన్న",
"yieldQ": "దిగుబడి పరిమాణం",
"yieldU": "దిగుబడి యూనిట్",
"yld": "దిగుబడి",
"buto": "%s కు బ్యాకప్ చేయబడింది",
"sysDefB": "సిస్టమ్ డిఫాల్ట్ + నలుపు"
}

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 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 EditRecipe from './components/EditRecipe.vue'
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 store from './store'
import CollectionView from '@nativescript-community/ui-collectionview/vue'
Vue.use(CollectionView)
import { RGridLayout, RStackLayout, RLabel } from './rtl-ui'
Vue.registerElement('RGridLayout', () => RGridLayout)
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
)
})
import { lvMixin } from './shared/mixins.js'
Vue.mixin(lvMixin)
Vue.config.silent = false
Vue.filter('L', localize)
new Vue({
store,
render: (h) => h('Frame', [h(renderView)]),
render: (h) => h(EnRecipes),
}).$start()

View file

@ -15,18 +15,29 @@
android {
defaultConfig {
versionCode 2
versionName '2.0.1'
versionCode 8
versionName '1.3.3'
applicationId 'com.vishnuraghav.enrecipes'
minSdkVersion 23
targetSdkVersion 30
compileSdkVersion 30
generatedDensities = []
// ndk {
// abiFilters.clear()
// abiFilters.addAll(['arm64-v8a'])
// }
ndk {
abiFilters.clear()
abiFilters.addAll(['arm64-v8a', 'armeabi-v7a', 'x86'])
}
}
aaptOptions {
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"?>
<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" />
<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.READ_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.INTERNET" 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">
<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">
<application android:extractNativeLibs="true"
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" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
</activity>
<activity android:name="com.tns.ErrorReportActivity" />
<service android:name="com.tns.ForegroundService" android:enabled="true" android:exported="false" />
<provider android:name="androidx.core.content.FileProvider" android:exported="false" android:authorities="${applicationId}.provider" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider" />
<provider
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:authorities="${applicationId}.provider"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider"/>
</provider>
</application>
</manifest>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<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" />
</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