mirror of
https://github.com/tomfong/simple-qr.git
synced 2025-06-28 20:19:59 +00:00
commit
4e436c70ce
28 changed files with 4687 additions and 2939 deletions
32
README.md
32
README.md
|
@ -36,7 +36,7 @@ By using the app, you can
|
|||
|
||||
2. Import image files and scan the QR Code on it.
|
||||
|
||||
3. Create QR code from templates, which includes Free Text, URL, vCard Contact, Phone Number, Message, Email and Wi-Fi.
|
||||
3. Create QR code from templates, which includes Free Text, URL, vCard Contact, Phone Number, Message, Email, Wi-Fi and Geolocation.
|
||||
|
||||
4. Automatically log results that you scan, create or view again. These logged records can be bookmarked for quick access, and also backupable.
|
||||
|
||||
|
@ -46,11 +46,12 @@ By using the app, you can
|
|||
* Execute base64 encoding/decoding on it.
|
||||
* Use it as a content to generate a new shareable QR code.
|
||||
* Do corresponding tasks if it is a
|
||||
* URL: Browse website
|
||||
* URL: Browse website / Open application
|
||||
* vCard contact: Add contact
|
||||
* Phone number: Phone call, add contact
|
||||
* Message: Send message, add contact
|
||||
* Email: Send email
|
||||
* Geolocation: Open map
|
||||
|
||||
6. Customize the generated QR code, e.g. error correction level, color, margin and screen brightness.
|
||||
|
||||
|
@ -63,11 +64,12 @@ By using the app, you can
|
|||
### Languages Supported
|
||||
|
||||
* English (en)
|
||||
* Traditional Chinese (Hong Kong) 中文 (香港) (zh-HK)
|
||||
* Simplified Chinese 简体中文 (zh-CN)
|
||||
* Chinese (Hong Kong) 中文 (香港) (zh-HK)
|
||||
* Chinese (Simplified) 简体中文 (zh-CN)
|
||||
* German Deutsch (de)
|
||||
* French Français (fr)
|
||||
* Italian Italiano (it)
|
||||
* Portuguese (Brazil) (pt-BR)
|
||||
* Russian Русский (ru)
|
||||
|
||||
You are welcomed to help translate the app into more languages (refer to this <a href="#how-to-help-translate">section</a>)
|
||||
|
@ -117,24 +119,22 @@ Thank you the following contributors who have made the app better!
|
|||
| mondstern | [mondlicht-und-sterne](https://github.com/mondlicht-und-sterne) | German language translation |
|
||||
| Valentino Bocchetti | [luftmensch-luftmensch](https://github.com/luftmensch-luftmensch) | Italian language translation |
|
||||
| Smooth-E | [Smooth-E](https://github.com/Smooth-E) | Russian language translation |
|
||||
| Daniel Ribeiro | [drcsj](https://github.com/drcsj) | Portuguese (Brazil) language translation |
|
||||
|
||||
## Framework
|
||||
|
||||
```sh
|
||||
Ionic CLI : 7.1.1
|
||||
Ionic Framework : @ionic/angular 7.1.3
|
||||
@angular-devkit/build-angular : 16.1.4
|
||||
@angular-devkit/schematics : 16.1.4
|
||||
@angular/cli : 16.1.4
|
||||
Ionic CLI : 7.2.0
|
||||
Ionic Framework : @ionic/angular 7.8.2
|
||||
@angular-devkit/build-angular : 16.2.13
|
||||
@angular-devkit/schematics : 16.2.13
|
||||
@angular/cli : 16.2.13
|
||||
@ionic/angular-toolkit : 9.0.0
|
||||
|
||||
Capacitor CLI : 5.2.1
|
||||
@capacitor/android : 5.2.1
|
||||
@capacitor/core : 5.2.1
|
||||
@capacitor/ios : 5.2.1
|
||||
|
||||
NodeJS : v18.16.1
|
||||
npm : 9.5.1
|
||||
Capacitor CLI : 5.7.4
|
||||
@capacitor/android : 5.7.4
|
||||
@capacitor/core : 5.7.4
|
||||
@capacitor/ios : 5.7.4
|
||||
```
|
||||
|
||||
## Privacy Policy
|
||||
|
|
2
android/.idea/misc.xml
generated
2
android/.idea/misc.xml
generated
|
@ -11,7 +11,7 @@
|
|||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
|
|
@ -7,8 +7,8 @@ android {
|
|||
applicationId "com.tomfong.simpleqr"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 4000100
|
||||
versionName "4.0.1"
|
||||
versionCode 4010000
|
||||
versionName "4.1.0"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
aaptOptions {
|
||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 4000100,
|
||||
"versionName": "4.0.1",
|
||||
"versionCode": 4010000,
|
||||
"versionName": "4.1.0",
|
||||
"outputFile": "app-release.apk"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -6,7 +6,7 @@ Mit der App ist das möglich
|
|||
|
||||
* QR-Code und andere Barcodes in Sekundenschnelle zu scannen, einschließlich UPC, EAN, Code 39/128, ITF, Codabar, Aztec, Data Matrix, PDF417, MaxiCode und GS1 DataBar.
|
||||
* Bilddateien zu importieren und den darauf befindlichen QR-Code zu scannen.
|
||||
* QR-Codes aus Vorlagen,die Freitext, URL, vCard-Kontakt, Telefonnummer, Nachricht, E-Mail und WLAN enthalten, zu erstellen.
|
||||
* QR-Codes aus Vorlagen,die Freitext, URL, vCard-Kontakt, Telefonnummer, Nachricht, Geolokalisierung, E-Mail und WLAN enthalten, zu erstellen.
|
||||
* Gescannte Ergebnissen, die gescannt wurden, erstellt oder erneut angezeigt wurden zu protokollieren. Diese protokollierten Aufzeichnungen können für schnellen Zugriff mit einem Lesezeichen versehen und auch gesichert werden.
|
||||
* Aufgaben auf dem Ergebnis mit einem Fingertipp zu erledigen, einschließlich, aber nicht beschränkt auf
|
||||
* Verwenden als Schlüsselwort für die Websuche.
|
||||
|
@ -19,5 +19,6 @@ Mit der App ist das möglich
|
|||
* Telefonnummer: Telefonanruf, Kontakt hinzufügen
|
||||
* Nachricht: Nachricht senden, Kontakt hinzufügen
|
||||
* E-Mail: E-Mail senden
|
||||
* Geolokalisierung: Karte öffnen
|
||||
* Passen Sie den generierten QR-Code an, z. Fehlerkorrekturstufe, Farbe, Rand und Bildschirmhelligkeit.
|
||||
* Die App anzupassen, z.B. App-Startseite, Sprache und Farbthema etc.
|
||||
|
|
3
fastlane/metadata/android/en-US/changelogs/4010000.txt
Normal file
3
fastlane/metadata/android/en-US/changelogs/4010000.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
* Support geolocation QR code
|
||||
* Support Portuguese (Brazil) language
|
||||
* Disable auto URL opening by default
|
|
@ -6,7 +6,7 @@ By using the app, you can:
|
|||
|
||||
* Scan QR Code and other barcodes in a second, including UPC, EAN, Code 39/128, ITF, Codabar, Aztec, Data Matrix, PDF417, MaxiCode and GS1 DataBar.
|
||||
* Import image files and scan the QR Code on it.
|
||||
* Create QR code from templates, which includes Free Text, URL, vCard Contact, Phone Number, Message, Email and Wi-Fi.
|
||||
* Create QR code from templates, which includes Free Text, URL, vCard Contact, Phone Number, Message, Email, Wi-Fi and Geolocation.
|
||||
* Automatically log results that you scan, create or view again. These logged records can be bookmarked for quick access, and also backupable.
|
||||
* Do tasks on the result with a tap, including but not limited to
|
||||
* Use it as a keyword to do web search.
|
||||
|
@ -14,10 +14,11 @@ By using the app, you can:
|
|||
* Execute base64 encoding/decoding on it.
|
||||
* Generate a new shareable QR code by using it as the content.
|
||||
* Do corresponding tasks if it is a
|
||||
* URL: Browse website
|
||||
* URL: Browse website / Open application
|
||||
* vCard contact: Add contact
|
||||
* Phone number: Phone call, add contact
|
||||
* Message: Send message, add contact
|
||||
* Email: Send email
|
||||
* Geolocation: Open map
|
||||
* Customize the generated QR code, e.g. error correction level, color, margin and screen brightness.
|
||||
* Customize the app, e.g. app initial page, language and color theme etc.
|
||||
|
|
|
@ -399,7 +399,7 @@
|
|||
INFOPLIST_FILE = App/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MARKETING_VERSION = 4.0.1;
|
||||
MARKETING_VERSION = 4.1.0;
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tomfong.simpleqr;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
@ -422,7 +422,7 @@
|
|||
INFOPLIST_FILE = App/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MARKETING_VERSION = 4.0.1;
|
||||
MARKETING_VERSION = 4.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tomfong.simpleqr;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "Simple QR";
|
||||
|
|
|
@ -1,36 +1,36 @@
|
|||
PODS:
|
||||
- Capacitor (5.2.1):
|
||||
- Capacitor (5.7.4):
|
||||
- CapacitorCordova
|
||||
- CapacitorApp (5.0.6):
|
||||
- CapacitorApp (5.0.7):
|
||||
- Capacitor
|
||||
- CapacitorCamera (5.0.6):
|
||||
- CapacitorCamera (5.0.9):
|
||||
- Capacitor
|
||||
- CapacitorClipboard (5.0.6):
|
||||
- CapacitorClipboard (5.0.7):
|
||||
- Capacitor
|
||||
- CapacitorCommunityBarcodeScanner (4.0.1):
|
||||
- Capacitor
|
||||
- CapacitorCommunityContacts (5.0.4):
|
||||
- CapacitorCommunityContacts (5.0.5):
|
||||
- Capacitor
|
||||
- CapacitorCommunityScreenBrightness (5.0.0):
|
||||
- Capacitor
|
||||
- CapacitorCordova (5.2.1)
|
||||
- CapacitorDevice (5.0.6):
|
||||
- CapacitorCordova (5.7.4)
|
||||
- CapacitorDevice (5.0.7):
|
||||
- Capacitor
|
||||
- CapacitorFilesystem (5.1.0):
|
||||
- CapacitorFilesystem (5.2.1):
|
||||
- Capacitor
|
||||
- CapacitorHaptics (5.0.6):
|
||||
- CapacitorHaptics (5.0.7):
|
||||
- Capacitor
|
||||
- CapacitorKeyboard (5.0.6):
|
||||
- CapacitorKeyboard (5.0.8):
|
||||
- Capacitor
|
||||
- CapacitorPreferences (5.0.6):
|
||||
- CapacitorPreferences (5.0.7):
|
||||
- Capacitor
|
||||
- CapacitorSplashScreen (5.0.6):
|
||||
- CapacitorSplashScreen (5.0.7):
|
||||
- Capacitor
|
||||
- CapacitorStatusBar (5.0.6):
|
||||
- CapacitorStatusBar (5.0.7):
|
||||
- Capacitor
|
||||
- CapacitorToast (5.0.6):
|
||||
- CapacitorToast (5.0.7):
|
||||
- Capacitor
|
||||
- CordovaPlugins (5.2.1):
|
||||
- CordovaPlugins (5.7.4):
|
||||
- CapacitorCordova
|
||||
|
||||
DEPENDENCIES:
|
||||
|
@ -89,23 +89,23 @@ EXTERNAL SOURCES:
|
|||
:path: "../capacitor-cordova-ios-plugins"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
Capacitor: 36510199454641113344c2e5ef43bf3f54b5af79
|
||||
CapacitorApp: 024e1b1bea5f883d79f6330d309bc441c88ad04a
|
||||
CapacitorCamera: 4a95204d13a05b0b726bf9086b44124349ab1952
|
||||
CapacitorClipboard: 77edf49827ea21da2a9c05c690a4a6a4d07199c4
|
||||
Capacitor: 4fe9adf012caceb4c71ffea2f1f4d005cdcbeea7
|
||||
CapacitorApp: 17fecd0e6cb23feafac7eb0939417389038b0979
|
||||
CapacitorCamera: 4892c5c392f60039d853dde78bc50ba19fbd113e
|
||||
CapacitorClipboard: 45e5e25f2271f98712985d422776cdc5a779cca1
|
||||
CapacitorCommunityBarcodeScanner: 7feb206489c8555a8ca0c74c57ddf49ead774eb8
|
||||
CapacitorCommunityContacts: 45de2477f7dc6265d267677939a2c75465d2ed87
|
||||
CapacitorCommunityContacts: e8fbc4d669c9478a29f1e104818b4c16e158b2e0
|
||||
CapacitorCommunityScreenBrightness: b2d9c6fffee6b684994cd69f727f2090e2f05c6d
|
||||
CapacitorCordova: d173eeb1635e62aa95a20874a5d5cbbf0aa1e0df
|
||||
CapacitorDevice: 2c968f98a1ec4d22357418c1521e7ddc46c675e6
|
||||
CapacitorFilesystem: 071f1ea81928a56c62c231f9f48f96983cf0eada
|
||||
CapacitorHaptics: 1fffc1217c7e64a472d7845be50fb0c2f7d4204c
|
||||
CapacitorKeyboard: b978154b024a5f65e044908e37d15b7de58b9d12
|
||||
CapacitorPreferences: f03954bcb0ff09c792909e46bff88e3183c16b10
|
||||
CapacitorSplashScreen: 5fa2ab5e46cf5cc530cf16a51c80c7a986579ccd
|
||||
CapacitorStatusBar: 565c0a1ebd79bb40d797606a8992b4a105885309
|
||||
CapacitorToast: bb0d79b78d9c27c0199b57f735dd50b8fc363489
|
||||
CordovaPlugins: b6cca1806c2470c768387b8e3f0d8193fed80787
|
||||
CapacitorCordova: a6e87fccc0307dee7aec1560ec9398485f2b0ce7
|
||||
CapacitorDevice: fc91bdb484dc0e70755e9b621cd557afe642613a
|
||||
CapacitorFilesystem: 9f3e3c7fea2fff12f46dd5b07a2914f2103e4cfc
|
||||
CapacitorHaptics: 7c7c206f0c96a628fed073830c96d28c4b2e772e
|
||||
CapacitorKeyboard: aec619a578235c6ce279075009a2689c2cf5c42c
|
||||
CapacitorPreferences: 77ac427e98db83bace772455f8ba447430382c4c
|
||||
CapacitorSplashScreen: dd3de3f3644710fa2a697cfb91ec262eece4d242
|
||||
CapacitorStatusBar: f390fbb49b82ffb754ea4b3cf71dc8b048baf3e7
|
||||
CapacitorToast: c8bb89eeb59a23c1fc298f138cc06c8ff4d90ac1
|
||||
CordovaPlugins: 5495649167d6829fea7bc7eacd2034646aee5bd1
|
||||
|
||||
PODFILE CHECKSUM: dc80e3587547d0d302dad43090af30e2a96d6c5a
|
||||
|
||||
|
|
6929
package-lock.json
generated
6929
package-lock.json
generated
File diff suppressed because it is too large
Load diff
86
package.json
86
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "simple-qr",
|
||||
"version": "4.0.1",
|
||||
"version": "4.1.0",
|
||||
"author": "Tom Fong",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
|
@ -20,48 +20,48 @@
|
|||
"@angular/cdk": "^16.1.3",
|
||||
"@angular/common": "^16.1.3",
|
||||
"@angular/core": "^16.1.3",
|
||||
"@angular/forms": "^16.1.5",
|
||||
"@angular/localize": "^16.1.5",
|
||||
"@angular/forms": "^16.2.12",
|
||||
"@angular/localize": "^16.2.12",
|
||||
"@angular/material": "^16.1.3",
|
||||
"@angular/material-moment-adapter": "^16.1.5",
|
||||
"@angular/material-moment-adapter": "^16.2.14",
|
||||
"@angular/platform-browser": "^16.1.3",
|
||||
"@angular/platform-browser-dynamic": "^16.1.5",
|
||||
"@angular/router": "^16.1.5",
|
||||
"@awesome-cordova-plugins/aes-256": "^6.4.0",
|
||||
"@awesome-cordova-plugins/chooser": "^6.4.0",
|
||||
"@awesome-cordova-plugins/core": "^6.4.0",
|
||||
"@awesome-cordova-plugins/screen-orientation": "^6.4.0",
|
||||
"@awesome-cordova-plugins/sms": "^6.4.0",
|
||||
"@awesome-cordova-plugins/social-sharing": "^6.4.0",
|
||||
"@awesome-cordova-plugins/theme-detection": "^6.4.0",
|
||||
"@angular/platform-browser-dynamic": "^16.2.12",
|
||||
"@angular/router": "^16.2.12",
|
||||
"@awesome-cordova-plugins/aes-256": "^6.6.0",
|
||||
"@awesome-cordova-plugins/chooser": "^6.6.0",
|
||||
"@awesome-cordova-plugins/core": "^6.6.0",
|
||||
"@awesome-cordova-plugins/screen-orientation": "^6.6.0",
|
||||
"@awesome-cordova-plugins/sms": "^6.6.0",
|
||||
"@awesome-cordova-plugins/social-sharing": "^6.6.0",
|
||||
"@awesome-cordova-plugins/theme-detection": "^6.6.0",
|
||||
"@capacitor-community/barcode-scanner": "^4.0.1",
|
||||
"@capacitor-community/contacts": "^5.0.4",
|
||||
"@capacitor-community/contacts": "^5.0.5",
|
||||
"@capacitor-community/screen-brightness": "^5.0.0",
|
||||
"@capacitor/android": "^5.2.1",
|
||||
"@capacitor/app": "^5.0.6",
|
||||
"@capacitor/camera": "^5.0.6",
|
||||
"@capacitor/clipboard": "^5.0.6",
|
||||
"@capacitor/core": "^5.2.1",
|
||||
"@capacitor/device": "^5.0.6",
|
||||
"@capacitor/filesystem": "^5.1.0",
|
||||
"@capacitor/haptics": "^5.0.6",
|
||||
"@capacitor/ios": "^5.2.1",
|
||||
"@capacitor/keyboard": "^5.0.6",
|
||||
"@capacitor/preferences": "^5.0.6",
|
||||
"@capacitor/splash-screen": "^5.0.6",
|
||||
"@capacitor/status-bar": "^5.0.6",
|
||||
"@capacitor/toast": "^5.0.6",
|
||||
"@ionic/angular": "^7.1.3",
|
||||
"@capacitor/android": "^5.7.4",
|
||||
"@capacitor/app": "^5.0.7",
|
||||
"@capacitor/camera": "^5.0.9",
|
||||
"@capacitor/clipboard": "^5.0.7",
|
||||
"@capacitor/core": "^5.7.4",
|
||||
"@capacitor/device": "^5.0.7",
|
||||
"@capacitor/filesystem": "^5.2.1",
|
||||
"@capacitor/haptics": "^5.0.7",
|
||||
"@capacitor/ios": "^5.7.4",
|
||||
"@capacitor/keyboard": "^5.0.8",
|
||||
"@capacitor/preferences": "^5.0.7",
|
||||
"@capacitor/splash-screen": "^5.0.7",
|
||||
"@capacitor/status-bar": "^5.0.7",
|
||||
"@capacitor/toast": "^5.0.7",
|
||||
"@ionic/angular": "^7.8.2",
|
||||
"@ionic/storage": "^4.0.0",
|
||||
"@ionic/storage-angular": "^4.0.0",
|
||||
"@ng-bootstrap/ng-bootstrap": "^15.1.0",
|
||||
"@ng-bootstrap/ng-bootstrap": "^15.1.2",
|
||||
"@ngx-translate/core": "^15.0.0",
|
||||
"@ngx-translate/http-loader": "^8.0.0",
|
||||
"angularx-qrcode": "^16.0.0",
|
||||
"bootstrap": "^5.3.0",
|
||||
"angularx-qrcode": "^16.0.2",
|
||||
"bootstrap": "^5.3.3",
|
||||
"cordova-plugin-aes256-encryption": "^2.0.1",
|
||||
"cordova-plugin-chooser": "^1.3.2",
|
||||
"cordova-plugin-screen-orientation": "^3.0.3",
|
||||
"cordova-plugin-screen-orientation": "^3.0.4",
|
||||
"cordova-plugin-theme-detection": "^1.3.0",
|
||||
"cordova-plugin-x-socialsharing": "^6.0.4",
|
||||
"cordova-sms-plugin": "^1.0.3",
|
||||
|
@ -74,26 +74,26 @@
|
|||
"properties-parser": "^0.3.1",
|
||||
"rxjs": "^7.8.1",
|
||||
"strip-final-newline": "^2.0.0",
|
||||
"tslib": "^2.6.0",
|
||||
"tslib": "^2.6.2",
|
||||
"uuid": "^8.3.2",
|
||||
"zone.js": "^0.13.1"
|
||||
"zone.js": "^0.13.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "^16.1.4",
|
||||
"@angular/cli": "^16.1.4",
|
||||
"@angular-devkit/build-angular": "^16.2.13",
|
||||
"@angular/cli": "^16.2.13",
|
||||
"@angular/compiler": "^16.1.3",
|
||||
"@angular/compiler-cli": "^16.1.3",
|
||||
"@angular/language-service": "^16.1.5",
|
||||
"@capacitor/cli": "^5.2.1",
|
||||
"@angular/language-service": "^16.2.12",
|
||||
"@capacitor/cli": "^5.7.4",
|
||||
"@ionic/angular-toolkit": "^9.0.0",
|
||||
"@ionic/cli": "^7.1.1",
|
||||
"@types/jasmine": "^3.10.11",
|
||||
"@types/jasminewd2": "^2.0.10",
|
||||
"@ionic/cli": "^7.2.0",
|
||||
"@types/jasmine": "^3.10.18",
|
||||
"@types/jasminewd2": "^2.0.13",
|
||||
"@types/node": "^12.20.55",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"jasmine-core": "~3.8.0",
|
||||
"jasmine-spec-reporter": "~5.0.0",
|
||||
"karma": "^6.4.2",
|
||||
"karma": "^6.4.3",
|
||||
"karma-chrome-launcher": "^3.2.0",
|
||||
"karma-coverage": "~2.0.3",
|
||||
"karma-coverage-istanbul-reporter": "~3.0.2",
|
||||
|
|
|
@ -215,6 +215,25 @@
|
|||
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="contentType === 'geo'">
|
||||
<ion-row class="ion-padding-horizontal" [@inAnimation]>
|
||||
<ion-col>
|
||||
<mat-form-field [class]="ngMatThemeClass" appearance="outline" color="accent">
|
||||
<mat-label>{{ 'LATITUDE' | translate}}</mat-label>
|
||||
<input matInput [(ngModel)]="latitude" type="number" #latitudeInput>
|
||||
</mat-form-field>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
<ion-row class="ion-padding-horizontal" [@inAnimation]>
|
||||
<ion-col>
|
||||
<mat-form-field [class]="ngMatThemeClass" appearance="outline" color="accent">
|
||||
<mat-label>{{ 'LONGITUDE' | translate}}</mat-label>
|
||||
<input matInput [(ngModel)]="longitude" type="number" #longitudeInput>
|
||||
</mat-form-field>
|
||||
</ion-col>
|
||||
</ion-row>
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="contentType === 'phone'">
|
||||
<ion-row class="ion-padding-horizontal" [@inAnimation]>
|
||||
<ion-col>
|
||||
|
|
|
@ -5,7 +5,7 @@ import { Haptics, ImpactStyle, NotificationType } from '@capacitor/haptics';
|
|||
import { AlertController, LoadingController, ToastController } from '@ionic/angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { format } from 'date-fns';
|
||||
import { EnvService } from 'src/app/services/env.service';
|
||||
import { EnvService, QrCreateContentTypeType } from 'src/app/services/env.service';
|
||||
import { Toast } from '@capacitor/toast';
|
||||
import { fadeIn } from 'src/app/utils/animations';
|
||||
import { SplashScreen } from '@capacitor/splash-screen';
|
||||
|
@ -23,6 +23,7 @@ export class GeneratePage {
|
|||
freeTxtText: string = "Free Text";
|
||||
urlText: string = "URL";
|
||||
contactText: string = "vCard Contact";
|
||||
geolocationText: string = "Geolocation";
|
||||
phoneText: string = "Phone";
|
||||
smsText: string = "Message";
|
||||
emailW3CText: string = "Email (W3C Standard)";
|
||||
|
@ -37,6 +38,9 @@ export class GeneratePage {
|
|||
emailSubject: string = "";
|
||||
emailBody: string = "";
|
||||
|
||||
latitude: number = 0;
|
||||
longitude: number = 0;
|
||||
|
||||
phoneNumber: string = "";
|
||||
|
||||
smsMessage: string = "";
|
||||
|
@ -84,17 +88,18 @@ export class GeneratePage {
|
|||
{ text: this.wpaText, value: "WPA" },
|
||||
]
|
||||
|
||||
contentTypes: { text: string, value: "freeText" | "url" | "contact" | "phone" | "sms" | "emailW3C" | "emailDocomo" | "wifi" }[] = [
|
||||
contentTypes: { text: string, value: QrCreateContentTypeType }[] = [
|
||||
{ text: this.freeTxtText, value: 'freeText' },
|
||||
{ text: this.emailW3CText, value: 'emailW3C' },
|
||||
{ text: this.emailDocomoText, value: 'emailDocomo' },
|
||||
{ text: this.geolocationText, value: 'geo' },
|
||||
{ text: this.phoneText, value: 'phone' },
|
||||
{ text: this.smsText, value: 'sms' },
|
||||
{ text: this.urlText, value: 'url' },
|
||||
{ text: this.contactText, value: 'contact' },
|
||||
{ text: this.wifiText, value: 'wifi' },
|
||||
];
|
||||
contentType: "freeText" | "url" | "contact" | "phone" | "sms" | "emailW3C" | "emailDocomo" | "wifi" = "freeText";
|
||||
contentType: QrCreateContentTypeType = "freeText";
|
||||
|
||||
constructor(
|
||||
public translate: TranslateService,
|
||||
|
@ -113,6 +118,7 @@ export class GeneratePage {
|
|||
this.freeTxtText = this.translate.instant("FREE_TEXT");
|
||||
this.urlText = this.translate.instant("URL");
|
||||
this.contactText = this.translate.instant("VCARD_CONTACT");
|
||||
this.geolocationText = this.translate.instant("GEOLOCATION");
|
||||
this.phoneText = this.translate.instant("PHONE_NO");
|
||||
this.smsText = this.translate.instant("MESSAGE");
|
||||
this.emailW3CText = this.translate.instant("EMAIL_W3C_STANDARD");
|
||||
|
@ -122,6 +128,7 @@ export class GeneratePage {
|
|||
{ text: this.freeTxtText, value: 'freeText' },
|
||||
{ text: this.emailW3CText, value: 'emailW3C' },
|
||||
{ text: this.emailDocomoText, value: 'emailDocomo' },
|
||||
{ text: this.geolocationText, value: 'geo' },
|
||||
{ text: this.phoneText, value: 'phone' },
|
||||
{ text: this.smsText, value: 'sms' },
|
||||
{ text: this.urlText, value: 'url' },
|
||||
|
@ -195,6 +202,9 @@ export class GeneratePage {
|
|||
this.emailSubject = "";
|
||||
this.emailBody = "";
|
||||
|
||||
this.latitude = 0;
|
||||
this.longitude = 0;
|
||||
|
||||
this.phoneNumber = "";
|
||||
|
||||
this.smsMessage = "";
|
||||
|
@ -263,6 +273,9 @@ export class GeneratePage {
|
|||
this.qrCodeContent = `MATMSG:TO:${this.toEmails[0]};SUB:${this.emailSubject};BODY:${this.emailBody};;`;
|
||||
this.qrCodeContent = encodeURI(this.qrCodeContent);
|
||||
break;
|
||||
case "geo":
|
||||
this.qrCodeContent = `geo:${this.latitude},${this.longitude}`;
|
||||
break;
|
||||
case "phone":
|
||||
this.qrCodeContent = "tel:";
|
||||
this.qrCodeContent += this.phoneNumber;
|
||||
|
@ -348,7 +361,7 @@ export class GeneratePage {
|
|||
return format(new Date(), "yyyy-MM-dd");
|
||||
}
|
||||
|
||||
getIcon(type: "freeText" | "url" | "contact" | "phone" | "sms" | "emailW3C" | "emailDocomo" | "wifi"): string {
|
||||
getIcon(type: QrCreateContentTypeType): string {
|
||||
switch (type) {
|
||||
case "freeText":
|
||||
return "format_align_left";
|
||||
|
@ -356,6 +369,8 @@ export class GeneratePage {
|
|||
return "link";
|
||||
case "contact":
|
||||
return "contact_phone";
|
||||
case "geo":
|
||||
return "location_on";
|
||||
case "phone":
|
||||
return "call";
|
||||
case "sms":
|
||||
|
@ -371,7 +386,7 @@ export class GeneratePage {
|
|||
}
|
||||
}
|
||||
|
||||
getText(type: "freeText" | "url" | "contact" | "phone" | "sms" | "emailW3C" | "emailDocomo" | "wifi"): string {
|
||||
getText(type: QrCreateContentTypeType): string {
|
||||
switch (type) {
|
||||
case "freeText":
|
||||
return this.freeTxtText;
|
||||
|
@ -379,6 +394,8 @@ export class GeneratePage {
|
|||
return this.urlText;
|
||||
case "contact":
|
||||
return this.contactText;
|
||||
case "geo":
|
||||
return this.geolocationText;
|
||||
case "phone":
|
||||
return this.phoneText;
|
||||
case "sms":
|
||||
|
|
|
@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router';
|
|||
import { AlertController, IonItemSliding, LoadingController, ModalController, PopoverController, ToastController } from '@ionic/angular';
|
||||
import { EnvService } from 'src/app/services/env.service';
|
||||
import { format, Locale } from 'date-fns';
|
||||
import { de, enUS, fr, it, ru, zhCN, zhHK } from 'date-fns/locale';
|
||||
import { de, enUS, fr, it, ptBR, ru, zhCN, zhHK } from 'date-fns/locale';
|
||||
import { ScanRecord } from 'src/app/models/scan-record';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { Bookmark } from 'src/app/models/bookmark';
|
||||
|
@ -138,6 +138,9 @@ export class HistoryPage {
|
|||
case "it":
|
||||
locale = it;
|
||||
break;
|
||||
case "pt-BR":
|
||||
locale = ptBR;
|
||||
break;
|
||||
case "ru":
|
||||
locale = ru;
|
||||
break;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<ion-col>
|
||||
<ion-badge class="p-2" color="primary">
|
||||
<div class="d-flex align-items-center">
|
||||
<mat-icon class="me-3" *ngIf="contentTypeIcon != ''" [fontIcon]="contentTypeIcon">
|
||||
<mat-icon class="me-2" *ngIf="contentTypeIcon != ''" [fontIcon]="contentTypeIcon">
|
||||
</mat-icon>
|
||||
<span>{{ contentTypeText }}</span>
|
||||
</div>
|
||||
|
@ -96,6 +96,15 @@
|
|||
[ngTemplateOutletContext]="{ label: 'HIDDEN_NETWORK_?' | translate, content: wifiHidden === true? ('YES' | translate) : ('NO' | translate) }">
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="contentType === 'geo' && qrCodeContent && qrCodeContent.trim().length > 0 && latitude != null"
|
||||
[ngTemplateOutlet]="contentBlock" [ngTemplateOutletContext]="{ label: 'LATITUDE' | translate, content: latitude }">
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="contentType === 'geo' && qrCodeContent && qrCodeContent.trim().length > 0 && longitude != null"
|
||||
[ngTemplateOutlet]="contentBlock"
|
||||
[ngTemplateOutletContext]="{ label: 'LONGITUDE' | translate, content: longitude }">
|
||||
</ng-container>
|
||||
|
||||
<div class="ion-padding-horizontal ion-margin-horizontal ion-padding-bottom">
|
||||
</div>
|
||||
|
||||
|
@ -126,6 +135,13 @@
|
|||
</ion-button>
|
||||
</ion-row>
|
||||
|
||||
<ion-row *ngIf="contentType === 'geo' && env.showOpenUrlButton === 'on'"
|
||||
class="d-flex justify-content-center">
|
||||
<ion-button (click)="tapHaptic(); openLink()" [color]="'primary'" fill="clear">
|
||||
<ion-icon name="map"></ion-icon>
|
||||
</ion-button>
|
||||
</ion-row>
|
||||
|
||||
<ion-row *ngIf="contentType === 'contact' && env.showAddContactButton === 'on'"
|
||||
class="d-flex justify-content-center">
|
||||
<ion-button (click)="tapHaptic(); addContact()" [color]="'primary'" fill="clear">
|
||||
|
@ -245,10 +261,11 @@
|
|||
<ion-icon class="pe-2" name="globe"></ion-icon>
|
||||
<ion-label>{{ 'BROWSE' | translate}}</ion-label>
|
||||
</ion-button>
|
||||
<ion-button class="pe-1" *ngIf="contentType === 'url' && env.showOpenUrlButton === 'on' && !isHttp"
|
||||
<ion-button class="pe-1"
|
||||
*ngIf="(contentType === 'url' || contentType === 'geo') && env.showOpenUrlButton === 'on' && !isHttp"
|
||||
(click)="tapHaptic(); openLink()" [color]="env.colorTheme === 'light'? 'dark' : 'light'" fill="outline"
|
||||
shape="round" [@inAnimation]>
|
||||
<ion-icon class="pe-2" name="open"></ion-icon>
|
||||
<ion-icon class="pe-2" [name]="contentType === 'geo'? 'map' : 'open'"></ion-icon>
|
||||
<ion-label>{{ 'OPEN' | translate}}</ion-label>
|
||||
</ion-button>
|
||||
<ion-button class="pe-1"
|
||||
|
@ -340,7 +357,8 @@
|
|||
[cdkAutosizeMaxRows]="20" readonly>
|
||||
</textarea>
|
||||
<mat-hint *ngIf="hint && hint != ''" style="opacity: 0.5;">{{ hint }}</mat-hint>
|
||||
<button mat-button color="primary" (click)="editContent()" *ngIf="showEdit" class="m-0 p-0 mt-3" style="background-color: transparent !important; color: var(--ion-color-primary) !important;">
|
||||
<button mat-button color="primary" (click)="editContent()" *ngIf="showEdit" class="m-0 p-0 mt-3"
|
||||
style="background-color: transparent !important; color: var(--ion-color-primary) !important;">
|
||||
{{ 'EDIT' | translate }}
|
||||
</button>
|
||||
</mat-form-field>
|
||||
|
|
|
@ -6,7 +6,7 @@ import { Haptics, ImpactStyle } from '@capacitor/haptics';
|
|||
import { AlertController, LoadingController, ModalController, Platform } from '@ionic/angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { VCardContact } from 'src/app/models/v-card-contact';
|
||||
import { EnvService } from 'src/app/services/env.service';
|
||||
import { EnvService, QrResultContentTypeType } from 'src/app/services/env.service';
|
||||
import { Toast } from '@capacitor/toast';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { BarcodeScanner } from '@capacitor-community/barcode-scanner';
|
||||
|
@ -23,7 +23,7 @@ import { QRCodeElementType } from 'angularx-qrcode';
|
|||
})
|
||||
export class ResultPage {
|
||||
|
||||
contentType: "freeText" | "url" | "contact" | "phone" | "sms" | "emailW3C" | "emailDocomo" | "wifi" = "freeText";
|
||||
contentType: QrResultContentTypeType = "freeText";
|
||||
|
||||
qrCodeContent: string;
|
||||
qrElementType: QRCodeElementType = "canvas";
|
||||
|
@ -45,6 +45,9 @@ export class ResultPage {
|
|||
wifiEncryption: 'NONE' | 'WEP' | 'WPA';
|
||||
wifiHidden: boolean = false;
|
||||
|
||||
latitude: number;
|
||||
longitude: number;
|
||||
|
||||
base64Encoded: boolean = false;
|
||||
base64EncodedText: string = "";
|
||||
base64Decoded: boolean = false;
|
||||
|
@ -138,6 +141,8 @@ export class ResultPage {
|
|||
delete this.wifiPassword
|
||||
delete this.wifiEncryption
|
||||
delete this.wifiHidden
|
||||
delete this.latitude
|
||||
delete this.longitude
|
||||
this.base64Encoded = false;
|
||||
this.base64EncodedText = "";
|
||||
this.base64Decoded = false;
|
||||
|
@ -157,6 +162,7 @@ export class ResultPage {
|
|||
const emailW3CPrefix = "MAILTO:";
|
||||
const emailDoconoPrefix = "MATMSG:";
|
||||
const wifiPrefix = "WIFI:";
|
||||
const geoPrefix = "GEO:";
|
||||
const content0 = this.qrCodeContent.trim();
|
||||
const tContent = this.qrCodeContent.trim().toUpperCase();
|
||||
if (tContent.substr(0, contactPrefix.length) === contactPrefix) {
|
||||
|
@ -183,6 +189,10 @@ export class ResultPage {
|
|||
} else if (tContent.substr(0, wifiPrefix.length) === wifiPrefix) {
|
||||
this.contentType = "wifi";
|
||||
this.prepareWifi();
|
||||
} else if (tContent.substring(0, geoPrefix.length) === geoPrefix) {
|
||||
this.contentType = "geo";
|
||||
this.latitude = +tContent.substring(geoPrefix.length, tContent.indexOf(","));
|
||||
this.longitude = +tContent.substring(tContent.indexOf(",") + 1);
|
||||
} else if (this.isValidUrl(content0)) {
|
||||
this.contentType = "url";
|
||||
} else {
|
||||
|
@ -880,6 +890,8 @@ export class ResultPage {
|
|||
return this.translate.instant("EMAIL_W3C_STANDARD");
|
||||
case 'emailDocomo':
|
||||
return this.translate.instant("EMAIL_NTT_DOCOMO");
|
||||
case 'geo':
|
||||
return this.translate.instant("GEOLOCATION");
|
||||
case 'phone':
|
||||
return this.translate.instant("PHONE_NO");
|
||||
case 'sms':
|
||||
|
@ -901,6 +913,8 @@ export class ResultPage {
|
|||
return "link";
|
||||
case "contact":
|
||||
return "contact_phone";
|
||||
case 'geo':
|
||||
return "location_on";
|
||||
case "phone":
|
||||
return "call";
|
||||
case "sms":
|
||||
|
|
|
@ -66,6 +66,17 @@
|
|||
<ion-radio class="ion-margin-end" slot="end" [value]="'it'" [color]="'primary'">
|
||||
</ion-radio>
|
||||
</ion-item>
|
||||
<ion-item class="ion-no-padding ripple-parent" detail="false" lines="none">
|
||||
<ion-label class="ion-padding-start">
|
||||
<p class="ion-padding pre-line">
|
||||
<ion-text [color]="env.colorTheme === 'light'? 'dark' : 'light'" style="font-size: large;">
|
||||
Português do Brasil (pt-BR)
|
||||
</ion-text>
|
||||
</p>
|
||||
</ion-label>
|
||||
<ion-radio class="ion-margin-end" slot="end" [value]="'pt-BR'" [color]="'primary'">
|
||||
</ion-radio>
|
||||
</ion-item>
|
||||
<ion-item class="ion-no-padding ripple-parent" detail="false" lines="none">
|
||||
<ion-label class="ion-padding-start">
|
||||
<p class="ion-padding pre-line">
|
||||
|
|
|
@ -13,7 +13,7 @@ import { Bookmark } from 'src/app/models/bookmark';
|
|||
import { SocialSharing } from '@awesome-cordova-plugins/social-sharing/ngx';
|
||||
import { Haptics, ImpactStyle } from '@capacitor/haptics';
|
||||
import { Preferences } from '@capacitor/preferences';
|
||||
import { de, enUS, fr, it, ru, zhCN, zhHK } from 'date-fns/locale';
|
||||
import { de, enUS, fr, it, ptBR, ru, zhCN, zhHK } from 'date-fns/locale';
|
||||
|
||||
@Component({
|
||||
selector: 'app-setting-record',
|
||||
|
@ -196,7 +196,11 @@ export class SettingRecordPage {
|
|||
handler: async data => {
|
||||
alert.dismiss();
|
||||
if (data.secret != null && data.secret.trim().length == 49) {
|
||||
await this.restore(value.data, data.secret.trim());
|
||||
if ((typeof value.data) == 'string') {
|
||||
await this.restore(value.data as string, data.secret.trim());
|
||||
} else {
|
||||
this.presentToast(this.translate.instant("MSG.RESTORE_FAILED"), "short", "bottom");
|
||||
}
|
||||
} else {
|
||||
this.presentToast(this.translate.instant("MSG.PLEASE_INPUT_VALID_SECRET"), "short", "bottom");
|
||||
}
|
||||
|
@ -316,6 +320,9 @@ export class SettingRecordPage {
|
|||
case "it":
|
||||
rawCsvData = "ID,Contenuto,Creato a,Fonte,Tipo di codice a barre,Aggiunto ai preferiti?,Etichetta\r\n";
|
||||
break;
|
||||
case "pt-BR":
|
||||
rawCsvData = "ID,Conteúdo,Criado em,Origem,Tipo de código de barras,Marcado como favorito?,Tag\r\n";
|
||||
break;
|
||||
case "ru":
|
||||
rawCsvData = "ID,Содержание,Создано в,Источник,Тип штрих-кода,В закладках?,Ярлык\r\n";
|
||||
break;
|
||||
|
@ -474,6 +481,9 @@ export class SettingRecordPage {
|
|||
case "it":
|
||||
locale = it;
|
||||
break;
|
||||
case "pt-BR":
|
||||
locale = ptBR;
|
||||
break;
|
||||
case "ru":
|
||||
locale = ru;
|
||||
break;
|
||||
|
@ -507,6 +517,9 @@ export class SettingRecordPage {
|
|||
case "it":
|
||||
locale = it;
|
||||
break;
|
||||
case "pt-BR":
|
||||
locale = ptBR;
|
||||
break;
|
||||
case "ru":
|
||||
locale = ru;
|
||||
break;
|
||||
|
|
|
@ -86,7 +86,6 @@ export class TabsPage {
|
|||
await Preferences.set({ key: storageKey, value: 'yes' });
|
||||
if (!this.env.notShowUpdateNotes) {
|
||||
this.env.notShowUpdateNotes = true;
|
||||
await this.showUpdateNotes();
|
||||
const versionWording = this.translate.instant("VERSION_VERSION") as string;
|
||||
await this.presentToast(versionWording.replace("{version}", this.env.appVersionNumber), "short", 'bottom');
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|||
import { Preferences } from '@capacitor/preferences';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
export declare type LanguageType = 'de' | 'en' | 'fr' | 'it' | 'ru' | 'zh-CN' | 'zh-HK';
|
||||
export declare type LanguageType = 'de' | 'en' | 'fr' | 'it' | 'pt-BR' | 'ru' | 'zh-CN' | 'zh-HK';
|
||||
export declare type TabPageType = "/tabs/scan" | "/tabs/generate" | "/tabs/import-image" | "/tabs/history" | "/tabs/setting";
|
||||
export declare type HistoryPageSegmentType = 'history' | 'bookmarks';
|
||||
export declare type OnOffType = "on" | "off";
|
||||
|
@ -25,18 +25,20 @@ export declare type VibrationType = "on" | "off" | 'on-haptic' | 'on-scanned';
|
|||
export declare type OrientationType = 'portrait' | 'landscape';
|
||||
export declare type SearchEngineType = 'google' | 'bing' | 'yahoo' | 'duckduckgo' | 'yandex' | 'ecosia' | 'brave';
|
||||
export declare type ResultPageButtonsType = 'detailed' | 'icon-only';
|
||||
export declare type QrResultContentTypeType = "freeText" | "url" | "contact" | "phone" | "sms" | "emailW3C" | "emailDocomo" | "wifi" | "geo";
|
||||
export declare type QrCreateContentTypeType = "freeText" | "url" | "contact" | "phone" | "sms" | "emailW3C" | "emailDocomo" | "wifi" | "geo";
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class EnvService {
|
||||
|
||||
public appVersionNumber: string = '4.0.1';
|
||||
public appVersionNumber: string = '4.1.0';
|
||||
|
||||
public startPage: TabPageType = "/tabs/scan";
|
||||
public historyPageStartSegment: HistoryPageSegmentType = 'history';
|
||||
public startPageHeader: OnOffType = 'on';
|
||||
public languages: LanguageType[] = ['en', 'zh-HK', 'zh-CN', 'de', 'fr', 'it'];
|
||||
public languages: LanguageType[] = ['en', 'zh-HK', 'zh-CN', 'de', 'fr', 'it', 'pt-BR', 'ru'];
|
||||
public language: LanguageType = 'en';
|
||||
public selectedLanguage: 'default' | LanguageType = 'default';
|
||||
public colorTheme: ColorThemeType = 'light';
|
||||
|
@ -45,7 +47,7 @@ export class EnvService {
|
|||
public recordsLimit: 30 | 50 | 100 | -1 = -1;
|
||||
public showNumberOfRecords: OnOffType = 'on';
|
||||
public autoMaxBrightness: OnOffType = 'off';
|
||||
public autoOpenUrl: OnOffType = 'on';
|
||||
public autoOpenUrl: OnOffType = 'off';
|
||||
public errorCorrectionLevel: ErrorCorrectionLevelType = 'M';
|
||||
public qrCodeLightR: number = 255;
|
||||
public qrCodeLightG: number = 255;
|
||||
|
@ -125,10 +127,10 @@ export class EnvService {
|
|||
public readonly KEY_SHOW_OPEN_FOOD_FACTS_BUTTON = "showOpenFoodFactsButton";
|
||||
public readonly KEY_AUTO_EXIT_MIN = "autoExitAppMin";
|
||||
|
||||
public readonly KEY_ANDROID_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40001";
|
||||
public readonly KEY_IOS_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40001";
|
||||
public readonly KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40000";
|
||||
public readonly KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40000";
|
||||
public readonly KEY_ANDROID_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40100";
|
||||
public readonly KEY_IOS_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40100";
|
||||
public readonly KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40001";
|
||||
public readonly KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v40001";
|
||||
|
||||
public readonly APP_FOLDER_NAME: string = 'SimpleQR';
|
||||
|
||||
|
@ -1008,7 +1010,7 @@ export class EnvService {
|
|||
if (result.value != null) {
|
||||
this.autoOpenUrl = result.value as OnOffType;
|
||||
} else {
|
||||
this.autoOpenUrl = 'on';
|
||||
this.autoOpenUrl = 'off';
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@ -1207,7 +1209,7 @@ export class EnvService {
|
|||
this.recordsLimit = -1;
|
||||
this.showNumberOfRecords = 'on';
|
||||
this.autoMaxBrightness = 'off';
|
||||
this.autoOpenUrl = 'on';
|
||||
this.autoOpenUrl = 'off';
|
||||
this.errorCorrectionLevel = 'M';
|
||||
this.qrCodeLightR = 255;
|
||||
this.qrCodeLightG = 255;
|
||||
|
@ -1281,7 +1283,7 @@ export class EnvService {
|
|||
this.autoMaxBrightness = 'off';
|
||||
await Preferences.set({ key: this.KEY_AUTO_MAX_BRIGHTNESS, value: this.autoMaxBrightness });
|
||||
|
||||
this.autoOpenUrl = 'on';
|
||||
this.autoOpenUrl = 'off';
|
||||
await Preferences.set({ key: this.KEY_AUTO_OPEN_URL, value: this.autoOpenUrl });
|
||||
|
||||
this.errorCorrectionLevel = 'M';
|
||||
|
@ -1632,6 +1634,9 @@ export class EnvService {
|
|||
case "it":
|
||||
language = "it"
|
||||
break;
|
||||
case "pt":
|
||||
language = "pt-BR";
|
||||
break;
|
||||
case "ru":
|
||||
language = "ru"
|
||||
break;
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
"FULL_RESET": "Voller Reset",
|
||||
"FUNCTIONS": "Funktionen",
|
||||
"GENDER": "Geschlecht",
|
||||
"GEOLOCATION": "Geolokalisierung",
|
||||
"GOOGLE_SEARCH": "Google-Suche",
|
||||
"HAPTIC_FEEDBACK_ONLY": "Nur haptisches Feedback",
|
||||
"HIDDEN_NETWORK_?": "Verstecktes Netzwerk?",
|
||||
|
@ -105,6 +106,7 @@
|
|||
"JOB_TITLE": "Berufsbezeichnung",
|
||||
"LANGUAGE": "Sprache",
|
||||
"LAST_NAME": "Nachname",
|
||||
"LATITUDE": "Breitengrad",
|
||||
"LEVEL_H": "Level H",
|
||||
"LEVEL_L": "Level L",
|
||||
"LEVEL_M": "Level M",
|
||||
|
@ -115,6 +117,7 @@
|
|||
"LOCK_PORTRAIT": "Porträt sperren",
|
||||
"LOG": "Protokoll",
|
||||
"LOG_BACKUP_AND_RESTORE": "Protokoll, Sicherung und Wiederherstellung",
|
||||
"LONGITUDE": "Längengrad",
|
||||
"MALE": "Männlich",
|
||||
"MANAGE_RECORDS": "Aufzeichnungen verwalten",
|
||||
"MARGIN": "Rand",
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
"FULL_RESET": "Full Reset",
|
||||
"FUNCTIONS": "Functions",
|
||||
"GENDER": "Gender",
|
||||
"GEOLOCATION": "Geolocation",
|
||||
"GOOGLE_SEARCH": "Google Search",
|
||||
"HAPTIC_FEEDBACK_ONLY": "Haptic Feedback Only",
|
||||
"HIDDEN_NETWORK_?": "Hidden Network?",
|
||||
|
@ -105,6 +106,7 @@
|
|||
"JOB_TITLE": "Job Title",
|
||||
"LANGUAGE": "Language",
|
||||
"LAST_NAME": "Last Name",
|
||||
"LATITUDE": "Latitude",
|
||||
"LEVEL_H": "Level H",
|
||||
"LEVEL_L": "Level L",
|
||||
"LEVEL_M": "Level M",
|
||||
|
@ -115,6 +117,7 @@
|
|||
"LOCK_PORTRAIT": "Lock Portrait",
|
||||
"LOG": "Log",
|
||||
"LOG_BACKUP_AND_RESTORE": "Log, Backup & Restore",
|
||||
"LONGITUDE": "Longitude",
|
||||
"MALE": "Male",
|
||||
"MANAGE_RECORDS": "Manage Records",
|
||||
"MARGIN": "Margin",
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
"FULL_RESET": "Réinitialiser complètement",
|
||||
"FUNCTIONS": "Fonctions",
|
||||
"GENDER": "Sexe",
|
||||
"GEOLOCATION": "Géolocalisation",
|
||||
"GOOGLE_SEARCH": "Recherche Google",
|
||||
"HAPTIC_FEEDBACK_ONLY": "Retour haptique uniquement",
|
||||
"HIDDEN_NETWORK_?": "Réseau caché ?",
|
||||
|
@ -105,6 +106,7 @@
|
|||
"JOB_TITLE": "Titre d'emploi",
|
||||
"LANGUAGE": "Langue",
|
||||
"LAST_NAME": "Nom de famille",
|
||||
"LATITUDE": "Latitude",
|
||||
"LEVEL_H": "Niveau H",
|
||||
"LEVEL_L": "Niveau L",
|
||||
"LEVEL_M": "Niveau M",
|
||||
|
@ -115,6 +117,7 @@
|
|||
"LOCK_PORTRAIT": "Verrouiller le portrait",
|
||||
"LOG": "Registre",
|
||||
"LOG_BACKUP_AND_RESTORE": "Journalisation, sauvegarde et restauration",
|
||||
"LONGITUDE": "Longitude",
|
||||
"MALE": "Mâle",
|
||||
"MANAGE_RECORDS": "Gérer les enregistrements",
|
||||
"MARGIN": "Marge",
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
"FULL_RESET": "Reset",
|
||||
"FUNCTIONS": "Opzioni",
|
||||
"GENDER": "Sesso",
|
||||
"GEOLOCATION": "Geolocalizzazione",
|
||||
"GOOGLE_SEARCH": "Ricerca con Google",
|
||||
"HAPTIC_FEEDBACK_ONLY": "Feedback disponibile solo tramite Haptic",
|
||||
"HIDDEN_NETWORK_?": "Rete nascosta?",
|
||||
|
@ -105,6 +106,7 @@
|
|||
"JOB_TITLE": "Titolo di lavoro",
|
||||
"LANGUAGE": "Lingua",
|
||||
"LAST_NAME": "Cognome",
|
||||
"LATITUDE": "Latitudine",
|
||||
"LEVEL_H": "Livello H",
|
||||
"LEVEL_L": "Livello L",
|
||||
"LEVEL_M": "Livello M",
|
||||
|
@ -115,6 +117,7 @@
|
|||
"LOCK_PORTRAIT": "Blocca vista verticale",
|
||||
"LOG": "Log",
|
||||
"LOG_BACKUP_AND_RESTORE": "Logga, Esegui backup & Ripristina",
|
||||
"LONGITUDE": "Longitudine",
|
||||
"MALE": "Uomo",
|
||||
"MANAGE_RECORDS": "Gestisci record",
|
||||
"MARGIN": "Margine",
|
||||
|
|
322
src/assets/i18n/pt-BR.json
Normal file
322
src/assets/i18n/pt-BR.json
Normal file
|
@ -0,0 +1,322 @@
|
|||
{
|
||||
"100_RECORDS": "100 Registros",
|
||||
"30_RECORDS": "30 Registros",
|
||||
"49_DIGIT": "49 dígitos",
|
||||
"50_RECORDS": "50 Registros",
|
||||
"ABOUT": "Sobre",
|
||||
"ABOUT_SIMPLE_QR": "Sobre o Simple QR",
|
||||
"ADD": "Adicionar",
|
||||
"ADD_BCC": "Adicionar CCO",
|
||||
"ADD_CC": "Adicionar CC",
|
||||
"ADD_CONTACT": "Adicionar Contato",
|
||||
"ADD_RECIPIENT": "Adicionar Destinatário",
|
||||
"APP": "Aplicativo",
|
||||
"APPEARANCE_AND_EFFECTS": "Aparência e Efeitos",
|
||||
"APP_INITIAL_PAGE": "Página Inicial do Aplicativo",
|
||||
"APP_VERSION": "Versão do Aplicativo",
|
||||
"AT": "em",
|
||||
"AT_LEAST_1_MINUTE_LATER": "Pelo Menos 1 Minuto Depois",
|
||||
"AT_LEAST_3_MINUTES_LATER": "Pelo Menos 3 Minutos Depois",
|
||||
"AT_LEAST_5_MINUTES_LATER": "Pelo Menos 5 Minutos Depois",
|
||||
"AUTO_KILL_BACKGROUND": "Encerrar Automaticamente em Segundo Plano",
|
||||
"AUTO_LOGGING": "Registro Automático",
|
||||
"AUTO_MAX_BRIGHTNESS": "Brilho Máximo Automático",
|
||||
"AUTO_OPEN_URL": "Abrir URL Automaticamente",
|
||||
"AUTO_QR_CODE_POPUP": "Popup de Código QR Automático",
|
||||
"BACKGROUND_COLOR": "Cor de Fundo",
|
||||
"BACKING_UP": "Fazendo Backup",
|
||||
"BACKUP": "Backup",
|
||||
"BASE64": "Base64",
|
||||
"BASE64_DECODED": "Base64 Decodificado",
|
||||
"BASE64_ENCODED": "Base64 Codificado",
|
||||
"BCC": "CCO",
|
||||
"BLACK": "Preto",
|
||||
"BOOKMARK": "Favoritar",
|
||||
"BOOKMARKED": "Favoritado",
|
||||
"BOOKMARKED_TEXTS": "Textos Favoritados",
|
||||
"BOOKMARKS": "Favoritos",
|
||||
"BRAVE_SEARCH": "Busca Brave",
|
||||
"BROWSE": "Pesquisar",
|
||||
"BROWSER": "Navegador",
|
||||
"BROWSE_WEBSITE": "Navegar no Site",
|
||||
"CALL": "Chamada",
|
||||
"CANCEL": "Cancelar",
|
||||
"CC": "CC",
|
||||
"CITY": "Cidade",
|
||||
"CLEAR": "Limpar",
|
||||
"CLOSE": "Fechar",
|
||||
"COLOR": "Cor",
|
||||
"COLOR_THEME": "Tema de Cores",
|
||||
"COMING_SOON": "Em Breve",
|
||||
"CONTACT_METHOD": "Método de Contato",
|
||||
"CONTACT_NAME": "Nome do Contato",
|
||||
"CONTENT": "Conteúdo",
|
||||
"CONTENT_TYPE": "Tipo de Conteúdo",
|
||||
"COPIED": "Copiado",
|
||||
"COPY": "Copiar",
|
||||
"COPY_SECRET_AND_SAVE_BACKUP": "Copiar Segredo e Salvar Backup",
|
||||
"COPY_TEXT": "Copiar Texto",
|
||||
"COUNTRY": "País",
|
||||
"CREATE": "Criar",
|
||||
"CREATED": "Criado",
|
||||
"CREATE_QR_CODE": "Criar Código QR",
|
||||
"DARK": "Escuro",
|
||||
"DATE_OF_BIRTH": "Data de Nascimento",
|
||||
"DEBUG_MODE": "Modo de Depuração",
|
||||
"DECODING": "Decodificando",
|
||||
"DECRYPTING": "Descriptografando",
|
||||
"DETAILED": "Detalhado",
|
||||
"DONE": "Concluído",
|
||||
"DUCK_DUCK_GO": "DuckDuckGo",
|
||||
"ECOSIA": "Ecosia",
|
||||
"EDIT": "Editar",
|
||||
"EMAIL_ADDRESS": "Endereço de E-mail",
|
||||
"EMAIL_BODY": "Corpo do E-mail",
|
||||
"EMAIL_NTT_DOCOMO": "E-mail (NTT Docomo)",
|
||||
"EMAIL_RECIPIENT": "Destinatário do E-mail",
|
||||
"EMAIL_SUBJECT": "Assunto do E-mail",
|
||||
"EMAIL_TO": "Enviar E-mail para",
|
||||
"EMAIL_W3C_STANDARD": "E-mail (Padrão W3C)",
|
||||
"ENCRYPTING": "Criptografando",
|
||||
"ERROR_CORRECTION_LEVEL": "Nível de Correção de Erro",
|
||||
"EXIT": "Sair",
|
||||
"EXIT_APP": "Sair do Aplicativo",
|
||||
"EXPORT": "Exportar",
|
||||
"EXPORTING": "Exportando",
|
||||
"EXPORT_TO_CSV": "Exportar para CSV",
|
||||
"FAX_NUMBER": "Número de Fax",
|
||||
"FEMALE": "Feminino",
|
||||
"FIRST_NAME": "Nome Próprio",
|
||||
"FOLLOW_SYSTEM_SETTINGS": "Seguir Configurações do Sistema",
|
||||
"FREE_TEXT": "Texto Livre",
|
||||
"FULL_RESET": "Redefinição Completa",
|
||||
"FUNCTIONS": "Funções",
|
||||
"GENDER": "Gênero",
|
||||
"GEOLOCATION": "Geolocalização",
|
||||
"GOOGLE_SEARCH": "Busca Google",
|
||||
"HAPTIC_FEEDBACK_ONLY": "Apenas Feedback Háptico",
|
||||
"HIDDEN_NETWORK_?": "Rede Oculta?",
|
||||
"HOME_ADDRESS": "Endereço Residencial",
|
||||
"HOME_PHONE_NUMBER": "Número de Telefone Residencial",
|
||||
"ICON_ONLY": "Apenas Ícone",
|
||||
"IMPORT": "Importar",
|
||||
"IMPORT_FROM_CSV": "Importar do CSV",
|
||||
"IMPORT_IMAGE": "Importar Imagem",
|
||||
"INITIAL_SEGMENT": "Segmento Inicial",
|
||||
"JOB_TITLE": "Cargo",
|
||||
"LANGUAGE": "Idioma",
|
||||
"LAST_NAME": "Sobrenome",
|
||||
"LATITUDE": "Latitude",
|
||||
"LEVEL_H": "Nível H",
|
||||
"LEVEL_L": "Nível L",
|
||||
"LEVEL_M": "Nível M",
|
||||
"LEVEL_Q": "Nível Q",
|
||||
"LIGHT": "Claro",
|
||||
"LOADING_DATA": "Carregando Dados",
|
||||
"LOCK_LANDSCAPE": "Travar em Paisagem",
|
||||
"LOCK_PORTRAIT": "Travar em Retrato",
|
||||
"LOG": "Registro",
|
||||
"LOG_BACKUP_AND_RESTORE": "Registro, Backup e Restauração",
|
||||
"LONGITUDE": "Longitude",
|
||||
"MALE": "Masculino",
|
||||
"MANAGE_RECORDS": "Gerenciar Registros",
|
||||
"MARGIN": "Margem",
|
||||
"MESSAGE": "Mensagem",
|
||||
"MESSAGE_CONTENT": "Conteúdo da Mensagem",
|
||||
"MICROSOFT_BING": "Microsoft Bing",
|
||||
"MOBILE_PHONE_NUMBER": "Número de Celular",
|
||||
"MORE": "Mais",
|
||||
"NAME": "Nome",
|
||||
"NO": "Não",
|
||||
"NONE": "Nenhum",
|
||||
"NOT_AVAILABLE": "Não Disponível",
|
||||
"NOT_PROVIDED": "Não Fornecido",
|
||||
"NOT_TO_DISCLOSE": "Não Divulgar",
|
||||
"NO_LIMIT": "Sem Limite",
|
||||
"NUMBER_OF_RECORDS": "Número de Registros",
|
||||
"OK": "OK",
|
||||
"ONLY_DELETE_DATA": "Apenas Excluir Dados",
|
||||
"ONLY_RESET_SETTING": "Apenas Restaurar Configuração",
|
||||
"OPEN": "Abrir",
|
||||
"OPEN_URL": "Abrir URL",
|
||||
"OPEN_WITH_...": "Abrir com...",
|
||||
"OPTIMIZING_DATA_...": "Otimizando Dados...",
|
||||
"ORGANIZATION": "Organização",
|
||||
"ORIGINAL": "Original",
|
||||
"OTHERS": "Outros",
|
||||
"PASSWORD": "Senha",
|
||||
"PATCH_NOTES": "Notas de Atualização",
|
||||
"PERMISSION_REQUIRED": "Permissão Necessária",
|
||||
"PERSONAL": "Pessoal",
|
||||
"PHONE_NO": "Nº de Telefone",
|
||||
"PHONE_NUMBER": "Número de Telefone",
|
||||
"PLEASE_WAIT": "Aguarde, por favor",
|
||||
"POSTAL_CODE": "Código Postal",
|
||||
"PREPARING": "Preparando",
|
||||
"PREVIEW": "Pré-visualização",
|
||||
"PRIVACY_POLICY": "Política de Privacidade",
|
||||
"QR_CODE": "Código QR",
|
||||
"QR_CODE_AND_DECODED_RESULT": "Código QR e Resultado Decodificado",
|
||||
"QR_CODE_CONTENT": "Conteúdo do Código QR",
|
||||
"QR_CODE_STYLE": "Estilo do Código QR",
|
||||
"RATE_THE_APP": "Avalie o Aplicativo",
|
||||
"RECORDS_LIMIT": "Limite de Registros",
|
||||
"REMOVE_ALL": "Remover Todos",
|
||||
"REMOVE_BCC": "Remover CCO",
|
||||
"REMOVE_CC": "Remover CC",
|
||||
"REMOVE_RECIPIENT": "Remover Destinatário",
|
||||
"REPORT_ISSUE": "Reportar Problema",
|
||||
"RESET_APP": "Redefinir o Aplicativo",
|
||||
"RESET_DEFAULT": "Redefinir para o Padrão",
|
||||
"RESTORE": "Restaurar",
|
||||
"RESULT": "Resultado",
|
||||
"SAVE": "Salvar",
|
||||
"SAVED": "Salvo",
|
||||
"SCAN": "Escanear",
|
||||
"SCANNED": "Escaneado",
|
||||
"SCANNING_FEEDBACK_ONLY": "Apenas Feedback de Escaneamento",
|
||||
"SCAN_BY_CAMERA": "Escanear pela Câmera",
|
||||
"SCREEN_ORIENTATION": "Orientação da Tela",
|
||||
"SEARCH": "Pesquisa",
|
||||
"SEARCH_ENGINE": "Mecanismo de Busca",
|
||||
"SECRET": "Segredo",
|
||||
"SEND": "Enviar",
|
||||
"SEND_EMAIL": "Enviar E-mail",
|
||||
"SEND_MESSAGE": "Enviar Mensagem",
|
||||
"SETTING": "Configuração",
|
||||
"SETTINGS": "Configurações",
|
||||
"SHARE": "Compartilhar",
|
||||
"SHARING": "Compartilhando",
|
||||
"SHOW": "Mostrar",
|
||||
"SHOW_NUMBER_OR_RECORDS": "Mostrar Número de Registros",
|
||||
"SHOW_QR_CODE": "Mostrar Código QR",
|
||||
"SIMPLE_QR": "Simple QR",
|
||||
"STATE": "Estado",
|
||||
"STREET": "Rua",
|
||||
"SUCCESS": "Sucesso",
|
||||
"SUPPORTED_BARCODE_TYPE": "Tipo de Código de Barras Suportado",
|
||||
"SUPPORTED_TYPE": "Tipo Suportado",
|
||||
"SYSTEM_DEFAULT": "Padrão do Sistema",
|
||||
"TASK": "Tarefa",
|
||||
"TASK_BUTTON_LAYOUT": "Layout dos Botões de Tarefa",
|
||||
"TURN_OFF": "Desligar",
|
||||
"TURN_ON": "Ligar",
|
||||
"TURNED_OFF": "Desligado",
|
||||
"TURNED_ON": "Ligado",
|
||||
"TUTORIAL": "Tutorial",
|
||||
"UNDO": "Desfazer",
|
||||
"UNKNOWN": "Desconhecido",
|
||||
"UPDATE_SUCCESSFULLY": "Atualizado com Sucesso",
|
||||
"URL": "URL",
|
||||
"VCARD_CONTACT": "Contato vCard",
|
||||
"VERSION_VERSION": "Versão {version}",
|
||||
"VIBRATION": "Vibração",
|
||||
"VIEWED": "Visualizado",
|
||||
"VIEW_BOOKMARK": "Visualizar Favorito",
|
||||
"VIEW_GITHUB": "Visualizar GitHub",
|
||||
"VIEW_LOG": "Visualizar Registro",
|
||||
"VIEW_STORE_AND_SOURCE_CODE": "Visualizar Loja e Código-fonte",
|
||||
"VIEW_INSTRUCTIONS": "Visualizar Instruções",
|
||||
"WEBSITE": "Site",
|
||||
"WIFI": "Wi-Fi",
|
||||
"WIFI_ENCRYPTION": "Criptografia do Wi-Fi",
|
||||
"WIFI_SSID": "SSID do Wi-Fi",
|
||||
"WORK": "Trabalho",
|
||||
"WORK_PHONE_NUMBER": "Número de Telefone do Trabalho",
|
||||
"YAHOO_SEARCH": "Busca Yahoo!",
|
||||
"YANDEX": "Yandex",
|
||||
"YES": "Sim",
|
||||
"MSG": {
|
||||
"ALREADY_BOOKMARKED": "Falha! Já favoritado anteriormente",
|
||||
"AUTO_KILL_BACKGROUND_EXPLAIN": "<p>Para economizar recursos do sistema e bateria, defina o tempo para encerrar automaticamente o aplicativo quando ele estiver em execução em segundo plano.</p><br><p>Se você escolher <b>Seguir Configurações do Sistema</b>, o aplicativo será totalmente controlado pelo sistema e não será encerrado por si próprio.</p><br><p>Observe que em algumas situações, o sistema pode interromper o aplicativo antecipadamente.</p>",
|
||||
"AUTO_LOGGING_EXPLAIN": "Cada conteúdo de código QR e código de barras é registrado e armazenado automaticamente depois de escaneado, criado ou visualizado novamente. Você pode visualizá-los na página de Registro.",
|
||||
"AUTO_MAX_BRIGHTNESS_EXPLAIN": "O brilho da tela é ajustado automaticamente para o máximo ao exibir um código QR.",
|
||||
"AUTO_OPEN_URL_EXPLAIN": "Quando um código QR é escaneado e o conteúdo é uma URL, a URL será aberta automaticamente.",
|
||||
"AUTO_SHOW_QR_EXPLAIN": "Pop-up automático de código QR na página de Resultado após as ações a seguir.",
|
||||
"BACKUP_EXPLAIN": "Você pode fazer backup de todos os registros e favoritos localmente. Você receberá um conjunto de segredos após o backup. Mantenha o segredo com segurança, caso contrário, você não poderá restaurar o backup. Observe que o Simple QR não oferece suporte a backup e restauração entre plataformas diferentes.",
|
||||
"BACKUP_FAILED": "Falha ao fazer backup",
|
||||
"BACKUP_FAILED_2": "Falha ao fazer backup. Verifique se a permissão de armazenamento foi concedida.",
|
||||
"BACKUP_SUCCESSFULLY": "<p>Backup feito com sucesso. Salve o arquivo de backup e mantenha o segunte segredo com segurança</p><p>{secret}</p>",
|
||||
"BARCODE_TYPE": "Escanear<ul><li>Código QR</li><li>Código de Barras 1D</li><li>Código Azteca</li><li>Matriz de Dados</li><li>PDF417</li></ul>Importar Imagem<ul><li>Código QR</li></ul>Criar<ul><li>Código QR</li></ul>",
|
||||
"BOOKMARKED": "Favoritado com Sucesso",
|
||||
"BUTTON_DISPLAY_EXPLAIN": "Mostrar ou ocultar os botões de tarefa.",
|
||||
"BUTTON_STYLE_EXPLAIN": "Escolha o estilo dos botões de tarefa.",
|
||||
"CAMERA_PERMISSION": "Para habilitar a digitalização, você deve conceder a permissão de câmera.",
|
||||
"CONTACT_PERMISSION": "Você deve conceder a permissão de Contatos para salvar o contato.",
|
||||
"COPIED_SECRET": "Segredo copiado",
|
||||
"COPY_TEXT": "Qual conteúdo você deseja copiar?",
|
||||
"CREATE_QRCODE_MAX_LENGTH": "Máx. 1817 caracteres",
|
||||
"CREATE_QRCODE_MAX_LENGTH_EXPLAIN": "O comprimento do conteúdo gerado do código QR não deve exceder 1817 caracteres.",
|
||||
"DEBUG_MODE_ON": "Modo de Depuração ativado com sucesso",
|
||||
"DELETE_OVERFLOWED_RECORDS": "Após sair desta página, os registros excedentes serão excluídos permanentemente.",
|
||||
"EMAIL_MAX_LENGTH": "Máx. 254 caracteres",
|
||||
"EMAIL_SUBJECT_MAX_LENGTH": "Máx. 78 caracteres",
|
||||
"ERROR_CORRECTION_LEVEL_EXPLAIN": "<p>O código QR tem a capacidade de correção de erros para restaurar dados mesmo se o código estiver danificado.</p><br><p>Há 4 níveis disponíveis:</p><p>O nível L restaura 7% dos bytes de dados.</p><p>O nível M restaura 15% dos bytes de dados.</p><p>O nível Q restaura 25% dos bytes de dados.</p><p>O nível H restaura 30% dos bytes de dados.</p><br><p>Por favor, lembre-se de que elevar o nível pode melhorar a capacidade de correção de erros, mas também aumenta o tamanho do código QR. Portanto, para casos gerais, é recomendado o nível M.</p>",
|
||||
"EXIT_APP": "<p>Tem certeza de que deseja sair do aplicativo?</p><p>Se você gosta do Simple QR, por favor, avalie-o na loja.</p>",
|
||||
"EXPORT_TO_CSV_EXPLAIN": "Você pode exportar todos os registros e favoritos para um arquivo CSV.",
|
||||
"FAILED_SAVING_CONTACT": "Falha ao salvar o contato",
|
||||
"FAIL_PREPARE_SMS": "Falha ao enviar mensagem",
|
||||
"IMPORT_FAILED": "Falha na importação",
|
||||
"IMPORT_FROM_CSV_EXPLAIN": "Você pode importar registros e favoritos de um arquivo CSV com o formato definido pelo Simple QR. Se você deseja transferir dados entre Android e iOS, use essa função.",
|
||||
"INPUT_TAG": "Por favor, dê uma etiqueta ao favorito",
|
||||
"INVALID_BK_FILE": "Este não é um arquivo de backup válido.",
|
||||
"INVALID_CSV_FILE": "Este não é um arquivo CSV válido.",
|
||||
"NOT_BASE64_DE": "Os dados não podem ser decodificados em Base64",
|
||||
"NOT_BASE64_EN": "Os dados não podem ser codificados em Base64",
|
||||
"NOT_BASE64_EN_DE": "Os dados não podem ser codificados e decodificados em Base64",
|
||||
"NO_QR_CODE": "Não é possível detectar o Código QR",
|
||||
"ONLY_VCARD_3_0": "Apenas vCard 3.0 é suportado",
|
||||
"PLEASE_INPUT_VALID_SECRET": "Por favor, insira um código válido",
|
||||
"PORTRAIT_ONLY": "Retrato bloqueado",
|
||||
"PREPARE_SMS": "Preparando mensagem",
|
||||
"PREVIOUS_RECORDS": "Registros anteriores de escaneamento, criação ou visualização",
|
||||
"QR_CODE_VALUE_NOT_EMPTY": "O valor do Código QR não pode estar vazio",
|
||||
"READ_IMAGE_PERMISSION": "Você deve conceder permissão de Armazenamento para escanear imagem.",
|
||||
"RECORDS_LIMIT_EXPLAIN": "Limite o número de registros que podem ser armazenados. O registro mais antigo será excluído quando o limite for atingido.",
|
||||
"REMOVE_ALL_BOOKMARKS": "Tem certeza de que deseja remover todos os textos favoritados? <b>Esta ação não pode ser desfeita.</b>",
|
||||
"REMOVE_ALL_RECORD": "Tem certeza de que deseja remover todos os registros? <b>Esta ação não pode ser desfeita.</b>",
|
||||
"RESET_APP": "Tem certeza de que deseja redefinir este aplicativo e excluir todos os dados? <b>Esta ação não pode ser desfeita.</b>",
|
||||
"RESET_DEFAULT": "Tem certeza de que deseja redefinir para o padrão?",
|
||||
"RESTORE_EXPLAIN": "Você pode restaurar um backup anterior de registros e favoritos. Os itens do backup serão mesclados aos registros existentes. O tipo de arquivo de backup deve ser TFSQBK.",
|
||||
"RESTORE_EXPLAIN_IOS": "Você pode restaurar um backup anterior de registros e favoritos. Os itens do backup serão mesclados aos registros existentes. O tipo de arquivo de backup deve ser ISQBK.",
|
||||
"RESTORE_FAILED": "Falha ao restaurar",
|
||||
"RESTORE_SECRET": "Por favor, insira o código para restaurar os registros",
|
||||
"RESTORE_SUCCESSFUL": "Restaurado com sucesso",
|
||||
"RESTORE_WRONG_SECRET": "Código incorreto",
|
||||
"SAVED_CONTACT": "Contato salvo",
|
||||
"SAVING_CONTACT": "Salvando contato",
|
||||
"SCAN_QR_FROM_IMAGE": "O Simple QR utiliza o módulo \"cozmo/jsQR\" para escanear códigos QR a partir de imagens. Para escanear com sucesso,",
|
||||
"SCAN_QR_FROM_IMAGE_R1": "Autorize o aplicativo a acessar o Armazenamento ou a Biblioteca de Fotos.",
|
||||
"SCAN_QR_FROM_IMAGE_R2": "Certifique-se de que o plano de fundo da imagem selecionada não seja transparente. É recomendável escolher uma imagem que não seja capturada pela câmera.",
|
||||
"SCAN_QR_FROM_IMAGE_R3": "Cancele a edição de fotos se desejar escanear a imagem inteira. (se aplicável)",
|
||||
"SEARCH": "Qual conteúdo você deseja buscar?",
|
||||
"SEARCH_ENGINE_EXPLAIN": "Escolha o mecanismo de busca para as pesquisas.",
|
||||
"SHARE_QR": "Apenas escaneie!\n\nCompartilhado pelo Simple QR",
|
||||
"SMS_MAX_LENGTH": "Máx. 160 caracteres",
|
||||
"SSID_MAX_LENGTH": "Máx. 32 caracteres",
|
||||
"START_PAGE_EXPLAIN": "Escolha a página inicial do aplicativo.",
|
||||
"START_PAGE_HEADER_EXPLAIN": "Mostrar o cabeçalho do Simple QR na página inicial.",
|
||||
"TAG_MAX_LENGTH": "Máx. 30 caracteres",
|
||||
"TAG_MAX_LENGTH_EXPLAIN": "O comprimento da etiqueta não deve exceder 30 caracteres.",
|
||||
"TUTORIAL_NOT_SHOW_AGAIN": "Não mostrar novamente",
|
||||
"TUTORIAL_SWIPE_LEFT": "Deslize para a esquerda para excluir o registro correspondente.",
|
||||
"TUTORIAL_SWIPE_RIGHT": "Deslize para a direita para marcar o texto do registro correspondente / editar a etiqueta do marcador correspondente.",
|
||||
"UNDO_DELETE": "Você pode desfazer a exclusão",
|
||||
"VIBRATION_EXPLAIN": "Forneça vibração ou feedback tátil. Observe que nem todos os dispositivos suportam essa funcionalidade."
|
||||
},
|
||||
"BARCODE_TYPE": {
|
||||
"1D": "Código de Barras 1D ",
|
||||
"AZTEC": "Código Azteca ",
|
||||
"DATA_MATRIX": "Matriz de Dados ",
|
||||
"EAN": "Número de Artigo Europeu ",
|
||||
"MAXICODE": "MaxiCode ",
|
||||
"PDF_417": "PDF417 ",
|
||||
"QR_CODE": "Código QR ",
|
||||
"RSS": "GS1 DataBar ",
|
||||
"UPC": "Código de Produto Universal "
|
||||
},
|
||||
"UPDATE": {
|
||||
"UPDATE_NOTES_ANDROID": "<p>Esta versão traz várias atualizações e novos recursos. Por favor, verifique o GitHub para obter detalhes.</p>",
|
||||
"UPDATE_NOTES_IOS": "<p>Esta versão traz várias atualizações e novos recursos. Por favor, verifique o GitHub para obter detalhes.</p>"
|
||||
}
|
||||
}
|
|
@ -92,6 +92,7 @@
|
|||
"FULL_RESET": "Полный сброс",
|
||||
"FUNCTIONS": "Функции",
|
||||
"GENDER": "Пол",
|
||||
"GEOLOCATION": "Геолокация",
|
||||
"GOOGLE_SEARCH": "Google Search",
|
||||
"HAPTIC_FEEDBACK_ONLY": "Только тактильный отклик",
|
||||
"HIDDEN_NETWORK_?": "Скрытая сеть?",
|
||||
|
@ -105,6 +106,7 @@
|
|||
"JOB_TITLE": "Должность",
|
||||
"LANGUAGE": "Язык",
|
||||
"LAST_NAME": "Фамилия",
|
||||
"LATITUDE": "Широта",
|
||||
"LEVEL_H": "Уровень H",
|
||||
"LEVEL_L": "Уровень L",
|
||||
"LEVEL_M": "Уровень M",
|
||||
|
@ -115,6 +117,7 @@
|
|||
"LOCK_PORTRAIT": "Портретная",
|
||||
"LOG": "История",
|
||||
"LOG_BACKUP_AND_RESTORE": "История и восстановление",
|
||||
"LONGITUDE": "Долгота",
|
||||
"MALE": "Мужской",
|
||||
"MANAGE_RECORDS": "Управление записями",
|
||||
"MARGIN": "Отступ",
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
"FULL_RESET": "完整重设",
|
||||
"FUNCTIONS": "功能",
|
||||
"GENDER": "性别",
|
||||
"GEOLOCATION": "地理定位",
|
||||
"GOOGLE_SEARCH": "Google 搜索",
|
||||
"HAPTIC_FEEDBACK_ONLY": "仅触感反馈",
|
||||
"HIDDEN_NETWORK_?": "隐藏的网络?",
|
||||
|
@ -105,6 +106,7 @@
|
|||
"JOB_TITLE": "职位名称",
|
||||
"LANGUAGE": "语言",
|
||||
"LAST_NAME": "姓氏",
|
||||
"LATITUDE": "纬度",
|
||||
"LEVEL_H": "H 等级",
|
||||
"LEVEL_L": "L 等级",
|
||||
"LEVEL_M": "M 等级",
|
||||
|
@ -115,6 +117,7 @@
|
|||
"LOCK_PORTRAIT": "锁定纵向",
|
||||
"LOG": "记录",
|
||||
"LOG_BACKUP_AND_RESTORE": "记录、备份与还原",
|
||||
"LONGITUDE": "经度",
|
||||
"MALE": "男性",
|
||||
"MANAGE_RECORDS": "管理记录",
|
||||
"MARGIN": "边距",
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
"FULL_RESET": "完整重設",
|
||||
"FUNCTIONS": "功能",
|
||||
"GENDER": "性別",
|
||||
"GEOLOCATION": "地理位置",
|
||||
"GOOGLE_SEARCH": "Google 搜尋",
|
||||
"HAPTIC_FEEDBACK_ONLY": "僅觸感反饋",
|
||||
"HIDDEN_NETWORK_?": "隱藏的網絡?",
|
||||
|
@ -105,6 +106,7 @@
|
|||
"JOB_TITLE": "職位名稱",
|
||||
"LANGUAGE": "語言",
|
||||
"LAST_NAME": "姓氏",
|
||||
"LATITUDE": "緯度",
|
||||
"LEVEL_H": "H 等級",
|
||||
"LEVEL_L": "L 等級",
|
||||
"LEVEL_M": "M 等級",
|
||||
|
@ -115,6 +117,7 @@
|
|||
"LOCK_PORTRAIT": "鎖定縱向",
|
||||
"LOG": "記錄",
|
||||
"LOG_BACKUP_AND_RESTORE": "記錄、備份與還原",
|
||||
"LONGITUDE": "經度",
|
||||
"MALE": "男性",
|
||||
"MANAGE_RECORDS": "管理記錄",
|
||||
"MARGIN": "邊距",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue