Compare commits

...

167 Commits
v2.2.0 ... 6.x

Author SHA1 Message Date
b279212a95 Launcher icon (all res.) changed to raster icon 2023-09-21 19:24:02 +02:00
ed1a9d70fb Changes reflecting personalization 2023-09-19 10:45:02 +02:00
4f11e7bb00 Upload files to 'LabelStoreMax/public/assets/app_icon' 2023-09-18 18:13:59 +00:00
Anthony
2f9118085c v6.9.1 2023-08-28 22:16:33 +01:00
Anthony
c620aa71cc v6.10.0 2023-08-21 02:54:53 +01:00
Anthony
63244606be v6.10.0 2023-08-21 02:54:18 +01:00
Anthony
3b350dbefb v6.9.0 2023-07-13 03:32:31 +01:00
Anthony
6deab507d8 v6.8.2 2023-07-05 00:00:42 +01:00
Anthony
a2698557ea v6.8.1 2023-07-03 21:00:28 +01:00
Anthony
fedd76fc67 v6.8.0 2023-07-03 07:46:19 +01:00
Anthony
456f313056 v6.7.0 2023-06-20 15:07:07 +07:00
Anthony
f67f486838 v6.6.2 2023-06-14 14:39:03 +07:00
Anthony
688ce6bec8 v6.6.1 updates 2023-05-28 22:49:11 +01:00
Anthony
05a7aedf54 Merge branch '6.x' of https://github.com/woosignal/flutter-woocommerce-app into 6.x 2023-05-28 22:37:50 +01:00
Anthony
adc32e730d v6.6.1 updates 2023-05-28 22:36:39 +01:00
Anthony Gordon
f25a5c7a18
Create Podfile 2023-05-19 12:35:10 +01:00
Anthony
54f7689e40 v6.6.0 updates 2023-05-19 12:06:15 +01:00
Anthony
ce9216ad94 update Pubspec.yaml 2023-05-19 11:10:46 +01:00
Anthony
da2301a2af v6.6.0 updates 2023-05-18 19:46:04 +01:00
Anthony
004c146967 v6.5.1 updates 2023-03-04 12:58:43 +07:00
Anthony
c980407287 v6.5.0 updates 2023-03-04 12:41:33 +07:00
Anthony
95c9697830 v6.4.1 updates 2023-02-23 11:23:06 +07:00
Anthony
a50cad6daa v6.4.0 updates 2023-01-06 16:11:58 -05:00
Anthony
7e43b678ea 6.3.1 updates 2022-11-04 14:01:21 +08:00
Anthony
8499fa8b07 update pubspec.lock 2022-11-03 16:08:14 +08:00
Anthony
683f67877e v6.3.0 updates 2022-11-03 15:43:16 +08:00
Anthony
31bb82d49b update CHANGELOG.md 2022-09-23 09:08:36 +08:00
Anthony
6dd9b73f9a ui tweaks 2022-09-23 08:57:08 +08:00
Anthony Gordon
f94a3e2fb5
Merge pull request #47 from jeanmatthieud/fix-checkout-phone-field
[FIX] Bug when phone number field is cleared during checkout
2022-09-23 08:54:17 +08:00
Anthony
b1847ff8f5 dependency updates 2022-09-23 08:31:11 +08:00
Anthony Gordon
234d0d3c7b
Merge pull request #50 from jeanmatthieud/fix-dark-theme
Dark theme fix for v6.2
2022-09-08 22:23:19 +08:00
Anthony Gordon
2383cd9e1d
Merge pull request #51 from jeanmatthieud/target-android-12
Android compile and target SDK 33
2022-09-08 22:19:44 +08:00
Jean-Matthieu DECHRISTE
1703fefd20 Android compile and target SDK 33 2022-09-08 09:39:31 +02:00
Jean-Matthieu DECHRISTE
0ef172887c Should fix dark theme #49 2022-09-08 09:36:21 +02:00
Jean-Matthieu DECHRISTE
5608484991 [FIX] Bug when phone number field is cleared during checkout 2022-09-06 11:22:02 +02:00
Anthony Gordon
94b989ad9d
Merge pull request #40 from jeanmatthieud/fix-checkout-details-validation
Fix email validation before submitting checkout details
2022-08-30 15:12:36 +10:00
Anthony Gordon
6670a50ad4
Merge pull request #42 from woosignal/dependency-updates
v6.2.0 - Dependency updates
2022-08-29 17:54:15 +10:00
Anthony Gordon
0276e8c217
Merge pull request #39 from jeanmatthieud/fix-woocommerce-user-role
Change user role after creation to match WooCommerce
2022-08-29 17:49:18 +10:00
Anthony Gordon
4d88cd08c7
Merge pull request #38 from jeanmatthieud/french-translation
Improved FR translation
2022-08-29 17:47:33 +10:00
Anthony Gordon
6cbf864cc9
Merge pull request #41 from woosignal/add-missing-translations
add missing translations
2022-08-29 17:46:21 +10:00
Anthony
f6d337fbfe update CHANGELOG.md 2022-08-29 15:43:49 +08:00
Anthony
0132c76569 dependency-updates 2022-08-29 15:34:56 +08:00
Anthony Gordon
29ab5a9eac
Merge branch '6.x' into add-missing-translations 2022-08-26 12:49:06 +08:00
Anthony
2b016a0bb0 add missing translations 2022-08-26 14:34:19 +10:00
Jean-Matthieu DECHRISTE
b4990cbe21 Fix email validation before submitting checkout details 2022-08-25 14:28:58 +02:00
Jean-Matthieu DECHRISTE
99db86f10c Change user role after creation to match WooCommerce 2022-08-25 14:27:45 +02:00
Jean-Matthieu DECHRISTE
7f88f152aa Improved FR translation 2022-08-25 14:27:02 +02:00
Anthony Gordon
faa62bb9ad
Merge pull request #36 from woosignal/master
6.1.0
2022-07-09 15:15:09 +07:00
Anthony Gordon
1e108c6c89
Merge branch '6.x' into master 2022-07-09 15:14:59 +07:00
Anthony
ab2a195032 update account_landing.dart 2022-07-09 15:12:30 +07:00
Anthony
ba5ddc1fa9 update .env 2022-07-09 15:04:28 +07:00
Anthony
c3420bb9bc 6.1.0 2022-07-09 15:01:12 +07:00
Anthony Gordon
7a77a0cb16
Merge pull request #35 from woosignal/master
v6.0.0 updates
2022-05-19 21:53:02 +01:00
Anthony
b2abd22753 v6.0.0 - refactor pages 2022-05-19 21:48:40 +01:00
Anthony
f5d22921b9 v6.0.0 - Flutter format 2022-05-19 21:46:20 +01:00
Anthony
e40b36a181 v6.0.0 updates 2022-05-19 21:43:55 +01:00
Anthony
9b187684b5 v5.9.0 updates 2022-05-19 21:37:41 +01:00
Anthony Gordon
249f98790a
Merge pull request #34 from woosignal/master
v5.8.0 updates
2022-03-29 23:55:36 +01:00
Anthony
c72cc3250c v5.8.0 updates 2022-03-29 23:53:37 +01:00
Anthony Gordon
3c1f02320b
Merge pull request #33 from woosignal/master
v5.7.3 - updates
2022-02-21 15:20:24 +00:00
Anthony
bf14ab3901 v5.7.3 - updates 2022-02-21 15:19:01 +00:00
Anthony Gordon
2580b11ef2
Merge pull request #32 from woosignal/master
v5.7.2 - updates
2022-02-12 11:39:45 +00:00
Anthony
e492dfb83b v5.7.2 - updates 2022-02-12 11:37:36 +00:00
Anthony Gordon
2d8a480e25
Merge pull request #30 from woosignal/master
v5.7.1 - updates
2022-02-08 00:36:26 +00:00
Anthony
6ee4a2afb2 v5.7.1 - updates 2022-02-08 00:32:00 +00:00
Anthony
6ac676c60b v5.7.1 - updates 2022-02-08 00:30:23 +00:00
Anthony
388d68271a v5.7.1 - updates 2022-02-08 00:17:35 +00:00
Anthony Gordon
e0a57dafb7
Merge pull request #29 from woosignal/master
v5.7.1 - updates
2022-02-08 00:02:38 +00:00
Anthony
ed1de1258a v5.7.1 - updates 2022-02-08 00:00:15 +00:00
Anthony Gordon
be49ddff1f
Update LICENSE 2022-01-29 12:59:59 +00:00
Anthony Gordon
b771c891fb
Merge pull request #28 from woosignal/master
v5.7.0 - Updates
2022-01-29 12:55:21 +00:00
Anthony
d8b3a5eee8 Merge branch 'master' of https://github.com/woosignal/flutter-woocommerce-app 2022-01-29 12:52:25 +00:00
Anthony
157c1a6e96 v5.7.0 - updates 2022-01-29 12:52:05 +00:00
Anthony Gordon
1f50ff1ac8
Merge pull request #27 from woosignal/master
v5.6.2 - updates
2022-01-07 20:24:03 +00:00
Anthony Gordon
b15e8a13a4
Update CHANGELOG.md 2022-01-07 20:23:38 +00:00
Anthony Gordon
748c596378
Update CHANGELOG.md 2022-01-07 20:23:06 +00:00
Anthony
82b3653c6d v5.6.2 - updates 2022-01-07 20:21:56 +00:00
Anthony Gordon
70ef29df2d
Merge pull request #26 from woosignal/master
v5.6.2 - updates
2022-01-07 15:26:29 +00:00
Anthony
9ad8910f4d v5.6.2 - updates 2022-01-07 14:07:42 +00:00
Anthony Gordon
0fde2b262e
Update home_drawer_widget.dart 2022-01-06 01:23:40 +00:00
Anthony Gordon
0796fe7f8d
Update pubspec.yaml 2022-01-06 00:49:43 +00:00
Anthony Gordon
7293fb89f6
Merge pull request #25 from woosignal/master
v5.6.1 - updates
2022-01-05 22:45:21 +00:00
Anthony
c98fd0246d v5.6.1 - updates 2022-01-05 22:43:01 +00:00
Anthony Gordon
f092daf367
Update README.md 2022-01-04 13:28:33 +00:00
Anthony Gordon
94d6e62440
Merge pull request #24 from woosignal/master
v5.6.0 - updates
2022-01-03 18:03:38 +00:00
Anthony Gordon
a8fc75f31a
Merge branch '5.x' into master 2022-01-03 18:01:57 +00:00
Anthony
5c4addcc66 v5.6.0 - update 2022-01-03 17:58:52 +00:00
Anthony Gordon
c7d5cf9980
Merge pull request #23 from woosignal/master
v5.5.2 - updates
2021-12-18 15:19:34 +00:00
Anthony
d7a38cb95e Update CHANGELOG 2021-12-18 15:19:03 +00:00
Anthony
79404b938e Update CHANGELOG 2021-12-18 15:18:17 +00:00
Anthony
839ff99878 v5.5.2 - updates 2021-12-18 15:11:09 +00:00
Anthony Gordon
0665d0b6af
Merge pull request #22 from woosignal/master
v5.5.1 - updates
2021-12-18 13:03:38 +00:00
Anthony
cd3ee2aa47 v5.5.1 - updates 2021-12-18 13:00:46 +00:00
Anthony Gordon
c9fdee7990
Update .env 2021-12-17 20:59:23 +00:00
Anthony Gordon
4ed12dc24a
Merge pull request #21 from woosignal/master
5.5.0 - updates
2021-12-17 20:58:41 +00:00
Anthony
2d748684ba 5.5.0 - updates 2021-12-17 20:26:27 +00:00
Anthony Gordon
77d2b5884e
Merge pull request #20 from woosignal/master
v5.4.0
2021-12-10 08:57:49 +00:00
Anthony
02791dd634 remove comment 2021-12-10 08:56:07 +00:00
Anthony
242332456d Merge branch 'master' of https://github.com/woosignal/flutter-woocommerce-app 2021-12-10 08:50:34 +00:00
Anthony
6bc9dcd09a v5.4.0 - updates 2021-12-10 08:50:23 +00:00
Anthony Gordon
2b8d35bda6
Merge pull request #19 from woosignal/master
v5.3.1
2021-11-17 18:31:28 +00:00
Anthony Gordon
37019ac4e2
Merge branch '5.x' into master 2021-11-17 18:30:00 +00:00
Anthony
1d7b0287c5 update readme logo 2021-11-17 18:28:45 +00:00
Anthony
d1835d073f v5.3.1 - updates 2021-11-17 17:49:02 +00:00
Anthony Gordon
8213a4adaa
Update README.md 2021-11-02 21:30:55 +00:00
Anthony Gordon
97c1f68c59
Merge pull request #18 from woosignal/master
v5.3.0 - Ability to update payment providers via WooSignal Dashboard,…
2021-11-02 21:29:59 +00:00
Anthony Gordon
883c3d6f96
Merge branch '5.x' into master 2021-11-02 21:29:42 +00:00
Anthony
5bd16b945a v5.3.0 - Ability to update payment providers via WooSignal Dashboard, Pubspec.yaml dependency updates 2021-11-02 21:16:28 +00:00
Anthony Gordon
1c2d9d4196
Update .env 2021-10-27 02:04:02 +01:00
Anthony Gordon
4a3e70d5ca
Update stripe_pay.dart 2021-10-27 02:03:37 +01:00
Anthony Gordon
7661597d7b
Merge pull request #17 from woosignal/master
5.2.1
2021-10-13 19:42:53 +01:00
Anthony
4b306053c4 Fix MC 2021-10-13 19:41:32 +01:00
Anthony
b46ef7d61b v5.2.1 2021-10-13 19:40:28 +01:00
Anthony Gordon
55d2272624
Merge pull request #16 from woosignal/master
v5.2.0
2021-10-12 00:11:10 +01:00
Anthony Gordon
b847fbc336
Update CHANGELOG.md 2021-10-12 00:06:52 +01:00
Anthony
3be9cdd77c fix stripe_pay.dart 2021-10-12 00:05:53 +01:00
Anthony
3398482511 fix build.gradle and stripe_pay.dart 2021-10-12 00:04:56 +01:00
Anthony
dbd2ad9535 remove print 2021-10-11 23:47:56 +01:00
Anthony
713ac0e873 resolve mc 2021-10-11 23:43:04 +01:00
Anthony
877dabbb60 v5.2.0 2021-10-11 23:41:22 +01:00
Anthony Gordon
014edb1962
Update checkout_confirmation.dart 2021-09-25 18:49:25 +01:00
Anthony Gordon
0310ffdbb8
Update gradle-wrapper.properties 2021-08-25 16:54:16 +01:00
Anthony
35d4e62b24 Update .env 2021-07-19 22:32:11 +01:00
Anthony
25ebfcdcf9 Add support for simplified Chinese locale (zh) 2021-07-19 22:31:04 +01:00
Anthony Gordon
916ad0c829
Update README.md 2021-07-08 03:00:15 +01:00
Anthony
98101c573d v5.0.7 updates 2021-07-08 02:59:52 +01:00
Anthony Gordon
b08c2dba57
Update pubspec.yaml 2021-07-08 02:57:28 +01:00
Anthony
57b06fb6da update readme and license 2021-07-08 01:35:17 +01:00
Anthony
4d7fd53148 Refactor project to use Nylo v1.0.0 2021-07-08 01:25:53 +01:00
Anthony Gordon
ba3851a0c6
Update README.md 2021-05-03 00:02:20 +01:00
Anthony Gordon
e04daf5c0e
Update pubspec.yaml 2021-05-03 00:02:01 +01:00
Anthony Gordon
cd7920836e
Update README.md 2021-05-03 00:01:39 +01:00
Anthony Gordon
0bfe07d7b1
Update CHANGELOG.md 2021-05-03 00:01:19 +01:00
Anthony Gordon
1fd39d5935
Update Info.plist 2021-05-02 21:19:27 +01:00
Anthony Gordon
c7161d2611 v5.0.4 updates 2021-04-30 22:02:02 +01:00
Anthony Gordon
33b9ca3746
Update README.md 2021-04-27 22:46:40 +01:00
Anthony Gordon
f0c7769b68 v5.0.3 updates 2021-04-27 22:24:28 +01:00
Anthony Gordon
d08d1b0fe3 v5.0.2 - updates 2021-04-17 18:53:07 +01:00
Anthony Gordon
40f3ebb6ac v5.0.1 - Pubspec.yaml dependency updates and Update to app_payment_gateways 2021-04-13 22:54:40 +01:00
Anthony Gordon
9d62ef65b2 Merge branch 'master' of https://github.com/woosignal/flutter-woocommerce-app 2021-04-11 23:56:57 +01:00
Anthony Gordon
4da05ac8ae changelog update 2021-04-11 23:56:50 +01:00
Anthony Gordon
682fccbc7d
Update README.md 2021-04-11 23:54:52 +01:00
Anthony Gordon
1737fa1604 v5.0.0 - Major release 2021-04-11 23:39:35 +01:00
Anthony Gordon
075dfdb752 update gitignore 2021-03-28 20:05:04 +01:00
Anthony Gordon
853c496d2d v4.0.0 - major release 2021-03-28 20:01:49 +01:00
Anthony
a875d8b259 dependency update 2021-03-08 01:45:08 +00:00
Anthony
ed6460836f v3.0.0 - Major release, Flutter 2.0.0+ support + more 2021-03-08 01:38:45 +00:00
Anthony
b935c2a29d fix fromJson for CustomerCountry 2021-02-24 19:34:42 +00:00
Anthony
acffaada17 remove comment 2021-02-24 19:25:15 +00:00
Anthony
6280fde9f5 v2.6.0 updates 2021-02-24 19:11:47 +00:00
Anthony
85d47226ee remove unused import 2021-02-21 22:49:50 +00:00
Anthony
ae433b9e83 v2.5.1 updates 2021-02-21 22:43:50 +00:00
Anthony
0968caf300 v2.5.0 - Ability to add image placeholders on products + more 2020-12-24 00:02:39 +00:00
Anthony Gordon
6106e18de9
Update CHANGELOG.md 2020-12-20 21:32:25 +00:00
Anthony
51823b0f43 Merge branch 'master' of https://github.com/woosignal/flutter-woocommerce-app 2020-12-20 21:29:34 +00:00
Anthony
1bc7f3c482 v2.4.1 - Dependency updates and bug fixes 2020-12-20 21:27:42 +00:00
Anthony Gordon
df529e3dc2
Update labelconfig.dart 2020-12-02 21:29:10 +00:00
Anthony
76dd477ee9 Merge branch 'master' of https://bitbucket.org/woosignal22/dev-flutter-woocommerce-app 2020-11-19 13:57:19 +00:00
Anthony Gordon
dbe925b5a5 .gitignore edited online with Bitbucket 2020-11-19 13:48:37 +00:00
Anthony
4e605bb8c4 v2.4.0 Option to disable shipping in config 2020-11-19 13:37:47 +00:00
Anthony Gordon
e4dbbf7520 Initial commit 2020-11-19 13:00:04 +00:00
Anthony
b2df6c5224 v2.3.0 updates, dependancy version bump and bug fixes 2020-11-18 20:04:21 +00:00
Anthony Gordon
cdb34c7b8d version bump 2020-10-30 22:14:08 +00:00
Anthony Gordon
723f626885 v2.2.2 tweaks and dependency updates 2020-10-30 22:07:40 +00:00
Anthony
88547a1c73 Update README.md 2020-10-22 22:24:25 +01:00
Anthony
5ba0794d8f update to changelog 2020-10-22 22:21:15 +01:00
Anthony
f0bd290fa7 version v2.2.1 - version bump for plugins & minimum deployment ios13 2020-10-22 22:18:53 +01:00
274 changed files with 16708 additions and 9522 deletions

3
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -1,6 +1,6 @@
BSD 2-Clause License
Copyright (c) 2019, Woosignal
Copyright (c) 2022, Woosignal
All rights reserved.
Redistribution and use in source and binary forms, with or without

58
LabelStoreMax/.env Normal file
View File

@ -0,0 +1,58 @@
# *<! ------ App ------!>*
APP_NAME="Raster"
APP_ENV="local"
APP_DEBUG="true"
APP_URL="https://rasterdoo.com"
ASSET_PATH_PUBLIC="public/assets/"
ASSET_PATH_IMAGES="public/assets/images"
TIMEZONE="UTC"
LIGHT_THEME_ID="default_light_theme"
DARK_THEME_ID="default_dark_theme"
# *<! ------ Language ------!>*
DEFAULT_LOCALE="en"
# supports: "en" (English), "es" (Spanish), "fr" (French), "hi" (Hindi), "it" (Italian), "pt" (Portuguese) or "zh" (Simplified Chinese)
# *<! ------ WooSignal Config ------!>*
APP_KEY="app_50818d11780aaba6b545076dea5b90"
# App key from WooSignal link: https://woosignal.com/dashboard
# *<! ------ STRIPE (OPTIONAL) ------!>*
STRIPE_ACCOUNT=null
# Stripe account key from WooSignal https://woosignal.com/dashboard
STRIPE_COUNTRY_CODE=null
# Alpha-2 country code list: https://www.iban.com/country-codes
STRIPE_LIVE_MODE=null
# Change to 'true' for live payments and update the "Environment for Stripe" here https://woosignal.com/dashboard
# *<! ------ PAYPAL (OPTIONAL) ------!>*
PAYPAL_ACCOUNT_EMAIL=null
# Your PayPal account email e.g. mystore@business.com
PAYPAL_LIVE_MODE=null
# Change to 'true' for live payments
PAYPAL_LOCALE=null
# Use BCP-47 code from this link https://developer.paypal.com/docs/api/reference/locale-codes/
# *<! ------ RAZORPAY (OPTIONAL) ------!>*
RAZORPAY_API_KEY=""
# *<! ------ EXTRAS ------!>*
PRODUCT_PLACEHOLDER_IMAGE="https://woosignal.com/images/woocommerce-placeholder.png"
# Sets the default placeholder image for products with no image
AUTH_USER_KEY="AUTH_USER"
FCM_ENABLED=null
ENCRYPT_KEY=null
ENCRYPT_SECRET=null

View File

@ -76,4 +76,6 @@
/ios/Podfile.lock
/ios/Podfile
.flutter-plugins-dependencies
.flutter-plugins-dependencies
.env

View File

@ -1,3 +1,348 @@
## [6.10.1] - 2023-08-28
* Refactor project for Nylo 5.x.
* Fix AndroidManifest splash screen
* Pubspec.yaml dependency updates
## [6.10.0] - 2023-08-21
* Small refactor to project
* Pubspec.yaml dependency updates
## [6.9.0] - 2023-07-13
* Pull firebase config via woosignal api
* New encrypt key and secret added to .env
* fix fetchRelated to return "publish" products
* Pubspec.yaml dependency updates
## [6.8.2] - 2023-07-04
* Update gradle + kotlin versions.
* Pubspec.yaml dependency updates.
## [6.8.1] - 2023-07-03
* Fix auth bug.
* Pubspec.yaml dependency updates.
## [6.8.0] - 2023-07-03
* UI fixes.
* Fix price on coupon page error alerts.
* Fix issue where IOS builds were not using the correct build version.
* Small refactor to the project.
* Pubspec.yaml dependency updates.
## [6.7.0] - 2023-06-20
* Refactor project for Nylo 5.x.
* New Firebase provider for FCM.
* Pubspec.yaml dependency updates.
## [6.6.2] - 2023-06-14
* Page bug fixes
* Pubspec.yaml dependency updates.
## [6.6.1] - 2023-05-28
* Refactor widgets + bug fixes
* Refactor extensions.dart
* Pubspec.yaml dependency updates.
## [6.6.0] - 2023-05-18
* Nylo v5.0.0 migration
* Refactor project
* Flutter v3.10.0 compatibility
## [6.5.1] - 2023-03-04
* New translation added.
## [6.5.0] - 2023-03-04
* When making payments via Stripe, it will now save the card for later.
* Small UI changes to the checkout confirmation page.
* New translation added.
* Pubspec.yaml dependency updates.
## [6.4.1] - 2023-02-23
* Upgrade to Nylo v4.1.3
* Small refactor to TextStyle
* Fix the ThemeColor.get helper method to support ColorStyles.
* Pubspec.yaml dependency updates
## [6.4.0] - 2023-01-06
* Upgrade to Nylo v4.0.0
* Update copyright
* Refactor wp_json_api metadata
* Pubspec.yaml dependency updates
## [6.3.1] - 2022-11-04
* Fix email address bug in customer_address_input.dart
## [6.3.0] - 2022-11-03
* Ability to add Menu Links to the drawer widget through the WooSignal dashboard
* Fix wording when a shipping zone cannot be found to "Shipping is not supported for your location, sorry"
* Update account shipping widget to be uniform with the checkout shipping widget
* When logged in, the `CheckoutDetailsPage` will now populate shipping info from the users account
* Small refactor to resources/pages
* Pubspec.yaml dependency updates
## [6.2.0] - 2022-09-23
* Migration to use Nylo v3.4.0
* Pubspec.yaml dependency updates
* Increase the minimum targetSdkVersion to 31
* Merge #51, #50, #47, #40, #39 and #38 by @jeanmatthieud
* UI changes to the search page for a nicer experience
* More translations added throughout the app
## [6.1.0] - 2022-07-09
* Add RazorPay
* Null safety tweaks to widgets
* Ability for users to delete their accounts using WP_JSON
* Pubspec.yaml dependency updates
## [6.0.0] - 2022-05-19
* Migrate to Nylo 3.x
* Null safety
* Min dart version 2.17
* Refactor product detail screen
* Pubspec.yaml dependency updates
## [5.8.0] - 2022-03-29
* Add phone number to customer input form
* Gradle version bump
* Pubspec.yaml dependency updates
## [5.7.3] - 2022-02-21
* Fix builds for Flutter 2.10.2
* Fix setState for product upsells
* ext.kotlin_version version bump
## [5.7.2] - 2022-02-12
* Button UI loading state added
* Fix payments on Android for Stripe
* v2 embedding for Android
## [5.7.1] - 2022-02-07
* Refactor account order detail page
* Fix continuous loading if a user has no orders
* New styling for tabs in the account order detail page
* Small refactor to controller loading
* Handle invalid tokens on the account page
* Pubspec.yaml dependency updates
## [5.7.0] - 2022-01-29
* Refactor product detail page
* View HTML in description on the product detail page
* Allow upsell products to be viewed on the Product detail page (if enabled)
* Allow related products to be viewed on the Product detail page (if enabled)
* Allow product reviews to be view on the product page (if enabled)
* Flutter format in /resources
* Pubspec.yaml dependency updates
## [5.6.2] - 2022-01-07
* Fix null return in CheckoutShippingTypeWidget
* Add resizeToAvoidBottomInset: false to notic and compo themes
## [5.6.1] - 2022-01-05
* Fix bug with bottom navigation bar in Notic theme
## [5.6.0] - 2022-01-03
* Fix bug with banner in Mello theme
* Support new languages - Dutch (nl) and Turkish (tr)
* Refactor as per dart analysis
* Ability to add coupons
* Wishlist
* New theme "Compo"
* Analysis options added
* Code cleanup
* Pubspec.yaml dependency updates
## [5.5.2] - 2021-12-18
* Fix continuous loading on categories screen
* Add theme color to buttons
* Code cleanup
## [5.5.1] - 2021-12-18
* Fix bug if store connection fails
* Minify default_shipping.json
* Pubspec.yaml dependency updates
## [5.5.0] - 2021-12-17
* Change font from WooSignal dashboard
* Change font colors from WooSignal dashboard
* Add social media links from WooSignal dashboard
* Notification stubs added to boot.dart
* Upgrade WooSignal API to v3.0.0
* Pubspec.yaml dependency updates
## [5.4.0] - 2021-12-10
* New localization keys added
* Refactor as per Dart Analysis
* Upgrade to latest Nylo version
* Pubspec.yaml dependency updates
## [5.3.1] - 2021-11-17
* Fix shipping method not handling async call
* Update UI for customer_countries page
* Pubspec.yaml dependency updates
## [5.3.0] - 2021-11-02
* Ability to update payment providers via WooSignal Dashboard
* Pubspec.yaml dependency updates
## [5.2.1] - 2021-10-13
* Bug fixes
## [5.2.0] - 2021-10-12
* Migrate to Nylo 2.1.0
* Use flutter_stripe library for payments
* Remove RazorPay for build fails
* Pubspec.yaml dependency updates
* Android compileSdkVersion 30
* Bug fixes
## [5.1.0] - 2021-07-19
* Add support for simplified Chinese locale (zh)
* Add ability to change language from WooSignal dashboard
## [5.0.7] - 2021-07-08
* Pubspec.yaml dependency updates
## [5.0.6] - 2021-07-08
* Refactor project to use Nylo v1.0.0
* Pubspec.yaml dependency updates
## [5.0.5] - 2021-05-03
* Add NSCameraUsageDescription meta to plist for IOS
## [5.0.4] - 2021-04-30
* Fix IOS build failing with Stripe
* Pubspec.yaml dependency updates
## [5.0.3] - 2021-04-27
* Fix issue account page when logged in for Notic theme
* Small tweak to helpers.dart
* Pubspec.yaml dependency updates
## [5.0.2] - 2021-04-17
* Fix issue with PayPal checkout when using different locales
* Fix nested `trans` methods
* PAYPAL_LOCALE added to .env file
## [5.0.1] - 2021-04-13
* Update to app_payment_gateways
* Pubspec.yaml dependency updates
## [5.0.0] - 2021-04-11
* Major release
* Null safety libraries added
* PayPal Payment Gateway Added
* New theme customization
* Fixed Drawer Widget when using Light/Dark mode
* New config file for currency
* Pubspec.yaml dependency updates
* Bug fixes
## [4.0.0] - 2021-03-28
* Major release
* New config structure
* Dark mode added
* Menu drawer added
* Project refactor to use Nylo Framework
* Performance boost
* Bug fixes
* Dart code formatted
* Pubspec.yaml dependency updates
## [3.0.0] - 2021-03-08
* Major release
* Flutter 2.0.0+ support
* Manage app from WooSignal
* Code tidy up
* Bug fixes
## [2.6.0] - 2021-02-24
* Ability to manage affiliate products
* Refreshed design for checkout details screen
* New logic to manage shipping better
* Bug fixes
## [2.5.1] - 2021-02-21
* Pubspec.yaml dependency updates
* Bug fixes
## [2.5.0] - 2020-12-23
* Ability to add image placeholders on products
* Dart code formatted
* Pubspec.yaml dependency updates
## [2.4.1] - 2020-12-20
* Fix subtotal bug on order creation
* Pubspec.yaml dependency updates
## [2.4.0] - 2020-11-19
* Option to disable shipping in config
## [2.3.0] - 2020-11-18
* Option to set if prices include tax
* Pubspec.yaml dependency updates
* Bug fixes
## [2.2.2] - 2020-10-30
* Bug fix for Android build
* Pubspec.yaml dependency updates
## [2.2.1] - 2020-10-22
* Minimum IOS deployment now IOS13
* Pubspec.yaml dependency updates
## [2.2.0] - 2020-10-07
* Flutter 1.22.0 update

25
LabelStoreMax/LICENSE Normal file
View File

