├── .github
├── FUNDING.yml
└── workflows
│ └── main.yml
├── .gitignore
├── .metadata
├── .vscode
├── launch.json
└── settings.json
├── LICENSE
├── README.md
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ └── res
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ └── ic_launcher_background.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── simplytranslate_mobile
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── ic_launcher_background.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ └── res
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ └── ic_launcher_background.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── ca
│ └── lets-encrypt-r3.pem
├── favicon
│ ├── simplytranslate.png
│ ├── simplytranslate.svg
│ ├── simplytranslate_transparent.png
│ ├── simplytranslate_transparent.svg
│ └── simplytranslate_transparent_black.png
└── settings
│ ├── counter-dark.png
│ ├── counter-light.png
│ └── counter.svg
├── desiredFileName.txt
├── docs
├── ar
│ ├── contributors.html
│ ├── donate.html
│ ├── download.html
│ ├── index.html
│ └── source.html
├── assets
│ ├── 1.webp
│ ├── 2.webp
│ ├── 3.webp
│ ├── 4.webp
│ ├── bc1q0mk9eynz9waufjmk2eslt36cqxtgnqkhfmj9yj.png
│ ├── codeberg.svg
│ ├── design.svg
│ ├── f-droid.png
│ ├── favicon.png
│ ├── github.svg
│ ├── logo.svg
│ ├── preview.png
│ └── preview.svg
├── contributors.html
├── css
│ ├── fonts
│ │ ├── Inter-VariableFont_slnt,wght.ttf
│ │ └── Vazirmatn-VariableFont_wght.ttf
│ └── index.css
├── donate.html
├── download.html
├── en
│ ├── contributors.html
│ ├── donate.html
│ ├── download.html
│ ├── index.html
│ └── source.html
├── fr
│ ├── contributors.html
│ ├── donate.html
│ ├── download.html
│ ├── index.html
│ └── source.html
├── index.html
├── nb_NO
│ ├── contributors.html
│ ├── donate.html
│ ├── download.html
│ ├── index.html
│ └── source.html
├── pl
│ ├── contributors.html
│ ├── donate.html
│ ├── download.html
│ ├── index.html
│ └── source.html
├── pug
│ ├── contributors.pug
│ ├── donate.pug
│ ├── download.pug
│ ├── index.pug
│ ├── source.pug
│ └── widgets
│ │ └── widgets.pug
├── source.html
├── strings
│ ├── ar.json
│ ├── bg.json
│ ├── bn.json
│ ├── cs.json
│ ├── de.json
│ ├── el.json
│ ├── en.json
│ ├── eo.json
│ ├── es.json
│ ├── fa.json
│ ├── fi.json
│ ├── fr.json
│ ├── hu.json
│ ├── id.json
│ ├── is.json
│ ├── it.json
│ ├── ja.json
│ ├── ko.json
│ ├── ml.json
│ ├── nb_NO.json
│ ├── nl.json
│ ├── pl.json
│ ├── pt_BR.json
│ ├── ru.json
│ ├── tr.json
│ ├── uk.json
│ └── zh_Hant_HK.json
└── tr
│ ├── contributors.html
│ ├── donate.html
│ ├── download.html
│ ├── index.html
│ └── source.html
├── fastlane
└── metadata
│ └── android
│ ├── ar
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── cs
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── de
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── en-US
│ ├── full_description.txt
│ ├── images
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1.webp
│ │ │ ├── 2.webp
│ │ │ ├── 3.webp
│ │ │ └── 4.webp
│ ├── short_description.txt
│ └── title.txt
│ ├── eo
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── es
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── fr
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── hu-HU
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── is-IS
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── it
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ja
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ko-KR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── nl
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── pl
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── pt-BR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ru
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── tr
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ └── uk
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
├── lib
├── data.dart
├── main.dart
├── messages.dart
├── messages
│ ├── messages.i18n.dart
│ ├── messages.i18n.yaml
│ ├── messages_ar.i18n.dart
│ ├── messages_ar.i18n.yaml
│ ├── messages_cs.i18n.dart
│ ├── messages_cs.i18n.yaml
│ ├── messages_de.i18n.dart
│ ├── messages_de.i18n.yaml
│ ├── messages_el.i18n.dart
│ ├── messages_el.i18n.yaml
│ ├── messages_en.i18n.dart
│ ├── messages_en.i18n.yaml
│ ├── messages_eo.i18n.dart
│ ├── messages_eo.i18n.yaml
│ ├── messages_es.i18n.dart
│ ├── messages_es.i18n.yaml
│ ├── messages_fa.i18n.dart
│ ├── messages_fa.i18n.yaml
│ ├── messages_fi.i18n.dart
│ ├── messages_fi.i18n.yaml
│ ├── messages_fr.i18n.dart
│ ├── messages_fr.i18n.yaml
│ ├── messages_hu.i18n.dart
│ ├── messages_hu.i18n.yaml
│ ├── messages_is.i18n.dart
│ ├── messages_is.i18n.yaml
│ ├── messages_it.i18n.dart
│ ├── messages_it.i18n.yaml
│ ├── messages_ja.i18n.dart
│ ├── messages_ja.i18n.yaml
│ ├── messages_ko.i18n.dart
│ ├── messages_ko.i18n.yaml
│ ├── messages_ml.i18n.dart
│ ├── messages_ml.i18n.yaml
│ ├── messages_nb_NO.i18n.dart
│ ├── messages_nb_NO.i18n.yaml
│ ├── messages_pl.i18n.dart
│ ├── messages_pl.i18n.yaml
│ ├── messages_pt_BR.i18n.dart
│ ├── messages_pt_BR.i18n.yaml
│ ├── messages_ru.i18n.dart
│ ├── messages_ru.i18n.yaml
│ ├── messages_tr.i18n.dart
│ ├── messages_tr.i18n.yaml
│ ├── messages_uk.i18n.dart
│ ├── messages_uk.i18n.yaml
│ ├── messages_zh_HK.i18n.dart
│ └── messages_zh_HK.i18n.yaml
├── screens
│ ├── about
│ │ ├── about_screen.dart
│ │ └── about_screen_button.dart
│ ├── settings
│ │ ├── settings_screen.dart
│ │ └── widgets
│ │ │ ├── select_theme.dart
│ │ │ └── settings_button.dart
│ └── translate
│ │ ├── translate.dart
│ │ └── widgets
│ │ ├── input
│ │ ├── character_limit.dart
│ │ ├── delete_button.dart
│ │ ├── input.dart
│ │ └── tts_button.dart
│ │ ├── lang_selector
│ │ ├── lang.dart
│ │ └── switch_lang.dart
│ │ └── output
│ │ ├── copy_button.dart
│ │ ├── definitions.dart
│ │ ├── output.dart
│ │ ├── pronounciation.dart
│ │ ├── translations.dart
│ │ └── tts_button.dart
└── simplytranslate.dart
├── pubspec.lock
├── pubspec.yaml
└── scripts
├── arb_compile.sh
├── python
└── arb_merger.py
└── website_compile.sh
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | custom: ['https://www.buymeacoffee.com/manerakai', 'bc1q0mk9eynz9waufjmk2eslt36cqxtgnqkhfmj9yj'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
10 | liberapay: simplytranslate_mobile # Replace with a single Liberapay username
11 | issuehunt: # Replace with a single IssueHunt username
12 | otechie: # Replace with a single Otechie username
13 |
14 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: Flutter build apk
4 |
5 | # Controls when the workflow will run
6 | on:
7 | workflow_dispatch:
8 |
9 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
10 | jobs:
11 | # This workflow contains a single job called "build"
12 | build:
13 | # The type of runner that the job will run on
14 | runs-on: ubuntu-latest
15 |
16 | # Steps represent a sequence of tasks that will be executed as part of the job
17 | steps:
18 | - uses: actions/checkout@v2
19 | - uses: actions/setup-java@v1
20 | with:
21 | java-version: '17.0.10'
22 | - uses: subosito/flutter-action@v1
23 | - run: flutter pub get
24 | - run: flutter build apk --flavor development --debug
25 |
26 | - name: Save result
27 | uses: actions/upload-artifact@v2
28 | with:
29 | name: compiled-flutter-code
30 | path: build/app/outputs/flutter-apk/app-development-debug.apk
31 |
32 |
33 | # You may pin to the exact commit or the version.
34 | # uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 | # Web related
34 | lib/generated_plugin_registrant.dart
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
42 | # Android Studio will place build artifacts here
43 | /android/app/debug
44 | /android/app/profile
45 | /android/app/release
46 |
47 | # key password
48 | android/local.properties
49 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: f4abaa0735eba4dfd8f33f73363911d63931fe03
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "debug",
9 | "request": "launch",
10 | "type": "dart",
11 | "args": [
12 | "--flavor",
13 | "development"
14 | ]
15 | },
16 | {
17 | "name": "release",
18 | "request": "launch",
19 | "type": "dart",
20 | "args": [
21 | "--flavor",
22 | "github"
23 | ]
24 | }
25 | ]
26 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "java.configuration.updateBuildConfiguration": "interactive"
3 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | SimplyTranslate Mobile
8 |
9 | A privacy friendly frontend to Google Translate
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
25 |
26 | ## Download beta debug versions
27 | Download the most recent **Artifact** from the [Actions](https://github.com/ManeraKai/simplytranslate_mobile/actions) page. You should be logged in before you're able to download.
28 |
29 | ## Contributing
30 | I use [VSCodium](https://vscodium.com/). I use the extensions [Dart](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code) and [Flutter](https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter). The Dart one has an auto-formatter. Please use this setup to prevent unnecessary formatting changes.
31 |
32 | If you've inherited this project, keep in mind that there are some python scripts in `scripts/` that process translated strings for both website and app.
33 |
34 | To compile translations run `dart run build_runner build`
35 |
36 | ## Translation
37 | Weblate: https://hosted.weblate.org/projects/simplytranslate-mobile/
38 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException('Flutter SDK not found. Define location with flutter.sdk in the local.properties file.')
12 | }
13 |
14 | apply plugin: 'com.android.application'
15 | apply plugin: 'kotlin-android'
16 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
17 |
18 | android {
19 | namespace "com.simplytranslate_mobile"
20 | compileSdkVersion flutter.compileSdkVersion
21 |
22 | lintOptions {
23 | disable 'InvalidPackage'
24 | checkReleaseBuilds false
25 | }
26 |
27 | compileOptions {
28 | sourceCompatibility JavaVersion.VERSION_17
29 | targetCompatibility JavaVersion.VERSION_17
30 | }
31 |
32 | sourceSets {
33 | main.java.srcDirs += 'src/main/kotlin'
34 | }
35 |
36 | defaultConfig {
37 | applicationId 'com.simplytranslate_mobile'
38 | minSdkVersion 21
39 | targetSdkVersion 33
40 | versionCode 13
41 | versionName '1.4.4'
42 | }
43 |
44 |
45 | flavorDimensions 'deploy'
46 |
47 | productFlavors {
48 | development {
49 | dimension 'deploy'
50 | }
51 | github {
52 | dimension 'deploy'
53 | }
54 | fdroid {
55 | dimension 'deploy'
56 | }
57 | }
58 |
59 | android.applicationVariants.all { variant ->
60 | if (variant.flavorName == 'fdroid') {
61 | variant.outputs.all { output ->
62 | output.outputFileName = 'app-fdroid-release.apk'
63 | }
64 | }
65 | }
66 | }
67 |
68 | flutter {
69 | source '../..'
70 | }
71 |
72 | dependencies {
73 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
74 | }
75 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/debug/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #478061
4 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/simplytranslate_mobile/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.simplytranslate_mobile
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import android.content.Intent
6 | import android.hardware.Sensor
7 | import android.hardware.SensorEvent
8 | import android.hardware.SensorEventListener
9 | import android.hardware.SensorManager
10 | import android.os.Bundle
11 | import android.os.Messenger
12 | import android.widget.Toast
13 | import io.flutter.embedding.android.FlutterActivity
14 | import io.flutter.embedding.engine.FlutterEngine
15 | import io.flutter.plugin.common.BinaryMessenger
16 | import io.flutter.plugin.common.EventChannel
17 | import io.flutter.plugin.common.MethodChannel
18 | import org.jetbrains.annotations.NotNull
19 | import java.lang.reflect.Method
20 | import android.content.Intent.getIntent
21 | import android.os.Parcelable
22 |
23 | // import `in`.jvapps.system_alert_window.SystemAlertWindowPlugin
24 | // import io.flutter.app.FlutterApplication
25 | // import io.flutter.plugin.common.PluginRegistry
26 | // import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
27 |
28 | class MainActivity: FlutterActivity() {
29 |
30 | private val TRANSLATE_CHANNEL_NAME = "com.simplytranslate_mobile/translate"
31 | private var translateChannel: MethodChannel? = null
32 |
33 | override fun configureFlutterEngine(@NotNull flutterEngine: FlutterEngine) {
34 | super.configureFlutterEngine(flutterEngine)
35 | // Setup Channels
36 | setupChannels(this,flutterEngine.dartExecutor.binaryMessenger)
37 |
38 | }
39 |
40 | private fun setupChannels(context:Context, messenger: BinaryMessenger){
41 | translateChannel = MethodChannel(messenger, TRANSLATE_CHANNEL_NAME)
42 | translateChannel!!.setMethodCallHandler{
43 | call, result ->
44 | if (call.method == "getText"){
45 | result.success(text)
46 | text = ""
47 | } else {
48 | result.notImplemented()
49 | }
50 | }
51 | }
52 | private fun teardownChannels(){
53 | teardownChannels()
54 | translateChannel!!.setMethodCallHandler(null)
55 | }
56 |
57 |
58 |
59 |
60 | }
61 | var text = ""
62 | class UppercaseActivity : Activity() {
63 |
64 | override fun onCreate(savedInstanceState: Bundle?) {
65 | super.onCreate(savedInstanceState)
66 |
67 | text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT).toString()
68 |
69 | val launchIntent = packageManager.getLaunchIntentForPackage("com.simplytranslate_mobile")
70 | launchIntent?.let { startActivity(it) }
71 | finish()
72 |
73 | }
74 |
75 | }
76 |
77 | class SharedActivity : Activity() {
78 |
79 | override fun onCreate(savedInstanceState: Bundle?) {
80 | super.onCreate(savedInstanceState)
81 |
82 | text = intent.getCharSequenceExtra(Intent.EXTRA_TEXT).toString()
83 |
84 | val launchIntent = packageManager.getLaunchIntentForPackage("com.simplytranslate_mobile")
85 | launchIntent?.let { startActivity(it) }
86 | finish()
87 |
88 | }
89 |
90 | }
91 |
92 |
93 | // class Application : FlutterApplication(), PluginRegistrantCallback {
94 | // override fun onCreate() {
95 | // super.onCreate()
96 | // SystemAlertWindowPlugin.setPluginRegistrant(this)
97 | // }
98 |
99 | // override fun registerWith(registry: PluginRegistry) {
100 | // SystemAlertWindowPlugin.registerWith(registry.registrarFor("in.jvapps.system_alert_window"));
101 | // }
102 | // }
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #478061
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/profile/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/android/app/src/profile/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/profile/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #478061
4 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.8.0'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.3.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | project.evaluationDependsOn(':app')
25 | }
26 |
27 | tasks.register("clean", Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/assets/ca/lets-encrypt-r3.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
3 | TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
4 | cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
5 | WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
6 | RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
7 | AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
8 | R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
9 | sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
10 | NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
11 | Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
12 | /kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
13 | AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
14 | Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
15 | FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
16 | AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
17 | Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
18 | gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
19 | PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
20 | ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
21 | CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
22 | lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
23 | avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
24 | yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
25 | yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
26 | hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
27 | HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
28 | MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
29 | nLRbwHOoq7hHwg==
30 | -----END CERTIFICATE-----
31 |
--------------------------------------------------------------------------------
/assets/favicon/simplytranslate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/assets/favicon/simplytranslate.png
--------------------------------------------------------------------------------
/assets/favicon/simplytranslate_transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/assets/favicon/simplytranslate_transparent.png
--------------------------------------------------------------------------------
/assets/favicon/simplytranslate_transparent_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/assets/favicon/simplytranslate_transparent_black.png
--------------------------------------------------------------------------------
/assets/settings/counter-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/assets/settings/counter-dark.png
--------------------------------------------------------------------------------
/assets/settings/counter-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/assets/settings/counter-light.png
--------------------------------------------------------------------------------
/assets/settings/counter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
38 |
40 |
45 |
48 |
52 |
56 |
57 | 5000
68 | 0
79 |
80 |
81 |
--------------------------------------------------------------------------------
/desiredFileName.txt:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/docs/ar/donate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/docs/ar/download.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/ar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
18 |
19 | SimplyTranslate Mobile
20 |
21 |
22 |
25 |
26 |
ما هو SimplyTranslate؟
27 |
SimplyTranslate هو برنامج خادم (سيرفر) مفتوح المصدر يسحب بيانات الترجمة من مواقع مشهورة مثل ترجمة غوغل، ICIBA ،Reverso ،LibreTranslate إلخ... ويقدمها لك على شكل صفحة ويب بسيطة بدون أي إعلانات أو برامج تتبع مدسوسة بها. SimplyTranslate هو ليس عبارة عن نظير واحد (خادم، server)، بل هو عبارة عن عدة نظراء مشغلة بواسطة متطوعين حول العالم، تستطيع أيضا أن تشغل نظيرك الخاص إذا أردت. هنا القائمة الرسمية للنظراء العامين المعروفين.
28 |
ما هو SimplyTranslate Mobile؟
29 |
بدلاً من استعمال "واجهة الويب" لـSimplyTranslate على هاتفك، صنعنا واجهة هاتف كاملة لـSimplyTranslate + بعض الميزات الإضافية:
30 |
31 | نظير عشوائي كل عملية ترجمة لمنع اعطاء كامل سياق ترجمتك لنظير واحد فقط
32 | خيار نظير مخصص
33 | نص-إلى-كلام (TTS)
34 | تعرف على النص بدون الحاجة إلى إنترنت مش خرافي ولكن كل عمليات المعالجة تتم داخل الهاتف ولا تُبعث أي صورة إلى النظير
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/docs/ar/source.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/assets/1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/1.webp
--------------------------------------------------------------------------------
/docs/assets/2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/2.webp
--------------------------------------------------------------------------------
/docs/assets/3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/3.webp
--------------------------------------------------------------------------------
/docs/assets/4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/4.webp
--------------------------------------------------------------------------------
/docs/assets/bc1q0mk9eynz9waufjmk2eslt36cqxtgnqkhfmj9yj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/bc1q0mk9eynz9waufjmk2eslt36cqxtgnqkhfmj9yj.png
--------------------------------------------------------------------------------
/docs/assets/f-droid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/f-droid.png
--------------------------------------------------------------------------------
/docs/assets/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/favicon.png
--------------------------------------------------------------------------------
/docs/assets/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/assets/preview.png
--------------------------------------------------------------------------------
/docs/css/fonts/Inter-VariableFont_slnt,wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/css/fonts/Inter-VariableFont_slnt,wght.ttf
--------------------------------------------------------------------------------
/docs/css/fonts/Vazirmatn-VariableFont_wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/docs/css/fonts/Vazirmatn-VariableFont_wght.ttf
--------------------------------------------------------------------------------
/docs/donate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/docs/download.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/en/donate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/docs/en/download.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/en/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
17 | SimplyTranslate Mobile
18 |
19 |
20 |
21 |
A privacy friendly frontend to Google Translate
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/en/source.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/fr/donate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/docs/fr/download.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/fr/source.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
17 | SimplyTranslate Mobile
18 |
19 |
20 |
21 |
A privacy friendly frontend to Google Translate
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/nb_NO/donate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/docs/nb_NO/download.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/nb_NO/source.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/pl/donate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/docs/pl/download.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/pl/source.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/pug/donate.pug:
--------------------------------------------------------------------------------
1 | include ./widgets/widgets.pug
2 | doctype html
3 | html(lang="ar" dir=dir)
4 | head
5 | +head
6 | title SimplyTranslate Mobile
7 | body
8 | +navbar('donate')
9 |
10 | div.section
11 | br
12 | .section_title
13 | br
14 | br
15 | br
16 | h1!=donate
17 | |
18 | |
19 | !=donate_thanks
20 | p Buymeacoffee: https://www.buymeacoffee.com/manerakai
21 | p LiberaPay: https://liberapay.com/simplytranslate_mobile
22 | p btc: bc1qrhue0frps6p2vkg978u9ayethnwprtmfug827q
23 |
24 | br
25 | br
26 | br
27 | br
28 |
29 | +footer
--------------------------------------------------------------------------------
/docs/pug/download.pug:
--------------------------------------------------------------------------------
1 | include ./widgets/widgets.pug
2 | doctype html
3 | html(lang="ar" dir=dir)
4 | head
5 | +head
6 | title SimplyTranslate Mobile
7 | body
8 | +navbar('download')
9 |
10 | div.section
11 | br
12 | .section_title
13 | br
14 | br
15 | br
16 | h1.section_title!=download
17 |
18 | p!=fdroid
19 | |: https://f-droid.org/en/packages/com.simplytranslate_mobile
20 | p!=github_artifacts
21 | |: https://github.com/ManeraKai/simplytranslate_mobile/actions/workflows/main.yml
22 |
23 | br
24 | br
25 | br
26 | br
27 |
28 | +footer
--------------------------------------------------------------------------------
/docs/pug/index.pug:
--------------------------------------------------------------------------------
1 | include ./widgets/widgets.pug
2 | doctype html
3 | html(lang="ar" dir=dir)
4 | head
5 | +head
6 | title SimplyTranslate Mobile
7 | body
8 | +navbar('home')
9 |
10 | header
11 | img.main_logo(src="/simplytranslate_mobile/assets/logo.svg")
12 | h1 SimplyTranslate Mobile
13 |
14 | div.section
15 | .badge
16 | p.main-font A privacy friendly frontend to Google Translate
17 | a(href="https://f-droid.org/en/packages/com.simplytranslate_mobile/")
18 | img(src="/simplytranslate_mobile/assets/f-droid.png" alt="Get it on F-Droid" height="80")
19 |
20 | br
21 |
22 | div.screenshots
23 | img.center(src="/simplytranslate_mobile/assets/1.webp")
24 | img.center(src="/simplytranslate_mobile/assets/2.webp")
25 | img.center(src="/simplytranslate_mobile/assets/3.webp")
26 | img.center(src="/simplytranslate_mobile/assets/4.webp")
27 |
28 | +footer
29 |
30 | br
--------------------------------------------------------------------------------
/docs/pug/source.pug:
--------------------------------------------------------------------------------
1 | include ./widgets/widgets.pug
2 | doctype html
3 | html(lang="ar" dir=dir)
4 | head
5 | +head
6 | title SimplyTranslate Mobile
7 | body
8 | +navbar('source')
9 |
10 | div.section
11 | br
12 | .section_title
13 | br
14 | br
15 | br
16 | h1!=source_code
17 |
18 | p!=github
19 | |: https://github.com/ManeraKai/simplytranslate_mobile
20 | p!=codeberg
21 | |: https://codeberg.org/ManeraKai/simplytranslate_mobile
22 |
23 | br
24 | br
25 | br
26 | br
27 |
28 | +footer
--------------------------------------------------------------------------------
/docs/pug/widgets/widgets.pug:
--------------------------------------------------------------------------------
1 | mixin head
2 | meta(http-equiv="Content-Type" content="text/html; charset=UTF-8")
3 | meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0" )
4 | meta(name="theme-color" content="#141414" )
5 | link(rel="shortcut icon" type="image/png" href="./assets/favicon.png" )
6 | meta(name="description" content="An alternative front-end to GoogleTranslate")
7 | link(itemprop="image" href="./assets/favicon.png")
8 | link(href="/simplytranslate_mobile/css/index.css" type="text/css" rel="stylesheet" media="screen,projection" )
9 | meta(content="https://manerakai.github.io/simplytranslate_mobile/assets/preview.png" property="og:image")
10 |
11 | mixin navbar(page)
12 | .navbar
13 | a(href="./index.html" class=page == 'home' ? "selected" : "")!=home
14 | a(href="./download.html" class=page == 'download' ? "selected" : "")!=download
15 | a(href="./source.html" class=page == 'source' ? "selected" : "")!=source_code
16 | a(href="./contributors.html" class=page == 'contributors' ? "selected" : "")!=contributors
17 | a(href="./donate.html" class=page == 'donate' ? "selected" : "")!=donate
18 |
19 | //- if page == 'home'
20 | .langs(dir="ltr")
21 | a(href="/simplytranslate_mobile/en/index.html") EN
22 | a(href="/simplytranslate_mobile/ar/index.html") AR
23 | a(href="/simplytranslate_mobile/fr/index.html") FR
24 | a(href="/simplytranslate_mobile/nb_NO/index.html") NB NO
25 | a(href="/simplytranslate_mobile/pl/index.html") PL
26 | a(href="/simplytranslate_mobile/tr/index.html") TR
27 |
28 |
29 | mixin footer
30 | footer
31 | a(href="https://simple-web.org/projects/simplytranslate.html") SimplyTranslate
32 | | |
33 | a(href="https://simple-web.org/") Simple Web Project
--------------------------------------------------------------------------------
/docs/source.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
16 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/strings/ar.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "الصفحة الرئيسية",
3 | "download": "تحميل",
4 | "source_code": "كود المصدر",
5 | "contributors": "المساهمون",
6 | "developers": "المطورون",
7 | "donate": "تبرع",
8 | "donate_thanks": "تسلم دياتك! ",
9 | "short_description": "عميل أندرويد لـSimplyTranslate .",
10 | "what_is_simplytranslate": "ما هو SimplyTranslate؟",
11 | "what_is_simplytranslate_answer": "SimplyTranslate هو برنامج خادم (سيرفر) مفتوح المصدر يسحب بيانات الترجمة من مواقع مشهورة مثل ترجمة غوغل، ICIBA ،Reverso ،LibreTranslate إلخ... ويقدمها لك على شكل صفحة ويب بسيطة بدون أي إعلانات أو برامج تتبع مدسوسة بها. SimplyTranslate هو ليس عبارة عن نظير واحد (خادم، server)، بل هو عبارة عن عدة نظراء مشغلة بواسطة متطوعين حول العالم، تستطيع أيضا أن تشغل نظيرك الخاص إذا أردت. هنا القائمة الرسمية للنظراء العامين المعروفين.",
12 | "what_is_simplytranslate_mobile": "ما هو SimplyTranslate Mobile؟",
13 | "what_is_simplytranslate_mobile_answer": "بدلاً من استعمال \"واجهة الويب\" لـSimplyTranslate على جهازك، هناك الآن واجهة جوال كاملة، زائد بعض الميزات الإضافية:",
14 | "random_instance_each_request": "نظير عشوائي كل عملية ترجمة لمنع اعطاء كامل سياق ترجمتك لنظير واحد فقط ",
15 | "custom_instance_option": "خيار نظير مخصص",
16 | "text_to_speech": "نص-إلى-كلام (TTS)",
17 | "offline_camera_text_recognition": "تعرف على النص بدون الحاجة إلى إنترنت مش خرافي ولكن كل عمليات المعالجة تتم داخل الهاتف ولا تُبعث أي صورة إلى النظير ",
18 | "fdroid": "إف-درويد",
19 | "github_artifacts": "آثار غيت هاب (إصدارات بيتا) ",
20 | "github": "غيت هاب",
21 | "codeberg": "كود بيرغ",
22 | "testers": "المختبرون",
23 | "translators": "المترجمون",
24 | "icon": "الأيقونة"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/bg.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "Начало",
3 | "source_code": "Изходен код",
4 | "contributors": "Доброволци",
5 | "download": "Изтегляне",
6 | "developers": "Разработчици",
7 | "donate": "Дари",
8 | "donate_thanks": "Благодаря! ",
9 | "what_is_simplytranslate": "Какво е SimplyTranslate?",
10 | "what_is_simplytranslate_mobile": "Какво е SimplyTranslate Mobile?",
11 | "translators": "Преводачи",
12 | "icon": "Иконка",
13 | "fdroid": "F-Droid",
14 | "github": "GitHub",
15 | "codeberg": "Codeberg"
16 | }
17 |
--------------------------------------------------------------------------------
/docs/strings/bn.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/cs.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/de.json:
--------------------------------------------------------------------------------
1 | {
2 | "source_code": "Quellcode",
3 | "download": "Herunterladen",
4 | "developers": "Entwickler",
5 | "donate": "Spenden",
6 | "what_is_simplytranslate_mobile": "Was ist SimplyTranslate Mobile?",
7 | "github": "GitHub",
8 | "donate_thanks": "Danke! ",
9 | "short_description": "Ein Android-Client für SimplyTranslate .",
10 | "home": "Startseite",
11 | "testers": "Prüfer",
12 | "translators": "Übersetzer",
13 | "icon": "Symbol",
14 | "text_to_speech": "Text-zu-Sprache (TzS)",
15 | "codeberg": "Codeberg",
16 | "contributors": "Mitwirkende",
17 | "what_is_simplytranslate": "Was ist SimplyTranslate?",
18 | "what_is_simplytranslate_mobile_answer": "Anstatt die Web-Schnittstelle von SimplyTranslate auf Ihrem Telefon zu verwenden, haben wir ein komplettes mobiles Interface für SimplyTranslate und einige zusätzliche Funktionen entwickelt:",
19 | "custom_instance_option": "Option \"Benutzerdefinierte Instanz\"",
20 | "random_instance_each_request": "Zufällige Instanz bei jeder Anfrage um zu verhindern, dass der gesamte Kontext Ihrer Übersetzung an eine Instanz weitergegeben wird ",
21 | "offline_camera_text_recognition": "Offline Kamera Texterkennung nicht die perfekteste, aber sie sendet keine Fotos an die Instanzen ",
22 | "fdroid": "F-Droid",
23 | "github_artifacts": "GitHub Artefakte (Beta-Builds) ",
24 | "what_is_simplytranslate_answer": "SimplyTranslateSimplyTranslate ist eine Open-Source-Server-Applikation, die Übersetzungsdaten von beliebten Übersetzungswebseiten wie Google Translate, ICIBA, Reverso, LibreTranslate etc... abruft und sie dir in einer einfachen Weboberfläche ohne Werbung oder Tracking-Scripts präsentiert. Du kannst es sogar mit deaktiviertem Tor + JavaScript benutzen und es funktioniert immer noch einwandfrei. SimplyTranslate ist'nicht nur eine Instanz (Server), sondern'mehrere Instanzen rund um die Welt, die von Freiwilligen betrieben werden, du kannst sogar deine eigene private Instanz betreiben. Hier ist die offizielle Liste der bekannten öffentlichen Instanzen."
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/el.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/en.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "Home",
3 | "download": "Download",
4 | "source_code": "Source Code",
5 | "contributors": "Contributors",
6 | "developers": "Developers",
7 | "donate": "Donate",
8 | "donate_thanks": "Thank You! ",
9 | "short_description": "An android client for SimplyTranslate .",
10 | "what_is_simplytranslate": "What is SimplyTranslate?",
11 | "what_is_simplytranslate_answer": "SimplyTranslate is an open source server app that scraps translation data from popular translation websites like Google Translate, ICIBA, Reverso, LibreTranslate etc… and presents it to you in a simple web interface without any ads nor tracking scripts. You can even use it with Tor + JavaScript disabled and it'll still work properly. SimplyTranslate isn't just one instance (server), it's multiple instances around the world ran by volunteers, you can even run your own private instance . Here is the official list of the known public instances.",
12 | "what_is_simplytranslate_mobile": "What is SimplyTranslate Mobile?",
13 | "what_is_simplytranslate_mobile_answer": "Rather than using the \"web interface\" of SimplyTranslate on your device, there is now a whole mobile interface, plus some additional features:",
14 | "random_instance_each_request": "Random Instance Each Request to prevent giving the full context of your translation to one instance ",
15 | "custom_instance_option": "Custom instance option",
16 | "text_to_speech": "Text-To-Speech (TTS)",
17 | "offline_camera_text_recognition": "Offline Camera Text Recognition not the most perfect but it doesn't send any photos to the instances ",
18 | "fdroid": "F-Droid",
19 | "github_artifacts": "GitHub Artifacts (beta builds) ",
20 | "github": "GitHub",
21 | "codeberg": "Codeberg",
22 | "testers": "Testers",
23 | "translators": "Translators",
24 | "icon": "Icon"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/eo.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "Ĉefpaĝo",
3 | "download": "Elŝuti",
4 | "source_code": "Fontokodo",
5 | "contributors": "Kontribuantoj",
6 | "developers": "Programistoj",
7 | "donate": "Donaci",
8 | "donate_thanks": "Dankon! ",
9 | "fdroid": "F-Droid",
10 | "what_is_simplytranslate": "Kio estas SimplyTranslate?",
11 | "github": "GitHub",
12 | "codeberg": "Codeberg",
13 | "translators": "Tradukantoj",
14 | "icon": "Piktogramo",
15 | "what_is_simplytranslate_answer": "SimplyTranslate estas malfermitfonta servila programo, kiu prenas tradukaĵojn el popularaj tradukaj retejoj kiel Google Translate, ICIBA, Reverso, LibreTranslate ktp… kaj prezentas ĝin al vi sur simpla retfasado sen reklamoj aŭ spuriloj. Vi eĉ povas uzi ĝin per Tor aŭ sen JavaScript. SimplyTranslate ne estas nur unu servilo; ĝi konsistas el pluraj serviloj tra la mondo prizorgataj de volontuloj. Vi eĉ povas funkciigi vian propran servilon . Jen la oficiala listo de la konataj publikaj serviloj.",
16 | "github_artifacts": "GitHub-Artefaktoj (beta-versioj) ",
17 | "custom_instance_option": "Opcio uzi propran servilon",
18 | "text_to_speech": "Prononcilo",
19 | "testers": "Elprovantoj",
20 | "what_is_simplytranslate_mobile_answer": "Anstataŭ uzo de la «retfasado» de SimplyTranslate per via aparato, nun ekzistas plena poŝaparata fasado kun pliaj funkcioj:",
21 | "random_instance_each_request": "Hazarda servilo por ĉiu peto por malhelpi sciigi unu servilon pri la plena kunteksto de via tradukado ",
22 | "offline_camera_text_recognition": "Senreta fotila tekstlegilo ne plene perfekta, sed tio ne sendas fotojn al la serviloj ",
23 | "short_description": "Kliento por SimplyTranslate sur Android.",
24 | "what_is_simplytranslate_mobile": "Kio estas SimplyTranslate Mobile?"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/es.json:
--------------------------------------------------------------------------------
1 | {
2 | "what_is_simplytranslate_answer": "SimplyTranslate es una aplicación de código abierto de servidor que extrae datos de traducción de traductores web populares como Google Translate, ICIBA, Reverso, LibreTranslate, etc... y te los presenta en una interfaz web sencilla sin publicidad ni scripts de rastreo. Se puede usar incluso a través de Tor y con JavaScript deshabilitado y seguirá funcionando correctamente. SimplyTranslate no es solo una instancia (servidor), sino múltiples instancias alrededor del mundo manejadas por voluntarios; incluso puedes alojar tu propia instancia privada . Aquí tienes la lista oficial de todas las instancias públicas conocidas.",
3 | "home": "Inicio",
4 | "download": "Descargar",
5 | "source_code": "Código fuente",
6 | "donate": "Donar",
7 | "contributors": "Contribuyentes",
8 | "developers": "Desarrolladores",
9 | "donate_thanks": "¡Gracias! ",
10 | "short_description": "Un cliente de Android para SimplyTranslate .",
11 | "what_is_simplytranslate": "¿Qué es SimplyTranslate?",
12 | "what_is_simplytranslate_mobile_answer": "En lugar de usar la interfaz web de SimplyTranslate en tu dispositivo, ahora hay una interfaz móvil, con unas cuantas funciones nuevas:",
13 | "what_is_simplytranslate_mobile": "¿Qué es SimplyTranslate Mobile?",
14 | "random_instance_each_request": "Cada solicitud se manda a una instancia aleatoria para evitar dar el contexto completo de tu traducción a una instancia ",
15 | "text_to_speech": "Texto a voz (TTS)",
16 | "offline_camera_text_recognition": "El reconocimiento de texto offline a través de la cámara no es el mejor del mundo pero al menos no envía fotos a ninguna instancia ",
17 | "custom_instance_option": "Opción de usar una instancia personalizada",
18 | "fdroid": "F-Droid",
19 | "github_artifacts": "Artefactos de GitHub (builds en beta) ",
20 | "github": "GitHub",
21 | "codeberg": "Codeberg",
22 | "testers": "Testers",
23 | "translators": "Traductores",
24 | "icon": "Icono"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/fa.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/fi.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/fr.json:
--------------------------------------------------------------------------------
1 | {
2 | "source_code": "Code source",
3 | "what_is_simplytranslate_answer": "SimplyTranslate est une application serveur open source qui récupère les données de traduction des sites web de traduction les plus populaires comme Google Translate, ICIBA, Reverso, LibreTranslate etc. et vous les présente dans une interface web simple sans aucune publicité ni script de suivi. Vous pouvez même l'utiliser avec Tor + JavaScript désactivé et il fonctionnera toujours correctement. SimplyTranslate n'est pas seulement une instance (serveur), c'est de multiples instances dans le monde entier gérées par des bénévoles, vous pouvez même faire fonctionner votre propre instance privée . Voici la liste officielle des instances publiques connues.",
4 | "github": "GitHub",
5 | "testers": "Testeurs",
6 | "translators": "Traducteurs",
7 | "home": "Accueil",
8 | "random_instance_each_request": "Instance aléatoire à chaque demande pour éviter de donner le contexte complet de votre traduction à une seule instance ",
9 | "custom_instance_option": "Option d'instance personnalisée",
10 | "text_to_speech": "Synthèse vocale",
11 | "offline_camera_text_recognition": "Reconnaissance de texte par caméra hors ligne pas la plus parfaite mais elle n'envoie aucune photo aux instances ",
12 | "donate": "Faire un don",
13 | "download": "Télécharger",
14 | "what_is_simplytranslate": "Qu'est-ce que SimplyTranslate ?",
15 | "codeberg": "Codeberg",
16 | "contributors": "Contributeurs",
17 | "developers": "Développeurs",
18 | "donate_thanks": "Merci ! ",
19 | "short_description": "Un client Android pour SimplyTranslate .",
20 | "what_is_simplytranslate_mobile": "Qu'est-ce que SimplyTranslate Mobile ?",
21 | "what_is_simplytranslate_mobile_answer": "Plutôt que d'utiliser l'interface web de SimplyTranslate sur votre appareil, il y a maintenant une interface mobile complète, plus quelques fonctionnalités supplémentaires :",
22 | "fdroid": "F-Droid",
23 | "github_artifacts": "GitHub Artifacts (versions bêta) ",
24 | "icon": "Icône"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/hu.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_description": "Az android kliens a SimplyTranslate számára.",
3 | "home": "Kezdőképernyő",
4 | "download": "Letöltés",
5 | "source_code": "Forráskód",
6 | "contributors": "Közreműködők",
7 | "donate_thanks": "Köszönöm! ",
8 | "what_is_simplytranslate_answer": "A SimplyTranslate egy nyílt forráskódú szerveralkalmazás, amely begyüjti a fordítási adatokat a népszerű fordítási weboldalakról, mint a Google Fordító, ICIBA, Reverso, LibreTranslate stb..., és egy egyszerű webes felületen bemutatja, hirdetések és nyomkövető szkriptek nélkül. Akár Tor + JavaScript nélkül is használhatja, akkor is megfelelően fog működni. A SimplyTranslate nem csak egy példány (szerver), hanem több példány (szerver) is van a világon, amelyet önkéntesek működtetnek, akár saját magánpéldányt is futtathat. Itt található az ismert nyilvános példányok hivatalos listája .",
9 | "donate": "Támogatás",
10 | "developers": "Fejlesztők",
11 | "what_is_simplytranslate": "Mi az a SimplyTranslate?",
12 | "fdroid": "F-Droid",
13 | "what_is_simplytranslate_mobile": "Mi az a SimplyTranslate Mobil?",
14 | "what_is_simplytranslate_mobile_answer": "Ahelyett, hogy a SimplyTranslate „webes felületét” használná az eszközén, most már egy teljes mobil felület áll rendelkezésre, valamint néhány további funkció is elérhető:",
15 | "random_instance_each_request": "Minden kérés véletlenszerű példány, megakadályozva a fordítás teljes szövegkörnyezetének átadását egy példánynak ",
16 | "text_to_speech": "Text-To-Speech (TTS)",
17 | "offline_camera_text_recognition": "Az offline kamera szövegfelismerés nem a legtökéletesebb, de nem küld fényképeket a példányoknak ",
18 | "custom_instance_option": "Egyéni példány választási lehetőség",
19 | "github_artifacts": "GitHub Artifacts (béta kiadás) ",
20 | "github": "GitHub",
21 | "codeberg": "Codeberg",
22 | "testers": "Tesztelők",
23 | "translators": "Fordítók",
24 | "icon": "Ikon"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/id.json:
--------------------------------------------------------------------------------
1 | {
2 | "donate": "Berdonasi"
3 | }
4 |
--------------------------------------------------------------------------------
/docs/strings/is.json:
--------------------------------------------------------------------------------
1 | {
2 | "download": "Sækja",
3 | "home": "Upphaf",
4 | "source_code": "Grunnkóði",
5 | "contributors": "Framlög frá",
6 | "what_is_simplytranslate": "Hvaða er SimplyTranslate?",
7 | "fdroid": "F-Droid",
8 | "custom_instance_option": "Val um að sérsníða netþjónstilvik",
9 | "donate": "Styrkja",
10 | "developers": "Forritarar",
11 | "donate_thanks": "Þakka þér fyrir! ",
12 | "short_description": "Android-forrit fyrir SimplyTranslate .",
13 | "what_is_simplytranslate_mobile": "Hvaða er SimplyTranslate Mobile?",
14 | "text_to_speech": "Texti-í-tal (TTS)",
15 | "github_artifacts": "GitHub Artifacts (beta-byggingarútgáfur) ",
16 | "github": "GitHub",
17 | "codeberg": "Codeberg",
18 | "testers": "Prófarar",
19 | "translators": "Þýðendur",
20 | "icon": "Táknmynd",
21 | "what_is_simplytranslate_answer": "SimplyTranslate er netþjónsforrit með opnum grunnkóða sem skrapar þýðingagögn frá vinsælum þýðingavefjum á borð við Google Translate, ICIBA, Reverso, LibreTranslate o.s.frv… og setur þau fram fyrir þig í einföldu vefviðmóti án nokkurra rakningaskriftunar. Þú getur meira að segja notað þetta í gegnum Tor ásamt því að gera JavaScript óvirkt og það mun samt virka rétt properly. SimplyTranslate er ekki bara eitt tilvik (netþjónn), heldur euru þetta mörg tilvik rekin af sjálfboðaliðum úti um víða veröld, þú getur meira að segja keyrt þitt eigið einkatilvik . Hér er opinber listi yfir þekkt aðgengileg tilvik.",
22 | "what_is_simplytranslate_mobile_answer": "Frekar en að nota \"vefviðmótið\" á SimplyTranslate á tækinu þínu, þá er komið forrit fyrir snjalltæki sem innifelur ýmsa viðbótareiginleika:",
23 | "random_instance_each_request": "Handahófskennt tilvik fyrir hverja beiðni til að koma í veg fyrir að allt samhengi þýðingarinnar fari til eins og sama tilviksins ",
24 | "offline_camera_text_recognition": "Ónettengd textagreining með myndavél er ekki það allra fullkomnasta en sendir ekki neinar myndir á netþjónana "
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/it.json:
--------------------------------------------------------------------------------
1 | {
2 | "what_is_simplytranslate_answer": "SimplyTranslate è un'applicazione server open source che raccoglie i dati di traduzione da siti web di traduzione popolari come Google Translate, ICIBA, Reverso, LibreTranslate ecc... e te lo presenta in una semplice interfaccia web senza pubblicità né script di tracciamento. Puoi anche usarlo con Tor + JavaScript disabilitato e funzionerà comunque correttamente. SimplyTranslate non è solo una istanza (server), sono più istanze in tutto il mondo gestite da volontari, puoi anche eseguire la tua istanza privata . Qui la lista ufficiale delle istanze pubbliche conosciute.",
3 | "home": "Home",
4 | "download": "Scarica",
5 | "source_code": "Codice Sorgente",
6 | "contributors": "Collaboratori",
7 | "developers": "Sviluppatori",
8 | "donate": "Dona",
9 | "donate_thanks": "Grazie! ",
10 | "short_description": "Un client Android per SimplyTranslate .",
11 | "what_is_simplytranslate": "Cos'è SimplyTranslate?",
12 | "what_is_simplytranslate_mobile": "Cos'è SimplyTranslate Mobile?",
13 | "what_is_simplytranslate_mobile_answer": "Piuttosto che utilizzare l' \"interfaccia web\" di SimplyTranslate sul tuo dispositivo, ora c'è un'intera interfaccia mobile, oltre ad alcune funzionalità aggiuntive:",
14 | "random_instance_each_request": "Istanza casuale ad ogni richiesta per evitare di dare il contesto completo della tua traduzione ad un'istanza ",
15 | "custom_instance_option": "Opzione per un'istanza personalizzata",
16 | "text_to_speech": "Sintesi vocale (TTS)",
17 | "offline_camera_text_recognition": "Riconoscimento del testo dalla fotocamera offline non il migliore, ma non invia alcuna foto alle istanze ",
18 | "fdroid": "F-Droid",
19 | "github_artifacts": "Artifatti GitHub (build beta) ",
20 | "github": "GitHub",
21 | "codeberg": "Codeberg",
22 | "testers": "Collaudatori",
23 | "translators": "Traduttori",
24 | "icon": "Icona"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/ja.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/ko.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "홈",
3 | "donate": "기부하기",
4 | "donate_thanks": "감사합니다! ",
5 | "what_is_simplytranslate": "SimplyTranslate는 무엇인가요?",
6 | "what_is_simplytranslate_mobile": "SimplyTranslate Mobile는 무엇인가요?",
7 | "what_is_simplytranslate_mobile_answer": "장치에서 SimplyTranslate의 \"웹 인터페이스\"를 사용하는 대신 이제 전체 모바일 인터페이스와 몇 가지 추가 기능이 있습니다:",
8 | "custom_instance_option": "커스텀 인스턴스 설정",
9 | "fdroid": "F-Droid",
10 | "download": "다운로드",
11 | "short_description": "안드로이드 클라이언트 SimplyTranslate .",
12 | "source_code": "소스 코드",
13 | "developers": "개발자들",
14 | "contributors": "기여자들",
15 | "github": "GitHub",
16 | "random_instance_each_request": "임의 인스턴스 각 요청은 한 인스턴스에 번역의 전체 컨텍스트를 제공하지 않도록 합니다 ",
17 | "text_to_speech": "글자 읽어주기 (TTS)",
18 | "offline_camera_text_recognition": "오프라인 카메라 텍스트 인식 가장 완벽하지는 않지만 인스턴스에 사진을 보내지 않습니다 ",
19 | "github_artifacts": "Github 아티팩트(베타 빌드) ",
20 | "testers": "테스터들",
21 | "codeberg": "코드버그",
22 | "translators": "번역가들",
23 | "icon": "아이콘",
24 | "what_is_simplytranslate_answer": "SimplyTranslate 는 Google Translate, ICIBA, Reverso, LibreTranslate 등과 같은 인기 있는 번역 웹사이트에서 번역 데이터를 스크랩하여 광고나 추적 스크립트 없이 간단한 웹 인터페이스로 제공하는 오픈 소스 서버 앱입니다. Tor + JavaScript를 비활성화한 상태에서도 사용할 수 있으며 여전히 제대로 작동합니다. SimplyTranslate는 하나의 인스턴스(서버)가 아니라 자원봉사자가 운영하는 전 세계 여러 인스턴스입니다."
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/ml.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/nb_NO.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "Hjem",
3 | "download": "Last ned",
4 | "source_code": "Kildekode",
5 | "contributors": "Bidragsytere",
6 | "developers": "Utviklere",
7 | "donate_thanks": "Takk. ",
8 | "short_description": "En Android-klient for SimplyTranslate .",
9 | "what_is_simplytranslate": "Hva er SimplyTranslate?",
10 | "github": "GitHub",
11 | "custom_instance_option": "Alternativ for egendefinert instans",
12 | "text_to_speech": "Tekst-til-tale/talesyntese (TTS)",
13 | "fdroid": "F-Droid",
14 | "github_artifacts": "GitHub Artifacts (beta-bygg) ",
15 | "random_instance_each_request": "Tilfeldig insans for hver forespørsel for å forhindre at hele konteksten av oversettelsen går til samme sted ",
16 | "what_is_simplytranslate_mobile_answer": "Snarere enn å bruke vev-grensesnittet til SimplyTranslate på enheten din, kan du bruke mobilgrensesnittet, pluss noen ytterligere funksjoner:",
17 | "offline_camera_text_recognition": "Frakoblet kamera-tekstoppdagelse ikke den beste funksjonaliteten, men det sender ihvertfall ikke bilder til instansene ",
18 | "donate": "Doner",
19 | "codeberg": "Codeberg",
20 | "what_is_simplytranslate_mobile": "Hva er SimplyTranslate Mobile?",
21 | "translators": "Oversettere",
22 | "icon": "Ikon",
23 | "testers": "Testere",
24 | "what_is_simplytranslate_answer": "SimplyTranslate er fri server som henter oversettelsesdata fra populære oversettelsesnettsider som Google Translate, ICIBA, Reverso, LibreTranslate osv… og presenterer det for deg i et enkelt vev-grensesnitt, uten reklame eller sporingsskript. SimplyTranslate er ikke bare én instans (tjener), det er flere rundt omkring som vertstjenes av frivillige, og du kan også bruke din egen private instans fra listen over offentlige instanser ."
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/nl.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "Voorblad",
3 | "download": "Opslaan",
4 | "contributors": "Medewerkers",
5 | "developers": "Ontwikkelaars",
6 | "donate_thanks": "Dankuwel! ",
7 | "short_description": "Een Android cliënt voor SimplyTranslate .",
8 | "what_is_simplytranslate": "Wat is SimplyTranslate?",
9 | "what_is_simplytranslate_mobile": "Wat is SimplyTranslate Mobiel?",
10 | "what_is_simplytranslate_mobile_answer": "Beter dan een \"web-aansluiting\" van SimplyTranslate op jouw mobiel, bieden wij een hele mobiele app aan, met nog wat aanvullende functionaliteiten:",
11 | "random_instance_each_request": "Willekeurige server bij elk verzoek om te voorkomen dat één server de hele invoer van uw vertaling ziet ",
12 | "custom_instance_option": "Aangepaste server mogelijkheid",
13 | "text_to_speech": "Tekst-naar-spraak (TTS)",
14 | "fdroid": "F-Droid",
15 | "translators": "Vertalers",
16 | "icon": "Teken",
17 | "donate": "Doneren",
18 | "github_artifacts": "GitHub Artifacten (beta-builds) ",
19 | "github": "GitHub",
20 | "codeberg": "Codeberg",
21 | "testers": "Testers",
22 | "source_code": "Broncode",
23 | "what_is_simplytranslate_answer": "SimplyTranslate is een openbron server app die de vertalingen van Google Translate, ICIBA, Reverso, LibreTranslate, enz. pakt en jou aanbiedt zonder enige reclames of privacyschendende scripts. U kunt het zelfs met Tor +JavaScript uitgeschakeld gebruiken en het werkt uitstekend. SimplyTranslate is niet slechts één instantie (server); het zijn meerdere servers over de wereld beheerd door vrijwilligers. U kunt zelfs uw eigen privé server beheren. Hier is de officiële lijst van de erkende servers.",
24 | "offline_camera_text_recognition": "Offline Camera Tekst Herkenning niet vlekkeloos, maar zo verzendt u geen afbeeldingen naar servers "
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/pl.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "Strona główna",
3 | "download": "Pobierz",
4 | "source_code": "Kod źródłowy",
5 | "contributors": "Współtwórcy",
6 | "developers": "Programiści",
7 | "donate_thanks": "Dziękuję! ",
8 | "donate": "Wesprzyj",
9 | "short_description": "Klient androidowy dla SimplyTranslate .",
10 | "custom_instance_option": "Opcja ustawienia własnej instancji",
11 | "text_to_speech": "Zamiana tekstu na mowę (TTS)",
12 | "fdroid": "F-Droid",
13 | "github_artifacts": "GitHub Artifacts (kompilacje beta) ",
14 | "github": "GitHub",
15 | "icon": "Ikona",
16 | "random_instance_each_request": "Losowa instancja dla każdego żądania — aby zapobiec przekazywaniu pełnego kontekstu tłumaczenia jednej instancji ",
17 | "offline_camera_text_recognition": "Rozpoznawanie tekstu z aparatu offline — nie najdoskonalsze, ale nie wysyła żadnych zdjęć do instancji ",
18 | "what_is_simplytranslate": "Co to jest SimplyTranslate?",
19 | "what_is_simplytranslate_mobile": "Co to jest SimplyTranslate Mobile?",
20 | "what_is_simplytranslate_answer": "SimplyTranslate to otwartoźródłowa aplikacja serwerowa, która zbiera dane tłumaczeniowe z popularnych stron tłumaczeniowych, takich jak Tłumacz Google, ICIBA, Reverso, LibreTranslate itp., i przedstawia je w prostym interfejsie webowym bez żadnych reklam ani skryptów śledzących. Możesz nawet używać go z Torem i wyłączonym JavaScriptem i nadal będzie działać prawidłowo. SimplyTranslate to nie tylko jedna instancja (serwer), ale wiele instancji na całym świecie prowadzonych przez wolontariuszy; możesz nawet uruchomić swoją własną prywatną instancję . Oto oficjalna lista znanych publicznych instancji.",
21 | "what_is_simplytranslate_mobile_answer": "Zamiast korzystać z „interfejsu webowego” SimplyTranslate na urządzeniu, masz teraz cały interfejs mobilny oraz kilka dodatkowych funkcji:",
22 | "translators": "Tłumacze",
23 | "codeberg": "Codeberg",
24 | "testers": "Testerzy"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/pt_BR.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/strings/ru.json:
--------------------------------------------------------------------------------
1 | {
2 | "what_is_simplytranslate_answer": "SimplyTranslate — это серверное приложение с открытым исходным кодом, которое собирает данные переводов с популярных онлайн-переводчиков, таких как Google Translate, ICIBA, Reverso, LibreTranslate и т.д... И предоставляет их вам в простом веб-интерфейсе, без какой-либо рекламы или отслеживающих скриптов. Вы даже можете использовать его с Tor и выключенным JavaScript, и он всё ещё будет работать как надо. SimplyTranslate — это не просто одна инстанция (сервер), это множественные инстанции, расположенные по всему миру и запущенные добровольцами. Вы даже можете запустить вашу собственную приватную инстанцию . Здесь есть официальный список известных публичных инстанций.",
3 | "home": "Домой",
4 | "download": "Загрузить",
5 | "source_code": "Исходный код",
6 | "contributors": "Помощники",
7 | "developers": "Разработчики",
8 | "donate": "Пожертвовать",
9 | "donate_thanks": "Спасибо! ",
10 | "short_description": "Android клиент для SimplyTranslate .",
11 | "what_is_simplytranslate": "Что такое SimplyTranslate?",
12 | "what_is_simplytranslate_mobile": "Что такое SimplyTranslate Mobile?",
13 | "what_is_simplytranslate_mobile_answer": "Вместо использования \"веб-интерфейса\" SimplyTranslate на вашем устройстве, здесь есть полноценный мобильный интерфейс, а также некоторые дополнительные функции:",
14 | "random_instance_each_request": "Случайная инстанция на каждый запрос, чтобы предотвратить получение одной инстанцией полного текста вашего перевода ",
15 | "custom_instance_option": "Опция добавления пользовательской инстанции",
16 | "text_to_speech": "Текст-в-Речь (TTS)",
17 | "offline_camera_text_recognition": "Распознавание текста камерой без интернета с не самым лучшим качеством, но оно не отправляет какие-либо фотографии на инстанции ",
18 | "fdroid": "F-Droid",
19 | "github_artifacts": "GitHub Артефакты (бета сборки) ",
20 | "github": "GitHub",
21 | "codeberg": "Codeberg",
22 | "testers": "Тестировщики",
23 | "translators": "Переводчики",
24 | "icon": "Значок"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/tr.json:
--------------------------------------------------------------------------------
1 | {
2 | "donate": "Bağış Yap",
3 | "donate_thanks": "Teşekkürler! ",
4 | "short_description": "SimplyTranslate için bir Android istemcisi.",
5 | "what_is_simplytranslate": "SimplyTranslate Nedir?",
6 | "what_is_simplytranslate_mobile": "SimplyTranslate Mobil Nedir?",
7 | "what_is_simplytranslate_mobile_answer": "Aygıtınızda SimplyTranslate'in \"web arayüzünü\" kullanmak yerine, artık tam bir mobil arayüz ve bazı ek özellikler bulunmaktadır:",
8 | "random_instance_each_request": "Her İstekte Rastgele Örnek çevirinizin tüm bağlamının tek bir örneğe verilmesini önlemek için ",
9 | "custom_instance_option": "Özel örnek seçeneği",
10 | "text_to_speech": "Metin Okuma (TTS)",
11 | "offline_camera_text_recognition": "Çevrim Dışı Kamera Metin Tanıma en mükemmeli değil ama örneklere herhangi bir fotoğraf göndermez ",
12 | "testers": "Test Edenler",
13 | "translators": "Çevirmenler",
14 | "icon": "Simge",
15 | "contributors": "Katkıda Bulunanlar",
16 | "developers": "Geliştiriciler",
17 | "source_code": "Kaynak Kodu",
18 | "download": "İndir",
19 | "home": "Ana Sayfa",
20 | "fdroid": "F-Droid",
21 | "codeberg": "Codeberg",
22 | "what_is_simplytranslate_answer": "SimplyTranslate ; Google Çeviri, ICIBA, Reverso, LibreTranslate gibi popüler çeviri web sitelerinden çeviri verilerini toplayan ve bunları herhangi bir reklam veya izleme betiği olmadan basit bir web arayüzünde size sunan açık kaynaklı bir sunucu uygulamasıdır. Tor + JavaScript devre dışıyken bile kullanabilirsiniz ve yine de düzgün çalışacaktır. SimplyTranslate sadece bir örnek (sunucu) değil, gönüllüler tarafından yönetilen dünya çapında birden fazla örnektir, hatta kendi özel örneğinizi çalıştırabilirsiniz. Bilinen herkese açık örneklerin resmi listesine göz atabilirsiniz.",
23 | "github_artifacts": "GitHub Yapıları (beta derlemeleri) ",
24 | "github": "GitHub"
25 | }
26 |
--------------------------------------------------------------------------------
/docs/strings/uk.json:
--------------------------------------------------------------------------------
1 | {
2 | "home": "Головна",
3 | "source_code": "Вихідний код",
4 | "donate": "Пожертви",
5 | "donate_thanks": "Дякую! ",
6 | "short_description": "Клієнт android для SimplyTranslate .",
7 | "what_is_simplytranslate": "Що таке SimplyTranslate?",
8 | "text_to_speech": "Текст-у-голос (TTS)",
9 | "fdroid": "F-Droid",
10 | "github": "GitHub",
11 | "testers": "Тестувальники",
12 | "translators": "Перекладачі",
13 | "contributors": "Співрозробники",
14 | "download": "Завантажити",
15 | "developers": "Розробники",
16 | "what_is_simplytranslate_mobile": "Що таке SimplyTranslate Mobile?",
17 | "codeberg": "Codeberg",
18 | "icon": "Значок"
19 | }
20 |
--------------------------------------------------------------------------------
/docs/strings/zh_Hant_HK.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/tr/donate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/docs/tr/download.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/tr/source.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | SimplyTranslate Mobile
13 |
14 |
15 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ar/full_description.txt:
--------------------------------------------------------------------------------
1 | هذا التطبيق هو عبارة واجهة أماميةبديلة لـGoogle Translate
2 |
3 | الميزات
4 | * 108 لغات
5 | * النص إلى كلام
6 | * استقبال نص مشارك من تطبيق آخر
7 | * زر ترجمة في شريط الأدوات عندما تحدد على نص في النظام
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ar/short_description.txt:
--------------------------------------------------------------------------------
1 | واجهة أمامية بديلة لـGoogle Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ar/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/cs/full_description.txt:
--------------------------------------------------------------------------------
1 | Tato aplikace je alternativním klientem pro Google Translate, ale přímo se k němu nepřipojuje.
2 | Funguje následovně:
3 | 1. Text je odeslán od vás (uživatele) náhodné instanci SimplyTranslate (serveru).
4 | 2. Tato instance si vyžádá překlad od Google Translate.
5 | 3. Google Translate pošle překlad dané instanci, která:
6 | 4. Jej předá zase vám.
7 |
8 | To znamená, že Google Translate nebude znát vaši totožnost. Zanesení vašich dat do centralizované databáze zabraňuje tím, že každý požadavek bude vykonán jinou náhodnou instancí (výchozí nastavení), budou tedy vaše data rozprostřeny mezi různými instancemi, tak, že bude mnohem těžší je mezi sebou pospojovat, efektivně je skrývajíc.
9 |
10 | Funkce:
11 | * Podporuje 108 jazyků
12 | * Předčítání (TTS)
13 | * Zpracuje i sdílený text z jiných aplikací
14 | * Tlačítko překladu v nástrojové liště vybraného textu
15 | * Náhodný výběr instance pro každý požadavek
16 | * Aktualizovatelný oficiální seznam SimplyTranslate instancí
17 | * Možnost výběru vlastní instance
18 | * Temný mód
19 | * Rozpoznání textu z obrázku (OCR)
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/cs/short_description.txt:
--------------------------------------------------------------------------------
1 | Alternativní klient pro Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/cs/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/full_description.txt:
--------------------------------------------------------------------------------
1 | Diese App ist ein alternatives Front-End zu Google Translate, verbindet sich aber nicht direkt mit diesem.
2 | Sie funktioniert wie folgt:
3 | 1. Der Text wird von Ihnen (dem Benutzer) eingegeben und an eine zufällige SimplyTranslate-Instanz (Server) gesendet.
4 | 2. Diese Instanz wird die Daten von Google Translate anfordern.
5 | 3. Google Translate sendet die Übersetzung zurück an diese Instanz.
6 | 4. Diese Instanz sendet die Übersetzung an Sie zurück.
7 |
8 | Auf diese Weise wird Google Translate Ihre Identität nicht kennen. Durch die automatische Auswahl einer zufälligen Instanz (Standardmodus) bei jeder Anfrage werden Ihre Daten verschleiert und zwischen den Instanzen verteilt, so dass nichts leicht verknüpft werden kann, da es sich nicht in einer zentralen Datenbank befindet.
9 |
10 | Features:
11 | * Unterstützt 108 Sprachen
12 | * Text-To-Speech (TTS)
13 | * Kann freigegebenen Text von anderen Anwendungen empfangen
14 | * Eine Schaltfläche zum Übersetzen in der Textauswahl-Symbolleiste
15 | * Automatische Zufallsauswahl der Instanz bei jeder Anfrage
16 | * Eine aktualisierbare offizielle Liste von SimplyTranslate-Instanzen
17 | * Option für benutzerdefinierte Instanzen
18 | * Dunkles Thema
19 | * Kamera-Text-Erkennung
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/short_description.txt:
--------------------------------------------------------------------------------
1 | Alternatives Front-End für Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobil
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | This app is an alternative frontend to Google Translate.
2 |
3 | Features:
4 | * Supports 108 languages
5 | * Text-To-Speech (TTS)
6 | * Can receive shared text from other apps
7 | * A translate button in the text selection toolbar
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.webp
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.webp
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.webp
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ManeraKai/simplytranslate_mobile/fbb76f92c6edcd2e7846aaf4d072d2666987c54b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.webp
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | A privacy friendly frontend to Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/eo/full_description.txt:
--------------------------------------------------------------------------------
1 | Ĉi tiu programo estas alternativa fasado por Google Translate, sed ne rekte ligas al ĝi.
2 | Ĝi funkcias jene:
3 | 1. Teksto estas sendita de vi (la uzanto) al hazarda servilo de SimplyTranslate.
4 | 2. Ĉi tiu servilo petos tradukaĵon de Google Translate.
5 | 3. Google Translate sendos la tradukaĵon al la servilo.
6 | 4. La servilo sendos la tradukaĵon al vi.
7 |
8 | Tiel Google Translate ne scios vian identecon. Aŭtomate elektante hazardan servilon (laŭ la apriora reĝimo), ĉiu peto kaŝos kaj tramiksos viajn datenojn inter serviloj; do nenio estos facile ligebla, ĉar ĝi ne estas en centralizita datenbanko.
9 |
10 | Trajtoj:
11 | * Subtenas 108 lingvojn
12 | * Prononcilo
13 | * Povas ricevi tekston el aliaj programoj
14 | * Butono «traduki» en la ilobreto de tekstoelekto
15 | * Aŭtomata hazarda elekto de servilo por ĉiu peto
16 | * Ĝisdatigebla oficiala listo de SimplyTranslate-serviloj
17 | * Opcio uzi propran servilon
18 | * Malhela etoso
19 | * Fota tekstlegilo
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/eo/short_description.txt:
--------------------------------------------------------------------------------
1 | Alternativa fasado por Google-Tradukilo
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/eo/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate por Poŝaparato
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/full_description.txt:
--------------------------------------------------------------------------------
1 | Esta aplicación es una interfaz alternativa al Traductor de Google (Google Translate).
2 |
3 | Características:
4 | * Admite 108 idiomas
5 | * Texto a voz (TTS)
6 | * Puede recibir texto compartido de otras aplicaciones
7 | * Un botón de traducción en la barra de herramientas de selección de texto
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/short_description.txt:
--------------------------------------------------------------------------------
1 | Una interfaz amigable con la privacidad para Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/full_description.txt:
--------------------------------------------------------------------------------
1 | Cette application est une alternative frontale à Google Translate, mais ne s'y connecte pas directement.
2 | Elle fonctionne comme suit :
3 | 1. Le texte est soumis par vous (l'utilisateur) et envoyé à une instance aléatoire de SimplyTranslate (serveur).
4 | 2. Cette instance va demander ces données à Google Translate.
5 | 3. Google Translate renvoie la traduction à cette instance.
6 | 4. Cette instance vous renverra la traduction.
7 |
8 | De cette façon, Google Translate ne connaîtra pas votre identité. La sélection automatique d'une instance aléatoire (mode par défaut) à chaque demande obscurcit et répartit vos données entre les instances, de sorte que rien ne peut être relié facilement puisqu'elles ne se trouvent pas dans une base de données centralisée.
9 |
10 | Caractéristiques :
11 | * Prise en charge de 108 langues
12 | * Synthèse vocale
13 | * Peut recevoir du texte partagé d'autres applis
14 | * Un bouton de traduction dans la barre d'outils de sélection de texte.
15 | * Sélection automatique et aléatoire d'une instance à chaque demande
16 | * Une liste officielle actualisable des instances de SimplyTranslate
17 | * Option d'instance personnalisée
18 | * Thème sombre
19 | * Reconnaissance de texte par caméra
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/short_description.txt:
--------------------------------------------------------------------------------
1 | Une alternative front-end à Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu-HU/full_description.txt:
--------------------------------------------------------------------------------
1 | Ez az alkalmazás egy alternatív frontend a Google Fordítójához.
2 |
3 | Jellemzői:
4 | * 108 nyelvet támogat
5 | Text-To-Speech (TTS)
6 | * Megosztott szöveget kaphat más alkalmazásokból
7 | * Fordítógomb a szövegkiválasztó eszköztárban
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu-HU/short_description.txt:
--------------------------------------------------------------------------------
1 | Egy magánéletbarát frontend a Google Fordítójához
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu-HU/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobil
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/is-IS/full_description.txt:
--------------------------------------------------------------------------------
1 | Þetta forrit er annað viðmót fyrir Google Translate.
2 |
3 | Eiginleikar:
4 | * Styður 108 tungumál
5 | * Texti-í-tal (TTS)
6 | * Tekur við deildum texta frá öðrum forritum
7 | * Þýðingahnappur í verkfærastiku fyrir val texta
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/is-IS/short_description.txt:
--------------------------------------------------------------------------------
1 | Annað viðmót á Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/is-IS/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate á snjalltæki
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/full_description.txt:
--------------------------------------------------------------------------------
1 | Questa applicazione è un front-end alternativo a Google Traduttore, ma non si collega direttamente ad esso.
2 | Funziona come segue:
3 | 1. Il testo viene inviato da voi (l'utente) e inviato a un'istanza casuale di SimplyTranslate (server).
4 | 2. Questa istanza richiederà quei dati da Google Traduttore.
5 | 3. Google Traduttore invierà la traduzione indietro a quell'istanza.
6 | 4. L'istanza rimanderà la traduzione a te.
7 |
8 | In questo modo Google Traduttore non conoscerà la tua identità. La selezione automatica di un'istanza casuale (modalità predefinita) ad ogni richiesta offuscherà e diffonderà di più i vostri dati tra le istanze in modo che nulla sarà collegato facilmente in quanto non è in un database centralizzato.
9 |
10 | Caratteristiche:
11 | * Supporta 108 lingue
12 | * Text-To-Speech (TTS)
13 | * Può ricevere testo condiviso da altre applicazioni
14 | * Un pulsante di traduzione nella barra degli strumenti di selezione del testo
15 | * Selezione automatica di istanze casuali ad ogni richiesta
16 | * Un elenco ufficiale aggiornabile di istanze SimplyTranslate
17 | * Opzione di istanza personalizzata
18 | * Tema scuro
19 | * Riconoscimento del testo della fotocamera
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/short_description.txt:
--------------------------------------------------------------------------------
1 | Front-end alternativo a Google Traduttore
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ja/full_description.txt:
--------------------------------------------------------------------------------
1 | このアプリは Google翻訳 の代替フロントエンドで、Google翻訳 に直接接続せずに、翻訳することができます。
2 | 次のように機能します。
3 | 1. テキストはあなた (ユーザー) から送信され、ランダムな SimplyTranslate インスタンス (サーバー) に送信されます。
4 | 2. このインスタンスは、Google翻訳 にそのデータを要求します。
5 | 3. Google翻訳 は、翻訳をそのインスタンスに送り返します。
6 | 4. そのインスタンスは翻訳をあなたに送り返します。
7 |
8 | このように、Google翻訳 はあなたを特定することができません。各リクエストにランダムなインスタンスを自動的に選択 (デフォルトモード) することにより、インスタンス間でデータをわかりにくし、より分散されているため、一元化されたデータベースのような、簡単にリンクされるものはありません。
9 |
10 | 機能:
11 | * 108 の言語をサポート
12 | * テキスト読み上げ (TTS)
13 | * 他のアプリから共有されたテキストを受け取れます
14 | * 翻訳ボタンがテキスト選択ツールバーにあります
15 | * 各リクエストにランダムなインスタンスを自動的に選択
16 | * 更新可能な SimplyTranslate インスタンスの公式リスト
17 | * カスタムインスタンスオプション
18 | * ダークテーマ
19 | * カメラによる文字認識
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ja/short_description.txt:
--------------------------------------------------------------------------------
1 | Google翻訳 の代替フロントエンド
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ja/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ko-KR/full_description.txt:
--------------------------------------------------------------------------------
1 | 이 앱은 구글 번역의 대체 프론트엔드입니다.
2 |
3 | 특징들:
4 | * 108개 언어 지원
5 | * TTS 지원
6 | * 다른 앱에서 공유 문장을 받을 수 있음
7 | * 언어 선택 툴바에 있는 번역 버튼
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ko-KR/short_description.txt:
--------------------------------------------------------------------------------
1 | 구글 번역 대체 프론트엔드
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ko-KR/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nl/full_description.txt:
--------------------------------------------------------------------------------
1 | Deze toepassing is een andere voorzijde van Google Translate, maar het maakt er geen rechtstreekse verbinding mee.
2 | Het werkt als volgt:
3 | 1. De tekst is ingevoerd door u (de gebruiker) en wordt verzonden naar een willekeurige SimplyTranslate instantie (server.
4 | 2. Deze instantie zal de gegevens opvragen van Google Translate.
5 | 3. Google Translate zal deze vertaling geven aan de instantie.
6 | 4. De instantie zal de vertaling doorgeven aan u.
7 |
8 | Op deze wijze zal Google Translate uw identiteit niet weten. Het willekeurig kiezen van een instantie (de standaard instelling) zal uw gegevens verdoezelen en verspreiden over meerdere instanties, zodat niets eenvoudig gekoppeld kan worden. Er is immers geen grote gegevensbank in het midden.
9 |
10 | Mogelijkheden:
11 | * Ondersteunt 108 talen
12 | * Tekst-naar-spraak (TTS)
13 | * Kan tekst gedeeld uit andere apps ontvangen
14 | * Een vertaalknop bij het selecteren van tekst op welke app dan ook
15 | * Willekeurig kiezen van een SimplyTranslate instantie
16 | * Een tegenwoordige lijst van SimplyTranslate instanties
17 | * Aangepaste instantie mogelijkheid
18 | * Donker uiterlijk
19 | * Tekstherkenning met camera
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nl/short_description.txt:
--------------------------------------------------------------------------------
1 | Andere voorzijde van Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nl/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobiel
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/full_description.txt:
--------------------------------------------------------------------------------
1 | Ta aplikacja jest alternatywnym front-endem do Tłumacza Google.
2 |
3 | Cechy:
4 | * Obsługuje 108 języków
5 | * Zamiana tekstu na mowę (TTS)
6 | * Może odbierać tekst udostępniany przez inne aplikacje
7 | * Przycisk do tłumaczenia na pasku narzędzi przy zaznaczaniu tekstu
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/short_description.txt:
--------------------------------------------------------------------------------
1 | Przyjazny dla prywatności interfejs Tłumacza Google
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/full_description.txt:
--------------------------------------------------------------------------------
1 | Este app ē um front-end alternativo para Google Tradutor, mas não se conecta directamente a ele.
2 |
3 | Funciona da seguinte maneira:
4 |
5 | 1. O texto é enviado a uma instância (servidor) aleatória de SimplyTranslate.
6 |
7 | 2. A instância enviará os dados ao Google Tradutor.
8 |
9 | 3. O Google Tradutor retornará a tradução à essa instância.
10 |
11 | 4. A instância enviará a tradução de volta para ti.
12 |
13 |
14 | Dessa forma Google não conhece sua identidade. Selecionando automaticamente uma instância aleatória (que é o que se faz por padrão) cada pedido se ofuscará e a informação se dissipará mais entre instâncias para que nada possa ser vinculado a você facilmente já que não estará em uma base de dados centralizada.
15 |
16 |
17 | Características:
18 |
19 | * Suporta 108 idiomas
20 |
21 | * Texto em voz (TTS)
22 |
23 | * Pode receber texto compartilhado por outros apps
24 |
25 | * Um botão de traduzir no menu de selecionar texto
26 |
27 | * Seleção automática de instância aleatória em cada pedido
28 |
29 | * Una lista oficial atualizável de instâncias de SimplyTranslate
30 |
31 | * Opção de usar uma instância personalizada
32 |
33 | * Tema escuro
34 |
35 | * Reconhecimento de texto com a câmera
36 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/short_description.txt:
--------------------------------------------------------------------------------
1 | Front-end alternativo para Google Tradutor
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/full_description.txt:
--------------------------------------------------------------------------------
1 | Это приложение является альтернативным клиентом для Google Translate, но оно не подключается к нему напрямую.
2 | Оно работает следующим образом:
3 | 1. Текст, введённый вами (пользователем) отправляется на случайное зеркало (сервер) SimplyTranslate.
4 | 2. Это зеркало запрашивает перевод у Google Translate.
5 | 3. Google Translate отправляет перевод назад на зеркало.
6 | 4. Зеркало отправляет перевод вам.
7 |
8 | Таким образом, Google Translate не может определить вашу личность и собрать какие-либо данные о вас. Автоматический выбор случайного зеркало (режим по умолчанию) для каждого запроса перемешает и распределит ваши данные между зеркалами, так что установить ваши запросы среди прочих будет непросто, ведь это не централизованная база данных.
9 |
10 | Функции:
11 | * Поддержка 108 языков
12 | * Текст-в-Речь (TTS, он же Text-To-Speech)
13 | * Получение текста из других приложений
14 | * Кнопка перевода в меню выделенного текста
15 | * Автоматический выбор случайного зеркала для каждого запроса
16 | * Обновляемый официальный список зеркал SimplyTranslate
17 | * Добавление пользовательских зеркал
18 | * Тёмная тема
19 | * Распознавание текста через камеру
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/short_description.txt:
--------------------------------------------------------------------------------
1 | Альтернативный клиент для Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/full_description.txt:
--------------------------------------------------------------------------------
1 | Bu uygulama, Google Çeviri için alternatif bir ön yüzdür, ancak doğrudan ona bağlanmaz.
2 | Şu şekilde çalışır:
3 | 1. Siz (kullanıcı) metni girersiniz ve bu rastgele bir SimplyTranslate örneğine (sunucusuna) gönderilir.
4 | 2. O örnek, Google Çeviri'den verileri ister.
5 | 3. Google Çeviri, çeviriyi o örneğe geri gönderir.
6 | 4. O örnek çeviriyi size geri gönderir.
7 |
8 | Bu şekilde Google Çeviri kimliğinizi bilmeyecektir. Rastgele bir örneği otomatik olarak seçerek (öntanımlı mod), her istekte verileriniz örnekler arasında daha fazla karıştırılır ve yayılır, böylece merkezi bir veri tabanında olmadığı için hiçbir şey kolayca birbiriyle ilişkilendirilemeyecektir.
9 |
10 | Özellikler:
11 | * 108 dili destekler
12 | * Metin Okuma (Text-To-Speech (TTS))
13 | * Diğer uygulamalardan paylaşılan metin alabilir
14 | * Metin seçimi araç çubuğunda bir çevir düğmesi
15 | * Her istek için otomatik rastgele örnek seçimi
16 | * SimplyTranslate örneklerinin güncellenebilir resmi listesi
17 | * Özel örnek seçeneği
18 | * Koyu tema
19 | * Kameradan Metin Tanıma
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/short_description.txt:
--------------------------------------------------------------------------------
1 | Google Çeviri için alternatif ön yüz
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobil
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/full_description.txt:
--------------------------------------------------------------------------------
1 | Цей застосунок є альтернативним клієнтом для Перекладача Google, але зʼєднується з ним не напряму.
2 | Це працює наступним чином:
3 | 1. Текст від Вас (користувача) надсилається до випадкового екземпляра (сервера) SimplyTranslate.
4 | 2. Цей екземпляр запитує дані від Перекладача Google.
5 | 3. Перекладач Google надсилає переклад назад до екземпляра.
6 | 4. Екземпляр надсилає переклад назад до Вас.
7 |
8 | Таким чином Перекладач Google не знатиме про Вашу особистість. Автоматичний вибір випадкового екземпляра (типовий режим) для кожного запиту буде заплутувати і розпорошувати Ваші дані між екземплярами, тому нічого не буде легко звʼязати, оскільки це не централізована база даних.
9 |
10 | Можливості:
11 | * Підтримка 108 мов
12 | * Текст-у-голос (TTS)
13 | * Може отримувати поширюваний текст з інших програм
14 | * Кнопка перекладу на панелі вибору тексту
15 | * Автовипадковий вибір екземпляра для кожного запиту
16 | * Оновлюваний офіційний список екземплярів SimplyTranslate
17 | * Опція власного екземпляра
18 | * Темна тема
19 | * Розпізнавання тексту через камеру
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/short_description.txt:
--------------------------------------------------------------------------------
1 | Альтернативна обгортка для Google Translate
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/title.txt:
--------------------------------------------------------------------------------
1 | SimplyTranslate Mobile
2 |
--------------------------------------------------------------------------------
/lib/data.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter/scheduler.dart';
3 | import 'package:flutter/services.dart';
4 | import 'package:get_storage/get_storage.dart';
5 | import 'package:package_info_plus/package_info_plus.dart';
6 | import '/simplytranslate.dart' as simplytranslate;
7 | export 'package:simplytranslate_mobile/messages.dart';
8 |
9 | const greyColor = const Color(0xff131618);
10 | const greenColor = const Color(0xff3fb274);
11 | const lightThemeGreyColor = const Color(0xffa9a9a9);
12 |
13 | late BuildContext contextOverlordData;
14 | late void Function(void Function() fn) setStateOverlord;
15 |
16 | var themeRadio = AppTheme.system;
17 |
18 | late String fromLangVal;
19 | late String toLangVal;
20 |
21 | Map googleOutput = {};
22 |
23 | extension CapitalizeString on String {
24 | String capitalize() {
25 | return "${this[0].toUpperCase()}${this.substring(1).toLowerCase()}";
26 | }
27 | }
28 |
29 | enum AppTheme { dark, light, system }
30 |
31 | var themeValue = '';
32 |
33 | final Widget line = Container(
34 | margin: const EdgeInsets.only(top: 10, bottom: 5),
35 | height: 1.5,
36 | color: theme == Brightness.dark ? Colors.white : lightThemeGreyColor,
37 | );
38 |
39 | Brightness theme = SchedulerBinding.instance.platformDispatcher.platformBrightness;
40 |
41 | late Map toSelLangMap;
42 | late Map fromSelLangMap;
43 |
44 | bool loading = false;
45 | bool isTranslationCanceled = false;
46 |
47 | final googleInCtrl = TextEditingController();
48 |
49 | final session = GetStorage();
50 |
51 | late final PackageInfo packageInfo;
52 |
53 | Function() fromCancel = () {};
54 | Function() toCancel = () {};
55 |
56 | Function(String)? changeFromTxt;
57 | Function(String)? changeToTxt;
58 |
59 | String newText = "";
60 |
61 | Future getSharedText() async {
62 | const methodChannel = MethodChannel('com.simplytranslate_mobile/translate');
63 | try {
64 | final answer = await methodChannel.invokeMethod('getText');
65 | if (answer != '') {
66 | final _translationInput = answer.toString();
67 |
68 | setStateOverlord(() {
69 | googleInCtrl.text = _translationInput;
70 | loading = true;
71 | });
72 |
73 | final translatedText = await simplytranslate.translate(_translationInput, 'auto', toLangVal);
74 | setStateOverlord(() => googleOutput = translatedText);
75 | }
76 | } catch (_) {
77 | setStateOverlord(() => loading = false);
78 | }
79 | }
80 |
81 | BuildContext? translateContext;
82 |
83 | bool isTtsInCanceled = false;
84 | bool ttsInputloading = false;
85 |
86 | bool ttsOutloading = false;
87 | bool isTtsOutputCanceled = false;
88 |
89 | bool isFirst = true;
90 |
91 | switchVals() {
92 | if (fromLangVal == 'auto') return;
93 | changeFromTxt!(toSelLangMap[toLangVal]!);
94 | changeToTxt!(fromSelLangMap[fromLangVal]!);
95 |
96 | final tmp = fromLangVal;
97 | fromLangVal = toLangVal;
98 | toLangVal = tmp;
99 |
100 | session.write('to_lang', toLangVal);
101 | session.write('from_lang', fromLangVal);
102 | }
103 |
104 | enum FromTo { from, to }
105 |
106 | (String?, String?, String?) lastUsed(FromTo fromto) {
107 | if (fromto == FromTo.from) {
108 | return (session.read("fromLast1"), session.read("fromLast2"), session.read("fromLast3"));
109 | } else {
110 | return (session.read("toLast1"), session.read("toLast2"), session.read("toLast3"));
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/lib/messages.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'messages/messages.i18n.dart';
4 | import 'messages/messages_ar.i18n.dart';
5 | import 'messages/messages_cs.i18n.dart';
6 | import 'messages/messages_de.i18n.dart';
7 | import 'messages/messages_el.i18n.dart';
8 | import 'messages/messages_en.i18n.dart';
9 | import 'messages/messages_eo.i18n.dart';
10 | import 'messages/messages_es.i18n.dart';
11 | import 'messages/messages_fa.i18n.dart';
12 | import 'messages/messages_fi.i18n.dart';
13 | import 'messages/messages_fr.i18n.dart';
14 | import 'messages/messages_hu.i18n.dart';
15 | import 'messages/messages_is.i18n.dart';
16 | import 'messages/messages_it.i18n.dart';
17 | import 'messages/messages_ja.i18n.dart';
18 | import 'messages/messages_ko.i18n.dart';
19 | import 'messages/messages_ml.i18n.dart';
20 | import 'messages/messages_nb_NO.i18n.dart';
21 | import 'messages/messages_pl.i18n.dart';
22 | import 'messages/messages_pt_BR.i18n.dart';
23 | import 'messages/messages_ru.i18n.dart';
24 | import 'messages/messages_tr.i18n.dart';
25 | import 'messages/messages_uk.i18n.dart';
26 | import 'messages/messages_zh_HK.i18n.dart';
27 |
28 | var langs = [
29 | MessagesAr(),
30 | MessagesCs(),
31 | MessagesDe(),
32 | MessagesEl(),
33 | MessagesEn(),
34 | MessagesEo(),
35 | MessagesEs(),
36 | MessagesFa(),
37 | MessagesFi(),
38 | MessagesFr(),
39 | MessagesHu(),
40 | MessagesIs(),
41 | MessagesIt(),
42 | MessagesJa(),
43 | MessagesKo(),
44 | MessagesMl(),
45 | MessagesNbNO(),
46 | MessagesPl(),
47 | MessagesPtBR(),
48 | MessagesRu(),
49 | MessagesTr(),
50 | MessagesUk(),
51 | MessagesZhHK(),
52 | ];
53 |
54 | late Locale appLocale;
55 |
56 | Messages i18n() {
57 | var locale = appLocale;
58 | for (var lang in langs) {
59 | if (lang.locale == "${locale.languageCode}_${locale.countryCode}") return lang;
60 | }
61 | for (var lang in langs) {
62 | if (lang.languageCode == locale.languageCode) return lang;
63 | }
64 | return Messages();
65 | }
66 |
--------------------------------------------------------------------------------
/lib/messages/messages_eo.i18n.yaml:
--------------------------------------------------------------------------------
1 | langs:
2 | afrikaans: Afrikanso
3 | albanian: Albana
4 | amharic: Amharo
5 | arabic: Araba
6 | armenian: Armena
7 | autodetect: Aŭtomate trovi
8 | azerbaijani: Azerbajĝana
9 | basque: Eŭska
10 | belarusian: Belorusa
11 | bengali: Bengala
12 | bosnian: Bosna
13 | bulgarian: Bulgara
14 | catalan: Kataluna
15 | cebuano: Cebua
16 | chichewa: Malavia
17 | chinese: Ĉina
18 | corsican: Korsika
19 | croatian: Kroata
20 | czech: Ĉeĥa
21 | danish: Dana
22 | dutch: Nederlanda
23 | english: Angla
24 | esperanto: Esperanto
25 | estonian: Estona
26 | filipino: Filipina
27 | finnish: Finna
28 | french: Franca
29 | frisian: Frisa
30 | galician: Galega
31 | georgian: Kartvela
32 | german: Germana
33 | greek: Greka
34 | gujarati: Guĝarata
35 | haitian_creole: Haitia kreola
36 | hausa: Haŭsa
37 | hawaiian: Havaja
38 | hebrew: Hebrea
39 | hindi: Hindia
40 | hmong: Hmong
41 | hungarian: Hungara
42 | icelandic: Islanda
43 | igbo: Igbo
44 | indonesian: Indonezia
45 | irish: Irlanda
46 | italian: Itala
47 | japanese: Japana
48 | javanese: Java
49 | kannada: Kannada
50 | kazakh: Kazaĥa
51 | khmer: Ĥmera
52 | kinyarwanda: Ruanda
53 | korean: Korea
54 | kurdish_kurmanji: Kurda (norda)
55 | kyrgyz: Kirgiza
56 | lao: Laosa
57 | latin: Latino
58 | latvian: Latva
59 | lithuanian: Litova
60 | luxembourgish: Leceburga
61 | macedonian: Makedona
62 | malagasy: Malagasa
63 | malay: Malaja
64 | malayalam: Malajala
65 | maltese: Malta
66 | maori: Maoria
67 | marathi: Maharaŝtra
68 | mongolian: Mongola
69 | myanmar_burmese: Birma
70 | nepali: Nepala
71 | norwegian: Norvega
72 | odia_oriya: Orisa
73 | pashto: Patana
74 | persian: Persa
75 | polish: Pola
76 | portuguese: Portugala
77 | punjabi: Panĝaba
78 | romanian: Rumana
79 | russian: Rusa
80 | samoan: Samoa
81 | scots_gaelic: Skotgaela
82 | serbian: Serba
83 | sesotho: Lesota
84 | shona: Zimbabva
85 | sindhi: Sinda
86 | sinhala: Sinhalo
87 | slovak: Slovaka
88 | slovenian: Slovena
89 | somali: Somalia
90 | spanish: Hispana
91 | sundanese: Sunda
92 | swahili: Svahila
93 | swedish: Sveda
94 | tajik: Taĝika
95 | tamil: Tamula
96 | tatar: Tatara
97 | telugu: Teluguo
98 | thai: Taja
99 | traditional_chinese: Traditional Chinese
100 | turkish: Turka
101 | turkmen: Turkmena
102 | ukrainian: Ukraina
103 | urdu: Urduo
104 | uyghur: Ujgura
105 | uzbek: Uzbeka
106 | vietnamese: Vjetnama
107 | welsh: Kimra
108 | xhosa: Kosa
109 | yiddish: Jido
110 | yoruba: Joruba
111 | zulu: Zulua
112 | main:
113 | about: Pri
114 | appearance: Aspekto
115 | audio_limit: Ne eblas prononci pli ol 200 signojn
116 | autodetect_not_supported: Aŭtomata trovado ne funkcias
117 | cancel: Nuligi
118 | contribute: Kontribui
119 | copied_to_clipboard: Kopiita al tondujo
120 | dark: Malhela
121 | definitions: Difinoj
122 | donate: Donaci
123 | enter_text_here: Tajpu tekston ĉi tie
124 | error: Okazis eraro
125 | follow_system: Laŭ sistemo
126 | help: Helpo
127 | input_limit: La tradukotaĵo estas pli longa ol 5000 signoj
128 | install: Instali
129 | license: Permesilo
130 | light: Hela
131 | no_internet: Sen Interreta konekto
132 | ok: Bone
133 | report_bug: Raporti cimon
134 | settings: Agordoj
135 | something_went_wrong: Io fiaskis
136 | text_recognition: Tekstorekono
137 | text_to_speech: Prononcilo
138 | theme: Etoso
139 | translate: Traduki
140 | translation: Tradukado
141 | translations: Tradukoj
142 | version: Versio
143 | website: Retejo
144 |
--------------------------------------------------------------------------------
/lib/messages/messages_fa.i18n.yaml:
--------------------------------------------------------------------------------
1 | langs:
2 | afrikaans: آفریقایی
3 | albanian: آلبانیایی
4 | amharic: امهری
5 | arabic: عربی
6 | armenian: ارمنی
7 | autodetect: شناسایی خودکار
8 | azerbaijani: آذربایجانی
9 | basque: باسْکی
10 | belarusian: بلاروسی
11 | bengali: بنگالی
12 | bosnian: بوسنیایی
13 | bulgarian: بلغاری
14 | catalan: کاتالانی
15 | cebuano: سِبوانویی
16 | chichewa: چوایی
17 | chinese: چینی
18 | corsican: کرسی
19 | croatian: کرواتی
20 | czech: چکی
21 | danish: دانمارکی
22 | dutch: هلندی
23 | english: انگلیسی
24 | esperanto: اسپرانتو
25 | estonian: استونیایی
26 | filipino: فیلیپینی
27 | finnish: فنلاندی
28 | french: فرانسوی
29 | frisian: فریسی
30 | galician: گالیسیایی
31 | georgian: گرجی
32 | german: آلمانی
33 | greek: یونانی
34 | gujarati: گجراتی
35 | haitian_creole: کِریول آییسیِنی
36 | hausa: هوسایی
37 | hawaiian: هاوایی
38 | hebrew: عبری
39 | hindi: هندی
40 | hmong: همونگ
41 | hungarian: مجارستانی
42 | icelandic: ایسلندی
43 | igbo: ایگبو
44 | indonesian: اندونزیایی
45 | irish: ایرلندی
46 | italian: ایتالیایی
47 | japanese: ژاپنی
48 | javanese: جاوهای
49 | kannada: کانارا
50 | kazakh: قزاقی
51 | khmer: خمر
52 | kinyarwanda: رواندایی
53 | korean: کرهای
54 | kurdish_kurmanji: کردی
55 | kyrgyz: قرقیزی
56 | lao: لائو
57 | latin: لاتین
58 | latvian: لتونیایی
59 | lithuanian: لیتوانیایی
60 | luxembourgish: لوکزامبورگی
61 | macedonian: مقدونی
62 | malagasy: مالاگاسی
63 | malay: مالایی
64 | malayalam: مالایالم
65 | maltese: مالتی
66 | maori: مائوری
67 | marathi: مراتی
68 | mongolian: مغولی
69 | myanmar_burmese: برمهای
70 | nepali: نپالی
71 | norwegian: نروژی
72 | odia_oriya: اودیه (اوریه)
73 | pashto: پشتو
74 | persian: پارسی
75 | polish: لهستانی
76 | portuguese: پرتقالی
77 | punjabi: پنجابی
78 | romanian: رومانیایی
79 | russian: روسی
80 | samoan: ساموآیی
81 | scots_gaelic: گیلیک اسکاتلندی
82 | serbian: صربی
83 | sesotho: سوتو
84 | shona: شونا
85 | sindhi: سندی
86 | sinhala: سینهالی
87 | slovak: اسلواکی
88 | slovenian: اسلوونیایی
89 | somali: سومالیایی
90 | spanish: اسپانیایی
91 | sundanese: سوندایی
92 | swahili: سواحِلی
93 | swedish: سوئدی
94 | tajik: تاجیکی
95 | tamil: تامیلی
96 | tatar: تاتاری
97 | telugu: تلوگو
98 | thai: تایلندی
99 | traditional_chinese: Traditional Chinese
100 | turkish: ترکی
101 | turkmen: ترکمن
102 | ukrainian: اوکراینی
103 | urdu: اردو
104 | uyghur: اویغوری
105 | uzbek: ازبکی
106 | vietnamese: ویتنامی
107 | welsh: ولزی
108 | xhosa: خوسایی
109 | yiddish: ییدیش
110 | yoruba: یوروبایی
111 | zulu: زولو
112 | main:
113 | about: درباره
114 | appearance: ظاهر
115 | audio_limit: نمی توان برای بیش از ۲۰۰ نویسه صدا دریافت کرد
116 | autodetect_not_supported: Autodetect not supported
117 | cancel: لغو
118 | contribute: مشارکت
119 | copied_to_clipboard: ذخیره در کلیپبورد
120 | dark: تیره
121 | definitions: Definitions
122 | donate: Donate
123 | enter_text_here: متن را اینجا وارد کنید
124 | error: یک مشکل به وجود آمده
125 | follow_system: مطابق با تم دستگاه
126 | help: Help
127 | input_limit: ورودی ترجمه بالای ۵۰۰۰ نویسه است
128 | install: Install
129 | license: پروانه
130 | light: روشن
131 | no_internet: اتصال به اینترنت برقرار نیست
132 | ok: خُب
133 | report_bug: Report a bug
134 | settings: تنظیمات
135 | something_went_wrong: مشکلی پیش آمده
136 | text_recognition: Text Recognition
137 | text_to_speech: Text-To-Speech
138 | theme: تم
139 | translate: ترجمه
140 | translation: ترجمه
141 | translations: Translation
142 | version: نسخه
143 | website: Website
144 |
--------------------------------------------------------------------------------
/lib/messages/messages_hu.i18n.yaml:
--------------------------------------------------------------------------------
1 | langs:
2 | afrikaans: Afrikai
3 | albanian: Albán
4 | amharic: Amhara
5 | arabic: Arab
6 | armenian: Örmény
7 | autodetect: Automatikus felismerés
8 | azerbaijani: Azerbajdzsán
9 | basque: Baszk
10 | belarusian: Fehérorosz
11 | bengali: Bengáli
12 | bosnian: Bosnyák
13 | bulgarian: Bolgár
14 | catalan: Katalán
15 | cebuano: Szebuano
16 | chichewa: Chichewa
17 | chinese: Kínai
18 | corsican: Korzikai
19 | croatian: Horvát
20 | czech: Cseh
21 | danish: Dán
22 | dutch: Holland
23 | english: Angol
24 | esperanto: Eszperantó
25 | estonian: Észt
26 | filipino: Fülöp-szigeteki
27 | finnish: Finn
28 | french: Francia
29 | frisian: Fríz
30 | galician: Galiciai
31 | georgian: Grúz
32 | german: Német
33 | greek: Görög
34 | gujarati: Gudzsaráti
35 | haitian_creole: Haiti kreol
36 | hausa: Hausza
37 | hawaiian: Hawaii
38 | hebrew: Héber
39 | hindi: Hindu
40 | hmong: Hmong
41 | hungarian: Magyar
42 | icelandic: Izlandi
43 | igbo: Igbó
44 | indonesian: Indonéz
45 | irish: Ír
46 | italian: Olasz
47 | japanese: Japán
48 | javanese: Jávai
49 | kannada: Kannada
50 | kazakh: Kazah
51 | khmer: Khmer
52 | kinyarwanda: Kinyarvanda
53 | korean: Koreai
54 | kurdish_kurmanji: Kurd (Kurmanji)
55 | kyrgyz: Kirgiz
56 | lao: Laoszi (lao)
57 | latin: Latin
58 | latvian: Lett
59 | lithuanian: Litván
60 | luxembourgish: Luxemburgi
61 | macedonian: Macedón
62 | malagasy: Malgas
63 | malay: Maláj
64 | malayalam: Malajálam
65 | maltese: Máltai
66 | maori: Maori
67 | marathi: Maráthi
68 | mongolian: Mongol
69 | myanmar_burmese: Mianmar (Burmai)
70 | nepali: Nepáli
71 | norwegian: Norvég
72 | odia_oriya: Odia (Oriya)
73 | pashto: Pastu
74 | persian: Perzsa
75 | polish: Lengyel
76 | portuguese: Portugál
77 | punjabi: Pandzsábi
78 | romanian: Román
79 | russian: Orosz
80 | samoan: Szamoai
81 | scots_gaelic: Skót gall
82 | serbian: Szerb
83 | sesotho: Sesothói
84 | shona: Sona
85 | sindhi: Szindhi
86 | sinhala: Szingaléz
87 | slovak: Szlovák
88 | slovenian: Szlovén
89 | somali: Szomáli
90 | spanish: Spanyol
91 | sundanese: Szundanéz
92 | swahili: Szuahéli
93 | swedish: Svéd
94 | tajik: Tádzsik
95 | tamil: Tamil
96 | tatar: Tatár
97 | telugu: Telugu
98 | thai: Thaiföldi
99 | traditional_chinese: Traditional Chinese
100 | turkish: Török
101 | turkmen: Türkmén
102 | ukrainian: Ukrán
103 | urdu: Urdu
104 | uyghur: Ujgur
105 | uzbek: Üzbég
106 | vietnamese: Vietnámi
107 | welsh: Walesi
108 | xhosa: Xhosza
109 | yiddish: Jiddis
110 | yoruba: Joruba
111 | zulu: Zulu
112 | main:
113 | about: Névjegy
114 | appearance: Kinézet
115 | audio_limit: 200 karakter felett nem tud hangot lejátszani
116 | autodetect_not_supported: Az automatikus felismerés nem támogatott
117 | cancel: Mégse
118 | contribute: Közreműködés
119 | copied_to_clipboard: Vágólapra másolva
120 | dark: Sötét
121 | definitions: Meghatározások
122 | donate: Támogatás
123 | enter_text_here: Írd be a szöveget
124 | error: Hiba történt
125 | follow_system: A rendszer témája
126 | help: Segítség
127 | input_limit: A fordítási bemenet több mint 5000
128 | install: Telepítés
129 | license: Licenc
130 | light: Világos
131 | no_internet: Nincs internetkapcsolat
132 | ok: OK
133 | report_bug: Hibajelentés
134 | settings: Beállíŧások
135 | something_went_wrong: Valami rosszul sült el
136 | text_recognition: Szövegfelismerés
137 | text_to_speech: Text-To-Speech
138 | theme: Téma
139 | translate: Fordítás
140 | translation: Fordítás
141 | translations: Fordítások
142 | version: Verzió
143 | website: Weboldal
144 |
--------------------------------------------------------------------------------
/lib/messages/messages_ja.i18n.yaml:
--------------------------------------------------------------------------------
1 | langs:
2 | afrikaans: アフリカーンス語
3 | albanian: アルバニア語
4 | amharic: アムハラ語
5 | arabic: アラビア語
6 | armenian: アルメニア語
7 | autodetect: 自動検出
8 | azerbaijani: アゼルバイジャン語
9 | basque: バスク語
10 | belarusian: ベラルーシ語
11 | bengali: ベンガル語
12 | bosnian: ボスニア語
13 | bulgarian: ブルガリア語
14 | catalan: カタロニア語
15 | cebuano: セブアノ語
16 | chichewa: チェワ語
17 | chinese: 中国語
18 | corsican: コルシカ語
19 | croatian: クロアチア語
20 | czech: チェコ語
21 | danish: デンマーク語
22 | dutch: オランダ語
23 | english: 英語
24 | esperanto: エスペラント語
25 | estonian: エストニア語
26 | filipino: フィリピン語
27 | finnish: フィンランド語
28 | french: フランス語
29 | frisian: フリジア語
30 | galician: ガリシア語
31 | georgian: ジョージア (グルジア) 語
32 | german: ドイツ語
33 | greek: ギリシャ語
34 | gujarati: グジャラート語
35 | haitian_creole: ハイチ語
36 | hausa: ハウサ語
37 | hawaiian: ハワイ語
38 | hebrew: ヘブライ語
39 | hindi: ヒンディー語
40 | hmong: ミャオ語
41 | hungarian: ハンガリー語
42 | icelandic: アイスランド語
43 | igbo: イボ語
44 | indonesian: インドネシア語
45 | irish: アイルランド語
46 | italian: イタリア語
47 | japanese: 日本語
48 | javanese: ジャワ語
49 | kannada: カンナダ語
50 | kazakh: カザフ語
51 | khmer: クメール語
52 | kinyarwanda: ルワンダ語
53 | korean: 韓国語
54 | kurdish_kurmanji: クルド語 (クルマンジー)
55 | kyrgyz: キルギス語
56 | lao: ラーオ語
57 | latin: ラテン語
58 | latvian: ラトビア語
59 | lithuanian: リトアニア語
60 | luxembourgish: ルクセンブルク語
61 | macedonian: マケドニア語
62 | malagasy: マダガスカル語
63 | malay: マレー語
64 | malayalam: マラヤーラム語
65 | maltese: マルタ語
66 | maori: マオリ語
67 | marathi: マラーティー語
68 | mongolian: モンゴル語
69 | myanmar_burmese: ミャンマー語 (ビルマ語)
70 | nepali: ネパール語
71 | norwegian: ノルウェー語
72 | odia_oriya: オリヤー語
73 | pashto: パシュトー語
74 | persian: ペルシャ語
75 | polish: ポーランド語
76 | portuguese: ポルトガル語
77 | punjabi: パンジャーブ語
78 | romanian: ルーマニア語
79 | russian: ロシア語
80 | samoan: サモア語
81 | scots_gaelic: スコットランド・ゲール語
82 | serbian: セルビア語
83 | sesotho: ソト語
84 | shona: ショナ語
85 | sindhi: シンド語
86 | sinhala: シンハラ語
87 | slovak: スロバキア語
88 | slovenian: スロベニア語
89 | somali: ソマリ語
90 | spanish: スペイン語
91 | sundanese: スンダ語
92 | swahili: スワヒリ語
93 | swedish: スウェーデン語
94 | tajik: タジク語
95 | tamil: タミル語
96 | tatar: タタール
97 | telugu: テルグ語
98 | thai: タイ語
99 | traditional_chinese: Traditional Chinese
100 | turkish: トルコ語
101 | turkmen: トルクメン語
102 | ukrainian: ウクライナ語
103 | urdu: ウルドゥー語
104 | uyghur: ウイグル語
105 | uzbek: ウズベク語
106 | vietnamese: ベトナム語
107 | welsh: ウェールズ語
108 | xhosa: コサ語
109 | yiddish: イディッシュ語
110 | yoruba: ヨルバ語
111 | zulu: ズールー語
112 | main:
113 | about: このアプリについて
114 | appearance: 外観
115 | audio_limit: 200 文字以上の文章は音声を取得できません
116 | autodetect_not_supported: 言語の自動検出はサポートされていません
117 | cancel: キャンセル
118 | contribute: 貢献する
119 | copied_to_clipboard: クリップボードにコピー
120 | dark: ダーク
121 | definitions: 定義
122 | donate: 寄付する
123 | enter_text_here: ここにテキストを入力してください
124 | error: エラーが発生しました
125 | follow_system: システムに従う
126 | help: ヘルプ
127 | input_limit: 文字数制限は 5000 文字です
128 | install: インストール
129 | license: ライセンス
130 | light: ライト
131 | no_internet: インターネット接続がありません
132 | ok: OK
133 | report_bug: バグを報告
134 | settings: 設定
135 | something_went_wrong: 何らかの問題が発生しました
136 | text_recognition: 文字認識
137 | text_to_speech: テキスト読み上げ
138 | theme: テーマ
139 | translate: 翻訳
140 | translation: 翻訳
141 | translations: 翻訳
142 | version: バージョン
143 | website: Web サイト
144 |
--------------------------------------------------------------------------------
/lib/messages/messages_ko.i18n.yaml:
--------------------------------------------------------------------------------
1 | langs:
2 | afrikaans: 아프리카어
3 | albanian: 알바니아어
4 | amharic: 암하라어
5 | arabic: 아라비아어
6 | armenian: 아르메니아어
7 | autodetect: 자동 감지
8 | azerbaijani: 아제르바이잔어
9 | basque: 바스크어
10 | belarusian: 벨라루스어
11 | bengali: 벵갈어
12 | bosnian: 보스니아어
13 | bulgarian: 불가리아어
14 | catalan: 카탈로니아어
15 | cebuano: 세부아노
16 | chichewa: 치체와어
17 | chinese: 중국어
18 | corsican: 코르시카어
19 | croatian: 크로아티아어
20 | czech: 체코어
21 | danish: 덴마크어
22 | dutch: 네덜란드어
23 | english: 영어
24 | esperanto: 에스페란토어
25 | estonian: 에스토니아어
26 | filipino: 필리핀어
27 | finnish: 핀란드어
28 | french: 프랑스어
29 | frisian: 프리슬란드어
30 | galician: 갈리시아어
31 | georgian: 그루지야어(조지어)
32 | german: 독일어
33 | greek: 그리스어
34 | gujarati: 구자라트어
35 | haitian_creole: 아이티어
36 | hausa: 하우사어
37 | hawaiian: 하와이어
38 | hebrew: 히브리어
39 | hindi: 힌디어
40 | hmong: 몽족어
41 | hungarian: 헝가리어
42 | icelandic: 아이슬란드어
43 | igbo: 이그보어
44 | indonesian: 인도네시아어
45 | irish: 아일랜드어
46 | italian: 이탈리아어
47 | japanese: 일본어
48 | javanese: 자바어
49 | kannada: 칸나다어
50 | kazakh: 카자흐어
51 | khmer: 크메르어
52 | kinyarwanda: 키냐르완다어
53 | korean: 한국어
54 | kurdish_kurmanji: 쿠르드어 (쿠르만지)
55 | kyrgyz: 키르기스어
56 | lao: 라오어
57 | latin: 라틴어
58 | latvian: 라트비아어
59 | lithuanian: 리투아니아어
60 | luxembourgish: 룩셈부르크어
61 | macedonian: 마케도니아어
62 | malagasy: 마다가스카르어
63 | malay: 말레이시아어
64 | malayalam: 말라얄람어
65 | maltese: 몰타어
66 | maori: 마오리어
67 | marathi: 마라티어
68 | mongolian: 몽골어
69 | myanmar_burmese: 미얀마어 (버마어)
70 | nepali: 네팔어
71 | norwegian: 노르웨이어
72 | odia_oriya: 오디아 (오리야)
73 | pashto: 파슈토어
74 | persian: 페르시아어
75 | polish: 폴란드어
76 | portuguese: 포르투갈어
77 | punjabi: 펀자브어
78 | romanian: 로마어
79 | russian: 러시아어
80 | samoan: 사모아어
81 | scots_gaelic: 스코틀랜드 게일어
82 | serbian: 세르비아어
83 | sesotho: 세소토어
84 | shona: 쇼나어
85 | sindhi: 신드어
86 | sinhala: 신할라어
87 | slovak: 슬로바키아어
88 | slovenian: 슬로베니아어
89 | somali: 소말리어
90 | spanish: 스페인어
91 | sundanese: 순다어
92 | swahili: 스와힐리어
93 | swedish: 스웨덴어
94 | tajik: 타지크어
95 | tamil: 타밀어
96 | tatar: 타타르어
97 | telugu: 텔루구어
98 | thai: 태국어
99 | traditional_chinese: Traditional Chinese
100 | turkish: 터키어
101 | turkmen: 투르크멘어
102 | ukrainian: 우크라니아어
103 | urdu: 우르드어
104 | uyghur: 위구르어
105 | uzbek: 우즈베크어
106 | vietnamese: 베트남어
107 | welsh: 웨일스어
108 | xhosa: 코사어
109 | yiddish: 이디시어
110 | yoruba: 요루바어
111 | zulu: 줄루어
112 | main:
113 | about: 소개
114 | appearance: 모양
115 | audio_limit: 200자를 초과하는 오디오를 가져올 수 없습니다
116 | autodetect_not_supported: 자동 감지가 지원되지 않습니다
117 | cancel: 취소
118 | contribute: 기여하기
119 | copied_to_clipboard: 클립보드에 복사되었습니다
120 | dark: 밤
121 | definitions: 정의
122 | donate: 기부하기
123 | enter_text_here: 글자를 입력해주세요
124 | error: 오류가 발생했습니다
125 | follow_system: 시스템 따르기
126 | help: 지원
127 | input_limit: 번역 대상이 5000글자 초과입니다
128 | install: 설치하기
129 | license: 라이센스
130 | light: 낮
131 | no_internet: 인터넷 엿결 없음
132 | ok: OK
133 | report_bug: 버그 제보하기
134 | settings: 설정
135 | something_went_wrong: 무언가 잘못되었습니다
136 | text_recognition: 글자 인식
137 | text_to_speech: 글자 읽어주기
138 | theme: 테마
139 | translate: 번역하기
140 | translation: 번역
141 | translations: 번역
142 | version: 버전
143 | website: 웹사이트
144 |
--------------------------------------------------------------------------------
/lib/messages/messages_zh_HK.i18n.yaml:
--------------------------------------------------------------------------------
1 | langs:
2 | afrikaans: 南非荷蘭語
3 | albanian: 阿爾巴尼亞語
4 | amharic: 阿姆哈拉語
5 | arabic: 阿拉伯語
6 | armenian: 亞美尼亞語
7 | autodetect: 自動檢測
8 | azerbaijani: 阿塞拜疆語
9 | basque: 巴斯克語
10 | belarusian: 白俄羅斯語
11 | bengali: 孟加拉語
12 | bosnian: 波斯尼亞語
13 | bulgarian: 保加利亞語
14 | catalan: 加泰羅尼亞語
15 | cebuano: 宿務語
16 | chichewa: 奇切瓦語
17 | chinese: 正體中文
18 | corsican: 科西嘉語
19 | croatian: 克羅地亞語
20 | czech: 捷克語
21 | danish: 丹麥語
22 | dutch: 荷蘭語
23 | english: 英語
24 | esperanto: 世界語
25 | estonian: 愛沙尼亞語
26 | filipino: 菲律賓語
27 | finnish: 芬蘭語
28 | french: 法語
29 | frisian: 弗里斯蘭語
30 | galician: 加利西亞語
31 | georgian: 格魯吉亞語
32 | german: 德語
33 | greek: 希臘語
34 | gujarati: 古吉拉特語
35 | haitian_creole: 海地克里奧爾語
36 | hausa: 豪薩語
37 | hawaiian: 夏威夷語
38 | hebrew: 希伯來語
39 | hindi: 印度語
40 | hmong: 苗語
41 | hungarian: 匈牙利語
42 | icelandic: 冰島語
43 | igbo: 伊博語
44 | indonesian: 印尼語
45 | irish: 愛爾蘭語
46 | italian: 意大利語
47 | japanese: 日語
48 | javanese: 爪哇語
49 | kannada: 卡納達語
50 | kazakh: 哈薩克語
51 | khmer: 高棉語
52 | kinyarwanda: 盧旺達語
53 | korean: 韓語
54 | kurdish_kurmanji: 庫爾德語
55 | kyrgyz: 吉爾吉斯語
56 | lao: 老撾語
57 | latin: 拉丁語
58 | latvian: 拉脫維亞語
59 | lithuanian: 立陶宛語
60 | luxembourgish: 盧森堡語
61 | macedonian: 馬其頓語
62 | malagasy: 馬達加斯加語
63 | malay: 馬來西亞語
64 | malayalam: 馬來亞拉姆語
65 | maltese: 馬爾他語
66 | maori: 毛利語
67 | marathi: 馬拉地語
68 | mongolian: 蒙古語
69 | myanmar_burmese: 緬甸語
70 | nepali: 尼泊爾語
71 | norwegian: 挪威語
72 | odia_oriya: 奧里亞語
73 | pashto: 普什圖語
74 | persian: 波斯語
75 | polish: 波蘭語
76 | portuguese: 葡萄牙語
77 | punjabi: 旁遮普語
78 | romanian: 羅馬尼亞語
79 | russian: 俄語
80 | samoan: 薩摩亞語
81 | scots_gaelic: 蘇格蘭蓋爾語
82 | serbian: 塞爾維亞語
83 | sesotho: 塞索托語
84 | shona: 紹納語
85 | sindhi: 信德語
86 | sinhala: 僧伽羅語
87 | slovak: 斯洛伐克語
88 | slovenian: 斯洛文尼亞語
89 | somali: 索馬里語
90 | spanish: 西班牙語
91 | sundanese: 巽他語
92 | swahili: 斯瓦希里語
93 | swedish: 瑞典語
94 | tajik: 塔吉克語
95 | tamil: 泰米爾語
96 | tatar: 韃靼語
97 | telugu: 泰盧固語
98 | thai: 泰語
99 | traditional_chinese: Traditional Chinese
100 | turkish: 土耳其語
101 | turkmen: 土庫曼語
102 | ukrainian: 烏克蘭語
103 | urdu: 烏爾都語
104 | uyghur: 維吾爾語
105 | uzbek: 烏茲別克語
106 | vietnamese: 越南語
107 | welsh: 威爾士語
108 | xhosa: 科薩語
109 | yiddish: 意第緒語
110 | yoruba: 約魯巴語
111 | zulu: 祖魯語
112 | main:
113 | about: 關於
114 | appearance: 外觀
115 | audio_limit: 無法獲取超過 200 個字符的音頻
116 | autodetect_not_supported: Autodetect not supported
117 | cancel: 取消
118 | contribute: 投稿
119 | copied_to_clipboard: 已複製到剪貼板
120 | dark: 暗
121 | definitions: Definitions
122 | donate: Donate
123 | enter_text_here: 在此處輸入文本
124 | error: 出現錯誤
125 | follow_system: 跟隨系統
126 | help: Help
127 | input_limit: 翻譯輸入超過5000個字符
128 | install: Install
129 | license: 執照
130 | light: 光
131 | no_internet: 沒有網絡連接
132 | ok: OK
133 | report_bug: Report a bug
134 | settings: 設置
135 | something_went_wrong: 出了點問題
136 | text_recognition: Text Recognition
137 | text_to_speech: Text-To-Speech
138 | theme: 主題
139 | translate: 翻譯
140 | translation: 翻譯
141 | translations: Translation
142 | version: 版本
143 | website: Website
144 |
--------------------------------------------------------------------------------
/lib/screens/about/about_screen_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:simplytranslate_mobile/data.dart';
3 |
4 | class AboutButton extends StatelessWidget {
5 | final IconData icon;
6 | final Color iconColor;
7 | final String title;
8 | final String? content;
9 | final void Function() onTap;
10 |
11 | const AboutButton({
12 | required this.icon,
13 | required this.title,
14 | this.content,
15 | required this.onTap,
16 | required this.iconColor,
17 | Key? key,
18 | }) : super(key: key);
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return InkWell(
23 | child: Padding(
24 | padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 20),
25 | child: Row(
26 | children: [
27 | Icon(icon, color: iconColor, size: 45),
28 | const SizedBox(width: 10),
29 | Expanded(
30 | child: Container(
31 | width: MediaQuery.of(context).size.width - 95,
32 | child: Column(
33 | mainAxisAlignment: MainAxisAlignment.spaceAround,
34 | crossAxisAlignment: CrossAxisAlignment.start,
35 | children: [
36 | Text(title, style: const TextStyle(fontSize: 18)),
37 | if (content != null)
38 | Text(
39 | content!,
40 | style: TextStyle(
41 | fontSize: 18,
42 | color: theme == Brightness.dark ? Colors.white54 : Colors.black54,
43 | ),
44 | ),
45 | ],
46 | ),
47 | ),
48 | ),
49 | ],
50 | ),
51 | ),
52 | onTap: onTap,
53 | );
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/screens/settings/widgets/settings_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import '/data.dart';
3 |
4 | class SettingsButton extends StatelessWidget {
5 | final void Function() onTap;
6 | final IconData icon;
7 | final Color iconColor;
8 | final String title;
9 | final String? content;
10 | final bool loading;
11 |
12 | const SettingsButton({
13 | required this.onTap,
14 | required this.icon,
15 | required this.iconColor,
16 | required this.title,
17 | this.content,
18 | this.loading = false,
19 | Key? key,
20 | }) : super(key: key);
21 |
22 | @override
23 | Widget build(BuildContext context) {
24 | return InkWell(
25 | child: Padding(
26 | padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 20),
27 | child: Column(
28 | children: [
29 | Row(
30 | crossAxisAlignment: CrossAxisAlignment.center,
31 | children: [
32 | Container(
33 | child: loading
34 | ? Container(
35 | height: 45,
36 | width: 45,
37 | padding: const EdgeInsets.all(5),
38 | child: const CircularProgressIndicator(),
39 | )
40 | : Icon(icon, color: iconColor, size: 45),
41 | ),
42 | SizedBox(width: 10),
43 | Expanded(
44 | child: Container(
45 | width: MediaQuery.of(context).size.width - 95,
46 | child: Column(
47 | mainAxisAlignment: MainAxisAlignment.spaceAround,
48 | crossAxisAlignment: CrossAxisAlignment.start,
49 | children: [
50 | Text(title, style: TextStyle(fontSize: 18)),
51 | if (content != null)
52 | Text(
53 | content!,
54 | style: TextStyle(
55 | fontSize: 18,
56 | color: theme == Brightness.dark ? Colors.white54 : Colors.black54,
57 | ),
58 | ),
59 | ],
60 | ),
61 | ),
62 | ),
63 | ],
64 | ),
65 | ],
66 | ),
67 | ),
68 | onTap: onTap,
69 | );
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/lib/screens/translate/translate.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:simplytranslate_mobile/screens/translate/widgets/lang_selector/lang.dart';
3 | import 'package:simplytranslate_mobile/screens/translate/widgets/output/definitions.dart';
4 | import 'package:simplytranslate_mobile/screens/translate/widgets/output/pronounciation.dart';
5 | import 'package:simplytranslate_mobile/screens/translate/widgets/output/translations.dart';
6 | import '/data.dart';
7 | import 'widgets/input/input.dart';
8 | import 'widgets/output/output.dart';
9 | import 'widgets/lang_selector/switch_lang.dart';
10 |
11 | var _scrollController = ScrollController();
12 |
13 | class GoogleTranslate extends StatefulWidget {
14 | const GoogleTranslate({Key? key}) : super(key: key);
15 |
16 | @override
17 | State createState() => _GoogleTranslateState();
18 | }
19 |
20 | var _isBefore = false;
21 |
22 | class _GoogleTranslateState extends State {
23 | @override
24 | void didChangeDependencies() {
25 | super.didChangeDependencies();
26 |
27 | if (MediaQuery.of(context).orientation == Orientation.landscape)
28 | _isBefore = true;
29 | else if (MediaQuery.of(context).orientation == Orientation.portrait && _isBefore) {
30 | _scrollController.jumpTo(0);
31 | _isBefore = false;
32 | }
33 | }
34 |
35 | @override
36 | Widget build(BuildContext context) {
37 | const space = SizedBox(height: 10);
38 | return Stack(
39 | children: [
40 | SingleChildScrollView(
41 | controller: _scrollController,
42 | child: Container(
43 | padding: const EdgeInsets.all(10),
44 | child: Center(
45 | child: Column(
46 | mainAxisAlignment: MainAxisAlignment.center,
47 | children: [
48 | Row(
49 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
50 | children: [
51 | GoogleLang(FromTo.from),
52 | GoogleSwitchLang(),
53 | GoogleLang(FromTo.to),
54 | ],
55 | ),
56 | space,
57 | GoogleTranslationInput(),
58 | space,
59 | GoogleTranslationOutput(),
60 | space,
61 | if (loading)
62 | Container(
63 | width: MediaQuery.of(context).size.width - 20,
64 | child: LinearProgressIndicator(),
65 | ),
66 | Pronunciation(googleOutput),
67 | Definitions(googleOutput),
68 | Translations(googleOutput),
69 | ],
70 | ),
71 | ),
72 | ),
73 | )
74 | ],
75 | );
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/input/character_limit.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import '/data.dart';
3 |
4 | class CharacterLimit extends StatelessWidget {
5 | const CharacterLimit({Key? key}) : super(key: key);
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | final textLength = googleInCtrl.text.length;
10 | final color = textLength > 5000
11 | ? Colors.red
12 | : theme == Brightness.dark
13 | ? Colors.white
14 | : greenColor;
15 | return Container(
16 | alignment: Alignment.center,
17 | padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 5),
18 | child: Column(
19 | mainAxisSize: MainAxisSize.min,
20 | children: [
21 | Text(
22 | textLength > 99999 ? '∞' : textLength.toString(),
23 | style: TextStyle(color: color),
24 | ),
25 | Container(
26 | margin: const EdgeInsets.symmetric(vertical: 3),
27 | height: 1,
28 | width: 30,
29 | color: color,
30 | ),
31 | Text(
32 | '5000',
33 | style: TextStyle(color: color),
34 | ),
35 | ],
36 | ),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/input/delete_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import '/data.dart';
3 |
4 | class DeleteTranslationInputButton extends StatelessWidget {
5 | const DeleteTranslationInputButton({Key? key}) : super(key: key);
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | return Container(
10 | alignment: Alignment.topRight,
11 | child: IconButton(
12 | splashColor: Colors.transparent,
13 | highlightColor: Colors.transparent,
14 | onPressed: googleInCtrl.text == ''
15 | ? null
16 | : () {
17 | setStateOverlord(() {
18 | loading = false;
19 | isTranslationCanceled = true;
20 | ttsInputloading = false;
21 | isTtsInCanceled = true;
22 | ttsOutloading = false;
23 | isTtsOutputCanceled = true;
24 | googleInCtrl.text = '';
25 | googleOutput = {};
26 | });
27 | FocusScope.of(context).unfocus();
28 | },
29 | icon: Icon(Icons.close),
30 | ),
31 | );
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/input/tts_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:audioplayers/audioplayers.dart';
2 | import 'package:flutter/material.dart';
3 | import '/data.dart';
4 | import '/simplytranslate.dart' as simplytranslate;
5 |
6 | bool _listening = false;
7 | bool _isSnackBarPressed = false;
8 |
9 | AudioPlayer _audioPlayer = AudioPlayer();
10 |
11 | class TtsInput extends StatefulWidget {
12 | const TtsInput({Key? key}) : super(key: key);
13 |
14 | @override
15 | State createState() => _TtsOutputState();
16 | }
17 |
18 | class _TtsOutputState extends State {
19 | @override
20 | Widget build(BuildContext context) {
21 | final _input = googleInCtrl.text;
22 | stopPlayer() async {
23 | await _audioPlayer.stop();
24 | setState(() => _listening = false);
25 | }
26 |
27 | audioLimit() {
28 | if (!_isSnackBarPressed) {
29 | ScaffoldMessenger.of(context).showSnackBar(
30 | SnackBar(
31 | duration: Duration(seconds: 2),
32 | width: 300,
33 | content: Text(i18n().main.audio_limit, textAlign: TextAlign.center),
34 | ),
35 | );
36 | _isSnackBarPressed = true;
37 | Future.delayed(const Duration(seconds: 1)).then((_) => _isSnackBarPressed = false);
38 | }
39 | }
40 |
41 | startPlayer() async {
42 | isTtsInCanceled = false;
43 | setState(() => ttsInputloading = true);
44 | await _audioPlayer.setSourceBytes(await simplytranslate.tts(_input, fromLangVal));
45 | if (isTtsInCanceled) return;
46 | setState(() {
47 | _listening = true;
48 | ttsInputloading = false;
49 | });
50 | await _audioPlayer.resume();
51 | _audioPlayer.onPlayerComplete.listen((event) {
52 | setState(() => _listening = false);
53 | });
54 | }
55 |
56 | return ttsInputloading
57 | ? InkWell(
58 | onTap: () {
59 | setState(() {
60 | ttsInputloading = false;
61 | isTtsInCanceled = true;
62 | });
63 | },
64 | child: Container(
65 | height: 48,
66 | width: 48,
67 | alignment: Alignment.center,
68 | child: Container(
69 | alignment: Alignment.center,
70 | height: 24,
71 | width: 24,
72 | child: const CircularProgressIndicator(strokeWidth: 3),
73 | ),
74 | ),
75 | )
76 | : IconButton(
77 | splashColor: Colors.transparent,
78 | highlightColor: Colors.transparent,
79 | onPressed: () {
80 | if (_input == '') {
81 | if (_listening)
82 | return stopPlayer;
83 | else
84 | return null;
85 | } else if (!_listening) {
86 | if (_input.length > 200)
87 | return audioLimit;
88 | else
89 | return startPlayer;
90 | } else
91 | return stopPlayer;
92 | }(),
93 | icon: Icon(
94 | _listening ? Icons.stop : Icons.volume_up,
95 | color: googleInCtrl.text.length > 200 && !_listening ? Colors.grey : null,
96 | ),
97 | );
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/lang_selector/switch_lang.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import '/data.dart';
3 | import '/simplytranslate.dart' as simplytranslate;
4 |
5 | class GoogleSwitchLang extends StatelessWidget {
6 | const GoogleSwitchLang({Key? key}) : super(key: key);
7 | @override
8 | Widget build(BuildContext context) => Container(
9 | width: MediaQuery.of(context).size.width / 3 - 60,
10 | child: OutlinedButton(
11 | style: OutlinedButton.styleFrom(
12 | padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 5),
13 | ),
14 | onPressed: fromLangVal == 'auto'
15 | ? null
16 | : () async {
17 | setStateOverlord(() {
18 | isTtsInCanceled = true;
19 | ttsOutloading = false;
20 | isTtsOutputCanceled = true;
21 | ttsInputloading = false;
22 | });
23 | if (googleInCtrl.text.isEmpty) {
24 | switchVals();
25 | setStateOverlord(() {});
26 | } else if (googleInCtrl.text.length <= 5000) {
27 | FocusScope.of(context).unfocus();
28 | try {
29 | final transInTmp = googleInCtrl.text;
30 | final fromLangValTransTmp = fromLangVal;
31 | final toLangValTransTmp = toLangVal;
32 | switchVals();
33 | final translatedText = await simplytranslate.translate(transInTmp, fromLangValTransTmp, toLangValTransTmp);
34 | if (!isTranslationCanceled) {
35 | final translatedText2;
36 | if (translatedText.length <= 5000) {
37 | translatedText2 = await simplytranslate.translate(translatedText['text'], fromLangVal, toLangVal);
38 | } else {
39 | ScaffoldMessenger.of(context).showSnackBar(
40 | SnackBar(
41 | duration: Duration(seconds: 2),
42 | width: 160,
43 | content: Text(
44 | i18n().main.input_limit,
45 | textAlign: TextAlign.center,
46 | ),
47 | ),
48 | );
49 | translatedText2 = '';
50 | }
51 | setStateOverlord(() {
52 | googleInCtrl.text = translatedText['text'];
53 | googleOutput = translatedText2;
54 | });
55 | }
56 | } catch (error) {
57 | setStateOverlord(() => loading = false);
58 | print('translate error: $error');
59 | }
60 | } else {
61 | switchVals();
62 | setStateOverlord(() {});
63 | }
64 | },
65 | child: Text(
66 | '<-->',
67 | style: TextStyle(
68 | fontSize: 18,
69 | color: fromLangVal != 'auto'
70 | ? theme == Brightness.dark
71 | ? Colors.white
72 | : Colors.black
73 | : lightThemeGreyColor,
74 | ),
75 | ),
76 | ),
77 | );
78 | }
79 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/output/copy_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter/services.dart';
3 | import '/data.dart';
4 |
5 | class CopyToClipboardButton extends StatelessWidget {
6 | final String text;
7 | const CopyToClipboardButton(this.text, {Key? key}) : super(key: key);
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return IconButton(
12 | splashColor: Colors.transparent,
13 | highlightColor: Colors.transparent,
14 | onPressed: text == ''
15 | ? null
16 | : () => Clipboard.setData(ClipboardData(text: text)).then(
17 | (value) => ScaffoldMessenger.of(context).showSnackBar(
18 | SnackBar(
19 | duration: Duration(seconds: 2),
20 | width: 160,
21 | content: Text(
22 | i18n().main.copied_to_clipboard,
23 | textAlign: TextAlign.center,
24 | ),
25 | ),
26 | ),
27 | ),
28 | icon: Icon(Icons.copy),
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/output/output.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:intl/intl.dart' as intl;
3 | import '/data.dart';
4 | import 'copy_button.dart';
5 | import 'tts_button.dart';
6 |
7 | class GoogleTranslationOutput extends StatefulWidget {
8 | const GoogleTranslationOutput({Key? key}) : super(key: key);
9 |
10 | @override
11 | _TranslationOutputState createState() => _TranslationOutputState();
12 | }
13 |
14 | class _TranslationOutputState extends State {
15 | double _outputFontSize = 20;
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | Map translatedText = googleOutput;
20 | return Container(
21 | decoration: BoxDecoration(
22 | color: theme == Brightness.dark ? Color(0xff131618) : null,
23 | border: Border.all(
24 | color: theme == Brightness.dark ? Color(0xff495057) : Color(0xffa9a9a9),
25 | width: 1.5,
26 | style: BorderStyle.solid,
27 | ),
28 | borderRadius: BorderRadius.circular(2),
29 | ),
30 | child: Row(
31 | crossAxisAlignment: CrossAxisAlignment.start,
32 | children: [
33 | Expanded(
34 | child: Padding(
35 | padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 10),
36 | child: Scrollbar(
37 | child: Directionality(
38 | textDirection: translatedText.containsKey('text')
39 | ? intl.Bidi.detectRtlDirectionality(translatedText['text'])
40 | ? TextDirection.rtl
41 | : TextDirection.ltr
42 | : TextDirection.rtl,
43 | child: SelectableText(
44 | translatedText.containsKey('text') ? translatedText['text'] : '',
45 | style: TextStyle(fontSize: _outputFontSize),
46 | minLines: 7,
47 | ),
48 | ),
49 | ),
50 | ),
51 | ),
52 | Column(
53 | children: [
54 | CopyToClipboardButton(translatedText['text'] ?? ''),
55 | TtsOutput(),
56 | ],
57 | ),
58 | ],
59 | ),
60 | );
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/output/pronounciation.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import '/data.dart';
3 |
4 | class Pronunciation extends StatelessWidget {
5 | final Map translatedText;
6 |
7 | const Pronunciation(
8 | this.translatedText, {
9 | Key? key,
10 | }) : super(key: key);
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | width: double.infinity,
16 | child: Column(
17 | crossAxisAlignment: CrossAxisAlignment.start,
18 | children: [
19 | if (translatedText.containsKey('pronunciation') && translatedText['pronunciation'].isNotEmpty) ...[
20 | Text(
21 | translatedText['pronunciation'],
22 | style: TextStyle(
23 | fontSize: 18,
24 | color: theme == Brightness.dark ? Colors.white54 : Colors.black54,
25 | ),
26 | ),
27 | ]
28 | ],
29 | ),
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/screens/translate/widgets/output/tts_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:audioplayers/audioplayers.dart';
2 | import 'package:flutter/material.dart';
3 | import '/data.dart';
4 | import '/simplytranslate.dart' as simplytranslate;
5 |
6 | bool _listening = false;
7 | bool _isSnackBarPressed = false;
8 |
9 | AudioPlayer _audioPlayer = AudioPlayer();
10 |
11 | class TtsOutput extends StatefulWidget {
12 | const TtsOutput({
13 | Key? key,
14 | }) : super(key: key);
15 |
16 | @override
17 | State createState() => _TtsOutputState();
18 | }
19 |
20 | class _TtsOutputState extends State {
21 | @override
22 | Widget build(BuildContext context) {
23 | final _input = googleOutput['text'] ?? '';
24 | stopPlayer() async {
25 | await _audioPlayer.stop();
26 | setState(() => _listening = false);
27 | }
28 |
29 | audioLimit() {
30 | if (!_isSnackBarPressed) {
31 | ScaffoldMessenger.of(context).showSnackBar(
32 | SnackBar(
33 | duration: Duration(seconds: 2),
34 | width: 300,
35 | content: Text(
36 | i18n().main.audio_limit,
37 | textAlign: TextAlign.center,
38 | ),
39 | ),
40 | );
41 | _isSnackBarPressed = true;
42 | Future.delayed(Duration(seconds: 1)).then((_) => _isSnackBarPressed = false);
43 | }
44 | }
45 |
46 | startPlayer() async {
47 | isTtsInCanceled = false;
48 | setState(() => ttsInputloading = true);
49 | await _audioPlayer.setSourceBytes(await simplytranslate.tts(_input, toLangVal));
50 | if (isTtsInCanceled) return;
51 | setState(() {
52 | _listening = true;
53 | ttsInputloading = false;
54 | });
55 | await _audioPlayer.resume();
56 | _audioPlayer.onPlayerComplete.listen((event) {
57 | setState(() => _listening = false);
58 | });
59 | }
60 |
61 | return ttsOutloading
62 | ? InkWell(
63 | onTap: () {
64 | setState(() {
65 | ttsOutloading = false;
66 | isTtsOutputCanceled = true;
67 | });
68 | },
69 | child: Container(
70 | height: 48,
71 | width: 48,
72 | alignment: Alignment.center,
73 | child: Container(
74 | alignment: Alignment.center,
75 | height: 24,
76 | width: 24,
77 | child: const CircularProgressIndicator(strokeWidth: 3),
78 | ),
79 | ),
80 | )
81 | : IconButton(
82 | splashColor: Colors.transparent,
83 | highlightColor: Colors.transparent,
84 | onPressed: () {
85 | if (_input == '') {
86 | if (_listening)
87 | return stopPlayer;
88 | else
89 | return null;
90 | } else if (!_listening) {
91 | if (_input.length > 200)
92 | return audioLimit;
93 | else
94 | return startPlayer;
95 | } else
96 | return stopPlayer;
97 | }(),
98 | icon: Icon(
99 | _listening ? Icons.stop : Icons.volume_up,
100 | color: googleOutput.length > 200 && !_listening ? Colors.grey : null,
101 | ),
102 | );
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: simplytranslate_mobile
2 | description: An alternative frontend to Google Translate
3 |
4 | publish_to: 'none'
5 | version: 1.4.4+1
6 |
7 | environment:
8 | sdk: '>=3.0.1 <4.0.0'
9 |
10 | dependencies:
11 | flutter:
12 | sdk: flutter
13 | http: ^1.1.0
14 | get_storage: ^2.0.3
15 | audioplayers: ^5.0.0
16 | package_info_plus: ^4.0.1
17 | url_launcher: ^6.0.12
18 | intl: ^0.18.0
19 | path_provider: ^2.0.8
20 | permission_handler: ^10.2.0
21 | html: ^0.15.3
22 | i18n: ^4.0.6
23 |
24 | flutter:
25 | uses-material-design: true
26 | assets:
27 | - assets/
28 | - assets/ca/
29 | - assets/settings/
30 |
31 | dev_dependencies:
32 | build_runner: any
33 | flutter_test:
34 | sdk: flutter
--------------------------------------------------------------------------------
/scripts/arb_compile.sh:
--------------------------------------------------------------------------------
1 | python3 scripts/python/arb_merger.py
--------------------------------------------------------------------------------
/scripts/python/arb_merger.py:
--------------------------------------------------------------------------------
1 | # This script merges the arb files in `lib/l10n/langs/` and `lib/l10n/main/` to single files in `lib/l10n/`
2 | import os
3 | import json
4 | import re
5 | import yaml
6 |
7 | langsDirList = os.listdir("lib/messages/")
8 | for item in langsDirList:
9 | mainData = None
10 | with open(f"lib/messages/{item}") as file:
11 | mainData = yaml.safe_load(file)
12 |
13 | if item != "messages.i18n.yaml":
14 | with open("lib/messages/messages.i18n.yaml") as file:
15 | engData = yaml.safe_load(file)
16 | mainData['main'] = {k: v for k, v in mainData['main'].items() if k in engData['main']}
17 | mainData['langs'] = {k: v for k, v in mainData['langs'].items() if k in engData['langs']}
18 |
19 | for k, v in engData['main'].items():
20 | if k not in mainData['main'] or mainData['main'][k] == "":
21 | mainData['main'][k] = v
22 |
23 | for k, v in engData['langs'].items():
24 | if k not in mainData['langs'] or mainData['langs'][k] == "":
25 | mainData['langs'][k] = v
26 |
27 | with open(f'lib/messages/{item}', 'w') as file:
28 | yaml.dump(mainData, file, allow_unicode=True)
29 | print("Wrote: lib/messages/"+item)
30 |
--------------------------------------------------------------------------------
/scripts/website_compile.sh:
--------------------------------------------------------------------------------
1 | generate_pug() {
2 | lang=$1
3 | dir=$2
4 |
5 | jq -s '.[0] * {"dir": "'"${dir}"'"}' docs/strings/"${lang}".json > docs/strings/"${lang}".tmp.json
6 |
7 | pug docs/pug/*.pug -O docs/strings/"${lang}".tmp.json -o docs/"${lang}" -P
8 |
9 | if [ $lang == en ]; then
10 | pug docs/pug/*.pug -O docs/strings/"${lang}".tmp.json -o docs/ -P
11 | fi
12 |
13 | rm docs/strings/"${lang}".tmp.json
14 | }
15 |
16 | generate_pug 'en' 'ltr'
17 | # generate_pug 'ar' 'rtl'
18 | # generate_pug 'fr' 'ltr'
19 | # generate_pug 'nb_NO' 'ltr'
20 | # generate_pug 'pl' 'ltr'
21 | # generate_pug 'tr' 'ltr'
22 |
23 | sudo rm -rf /var/www/simplytranslate_mobile/simplytranslate_mobile/*
24 | sudo cp -r docs/* /var/www/simplytranslate_mobile/simplytranslate_mobile/
--------------------------------------------------------------------------------