@ -0,0 +1,25 @@
BSD 2-Clause License
Copyright (c) 2023, WooSignal Ltd
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,30 +1,59 @@
# label_storemax
<p align="center">
<img width="200" height="125" src="https://woosignal.com/images/woosignal_logo_stripe_blue.png" alt="WooSignal logo">
</p>
LabelStoreMAX
Created by Anthony Gordon.
# WooCommerce App: Label StoreMax
[Official WooSignal App Template](https://woosignal.com)
### Label StoreMax
## Getting Started
[Official WooSignal WooCommerce App](https://woosignal.com)
1. Connect your WooCommerce store
Click connect above to link your WooCommerce store to our site, all you'll need to do is add your url to provide WooSignal access.
![alt text](https://woosignal.com/images/woocommerce_app_preview_2.png "WooCommerce app checkout experience")
2. Generate an AppKey for the app
Next go to [manage apps page](https://woosignal.com/dashboard/apps) and click "Generate new key" for your app and copy it to somewhere safe, it's important that you don't share is with anyone.
![alt text](https://woosignal.com/images/woocommerce_app_preview_3.png "WooCommerce app Login/Register for customers via WordPress")
3. Add the AppKey to the project
Look for the labelconfig.dart file and change the AppKey to the one your generated.
![alt text](https://woosignal.com/images/woocommerce_app_preview_1.png "Full integration with WooCommerce")
4. Build and run the app
If you have done all of the above you should have a basic setup to get started, you'll see products from your WooCommerce store appearing in the app.
![alt text](https://woosignal.com/images/mock_dark_light_mode.png "Dark and light mode shopping")
5. Uploading to the App Store/Google Play Store?
Uploading your app release to IOS [IOS guide](https://flutter.dev/docs/deployment/ios)
### About Label StoreMax
Uploading your app release to Android [Android guide](https://flutter.dev/docs/deployment/android)
Label StoreMax is an App Template for WooCommerce stores. Your customers will be able to browse products, make orders and login via WordPress. You can also customise the look and feel of the app in the WooSignal dashboard.
## Need help uploading the app?
Check out our YouTube series to help you with uploading the app and other tips
You can also upload the app to the IOS app store and Google play store using Flutter.
[Support](https://woosignal.com/support)
### Requirements
- WooCommerce Store 3.5+
- Android Studio/VSCode (for running the app)
- Flutter installed
### Getting Started
1. Download/Clone this repository
2. Sign up for free on [WooSignal](https://woosignal.com) and link your WooCommerce store
3. Add your app key into the **.env** file and hit play (with Android Studio) to build the app 🥳
Full documentation this available [here](https://woosignal.com/docs/app/label-storemax)
## Some features integrated
- App Store Ready
- Simple configuration
- Browse products, make orders, customer login (via WordPress)
- Change app name, logo, customize default language, currency + more
- Light and dark mode
- Stripe, Cash On Delivery, PayPal, RazorPay
- Localized for en, es, pt, it, hi, fr, zh, tr, nl, de
- Orders show as normal in WooCommerce
## Security Vulnerabilities
If you discover a security vulnerability within WooSignal, please send an e-mail support@woosignal.com
## Uploading to the app stores
- [IOS - Deployment](https://flutter.dev/docs/deployment/ios)
- [Android - Deployment](https://flutter.dev/docs/deployment/android)
## Licence
The Label StoreMax framework is open-sourced software licensed under the MIT license.

View File

@ -0,0 +1,30 @@
# This file configures the static analysis results for your project (errors,
# warnings, and lints).
#
# This enables the 'recommended' set of lints from `package:lints`.
# This set helps identify many issues that may lead to problems when running
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
# style and format.
#
# If you want a smaller set of lints you can change this to specify
# 'package:lints/core.yaml'. These are just the most critical lints
# (the recommended set includes the core lints).
# The core lints are also what is used by pub.dev for scoring packages.
include: package:lints/recommended.yaml
# Uncomment the following section to specify additional rules.
# linter:
# rules:
# - camel_case_types
# analyzer:
# exclude:
# - path/to/excluded/files/**
# For more information about the core and recommended set of lints, see
# https://dart.dev/go/core-lints
# For additional information about configuring this file, see
# https://dart.dev/guides/language/analysis-options

View File

@ -25,14 +25,12 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 29
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
compileSdkVersion 33
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@ -45,35 +43,17 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.woosignal.android"
minSdkVersion 19
targetSdkVersion 29
minSdkVersion 21
targetSdkVersion 33
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
// Uncomment "signingConfig signingConfigs.release"
// Remove "signingConfig signingConfigs.debug"
// When you're ready to build for release
// Also check out https://flutter.dev/docs/deployment/android
// Set the key.properties when building apk or appbundle
// signingConfig signingConfigs.release
signingConfig signingConfigs.debug
}
}
@ -85,5 +65,5 @@ flutter {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:multidex:1.0.3'
implementation "androidx.multidex:multidex:2.0.1"
}

View File

@ -1,9 +1,10 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woosignal.label_storemax">
package="com.woosignal.android">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE"/>
</manifest>

View File

@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woosignal.label_storemax">
package="com.woosignal.android">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
@ -8,19 +8,21 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE"/>
<application
android:name="io.flutter.app.FlutterApplication"
android:label="Label StoreMax"
android:name="${applicationName}"
android:label="Raster Knjizara"
android:icon="@mipmap/launcher_icon">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
android:exported="true">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
@ -29,27 +31,11 @@
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="stripesdk"
android:host="3ds.stripesdk.io" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->

View File

@ -0,0 +1,7 @@
package com.woosignal.android
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.android.FlutterFragmentActivity
class MainActivity: FlutterFragmentActivity() {
}

View File

@ -1,6 +0,0 @@
package com.woosignal.label_storemax
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>

View File

@ -1,9 +1,10 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woosignal.label_storemax">
package="com.woosignal.android">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE"/>
</manifest>

View File

@ -1,15 +1,12 @@
buildscript {
ext.kotlin_version = '1.3.50'
ext.kotlin_version = '1.7.10'
repositories {
google()
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.android.tools.build:gradle:7.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@ -29,6 +26,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
android.enableR8=true

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

View File

@ -1,93 +0,0 @@
Copyright (c) 2016 by Red Hat, Inc. All rights reserved.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -1,93 +0,0 @@
Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name Source.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

View File

@ -1,12 +0,0 @@
# APP CONFIGURATION
# Updates the package name and display name for your app
# Run in the terminal: "flutter pub run flutter_application_id:main"
flutter_application_id:
android:
id: "com.woosignal.label-android"
name: "Label StoreMax"
ios:
id: "com.woosignal.label-ios"
name: "Label StoreMax"

32
LabelStoreMax/ios/.gitignore vendored Normal file
View File

@ -0,0 +1,32 @@
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3

View File

@ -1 +1 @@
b98ea22bbb9eb082f24a2f56c80c348a
ed7b4bd8f32e5ea11f5ee09951e3fca9

View File

@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
<string>11.0</string>
</dict>
</plist>

View File

@ -1,18 +0,0 @@
#
# NOTE: This podspec is NOT to be published. It is only used as a local source!
#
Pod::Spec.new do |s|
s.name = 'Flutter'
s.version = '1.0.0'
s.summary = 'High-performance, high-fidelity mobile apps.'
s.description = <<-DESC
Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS.
DESC
s.homepage = 'https://flutter.io'
s.license = { :type => 'MIT' }
s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.vendored_frameworks = 'Flutter.framework'
end

49
LabelStoreMax/ios/Podfile Normal file
View File

@ -0,0 +1,49 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
end
end
end
end

View File

@ -3,18 +3,17 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
D86A9FCC0FDE40E749D2F6CC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41358261A3745FB464B72CE9 /* Pods_Runner.framework */; };
BC760DE05EE229D80D672CAC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 320EF84A9034996DB0DD16A0 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -31,15 +30,15 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0CCBA7AF2BAD9552DF0067C7 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
1BA921103C32B79944361E71 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
320EF84A9034996DB0DD16A0 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
41358261A3745FB464B72CE9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
87F77F819B61E54C61672D11 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
857C6B0641385D9A8CF0C7D1 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -47,7 +46,7 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
E107F71D46A779B424A08899 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
DF4BE73D09DD6B58A2617025 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -55,21 +54,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
D86A9FCC0FDE40E749D2F6CC /* Pods_Runner.framework in Frameworks */,
BC760DE05EE229D80D672CAC /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
3E3E1C811B47477CF4A9A315 /* Frameworks */ = {
isa = PBXGroup;
children = (
41358261A3745FB464B72CE9 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@ -87,8 +78,8 @@
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
A759088B62C60268D25F841F /* Pods */,
3E3E1C811B47477CF4A9A315 /* Frameworks */,
B6D068D2059A697428792520 /* Pods */,
C6C43B1429552E4F1EDF143D /* Frameworks */,
);
sourceTree = "<group>";
};
@ -107,7 +98,6 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
97C146F11CF9000F007C117D /* Supporting Files */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
@ -116,23 +106,24 @@
path = Runner;
sourceTree = "<group>";
};
97C146F11CF9000F007C117D /* Supporting Files */ = {
B6D068D2059A697428792520 /* Pods */ = {
isa = PBXGroup;
children = (
);
name = "Supporting Files";
sourceTree = "<group>";
};
A759088B62C60268D25F841F /* Pods */ = {
isa = PBXGroup;
children = (
E107F71D46A779B424A08899 /* Pods-Runner.debug.xcconfig */,
87F77F819B61E54C61672D11 /* Pods-Runner.release.xcconfig */,
1BA921103C32B79944361E71 /* Pods-Runner.profile.xcconfig */,
0CCBA7AF2BAD9552DF0067C7 /* Pods-Runner.debug.xcconfig */,
857C6B0641385D9A8CF0C7D1 /* Pods-Runner.release.xcconfig */,
DF4BE73D09DD6B58A2617025 /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
C6C43B1429552E4F1EDF143D /* Frameworks */ = {
isa = PBXGroup;
children = (
320EF84A9034996DB0DD16A0 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -140,14 +131,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
7A4371A0EF7EDBC9E03FB2D7 /* [CP] Check Pods Manifest.lock */,
C132651D93B0648B694CECED /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
C10A9485E174060F4694B3D0 /* [CP] Embed Pods Frameworks */,
BEC85B489BA218F6E1950BBC /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@ -164,17 +155,17 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = "The Chromium Authors";
LastUpgradeCheck = 1430;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 0910;
LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 3.2";
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@ -198,7 +189,6 @@
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
@ -209,19 +199,53 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed\n/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin\n";
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
7A4371A0EF7EDBC9E03FB2D7 /* [CP] Check Pods Manifest.lock */ = {
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
BEC85B489BA218F6E1950BBC /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
C132651D93B0648B694CECED /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -243,66 +267,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
C10A9485E174060F4694B3D0 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
"${PODS_ROOT}/../Flutter/Flutter.framework",
"${BUILT_PRODUCTS_DIR}/Stripe/Stripe.framework",
"${BUILT_PRODUCTS_DIR}/device_info/device_info.framework",
"${BUILT_PRODUCTS_DIR}/flutter_money_formatter/flutter_money_formatter.framework",
"${BUILT_PRODUCTS_DIR}/flutter_web_browser/flutter_web_browser.framework",
"${BUILT_PRODUCTS_DIR}/hexcolor/hexcolor.framework",
"${BUILT_PRODUCTS_DIR}/package_info/package_info.framework",
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
"${PODS_ROOT}/razorpay-pod/Pod/Razorpay.framework",
"${BUILT_PRODUCTS_DIR}/razorpay_flutter/razorpay_flutter.framework",
"${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
"${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework",
"${BUILT_PRODUCTS_DIR}/woosignal_stripe/woosignal_stripe.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Stripe.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_money_formatter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_web_browser.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hexcolor.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Razorpay.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/razorpay_flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/woosignal_stripe.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -378,9 +342,10 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
@ -400,16 +365,19 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.woosignal.label-StoreMax";
PRODUCT_NAME = Runner;
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
@ -462,7 +430,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -511,10 +479,12 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
@ -534,17 +504,20 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.woosignal.label-StoreMax";
PRODUCT_NAME = Runner;
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
@ -564,16 +537,19 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.woosignal.label-StoreMax";
PRODUCT_NAME = Runner;
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.flutter.app;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};

View File

@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
location = "self:">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1430"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -27,6 +27,8 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
@ -36,8 +38,8 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -59,6 +61,8 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -3,7 +3,6 @@ import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
@ -11,5 +10,4 @@ import Flutter
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
@ -15,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@ -32,14 +34,20 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string>13.0</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSCameraUsageDescription</key>
<string>You can take photos of your payment details.</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
@ -58,4 +66,4 @@
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
</plist>

View File

@ -80,6 +80,7 @@
"Shipping is not supported for your country, sorry": "Der Versand wird für Ihr Land leider nicht unterstützt",
"Search": "Suche",
"Debit or Credit Card": "Debit- oder Kreditkarte",
"Cash on delivery": "Barzahlung bei Lieferung",
"Oops, something went wrong": "Ups! Irgendwas lief schief",
"Tax": "MwSt",
"No results": "Keine Ergebnisse",
@ -171,5 +172,62 @@
"No more orders": "Keine Bestellungen mehr",
"Account updated": "Konto aktualisiert",
"Spend a minimum of": "Geben Sie mindestens ein",
"for": "zum"
"for": "zum",
"Buy Product": "Produkt kaufen",
"Retry": "Wiederholen",
"Retry later": "Versuchen Sie es später erneut",
"Light Mode": "Lichtmodus",
"Dark Mode": "Dunkler Modus",
"PayPal Checkout": "PayPal Checkout",
"Processing Payment": "Zahlung verarbeiten",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Bitte warten Sie, Ihre Bestellung wird bearbeitet und Sie werden auf die PayPal-Website weitergeleitet.",
"If you are not automatically redirected to PayPal within 5 seconds": "Wenn Sie nicht innerhalb von 5 Sekunden automatisch zu PayPal weitergeleitet werden",
"Payment Cancelled": "Zahlung storniert",
"The payment has been cancelled": "Die Zahlung wurde storniert",
"Must have": "Haben müssen",
"Our selection of new items": "Unsere Auswahl an Neuheiten",
"Register": "Registrieren",
"No payment methods are available": "Es sind keine Zahlungsmethoden verfügbar",
"Please enter a valid billing email": "Bitte geben Sie eine gültige Rechnungs-E-Mail-Adresse ein",
"Please enter a valid shipping email": "Bitte geben Sie eine gültige Versand-E-Mail ein",
"Free postage": "Portofrei",
"PROCESSING": "WIRD BEARBEITET",
"Social": "Sozial",
"Please enter coupon to redeem": "Bitte Coupon zum Einlösen eingeben",
"Coupon": "Coupon",
"Apply": "Sich bewerben",
"Apply Coupon": "Gutschein anwenden",
"Added to checkout": "Zur Kasse hinzugefügt",
"Redeem Coupon": "Gutschein einlösen",
"Add coupon code": "Gutscheincode hinzufügen",
"Coupon not found": "Gutschein nicht gefunden",
"Sorry, this coupon can not be used with your cart": "Dieser Gutschein kann leider nicht mit Ihrem Warenkorb verwendet werden",
"You cannot redeem this coupon": "Sie können diesen Gutschein nicht einlösen",
"This coupon has expired": "Dieser Gutschein ist abgelaufen",
"Usage limit has been reached": "Nutzungslimit wurde erreicht",
"View All": "Alle ansehen",
"Wishlist": "Wunschzettel",
"No items found": "Keine Elemente gefunden",
"This product has been removed from your wishlist": "Dieses Produkt wurde von Ihrer Wunschliste entfernt",
"This product has been added to your wishlist": "Dieses Produkt wurde Ihrer Wunschliste hinzugefügt",
"Spend a minimum of minimumAmount to redeem": "Verbringen Sie mindestens {{minimumAmount}} einlösen",
"Spend less than maximumAmount to redeem": "Geben Sie weniger aus als {{maximumAmount}} einlösen",
"Related products": "Verwandte Produkte",
"Reviews": "Bewertungen",
"There are no reviews yet.": "Es gibt noch keine Bewertungen.",
"More": "Mehr",
"You may also like": "Sie können auch mögen",
"Leave a review": "Hinterlassen Sie eine Bewertung",
"How would you rate": "Wie beurteilen Sie",
"Submit": "einreichen",
"Your review has been submitted": "Ihre Bewertung wurde übermittelt",
"Delete Account": "Konto löschen",
"Phone Number": "Telefonnummer",
"Delete your account": "Lösche deinen Account",
"Are you sure?": "Bist du dir sicher?",
"Yes, delete my account": "Ja, lösche mein Konto",
"Account deleted": "Konto gelöscht",
"Shipping is not supported for your location, sorry": "Der Versand wird für Ihren Standort nicht unterstützt, tut mir leid",
"Order Summary": "Bestellübersicht",
"By completing this order, I agree to all": "Mit Abschluss dieser Bestellung stimme ich allem zu"
}

View File

@ -80,6 +80,7 @@
"Shipping is not supported for your country, sorry": "Shipping is not supported for your country, sorry",
"Search": "Search",
"Debit or Credit Card": "Debit or Credit Card",
"Cash on delivery": "Cash on delivery",
"Oops, something went wrong": "Oops, something went wrong",
"Tax": "Tax",
"No results": "No results",
@ -171,5 +172,62 @@
"No more orders": "No more orders",
"Account updated": "Account updated",
"Spend a minimum of": "Spend a minimum of",
"for": "for"
"for": "for",
"Buy Product": "Buy Product",
"Retry": "Retry",
"Retry later": "Retry later",
"Light Mode": "Light Mode",
"Dark Mode": "Dark Mode",
"PayPal Checkout": "PayPal Checkout",
"Processing Payment": "Processing Payment",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Please wait, your order is being processed and you will be redirected to the PayPal website.",
"If you are not automatically redirected to PayPal within 5 seconds": "If you are not automatically redirected to PayPal within 5 seconds",
"Payment Cancelled": "Payment Cancelled",
"The payment has been cancelled": "The payment has been cancelled",
"Must have": "Must have",
"Our selection of new items": "Our selection of new items",
"Register": "Register",
"No payment methods are available": "No payment methods are available",
"Please enter a valid billing email": "Please enter a valid billing email",
"Please enter a valid shipping email": "Please enter a valid shipping email",
"Free postage": "Free postage",
"PROCESSING": "PROCESSING",
"Social": "Social",
"Please enter coupon to redeem": "Please enter coupon to redeem",
"Coupon": "Coupon",
"Apply": "Apply",
"Apply Coupon": "Apply Coupon",
"Spend a minimum of minimumAmount to redeem": "Spend a minimum of {{minimumAmount}} to redeem",
"Spend less than maximumAmount to redeem": "Spend less than {{maximumAmount}} to redeem",
"Added to checkout": "Added to checkout",
"Redeem Coupon": "Redeem Coupon",
"Add coupon code": "Add coupon code",
"Coupon not found": "Coupon not found",
"Sorry, this coupon can not be used with your cart": "Sorry, this coupon can not be used with your cart",
"You cannot redeem this coupon": "You cannot redeem this coupon",
"This coupon has expired": "This coupon has expired",
"Usage limit has been reached": "Usage limit has been reached",
"View All": "View All",
"Wishlist": "Wishlist",
"No items found": "No items found",
"This product has been removed from your wishlist": "This product has been removed from your wishlist",
"This product has been added to your wishlist": "This product has been added to your wishlist",
"Related products": "Related products",
"Reviews": "Reviews",
"There are no reviews yet.": "There are no reviews yet.",
"More": "More",
"You may also like": "You may also like",
"Leave a review": "Leave a review",
"How would you rate": "How would you rate",
"Submit": "Submit",
"Your review has been submitted": "Your review has been submitted",
"Delete Account": "Delete Account",
"Phone Number": "Phone Number",
"Delete your account": "Delete your account",
"Are you sure?": "Are you sure?",
"Yes, delete my account": "Yes, delete my account",
"Account deleted": "Account deleted",
"Shipping is not supported for your location, sorry": "Shipping is not supported for your location, sorry",
"Order Summary": "Order Summary",
"By completing this order, I agree to all": "By completing this order, I agree to all"
}

View File

@ -80,6 +80,7 @@
"Shipping is not supported for your country, sorry": "El envío no es compatible con su país, lo siento",
"Search": "Buscar",
"Debit or Credit Card": "Tarjeta de débito o crédito",
"Cash on delivery": "Contra reembolso",
"Oops, something went wrong": "Huy! Algo salió mal",
"Tax": "Impuesto",
"No results": "No hay resultados",
@ -171,5 +172,62 @@
"No more orders": "No mas pedidos",
"Account updated": "Cuenta actualizada",
"Spend a minimum of": "Gasta un mínimo de",
"for": "para"
"for": "para",
"Buy Product": "Comprar producto",
"Retry": "Rever",
"Retry later": "Reintentar más tarde",
"Light Mode": "Modo de luz",
"Dark Mode": "Modo oscuro",
"PayPal Checkout": "Pago con PayPal",
"Processing Payment": "Procesando el pago",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Espere, su pedido se esta procesando y sera redirigido al sitio web de PayPal.",
"If you are not automatically redirected to PayPal within 5 seconds": "Si no se le redirige automaticamente a PayPal en 5 segundos",
"Payment Cancelled": "Pago cancelado",
"The payment has been cancelled": "El pago ha sido cancelado",
"Must have": "Debe tener",
"Our selection of new items": "Nuestra selección de novedades",
"Register": "Registrarse",
"No payment methods are available": "No hay métodos de pago disponibles.",
"Please enter a valid billing email": "Ingrese un correo electrónico de facturación válido",
"Please enter a valid shipping email": "Ingrese un correo electrónico de envío válido",
"Free postage": "Gastos de envío gratis",
"PROCESSING": "PROCESANDO",
"Social": "Social",
"Please enter coupon to redeem": "Ingrese el cupón para canjear",
"Coupon": "Cupón",
"Apply": "Solicitar",
"Apply Coupon": "Aplicar cupón",
"Added to checkout": "Agregado al pago",
"Redeem Coupon": "Canjear cupón",
"Add coupon code": "Agregar código de cupón",
"Coupon not found": "Cupón no encontrado",
"Sorry, this coupon can not be used with your cart": "Lo sentimos, este cupón no se puede utilizar con su carrito",
"You cannot redeem this coupon": "No puedes canjear este cupón",
"This coupon has expired": "Este cupón ha caducado",
"Usage limit has been reached": "Se alcanzó el límite de uso",
"View All": "Ver todo",
"Wishlist": "Lista de deseos",
"No items found": "No se encontraron artículos",
"This product has been removed from your wishlist": "Este producto ha sido eliminado de tu lista de deseos.",
"This product has been added to your wishlist": "Este producto ha sido añadido a su lista de deseos",
"Spend a minimum of minimumAmount to redeem": "Gasta un mínimo de {{minimumAmount}} para redimir",
"Spend less than maximumAmount to redeem": "Gasta menos de {{maximumAmount}} para redimir",
"Related products": "Productos relacionados",
"Reviews": "Reseñas",
"There are no reviews yet.": "Aún no hay reseñas.",
"More": "Más",
"You may also like": "También te puede interesar",
"Leave a review": "Dejar un comentario",
"How would you rate": "Cómo calificarías",
"Submit": "Entregar",
"Your review has been submitted": "Tu reseña ha sido enviada",
"Delete Account": "Borrar cuenta",
"Phone Number": "Número de teléfono",
"Delete your account": "eliminar su cuenta",
"Are you sure?": "¿Está seguro?",
"Yes, delete my account": "Sí, eliminar mi cuenta",
"Account deleted": "Cuenta borrada",
"Shipping is not supported for your location, sorry": "El envío no es compatible para su ubicación, lo siento",
"Order Summary": "Resumen del pedido",
"By completing this order, I agree to all": "Al completar este pedido, acepto todos"
}

View File

@ -1,19 +1,19 @@
{
"Categories": "Les catégories",
"Categories": "Catégories",
"Shop": "Boutique",
"Newest": "Le plus récent",
"Browse categories": "Parcourir les catégories",
"Cart": "Chariot",
"You need items in your cart to checkout": "Vous avez besoin d'articles dans votre panier pour passer à la caisse",
"Cart": "Panier",
"You need items in your cart to checkout": "Ajoutez d'abord des articles à votre panier !",
"Updated": "Mise à jour",
"Item removed": "Élément supprimé",
"Success": "Succès",
"Cart cleared": "Panier effacé",
"Success": "C'est fait !",
"Cart cleared": "Panier vidé",
"Shopping Cart": "Panier",
"Clear Cart": "Vider le panier",
"Empty Basket": "Panier vide",
"PROCEED TO CHECKOUT": "PASSER À LA CAISSE",
"Browse": "Feuilleter",
"PROCEED TO CHECKOUT": "PASSER AU PAIEMENT",
"Browse": "Parcourir",
"Search results for": "Résultats de recherche pour",
"Select a": "Sélectionner un",
"Added to cart": "Ajouté au panier",
@ -22,53 +22,53 @@
"Choose your options": "Choisissez vos options",
"Out of stock": "En rupture de stock",
"In Stock": "En stock",
"Add to cart": "Ajouter au chariot",
"Oops": "Oops",
"Add to cart": "Ajouter au panier",
"Oops": "Oups",
"Please select valid options first": "Veuillez d'abord sélectionner les options valides",
"Sorry": "Désolé",
"This item is not in stock": "Cet article n'est pas en réserve",
"Description": "La description",
"This item is not in stock": "Cet article n'est pas en stock",
"Description": "Description",
"Full description": "Description complète",
"ADD TO CART": "AJOUTER AU CHARIOT",
"ADD TO CART": "AJOUTER AU PANIER",
"This item is out of stock": "L'article n'est plus en stock",
"Add your shipping details first": "Ajoutez d'abord vos détails d'expédition",
"Checkout": "Check-out",
"Add your shipping details first": "Ajoutez d'abord vos informations d'expédition",
"Checkout": "Commander",
"Billing/shipping details": "Détails de facturation / expédition",
"Add billing & shipping details": "Ajouter les détails de facturation et d'expédition",
"Payment method": "Mode de paiement",
"Pay with": "Payer avec",
"Select a payment method": "Choisissez une méthode de paiement",
"Shipping selected": "Livraison sélectionnée",
"Select shipping": "Sélectionnez Livraison",
"Select shipping": "Sélectionnez le mode de livraison",
"Select a shipping option": "Sélectionnez une option d'expédition",
"Shipping fee": "Frais d'expédition",
"Subtotal": "Total",
"Total": "Total",
"CHECKOUT": "CHECK-OUT",
"One moment": "Un moment",
"CHECKOUT": "COMMANDER",
"One moment": "Veuillez patienter",
"Please select add your billing/shipping address to proceed": "Veuillez sélectionner ajouter votre adresse de facturation / expédition pour continuer",
"Your billing/shipping details are incomplete": "Vos coordonnées de facturation / expédition sont incomplètes",
"Please select a shipping method to proceed": "Veuillez sélectionner une méthode d'expédition pour continuer",
"Please select a payment method to proceed": "Veuillez sélectionner un mode de paiement pour continuer",
"Something went wrong, please contact our store": "Quelque chose s'est mal passé, veuillez contacter notre magasin",
"Something went wrong, please contact our store": "Quelque chose s'est mal passé, veuillez contacter notre équipe",
"Error": "Erreur",
"Order Status": "Statut de la commande",
"Thank You!": "Merci!",
"Thank You!": "Merci !",
"Your transaction details": "Vos détails de transaction",
"Order Ref": "Réf commande",
"Items": "Articles",
"Back to Home": "De retour à la maison",
"Orders": "Ordres",
"Back to Home": "Retourner à l'accueil",
"Orders": "Commandes",
"Billing & Shipping Details": "Détails de facturation et d'expédition",
"First Name": "Prénom",
"Last Name": "Nom de famille",
"Address Line": "Ligne d'adresse",
"Address Line": "Adresse",
"City": "Ville",
"Postal code": "Code postal",
"Email address": "Adresse électronique",
"Selected": "Choisi",
"Selected": "Sélectionné",
"Select country": "Choisissez le pays",
"Remember my details": "Rappelez-vous mes coordonnées",
"Remember my details": "Retenir mes coordonnées",
"USE SHIPPING ADDRESS": "UTILISER L'ADRESSE D'EXPÉDITION",
"About": "À propos de",
"Privacy policy": "Politique de confidentialité",
@ -76,12 +76,13 @@
"Version": "Version",
"Payment Method": "Mode de paiement",
"CANCEL": "ANNULER",
"Shipping Methods": "méthodes de livraison",
"Shipping Methods": "Méthodes de livraison",
"Shipping is not supported for your country, sorry": "La livraison n'est pas prise en charge pour votre pays, désolé",
"Search": "Chercher",
"Debit or Credit Card": "Carte de débit ou de crédit",
"Cash on delivery": "Paiement à la livraison",
"Oops, something went wrong": "Oups, quelque chose s'est mal passé",
"Tax": "Impôt",
"Tax": "TVA",
"No results": "Aucun résultat",
"There is an item out of stock": "Il y a un article en rupture de stock",
"Maximum stock reached": "Stock maximum atteint",
@ -98,35 +99,35 @@
"Create an account": "Créer un compte",
"Login": "S'identifier",
"Password": "Mot de passe",
"Oops!": "Oops!",
"Oops!": "Oups !",
"Invalid login credentials": "Authentification invalide",
"That email address is not valid": "Cette adresse e-mail n'est pas valide",
"Password must be a min 6 characters": "Le mot de passe doit contenir au moins 6 caractères",
"Please check your details": "S'il vous plaît vérifier vos informations",
"Please check your details": "Veuillez vérifier vos informations",
"Invalid": "Invalide",
"Actions": "Actions",
"View Terms and Conditions or Privacy policy": "Afficher les conditions générales ou la politique de confidentialité",
"Terms and Conditions": "Termes et conditions",
"Terms and Conditions": "Mentions légales",
"Privacy Policy": "Politique de confidentialité",
"terms and conditions": "Termes et conditions",
"terms and conditions": "mentions légales",
"and": "et",
"By tapping \"Register\" you agree to ": "En appuyant sur \"S'inscrire\", vous acceptez de ",
"privacy policy": "politique de confidentialité",
"Sign up": "S'inscrire",
"Email": "Email",
"Update details": "Mettre à jour les détails",
"Settings": "Réglages",
"Update details": "Informations personnelles",
"Settings": "Paramètres",
"Account": "Compte",
"Logout": "Se déconnecter",
"No orders found": "Aucune commande trouvée",
"items": "articles",
"Update Details": "Détails de mise à jour",
"Invalid details": "Détails invalides",
"Update Details": "Mettre à jour les informations",
"Invalid details": "Informations invalides",
"Please check your email and password": "Veuillez vérifier votre e-mail et votre mot de passe",
"Something went wrong, please try again.": "Une erreur s'est produite. Veuillez réessayer.",
"Done": "Terminé",
"Billing Details": "Détails de la facturation",
"Shipping Details": "Les détails d'expédition",
"Billing Details": "Facturation",
"Shipping Details": "Expédition",
"Shipping Address": "Adresse de livraison",
"State": "Etat",
"Country": "Pays",
@ -143,14 +144,14 @@
"Sort results": "Trier les résultats",
"you're now logged in": "Vous êtes maintenant connecté",
"Hello": "Bonjour",
"Welcome back": "Nous saluons le retour",
"Welcome back": "Content de vous revoir",
"Quantity": "Quantité",
"Select a state": "Sélectionner un état",
"Select state": "Sélectionnez l'état",
"Ship to a different address?": "Expédier à une adresse différente?",
"USE DETAILS": "DÉTAILS D'UTILISATION",
"USE DETAILS": "METTRE À JOUR",
"Not supported, try a card payment": "Non pris en charge, essayez un paiement par carte",
"Invalid shipping address, please check your shipping details": "Adresse de livraison non valide, veuillez vérifier vos détails de livraison",
"Invalid shipping address, please check your shipping details": "Adresse de livraison non valide, veuillez vérifier vos infos de livraison",
"Was": "Était",
"off": "de",
"Maximum quantity reached": "Quantité maximale atteinte",
@ -168,8 +169,65 @@
"A user already exists": "Un utilisateur existe déjà",
"That email is taken, try another": "Cet e-mail est pris, essayez un autre",
"The email field is empty": "Le champ e-mail est vide",
"No more orders": "Plus de commandes",
"No more orders": "Pas plus de commandes",
"Account updated": "Compte mis à jour",
"Spend a minimum of": "Dépensez un minimum de",
"for": "pour"
"for": "pour",
"Buy Product": "Acheter un produit",
"Retry": "Recommencez",
"Retry later": "Réessayer plus tard",
"Light Mode": "Mode clair",
"Dark Mode": "Mode sombre",
"PayPal Checkout": "Paiement PayPal",
"Processing Payment": "Traitement du paiement",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Veuillez patienter, votre commande est en cours de traitement et vous serez redirige vers le site PayPal.",
"If you are not automatically redirected to PayPal within 5 seconds": "Si vous n'etes pas automatiquement redirige vers PayPal dans les 5 secondes",
"Payment Cancelled": "Paiement annulé",
"The payment has been cancelled": "Le paiement a été annulé",
"Must have": "Produits à voir",
"Our selection of new items": "Notre sélection de nouveautés",
"Register": "S'inscrire",
"No payment methods are available": "Aucun mode de paiement n'est disponible",
"Please enter a valid billing email": "Veuillez saisir une adresse e-mail de facturation valide",
"Please enter a valid shipping email": "Veuillez saisir un e-mail de livraison valide",
"Free postage": "Frais de port offerts",
"PROCESSING": "EN TRAITEMENT",
"Social": "Social",
"Please enter coupon to redeem": "Veuillez entrer le code promo pour l'utiliser",
"Coupon": "Code promo",
"Apply": "Appliquer",
"Apply Coupon": "Appliquer code promo",
"Added to checkout": "Ajouté au panier",
"Redeem Coupon": "Échanger le code promo",
"Add coupon code": "Ajouter un code promo",
"Coupon not found": "Code promo introuvable",
"Sorry, this coupon can not be used with your cart": "Désolé, ce code promo ne peut pas être utilisé avec votre panier",
"You cannot redeem this coupon": "Vous ne pouvez pas utiliser ce code promo",
"This coupon has expired": "Ce code promo a expiré",
"Usage limit has been reached": "La limite d'utilisation a été atteinte",
"View All": "Voir tout",
"Wishlist": "Liste de souhaits",
"No items found": "Aucun élément trouvé",
"This product has been removed from your wishlist": "Ce produit a été supprimé de votre liste de souhaits",
"This product has been added to your wishlist": "Ce produit a été ajouté à votre liste de souhaits",
"Spend a minimum of minimumAmount to redeem": "Dépensez un minimum de {{minimumAmount}} de racheter",
"Spend less than maximumAmount to redeem": "Dépensez moins de {{maximumAmount}} de racheter",
"Related products": "Produits connexes",
"Reviews": "Commentaires",
"There are no reviews yet.": "Il n'y a pas encore de commentaire.",
"More": "Suite",
"You may also like": "Vous pourriez aussi aimer",
"Leave a review": "Laisser un commentaire",
"How would you rate": "Comment évalueriez-vous",
"Submit": "Envoyer",
"Your review has been submitted": "Votre avis a été soumis",
"Delete Account": "Supprimer le compte",
"Phone Number": "Numéro de téléphone",
"Delete your account": "Supprimer votre compte",
"Are you sure?": "Êtes-vous sûr?",
"Yes, delete my account": "Oui, supprimer mon compte",
"Account deleted": "Compte supprimé",
"Shipping is not supported for your location, sorry": "L'expédition n'est pas prise en charge pour votre emplacement, désolé",
"Order Summary": "Récapitulatif de la commande",
"By completing this order, I agree to all": "En remplissant cette commande, j'accepte toutes"
}

View File

@ -80,6 +80,7 @@
"Shipping is not supported for your country, sorry": "shiping aapake desh ke lie samarthit nahin hai, kshama karen",
"Search": "khoj",
"Debit or Credit Card": "debit ya kredit kaard",
"Cash on delivery": "dilavaree par nakadee\n",
"Oops, something went wrong": "oh! kuchh galat ho gaya hai",
"Tax": "kar",
"No results": "koee parinaam nahin",
@ -171,5 +172,62 @@
"No more orders": "aur koee aadesh nahin",
"Account updated": "khaata apadet kiya gaya",
"Spend a minimum of": "kam se kam kharch karen",
"for": "ke liye"
"for": "ke liye",
"Buy Product": "utpaad khareeden",
"Retry": "pun: prayaas karen",
"Retry later": "baad mein pun: prayaas karen",
"Light Mode": "lait mod",
"Dark Mode": "daark mod",
"PayPal Checkout": "pepaal chekaut",
"Processing Payment": "sansaadhan sambandhee bhugataan",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "krpaya prateeksha karen, aapaka aadesh sansaadhit kiya ja raha hai aur aapako pepaal vebasait par punah nirdeshit kiya jaega.",
"If you are not automatically redirected to PayPal within 5 seconds": "yadi aap 5 sekand ke bheetar svachaalit roop se pepail par punarnirdeshit nahin hote hain",
"Payment Cancelled": "bhugataan radd kiya gaya",
"The payment has been cancelled": "bhugataan radd kar diya gaya hai",
"Must have": "hona aavashyak hai",
"Our selection of new items": "naee vastuon ka hamaara chayan",
"Register": "rajistar karen",
"No payment methods are available": "koee bhugataan vidhiyaan upalabdh nahin hain",
"Please enter a valid billing email": "krpaya ek maany biling eemel darj karen",
"Please enter a valid shipping email": "krpaya ek maany shiping eemel darj karen",
"Free postage": "mupht daak",
"PROCESSING": "prasanskaran",
"Social": "saamaajik",
"Please enter coupon to redeem": "rideem karane ke lie krpaya koopan darj karen",
"Coupon": "koopan",
"Apply": "laagoo karana",
"Apply Coupon": "koopan laagoo karen",
"Added to checkout": "chekaut mein joda gaya",
"Redeem Coupon": "koopan rideem karaen",
"Add coupon code": "koopan kod joden",
"Coupon not found": "koopan nahin mila",
"Sorry, this coupon can not be used with your cart": "kshama karen, is koopan ka upayog aapake kaart ke saath nahin kiya ja sakata",
"You cannot redeem this coupon": "aap is koopan ko rideem nahin kar sakate",
"This coupon has expired": "yah koopan samaapt ho gaya hai",
"Usage limit has been reached": "upayog kee seema pooree ho chukee hai",
"View All": "sabhee ko dekhen",
"Wishlist": "ichchha-soochee",
"No items found": "kuchh nahin mila",
"This product has been removed from your wishlist": "yah utpaad aapakee ichchha soochee se hata diya gaya hai",
"This product has been added to your wishlist": "is utpaad ko aapakee vish - list mein jod diya gaya hai",
"Spend a minimum of minimumAmount to redeem": "kam se kam kharch karen {{minimumAmount}} ke evaj mein lena",
"Spend less than maximumAmount to redeem": "se kam kharch karen {{maximumAmount}} ke evaj mein lena",
"Related products": "sambandhit utpaad",
"Reviews": "sameeksha",
"There are no reviews yet.": "abhee tak koee sameeksha nahin.",
"More": "adhik",
"You may also like": "aapako yah bhee pasand aa sakata hain",
"Leave a review": "sameeksha likhen",
"How would you rate": "aap ise kya ret karate hain",
"Submit": "prastut karana",
"Your review has been submitted": "aapakee sameeksha jama ho chukee hai",
"Delete Account": "khaata hata do",
"Phone Number": "fon nambar",
"Delete your account": "apane khaate ko nasht karo",
"Are you sure?": "kya aapako yakeen hai?",
"Yes, delete my account": "haan, mera akaunt dileet kar do",
"Account deleted": "khaata hataaya gaya",
"Shipping is not supported for your location, sorry": "aapake sthaan ke lie shiping samarthit nahin hai, kshama karen",
"Order Summary": "aadesh saaraansh",
"By completing this order, I agree to all": "is aadesh ko poora karake, main sabhee ke lie sahamat hoon"
}

View File

@ -80,6 +80,7 @@
"Shipping is not supported for your country, sorry": "La spedizione non è supportata per il tuo Paese, mi dispiace",
"Search": "Ricerca",
"Debit or Credit Card": "Bancomat o carta di credito",
"Cash on delivery": "Pagamento alla consegna",
"Oops, something went wrong": "Oops! Qualcosa è andato storto",
"Tax": "Imposta",
"No results": "Nessun risultato",
@ -171,5 +172,62 @@
"No more orders": "Niente più ordini",
"Account updated": "Account aggiornato",
"Spend a minimum of": "Spendi un minimo di",
"for": "per"
"for": "per",
"Buy Product": "Acquista prodotto",
"Retry": "Riprova",
"Retry later": "Riprova più tardi",
"Light Mode": "Modalità luce",
"Dark Mode": "Modalità scura",
"PayPal Checkout": "Pagamento PayPal",
"Processing Payment": "Pagamento in elaborazione",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Attendi, verrai reindirizzato al sito web di PayPal.",
"If you are not automatically redirected to PayPal within 5 seconds": "Se non vieni reindirizzato automaticamente a PayPal entro 5 secondi",
"Payment Cancelled": "Pagamento annullato",
"The payment has been cancelled": "Il pagamento è stato annullato",
"Must have": "Deve avere",
"Our selection of new items": "La nostra selezione di nuovi articoli",
"Register": "Registrati",
"No payment methods are available": "Non sono disponibili metodi di pagamento",
"Please enter a valid billing email": "Si prega di inserire un'e-mail di fatturazione valida",
"Please enter a valid shipping email": "Si prega di inserire un'e-mail di spedizione valida",
"Free postage": "Spedizione gratuita",
"PROCESSING": "IN LAVORAZIONE",
"Social": "Sociale",
"Please enter coupon to redeem": "Inserisci il coupon per riscattare",
"Coupon": "Buono",
"Apply": "Applicare",
"Apply Coupon": "Applicare il coupon",
"Added to checkout": "Aggiunto al checkout",
"Redeem Coupon": "Utilizza il coupon",
"Add coupon code": "Aggiungi il codice coupon",
"Coupon not found": "Coupon non trovato",
"Sorry, this coupon can not be used with your cart": "Spiacenti, questo coupon non può essere utilizzato con il carrello",
"You cannot redeem this coupon": "Non puoi riscattare questo coupon",
"This coupon has expired": "Questo coupon è scaduto",
"Usage limit has been reached": "È stato raggiunto il limite di utilizzo",
"View All": "Mostra tutto",
"Wishlist": "Lista dei desideri",
"No items found": "Nessun articolo trovato",
"This product has been removed from your wishlist": "Questo prodotto è stato rimosso dalla tua lista dei desideri",
"This product has been added to your wishlist": "Questo prodotto è stato aggiunto alla tua lista dei desideri",
"Spend a minimum of minimumAmount to redeem": "Spendi un minimo di {{minimumAmount}} riscattare",
"Spend less than maximumAmount to redeem": "Spendi meno di {{maximumAmount}} riscattare",
"Related products": "Prodotti correlati",
"Reviews": "Recensioni",
"There are no reviews yet.": "Non ci sono ancora recensioni.",
"More": "Di più",
"You may also like": "Potrebbe piacerti anche",
"Leave a review": "Lascia una recensione",
"How would you rate": "Come valuteresti",
"Submit": "Invia",
"Your review has been submitted": "La tua recensione è stata inviata",
"Delete Account": "Eliminare l'account",
"Phone Number": "Numero di telefono",
"Delete your account": "cancella il tuo account",
"Are you sure?": "Sei sicuro?",
"Yes, delete my account": "Sì, elimina il mio account",
"Account deleted": "Account cancellato",
"Shipping is not supported for your location, sorry": "La spedizione non è supportata per la tua posizione, mi dispiace",
"Order Summary": "Riepilogo dell'ordine",
"By completing this order, I agree to all": "Completando questo ordine, accetto tutto"
}

233
LabelStoreMax/lang/nl.json Normal file
View File

@ -0,0 +1,233 @@
{
"Categories": "Categorieën",
"Shop": "Winkel",
"Newest": "Nieuwste",
"Browse categories": "Bladeren door rubrieken",
"Cart": "winkelwagentje",
"You need items in your cart to checkout": "Je hebt artikelen in je winkelwagen nodig om af te rekenen",
"Updated": "Bijgewerkt",
"Item removed": "Artikel verwijderd",
"Success": "succes",
"Cart cleared": "winkelwagen leeggemaakt",
"Shopping Cart": "Winkelwagen",
"Clear Cart": "Winkelwagen leegmaken",
"Empty Basket": "Lege mand",
"PROCEED TO CHECKOUT": "GA NAAR DE KASSA",
"Browse": "Bladeren",
"Search results for": "zoekresultaten voor",
"Select a": "Selecteer een",
"Added to cart": "Toegevoegd aan winkelwagen",
"Options": "Opties",
"Price": "prijs",
"Choose your options": "Kies je opties",
"Out of stock": "Uitverkocht",
"In Stock": "op voorraad",
"Add to cart": "Voeg toe aan winkelmandje",
"Oops": "oeps",
"Please select valid options first": "Selecteer eerst geldige opties",
"Sorry": "Sorry",
"This item is not in stock": "Dit artikel is niet op voorraad",
"Description": "Beschrijving",
"Full description": "Volledige beschrijving",
"ADD TO CART": "VOEG TOE AAN WINKELMANDJE",
"This item is out of stock": "Dit product is niet meer op voorraad",
"Add your shipping details first": "Voeg eerst uw verzendgegevens toe",
"Checkout": "uitchecken",
"Billing/shipping details": "Factuur-/verzendgegevens",
"Add billing & shipping details": "Facturerings- en verzendgegevens toevoegen",
"Payment method": "Betalingsmiddel",
"Pay with": "betaal met",
"Select a payment method": "Kies een betalingsmethode",
"Shipping selected": "Verzending geselecteerd",
"Select shipping": "Selecteer verzending",
"Select a shipping option": "Selecteer een verzendoptie",
"Shipping fee": "Verzendkosten",
"Subtotal": "subtotaal",
"Total": "Totaal",
"CHECKOUT": "UITCHECKEN",
"One moment": "een moment",
"Please select add your billing/shipping address to proceed": "Selecteer uw factuur-/verzendadres toevoegen om door te gaan",
"Your billing/shipping details are incomplete": "Uw factuur-/verzendgegevens zijn onvolledig",
"Please select a shipping method to proceed": "Selecteer een verzendmethode om verder te gaan",
"Please select a payment method to proceed": "Selecteer een betaalmethode om door te gaan",
"Something went wrong, please contact our store": "Er is iets misgegaan, neem contact op met onze winkel!",
"Error": "Fout",
"Order Status": "Bestelstatus",
"Thank You!": "Dank u!",
"Your transaction details": "Uw transactiegegevens",
"Order Ref": "Bestelreferentie",
"Items": "Artikelen",
"Back to Home": "Terug naar huis",
"Orders": "bestellingen",
"Billing & Shipping Details": "Facturerings- en verzendgegevens",
"First Name": "Voornaam",
"Last Name": "Achternaam",
"Address Line": "Adresregel",
"City": "Stad",
"Postal code": "Postcode",
"Email address": "E-mailadres",
"Selected": "Geselecteerd",
"Select country": "Selecteer land",
"Remember my details": "Onthoud mijn gegevens",
"USE SHIPPING ADDRESS": "VERZENDADRES GEBRUIKEN",
"About": "Over",
"Privacy policy": "Privacybeleid",
"Terms and conditions": "Voorwaarden",
"Version": "versie",
"Payment Method": "Betalingsmiddel",
"CANCEL": "ANNULEREN",
"Shipping Methods": "Verzendmethoden:",
"Shipping is not supported for your country, sorry": "Verzending wordt niet ondersteund voor uw land, sorry",
"Search": "Zoekopdracht",
"Debit or Credit Card": "Debet- of creditcard",
"Cash on delivery": "Onder rembours",
"Oops, something went wrong": "Oeps! Er is iets misgegaan",
"Tax": "Belasting",
"No results": "Geen resultaten",
"There is an item out of stock": "Er is een artikel niet op voorraad",
"Maximum stock reached": "Maximale voorraad bereikt",
"Select a country": "Selecteer een land",
"Menu": "Menu",
"About Us": "Over ons",
"Something went wrong": "Er is iets fout gegaan",
"Product variation does not exist": "Productvariatie bestaat niet",
"This variation is unavailable": "Deze variant is niet beschikbaar",
"Sorry, something went wrong": "Sorry, er ging iets mis",
"Back": "Rug",
"Profile": "Profiel",
"Forgot Password": "Wachtwoord vergeten",
"Create an account": "Account aanmaken",
"Login": "Log in",
"Password": "Wachtwoord",
"Oops!": "Oeps!",
"Invalid login credentials": "Ongeldige inloggegevens",
"That email address is not valid": "Dat e-mailadres is niet geldig",
"Password must be a min 6 characters": "Wachtwoord moet minimaal 6 tekens lang zijn",
"Please check your details": "Kijk alsjeblieft je gegevens na",
"Invalid": "Invalide",
"Actions": "Acties",
"View Terms and Conditions or Privacy policy": "Bekijk de algemene voorwaarden of het privacybeleid",
"Terms and Conditions": "Voorwaarden",
"Privacy Policy": "Privacybeleid",
"terms and conditions": "voorwaarden",
"and": "en",
"By tapping \"Register\" you agree to ": "Door op \"Registreren\" te tikken, gaat u akkoord met:",
"privacy policy": "privacybeleid",
"Sign up": "Inschrijven",
"Email": "E-mail",
"Update details": "Gegevens bijwerken",
"Settings": "Instellingen",
"Account": "Rekening",
"Logout": "Uitloggen",
"No orders found": "Geen bestellingen gevonden",
"items": "artikelen",
"Update Details": "Gegevens bijwerken",
"Invalid details": "Ongeldige gegevens",
"Please check your email and password": "Controleer uw e-mail en wachtwoord",
"Something went wrong, please try again.": "Er is iets mis gegaan, probeer het alstublieft nogmaals.",
"Done": "Gedaan",
"Billing Details": "Factureringsgegevens",
"Shipping Details": "Verzendgegevens",
"Shipping Address": "Verzendingsadres",
"State": "Staat",
"Country": "Land",
"UPDATE DETAILS": "DETAILS BIJWERKEN",
"No more products": "Geen producten meer",
"release to load more": "laat los om meer te laden",
"Load Failed! Click retry!": "Laden mislukt! Klik opnieuw!",
"pull up load": "trek de lading omhoog",
"Sort: Low to high": "Sorteren: laag naar hoog",
"Sort: High to low": "Sorteren: hoog naar laag",
"Sort: Name A-Z": "Sorteren: Naam A-Z",
"Sort: Name Z-A": "Sorteren: Naam Z-A",
"Cancel": "Annuleren",
"Sort results": "Sorteer resultaten",
"you're now logged in": "Je bent nu ingelogd",
"Hello": "Hallo",
"Welcome back": "Welkom terug",
"Quantity": "Hoeveelheid",
"Select a state": "Selecteer een staat",
"Select state": "Selecteer staat",
"Ship to a different address?": "Verzend naar een ander adres?",
"USE DETAILS": "GEBRUIK DETAILS",
"Not supported, try a card payment": "Niet ondersteund, probeer een kaartbetaling",
"Invalid shipping address, please check your shipping details": "Ongeldig verzendadres, controleer uw verzendgegevens",
"Was": "Was",
"off": "uit",
"Maximum quantity reached": "Maximale hoeveelheid bereikt",
"Sorry, only": "Sorry, alleen",
"left": "links",
"Billing address is incomplete": "Factuuradres is onvolledig",
"Order": "Volgorde",
"Date Ordered": "Datum besteld",
"Ships to": "wordt verzonden naar",
"That email does not match our records": "Dat e-mailadres komt niet overeen met onze gegevens",
"That username does not match our records": "Die gebruikersnaam komt niet overeen met onze gegevens",
"That password does not match our records": "Dat wachtwoord komt niet overeen met onze gegevens",
"The email and password field cannot be empty": "Het veld voor e-mail en wachtwoord mag niet leeg zijn",
"Username taken, try another.": "Die gebruikersnaam is in gebruik, probeer een andere.",
"A user already exists": "Er bestaat al een gebruiker",
"That email is taken, try another": "Die e-mail is in gebruik, probeer een andere",
"The email field is empty": "Het e-mailveld is leeg",
"No more orders": "Geen bestellingen meer",
"Account updated": "Account bijgewerkt",
"Spend a minimum of": "Besteed minimaal €",
"for": "voor",
"Buy Product": "Koop product",
"Retry": "Opnieuw proberen",
"Retry later": "Probeer het later opnieuw",
"Light Mode": "Lichtmodus",
"Dark Mode": "Donkere modus",
"PayPal Checkout": "PayPal Afrekenen",
"Processing Payment": "Betaling verwerken",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Een ogenblik geduld, uw bestelling wordt verwerkt en u wordt doorgestuurd naar de PayPal-website.",
"If you are not automatically redirected to PayPal within 5 seconds": "Als u niet binnen 5 seconden automatisch wordt doorgestuurd naar PayPal",
"Payment Cancelled": "Betaling geannuleerd",
"The payment has been cancelled": "De betaling is geannuleerd",
"Must have": "Hebbeding",
"Our selection of new items": "Onze selectie van nieuwe items",
"Register": "Register",
"No payment methods are available": "Er zijn geen betaalmethoden beschikbaar",
"Please enter a valid billing email": "Voer een geldig e-mailadres voor facturering in",
"Please enter a valid shipping email": "Voer een geldig verzend-e-mailadres in",
"Free postage": "Gratis verzending",
"PROCESSING": "VERWERKEN",
"Social": "sociaal",
"Please enter coupon to redeem": "Voer de coupon in om deze in te wisselen",
"Coupon": "Coupon",
"Apply": "Van toepassing zijn",
"Apply Coupon": "gebruik coupon",
"Added to checkout": "Toegevoegd aan afrekenen",
"Redeem Coupon": "coupon inwisselen",
"Add coupon code": "Voeg couponcode toe",
"Coupon not found": "Coupon niet gevonden",
"Sorry, this coupon can not be used with your cart": "Sorry, deze coupon kan niet worden gebruikt met uw winkelwagentje",
"You cannot redeem this coupon": "U kunt deze coupon niet inwisselen",
"This coupon has expired": "Deze coupon is verlopen",
"Usage limit has been reached": "Gebruikslimiet is bereikt",
"View All": "Bekijk alles",
"Wishlist": "verlanglijst",
"No items found": "Geen items gevonden",
"This product has been removed from your wishlist": "Dit product is van je verlanglijst verwijderd",
"This product has been added to your wishlist": "Dit product is toegevoegd aan je verlanglijst",
"Spend a minimum of minimumAmount to redeem": "Besteed minimaal € {{minimumAmount}} verlossen",
"Spend less than maximumAmount to redeem": "Minder uitgeven dan {{maximumAmount}} verlossen",
"Related products": "Gerelateerde producten",
"Reviews": "Beoordelingen",
"There are no reviews yet.": "Er zijn nog geen beoordelingen.",
"More": "Meer",
"You may also like": "Dit vind je misschien ook leuk",
"Leave a review": "Laat je mening achter",
"How would you rate": "Hoe zou jij beoordelen",
"Submit": "Indienen",
"Your review has been submitted": "Uw beoordeling is verzonden",
"Delete Account": "Account verwijderen",
"Phone Number": "Telefoonnummer",
"Delete your account": "Verwijder je account",
"Are you sure?": "Weet je het zeker?",
"Yes, delete my account": "Ja, verwijder mijn account",
"Account deleted": "Account verwijderd",
"Shipping is not supported for your location, sorry": "Verzending wordt niet ondersteund voor uw locatie, sorry",
"Order Summary": "Overzicht van de bestelling",
"By completing this order, I agree to all": "Door deze bestelling te voltooien, ga ik akkoord met alles"
}

View File

@ -80,6 +80,7 @@
"Shipping is not supported for your country, sorry": "O envio não é suportado pelo seu país, desculpe",
"Search": "Procurar",
"Debit or Credit Card": "Cartão de Débito ou Crédito",
"Cash on delivery": "Dinheiro na entrega",
"Oops, something went wrong": "Ops, algo deu errado",
"Tax": "Imposto",
"No results": "Sem resultados",
@ -171,5 +172,62 @@
"No more orders": "Não há mais pedidos",
"Account updated": "Conta atualizada",
"Spend a minimum of": "Gaste um mínimo de",
"for": "para"
"for": "para",
"Buy Product": "Comprar Produto",
"Retry": "Tentar novamente",
"Retry later": "Tentar mais tarde",
"Light Mode": "Modo de luz",
"Dark Mode": "Modo escuro",
"PayPal Checkout": "PayPal Checkout",
"Processing Payment": "Processando o pagamento",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Aguarde, seu pedido esta sendo processado e voce sera redirecionado para o site do PayPal.",
"If you are not automatically redirected to PayPal within 5 seconds": "Se voce nao for redirecionado automaticamente para o PayPal em 5 segundos",
"Payment Cancelled": "Pagamento Cancelado",
"The payment has been cancelled": "O pagamento foi cancelado",
"Must have": "Deve ter",
"Our selection of new items": "Nossa seleção de novos itens",
"Register": "Registro",
"No payment methods are available": "Nenhum método de pagamento disponível",
"Please enter a valid billing email": "Por favor, insira um e-mail de faturamento válido",
"Please enter a valid shipping email": "Por favor, insira um e-mail de envio válido",
"Free postage": "Postagem grátis",
"PROCESSING": "EM PROCESSAMENTO",
"Social": "Social",
"Please enter coupon to redeem": "Por favor, insira o cupom para resgatar",
"Coupon": "Cupom",
"Apply": "Aplicar",
"Apply Coupon": "Aplicar cupom",
"Added to checkout": "Adicionado ao checkout",
"Redeem Coupon": "Resgatar cupom",
"Add coupon code": "Adicionar código de cupom",
"Coupon not found": "Cupom não encontrado",
"Sorry, this coupon can not be used with your cart": "Desculpe, este cupom não pode ser usado com seu carrinho",
"You cannot redeem this coupon": "Você não pode resgatar este cupom",
"This coupon has expired": "Este cupom expirou",
"Usage limit has been reached": "O limite de uso foi atingido",
"View All": "Ver tudo",
"Wishlist": "Lista de Desejos",
"No items found": "Nenhum item encontrado",
"This product has been removed from your wishlist": "Este produto foi removido da sua lista de desejos",
"This product has been added to your wishlist": "Este produto foi adicionado à sua lista de desejos",
"Spend a minimum of minimumAmount to redeem": "Gaste um mínimo de {{minimumAmount}} redimir",
"Spend less than maximumAmount to redeem": "Gaste menos que {{maximumAmount}} redimir",
"Related products": "Produtos relacionados",
"Reviews": "Avaliações",
"There are no reviews yet.": "Não há comentários ainda.",
"More": "Mais",
"You may also like": "você pode gostar",
"Leave a review": "Deixe um comentário",
"How would you rate": "Como você avaliaria",
"Submit": "Enviar",
"Your review has been submitted": "Sua avaliação foi enviada",
"Delete Account": "Deletar conta",
"Phone Number": "Número de telefone",
"Delete your account": "Deletar sua conta",
"Are you sure?": "Tem certeza?",
"Yes, delete my account": "Sim, excluir minha conta",
"Account deleted": "Conta excluída",
"Shipping is not supported for your location, sorry": "O envio não é suportado para a sua localização, desculpe",
"Order Summary": "Resumo do pedido",
"By completing this order, I agree to all": "Ao concluir este pedido, concordo com todos"
}

233
LabelStoreMax/lang/tr.json Normal file
View File

@ -0,0 +1,233 @@
{
"Categories": "Kategoriler",
"Shop": "Mağaza",
"Newest": "en yeni",
"Browse categories": "Kategorilere Gözat",
"Cart": "Araba",
"You need items in your cart to checkout": "Ödeme yapmak için sepetinizdeki öğelere ihtiyacınız var",
"Updated": "Güncellenmiş",
"Item removed": "Öğe kaldırıldı",
"Success": "Başarı",
"Cart cleared": "Sepet temizlendi",
"Shopping Cart": "Alışveriş Sepeti",
"Clear Cart": "Sepeti Temizle",
"Empty Basket": "Boş sepet",
"PROCEED TO CHECKOUT": "ÇIKIŞA DOĞRU DEVAM ET",
"Browse": "Araştır",
"Search results for": "için arama sonuçları",
"Select a": "Bir seçin",
"Added to cart": "Sepete eklendi",
"Options": "Seçenekler",
"Price": "Fiyat",
"Choose your options": "Seçeneklerinizi seçin",
"Out of stock": "Stoklar tükendi",
"In Stock": "Stokta var",
"Add to cart": "Sepete ekle",
"Oops": "ayy",
"Please select valid options first": "Lütfen önce geçerli seçenekleri seçin",
"Sorry": "Üzgünüm",
"This item is not in stock": "Bu ürün stokta yok",
"Description": "Açıklama",
"Full description": "Tam tanım",
"ADD TO CART": "SEPETE EKLE",
"This item is out of stock": "Bu ürün stokta yok",
"Add your shipping details first": "Önce gönderim bilgilerinizi ekleyin",
"Checkout": "Ödeme",
"Billing/shipping details": "Fatura/gönderim ayrıntıları",
"Add billing & shipping details": "Fatura ve gönderim ayrıntılarını ekleyin",
"Payment method": "Ödeme şekli",
"Pay with": "İle ödemek",
"Select a payment method": "Bir ödeme şekli seçin",
"Shipping selected": "Sevkiyat seçildi",
"Select shipping": "Gönderim seç",
"Select a shipping option": "Bir nakliye seçeneği seçin",
"Shipping fee": "Nakliye ücreti",
"Subtotal": "ara toplam",
"Total": "Toplam",
"CHECKOUT": "ÖDEME",
"One moment": "Bir dakika",
"Please select add your billing/shipping address to proceed": "Devam etmek için lütfen fatura/gönderim adresinizi ekleyin'i seçin",
"Your billing/shipping details are incomplete": "Faturalandırma/gönderim bilgileriniz eksik",
"Please select a shipping method to proceed": "Lütfen devam etmek için bir gönderim yöntemi seçin",
"Please select a payment method to proceed": "Lütfen devam etmek için bir ödeme yöntemi seçin",
"Something went wrong, please contact our store": "Bir şeyler ters gitti, lütfen mağazamızla iletişime geçin",
"Error": "Hata",
"Order Status": "Sipariş durumu",
"Thank You!": "Teşekkürler!",
"Your transaction details": "İşlem ayrıntılarınız",
"Order Ref": "Sipariş Referansı",
"Items": "Öğeler",
"Back to Home": "Eve geri dön",
"Orders": "Emirler",
"Billing & Shipping Details": "Faturalandırma ve Gönderim Ayrıntıları",
"First Name": "İlk adı",
"Last Name": "Soyadı",
"Address Line": "Adres satırı",
"City": "Şehir",
"Postal code": "Posta kodu",
"Email address": "E",
"Selected": "Seçildi",
"Select country": "Ülke seçin",
"Remember my details": "Ayrıntılarımı hatırla",
"USE SHIPPING ADDRESS": "NAKLİYE ADRESİNİ KULLAN",
"About": "Hakkında",
"Privacy policy": "Gizlilik Politikası",
"Terms and conditions": "Şartlar ve koşullar",
"Version": "sürüm",
"Payment Method": "Ödeme şekli",
"CANCEL": "İPTAL ET",
"Shipping Methods": "Nakliye Yöntemleri",
"Shipping is not supported for your country, sorry": "Ülkeniz için gönderim desteklenmiyor, üzgünüm",
"Search": "Aramak",
"Debit or Credit Card": "Banka veya Kredi Kartı",
"Cash on delivery": "Kapıda ödeme",
"Oops, something went wrong": "Hoop! Birşeyler yanlış gitti",
"Tax": "Vergi",
"No results": "Sonuç yok",
"There is an item out of stock": "Stokta olmayan bir ürün var",
"Maximum stock reached": "Maksimum stoka ulaşıldı",
"Select a country": "Bir ülke seçin",
"Menu": "Menü",
"About Us": "Hakkımızda",
"Something went wrong": "Bir şeyler yanlış gitti",
"Product variation does not exist": "Ürün varyasyonu mevcut değil",
"This variation is unavailable": "Bu varyasyon kullanılamıyor",
"Sorry, something went wrong": "Üzgünüm, bir şeyler ters gitti",
"Back": "Geri",
"Profile": "Profil",
"Forgot Password": "Parolanızı mı unuttunuz",
"Create an account": "Bir hesap oluşturun",
"Login": "Giriş yapmak",
"Password": "Parola",
"Oops!": "Hata!",
"Invalid login credentials": "Geçersiz giriş bilgileri",
"That email address is not valid": "Bu e-posta adresi geçerli değil",
"Password must be a min 6 characters": "Şifre en az 6 karakter olmalıdır",
"Please check your details": "Lütfen bilgilerinizi kontrol edin",
"Invalid": "Geçersiz",
"Actions": "Hareketler",
"View Terms and Conditions or Privacy policy": "Hüküm ve Koşulları veya Gizlilik Politikasını Görüntüle",
"Terms and Conditions": "Şartlar ve koşullar",
"Privacy Policy": "Gizlilik Politikası",
"terms and conditions": "Şartlar ve koşullar",
"and": "ve",
"By tapping \"Register\" you agree to ": "\"Kaydol\"a dokunarak şunları kabul etmiş olursunuz:",
"privacy policy": "Gizlilik Politikası",
"Sign up": "Üye olmak",
"Email": "E-posta",
"Update details": "Ayrıntıları güncelle",
"Settings": "Ayarlar",
"Account": "Hesap",
"Logout": ıkış Yap",
"No orders found": "sipariş bulunamadı",
"items": "öğeler",
"Update Details": "Ayrıntıları Güncelle",
"Invalid details": "Geçersiz ayrıntılar",
"Please check your email and password": "Lütfen e-posta adresinizi ve şifrenizi kontrol edin",
"Something went wrong, please try again.": "Bir şeyler ters gitti lütfen tekrar deneyin.",
"Done": "Tamamlandı",
"Billing Details": "Fatura Detayları",
"Shipping Details": "Nakliye ayrıntıları",
"Shipping Address": "Teslimat Adresi",
"State": "Belirtmek, bildirmek",
"Country": "Ülke",
"UPDATE DETAILS": "GÜNCELLEME DETAYLARI",
"No more products": "Daha fazla ürün yok",
"release to load more": "daha fazla yüklemek için bırakın",
"Load Failed! Click retry!": "Yükleme başarısız! Yeniden dene'yi tıklayın!",
"pull up load": "yükü yukarı çekmek",
"Sort: Low to high": "Sıralama: Düşükten yükseğe",
"Sort: High to low": "Sıralama: Yüksekten düşüğe",
"Sort: Name A-Z": "Sırala: İsim A-Z",
"Sort: Name Z-A": "Sıralama: İsim Z-A",
"Cancel": "İptal etmek",
"Sort results": "Sonuçları sırala",
"you're now logged in": "şimdi giriş yaptınız",
"Hello": "Merhaba",
"Welcome back": "Tekrar hoşgeldiniz",
"Quantity": "Miktar",
"Select a state": "Bir eyalet seçin",
"Select state": "Eyalet seç",
"Ship to a different address?": "Farklı bir adrese mi gönderiyorsunuz?",
"USE DETAILS": "KULLANIM DETAYLARI",
"Not supported, try a card payment": "Desteklenmiyor, kartla ödeme yapmayı deneyin",
"Invalid shipping address, please check your shipping details": "Geçersiz gönderim adresi, lütfen gönderim ayrıntılarınızı kontrol edin",
"Was": "Oldu",
"off": "kapalı",
"Maximum quantity reached": "Maksimum miktara ulaşıldı",
"Sorry, only": "Üzgünüm, sadece",
"left": "ayrıldı",
"Billing address is incomplete": "Fatura adresi eksik",
"Order": "Emir",
"Date Ordered": "Sipariş Tarihi",
"Ships to": "Şuraya gönderilir:",
"That email does not match our records": "Bu e-posta kayıtlarımızla eşleşmiyor",
"That username does not match our records": "Bu kullanıcı adı kayıtlarımızla eşleşmiyor",
"That password does not match our records": "Bu şifre kayıtlarımızla eşleşmiyor",
"The email and password field cannot be empty": "E-posta ve şifre alanı boş olamaz",
"Username taken, try another.": "Bu kullanıcı adı alınmış, başka bir tane deneyin.",
"A user already exists": "Bir kullanıcı zaten var",
"That email is taken, try another": "Bu e-posta alındı, başka bir tane deneyin",
"The email field is empty": "E-posta alanı boş",
"No more orders": "Başka sipariş yok",
"Account updated": "Hesap güncellendi",
"Spend a minimum of": "Minimum harcamak",
"for": "için",
"Buy Product": "Ürün Satın Al",
"Retry": "yeniden dene",
"Retry later": "daha sonra tekrar dene",
"Light Mode": "Işık Modu",
"Dark Mode": "Karanlık Mod",
"PayPal Checkout": "PayPal Ödemesi",
"Processing Payment": "Ödeme İşlemi",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "Lütfen bekleyin, siparişiniz işleniyor ve PayPal web sitesine yönlendirileceksiniz.",
"If you are not automatically redirected to PayPal within 5 seconds": "5 saniye içinde otomatik olarak PayPal'a yönlendirilmezseniz",
"Payment Cancelled": "Ödeme İptal Edildi",
"The payment has been cancelled": "ödeme iptal edildi",
"Must have": "sahip olmalı",
"Our selection of new items": "Yeni ürün seçimimiz",
"Register": "Kayıt olmak",
"No payment methods are available": "Ödeme yöntemi yok",
"Please enter a valid billing email": "Lütfen geçerli bir fatura e-postası girin",
"Please enter a valid shipping email": "Lütfen geçerli bir gönderim e-postası girin",
"Free postage": "Bedava posta",
"PROCESSING": "İŞLEME",
"Social": "Sosyal",
"Please enter coupon to redeem": "Lütfen kullanmak için kupon girin",
"Coupon": "Kupon",
"Apply": "Uygulamak",
"Apply Coupon": "kuponu onayla",
"Added to checkout": "ödemeye eklendi",
"Redeem Coupon": "Kuponu Kullan",
"Add coupon code": "Kupon kodu ekle",
"Coupon not found": "Kupon bulunamadı",
"Sorry, this coupon can not be used with your cart": "Üzgünüz, bu kupon sepetinizle kullanılamaz",
"You cannot redeem this coupon": "Bu kuponu kullanamazsınız",
"This coupon has expired": "Bu kuponun süresi doldu",
"Usage limit has been reached": "Kullanım sınırına ulaşıldı",
"View All": "Hepsini gör",
"Wishlist": "istek listesi",
"No items found": "hiç bir öğe bulunamadı",
"This product has been removed from your wishlist": "Bu ürün istek listenizden kaldırıldı",
"This product has been added to your wishlist": "Bu ürün istek listenize eklendi",
"Spend a minimum of minimumAmount to redeem": "Minimum harcamak {{minimumAmount}} rehinden kurtarmak",
"Spend less than maximumAmount to redeem": "Şundan daha az harcayın: {{maximumAmount}} rehinden kurtarmak",
"Related products": "İlgili ürünler",
"Reviews": "incelemeler",
"There are no reviews yet.": "Henüz yorum yok.",
"More": "Daha",
"You may also like": "Şunlar da hoşunuza gidebilir",
"Leave a review": "İnceleme bırak",
"How would you rate": "Nasıl değerlendirirsiniz",
"Submit": "Göndermek",
"Your review has been submitted": "İncelemeniz gönderildi",
"Delete Account": "Hesabı sil",
"Phone Number": "Telefon numarası",
"Delete your account": "Hesabını sil",
"Are you sure?": "Emin misin?",
"Yes, delete my account": "Evet, hesabımı sil",
"Account deleted": "Hesap silindi",
"Shipping is not supported for your location, sorry": "Bulunduğunuz yer için gönderim desteklenmiyor, üzgünüm",
"Order Summary": "Sipariş özeti",
"By completing this order, I agree to all": "Bu siparişi tamamlayarak, tümünü kabul ediyorum"
}

233
LabelStoreMax/lang/zh.json Normal file
View File

@ -0,0 +1,233 @@
{
"Categories": "类别",
"Shop": "店铺",
"Newest": "最新",
"Browse categories": "浏览分类",
"Cart": "大车",
"You need items in your cart to checkout": "您需要购物车中的商品才能结帐",
"Updated": "更新",
"Item removed": "项目已删除",
"Success": "成功",
"Cart cleared": "购物车已清除",
"Shopping Cart": "购物车",
"Clear Cart": "清除购物车",
"Empty Basket": "空篮子",
"PROCEED TO CHECKOUT": "进行结算",
"Browse": "浏览",
"Search results for": "为。。。。寻找结果",
"Select a": "选择一个",
"Added to cart": "已加入购物车",
"Options": "选项",
"Price": "价格",
"Choose your options": "选择你的选择",
"Out of stock": "缺货",
"In Stock": "有存货",
"Add to cart": "添加到购物车",
"Oops": "哎呀",
"Please select valid options first": "请先选择有效选项",
"Sorry": "对不起",
"This item is not in stock": "此产品没有现货",
"Description": "描述",
"Full description": "详细描述",
"ADD TO CART": "添加到购物车",
"This item is out of stock": "此产品缺货",
"Add your shipping details first": "首先添加您的运输详细信息",
"Checkout": "查看",
"Billing/shipping details": "帐单/运输详细信息",
"Add billing & shipping details": "添加帐单和运输详细信息",
"Payment method": "付款方法",
"Pay with": "使用。。。支付",
"Select a payment method": "选择付款方式",
"Shipping selected": "已选择运输",
"Select shipping": "选择送货",
"Select a shipping option": "选择一个运输选项",
"Shipping fee": "运输费用",
"Subtotal": "小计",
"Total": "全部的",
"CHECKOUT": "查看",
"One moment": "一瞬间",
"Please select add your billing/shipping address to proceed": "请选择添加您的帐单/送货地址以继续",
"Your billing/shipping details are incomplete": "您的帐单/运输详细信息不完整",
"Please select a shipping method to proceed": "请选择一种运输方式以继续",
"Please select a payment method to proceed": "请选择付款方式以继续",
"Something went wrong, please contact our store": "出了点问题,请联系我们的商店",
"Error": "错误",
"Order Status": "订单状态",
"Thank You!": "谢谢你!",
"Your transaction details": "您的交易详情",
"Order Ref": "订单参考",
"Items": "项目",
"Back to Home": "返回首页",
"Orders": "命令",
"Billing & Shipping Details": "帐单和运输详细信息",
"First Name": "名",
"Last Name": "姓",
"Address Line": "地址栏",
"City": "城市",
"Postal code": "邮政编码",
"Email address": "电子邮件地址",
"Selected": "选定",
"Select country": "选择国家",
"Remember my details": "记住我的详细信息",
"USE SHIPPING ADDRESS": "使用送货地址",
"About": "关于",
"Privacy policy": "隐私政策",
"Terms and conditions": "条款和条件",
"Version": "版本",
"Payment Method": "付款方法",
"CANCEL": "取消",
"Shipping Methods": "运送方式",
"Shipping is not supported for your country, sorry": "您所在的国家/地区不支持运输,抱歉",
"Search": "搜索",
"Debit or Credit Card": "借记卡或信用卡",
"Cash on delivery": "货到付款",
"Oops, something went wrong": "哎呀!出事了",
"Tax": "税",
"No results": "没结果",
"There is an item out of stock": "有商品缺货",
"Maximum stock reached": "已达到最大库存",
"Select a country": "选择一个国家",
"Menu": "菜单",
"About Us": "关于我们",
"Something went wrong": "出问题了",
"Product variation does not exist": "不存在产品变异",
"This variation is unavailable": "此变体不可用",
"Sorry, something went wrong": "抱歉,出了一些问题",
"Back": "后退",
"Profile": "轮廓",
"Forgot Password": "忘记密码",
"Create an account": "创建一个帐户",
"Login": "登录",
"Password": "密码",
"Oops!": "哎呀!",
"Invalid login credentials": "无效的登录凭证",
"That email address is not valid": "该电子邮件地址无效",
"Password must be a min 6 characters": "密码必须至少为 6 个字符",
"Please check your details": "请检查您的详细信息",
"Invalid": "无效的",
"Actions": "行动",
"View Terms and Conditions or Privacy policy": "查看条款和条件或隐私政策",
"Terms and Conditions": "条款和条件",
"Privacy Policy": "隐私政策",
"terms and conditions": "条款和条件",
"and": "和",
"By tapping \"Register\" you agree to ": "通过点击\"注册\",您同意",
"privacy policy": "隐私政策",
"Sign up": "注册",
"Email": "电子邮件",
"Update details": "更新详情",
"Settings": "设置",
"Account": "帐户",
"Logout": "登出",
"No orders found": "未找到订单",
"items": "项目",
"Update Details": "更新详情",
"Invalid details": "无效的详细信息",
"Please check your email and password": "请检查您的电子邮件和密码",
"Something went wrong, please try again.": "出了点问题,请再试一次。",
"Done": "完毕",
"Billing Details": "结算明细",
"Shipping Details": "送货细节",
"Shipping Address": "送货地址",
"State": "状态",
"Country": "国家",
"UPDATE DETAILS": "更新详情",
"No more products": "没有更多的产品",
"release to load more": "释放以加载更多",
"Load Failed! Click retry!": "加载失败!点击重试!",
"pull up load": "拉负荷",
"Sort: 从低到高": "排序:从低到高",
"Sort: 从高到低": "排序:从高到低",
"Sort: 名称 A-Z": "排序:名称 A-Z",
"Sort: 名称 Z-A": "排序:名称 Z-A",
"Cancel": "取消",
"Sort results": "排序结果",
"you're now logged in": "您现在已登录",
"Hello": "你好",
"Welcome back": "欢迎回来",
"Quantity": "数量",
"Select a state": "选择一个州",
"Select state": "选择状态",
"Ship to a different address?": "运送到不同的地址?",
"USE DETAILS": "使用细节",
"Not supported, try a card payment": "不支持,试试刷卡支付",
"Invalid shipping address, please check your shipping details": "送货地址无效,请检查您的送货详情",
"Was": "曾是",
"off": "离开",
"Maximum quantity reached": "已达到最大数量",
"Sorry, only": "对不起,只有",
"left": "剩下",
"Billing address is incomplete": "帐单地址不完整",
"Order": "命令",
"Date Ordered": "订购日期",
"Ships to": "运往",
"That email does not match our records": "那封电子邮件与我们的记录不符",
"That username does not match our records": "该用户名与我们的记录不符",
"That password does not match our records": "该密码与我们的记录不符",
"The email and password field cannot be empty": "电子邮件和密码字段不能为空",
"Username taken, try another.": "该用户名已被占用,换一个试试。",
"A user already exists": "用户已存在",
"That email is taken, try another": "那封邮件被占用了,试试另一个",
"The email field is empty": "电子邮件字段为空",
"No more orders": "没有更多的订单",
"Account updated": "帐户已更新",
"Spend a minimum of": "花最少的钱",
"for": "为了",
"Buy Product": "购买产品",
"Retry": "重试",
"Retry later": "稍后重试",
"Light Mode": "光模式",
"Dark Mode": "黑暗模式",
"PayPal Checkout": "支付宝结账",
"Processing Payment": "处理付款",
"Please wait, your order is being processed and you will be redirected to the PayPal website.": "请稍等,您的订单正在处理中,您将被重定向到 PayPal 网站。",
"If you are not automatically redirected to PayPal within 5 seconds": "如果您没有在 5 秒内自动重定向到 PayPal",
"Payment Cancelled": "付款已取消",
"The payment has been cancelled": "付款已取消",
"Must have": "一定有",
"Our selection of new items": "我们精选的新品",
"Register": "登记",
"No payment methods are available": "没有可用的付款方式",
"Please enter a valid billing email": "请输入有效的结算电子邮件",
"Please enter a valid shipping email": "请输入有效的送货电子邮件",
"Free postage": "免邮费",
"PROCESSING": "加工",
"Social": "社会的",
"Please enter coupon to redeem": "请输入优惠券进行兑换",
"Coupon": "优惠券",
"Apply": "申请",
"Apply Coupon": "申请优惠券",
"Added to checkout": "添加到结帐",
"Redeem Coupon": "兑换优惠券",
"Add coupon code": "添加优惠券代码",
"Coupon not found": "未找到优惠券",
"Sorry, this coupon can not be used with your cart": "抱歉,此优惠券不能与您的购物车一起使用",
"You cannot redeem this coupon": "您无法兑换此优惠券",
"This coupon has expired": "此优惠券已过期",
"Usage limit has been reached": "已达到使用限制",
"View All": "查看全部",
"Wishlist": "愿望清单",
"No items found": "未找到任何项目",
"This product has been removed from your wishlist": "该产品已从您的愿望清单中删除",
"This product has been added to your wishlist": "本产品已经被加入你的心愿单",
"Spend a minimum of minimumAmount to redeem": "至少花费 {{minimumAmount}} 赎回",
"Spend less than maximumAmount to redeem": "花费少于 {{maximumAmount}} 赎回",
"Related products": "相关产品",
"Reviews": "评论",
"There are no reviews yet.": "还没有评论。",
"More": "更多的",
"You may also like": "你可能也会喜欢",
"Leave a review": "发表评论",
"How would you rate": "你如何评价",
"Submit": "提交",
"Your review has been submitted": "您的评论已提交",
"Delete Account": "删除帐户",
"Phone Number": "电话号码",
"Delete your account": "删除您的帐户",
"Are you sure?": "你确定吗?",
"Yes, delete my account": "是的,删除我的帐户",
"Account deleted": "帐号已删除",
"Shipping is not supported for your location, sorry": "您所在的位置不支持送货,抱歉",
"Order Summary": "订单摘要",
"By completing this order, I agree to all": "通过完成此订单,我同意所有"
}

View File

@ -1,17 +1,19 @@
// Label StoreMAX
// Label StoreMax
//
// Created by Anthony Gordon.
// 2020, WooSignal Ltd. All rights reserved.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'controller.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:hexcolor/hexcolor.dart';
Widget showAppLoader() {
return SpinKitDoubleBounce(color: Hexcolor("#393318"));
class AccountOrderDetailController extends Controller {
@override
construct(BuildContext context) {
super.construct(context);
}
}

View File

@ -0,0 +1,19 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'controller.dart';
import 'package:flutter/widgets.dart';
class BrowseCategoryController extends Controller {
@override
construct(BuildContext context) {
super.construct(context);
}
}

View File

@ -0,0 +1,19 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'controller.dart';
import 'package:flutter/widgets.dart';
class BrowseSearchController extends Controller {
@override
construct(BuildContext context) {
super.construct(context);
}
}

View File

@ -0,0 +1,19 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'controller.dart';
import 'package:flutter/widgets.dart';
class CheckoutStatusController extends Controller {
@override
construct(BuildContext context) {
super.construct(context);
}
}

View File

@ -0,0 +1,17 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:nylo_framework/nylo_framework.dart';
/// Base Controller for the Nylo
/// See more on controllers here - https://nylo.dev/docs/2.x/controllers
class Controller extends BaseController {
Controller();
}

View File

@ -0,0 +1,27 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/app/controllers/woosignal_api_loader_controller.dart';
import 'package:woosignal/models/response/order.dart';
class CustomerOrdersLoaderController
extends WooSignalApiLoaderController<Order> {
CustomerOrdersLoaderController();
Future<void> loadOrders(
{required bool Function(bool hasProducts) hasResults,
required void Function() didFinish,
required String userId}) async {
await load(
hasResults: hasResults,
didFinish: didFinish,
apiQuery: (api) => api.getOrders(
customer: int.parse(userId), page: page, perPage: 50));
}
}

View File

@ -0,0 +1,19 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'controller.dart';
import 'package:flutter/widgets.dart';
class LeaveReviewController extends Controller {
@override
construct(BuildContext context) {
super.construct(context);
}
}

View File

@ -0,0 +1,35 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/app/controllers/woosignal_api_loader_controller.dart';
import 'package:woosignal/models/response/product_category.dart';
import 'package:woosignal/models/response/product.dart';
class ProductCategorySearchLoaderController
extends WooSignalApiLoaderController<Product> {
ProductCategorySearchLoaderController();
Future<void> loadProducts(
{required bool Function(bool hasProducts) hasResults,
required void Function() didFinish,
required ProductCategory? productCategory}) async {
await load(
hasResults: hasResults,
didFinish: didFinish,
apiQuery: (api) => api.getProducts(
perPage: 50,
category: productCategory!.id.toString(),
page: page,
status: "publish",
stockStatus: "instock",
),
);
}
}

View File

@ -0,0 +1,122 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter/material.dart';
import 'package:flutter_app/app/models/cart.dart';
import 'package:flutter_app/app/models/cart_line_item.dart';
import 'package:flutter_app/bootstrap/enums/wishlist_action_enums.dart';
import 'package:flutter_app/bootstrap/helpers.dart';
import 'package:nylo_framework/nylo_framework.dart';
import 'package:woosignal/models/response/product.dart';
import 'package:woosignal/models/response/product_variation.dart'
as ws_product_variation;
import 'controller.dart';
class ProductDetailController extends Controller {
int quantity = 1;
Product? product;
@override
construct(BuildContext context) {
super.construct(context);
product = data() as Product?;
}
viewExternalProduct() {
if (product!.externalUrl != null && product!.externalUrl!.isNotEmpty) {
openBrowserTab(url: product!.externalUrl!);
}
}
itemAddToCart(
{required CartLineItem cartLineItem, required Function onSuccess}) async {
await Cart.getInstance.addToCart(cartLineItem: cartLineItem);
showStatusAlert(
context,
title: trans("Success"),
subtitle: trans("Added to cart"),
duration: 1,
icon: Icons.add_shopping_cart,
);
onSuccess();
}
addQuantityTapped({required Function onSuccess}) {
if (product!.manageStock != null && product!.manageStock == true) {
if (quantity >= product!.stockQuantity!) {
showToastNotification(context!,
title: trans("Maximum quantity reached"),
description:
"${trans("Sorry, only")} ${product!.stockQuantity} ${trans("left")}",
style: ToastNotificationStyleType.INFO);
return;
}
}
if (quantity != 0) {
quantity++;
onSuccess();
}
}
removeQuantityTapped({required Function onSuccess}) {
if ((quantity - 1) >= 1) {
quantity--;
onSuccess();
}
}
toggleWishList(
{required Function onSuccess,
required WishlistAction wishlistAction}) async {
String subtitleMsg;
if (wishlistAction == WishlistAction.remove) {
await removeWishlistProduct(product: product);
subtitleMsg = trans("This product has been removed from your wishlist");
} else {
await saveWishlistProduct(product: product);
subtitleMsg = trans("This product has been added to your wishlist");
}
showStatusAlert(
context,
title: trans("Success"),
subtitle: subtitleMsg,
icon: Icons.favorite,
duration: 1,
);
onSuccess();
}
ws_product_variation.ProductVariation? findProductVariation(
{required Map<int, dynamic> tmpAttributeObj,
required List<ws_product_variation.ProductVariation> productVariations}) {
ws_product_variation.ProductVariation? tmpProductVariation;
Map<String?, dynamic> tmpSelectedObj = {};
for (var attributeObj in tmpAttributeObj.values) {
tmpSelectedObj[attributeObj["name"]] = attributeObj["value"];
}
for (var productVariation in productVariations) {
Map<String?, dynamic> tmpVariations = {};
for (var attr in productVariation.attributes) {
tmpVariations[attr.name] = attr.option;
}
if (tmpVariations.toString() == tmpSelectedObj.toString()) {
tmpProductVariation = productVariation;
}
}
return tmpProductVariation;
}
}

View File

@ -0,0 +1,19 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'controller.dart';
import 'package:flutter/widgets.dart';
class ProductImageViewerController extends Controller {
@override
construct(BuildContext context) {
super.construct(context);
}
}

View File

@ -0,0 +1,32 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/app/controllers/woosignal_api_loader_controller.dart';
import 'package:woosignal/models/response/product.dart';
class ProductLoaderController extends WooSignalApiLoaderController<Product> {
ProductLoaderController();
Future<void> loadProducts(
{required bool Function(bool hasProducts) hasResults,
required void Function() didFinish,
List<int>? productIds = const []}) async {
await load(
hasResults: hasResults,
didFinish: didFinish,
apiQuery: (api) => api.getProducts(
perPage: 50,
page: page,
include: productIds,
status: "publish",
stockStatus: "instock",
));
}
}

View File

@ -0,0 +1,19 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'controller.dart';
import 'package:flutter/widgets.dart';
class ProductReviewsController extends Controller {
@override
construct(BuildContext context) {
super.construct(context);
}
}

View File

@ -0,0 +1,34 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/app/controllers/woosignal_api_loader_controller.dart';
import 'package:woosignal/models/response/product_review.dart';
import 'package:woosignal/models/response/product.dart';
class ProductReviewsLoaderController
extends WooSignalApiLoaderController<ProductReview> {
ProductReviewsLoaderController();
Future<void> loadProductReviews({
required Product? product,
required bool Function(bool hasProducts) hasResults,
required void Function() didFinish,
}) async {
await load(
hasResults: hasResults,
didFinish: didFinish,
apiQuery: (api) => api.getProductReviews(
product: [product!.id!],
perPage: 50,
page: page,
status: "approved",
));
}
}

View File

@ -0,0 +1,33 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/app/controllers/woosignal_api_loader_controller.dart';
import 'package:woosignal/models/response/product.dart';
class ProductSearchLoaderController
extends WooSignalApiLoaderController<Product> {
ProductSearchLoaderController();
Future<void> loadProducts(
{required bool Function(bool hasProducts) hasResults,
required void Function() didFinish,
required String? search}) async {
await load(
hasResults: hasResults,
didFinish: didFinish,
apiQuery: (api) => api.getProducts(
perPage: 100,
search: search,
page: page,
status: "publish",
stockStatus: "instock",
));
}
}

View File

@ -0,0 +1,50 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/bootstrap/helpers.dart';
import 'package:woosignal/woosignal.dart';
class WooSignalApiLoaderController<T> {
List<T> _results = [];
int page = 1;
bool _waitForNextRequest = false;
WooSignalApiLoaderController();
Future<void> load(
{required bool Function(bool hasProducts) hasResults,
required void Function() didFinish,
required Future<List<T>> Function(WooSignal query) apiQuery}) async {
if (_waitForNextRequest) {
return;
}
_waitForNextRequest = true;
List<T> apiResults = await (appWooSignal((api) => apiQuery(api)));
if (!hasResults(apiResults.isNotEmpty)) {
return;
}
_results.addAll(apiResults);
page = page + 1;
_waitForNextRequest = false;
didFinish();
}
List<T> getResults() => _results;
void clear() {
_results = [];
_waitForNextRequest = false;
page = 1;
}
}

View File

@ -0,0 +1,15 @@
import 'package:nylo_framework/nylo_framework.dart';
class LoginEvent implements NyEvent {
@override
final listeners = {
DefaultListener: DefaultListener(),
};
}
class DefaultListener extends NyListener {
@override
handle(dynamic event) async {
// handle the payload from event
}
}

View File

@ -0,0 +1,13 @@
import 'package:nylo_framework/nylo_framework.dart';
class LogoutEvent implements NyEvent {
@override
final listeners = {DefaultListener: DefaultListener()};
}
class DefaultListener extends NyListener {
@override
handle(dynamic event) async {
// handle the payload from event
}
}

View File

@ -0,0 +1,86 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/app/models/customer_address.dart';
class BillingDetails {
CustomerAddress? billingAddress;
CustomerAddress? shippingAddress;
bool? rememberDetails;
BillingDetails();
void initSession() {
billingAddress = CustomerAddress();
shippingAddress = CustomerAddress();
}
Map<String, dynamic> createStripeDetails() => {
'address': {
if (billingAddress?.addressLine != null)
'line1': billingAddress?.addressLine,
if (billingAddress?.city != null) 'city': billingAddress?.city,
if (billingAddress?.postalCode != null)
'postal_code': billingAddress?.postalCode,
if (billingAddress?.customerCountry?.state?.name != null)
'state': billingAddress?.customerCountry?.state?.name,
if (billingAddress?.customerCountry?.countryCode != null)
'country': billingAddress?.customerCountry?.countryCode,
},
'shipping': {
if (shippingAddress?.nameFull() != null)
'name': shippingAddress?.nameFull(),
if (shippingAddress?.city != null) 'city': shippingAddress?.city,
if (shippingAddress?.postalCode != null)
'postal_code': shippingAddress?.postalCode,
if (shippingAddress?.customerCountry?.state?.name != null)
'state': shippingAddress?.customerCountry?.state?.name,
if (shippingAddress?.customerCountry?.countryCode != null)
'country': shippingAddress?.customerCountry?.countryCode,
},
if (billingAddress?.emailAddress != null)
'email': billingAddress?.emailAddress,
if (billingAddress?.nameFull() != null)
'name': billingAddress?.nameFull(),
if (billingAddress?.phoneNumber != null)
'phone': billingAddress?.phoneNumber
};
Map<String, String?> getShippingAddressStripe() => {
"name": shippingAddress?.nameFull(),
"line1": shippingAddress!.addressLine,
"city": shippingAddress!.city,
"postal_code": shippingAddress!.postalCode,
"country": (shippingAddress?.customerCountry?.name ?? "")
};
fromWpMeta(Map<String, String> data) async {
final Map<String, String> shippingDetailsWpMeta = <String, String>{},
billingDetailsWpMeta = <String, String>{};
shippingDetailsWpMeta.addEntries(data.entries
.where((element) => element.key.startsWith("shipping_"))
.map((shippingMeta) => MapEntry(
shippingMeta.key.replaceAll("shipping_", ""), shippingMeta.value)));
billingDetailsWpMeta.addEntries(data.entries
.where((element) => element.key.startsWith("billing_"))
.map((billingMeta) => MapEntry(
billingMeta.key.replaceAll("billing_", ""), billingMeta.value)));
CustomerAddress billingCustomerAddress = CustomerAddress();
await billingCustomerAddress.fromWpMetaData(billingDetailsWpMeta);
CustomerAddress shippingCustomerAddress = CustomerAddress();
await shippingCustomerAddress.fromWpMetaData(shippingDetailsWpMeta);
billingAddress = billingCustomerAddress;
shippingAddress = shippingCustomerAddress;
}
}

View File

@ -0,0 +1,22 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter/material.dart';
class BottomNavItem {
int id;
BottomNavigationBarItem bottomNavigationBarItem;
Widget tabWidget;
BottomNavItem(
{required this.id,
required this.bottomNavigationBarItem,
required this.tabWidget});
}

View File

@ -0,0 +1,281 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'dart:convert';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:flutter_app/app/models/cart_line_item.dart';
import 'package:flutter_app/app/models/checkout_session.dart';
import 'package:flutter_app/app/models/shipping_type.dart';
import 'package:flutter_app/bootstrap/app_helper.dart';
import 'package:flutter_app/bootstrap/helpers.dart';
import 'package:flutter_app/bootstrap/shared_pref/shared_key.dart';
import 'package:nylo_framework/nylo_framework.dart';
import 'package:woosignal/models/response/shipping_method.dart';
import 'package:woosignal/models/response/tax_rate.dart';
class Cart {
Cart._privateConstructor();
static final Cart getInstance = Cart._privateConstructor();
Future<List<CartLineItem>> getCart() async {
List<CartLineItem> cartLineItems = [];
String? currentCartArrJSON = await (NyStorage.read(SharedKey.cart));
if (currentCartArrJSON != null) {
cartLineItems = (jsonDecode(currentCartArrJSON) as List<dynamic>)
.map((i) => CartLineItem.fromJson(i))
.toList();
}
return cartLineItems;
}
Future addToCart({required CartLineItem cartLineItem}) async {
List<CartLineItem> cartLineItems = await getCart();
if (cartLineItem.variationId != null &&
cartLineItems.firstWhereOrNull((i) =>
(i.productId == cartLineItem.productId &&
i.variationId == cartLineItem.variationId &&
i.variationOptions == cartLineItem.variationOptions)) !=
null) {
cartLineItems.removeWhere((item) =>
item.productId == cartLineItem.productId &&
item.variationId == cartLineItem.variationId &&
item.variationOptions == cartLineItem.variationOptions);
}
if (cartLineItem.variationId == null &&
cartLineItems.firstWhereOrNull(
(i) => i.productId == cartLineItem.productId) !=
null) {
cartLineItems
.removeWhere((item) => item.productId == cartLineItem.productId);
}
cartLineItems.add(cartLineItem);
await saveCartToPref(cartLineItems: cartLineItems);
}
Future<String> getTotal({bool withFormat = false}) async {
List<CartLineItem> cartLineItems = await getCart();
double total = 0;
for (var cartItem in cartLineItems) {
total += (parseWcPrice(cartItem.total) * cartItem.quantity);
}
CheckoutSession checkoutSession = CheckoutSession.getInstance;
if (checkoutSession.coupon != null) {
String discountAmount = await Cart.getInstance.couponDiscountAmount();
total = total - double.parse(discountAmount);
}
if (withFormat == true) {
return formatDoubleCurrency(total: total);
}
return total.toStringAsFixed(2);
}
Future<String> getSubtotal({bool withFormat = false}) async {
List<CartLineItem> cartLineItems = await getCart();
double subtotal = 0;
for (var cartItem in cartLineItems) {
subtotal += (parseWcPrice(cartItem.subtotal) * cartItem.quantity);
}
if (withFormat == true) {
return formatDoubleCurrency(total: subtotal);
}
return subtotal.toStringAsFixed(2);
}
updateQuantity(
{required CartLineItem cartLineItem,
required int incrementQuantity}) async {
List<CartLineItem> cartLineItems = await getCart();
List<CartLineItem> tmpCartItem = [];
for (var cartItem in cartLineItems) {
if (cartItem.variationId == cartLineItem.variationId &&
cartItem.productId == cartLineItem.productId) {
if ((cartItem.quantity + incrementQuantity) > 0) {
cartItem.quantity += incrementQuantity;
}
}
tmpCartItem.add(cartItem);
}
await saveCartToPref(cartLineItems: tmpCartItem);
}
Future<String> cartShortDesc() async {
List<CartLineItem> cartLineItems = await getCart();
return cartLineItems
.map((cartItem) =>
"${cartItem.quantity.toString()} x | ${cartItem.name}")
.toList()
.join(",");
}
removeCartItemForIndex({required int index}) async {
List<CartLineItem> cartLineItems = await getCart();
cartLineItems.removeAt(index);
await saveCartToPref(cartLineItems: cartLineItems);
}
clear() async => NyStorage.delete(SharedKey.cart);
saveCartToPref({required List<CartLineItem> cartLineItems}) async {
String json = jsonEncode(cartLineItems.map((i) => i.toJson()).toList());
await NyStorage.store(SharedKey.cart, json);
}
Future<String> taxAmount(TaxRate? taxRate) async {
double subtotal = 0;
double shippingTotal = 0;
List<CartLineItem> cartItems = await Cart.getInstance.getCart();
if (cartItems.every((c) => c.taxStatus == 'none')) {
return "0";
}
List<CartLineItem> taxableCartLines =
cartItems.where((c) => c.taxStatus == 'taxable').toList();
double cartSubtotal = 0;
if (AppHelper.instance.appConfig!.productPricesIncludeTax == 1 &&
taxableCartLines.isNotEmpty) {
cartSubtotal = taxableCartLines
.map<double>((m) => parseWcPrice(m.subtotal) * m.quantity)
.reduce((a, b) => a + b);
if (CheckoutSession.getInstance.coupon != null) {
String discountAmount = await Cart.getInstance.couponDiscountAmount();
cartSubtotal = cartSubtotal - double.parse(discountAmount);
}
}
subtotal = cartSubtotal;
ShippingType? shippingType = CheckoutSession.getInstance.shippingType;
if (shippingType != null) {
switch (shippingType.methodId) {
case "flat_rate":
FlatRate flatRate = (shippingType.object as FlatRate);
if (flatRate.taxable != null && flatRate.taxable!) {
shippingTotal +=
parseWcPrice(shippingType.cost == "" ? "0" : shippingType.cost);
}
break;
case "local_pickup":
LocalPickup localPickup = (shippingType.object as LocalPickup);
if (localPickup.taxable != null && localPickup.taxable!) {
shippingTotal += parseWcPrice(
(localPickup.cost == null || localPickup.cost == ""
? "0"
: localPickup.cost));
}
break;
default:
break;
}
}
double total = 0;
if (subtotal != 0) {
total += ((parseWcPrice(taxRate!.rate) * subtotal) / 100);
}
if (shippingTotal != 0) {
total += ((parseWcPrice(taxRate!.rate) * shippingTotal) / 100);
}
return (total).toStringAsFixed(2);
}
Future<String> couponDiscountAmount() async {
CheckoutSession checkoutSession = CheckoutSession.getInstance;
if (checkoutSession.coupon == null) {
return "0";
}
List<CartLineItem> cartLineItems = await getCart();
List<CartLineItem> eligibleCartLineItems = [];
double subtotal = 0;
for (var cartItem in cartLineItems) {
bool canContinue = true;
if (checkoutSession.coupon!.excludedProductCategories!.isNotEmpty) {
for (var excludedProductCategory
in checkoutSession.coupon!.excludedProductCategories!) {
if (cartItem.categories!
.map((category) => category.id)
.contains(excludedProductCategory)) {
canContinue = false;
break;
}
}
}
if (checkoutSession.coupon!.productCategories!.isNotEmpty) {
for (var productCategories
in checkoutSession.coupon!.productCategories!) {
if (cartItem.categories!
.map((category) => category.id)
.contains(productCategories) ==
false) {
canContinue = false;
break;
}
}
}
if (canContinue == false) {
continue;
}
if (checkoutSession.coupon!.excludeSaleItems == true &&
cartItem.onSale == true) {
continue;
}
if (checkoutSession.coupon!.excludedProductIds!.isNotEmpty &&
checkoutSession.coupon!.excludedProductIds!
.contains(cartItem.productId)) {
continue;
}
if (checkoutSession.coupon!.productIds!.isNotEmpty &&
!checkoutSession.coupon!.productIds!.contains(cartItem.productId)) {
continue;
}
subtotal += (parseWcPrice(cartItem.subtotal) * cartItem.quantity);
eligibleCartLineItems.add(cartItem);
}
String? discountType = checkoutSession.coupon!.discountType;
String? amount = checkoutSession.coupon!.amount;
// Percentage
if (discountType == 'percent') {
return ((subtotal * double.parse(amount!)) / 100).toStringAsFixed(2);
}
// Fixed cart
if (discountType == 'fixed_cart') {
return (double.parse(amount!)).toStringAsFixed(2);
}
// Fixed product
if (discountType == 'fixed_product') {
return (eligibleCartLineItems.length * double.parse(amount!))
.toStringAsFixed(2);
}
return "0";
}
}

View File

@ -0,0 +1,157 @@
// Label StoreMax
//
// Created by Anthony Gordon.
// 2023, WooSignal Ltd. All rights reserved.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import 'package:flutter_app/bootstrap/helpers.dart';
import 'package:nylo_framework/nylo_framework.dart';
import 'package:woosignal/models/response/product_variation.dart';
import 'package:woosignal/models/response/product.dart' as ws_product;
class CartLineItem {
String? name;
int? productId;
int? variationId;
int quantity = 0;
bool? isManagedStock;
int? stockQuantity;
String? shippingClassId;
String? taxStatus;
String? taxClass;
bool? shippingIsTaxable;
String? subtotal;
String? total;
String? imageSrc;
String? variationOptions;
List<ws_product.Category>? categories;
bool? onSale;
String? stockStatus;
Object? metaData = {};
CartLineItem(
{this.name,
this.productId,
this.variationId,
this.isManagedStock,
this.stockQuantity,
this.quantity = 1,
this.stockStatus,
this.shippingClassId,
this.taxStatus,
this.taxClass,
this.categories,
this.shippingIsTaxable,
this.variationOptions,
this.imageSrc,
this.subtotal,
this.onSale,
this.total,
this.metaData});
String getCartTotal() {
return (quantity * parseWcPrice(subtotal)).toStringAsFixed(2);
}
CartLineItem.fromProduct(
{int? quantityAmount, required ws_product.Product product}) {
name = product.name;
productId = product.id;
quantity = quantityAmount ?? 1;
taxStatus = product.taxStatus;
shippingClassId = product.shippingClassId.toString();
subtotal = product.price;
taxClass = product.taxClass;
categories = product.categories;
isManagedStock = product.manageStock;
stockQuantity = product.stockQuantity;
shippingIsTaxable = product.shippingTaxable;
imageSrc = product.images.isEmpty
? getEnv("PRODUCT_PLACEHOLDER_IMAGE")
: product.images.first.src;
total = product.price;
}
CartLineItem.fromProductVariation(
{int? quantityAmount,
required List<String> options,
required ws_product.Product product,
required ProductVariation productVariation}) {
String? imageSrc = getEnv("PRODUCT_PLACEHOLDER_IMAGE");
if (product.images.isNotEmpty) {
imageSrc = product.images.first.src;
}
if (productVariation.image != null) {
imageSrc = productVariation.image!.src;
}
name = product.name;
productId = product.id;
variationId = productVariation.id;
quantity = quantityAmount ?? 1;
taxStatus = productVariation.taxStatus;
shippingClassId = productVariation.shippingClassId.toString();
subtotal = productVariation.price;
stockQuantity = productVariation.stockQuantity;
isManagedStock = productVariation.manageStock;
categories = product.categories;
taxClass = productVariation.taxClass;
this.imageSrc = imageSrc;
shippingIsTaxable = product.shippingTaxable;
variationOptions = options.join("; ");
total = productVariation.price;
}
CartLineItem.fromJson(Map<String, dynamic> json)
: name = json['name'],
productId = json['product_id'],
variationId = json['variation_id'],
quantity = json['quantity'],
shippingClassId = json['shipping_class_id'].toString(),
taxStatus = json['tax_status'],
stockQuantity = json['stock_quantity'],
isManagedStock = (json['is_managed_stock'] != null &&
json['is_managed_stock'] is bool)
? json['is_managed_stock']
: false,
shippingIsTaxable = json['shipping_is_taxable'],
subtotal = json['subtotal'],
total = json['total'],
taxClass = json['tax_class'],
stockStatus = json['stock_status'],
imageSrc = json['image_src'],
categories = json['categories'] == null
? null
: List.of(json['categories'] as List)
.map((e) => ws_product.Category.fromJson(e))
.toList(),
onSale = json['on_sale'],
variationOptions = json['variation_options'],
metaData = json['metaData'];
Map<String, dynamic> toJson() => {
'name': name,
'product_id': productId,
'variation_id': variationId,
'quantity': quantity,
'shipping_class_id': shippingClassId,
'tax_status': taxStatus,
'tax_class': taxClass,
'stock_status': stockStatus,
'is_managed_stock': isManagedStock,
'stock_quantity': stockQuantity,
'shipping_is_taxable': shippingIsTaxable,
'image_src': imageSrc,
'categories': categories != null
? categories!.map((e) => e.toJson()).toList()
: [],
'variation_options': variationOptions,
'subtotal': subtotal,
'on_sale': onSale,
'total': total,
'meta_data': metaData,
};
}

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