diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..863d5a9e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*.dart] +max_line_length = 120 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..25bf01c7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,110 @@ +name: Bug report +description: Create a bug report to help Quacker improve +labels: [bug] +body: + - type: markdown + attributes: + value: | + Thank you for helping to make Quacker better by reporting a bug. :hugs: + + Please fill in as much information as possible about your bug so that we don't have to play "information ping-pong" and can help you immediately. + + - type: checkboxes + id: checklist + attributes: + label: "Checklist" + options: + - label: "I am able to reproduce the bug with the [latest version](https://github.com/thehcj/quacker/releases)." + required: true + - label: "I made sure that there are *no existing issues* - [open](https://github.com/thehcj/quacker/issues) or [closed](https://github.com/thehcj/quacker/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to." + required: true + - label: "I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise." + required: true + - label: "This issue contains only one bug." + required: true + + - type: input + id: app-version + attributes: + label: Affected version + description: "In which Quacker version did you encounter the bug?" + placeholder: "x.x.x+x - Can be seen in the app from the 'About' section in settings" + validations: + required: true + + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps to reproduce the bug + description: | + What did you do for the bug to show up? + + If you can't cause the bug to show up again reliably (and hence don't have a proper set of steps to give us), please still try to give as many details as possible on how you think you encountered the bug. + placeholder: | + 1. Go to '...' + 2. Press on '....' + 3. Swipe down to '....' + validations: + required: true + + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior + description: | + Tell us what you expect to happen. + + - type: textarea + id: actual-behavior + attributes: + label: Actual behavior + description: | + Tell us what happens with the steps given above. + + - type: textarea + id: screen-media + attributes: + label: Screenshots/Screen recordings + description: | + A picture or video is worth a thousand words. + + If applicable, add screenshots or a screen recording to help explain your problem. + GitHub supports uploading them directly in the text box. + If your file is too big for Github to accept, try to compress it (ZIP-file) or feel free to paste a link to an image/video hoster here instead. + + :heavy_exclamation_mark: DON'T POST SCREENSHOTS OF THE ERROR PAGE. + Instead, follow the instructions in the "Logs" section below. + + - type: textarea + id: logs + attributes: + label: Logs + description: | + If your bug includes a crash (where you're shown the Error Report page with a bunch of info), tap on "Copy formatted report" at the bottom and paste it here. + + - type: input + id: device-os-info + attributes: + label: Affected Android/Custom ROM version + description: | + With what operating system (+ version) did you encounter the bug? + placeholder: "Example: Android 12 / LineageOS 18.1" + + - type: input + id: device-model-info + attributes: + label: Affected device model + description: | + On what device did you encounter the bug? + placeholder: "Example: Huawei P20 lite (ANE-LX1) / Samsung Galaxy S20" + + - type: textarea + id: additional-information + attributes: + label: Additional information + description: | + Any other information you'd like to include, for instance that + * the affected device is foldable or a TV + * you have disabled all animations on your device + * your cat disabled your network connection + * ... diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..29158f1b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: ❓ Question + url: https://github.com/thehcj/quacker/discussions/new?category=q-a + about: Ask about anything Quacker-related diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 00000000..0592f258 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,46 @@ +name: Feature request +description: Suggest an idea for Quacker +labels: [enhancement] +body: + - type: markdown + attributes: + value: | + Thank you for helping to make Quacker better by suggesting a feature. :hugs: + + Your ideas are highly welcome! The app is made for you, the users, after all. + - type: checkboxes + id: checklist + attributes: + label: "Checklist" + options: + - label: "I made sure that there are *no existing issues* - [open](https://github.com/thehcj/Quacker/issues) or [closed](https://github.com/thehcj/Quacker/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to." + required: true + - label: "I have taken the time to fill in all the required details. I understand that the feature request will be dismissed otherwise." + required: true + - label: "This issue contains only one feature request." + required: true + + + - type: textarea + id: feature-description + attributes: + label: Feature description + description: | + Explain how you want the app's look or behavior to change to suit your needs. + validations: + required: true + + - type: textarea + id: why-is-the-feature-requested + attributes: + label: Why do you want this feature? + description: | + Describe any problem or limitation you come across while using the app which would be solved by this feature. + validations: + required: true + + - type: textarea + id: additional-information + attributes: + label: Additional information + description: Any other information you'd like to include, for instance sketches, mockups, pictures of cats, etc. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..08a1b6b7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,129 @@ +name: ci + +on: + workflow_dispatch: + push: + branches: + - master + +jobs: + android: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'ci skip')" + steps: + - name: Clone the repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Install and set up Java + uses: actions/setup-java@v2 + with: + distribution: 'zulu' + java-version: '14.x' + + - name: Install and set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: '3.10.2' + cache: true + + - name: Set up signing key + run: echo $SIGNING_KEY | base64 -d > android/app/key.jks + env: + SIGNING_KEY: ${{ secrets.SIGNING_KEY }} + + - name: Cache build directory + uses: actions/cache@v3 + with: + path: build + key: ${{ runner.os }}-build-${{ hashFiles('**/build') }} + restore-keys: | + ${{ runner.os }}-build- + + - name: Build + run: | + flutter clean + flutter config --no-analytics + flutter pub get + flutter pub run flutter_oss_licenses:generate.dart + flutter pub run intl_utils:generate + + # Create a directory for our release APKs + mkdir -pv build/app/outputs/release + + # Build our big boy APK, and move it into the release APKs folder + flutter build apk --dart-define=app.flavor=github --release --no-tree-shake-icons + mv build/app/outputs/flutter-apk/*-release.apk build/app/outputs/release + + # Build our ABI-specific APKs and move them into the release APKs folder + flutter build apk --dart-define=app.flavor=github --release --no-tree-shake-icons --split-per-abi --target-platform=android-x64,android-arm,android-arm64 + mv build/app/outputs/flutter-apk/*-release.apk build/app/outputs/release + env: + KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} + KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} + KEY_ALIAS: ${{ secrets.KEY_ALIAS }} + KEY_PATH: key.jks + + - name: Archive big APK + uses: actions/upload-artifact@v2 + with: + name: apk + path: build/app/outputs/release/app-release.apk + + - name: Archive arm APK + uses: actions/upload-artifact@v2 + with: + name: apk-arm + path: build/app/outputs/release/app-armeabi-v7a-release.apk + + - name: Archive arm64 APK + uses: actions/upload-artifact@v2 + with: + name: apk-arm64 + path: build/app/outputs/release/app-arm64-v8a-release.apk + + - name: Archive x86_64 APK + uses: actions/upload-artifact@v2 + with: + name: apk-x86_64 + path: build/app/outputs/release/app-x86_64-release.apk + +# ios: +# runs-on: macos-latest +# steps: +# - name: Clone the repository +# uses: actions/checkout@v2 +# with: +# fetch-depth: 0 +# +# - name: Install and set up Java +# uses: actions/setup-java@v1 +# with: +# java-version: '14.x' +# +# - name: Install and set up Flutter +# uses: subosito/flutter-action@v1 +# with: +# flutter-version: '2.2.1' +# +# - name: Build +# run: | +# flutter config --no-analytics +# flutter pub get +# flutter pub run flutter_oss_licenses:generate.dart +# flutter build ipa --debug +# flutter build ipa --release + +# - name: Archive debug APK +# uses: actions/upload-artifact@v2 +# with: +# name: apk-debug +# path: build/app/outputs/flutter-apk/app-debug.apk +# +# - name: Archive release APK +# uses: actions/upload-artifact@v2 +# with: +# name: apk-release +# path: build/app/outputs/flutter-ipa/iphoneos/app.ipa +# path: build/app/outputs/flutter-apk/app-release.apk diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..bd68da97 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,89 @@ +name: release + +on: + workflow_dispatch: + push: + tags: + - '*' + +jobs: + create_release: + runs-on: ubuntu-latest + steps: + - name: Clone the repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Install and set up Java + uses: actions/setup-java@v1 + with: + java-version: '14.x' + + - name: + run: echo $SIGNING_KEY | base64 -d > android/app/key.jks + env: + SIGNING_KEY: ${{ secrets.SIGNING_KEY }} + + - name: Install and set up Flutter + uses: subosito/flutter-action@v1 + with: + flutter-version: '3.10.2' + + - name: Set env + if: github.event_name == 'push' + run: | + APP_VERSION=$(echo ${{github.ref_name}} | sed 's/v//g') + echo "APPLICATION_VERSION=$APP_VERSION" >> $GITHUB_ENV + APP_BUILD_BASE=300000000 + COMMIT_NUMBER=$(git rev-list HEAD --count) + APP_BUILD_NUMBER=$((APP_BUILD_BASE+COMMIT_NUMBER)) + echo "APPLICATION_BUILD_NUMBER=$APP_BUILD_NUMBER" >> $GITHUB_ENV + + - name: Build APKs + run: | + flutter config --no-analytics + flutter pub get + flutter pub run flutter_oss_licenses:generate.dart + flutter pub run intl_utils:generate + + # Create a directory for our release APKs + mkdir -pv build/app/outputs/release + + # Build our big boy APK, and move it into the release APKs folder + if [[ ${{github.event_name}} == 'push' ]]; then + flutter build apk --dart-define=app.flavor=github --release --no-tree-shake-icons --build-name=${{env.APPLICATION_VERSION}} --build-number=${{env.APPLICATION_BUILD_NUMBER}} + else + flutter build apk --dart-define=app.flavor=github --release --no-tree-shake-icons + fi + mv build/app/outputs/apk/release/*.apk build/app/outputs/release + + # Build our ABI-specific APKs and move them into the release APKs folder + if [[ ${{github.event_name}} == 'push' ]]; then + flutter build apk --dart-define=app.flavor=github --release --no-tree-shake-icons --split-per-abi --target-platform=android-x64,android-arm,android-arm64 --build-name=${{env.APPLICATION_VERSION}} --build-number=${{env.APPLICATION_BUILD_NUMBER}} + else + flutter build apk --dart-define=app.flavor=github --release --no-tree-shake-icons --split-per-abi --target-platform=android-x64,android-arm,android-arm64 + fi + mv build/app/outputs/apk/release/*.apk build/app/outputs/release + env: + KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} + KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} + KEY_ALIAS: ${{ secrets.KEY_ALIAS }} + KEY_PATH: key.jks + + - name: Create release + id: upload-release-assets + uses: softprops/action-gh-release@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + draft: true + prerelease: false + files: | + build/app/outputs/release/*.apk + + - name: Publish the release + uses: eregon/publish-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + release_id: ${{ steps.upload-release-assets.outputs.id }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..3dd32178 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +# .vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ +/profile_files/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json diff --git a/.metadata b/.metadata new file mode 100644 index 00000000..cd984dd0 --- /dev/null +++ b/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 9b2d32b605630f28625709ebd9d78ab3016b2bf6 + channel: stable + +project_type: app diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..847ad54f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "dart.lineLength": 120, + "editor.rulers": [ + 120 + ], + "[dart]": { + "editor.rulers": [ + 120 + ], + "editor.formatOnSave": true, + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..d8d5a063 --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright 2021 Jonjo McKay + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..80181995 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +

Quacker


+

+ + Quacker + +

+

+ A better way to browse Twitter +

+ +

+ + Get it on IzzyOnDroid + +

+

+ + + + +

+ +## Features: +* Feed: View all your subscriptions in a chronological feed +* Material You: Looks and feels fluent +* Transfer: Easily transfer your data to another device +* Private: Doesn't use the official twitter api +* Updated: Constantly improving week by week + +## Screenshots + +| Viewing subscriptions| Viewing groups | Viewing a profile | Tweet cards | Viewing trends (and theming) | + +## Contribute +If you'd like to help make Quacker even better, here are a just a few of the ways you can help! + +### Report a bug +If you've found a bug in Quacker, open a [new issue](https://github.com/thehcj/quacker/issues/new/choose), but please make sure to check that someone else hasn't reported it first. + +### Request a feature +If you feel like something is missing from Quacker, feel free to [open an issue](https://github.com/thehcj/quacker/issues/new/choose) about it, detailing exactly what you're looking for. We'll look it over, discuss it with the community, and see if it'll work! + +### Fix a bug +If you're looking for something to dip your toes into the codebase, check if there are any issues labelled good first issue. Otherwise, if you see another issue you'd like to tackle, go for it - just fork the repository, push to a branch, and create a PR detailing your changes. We'll review it and merge it in, once it meets all our checks and balances! + +### Translations +Quacker currently uses Fritter's [Weblate](https://hosted.weblate.org/engage/fritter/) for translations. + +#### Next steps: +* Mastodon support - for being able to browse both Twitter and Mastodon content +* Persistent timeline positions - allowing you to continue where you left off in a feed +* Desktop support - allowing you to browse Twitter privately on a full-blown computer +* UX/UI improvements - such as a compact view, and tweaks to improve usability +* Nitter support - adding Nitter support back in, and helping to develop a stable API for Nitter itself +* Notifications - getting notified when selected subscriptions or groups have new tweets +* Stability - continued updates to improving the stability and reliability of the app diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 00000000..61b6c4de --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 00000000..0a741cb4 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,11 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 00000000..9145a21f --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,105 @@ +import com.android.build.OutputFile + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + +def keystoreFile = System.getenv('KEY_PATH') +if (keystoreFile != null && !keystoreFile.isEmpty()) { + keystoreProperties.setProperty('storePassword', System.getenv('KEY_STORE_PASSWORD')); + keystoreProperties.setProperty('keyPassword', System.getenv('KEY_PASSWORD')); + keystoreProperties.setProperty('keyAlias', System.getenv('KEY_ALIAS')); + keystoreProperties.setProperty('storeFile', System.getenv('KEY_PATH')); +} + +android { + compileSdkVersion 33 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + applicationId "com.thehcj.quacker" + minSdkVersion 21 + targetSdkVersion 33 + multiDexEnabled true + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + + buildTypes { + debug { + applicationIdSuffix ".debug" + } + + release { + signingConfig signingConfigs.release + + minifyEnabled = true + shrinkResources = true + + applicationVariants.all { variant -> + variant.outputs.all { output -> + def abiName = output.getFilter(OutputFile.ABI) + if (abiName == null) { + outputFileName = "quacker-v${defaultConfig.versionName}.apk" + } else { + outputFileName = "quacker-v${defaultConfig.versionName}_${abiName}.apk" + } + } + } + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "androidx.multidex:multidex:2.0.1" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..9d1483d0 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/debug/res/values/string.xml b/android/app/src/debug/res/values/string.xml new file mode 100644 index 00000000..628a07b3 --- /dev/null +++ b/android/app/src/debug/res/values/string.xml @@ -0,0 +1,4 @@ + + + Quacker (Debug) + \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..3379396b --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/jonjomckay/fritter/FritterApplication.java b/android/app/src/main/kotlin/com/jonjomckay/fritter/FritterApplication.java new file mode 100644 index 00000000..55612936 --- /dev/null +++ b/android/app/src/main/kotlin/com/jonjomckay/fritter/FritterApplication.java @@ -0,0 +1,15 @@ +package com.jonjomckay.fritter; + +import android.content.Context; +import androidx.multidex.MultiDex; + +import io.flutter.app.FlutterApplication; + +public class FritterApplication extends FlutterApplication { + + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + MultiDex.install(this); + } +} diff --git a/android/app/src/main/kotlin/com/jonjomckay/fritter/MainActivity.kt b/android/app/src/main/kotlin/com/jonjomckay/fritter/MainActivity.kt new file mode 100644 index 00000000..260693fb --- /dev/null +++ b/android/app/src/main/kotlin/com/jonjomckay/fritter/MainActivity.kt @@ -0,0 +1,6 @@ +package com.jonjomckay.fritter + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/play_store_512.png b/android/app/src/main/play_store_512.png new file mode 100644 index 00000000..a238c015 Binary files /dev/null and b/android/app/src/main/play_store_512.png differ diff --git a/android/app/src/main/res/drawable-night/launch_background.xml b/android/app/src/main/res/drawable-night/launch_background.xml new file mode 100644 index 00000000..19dc1a36 --- /dev/null +++ b/android/app/src/main/res/drawable-night/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/ic_launcher_monochrome.xml b/android/app/src/main/res/drawable/ic_launcher_monochrome.xml new file mode 100644 index 00000000..68cfbf95 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_monochrome.xml @@ -0,0 +1,17 @@ + + + + diff --git a/android/app/src/main/res/drawable/ic_notification.xml b/android/app/src/main/res/drawable/ic_notification.xml new file mode 100644 index 00000000..76363f31 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_notification.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..345888d2 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..66cdf109 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png new file mode 100644 index 00000000..2fa745ac Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..b39ca9b2 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000..e30517af Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..b51166e6 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png new file mode 100644 index 00000000..9e7347d6 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..6e70ffb0 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000..edf7c363 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..250e7ebc Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png new file mode 100644 index 00000000..07121faa Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..6ebe9e99 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000..3b888e45 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..2b3e4358 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png new file mode 100644 index 00000000..3dfa44c7 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..eeed6fb0 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000..19b4f661 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..20cd8b3d Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png new file mode 100644 index 00000000..2dbec2a7 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..0b9e5291 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000..521808fd Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/raw/keep.xml b/android/app/src/main/res/raw/keep.xml new file mode 100644 index 00000000..62853cc8 --- /dev/null +++ b/android/app/src/main/res/raw/keep.xml @@ -0,0 +1,3 @@ + + diff --git a/android/app/src/main/res/values/string.xml b/android/app/src/main/res/values/string.xml new file mode 100644 index 00000000..7086286b --- /dev/null +++ b/android/app/src/main/res/values/string.xml @@ -0,0 +1,4 @@ + + + Quacker + \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..e6fdcb3f --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..9d1483d0 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/profile/res/values/string.xml b/android/app/src/profile/res/values/string.xml new file mode 100644 index 00000000..3cae5ab0 --- /dev/null +++ b/android/app/src/profile/res/values/string.xml @@ -0,0 +1,4 @@ + + + Quacker (Profile) + \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 00000000..8f47cdfc --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.8.21' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.2.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/fastlane/Appfile b/android/fastlane/Appfile new file mode 100644 index 00000000..b603c916 --- /dev/null +++ b/android/fastlane/Appfile @@ -0,0 +1 @@ +package_name("com.thehcj.quacker") diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile new file mode 100644 index 00000000..19c557cc --- /dev/null +++ b/android/fastlane/Fastfile @@ -0,0 +1,38 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane + +default_platform(:android) + +platform :android do + desc "Runs all the tests" + lane :test do + gradle(task: "test") + end + + desc "Submit a new Beta Build to Crashlytics Beta" + lane :beta do + gradle(task: "clean assembleRelease") + crashlytics + + # sh "your_script.sh" + # You can also use other beta testing services here + end + + desc "Deploy a new version to the Google Play" + lane :deploy do + gradle(task: "clean assembleRelease") + upload_to_play_store + end +end diff --git a/android/fastlane/README.md b/android/fastlane/README.md new file mode 100644 index 00000000..020a3e4d --- /dev/null +++ b/android/fastlane/README.md @@ -0,0 +1,39 @@ +fastlane documentation +================ +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +``` +xcode-select --install +``` + +Install _fastlane_ using +``` +[sudo] gem install fastlane -NV +``` +or alternatively using `brew install fastlane` + +# Available Actions +## Android +### android test +``` +fastlane android test +``` +Runs all the tests +### android beta +``` +fastlane android beta +``` +Submit a new Beta Build to Crashlytics Beta +### android deploy +``` +fastlane android deploy +``` +Deploy a new version to the Google Play + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. +More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). +The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/android/fastlane/metadata/android/en-GB/changelogs/1.txt b/android/fastlane/metadata/android/en-GB/changelogs/1.txt new file mode 100644 index 00000000..bda80e89 --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/changelogs/1.txt @@ -0,0 +1 @@ +First release of Quacker \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-GB/changelogs/2.txt b/android/fastlane/metadata/android/en-GB/changelogs/2.txt new file mode 100644 index 00000000..b6407046 --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/changelogs/2.txt @@ -0,0 +1,4 @@ +• Fix: Video player not working +• Fix: Blue checks do not appear +• Fix: UI on search bar is bugged +• Fix: Long tweets are not visible \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-GB/changelogs/3.txt b/android/fastlane/metadata/android/en-GB/changelogs/3.txt new file mode 100644 index 00000000..b209845f --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/changelogs/3.txt @@ -0,0 +1,5 @@ +• Fix: feed +• Fix: crashing +• Fix: Tweet detail page +• Improvement: Movable to SD-Card +• Removed: True Dark \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-GB/changelogs/4.txt b/android/fastlane/metadata/android/en-GB/changelogs/4.txt new file mode 100644 index 00000000..1fe0bba3 --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/changelogs/4.txt @@ -0,0 +1,6 @@ +• Added: Open in browser to tweets +• Added: App to be the default to open `t.co` and `nitter.cz` +• Fix: Deleted tweet comments still appearing +• Fix: Verified checkmarks in feed +• UI: `Group:` prefix +• Change: Rebranded iOS Icons \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-GB/changelogs/5.txt b/android/fastlane/metadata/android/en-GB/changelogs/5.txt new file mode 100644 index 00000000..743c7ee8 --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/changelogs/5.txt @@ -0,0 +1,5 @@ +• Fix: Translations +• Changed: Now using outlined icons +• UX: Navigation labels are hidden when inactive +• UI: Bye Material 2 +• Removed: Android versions lower than 5.0 \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-GB/changelogs/next.txt b/android/fastlane/metadata/android/en-GB/changelogs/next.txt new file mode 100644 index 00000000..e69de29b diff --git a/android/fastlane/metadata/android/en-GB/full_description copy.txt b/android/fastlane/metadata/android/en-GB/full_description copy.txt new file mode 100644 index 00000000..2306103f --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/full_description copy.txt @@ -0,0 +1,5 @@ +• Feed: View all your subscriptions in a chronological feed +• Material You: Looks and feels fluent +• Sync: In sync with the current fritter build +• Private: Doesn't use the official twitter api +• Updated: Constantly improving week by week \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-GB/images/icon.png b/android/fastlane/metadata/android/en-GB/images/icon.png new file mode 100644 index 00000000..20cd8b3d Binary files /dev/null and b/android/fastlane/metadata/android/en-GB/images/icon.png differ diff --git a/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/1.jpg b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/1.jpg new file mode 100644 index 00000000..7d4373ca Binary files /dev/null and b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/1.jpg differ diff --git a/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/2.jpg b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/2.jpg new file mode 100644 index 00000000..24dc8341 Binary files /dev/null and b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/2.jpg differ diff --git a/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/3.jpg b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/3.jpg new file mode 100644 index 00000000..7c00b813 Binary files /dev/null and b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/3.jpg differ diff --git a/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/4.jpg b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/4.jpg new file mode 100644 index 00000000..357eec28 Binary files /dev/null and b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/4.jpg differ diff --git a/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/5.jpg b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/5.jpg new file mode 100644 index 00000000..37edb1c3 Binary files /dev/null and b/android/fastlane/metadata/android/en-GB/images/phoneScreenshots/5.jpg differ diff --git a/android/fastlane/metadata/android/en-GB/short_description copy.txt b/android/fastlane/metadata/android/en-GB/short_description copy.txt new file mode 100644 index 00000000..feade6db --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/short_description copy.txt @@ -0,0 +1 @@ +A better way to browse Twitter \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-GB/title copy.txt b/android/fastlane/metadata/android/en-GB/title copy.txt new file mode 100644 index 00000000..2cd0adf1 --- /dev/null +++ b/android/fastlane/metadata/android/en-GB/title copy.txt @@ -0,0 +1 @@ +Quacker diff --git a/android/fastlane/metadata/android/en-GB/video.txt b/android/fastlane/metadata/android/en-GB/video.txt new file mode 100644 index 00000000..e69de29b diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 00000000..39d606fc --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,7 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +android.enableR8=true +android.enableR8.fullMode=true +extra-gen-snapshot-options=--obfuscate +android.bundle.enableUncompressedNativeLibs=true \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..562c5e44 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 00000000..44e62bcf --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/android/settings_aar.gradle b/android/settings_aar.gradle new file mode 100644 index 00000000..e7b4def4 --- /dev/null +++ b/android/settings_aar.gradle @@ -0,0 +1 @@ +include ':app' diff --git a/build-play.sh b/build-play.sh new file mode 100755 index 00000000..f9a46768 --- /dev/null +++ b/build-play.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +set -e + +fvm flutter packages pub run intl_utils:generate +fvm flutter build appbundle --dart-define=app.flavor=play --release --no-tree-shake-icons \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/1.txt b/fastlane/metadata/android/en-US/changelogs/1.txt new file mode 100644 index 00000000..bda80e89 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1.txt @@ -0,0 +1 @@ +First release of Quacker \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/2.txt b/fastlane/metadata/android/en-US/changelogs/2.txt new file mode 100644 index 00000000..b6407046 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/2.txt @@ -0,0 +1,4 @@ +• Fix: Video player not working +• Fix: Blue checks do not appear +• Fix: UI on search bar is bugged +• Fix: Long tweets are not visible \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/3.txt b/fastlane/metadata/android/en-US/changelogs/3.txt new file mode 100644 index 00000000..b209845f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.txt @@ -0,0 +1,5 @@ +• Fix: feed +• Fix: crashing +• Fix: Tweet detail page +• Improvement: Movable to SD-Card +• Removed: True Dark \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/4.txt b/fastlane/metadata/android/en-US/changelogs/4.txt new file mode 100644 index 00000000..1fe0bba3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/4.txt @@ -0,0 +1,6 @@ +• Added: Open in browser to tweets +• Added: App to be the default to open `t.co` and `nitter.cz` +• Fix: Deleted tweet comments still appearing +• Fix: Verified checkmarks in feed +• UI: `Group:` prefix +• Change: Rebranded iOS Icons \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/5.txt b/fastlane/metadata/android/en-US/changelogs/5.txt new file mode 100644 index 00000000..743c7ee8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/5.txt @@ -0,0 +1,5 @@ +• Fix: Translations +• Changed: Now using outlined icons +• UX: Navigation labels are hidden when inactive +• UI: Bye Material 2 +• Removed: Android versions lower than 5.0 \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/next.txt b/fastlane/metadata/android/en-US/changelogs/next.txt new file mode 100644 index 00000000..e69de29b diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 00000000..2306103f --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,5 @@ +• Feed: View all your subscriptions in a chronological feed +• Material You: Looks and feels fluent +• Sync: In sync with the current fritter build +• Private: Doesn't use the official twitter api +• Updated: Constantly improving week by week \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 00000000..20cd8b3d Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg new file mode 100644 index 00000000..7d4373ca Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg new file mode 100644 index 00000000..24dc8341 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg new file mode 100644 index 00000000..7c00b813 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg new file mode 100644 index 00000000..357eec28 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg new file mode 100644 index 00000000..37edb1c3 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg differ diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 00000000..feade6db --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +A better way to browse Twitter \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 00000000..2cd0adf1 --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +Quacker diff --git a/fritter/android/app/src/main/res/values-ar/strings.xml b/fritter/android/app/src/main/res/values-ar/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-ar/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-b+be+Latn/strings.xml b/fritter/android/app/src/main/res/values-b+be+Latn/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-b+be+Latn/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-be/strings.xml b/fritter/android/app/src/main/res/values-be/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-be/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-ca/strings.xml b/fritter/android/app/src/main/res/values-ca/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-ca/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-cs/strings.xml b/fritter/android/app/src/main/res/values-cs/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-cs/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-de/strings.xml b/fritter/android/app/src/main/res/values-de/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-de/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-eo/strings.xml b/fritter/android/app/src/main/res/values-eo/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-eo/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-es/strings.xml b/fritter/android/app/src/main/res/values-es/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-es/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-et/strings.xml b/fritter/android/app/src/main/res/values-et/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-et/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-eu/strings.xml b/fritter/android/app/src/main/res/values-eu/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-eu/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-fr/strings.xml b/fritter/android/app/src/main/res/values-fr/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-hi/strings.xml b/fritter/android/app/src/main/res/values-hi/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-hi/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-id/strings.xml b/fritter/android/app/src/main/res/values-id/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-id/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-it/strings.xml b/fritter/android/app/src/main/res/values-it/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-it/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-ja/strings.xml b/fritter/android/app/src/main/res/values-ja/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-ja/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-ko/strings.xml b/fritter/android/app/src/main/res/values-ko/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-ko/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-ml/strings.xml b/fritter/android/app/src/main/res/values-ml/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-ml/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-nb-rNO/strings.xml b/fritter/android/app/src/main/res/values-nb-rNO/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-nb-rNO/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-nl/strings.xml b/fritter/android/app/src/main/res/values-nl/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-nl/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-or/strings.xml b/fritter/android/app/src/main/res/values-or/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-or/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-pl/strings.xml b/fritter/android/app/src/main/res/values-pl/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-pl/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-pt-rBR/strings.xml b/fritter/android/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-pt/strings.xml b/fritter/android/app/src/main/res/values-pt/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-pt/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-ro/strings.xml b/fritter/android/app/src/main/res/values-ro/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-ro/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-ru/strings.xml b/fritter/android/app/src/main/res/values-ru/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-tr/strings.xml b/fritter/android/app/src/main/res/values-tr/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-tr/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-uk/strings.xml b/fritter/android/app/src/main/res/values-uk/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-uk/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/android/app/src/main/res/values-zh-rCN/strings.xml b/fritter/android/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 00000000..ab81436c --- /dev/null +++ b/fritter/android/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/fritter/ios/Runner/Base.lproj/ar/Main.storyboard b/fritter/ios/Runner/Base.lproj/ar/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/ar/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/be-Latn/Main.storyboard b/fritter/ios/Runner/Base.lproj/be-Latn/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/be-Latn/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/be/Main.storyboard b/fritter/ios/Runner/Base.lproj/be/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/be/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/ca/Main.storyboard b/fritter/ios/Runner/Base.lproj/ca/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/ca/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/cs/Main.storyboard b/fritter/ios/Runner/Base.lproj/cs/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/cs/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/de/Main.storyboard b/fritter/ios/Runner/Base.lproj/de/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/de/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/eo/Main.storyboard b/fritter/ios/Runner/Base.lproj/eo/Main.storyboard new file mode 100644 index 00000000..c86134a8 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/eo/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/et/Main.storyboard b/fritter/ios/Runner/Base.lproj/et/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/et/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/eu/Main.storyboard b/fritter/ios/Runner/Base.lproj/eu/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/eu/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/fr/Main.storyboard b/fritter/ios/Runner/Base.lproj/fr/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/fr/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/hi/Main.storyboard b/fritter/ios/Runner/Base.lproj/hi/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/hi/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/id/Main.storyboard b/fritter/ios/Runner/Base.lproj/id/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/id/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/it/Main.storyboard b/fritter/ios/Runner/Base.lproj/it/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/it/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/ja/Main.storyboard b/fritter/ios/Runner/Base.lproj/ja/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/ja/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/ko/Main.storyboard b/fritter/ios/Runner/Base.lproj/ko/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/ko/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/ml/Main.storyboard b/fritter/ios/Runner/Base.lproj/ml/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/ml/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/nb-NO/Main.storyboard b/fritter/ios/Runner/Base.lproj/nb-NO/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/nb-NO/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/nl/Main.storyboard b/fritter/ios/Runner/Base.lproj/nl/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/nl/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/or/Main.storyboard b/fritter/ios/Runner/Base.lproj/or/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/or/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/pl/Main.storyboard b/fritter/ios/Runner/Base.lproj/pl/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/pl/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/pt-BR/Main.storyboard b/fritter/ios/Runner/Base.lproj/pt-BR/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/pt-BR/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/pt/Main.storyboard b/fritter/ios/Runner/Base.lproj/pt/Main.storyboard new file mode 100644 index 00000000..c86134a8 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/pt/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/ru/Main.storyboard b/fritter/ios/Runner/Base.lproj/ru/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/ru/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/tr/Main.storyboard b/fritter/ios/Runner/Base.lproj/tr/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/tr/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/uk/Main.storyboard b/fritter/ios/Runner/Base.lproj/uk/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/uk/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/fritter/ios/Runner/Base.lproj/zh-Hans/Main.storyboard b/fritter/ios/Runner/Base.lproj/zh-Hans/Main.storyboard new file mode 100644 index 00000000..08d7b807 --- /dev/null +++ b/fritter/ios/Runner/Base.lproj/zh-Hans/Main.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 00000000..e96ef602 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,32 @@ +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..6b4c0f78 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 8.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..ec97fc6f --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..c4855bfe --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 00000000..1e8c3c90 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '9.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 00000000..6a6073c5 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,131 @@ +PODS: + - catcher (0.0.1): + - Flutter + - device_info (0.0.1): + - Flutter + - device_info_plus (0.0.1): + - Flutter + - file_picker_writable (0.0.1): + - Flutter + - Flutter (1.0.0) + - flutter_local_notifications (0.0.1): + - Flutter + - flutter_mailer (0.0.1): + - Flutter + - fluttertoast (0.0.2): + - Flutter + - Toast + - FMDB (2.7.5): + - FMDB/standard (= 2.7.5) + - FMDB/standard (2.7.5) + - package_info (0.0.1): + - Flutter + - package_info_plus (0.4.5): + - Flutter + - path_provider (0.0.1): + - Flutter + - share (0.0.1): + - Flutter + - shared_preferences (0.0.1): + - Flutter + - sqflite (0.0.2): + - Flutter + - FMDB (>= 2.7.5) + - Toast (4.0.0) + - uni_links2 (0.0.1): + - Flutter + - url_launcher (0.0.1): + - Flutter + - video_player (0.0.1): + - Flutter + - wakelock (0.0.1): + - Flutter + +DEPENDENCIES: + - catcher (from `.symlinks/plugins/catcher/ios`) + - device_info (from `.symlinks/plugins/device_info/ios`) + - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) + - file_picker_writable (from `.symlinks/plugins/file_picker_writable/ios`) + - Flutter (from `Flutter`) + - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) + - flutter_mailer (from `.symlinks/plugins/flutter_mailer/ios`) + - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) + - package_info (from `.symlinks/plugins/package_info/ios`) + - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) + - path_provider (from `.symlinks/plugins/path_provider/ios`) + - share (from `.symlinks/plugins/share/ios`) + - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) + - sqflite (from `.symlinks/plugins/sqflite/ios`) + - uni_links2 (from `.symlinks/plugins/uni_links2/ios`) + - url_launcher (from `.symlinks/plugins/url_launcher/ios`) + - video_player (from `.symlinks/plugins/video_player/ios`) + - wakelock (from `.symlinks/plugins/wakelock/ios`) + +SPEC REPOS: + trunk: + - FMDB + - Toast + +EXTERNAL SOURCES: + catcher: + :path: ".symlinks/plugins/catcher/ios" + device_info: + :path: ".symlinks/plugins/device_info/ios" + device_info_plus: + :path: ".symlinks/plugins/device_info_plus/ios" + file_picker_writable: + :path: ".symlinks/plugins/file_picker_writable/ios" + Flutter: + :path: Flutter + flutter_local_notifications: + :path: ".symlinks/plugins/flutter_local_notifications/ios" + flutter_mailer: + :path: ".symlinks/plugins/flutter_mailer/ios" + fluttertoast: + :path: ".symlinks/plugins/fluttertoast/ios" + package_info: + :path: ".symlinks/plugins/package_info/ios" + package_info_plus: + :path: ".symlinks/plugins/package_info_plus/ios" + path_provider: + :path: ".symlinks/plugins/path_provider/ios" + share: + :path: ".symlinks/plugins/share/ios" + shared_preferences: + :path: ".symlinks/plugins/shared_preferences/ios" + sqflite: + :path: ".symlinks/plugins/sqflite/ios" + uni_links2: + :path: ".symlinks/plugins/uni_links2/ios" + url_launcher: + :path: ".symlinks/plugins/url_launcher/ios" + video_player: + :path: ".symlinks/plugins/video_player/ios" + wakelock: + :path: ".symlinks/plugins/wakelock/ios" + +SPEC CHECKSUMS: + catcher: 67a006a3c121c4bbf1202d1e5ea186afb7ef4a18 + device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 + device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed + file_picker_writable: 67959f5c516feb5121693a14eda63fcbe6cbb6dc + Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c + flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 + flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83 + fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58 + FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 + package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e + path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c + share: 0b2c3e82132f5888bccca3351c504d0003b3b410 + shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d + sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 + uni_links2: fbc37081577fc19c6e0f7e6cdbd3baa150023635 + url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef + video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e + wakelock: b0843b2479edbf6504d8d262c2959446f35373aa + +PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c + +COCOAPODS: 1.10.1 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..9676d3ad --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,582 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 27C4A18B7AA7737417EFF577 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F384DFFE1B1FF0A43C989C29 /* Pods_Runner.framework */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331BA8417954AAC1AD0625CB /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7B4CA484CF8FDB2F4DFA5B1B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DB8D2575D09AA92176315F3A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + F384DFFE1B1FF0A43C989C29 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 27C4A18B7AA7737417EFF577 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 52F9748C53DC293A281BF51C /* Pods */ = { + isa = PBXGroup; + children = ( + 331BA8417954AAC1AD0625CB /* Pods-Runner.debug.xcconfig */, + DB8D2575D09AA92176315F3A /* Pods-Runner.release.xcconfig */, + 7B4CA484CF8FDB2F4DFA5B1B /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 52F9748C53DC293A281BF51C /* Pods */, + ED83B40911092CD459196CA1 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + ED83B40911092CD459196CA1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F384DFFE1B1FF0A43C989C29 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 1464A7D75E3E0485891E313A /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + C575D5638059409AD04966C4 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1464A7D75E3E0485891E313A /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + C575D5638059409AD04966C4 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.jonjomckay.fritter; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.jonjomckay.fritter; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.jonjomckay.fritter; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..a28140cf --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..21a3cc14 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png new file mode 100644 index 00000000..40417cf9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png new file mode 100644 index 00000000..40417cf9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png new file mode 100644 index 00000000..c30c165a Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png new file mode 100644 index 00000000..caa261ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png new file mode 100644 index 00000000..488cf666 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png new file mode 100644 index 00000000..9d787538 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png new file mode 100644 index 00000000..9d787538 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png new file mode 100644 index 00000000..279c5360 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png new file mode 100644 index 00000000..488cf666 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png new file mode 100644 index 00000000..2adc8c06 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png new file mode 100644 index 00000000..2adc8c06 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png new file mode 100644 index 00000000..e154560a Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png new file mode 100644 index 00000000..40417cf9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png new file mode 100644 index 00000000..e154560a Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png new file mode 100644 index 00000000..38258c1e Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png new file mode 100644 index 00000000..aa336707 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png new file mode 100644 index 00000000..e154560a Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png new file mode 100644 index 00000000..ffdb0a98 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png new file mode 100644 index 00000000..38258c1e Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png new file mode 100644 index 00000000..d4008e61 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png new file mode 100644 index 00000000..2cbf518b Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..bd04914a --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,134 @@ +{ + "images": [ + { + "filename": "AppIcon@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "AppIcon@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "AppIcon~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "76x76" + }, + { + "filename": "AppIcon@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "76x76" + }, + { + "filename": "AppIcon-83.5@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "83.5x83.5" + }, + { + "filename": "AppIcon-40@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "AppIcon-40@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "40x40" + }, + { + "filename": "AppIcon-40~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "40x40" + }, + { + "filename": "AppIcon-40@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "40x40" + }, + { + "filename": "AppIcon-20@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "AppIcon-20@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "20x20" + }, + { + "filename": "AppIcon-20~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "20x20" + }, + { + "filename": "AppIcon-20@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "20x20" + }, + { + "filename": "AppIcon-29.png", + "idiom": "iphone", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "AppIcon-29@2x.png", + "idiom": "iphone", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "AppIcon-29@3x.png", + "idiom": "iphone", + "scale": "3x", + "size": "29x29" + }, + { + "filename": "AppIcon-29~ipad.png", + "idiom": "ipad", + "scale": "1x", + "size": "29x29" + }, + { + "filename": "AppIcon-29@2x~ipad.png", + "idiom": "ipad", + "scale": "2x", + "size": "29x29" + }, + { + "filename": "AppIcon-60@2x~car.png", + "idiom": "car", + "scale": "2x", + "size": "60x60" + }, + { + "filename": "AppIcon-60@3x~car.png", + "idiom": "car", + "scale": "3x", + "size": "60x60" + }, + { + "filename": "AppIcon~ios-marketing.png", + "idiom": "ios-marketing", + "scale": "1x", + "size": "1024x1024" + } + ], + "info": { + "author": "iconkitchen", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/ar/LaunchScreen.storyboard b/ios/Runner/Base.lproj/ar/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/ar/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/be-Latn/LaunchScreen.storyboard b/ios/Runner/Base.lproj/be-Latn/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/be-Latn/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/be/LaunchScreen.storyboard b/ios/Runner/Base.lproj/be/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/be/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/ca/LaunchScreen.storyboard b/ios/Runner/Base.lproj/ca/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/ca/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/cs/LaunchScreen.storyboard b/ios/Runner/Base.lproj/cs/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/cs/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/de/LaunchScreen.storyboard b/ios/Runner/Base.lproj/de/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/de/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/eo/LaunchScreen.storyboard b/ios/Runner/Base.lproj/eo/LaunchScreen.storyboard new file mode 100644 index 00000000..c86134a8 --- /dev/null +++ b/ios/Runner/Base.lproj/eo/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/et/LaunchScreen.storyboard b/ios/Runner/Base.lproj/et/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/et/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/eu/LaunchScreen.storyboard b/ios/Runner/Base.lproj/eu/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/eu/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/fr/LaunchScreen.storyboard b/ios/Runner/Base.lproj/fr/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/fr/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/hi/LaunchScreen.storyboard b/ios/Runner/Base.lproj/hi/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/hi/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/id/LaunchScreen.storyboard b/ios/Runner/Base.lproj/id/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/id/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/it/LaunchScreen.storyboard b/ios/Runner/Base.lproj/it/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/it/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/ja/LaunchScreen.storyboard b/ios/Runner/Base.lproj/ja/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/ja/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/ko/LaunchScreen.storyboard b/ios/Runner/Base.lproj/ko/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/ko/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/ml/LaunchScreen.storyboard b/ios/Runner/Base.lproj/ml/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/ml/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/nb-NO/LaunchScreen.storyboard b/ios/Runner/Base.lproj/nb-NO/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/nb-NO/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/nl/LaunchScreen.storyboard b/ios/Runner/Base.lproj/nl/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/nl/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/or/LaunchScreen.storyboard b/ios/Runner/Base.lproj/or/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/or/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/pl/LaunchScreen.storyboard b/ios/Runner/Base.lproj/pl/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/pl/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/pt-BR/LaunchScreen.storyboard b/ios/Runner/Base.lproj/pt-BR/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/pt-BR/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/pt/LaunchScreen.storyboard b/ios/Runner/Base.lproj/pt/LaunchScreen.storyboard new file mode 100644 index 00000000..c86134a8 --- /dev/null +++ b/ios/Runner/Base.lproj/pt/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/ru/LaunchScreen.storyboard b/ios/Runner/Base.lproj/ru/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/ru/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/tr/LaunchScreen.storyboard b/ios/Runner/Base.lproj/tr/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/tr/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/uk/LaunchScreen.storyboard b/ios/Runner/Base.lproj/uk/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/uk/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Base.lproj/zh-Hans/LaunchScreen.storyboard b/ios/Runner/Base.lproj/zh-Hans/LaunchScreen.storyboard new file mode 100644 index 00000000..9617b280 --- /dev/null +++ b/ios/Runner/Base.lproj/zh-Hans/LaunchScreen.storyboard @@ -0,0 +1 @@ +""; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 00000000..964a06be --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,59 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Quacker + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + LSApplicationQueriesSchemes + + https + http + + io.flutter.embedded_views_preview + + NSCameraUsageDescription + This app needs camera access to scan QR codes + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/ios/build/XCBuildData/45c68c5a5ddc4a08fc8a532b246d1332-desc.xcbuild b/ios/build/XCBuildData/45c68c5a5ddc4a08fc8a532b246d1332-desc.xcbuild new file mode 100644 index 00000000..9dadb9b3 Binary files /dev/null and b/ios/build/XCBuildData/45c68c5a5ddc4a08fc8a532b246d1332-desc.xcbuild differ diff --git a/ios/build/XCBuildData/45c68c5a5ddc4a08fc8a532b246d1332-manifest.xcbuild b/ios/build/XCBuildData/45c68c5a5ddc4a08fc8a532b246d1332-manifest.xcbuild new file mode 100644 index 00000000..54cffa13 --- /dev/null +++ b/ios/build/XCBuildData/45c68c5a5ddc4a08fc8a532b246d1332-manifest.xcbuild @@ -0,0 +1,105 @@ +client: + name: basic + version: 0 + file-system: default + +targets: + "": [""] + +nodes: + "/Users/jonjo/Projects/fritter/build/ios": {"is-mutated":true} + "/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"is-mutated":true} + "/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner": {"is-mutated":true} + "": {"is-command-timestamp":true} + "": {"is-command-timestamp":true} + +commands: + "": {"tool":"phony","inputs":["/Users/jonjo/Projects/fritter/build/ios","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/_CodeSignature","",""],"outputs":[""]} + "": {"tool":"stale-file-removal","expectedOutputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/_CodeSignature","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements-Simulated.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"],"roots":["/tmp/Runner.dst","/Users/jonjo/Projects/fritter/build/ios","/Users/jonjo/Projects/fritter/build/ios"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-ChangeAlternatePermissions": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-ChangePermissions": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-CodeSign": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-CopyAside": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-RegisterExecutionPolicyException": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-RegisterProduct": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-StripSymbols": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-Validate": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--CopySwiftPackageResourcesTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--GeneratedFilesTaskProducer": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements-Simulated.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements.plist"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--HeadermapTaskProducer": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--InfoPlistTaskProducer": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--ModuleMapTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--ProductPostprocessingTaskProducer": {"tool":"phony","inputs":["","","","","","","","","","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--ProductStructureTaskProducer": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--SanitizerTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--StubBinaryTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--SwiftFrameworkABICheckerTaskProducer": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--SwiftStandardLibrariesTaskProducer": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--TestTargetPostprocessingTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--TestTargetTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--VersionPlistTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--XCFrameworkTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--begin-compiling": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--copy-headers-completion": {"tool":"phony","inputs":[""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--end": {"tool":"phony","inputs":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc","","","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements-Simulated.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--entry": {"tool":"phony","inputs":["","","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--generated-headers": {"tool":"phony","inputs":["","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--immediate": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--modules-ready": {"tool":"phony","inputs":["","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase0--cp--check-pods-manifest-lock": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase1-run-script": {"tool":"phony","inputs":["","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase2-compile-sources": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase4-copy-bundle-resources": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase5-copy-files": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase6-thin-binary": {"tool":"phony","inputs":["","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase7--cp--embed-pods-frameworks": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"],"outputs":[""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CodeSign /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"shell","description":"CodeSign /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist/","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework/","/Users/jonjo/Projects/fritter/ios/Flutter/AppFrameworkInfo.plist/","/Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets/","/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard/","/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard/","","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/_CodeSignature",""],"args":["/usr/bin/codesign","--force","--sign","-","--entitlements","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent","--timestamp=none","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app"],"env":{"CODESIGN_ALLOCATE":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"},"can-safely-interrupt":false,"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"76f5410da091b30c9de79caffe6c8612"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileAssetCatalog /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app /Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets": {"tool":"shell","description":"CompileAssetCatalog /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app /Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/actool","--output-format","human-readable-text","--notices","--warnings","--export-dependency-info","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_dependencies","--output-partial-info-plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","--app-icon","AppIcon","--compress-pngs","--enable-on-demand-resources","YES","--filter-for-device-model","iPod9,1","--filter-for-device-os-version","14.4","--development-region","en","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--platform","iphonesimulator","--compile","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","/Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_dependencies"],"deps-style":"dependency-info","signature":"1768ac09c53103570ac1b35e38d21c5a"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o /Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler": {"tool":"shell","description":"CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o /Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-x","objective-c","-target","x86_64-apple-ios9.0-simulator","-fmessage-length=0","-fdiagnostics-show-note-include-stack","-fmacro-backtrace-limit=0","-std=gnu99","-fobjc-arc","-fmodules","-gmodules","-fmodules-cache-path=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","-fmodules-prune-interval=86400","-fmodules-prune-after=345600","-fbuild-session-file=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","-fmodules-validate-once-per-build-session","-Wnon-modular-include-in-framework-module","-Werror=non-modular-include-in-framework-module","-Wno-trigraphs","-fpascal-strings","-O0","-fno-common","-Wno-missing-field-initializers","-Wno-missing-prototypes","-Werror=return-type","-Wunreachable-code","-Wno-implicit-atomic-properties","-Werror=deprecated-objc-isa-usage","-Wno-objc-interface-ivars","-Werror=objc-root-class","-Wno-arc-repeated-use-of-weak","-Wimplicit-retain-self","-Wduplicate-method-match","-Wno-missing-braces","-Wparentheses","-Wswitch","-Wunused-function","-Wno-unused-label","-Wno-unused-parameter","-Wunused-variable","-Wunused-value","-Wempty-body","-Wuninitialized","-Wconditional-uninitialized","-Wno-unknown-pragmas","-Wno-shadow","-Wno-four-char-constants","-Wno-conversion","-Wconstant-conversion","-Wint-conversion","-Wbool-conversion","-Wenum-conversion","-Wno-float-conversion","-Wnon-literal-null-conversion","-Wobjc-literal-conversion","-Wshorten-64-to-32","-Wpointer-sign","-Wno-newline-eof","-Wno-selector","-Wno-strict-selector-match","-Wundeclared-selector","-Wdeprecated-implementations","-DDEBUG=1","-DCOCOAPODS=1","-DOBJC_OLD_DISPATCH_PROTOTYPES=0","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-fasm-blocks","-fstrict-aliasing","-Wprotocol","-Wdeprecated-declarations","-g","-Wno-sign-conversion","-Winfinite-recursion","-Wcomma","-Wblock-capture-autoreleasing","-Wstrict-prototypes","-Wno-semicolon-before-method-body","-fobjc-abi-version=2","-fobjc-legacy-dispatch","-index-store-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/Runner-fsvdakdoawhrlygoubhctoeejjbi/Index/DataStore","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources-normal/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F/Users/jonjo/Projects/fritter/ios/Flutter","-MMD","-MT","dependencies","-MF","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.d","--serialize-diagnostics","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.dia","-c","/Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m","-o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o"],"env":{"LANG":"en_US.US-ASCII"},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.d"],"deps-style":"makefile","signature":"1c39a808df9f0df263899acc0720fc4f"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler": {"tool":"shell","description":"CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-x","c","-target","x86_64-apple-ios9.0-simulator","-fmessage-length=0","-fdiagnostics-show-note-include-stack","-fmacro-backtrace-limit=0","-std=gnu99","-fmodules","-gmodules","-fmodules-cache-path=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","-fmodules-prune-interval=86400","-fmodules-prune-after=345600","-fbuild-session-file=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","-fmodules-validate-once-per-build-session","-Wnon-modular-include-in-framework-module","-Werror=non-modular-include-in-framework-module","-Wno-trigraphs","-fpascal-strings","-O0","-fno-common","-Wno-missing-field-initializers","-Wno-missing-prototypes","-Werror=return-type","-Wunreachable-code","-Werror=deprecated-objc-isa-usage","-Werror=objc-root-class","-Wno-missing-braces","-Wparentheses","-Wswitch","-Wunused-function","-Wno-unused-label","-Wno-unused-parameter","-Wunused-variable","-Wunused-value","-Wempty-body","-Wuninitialized","-Wconditional-uninitialized","-Wno-unknown-pragmas","-Wno-shadow","-Wno-four-char-constants","-Wno-conversion","-Wconstant-conversion","-Wint-conversion","-Wbool-conversion","-Wenum-conversion","-Wno-float-conversion","-Wnon-literal-null-conversion","-Wobjc-literal-conversion","-Wshorten-64-to-32","-Wpointer-sign","-Wno-newline-eof","-DDEBUG=1","-DCOCOAPODS=1","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-fasm-blocks","-fstrict-aliasing","-Wdeprecated-declarations","-g","-Wno-sign-conversion","-Winfinite-recursion","-Wcomma","-Wblock-capture-autoreleasing","-Wstrict-prototypes","-Wno-semicolon-before-method-body","-index-store-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/Runner-fsvdakdoawhrlygoubhctoeejjbi/Index/DataStore","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources-normal/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F/Users/jonjo/Projects/fritter/ios/Flutter","-MMD","-MT","dependencies","-MF","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.d","--serialize-diagnostics","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.dia","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","-o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o"],"env":{"LANG":"en_US.US-ASCII"},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.d"],"deps-style":"makefile","signature":"b0f309d3000eedd0d3eb74f3adbc0acb"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard": {"tool":"shell","description":"CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool","--errors","--warnings","--notices","--module","Runner","--output-partial-info-plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","--auto-activate-custom-fonts","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--output-format","human-readable-text","--compilation-directory","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj","/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard"],"env":{"XCODE_DEVELOPER_USR_PATH":"/Applications/Xcode.app/Contents/Developer/usr/bin/.."},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"17a3fa999d12f48ddd37845190989db1"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard": {"tool":"shell","description":"CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool","--errors","--warnings","--notices","--module","Runner","--output-partial-info-plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","--auto-activate-custom-fonts","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--output-format","human-readable-text","--compilation-directory","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj","/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard"],"env":{"XCODE_DEVELOPER_USR_PATH":"/Applications/Xcode.app/Contents/Developer/usr/bin/.."},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"1197a6ddf158f885c7b5e1e96727639b"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler": {"tool":"shell","description":"CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/AppDelegate.swift","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc","-incremental","-module-name","Runner","-Onone","-enable-batch-mode","-enforce-exclusivity=checked","@/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","-sdk","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-target","x86_64-apple-ios9.0-simulator","-g","-module-cache-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","-Xfrontend","-serialize-debugging-options","-enable-testing","-index-store-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/Runner-fsvdakdoawhrlygoubhctoeejjbi/Index/DataStore","-swift-version","5","-I","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F","/Users/jonjo/Projects/fritter/ios/Flutter","-parse-as-library","-c","-j8","-output-file-map","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","-parseable-output","-serialize-diagnostics","-emit-dependencies","-emit-module","-emit-module-path","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/swift-overrides.hmap","-Xcc","-iquote","-Xcc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","-Xcc","-iquote","-Xcc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources-normal/x86_64","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/x86_64","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","-Xcc","-DDEBUG=1","-Xcc","-DCOCOAPODS=1","-emit-objc-header","-emit-objc-header-path","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","-import-objc-header","/Users/jonjo/Projects/fritter/ios/Runner/Runner-Bridging-Header.h","-pch-output-dir","/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","-working-directory","/Users/jonjo/Projects/fritter/ios"],"env":{"DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk"},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.d"],"deps-style":"makefile","signature":"0c715e6976559b3ac305ed4bc7b65c71"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CopyPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist /Users/jonjo/Projects/fritter/ios/Flutter/AppFrameworkInfo.plist": {"tool":"copy-plist","description":"CopyPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist /Users/jonjo/Projects/fritter/ios/Flutter/AppFrameworkInfo.plist","inputs":["/Users/jonjo/Projects/fritter/ios/Flutter/AppFrameworkInfo.plist","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CopySwiftLibs /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"embed-swift-stdlib","description":"CopySwiftLibs /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner","","",""],"outputs":[""],"deps":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/SwiftStdLibToolInputDependencies.dep"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CreateBuildDirectory /Users/jonjo/Projects/fritter/build/ios": {"tool":"create-build-directory","description":"CreateBuildDirectory /Users/jonjo/Projects/fritter/build/ios","inputs":[],"outputs":["","/Users/jonjo/Projects/fritter/build/ios"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"dc31a963c82d548fc8b9668698c045dd"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"7886c66abfecebcda9e0905571da6d38"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"69cc5790314a14ccb9af84f4dfd1d298"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"7a617233788f24f336f1676216041545"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"d2c525fe521e034b97986d5ce795f5ad"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"07799b7ad32d10a3c32476bc6b4a9009"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"ed94b98b621f02f7f7e5c90feb2f8228"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ld /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner normal": {"tool":"shell","description":"Ld /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner normal","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner","",""],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-target","x86_64-apple-ios9.0-simulator","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-L/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-L/Users/jonjo/Projects/fritter/ios/Flutter","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F/Users/jonjo/Projects/fritter/ios/Flutter","-filelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","-Xlinker","-rpath","-Xlinker","/usr/lib/swift","-Xlinker","-rpath","-Xlinker","@executable_path/Frameworks","-Xlinker","-rpath","-Xlinker","@loader_path/Frameworks","-Xlinker","-rpath","-Xlinker","@executable_path/Frameworks","-dead_strip","-Xlinker","-object_path_lto","-Xlinker","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_lto.o","-Xlinker","-export_dynamic","-Xlinker","-no_deduplicate","-Xlinker","-objc_abi_version","-Xlinker","2","-fobjc-arc","-fobjc-link-runtime","-L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator","-L/usr/lib/swift","-Xlinker","-add_ast_path","-Xlinker","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","-lsqlite3","-framework","FMDB","-framework","device_info","-framework","package_info","-framework","path_provider","-framework","share","-framework","shared_preferences","-framework","sqflite","-framework","uni_links2","-framework","url_launcher","-framework","video_player","-Xlinker","-sectcreate","-Xlinker","__TEXT","-Xlinker","__entitlements","-Xlinker","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","-framework","Pods_Runner","-Xlinker","-no_adhoc_codesign","-Xlinker","-dependency_info","-Xlinker","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_dependency_info.dat","-o","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_dependency_info.dat"],"deps-style":"dependency-info","signature":"d8954b0d8dfa499d24169ce420399081"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:LinkStoryboards": {"tool":"shell","description":"LinkStoryboards","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool","--errors","--warnings","--notices","--module","Runner","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--output-format","human-readable-text","--link","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc"],"env":{"XCODE_DEVELOPER_USR_PATH":"/Applications/Xcode.app/Contents/Developer/usr/bin/.."},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"b28c7995f602b0164678647ec9ab0cad"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"mkdir","description":"MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","",""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks": {"tool":"mkdir","description":"MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks",""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution Run Script /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh": {"tool":"shell","description":"PhaseScriptExecution Run Script /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","",""],"outputs":[""],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","AppIdentifierPrefix":"FAKETEAMID.","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","EXPANDED_CODE_SIGN_IDENTITY":"-","EXPANDED_CODE_SIGN_IDENTITY_NAME":"-","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_ENTITLEMENTS_SECTION":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_COUNT":"0","SCRIPT_INPUT_FILE_LIST_COUNT":"0","SCRIPT_OUTPUT_FILE_COUNT":"0","SCRIPT_OUTPUT_FILE_LIST_COUNT":"0","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","TeamIdentifierPrefix":"FAKETEAMID.","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"always-out-of-date":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"a3ca7a188340ff062efcd7bd8ee7f021"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution Thin Binary /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh": {"tool":"shell","description":"PhaseScriptExecution Thin Binary /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","",""],"outputs":[""],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","AppIdentifierPrefix":"FAKETEAMID.","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","EXPANDED_CODE_SIGN_IDENTITY":"-","EXPANDED_CODE_SIGN_IDENTITY_NAME":"-","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_ENTITLEMENTS_SECTION":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_COUNT":"0","SCRIPT_INPUT_FILE_LIST_COUNT":"0","SCRIPT_OUTPUT_FILE_COUNT":"0","SCRIPT_OUTPUT_FILE_LIST_COUNT":"0","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","TeamIdentifierPrefix":"FAKETEAMID.","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"always-out-of-date":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"7320ebdd7e0de8eeb0354c5cf94ec152"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution [CP] Check Pods Manifest.lock /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh": {"tool":"shell","description":"PhaseScriptExecution [CP] Check Pods Manifest.lock /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","inputs":["/Users/jonjo/Projects/fritter/ios/Podfile.lock/","/Users/jonjo/Projects/fritter/ios/Pods/Manifest.lock/","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt"],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","AppIdentifierPrefix":"FAKETEAMID.","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","EXPANDED_CODE_SIGN_IDENTITY":"-","EXPANDED_CODE_SIGN_IDENTITY_NAME":"-","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_ENTITLEMENTS_SECTION":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_0":"/Users/jonjo/Projects/fritter/ios/Podfile.lock","SCRIPT_INPUT_FILE_1":"/Users/jonjo/Projects/fritter/ios/Pods/Manifest.lock","SCRIPT_INPUT_FILE_COUNT":"2","SCRIPT_INPUT_FILE_LIST_COUNT":"0","SCRIPT_OUTPUT_FILE_0":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","SCRIPT_OUTPUT_FILE_COUNT":"1","SCRIPT_OUTPUT_FILE_LIST_COUNT":"0","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","TeamIdentifierPrefix":"FAKETEAMID.","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"1c452e0d730ae0427fc4dce53191faf3"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution [CP] Embed Pods Frameworks /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh": {"tool":"shell","description":"PhaseScriptExecution [CP] Embed Pods Frameworks /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","inputs":["/Users/jonjo/Projects/fritter/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist/","/Users/jonjo/Projects/fritter/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-output-files.xcfilelist","/Users/jonjo/Projects/fritter/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework"],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","AppIdentifierPrefix":"FAKETEAMID.","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","EXPANDED_CODE_SIGN_IDENTITY":"-","EXPANDED_CODE_SIGN_IDENTITY_NAME":"-","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_ENTITLEMENTS_SECTION":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_COUNT":"0","SCRIPT_INPUT_FILE_LIST_0":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","SCRIPT_INPUT_FILE_LIST_COUNT":"1","SCRIPT_OUTPUT_FILE_COUNT":"0","SCRIPT_OUTPUT_FILE_LIST_0":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","SCRIPT_OUTPUT_FILE_LIST_COUNT":"1","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","TeamIdentifierPrefix":"FAKETEAMID.","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"f9461c08db32b24fc46757c299edbb9f"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:ProcessInfoPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist /Users/jonjo/Projects/fritter/ios/Runner/Info.plist": {"tool":"info-plist-processor","description":"ProcessInfoPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist /Users/jonjo/Projects/fritter/ios/Runner/Info.plist","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:ProcessProductPackaging /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent": {"tool":"process-product-entitlements","description":"ProcessProductPackaging /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements-Simulated.plist","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app-Simulated.xcent"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:ProcessProductPackaging /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent": {"tool":"process-product-entitlements","description":"ProcessProductPackaging /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements.plist","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.app.xcent"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:RegisterExecutionPolicyException /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"register-execution-policy-exception","description":"RegisterExecutionPolicyException /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","",""],"outputs":[""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Touch /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"shell","description":"Touch /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","",""],"outputs":[""],"args":["/usr/bin/touch","-c","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"10827ff201d434641da46ac9b2afb04b"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements-Simulated.plist": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements-Simulated.plist","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements-Simulated.plist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements.plist": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements.plist","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Entitlements.plist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"]} + diff --git a/ios/build/XCBuildData/BuildDescriptionCacheIndex-356b71b1a528c44b947f9456849ec4c1 b/ios/build/XCBuildData/BuildDescriptionCacheIndex-356b71b1a528c44b947f9456849ec4c1 new file mode 100644 index 00000000..5f693ffb Binary files /dev/null and b/ios/build/XCBuildData/BuildDescriptionCacheIndex-356b71b1a528c44b947f9456849ec4c1 differ diff --git a/ios/build/XCBuildData/build.db b/ios/build/XCBuildData/build.db new file mode 100644 index 00000000..886489c9 Binary files /dev/null and b/ios/build/XCBuildData/build.db differ diff --git a/ios/build/XCBuildData/f0d31a7c171441a95488a75e7a2d9228-desc.xcbuild b/ios/build/XCBuildData/f0d31a7c171441a95488a75e7a2d9228-desc.xcbuild new file mode 100644 index 00000000..9fe9beca Binary files /dev/null and b/ios/build/XCBuildData/f0d31a7c171441a95488a75e7a2d9228-desc.xcbuild differ diff --git a/ios/build/XCBuildData/f0d31a7c171441a95488a75e7a2d9228-manifest.xcbuild b/ios/build/XCBuildData/f0d31a7c171441a95488a75e7a2d9228-manifest.xcbuild new file mode 100644 index 00000000..b787c08e --- /dev/null +++ b/ios/build/XCBuildData/f0d31a7c171441a95488a75e7a2d9228-manifest.xcbuild @@ -0,0 +1,96 @@ +client: + name: basic + version: 0 + file-system: default + +targets: + "": [""] + +nodes: + "/Users/jonjo/Projects/fritter/build/ios": {"is-mutated":true} + +commands: + "": {"tool":"phony","inputs":["/Users/jonjo/Projects/fritter/build/ios","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks","",""],"outputs":[""]} + "": {"tool":"stale-file-removal","expectedOutputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"],"roots":["/tmp/Runner.dst","/Users/jonjo/Projects/fritter/build/ios","/Users/jonjo/Projects/fritter/build/ios"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-ChangeAlternatePermissions": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-ChangePermissions": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-CodeSign": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-CopyAside": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-RegisterExecutionPolicyException": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-RegisterProduct": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-StripSymbols": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--Barrier-Validate": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--CopySwiftPackageResourcesTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--GeneratedFilesTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--HeadermapTaskProducer": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--InfoPlistTaskProducer": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--ModuleMapTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--ProductPostprocessingTaskProducer": {"tool":"phony","inputs":["","","","","","","","","","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--ProductStructureTaskProducer": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--SanitizerTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--StubBinaryTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--SwiftFrameworkABICheckerTaskProducer": {"tool":"phony","inputs":["","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--SwiftStandardLibrariesTaskProducer": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--TestTargetPostprocessingTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--TestTargetTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--VersionPlistTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--XCFrameworkTaskProducer": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--begin-compiling": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--copy-headers-completion": {"tool":"phony","inputs":[""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--end": {"tool":"phony","inputs":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc","","","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--entry": {"tool":"phony","inputs":["","","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--generated-headers": {"tool":"phony","inputs":["","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--immediate": {"tool":"phony","inputs":["","","",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--modules-ready": {"tool":"phony","inputs":["","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase0--cp--check-pods-manifest-lock": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase1-run-script": {"tool":"phony","inputs":["","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase2-compile-sources": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase4-copy-bundle-resources": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase5-copy-files": {"tool":"phony","inputs":["",""],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase6-thin-binary": {"tool":"phony","inputs":["","","","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh"],"outputs":[""]} + "Gate target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49--phase7--cp--embed-pods-frameworks": {"tool":"phony","inputs":["","","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"],"outputs":[""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileAssetCatalog /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app /Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets": {"tool":"shell","description":"CompileAssetCatalog /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app /Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Assets.car"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/actool","--output-format","human-readable-text","--notices","--warnings","--export-dependency-info","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_dependencies","--output-partial-info-plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","--app-icon","AppIcon","--compress-pngs","--enable-on-demand-resources","YES","--filter-for-device-model","iPod9,1","--filter-for-device-os-version","14.4","--development-region","en","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--platform","iphonesimulator","--compile","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","/Users/jonjo/Projects/fritter/ios/Runner/Assets.xcassets"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_dependencies"],"deps-style":"dependency-info","signature":"1768ac09c53103570ac1b35e38d21c5a"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o /Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler": {"tool":"shell","description":"CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o /Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-x","objective-c","-target","x86_64-apple-ios9.0-simulator","-fmessage-length=0","-fdiagnostics-show-note-include-stack","-fmacro-backtrace-limit=0","-std=gnu99","-fobjc-arc","-fmodules","-gmodules","-fmodules-cache-path=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","-fmodules-prune-interval=86400","-fmodules-prune-after=345600","-fbuild-session-file=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","-fmodules-validate-once-per-build-session","-Wnon-modular-include-in-framework-module","-Werror=non-modular-include-in-framework-module","-Wno-trigraphs","-fpascal-strings","-O0","-fno-common","-Wno-missing-field-initializers","-Wno-missing-prototypes","-Werror=return-type","-Wunreachable-code","-Wno-implicit-atomic-properties","-Werror=deprecated-objc-isa-usage","-Wno-objc-interface-ivars","-Werror=objc-root-class","-Wno-arc-repeated-use-of-weak","-Wimplicit-retain-self","-Wduplicate-method-match","-Wno-missing-braces","-Wparentheses","-Wswitch","-Wunused-function","-Wno-unused-label","-Wno-unused-parameter","-Wunused-variable","-Wunused-value","-Wempty-body","-Wuninitialized","-Wconditional-uninitialized","-Wno-unknown-pragmas","-Wno-shadow","-Wno-four-char-constants","-Wno-conversion","-Wconstant-conversion","-Wint-conversion","-Wbool-conversion","-Wenum-conversion","-Wno-float-conversion","-Wnon-literal-null-conversion","-Wobjc-literal-conversion","-Wshorten-64-to-32","-Wpointer-sign","-Wno-newline-eof","-Wno-selector","-Wno-strict-selector-match","-Wundeclared-selector","-Wdeprecated-implementations","-DDEBUG=1","-DCOCOAPODS=1","-DOBJC_OLD_DISPATCH_PROTOTYPES=0","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-fasm-blocks","-fstrict-aliasing","-Wprotocol","-Wdeprecated-declarations","-g","-Wno-sign-conversion","-Winfinite-recursion","-Wcomma","-Wblock-capture-autoreleasing","-Wstrict-prototypes","-Wno-semicolon-before-method-body","-fobjc-abi-version=2","-fobjc-legacy-dispatch","-index-store-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/Runner-fsvdakdoawhrlygoubhctoeejjbi/Index/DataStore","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources-normal/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F/Users/jonjo/Projects/fritter/ios/Flutter","-MMD","-MT","dependencies","-MF","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.d","--serialize-diagnostics","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.dia","-c","/Users/jonjo/Projects/fritter/ios/Runner/GeneratedPluginRegistrant.m","-o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o"],"env":{"LANG":"en_US.US-ASCII"},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.d"],"deps-style":"makefile","signature":"1c39a808df9f0df263899acc0720fc4f"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler": {"tool":"shell","description":"CompileC /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-x","c","-target","x86_64-apple-ios9.0-simulator","-fmessage-length=0","-fdiagnostics-show-note-include-stack","-fmacro-backtrace-limit=0","-std=gnu99","-fmodules","-gmodules","-fmodules-cache-path=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","-fmodules-prune-interval=86400","-fmodules-prune-after=345600","-fbuild-session-file=/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","-fmodules-validate-once-per-build-session","-Wnon-modular-include-in-framework-module","-Werror=non-modular-include-in-framework-module","-Wno-trigraphs","-fpascal-strings","-O0","-fno-common","-Wno-missing-field-initializers","-Wno-missing-prototypes","-Werror=return-type","-Wunreachable-code","-Werror=deprecated-objc-isa-usage","-Werror=objc-root-class","-Wno-missing-braces","-Wparentheses","-Wswitch","-Wunused-function","-Wno-unused-label","-Wno-unused-parameter","-Wunused-variable","-Wunused-value","-Wempty-body","-Wuninitialized","-Wconditional-uninitialized","-Wno-unknown-pragmas","-Wno-shadow","-Wno-four-char-constants","-Wno-conversion","-Wconstant-conversion","-Wint-conversion","-Wbool-conversion","-Wenum-conversion","-Wno-float-conversion","-Wnon-literal-null-conversion","-Wobjc-literal-conversion","-Wshorten-64-to-32","-Wpointer-sign","-Wno-newline-eof","-DDEBUG=1","-DCOCOAPODS=1","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-fasm-blocks","-fstrict-aliasing","-Wdeprecated-declarations","-g","-Wno-sign-conversion","-Winfinite-recursion","-Wcomma","-Wblock-capture-autoreleasing","-Wstrict-prototypes","-Wno-semicolon-before-method-body","-index-store-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/Runner-fsvdakdoawhrlygoubhctoeejjbi/Index/DataStore","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","-iquote","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources-normal/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/x86_64","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F/Users/jonjo/Projects/fritter/ios/Flutter","-MMD","-MT","dependencies","-MF","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.d","--serialize-diagnostics","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.dia","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","-o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o"],"env":{"LANG":"en_US.US-ASCII"},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.d"],"deps-style":"makefile","signature":"b0f309d3000eedd0d3eb74f3adbc0acb"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard": {"tool":"shell","description":"CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool","--errors","--warnings","--notices","--module","Runner","--output-partial-info-plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","--auto-activate-custom-fonts","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--output-format","human-readable-text","--compilation-directory","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj","/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/LaunchScreen.storyboard"],"env":{"XCODE_DEVELOPER_USR_PATH":"/Applications/Xcode.app/Contents/Developer/usr/bin/.."},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"17a3fa999d12f48ddd37845190989db1"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard": {"tool":"shell","description":"CompileStoryboard /Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool","--errors","--warnings","--notices","--module","Runner","--output-partial-info-plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","--auto-activate-custom-fonts","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--output-format","human-readable-text","--compilation-directory","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj","/Users/jonjo/Projects/fritter/ios/Runner/Base.lproj/Main.storyboard"],"env":{"XCODE_DEVELOPER_USR_PATH":"/Applications/Xcode.app/Contents/Developer/usr/bin/.."},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"1197a6ddf158f885c7b5e1e96727639b"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler": {"tool":"shell","description":"CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/AppDelegate.swift","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc"],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc","-incremental","-module-name","Runner","-Onone","-enable-batch-mode","-enforce-exclusivity=checked","@/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","-sdk","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-target","x86_64-apple-ios9.0-simulator","-g","-module-cache-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","-Xfrontend","-serialize-debugging-options","-enable-testing","-index-store-path","/Users/jonjo/Library/Developer/Xcode/DerivedData/Runner-fsvdakdoawhrlygoubhctoeejjbi/Index/DataStore","-swift-version","5","-I","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F","/Users/jonjo/Projects/fritter/ios/Flutter","-parse-as-library","-c","-j8","-output-file-map","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","-parseable-output","-serialize-diagnostics","-emit-dependencies","-emit-module","-emit-module-path","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/swift-overrides.hmap","-Xcc","-iquote","-Xcc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","-Xcc","-iquote","-Xcc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources-normal/x86_64","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/x86_64","-Xcc","-I/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","-Xcc","-DDEBUG=1","-Xcc","-DCOCOAPODS=1","-emit-objc-header","-emit-objc-header-path","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","-import-objc-header","/Users/jonjo/Projects/fritter/ios/Runner/Runner-Bridging-Header.h","-pch-output-dir","/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","-working-directory","/Users/jonjo/Projects/fritter/ios"],"env":{"DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk"},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.d"],"deps-style":"makefile","signature":"0c715e6976559b3ac305ed4bc7b65c71"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CopyPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist /Users/jonjo/Projects/fritter/ios/Flutter/AppFrameworkInfo.plist": {"tool":"copy-plist","description":"CopyPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist /Users/jonjo/Projects/fritter/ios/Flutter/AppFrameworkInfo.plist","inputs":["/Users/jonjo/Projects/fritter/ios/Flutter/AppFrameworkInfo.plist","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/AppFrameworkInfo.plist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CopySwiftLibs /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"embed-swift-stdlib","description":"CopySwiftLibs /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner","","",""],"outputs":[""],"deps":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/SwiftStdLibToolInputDependencies.dep"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:CreateBuildDirectory /Users/jonjo/Projects/fritter/build/ios": {"tool":"create-build-directory","description":"CreateBuildDirectory /Users/jonjo/Projects/fritter/build/ios","inputs":[],"outputs":["","/Users/jonjo/Projects/fritter/build/ios"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"dc31a963c82d548fc8b9668698c045dd"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftsourceinfo","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/Project/x86_64.swiftsourceinfo"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"7886c66abfecebcda9e0905571da6d38"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftdoc"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"69cc5790314a14ccb9af84f4dfd1d298"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64-apple-ios-simulator.swiftmodule"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"7a617233788f24f336f1676216041545"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftdoc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftdoc"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"d2c525fe521e034b97986d5ce795f5ad"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.swiftmodule/x86_64.swiftmodule"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"07799b7ad32d10a3c32476bc6b4a9009"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ditto /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h": {"tool":"shell","description":"Ditto /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h"],"args":["/usr/bin/ditto","-rsrc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-Swift.h","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner-Swift.h"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"ed94b98b621f02f7f7e5c90feb2f8228"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Ld /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner normal": {"tool":"shell","description":"Ld /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner normal","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_vers.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/GeneratedPluginRegistrant.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/AppDelegate.o","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner",""],"args":["/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang","-target","x86_64-apple-ios9.0-simulator","-isysroot","/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","-L/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-L/Users/jonjo/Projects/fritter/ios/Flutter","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher","-F/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player","-F/Users/jonjo/Projects/fritter/ios/Flutter","-filelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","-Xlinker","-rpath","-Xlinker","/usr/lib/swift","-Xlinker","-rpath","-Xlinker","@executable_path/Frameworks","-Xlinker","-rpath","-Xlinker","@loader_path/Frameworks","-Xlinker","-rpath","-Xlinker","@executable_path/Frameworks","-dead_strip","-Xlinker","-object_path_lto","-Xlinker","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_lto.o","-Xlinker","-export_dynamic","-Xlinker","-no_deduplicate","-Xlinker","-objc_abi_version","-Xlinker","2","-fobjc-arc","-fobjc-link-runtime","-L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator","-L/usr/lib/swift","-Xlinker","-add_ast_path","-Xlinker","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.swiftmodule","-lsqlite3","-framework","FMDB","-framework","device_info","-framework","package_info","-framework","path_provider","-framework","share","-framework","shared_preferences","-framework","sqflite","-framework","uni_links2","-framework","url_launcher","-framework","video_player","-framework","Pods_Runner","-Xlinker","-dependency_info","-Xlinker","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_dependency_info.dat","-o","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Runner"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","deps":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_dependency_info.dat"],"deps-style":"dependency-info","signature":"70dc0fcad199bbc9fcb9642069c481f2"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:LinkStoryboards": {"tool":"shell","description":"LinkStoryboards","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Base.lproj/Main.storyboardc"],"args":["/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool","--errors","--warnings","--notices","--module","Runner","--target-device","iphone","--target-device","ipad","--minimum-deployment-target","9.0","--output-format","human-readable-text","--link","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen.storyboardc","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main.storyboardc"],"env":{"XCODE_DEVELOPER_USR_PATH":"/Applications/Xcode.app/Contents/Developer/usr/bin/.."},"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"b28c7995f602b0164678647ec9ab0cad"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"mkdir","description":"MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app",""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks": {"tool":"mkdir","description":"MkDir /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks",""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution Run Script /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh": {"tool":"shell","description":"PhaseScriptExecution Run Script /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","",""],"outputs":[""],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_COUNT":"0","SCRIPT_INPUT_FILE_LIST_COUNT":"0","SCRIPT_OUTPUT_FILE_COUNT":"0","SCRIPT_OUTPUT_FILE_LIST_COUNT":"0","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"always-out-of-date":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"61405f928231385e76ab698c50a1fc88"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution Thin Binary /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh": {"tool":"shell","description":"PhaseScriptExecution Thin Binary /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","inputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","",""],"outputs":[""],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_COUNT":"0","SCRIPT_INPUT_FILE_LIST_COUNT":"0","SCRIPT_OUTPUT_FILE_COUNT":"0","SCRIPT_OUTPUT_FILE_LIST_COUNT":"0","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"always-out-of-date":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"622aebe7b86426df839bc23eff1d4d65"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution [CP] Check Pods Manifest.lock /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh": {"tool":"shell","description":"PhaseScriptExecution [CP] Check Pods Manifest.lock /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","inputs":["/Users/jonjo/Projects/fritter/ios/Podfile.lock/","/Users/jonjo/Projects/fritter/ios/Pods/Manifest.lock/","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt"],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_0":"/Users/jonjo/Projects/fritter/ios/Podfile.lock","SCRIPT_INPUT_FILE_1":"/Users/jonjo/Projects/fritter/ios/Pods/Manifest.lock","SCRIPT_INPUT_FILE_COUNT":"2","SCRIPT_INPUT_FILE_LIST_COUNT":"0","SCRIPT_OUTPUT_FILE_0":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Pods-Runner-checkManifestLockResult.txt","SCRIPT_OUTPUT_FILE_COUNT":"1","SCRIPT_OUTPUT_FILE_LIST_COUNT":"0","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"e01130c8c7ee67c8fe81ed4d25f72784"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:PhaseScriptExecution [CP] Embed Pods Frameworks /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh": {"tool":"shell","description":"PhaseScriptExecution [CP] Embed Pods Frameworks /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","inputs":["/Users/jonjo/Projects/fritter/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist/","/Users/jonjo/Projects/fritter/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-output-files.xcfilelist","/Users/jonjo/Projects/fritter/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/device_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/package_info.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/uni_links2.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/video_player.framework"],"args":["/bin/sh","-c","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"],"env":{"ACTION":"build","AD_HOC_CODE_SIGNING_ALLOWED":"YES","ALTERNATE_GROUP":"staff","ALTERNATE_MODE":"u+w,go-w,a+rX","ALTERNATE_OWNER":"jonjo","ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES":"NO","ALWAYS_SEARCH_USER_PATHS":"NO","ALWAYS_USE_SEPARATE_HEADERMAPS":"NO","APPLE_INTERNAL_DEVELOPER_DIR":"/AppleInternal/Developer","APPLE_INTERNAL_DIR":"/AppleInternal","APPLE_INTERNAL_DOCUMENTATION_DIR":"/AppleInternal/Documentation","APPLE_INTERNAL_LIBRARY_DIR":"/AppleInternal/Library","APPLE_INTERNAL_TOOLS":"/AppleInternal/Developer/Tools","APPLICATION_EXTENSION_API_ONLY":"NO","APPLY_RULES_IN_COPY_FILES":"NO","APPLY_RULES_IN_COPY_HEADERS":"NO","ARCHS":"x86_64","ARCHS_STANDARD":"arm64 x86_64 i386","ARCHS_STANDARD_32_64_BIT":"arm64 i386 x86_64","ARCHS_STANDARD_32_BIT":"i386","ARCHS_STANDARD_64_BIT":"arm64 x86_64","ARCHS_STANDARD_INCLUDING_64_BIT":"arm64 x86_64 i386","ARCHS_UNIVERSAL_IPHONE_OS":"arm64 i386 x86_64","ASSETCATALOG_COMPILER_APPICON_NAME":"AppIcon","ASSETCATALOG_FILTER_FOR_DEVICE_MODEL":"iPod9,1","ASSETCATALOG_FILTER_FOR_DEVICE_OS_VERSION":"14.4","AVAILABLE_PLATFORMS":"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator","BITCODE_GENERATION_MODE":"marker","BUILD_ACTIVE_RESOURCES_ONLY":"YES","BUILD_COMPONENTS":"headers build","BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","BUILD_LIBRARY_FOR_DISTRIBUTION":"NO","BUILD_ROOT":"/Users/jonjo/Projects/fritter/build/ios","BUILD_STYLE":"","BUILD_VARIANTS":"normal","BUILT_PRODUCTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","BUNDLE_CONTENTS_FOLDER_PATH_deep":"Contents/","BUNDLE_EXECUTABLE_FOLDER_NAME_deep":"MacOS","BUNDLE_FORMAT":"shallow","BUNDLE_FRAMEWORKS_FOLDER_PATH":"Frameworks","BUNDLE_PLUGINS_FOLDER_PATH":"PlugIns","BUNDLE_PRIVATE_HEADERS_FOLDER_PATH":"PrivateHeaders","BUNDLE_PUBLIC_HEADERS_FOLDER_PATH":"Headers","CACHE_ROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CCHROOT":"/var/folders/3m/h69js6rj6yn4y8wjv4jdp74c0000gn/C/com.apple.DeveloperTools/12.4-12D4e/Xcode","CHMOD":"/bin/chmod","CHOWN":"/usr/sbin/chown","CLANG_ANALYZER_NONNULL":"YES","CLANG_CXX_LANGUAGE_STANDARD":"gnu++0x","CLANG_CXX_LIBRARY":"libc++","CLANG_ENABLE_MODULES":"YES","CLANG_ENABLE_OBJC_ARC":"YES","CLANG_MODULES_BUILD_SESSION_FILE":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation","CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING":"YES","CLANG_WARN_BOOL_CONVERSION":"YES","CLANG_WARN_COMMA":"YES","CLANG_WARN_CONSTANT_CONVERSION":"YES","CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS":"YES","CLANG_WARN_DIRECT_OBJC_ISA_USAGE":"YES_ERROR","CLANG_WARN_EMPTY_BODY":"YES","CLANG_WARN_ENUM_CONVERSION":"YES","CLANG_WARN_INFINITE_RECURSION":"YES","CLANG_WARN_INT_CONVERSION":"YES","CLANG_WARN_NON_LITERAL_NULL_CONVERSION":"YES","CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF":"YES","CLANG_WARN_OBJC_LITERAL_CONVERSION":"YES","CLANG_WARN_OBJC_ROOT_CLASS":"YES_ERROR","CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER":"NO","CLANG_WARN_RANGE_LOOP_ANALYSIS":"YES","CLANG_WARN_STRICT_PROTOTYPES":"YES","CLANG_WARN_SUSPICIOUS_MOVE":"YES","CLANG_WARN_UNREACHABLE_CODE":"YES","CLANG_WARN__DUPLICATE_METHOD_MATCH":"YES","CLASS_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/JavaClasses","CLEAN_PRECOMPS":"YES","CLONE_HEADERS":"NO","CODESIGNING_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","CODE_SIGNING_ALLOWED":"YES","CODE_SIGNING_REQUIRED":"YES","CODE_SIGN_CONTEXT_CLASS":"XCiPhoneSimulatorCodeSignContext","CODE_SIGN_IDENTITY":"-","CODE_SIGN_INJECT_BASE_ENTITLEMENTS":"YES","COLOR_DIAGNOSTICS":"NO","COMBINE_HIDPI_IMAGES":"NO","COMPILER_INDEX_STORE_ENABLE":"Default","COMPOSITE_SDK_DIRS":"/Users/jonjo/Projects/fritter/build/ios/CompositeSDKs","COMPRESS_PNG_FILES":"YES","CONFIGURATION":"Debug","CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","CONFIGURATION_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator","CONTENTS_FOLDER_PATH":"Runner.app","COPYING_PRESERVES_HFS_DATA":"NO","COPY_HEADERS_RUN_UNIFDEF":"NO","COPY_PHASE_STRIP":"NO","COPY_RESOURCES_FROM_STATIC_FRAMEWORKS":"YES","CORRESPONDING_DEVICE_PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform","CORRESPONDING_DEVICE_PLATFORM_NAME":"iphoneos","CORRESPONDING_DEVICE_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk","CORRESPONDING_DEVICE_SDK_NAME":"iphoneos14.4","CP":"/bin/cp","CREATE_INFOPLIST_SECTION_IN_BINARY":"NO","CURRENT_ARCH":"undefined_arch","CURRENT_PROJECT_VERSION":"20210503","CURRENT_VARIANT":"normal","DART_OBFUSCATION":"false","DEAD_CODE_STRIPPING":"YES","DEBUGGING_SYMBOLS":"YES","DEBUG_INFORMATION_FORMAT":"dwarf","DEFAULT_COMPILER":"com.apple.compilers.llvm.clang.1_0","DEFAULT_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","DEFAULT_KEXT_INSTALL_PATH":"/System/Library/Extensions","DEFINES_MODULE":"NO","DEPLOYMENT_LOCATION":"NO","DEPLOYMENT_POSTPROCESSING":"NO","DEPLOYMENT_TARGET_CLANG_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_CLANG_FLAG_NAME":"mios-simulator-version-min","DEPLOYMENT_TARGET_CLANG_FLAG_PREFIX":"-mios-simulator-version-min=","DEPLOYMENT_TARGET_LD_ENV_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_LD_FLAG_NAME":"ios_simulator_version_min","DEPLOYMENT_TARGET_SETTING_NAME":"IPHONEOS_DEPLOYMENT_TARGET","DEPLOYMENT_TARGET_SUGGESTED_VALUES":"9.0 9.2 10.0 10.2 11.0 11.2 11.4 12.1 12.3 13.0 13.2 13.4 13.6 14.1 14.3 14.4","DERIVED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DERIVED_SOURCES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources","DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","DEVELOPER_FRAMEWORKS_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_FRAMEWORKS_DIR_QUOTED":"/Applications/Xcode.app/Contents/Developer/Library/Frameworks","DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Library","DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs","DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Tools","DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","DEVELOPMENT_LANGUAGE":"en","DOCUMENTATION_FOLDER_PATH":"Runner.app/en.lproj/Documentation","DONT_GENERATE_INFOPLIST_FILE":"NO","DO_HEADER_SCANNING_IN_JAM":"NO","DSTROOT":"/tmp/Runner.dst","DT_TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","DWARF_DSYM_FILE_NAME":"Runner.app.dSYM","DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT":"NO","DWARF_DSYM_FOLDER_PATH":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","EFFECTIVE_PLATFORM_NAME":"-iphonesimulator","EMBEDDED_CONTENT_CONTAINS_SWIFT":"NO","EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE":"NO","ENABLE_BITCODE":"NO","ENABLE_DEFAULT_HEADER_SEARCH_PATHS":"YES","ENABLE_HARDENED_RUNTIME":"NO","ENABLE_HEADER_DEPENDENCIES":"YES","ENABLE_ON_DEMAND_RESOURCES":"YES","ENABLE_PREVIEWS":"NO","ENABLE_STRICT_OBJC_MSGSEND":"YES","ENABLE_TESTABILITY":"YES","ENABLE_TESTING_SEARCH_PATHS":"NO","ENTITLEMENTS_DESTINATION":"__entitlements","ENTITLEMENTS_REQUIRED":"YES","EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS":".DS_Store .svn .git .hg CVS","EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES":"*.nib *.lproj *.framework *.gch *.xcode* *.xcassets (*) .DS_Store CVS .svn .git .hg *.pbproj *.pbxproj","EXECUTABLES_FOLDER_PATH":"Runner.app/Executables","EXECUTABLE_FOLDER_PATH":"Runner.app","EXECUTABLE_NAME":"Runner","EXECUTABLE_PATH":"Runner.app/Runner","FILE_LIST":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects/LinkFileList","FIXED_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/FixedFiles","FLUTTER_APPLICATION_PATH":"/Users/jonjo/Projects/fritter","FLUTTER_BUILD_DIR":"build","FLUTTER_BUILD_NAME":"2.2.2","FLUTTER_BUILD_NUMBER":"20210503","FLUTTER_ROOT":"/Users/jonjo/fvm/versions/stable","FLUTTER_TARGET":"/Users/jonjo/Projects/fritter/lib/main.dart","FRAMEWORKS_FOLDER_PATH":"Runner.app/Frameworks","FRAMEWORK_FLAG_PREFIX":"-framework","FRAMEWORK_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player\" /Users/jonjo/Projects/fritter/ios/Flutter","FRAMEWORK_VERSION":"A","FULL_PRODUCT_NAME":"Runner.app","GCC3_VERSION":"3.3","GCC_C_LANGUAGE_STANDARD":"gnu99","GCC_DYNAMIC_NO_PIC":"NO","GCC_INLINES_ARE_PRIVATE_EXTERN":"YES","GCC_NO_COMMON_BLOCKS":"YES","GCC_OBJC_LEGACY_DISPATCH":"YES","GCC_OPTIMIZATION_LEVEL":"0","GCC_PFE_FILE_C_DIALECTS":"c objective-c c++ objective-c++","GCC_PREPROCESSOR_DEFINITIONS":"DEBUG=1 COCOAPODS=1","GCC_SYMBOLS_PRIVATE_EXTERN":"NO","GCC_TREAT_WARNINGS_AS_ERRORS":"NO","GCC_VERSION":"com.apple.compilers.llvm.clang.1_0","GCC_VERSION_IDENTIFIER":"com_apple_compilers_llvm_clang_1_0","GCC_WARN_64_TO_32_BIT_CONVERSION":"YES","GCC_WARN_ABOUT_RETURN_TYPE":"YES_ERROR","GCC_WARN_UNDECLARED_SELECTOR":"YES","GCC_WARN_UNINITIALIZED_AUTOS":"YES_AGGRESSIVE","GCC_WARN_UNUSED_FUNCTION":"YES","GCC_WARN_UNUSED_VARIABLE":"YES","GENERATED_MODULEMAP_DIR":"/Users/jonjo/Projects/fritter/build/ios/GeneratedModuleMaps-iphonesimulator","GENERATE_MASTER_OBJECT_FILE":"NO","GENERATE_PKGINFO_FILE":"YES","GENERATE_PROFILING_CODE":"NO","GENERATE_TEXT_BASED_STUBS":"NO","GID":"20","GROUP":"staff","HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT":"YES","HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES":"YES","HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS":"YES","HEADERMAP_INCLUDES_PROJECT_HEADERS":"YES","HEADERMAP_USES_FRAMEWORK_PREFIX_ENTRIES":"YES","HEADERMAP_USES_VFS":"NO","HEADER_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/include \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/FMDB/FMDB.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/device_info/device_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/package_info/package_info.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/path_provider/path_provider.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/share/share.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/shared_preferences/shared_preferences.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/sqflite/sqflite.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/uni_links2/uni_links2.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/url_launcher/url_launcher.framework/Headers\" \"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/video_player/video_player.framework/Headers\"","HIDE_BITCODE_SYMBOLS":"YES","HOME":"/Users/jonjo","ICONV":"/usr/bin/iconv","INFOPLIST_EXPAND_BUILD_SETTINGS":"YES","INFOPLIST_FILE":"Runner/Info.plist","INFOPLIST_OUTPUT_FORMAT":"binary","INFOPLIST_PATH":"Runner.app/Info.plist","INFOPLIST_PREPROCESS":"NO","INFOSTRINGS_PATH":"Runner.app/en.lproj/InfoPlist.strings","INLINE_PRIVATE_FRAMEWORKS":"NO","INSTALLHDRS_COPY_PHASE":"NO","INSTALLHDRS_SCRIPT_PHASE":"NO","INSTALL_DIR":"/tmp/Runner.dst/Applications","INSTALL_GROUP":"staff","INSTALL_MODE_FLAG":"u+w,go-w,a+rX","INSTALL_OWNER":"jonjo","INSTALL_PATH":"/Applications","INSTALL_ROOT":"/tmp/Runner.dst","IPHONEOS_DEPLOYMENT_TARGET":"9.0","JAVAC_DEFAULT_FLAGS":"-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8","JAVA_APP_STUB":"/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub","JAVA_ARCHIVE_CLASSES":"YES","JAVA_ARCHIVE_TYPE":"JAR","JAVA_COMPILER":"/usr/bin/javac","JAVA_FOLDER_PATH":"Runner.app/Java","JAVA_FRAMEWORK_RESOURCES_DIRS":"Resources","JAVA_JAR_FLAGS":"cv","JAVA_SOURCE_SUBDIR":".","JAVA_USE_DEPENDENCIES":"YES","JAVA_ZIP_FLAGS":"-urg","JIKES_DEFAULT_FLAGS":"+E +OLDCSO","KEEP_PRIVATE_EXTERNS":"NO","LD_DEPENDENCY_INFO_FILE":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch/Runner_dependency_info.dat","LD_GENERATE_MAP_FILE":"NO","LD_MAP_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-LinkMap-normal-undefined_arch.txt","LD_NO_PIE":"NO","LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER":"YES","LD_RUNPATH_SEARCH_PATHS":" '@executable_path/Frameworks' '@loader_path/Frameworks' @executable_path/Frameworks","LEGACY_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer","LEX":"lex","LIBRARY_DEXT_INSTALL_PATH":"/Library/DriverExtensions","LIBRARY_FLAG_NOSPACE":"YES","LIBRARY_FLAG_PREFIX":"-l","LIBRARY_KEXT_INSTALL_PATH":"/Library/Extensions","LIBRARY_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator /Users/jonjo/Projects/fritter/ios/Flutter","LINKER_DISPLAYS_MANGLED_NAMES":"NO","LINK_FILE_LIST_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","LINK_WITH_STANDARD_LIBRARIES":"YES","LLVM_TARGET_TRIPLE_OS_VERSION":"ios9.0","LLVM_TARGET_TRIPLE_SUFFIX":"-simulator","LLVM_TARGET_TRIPLE_VENDOR":"apple","LOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app/en.lproj","LOCALIZED_STRING_MACRO_NAMES":"NSLocalizedString CFCopyLocalizedString","LOCALIZED_STRING_SWIFTUI_SUPPORT":"YES","LOCAL_ADMIN_APPS_DIR":"/Applications/Utilities","LOCAL_APPS_DIR":"/Applications","LOCAL_DEVELOPER_DIR":"/Library/Developer","LOCAL_LIBRARY_DIR":"/Library","LOCROOT":"/Users/jonjo/Projects/fritter/ios","LOCSYMROOT":"/Users/jonjo/Projects/fritter/ios","MACH_O_TYPE":"mh_execute","MAC_OS_X_PRODUCT_BUILD_VERSION":"19H524","MAC_OS_X_VERSION_ACTUAL":"101507","MAC_OS_X_VERSION_MAJOR":"101500","MAC_OS_X_VERSION_MINOR":"1507","METAL_LIBRARY_FILE_BASE":"default","METAL_LIBRARY_OUTPUT_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","MODULES_FOLDER_PATH":"Runner.app/Modules","MODULE_CACHE_DIR":"/Users/jonjo/Library/Developer/Xcode/DerivedData/ModuleCache.noindex","MTL_ENABLE_DEBUG_INFO":"YES","NATIVE_ARCH":"x86_64","NATIVE_ARCH_32_BIT":"i386","NATIVE_ARCH_64_BIT":"x86_64","NATIVE_ARCH_ACTUAL":"x86_64","NO_COMMON":"YES","OBJC_ABI_VERSION":"2","OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects","OBJECT_FILE_DIR_normal":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","OBJROOT":"/Users/jonjo/Projects/fritter/build/ios","ONLY_ACTIVE_ARCH":"YES","OS":"MACOS","OSAC":"/usr/bin/osacompile","OTHER_LDFLAGS":" -l\"sqlite3\" -framework \"FMDB\" -framework \"device_info\" -framework \"package_info\" -framework \"path_provider\" -framework \"share\" -framework \"shared_preferences\" -framework \"sqflite\" -framework \"uni_links2\" -framework \"url_launcher\" -framework \"video_player\"","PACKAGE_CONFIG":"/Users/jonjo/Projects/fritter/.dart_tool/package_config.json","PACKAGE_TYPE":"com.apple.package-type.wrapper.application","PASCAL_STRINGS":"YES","PATH":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin","PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES":"/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Applications/Xcode.app/Contents/Developer/Headers /Applications/Xcode.app/Contents/Developer/SDKs /Applications/Xcode.app/Contents/Developer/Platforms","PBDEVELOPMENTPLIST_PATH":"Runner.app/pbdevelopment.plist","PER_ARCH_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/undefined_arch","PER_VARIANT_OBJECT_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal","PKGINFO_FILE_PATH":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PkgInfo","PKGINFO_PATH":"Runner.app/PkgInfo","PLATFORM_DEVELOPER_APPLICATIONS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications","PLATFORM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin","PLATFORM_DEVELOPER_LIBRARY_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library","PLATFORM_DEVELOPER_SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs","PLATFORM_DEVELOPER_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools","PLATFORM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr","PLATFORM_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform","PLATFORM_DISPLAY_NAME":"iOS Simulator","PLATFORM_FAMILY_NAME":"iOS","PLATFORM_NAME":"iphonesimulator","PLATFORM_PREFERRED_ARCH":"x86_64","PLATFORM_PRODUCT_BUILD_VERSION":"18D46","PLIST_FILE_OUTPUT_FORMAT":"binary","PLUGINS_FOLDER_PATH":"Runner.app/PlugIns","PODS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios","PODS_CONFIGURATION_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","PODS_PODFILE_DIR_PATH":"/Users/jonjo/Projects/fritter/ios/.","PODS_ROOT":"/Users/jonjo/Projects/fritter/ios/Pods","PODS_XCFRAMEWORKS_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates","PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR":"YES","PRECOMP_DESTINATION_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/PrefixHeaders","PRESERVE_DEAD_CODE_INITS_AND_TERMS":"NO","PRIVATE_HEADERS_FOLDER_PATH":"Runner.app/PrivateHeaders","PRODUCT_BUNDLE_IDENTIFIER":"com.jonjomckay.fritter","PRODUCT_BUNDLE_PACKAGE_TYPE":"APPL","PRODUCT_MODULE_NAME":"Runner","PRODUCT_NAME":"Runner","PRODUCT_SETTINGS_PATH":"/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","PRODUCT_TYPE":"com.apple.product-type.application","PROFILING_CODE":"NO","PROJECT":"Runner","PROJECT_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/DerivedSources","PROJECT_DIR":"/Users/jonjo/Projects/fritter/ios","PROJECT_FILE_PATH":"/Users/jonjo/Projects/fritter/ios/Runner.xcodeproj","PROJECT_NAME":"Runner","PROJECT_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build","PROJECT_TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","PUBLIC_HEADERS_FOLDER_PATH":"Runner.app/Headers","RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS":"YES","REMOVE_CVS_FROM_RESOURCES":"YES","REMOVE_GIT_FROM_RESOURCES":"YES","REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES":"YES","REMOVE_HG_FROM_RESOURCES":"YES","REMOVE_SVN_FROM_RESOURCES":"YES","REZ_COLLECTOR_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources","REZ_OBJECTS_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/ResourceManagerResources/Objects","REZ_SEARCH_PATHS":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator ","SCAN_ALL_SOURCE_FILES_FOR_INCLUDES":"NO","SCRIPTS_FOLDER_PATH":"Runner.app/Scripts","SCRIPT_INPUT_FILE_COUNT":"0","SCRIPT_INPUT_FILE_LIST_0":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","SCRIPT_INPUT_FILE_LIST_COUNT":"1","SCRIPT_OUTPUT_FILE_COUNT":"0","SCRIPT_OUTPUT_FILE_LIST_0":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","SCRIPT_OUTPUT_FILE_LIST_COUNT":"1","SDKROOT":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_DIR_iphonesimulator14_4":"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk","SDK_NAME":"iphonesimulator14.4","SDK_NAMES":"iphonesimulator14.4","SDK_PRODUCT_BUILD_VERSION":"18D46","SDK_VERSION":"14.4","SDK_VERSION_ACTUAL":"140400","SDK_VERSION_MAJOR":"140000","SDK_VERSION_MINOR":"140400","SED":"/usr/bin/sed","SEPARATE_STRIP":"NO","SEPARATE_SYMBOL_EDIT":"NO","SET_DIR_MODE_OWNER_GROUP":"YES","SET_FILE_MODE_OWNER_GROUP":"NO","SHALLOW_BUNDLE":"YES","SHARED_DERIVED_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/DerivedSources","SHARED_FRAMEWORKS_FOLDER_PATH":"Runner.app/SharedFrameworks","SHARED_PRECOMPS_DIR":"/Users/jonjo/Projects/fritter/build/ios/SharedPrecompiledHeaders","SHARED_SUPPORT_FOLDER_PATH":"Runner.app/SharedSupport","SKIP_INSTALL":"NO","SOURCE_ROOT":"/Users/jonjo/Projects/fritter/ios","SRCROOT":"/Users/jonjo/Projects/fritter/ios","STRINGS_FILE_OUTPUT_ENCODING":"binary","STRIP_BITCODE_FROM_COPIED_FILES":"NO","STRIP_INSTALLED_PRODUCT":"YES","STRIP_STYLE":"all","STRIP_SWIFT_SYMBOLS":"YES","SUPPORTED_DEVICE_FAMILIES":"1,2","SUPPORTED_PLATFORMS":"iphoneos iphonesimulator","SUPPORTS_TEXT_BASED_API":"NO","SWIFT_OBJC_BRIDGING_HEADER":"Runner/Runner-Bridging-Header.h","SWIFT_OPTIMIZATION_LEVEL":"-Onone","SWIFT_PLATFORM_TARGET_PREFIX":"ios","SWIFT_RESPONSE_FILE_PATH_normal_x86_64":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","SWIFT_VERSION":"5.0","SYMROOT":"/Users/jonjo/Projects/fritter/build/ios","SYSTEM_ADMIN_APPS_DIR":"/Applications/Utilities","SYSTEM_APPS_DIR":"/Applications","SYSTEM_CORE_SERVICES_DIR":"/System/Library/CoreServices","SYSTEM_DEMOS_DIR":"/Applications/Extras","SYSTEM_DEVELOPER_APPS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications","SYSTEM_DEVELOPER_BIN_DIR":"/Applications/Xcode.app/Contents/Developer/usr/bin","SYSTEM_DEVELOPER_DEMOS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities/Built Examples","SYSTEM_DEVELOPER_DIR":"/Applications/Xcode.app/Contents/Developer","SYSTEM_DEVELOPER_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library","SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Graphics Tools","SYSTEM_DEVELOPER_JAVA_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Java Tools","SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Performance Tools","SYSTEM_DEVELOPER_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes","SYSTEM_DEVELOPER_TOOLS":"/Applications/Xcode.app/Contents/Developer/Tools","SYSTEM_DEVELOPER_TOOLS_DOC_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/documentation/DeveloperTools","SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR":"/Applications/Xcode.app/Contents/Developer/ADC Reference Library/releasenotes/DeveloperTools","SYSTEM_DEVELOPER_USR_DIR":"/Applications/Xcode.app/Contents/Developer/usr","SYSTEM_DEVELOPER_UTILITIES_DIR":"/Applications/Xcode.app/Contents/Developer/Applications/Utilities","SYSTEM_DEXT_INSTALL_PATH":"/System/Library/DriverExtensions","SYSTEM_DOCUMENTATION_DIR":"/Library/Documentation","SYSTEM_KEXT_INSTALL_PATH":"/System/Library/Extensions","SYSTEM_LIBRARY_DIR":"/System/Library","TAPI_VERIFY_MODE":"ErrorsOnly","TARGETED_DEVICE_FAMILY":"1,2","TARGETNAME":"Runner","TARGET_BUILD_DIR":"/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator","TARGET_DEVICE_IDENTIFIER":"5530D701-B58B-4A06-9895-3656CEE81905","TARGET_DEVICE_MODEL":"iPod9,1","TARGET_DEVICE_OS_VERSION":"14.4","TARGET_NAME":"Runner","TARGET_TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILES_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_FILE_DIR":"/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build","TEMP_ROOT":"/Users/jonjo/Projects/fritter/build/ios","TEST_FRAMEWORK_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/Developer/Library/Frameworks","TEST_LIBRARY_SEARCH_PATHS":" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib","TOOLCHAINS":"com.apple.dt.toolchain.XcodeDefault","TOOLCHAIN_DIR":"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain","TRACK_WIDGET_CREATION":"true","TREAT_MISSING_BASELINES_AS_TEST_FAILURES":"NO","TREE_SHAKE_ICONS":"false","UID":"501","UNLOCALIZED_RESOURCES_FOLDER_PATH":"Runner.app","UNSTRIPPED_PRODUCT":"NO","USER":"jonjo","USER_APPS_DIR":"/Users/jonjo/Applications","USER_LIBRARY_DIR":"/Users/jonjo/Library","USE_DYNAMIC_NO_PIC":"YES","USE_HEADERMAP":"YES","USE_HEADER_SYMLINKS":"NO","USE_LLVM_TARGET_TRIPLES":"YES","USE_LLVM_TARGET_TRIPLES_FOR_CLANG":"YES","USE_LLVM_TARGET_TRIPLES_FOR_LD":"YES","USE_LLVM_TARGET_TRIPLES_FOR_TAPI":"YES","USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES":"YES","VALIDATE_DEVELOPMENT_ASSET_PATHS":"YES_ERROR","VALIDATE_PRODUCT":"NO","VALIDATE_WORKSPACE":"YES_ERROR","VALID_ARCHS":"arm64 arm64e i386 x86_64","VERBOSE_PBXCP":"NO","VERSIONING_SYSTEM":"apple-generic","VERSIONPLIST_PATH":"Runner.app/version.plist","VERSION_INFO_BUILDER":"jonjo","VERSION_INFO_FILE":"Runner_vers.c","VERSION_INFO_STRING":"\"@(#)PROGRAM:Runner PROJECT:Runner-20210503\"","WRAPPER_EXTENSION":"app","WRAPPER_NAME":"Runner.app","WRAPPER_SUFFIX":".app","WRAP_ASSET_PACKS_IN_SEPARATE_DIRECTORIES":"NO","XCODE_APP_SUPPORT_DIR":"/Applications/Xcode.app/Contents/Developer/Library/Xcode","XCODE_PRODUCT_BUILD_VERSION":"12D4e","XCODE_VERSION_ACTUAL":"1240","XCODE_VERSION_MAJOR":"1200","XCODE_VERSION_MINOR":"1240","XPCSERVICES_FOLDER_PATH":"Runner.app/XPCServices","YACC":"yacc","arch":"undefined_arch","variant":"normal"},"allow-missing-inputs":true,"working-directory":"/Users/jonjo/Projects/fritter/ios","control-enabled":false,"signature":"d6e7428fc10c2e8d2d3274683c9adbfe"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:ProcessInfoPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist /Users/jonjo/Projects/fritter/ios/Runner/Info.plist": {"tool":"info-plist-processor","description":"ProcessInfoPlistFile /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist /Users/jonjo/Projects/fritter/ios/Runner/Info.plist","inputs":["/Users/jonjo/Projects/fritter/ios/Runner/Info.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/LaunchScreen-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Base.lproj/Main-SBPartialInfo.plist","/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/assetcatalog_generated_info.plist","",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app/Info.plist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:RegisterExecutionPolicyException /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"register-execution-policy-exception","description":"RegisterExecutionPolicyException /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","",""],"outputs":[""]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:Touch /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app": {"tool":"shell","description":"Touch /Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","inputs":["/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app","",""],"outputs":[""],"args":["/usr/bin/touch","-c","/Users/jonjo/Projects/fritter/build/ios/Debug-iphonesimulator/Runner.app"],"env":{},"working-directory":"/Users/jonjo/Projects/fritter/ios","signature":"10827ff201d434641da46ac9b2afb04b"} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/DerivedSources/Runner_vers.c"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/InputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-input-files-315f485abc9b454e29e5939f0b907cd0-resolved.xcfilelist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner-OutputFileMap.json"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.SwiftFileList"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/OutputFileList-C575D5638059409AD04966C4-Pods-Runner-frameworks-Debug-output-files-0ab796632b514da4de1b4d0612f4be0c-resolved.xcfilelist"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-non-framework-target-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-all-target-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-generated-files.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-own-target-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner-project-headers.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Runner.hmap"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-1464A7D75E3E0485891E313A.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-3B06AD1E1E4923F5004D2608.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-9740EEB61CF901F6004384FC.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/Script-C575D5638059409AD04966C4.sh"]} + "target-Runner-c5140bbe92fcd312e228d4d6c1d1f78e88a783a885d8b0b3beb2e9f90bde3f49-:Debug:WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml": {"tool":"auxiliary-file","description":"WriteAuxiliaryFile /Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml","inputs":["",""],"outputs":["/Users/jonjo/Projects/fritter/build/ios/Runner.build/Debug-iphonesimulator/Runner.build/all-product-headers.yaml"]} + diff --git a/lib/client.dart b/lib/client.dart new file mode 100644 index 00000000..88f7a6d4 --- /dev/null +++ b/lib/client.dart @@ -0,0 +1,1041 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:dart_twitter_api/src/utils/date_utils.dart'; +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:faker/faker.dart'; +import 'package:ffcache/ffcache.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/profile/profile_model.dart'; +import 'package:quacker/user.dart'; +import 'package:quacker/utils/cache.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:http/http.dart' as http; +import 'package:logging/logging.dart'; +import 'package:quiver/iterables.dart'; + +const Duration _defaultTimeout = Duration(seconds: 30); +final String _bearerToken = String.fromCharCodes( + base64Decode( + 'QmVhcmVyIEFBQUFBQUFBQUFBQUFBQUFBQUFBQVBZWEJBQUFBQUFBQ0xYVU5EZWtNeHFhOGglMkY0MEs0bW9Va0dzb2MlM0RUWWZiREtiVDNqSlBDRVZuTVlxaWxCMjhOSGZPUHFrY2EzcWFBeEdmc3lLQ3Mwd1Jidw==', + ), +); + +class _FritterTwitterClient extends TwitterClient { + static final log = Logger('_FritterTwitterClient'); + + _FritterTwitterClient() : super(consumerKey: '', consumerSecret: '', token: '', secret: ''); + + static Object? _token; + static int _expiresAt = -1; + static int _tokenLimit = -1; + static int _tokenRemaining = -1; + + @override + Future get(Uri uri, {Map? headers, Duration? timeout}) { + return fetch(uri, headers: headers).timeout(timeout ?? _defaultTimeout).then((response) { + if (response.statusCode >= 200 && response.statusCode < 300) { + return response; + } else { + return Future.error(response); + } + }); + } + + static Future getToken() async { + if (_token != null) { + // If we don't have an expiry or limit, it's probably because we haven't made a request yet, so assume they're OK + if (_expiresAt == -1 && _tokenLimit == -1 && _tokenRemaining == -1) { + // TODO: Null safety with concurrent threads + return _token!; + } + + // Check if the token we have hasn't expired yet + if (DateTime.now().millisecondsSinceEpoch < _expiresAt) { + // Check if the token we have still has usages remaining + if (_tokenRemaining < _tokenLimit) { + // TODO: Null safety with concurrent threads + return _token!; + } + } + } + + // Otherwise, fetch a new token + _token = null; + _tokenLimit = -1; + _tokenRemaining = -1; + _expiresAt = -1; + + log.info('Refreshing the Twitter token'); + + var response = await http.post(Uri.parse('https://api.twitter.com/1.1/guest/activate.json'), headers: { + 'authorization': _bearerToken, + }); + + if (response.statusCode == 200) { + var result = jsonDecode(response.body); + if (result.containsKey('guest_token')) { + _token = result['guest_token']; + + return _token!; + } + } + + throw Exception( + 'Unable to refresh the token. The response (${response.statusCode}) from Twitter was: ${response.body}'); + } + + static Future fetch(Uri uri, {Map? headers}) async { + log.info('Fetching $uri'); + + var response = await http.get(uri, headers: { + ...?headers, + 'authorization': _bearerToken, + 'x-guest-token': (await getToken()).toString(), + 'x-twitter-active-user': 'yes', + 'user-agent': faker.internet.userAgent() + }); + + var headerRateLimitReset = response.headers['x-rate-limit-reset']; + var headerRateLimitRemaining = response.headers['x-rate-limit-remaining']; + var headerRateLimitLimit = response.headers['x-rate-limit-limit']; + + if (headerRateLimitReset == null || headerRateLimitRemaining == null || headerRateLimitLimit == null) { + // If the rate limit headers are missing, the endpoint probably doesn't send them back + return response; + } + + // Update our token's rate limit counters + _expiresAt = int.parse(headerRateLimitReset) * 1000; + _tokenRemaining = int.parse(headerRateLimitRemaining); + _tokenLimit = int.parse(headerRateLimitLimit); + + return response; + } +} + +class UnknownProfileResultType implements Exception { + final String type; + final String message; + final String uri; + + UnknownProfileResultType(this.type, this.message, this.uri); + + @override + String toString() { + return 'Unknown profile result type: {type: $type, message: $message, uri: $uri}'; + } +} + +class UnknownProfileUnavailableReason implements Exception { + final String reason; + final String uri; + + UnknownProfileUnavailableReason(this.reason, this.uri); + + @override + String toString() { + return 'Unknown profile unavailable reason: {reason: $reason, uri: $uri}'; + } +} + +class Twitter { + static final TwitterApi _twitterApi = TwitterApi(client: _FritterTwitterClient()); + + static final FFCache _cache = FFCache(); + + static Map defaultParams = { + 'include_profile_interstitial_type': '1', + 'include_blocking': '1', + 'include_blocked_by': '1', + 'include_followed_by': '1', + 'include_mute_edge': '1', + 'include_can_dm': '1', + 'include_can_media_tag': '1', + 'include_ext_has_nft_avatar': '1', + 'include_ext_is_blue_verified': '1', + 'skip_status': '1', + 'cards_platform': 'Web-12', + 'include_cards': '1', + 'include_ext_alt_text': 'true', + 'include_ext_limited_action_results': 'false', + 'include_quote_count': 'true', + 'include_reply_count': '1', + 'tweet_mode': 'extended', + 'include_ext_collab_control': 'true', + 'include_entities': 'true', + 'include_user_entities': 'true', + 'include_ext_media_color': 'true', + 'include_ext_media_availability': 'true', + 'include_ext_sensitive_media_warning': 'true', + 'include_ext_trusted_friends_metadata': 'true', + 'send_error_codes': 'true', + 'simple_quoted_tweet': 'true', + 'pc': '1', + 'spelling_corrections': '1', + 'include_ext_edit_control': 'true', + 'ext': + 'mediaStats,highlightedLabel,hasNftAvatar,voiceInfo,enrichments,superFollowMetadata,unmentionInfo,editControl,collab_control,vibe,' + }; + + static Map gqlFeatures = { + "blue_business_profile_image_shape_enabled": false, + "freedom_of_speech_not_reach_fetch_enabled": false, + "graphql_is_translatable_rweb_tweet_is_translatable_enabled": false, + "interactive_text_enabled": false, + "longform_notetweets_consumption_enabled": true, + "longform_notetweets_richtext_consumption_enabled": true, + "longform_notetweets_rich_text_read_enabled": false, + "responsive_web_edit_tweet_api_enabled": false, + "responsive_web_enhance_cards_enabled": false, + "responsive_web_graphql_exclude_directive_enabled": true, + "responsive_web_graphql_skip_user_profile_image_extensions_enabled": false, + "responsive_web_graphql_timeline_navigation_enabled": false, + "responsive_web_text_conversations_enabled": false, + "responsive_web_twitter_blue_verified_badge_is_enabled": true, + "spaces_2022_h2_clipping": true, + "spaces_2022_h2_spaces_communities": true, + "standardized_nudges_misinfo": false, + "tweet_awards_web_tipping_enabled": false, + "tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": false, + "tweetypie_unmention_optimization_enabled": false, + "verified_phone_label_enabled": false, + "vibe_api_enabled": false, + "view_counts_everywhere_api_enabled": false + }; + + static Future getProfileById(String id) async { + var uri = Uri.https('twitter.com', '/i/api/graphql/Qs44y3K0SXxItjNi6mUFQA/UserByRestId', { + 'variables': jsonEncode({ + 'userId': id, + 'withHighlightedLabel': true, + 'withSafetyModeUserFields': true, + 'withSuperFollowsUserFields': true + }), + 'features': jsonEncode({ + 'responsive_web_graphql_timeline_navigation_enabled': true, + 'responsive_web_twitter_blue_verified_badge_is_enabled': true, + 'verified_phone_label_enabled': false, + }) + }); + + return _getProfile(uri); + } + + static Future getProfileByScreenName(String screenName) async { + var uri = Uri.https('twitter.com', '/i/api/graphql/vG3rchZtwqiwlKgUYCrTRA/UserByScreenName', { + 'variables': jsonEncode({ + 'screen_name': screenName, + 'withHighlightedLabel': true, + 'withSafetyModeUserFields': true, + 'withSuperFollowsUserFields': true + }), + 'features': jsonEncode({'responsive_web_graphql_timeline_navigation_enabled': false}) + }); + + return _getProfile(uri); + } + + static Future _getProfile(Uri uri) async { + var response = await _twitterApi.client.get(uri); + var content = jsonDecode(response.body) as Map; + + var hasErrors = content.containsKey('errors'); + if (hasErrors && content['errors'] != null) { + var errors = List.from(content['errors']); + if (errors.isEmpty) { + throw TwitterError(code: 0, message: 'Unknown error', uri: uri.toString()); + } else { + throw TwitterError(code: errors.first['code'], message: errors.first['message'], uri: uri.toString()); + } + } + + var result = content['data']?['user']?['result']; + if (result == null) { + throw TwitterError(uri: uri.toString(), code: 50, message: L10n.current.user_not_found); + } + + var resultType = result['__typename']; + if (resultType != null) { + switch (resultType) { + case 'UserUnavailable': + var code = result['reason']; + if (code == 'Suspended') { + throw TwitterError(code: 63, message: result['reason'], uri: uri.toString()); + } else { + throw TwitterError(code: -1, message: result['reason'], uri: uri.toString()); + } + case 'User': + // This means everything's fine + break; + default: + // an error happened + break; + } + } + + var user = UserWithExtra.fromJson( + {...result['legacy'], 'id_str': result['rest_id'], 'ext_is_blue_verified': result['is_blue_verified']}); + var pins = List.from(result['legacy']['pinned_tweet_ids_str']); + + return Profile(user, pins); + } + + static Future getProfileFollows(String screenName, String type, {int? cursor, int? count = 200}) async { + var response = type == 'following' + ? await _twitterApi.userService + .friendsList(screenName: screenName, cursor: cursor, count: count, skipStatus: true) + : await _twitterApi.userService + .followersList(screenName: screenName, cursor: cursor, count: count, skipStatus: true); + + return Follows( + cursorBottom: int.parse(response.nextCursorStr ?? '-1'), + cursorTop: int.parse(response.previousCursorStr ?? '-1'), + users: response.users?.map((e) => UserWithExtra.fromJson(e.toJson())).toList() ?? []); + } + + static List createTweetChains(List addEntries) { + List replies = []; + + for (var entry in addEntries) { + var entryId = entry['entryId'] as String; + if (entryId.startsWith('tweet-')) { + var result = entry['content']['itemContent']['tweet_results']?['result']; + + if (result != null) { + replies + .add(TweetChain(id: result['rest_id'], tweets: [TweetWithCard.fromGraphqlJson(result)], isPinned: false)); + } else { + replies.add(TweetChain(id: entryId.substring(6), tweets: [TweetWithCard.tombstone({})], isPinned: false)); + } + } + + if (entryId.startsWith('cursor-bottom') || entryId.startsWith('cursor-showMore')) { + // TODO: Use as the "next page" cursor + } + + if (entryId.startsWith('conversationthread')) { + List tweets = []; + + // TODO: This is missing tombstone support + for (var item in entry['content']['items']) { + var itemType = item['item']?['itemContent']?['itemType']; + if (itemType == 'TimelineTweet') { + if (item['item']['itemContent']['tweet_results']?['result'] != null) { + tweets.add(TweetWithCard.fromGraphqlJson(item['item']['itemContent']['tweet_results']['result'])); + } else { + tweets.add(TweetWithCard.tombstone({})); + } + } + } + + // TODO: There must be a better way of getting the conversation ID + replies.add(TweetChain(id: entryId.replaceFirst('conversationthread-', ''), tweets: tweets, isPinned: false)); + } + } + + return replies; + } + + static Future getTweet(String id, {String? cursor}) async { + var variables = { + 'focalTweetId': id, + 'referrer': 'tweet', + 'with_rux_injections': false, + 'includePromotedContent': true, + 'withCommunity': true, + 'withQuickPromoteEligibilityTweetFields': true, + 'withBirdwatchNotes': false, + 'withVoice': true, + 'withV2Timeline': true + }; + + if (cursor != null) { + variables['cursor'] = cursor; + } + + var response = + await _twitterApi.client.get(Uri.https('twitter.com', '/i/api/graphql/BbCrSoXIR7z93lLCVFlQ2Q/TweetDetail', { + 'variables': jsonEncode(variables), + 'features': jsonEncode(gqlFeatures), + })); + + var result = json.decode(response.body); + + var instructions = List.from(result?['data']?['threaded_conversation_with_injections_v2']?['instructions'] ?? []); + if (instructions.isEmpty) { + return TweetStatus(chains: [], cursorBottom: null, cursorTop: null); + } + + var addEntriesInstructions = instructions.firstWhereOrNull((e) => e['type'] == 'TimelineAddEntries'); + if (addEntriesInstructions == null) { + return TweetStatus(chains: [], cursorBottom: null, cursorTop: null); + } + + var addEntries = List.from(addEntriesInstructions['entries']); + var repEntries = List.from(instructions.where((e) => e['type'] == 'TimelineReplaceEntry')); + + // TODO: Could this use createUnconversationedChains at some point? + var chains = createTweetChains(addEntries); + + String? cursorBottom = getCursor(addEntries, repEntries, 'cursor-bottom', 'Bottom'); + String? cursorTop = getCursor(addEntries, repEntries, 'cursor-top', 'Top'); + + return TweetStatus(chains: chains, cursorBottom: cursorBottom, cursorTop: cursorTop); + } + + static Future searchTweets(String query, bool includeReplies, {int limit = 25, String? cursor}) async { + var variables = { + "rawQuery": query, + "count": limit.toString(), + "product": 'Latest', + "withDownvotePerspective": false, + "withReactionsMetadata": false, + "withReactionsPerspective": false + }; + + if (cursor != null) { + variables['cursor'] = cursor; + } + + var uri = Uri.https('twitter.com', '/i/api/graphql/gkjsKepM6gl_HmFWoWKfgg/SearchTimeline', + {'variables': jsonEncode(variables), 'features': jsonEncode(gqlFeatures)}); + + var response = await _twitterApi.client.get(uri); + var result = json.decode(response.body); + + var timeline = result?['data']?['search_by_raw_query']?['search_timeline']; + if (timeline == null) { + return TweetStatus(chains: [], cursorBottom: null, cursorTop: null); + } + + return createUnconversationedChainsGraphql(timeline, 'tweet', [], true, includeReplies); + } + + static Future> searchUsers(String query, {int limit = 25, String? maxId, String? cursor}) async { + var queryParameters = { + ...defaultParams, + 'count': limit.toString(), + 'max_id': maxId, + 'q': query, + 'pc': '1', + 'spelling_corrections': '1', + 'result_filter': 'user' + }; + + if (cursor != null) { + queryParameters['cursor'] = cursor; + } + + var response = + await _twitterApi.client.get(Uri.https('api.twitter.com', '/1.1/users/search.json', queryParameters)); + + List result = json.decode(response.body); + + if (result.isEmpty) { + return []; + } + + return result.map((e) => UserWithExtra.fromJson(e)).toList(); + } + + static Future> getTrendLocations() async { + var result = await _cache.getOrCreateAsJSON('trends.locations', const Duration(days: 2), () async { + var locations = await _twitterApi.trendsService.available(); + + return jsonEncode(locations.map((e) => e.toJson()).toList()); + }); + + return List.from(jsonDecode(result)).map((e) => TrendLocation.fromJson(e)).toList(growable: false); + } + + static Future> getTrends(int location) async { + var result = await _cache.getOrCreateAsJSON('trends.$location', const Duration(minutes: 2), () async { + var trends = await _twitterApi.trendsService.place(id: location); + + return jsonEncode(trends.map((e) => e.toJson()).toList()); + }); + + return List.from(jsonDecode(result)).map((e) => Trends.fromJson(e)).toList(growable: false); + } + + static Future getTweets(String id, String type, List pinnedTweets, + {int count = 10, String? cursor, bool includeReplies = true, bool includeRetweets = true}) async { + var query = { + ...defaultParams, + 'include_tweet_replies': includeReplies ? '1' : '0', + 'include_want_retweets': includeRetweets ? '1' : '0', // This may not actually do anything + 'count': count.toString(), + }; + + if (cursor != null) { + query['cursor'] = cursor; + } + + var response = await _twitterApi.client.get(Uri.https('api.twitter.com', '/2/timeline/$type/$id.json', query)); + + var result = json.decode(response.body); + + return createUnconversationedChains(result, 'tweet', pinnedTweets, includeReplies == false, includeReplies); + } + + static String? getCursor(List addEntries, List repEntries, String legacyType, String type) { + String? cursor; + + Map? cursorEntry; + + var isLegacyCursor = addEntries.any((element) => element['entryId'].startsWith('cursor')); + if (isLegacyCursor) { + cursorEntry = addEntries.firstWhere((e) => e['entryId'].contains(legacyType), orElse: () => null); + } else { + cursorEntry = addEntries + .where((e) => e['entryId'].startsWith('sq-C')) + .firstWhere((e) => e['content']['operation']['cursor']['cursorType'] == type, orElse: () => null); + } + + if (cursorEntry != null) { + var content = cursorEntry['content']; + if (content.containsKey('value')) { + cursor = content['value']; + } else if (content.containsKey('operation')) { + cursor = content['operation']['cursor']['value']; + } else { + cursor = content['itemContent']['value']; + } + } else { + // Look for a "replaceEntry" with the cursor + var cursorReplaceEntry = repEntries.firstWhere( + (e) => e.containsKey('replaceEntry') + ? e['replaceEntry']['entryIdToReplace'].contains(type) + : e['entry']['content']['cursorType'].contains(type), + orElse: () => null); + + if (cursorReplaceEntry != null) { + cursor = cursorReplaceEntry.containsKey('replaceEntry') + ? cursorReplaceEntry['replaceEntry']['entry']['content']['operation']['cursor']['value'] + : cursorReplaceEntry['entry']['content']['value']; + } + } + + return cursor; + } + + static TweetStatus createUnconversationedChainsGraphql(Map result, String tweetIndicator, + List pinnedTweets, bool mapToThreads, bool includeReplies) { + var instructions = List.from(result['timeline']['instructions']); + if (instructions.isEmpty || !instructions.any((e) => e['type'] == 'TimelineAddEntries')) { + return TweetStatus(chains: [], cursorBottom: null, cursorTop: null); + } + + var addEntries = List.from(instructions.firstWhere((e) => e['type'] == 'TimelineAddEntries')['entries']); + var repEntries = List.from(instructions.where((e) => e['type'] == 'TimelineReplaceEntry')); + + String? cursorBottom = getCursor(addEntries, repEntries, 'cursor-bottom', 'Bottom'); + String? cursorTop = getCursor(addEntries, repEntries, 'cursor-top', 'Top'); + + var tweets = _createTweetsGraphql(tweetIndicator, addEntries, includeReplies); + + // First, get all the IDs of the tweets we need to display + var tweetEntries = addEntries + .where((e) => e['entryId'].contains(tweetIndicator)) + .sorted((a, b) => b['sortIndex'].compareTo(a['sortIndex'])) + .map((e) => e['content']['itemContent']['tweet_results']['result']['rest_id']) + .cast() + .toList(); + + Map> conversations = + tweets.values.where((e) => tweetEntries.contains(e.idStr)).groupBy((e) { + // TODO: I don't think a flag is the right way to handle this + if (mapToThreads) { + // Then group the tweets-to-display by their conversation ID + return e.conversationIdStr; + } + + return e.idStr; + }).cast>(); + + List chains = []; + + // Order all the conversations by newest first (assuming the ID is an incrementing key), and create a chain from them + for (var conversation in conversations.entries.sorted((a, b) => b.key.compareTo(a.key))) { + var chainTweets = conversation.value.sorted((a, b) => a.idStr!.compareTo(b.idStr!)).toList(); + + chains.add(TweetChain(id: conversation.key, tweets: chainTweets, isPinned: false)); + } + + // If we want to show pinned tweets, add them before the chains that we already have + if (pinnedTweets.isNotEmpty) { + for (var id in pinnedTweets) { + // It's possible for the pinned tweet to either not exist, or not be returned, so handle that + if (tweets.containsKey(id)) { + chains.insert(0, TweetChain(id: id, tweets: [tweets[id]!], isPinned: true)); + } + } + } + + return TweetStatus(chains: chains, cursorBottom: cursorBottom, cursorTop: cursorTop); + } + + static TweetStatus createUnconversationedChains(Map result, String tweetIndicator, + List pinnedTweets, bool mapToThreads, bool includeReplies) { + var instructions = List.from(result['timeline']['instructions']); + if (instructions.isEmpty || !instructions.any((e) => e.containsKey('addEntries'))) { + return TweetStatus(chains: [], cursorBottom: null, cursorTop: null); + } + + var addEntries = List.from(instructions.firstWhere((e) => e.containsKey('addEntries'))['addEntries']['entries']); + var repEntries = List.from(instructions.where((e) => e.containsKey('replaceEntry'))); + + String? cursorBottom = getCursor(addEntries, repEntries, 'cursor-bottom', 'Bottom'); + String? cursorTop = getCursor(addEntries, repEntries, 'cursor-top', 'Top'); + + var tweets = _createTweets(tweetIndicator, result, includeReplies); + + // First, get all the IDs of the tweets we need to display + var tweetEntries = addEntries + .where((e) => e['entryId'].contains(tweetIndicator)) + .sorted((a, b) => b['sortIndex'].compareTo(a['sortIndex'])) + .map((e) => e['content']['item']['content']['tweet']['id']) + .cast() + .toList(); + + Map> conversations = + tweets.values.where((e) => tweetEntries.contains(e.idStr)).groupBy((e) { + // TODO: I don't think a flag is the right way to handle this + if (mapToThreads) { + // Then group the tweets-to-display by their conversation ID + return e.conversationIdStr; + } + + return e.idStr; + }).cast>(); + + List chains = []; + + // Order all the conversations by newest first (assuming the ID is an incrementing key), and create a chain from them + for (var conversation in conversations.entries.sorted((a, b) => b.key.compareTo(a.key))) { + var chainTweets = conversation.value.sorted((a, b) => a.idStr!.compareTo(b.idStr!)).toList(); + + chains.add(TweetChain(id: conversation.key, tweets: chainTweets, isPinned: false)); + } + + // If we want to show pinned tweets, add them before the chains that we already have + if (pinnedTweets.isNotEmpty) { + for (var id in pinnedTweets) { + // It's possible for the pinned tweet to either not exist, or not be returned, so handle that + if (tweets.containsKey(id)) { + chains.insert(0, TweetChain(id: id, tweets: [tweets[id]!], isPinned: true)); + } + } + } + + return TweetStatus(chains: chains, cursorBottom: cursorBottom, cursorTop: cursorTop); + } + + static Future> getUsers(Iterable ids) async { + // Split into groups of 100, as the API only supports that many at a time + List>> futures = []; + + var groups = partition(ids, 100); + for (var group in groups) { + futures.add(_getUsersPage(group)); + } + + return (await Future.wait(futures)).expand((element) => element).toList(); + } + + static Future> _getUsersPage(Iterable ids) async { + var response = await _twitterApi.client.get(Uri.https('api.twitter.com', '/1.1/users/lookup.json', { + 'user_id': ids.join(','), + })); + + var result = json.decode(response.body); + + return List.from(result).map((e) => UserWithExtra.fromJson(e)).toList(growable: false); + } + + static Map _createTweetsGraphql( + String entryPrefix, List allTweets, bool includeReplies) { + bool includeTweet(dynamic t) { + // Exclude any items that aren't tweets + if (!t['entryId'].startsWith(entryPrefix)) { + return false; + } + + if (includeReplies) { + return true; + } + + // TODO + return t['in_reply_to_status_id'] == null || t['in_reply_to_user_id'] == null; + } + + var filteredTweets = allTweets.where(includeTweet); + + Map> cards = {}; + + var globalTweets = Map.fromEntries(filteredTweets.map((e) { + var elm = e['content']['itemContent']['tweet_results']['result']; + if (elm['card']?['legacy'] != null) { + Map card = elm['card']['legacy']; + List bindingValuesList = card['binding_values'] as List; + Map bindingValues = bindingValuesList.fold({}, (prev, elm) { prev[elm['key']] = elm['value']; return prev; }); + card['binding_values'] = bindingValues; + cards[elm['rest_id'] as String] = card; + } + return MapEntry(elm['rest_id'] as String, elm['legacy']); + })); + + Map blueCheckUsers = {}; + + var globalUsers = Map.fromEntries(filteredTweets.map((e) { + var elm = e['content']['itemContent']['tweet_results']['result']['core']['user_results']['result']; + blueCheckUsers[elm['rest_id'] as String] = elm['is_blue_verified']; + return MapEntry(elm['rest_id'] as String, elm['legacy']); + })); + + Map quotedStatusNotesTweets = {}; + + quotedStatusNotesTweets = filteredTweets.fold({}, (prev, e) { + var result = e['content']['itemContent']['tweet_results']['result']; + var restId = result['rest_id']; + var quotedResult = result['quoted_status_result']?['result']; + if (quotedResult != null) { + prev[restId] = {}; + prev[restId]!['quotedResult'] = quotedResult; + } + var noteResult = result['note_tweet']?['note_tweet_results']?['result']; + if (noteResult != null) { + if (prev[restId] == null) { + prev[restId] = {}; + } + prev[restId]!['noteText'] = noteResult['text']; + prev[restId]!['noteEntities'] = Entities.fromJson(noteResult['entity_set']); + } + return prev; + }); + + var tweets = globalTweets.values.map((e) => TweetWithCard.fromCardJson(globalTweets, globalUsers, e)).toList(); + + for (var twt in tweets) { + if (twt.user?.idStr != null) { + twt.user!.verified = blueCheckUsers[twt.user!.idStr]; + } + twt.card ??= cards[twt.idStr]; + if (twt.quotedStatus == null && quotedStatusNotesTweets[twt.idStr]?['quotedResult'] != null) { + TweetWithCard twtCard = TweetWithCard.fromGraphqlJson(quotedStatusNotesTweets[twt.idStr]!['quotedResult'] as Map); + twt.quotedStatus = twtCard; + twt.quotedStatusWithCard = twtCard; + } + twt.noteText ??= quotedStatusNotesTweets[twt.idStr]?['noteText']; + if (quotedStatusNotesTweets[twt.idStr]?['noteEntities'] != null) { + Entities noteEntities = quotedStatusNotesTweets[twt.idStr]!['noteEntities']; + twt.entities = twt.entities == null ? noteEntities : TweetWithCard.copyEntities(noteEntities, twt.entities!); + twt.extendedEntities = twt.extendedEntities == null ? noteEntities : TweetWithCard.copyEntities(noteEntities, twt.extendedEntities!); + } + } + + return {for (var e in tweets) e.idStr!: e}; } + + static Map _createTweets( + String entryPrefix, Map result, bool includeReplies) { + var globalTweets = result['globalObjects']['tweets'] as Map; + var globalUsers = result['globalObjects']['users']; + + bool includeTweet(dynamic t) { + if (includeReplies) { + return true; + } + + return t['in_reply_to_status_id'] == null || t['in_reply_to_user_id'] == null; + } + + var tweets = globalTweets.values + .where(includeTweet) + .map((e) => TweetWithCard.fromCardJson(globalTweets, globalUsers, e)) + .toList(); + + return {for (var e in tweets) e.idStr!: e}; + } + + static Future> getBroadcastDetails(String key) async { + var response = await _twitterApi.client.get(Uri.https('twitter.com', '/i/api/1.1/live_video_stream/status/$key')); + + return json.decode(response.body); + } +} + +class TweetWithCard extends Tweet { + String? noteText; + Map? card; + String? conversationIdStr; + TweetWithCard? quotedStatusWithCard; + TweetWithCard? retweetedStatusWithCard; + bool? isTombstone; + + TweetWithCard(); + + @override + Map toJson() { + var json = super.toJson(); + json['card'] = card; + json['conversationIdStr'] = conversationIdStr; + json['quotedStatusWithCard'] = quotedStatusWithCard?.toJson(); + json['retweetedStatusWithCard'] = retweetedStatusWithCard?.toJson(); + json['isTombstone'] = isTombstone; + + return json; + } + + factory TweetWithCard.tombstone(dynamic e) { + var tweetWithCard = TweetWithCard(); + tweetWithCard.idStr = ''; + tweetWithCard.isTombstone = true; + tweetWithCard.text = ((e['richText']?['text'] ?? e['text'] ?? L10n.current.this_tweet_is_unavailable) as String) + .replaceFirst(' Learn more', ''); + + return tweetWithCard; + } + + factory TweetWithCard.fromJson(Map e) { + var tweet = Tweet.fromJson(e); + + var tweetWithCard = TweetWithCard(); + tweetWithCard.card = e['card']; + tweetWithCard.conversationIdStr = e['conversationIdStr']; + tweetWithCard.createdAt = tweet.createdAt; + tweetWithCard.entities = tweet.entities; + tweetWithCard.displayTextRange = tweet.displayTextRange; + tweetWithCard.extendedEntities = tweet.extendedEntities; + tweetWithCard.favorited = tweet.favorited; + tweetWithCard.favoriteCount = tweet.favoriteCount; + tweetWithCard.fullText = tweet.fullText; + tweetWithCard.idStr = tweet.idStr; + tweetWithCard.inReplyToScreenName = tweet.inReplyToScreenName; + tweetWithCard.inReplyToStatusIdStr = tweet.inReplyToStatusIdStr; + tweetWithCard.inReplyToUserIdStr = tweet.inReplyToUserIdStr; + tweetWithCard.isQuoteStatus = tweet.isQuoteStatus; + tweetWithCard.isTombstone = e['is_tombstone']; + tweetWithCard.lang = tweet.lang; + tweetWithCard.quoteCount = tweet.quoteCount; + tweetWithCard.quotedStatusIdStr = tweet.quotedStatusIdStr; + tweetWithCard.quotedStatusPermalink = tweet.quotedStatusPermalink; + tweetWithCard.quotedStatusWithCard = + e['quotedStatusWithCard'] == null ? null : TweetWithCard.fromJson(e['quotedStatusWithCard']); + tweetWithCard.replyCount = tweet.replyCount; + tweetWithCard.retweetCount = tweet.retweetCount; + tweetWithCard.retweeted = tweet.retweeted; + tweetWithCard.retweetedStatus = tweet.retweetedStatus; + tweetWithCard.retweetedStatusWithCard = + e['retweetedStatusWithCard'] == null ? null : TweetWithCard.fromJson(e['retweetedStatusWithCard']); + tweetWithCard.source = tweet.source; + tweetWithCard.text = tweet.text; + tweetWithCard.user = tweet.user; + tweetWithCard.coordinates = tweet.coordinates; + tweetWithCard.truncated = tweet.truncated; + tweetWithCard.place = tweet.place; + tweetWithCard.possiblySensitive = tweet.possiblySensitive; + tweetWithCard.possiblySensitiveAppealable = tweet.possiblySensitiveAppealable; + + return tweetWithCard; + } + + factory TweetWithCard.fromGraphqlJson(Map result) { + var retweetedStatus = result['retweeted_status_result'] == null + ? null + : TweetWithCard.fromGraphqlJson(result['retweeted_status_result']['result']); + var quotedStatus = result['quoted_status_result'] == null + ? null + : TweetWithCard.fromGraphqlJson(result['quoted_status_result']['result']); + var resCore = result['core']?['user_results']?['result']; + var user = resCore?['legacy'] == null + ? null + : UserWithExtra.fromJson( + {...resCore['legacy'], 'id_str': resCore['rest_id'], 'ext_is_blue_verified': resCore['is_blue_verified']}); + + String? noteText; + Entities? noteEntities; + + var noteResult = result['note_tweet']?['note_tweet_results']?['result']; + if (noteResult != null) { + noteText = noteResult['text']; + noteEntities = Entities.fromJson(noteResult['entity_set']); + } + + TweetWithCard tweet = TweetWithCard.fromData(result['legacy'], noteText, noteEntities, user, retweetedStatus, quotedStatus); + if (tweet.card == null && result['card']?['legacy'] != null) { + tweet.card = result['card']['legacy']; + List bindingValuesList = tweet.card!['binding_values'] as List; + Map bindingValues = bindingValuesList.fold({}, (prev, elm) { prev[elm['key']] = elm['value']; return prev; }); + tweet.card!['binding_values'] = bindingValues; + } + return tweet; + } + + factory TweetWithCard.fromCardJson(Map tweets, Map users, Map e) { var user = e['user_id_str'] == null ? null : UserWithExtra.fromJson(users[e['user_id_str']]); + + var retweetedStatus = e['retweeted_status_id_str'] == null + ? null + : TweetWithCard.fromCardJson(tweets, users, tweets[e['retweeted_status_id_str']]); + + // Some quotes aren't returned, even though we're given their ID, so double check and don't fail with a null value + TweetWithCard? quotedStatus; + var quoteId = e['quoted_status_id_str']; + if (quoteId != null && tweets[quoteId] != null) { + quotedStatus = TweetWithCard.fromCardJson(tweets, users, tweets[quoteId]); + } + + return TweetWithCard.fromData(e, null, null, user, retweetedStatus, quotedStatus); + } + + factory TweetWithCard.fromData(Map e, String? noteText, Entities? noteEntities, UserWithExtra? user, + TweetWithCard? retweetedStatus, TweetWithCard? quotedStatus) { + TweetWithCard tweet = TweetWithCard(); + tweet.card = e['card']; + tweet.conversationIdStr = e['conversation_id_str']; + tweet.createdAt = convertTwitterDateTime(e['created_at']); + tweet.entities = e['entities'] == null ? null : Entities.fromJson(e['entities']); + tweet.extendedEntities = e['extended_entities'] == null ? null : Entities.fromJson(e['extended_entities']); + tweet.favorited = e['favorited'] as bool?; + tweet.favoriteCount = e['favorite_count'] as int?; + tweet.fullText = e['full_text'] as String?; + tweet.idStr = e['id_str'] as String?; + tweet.inReplyToScreenName = e['in_reply_to_screen_name'] as String?; + tweet.inReplyToStatusIdStr = e['in_reply_to_status_id_str'] as String?; + tweet.inReplyToUserIdStr = e['in_reply_to_user_id_str'] as String?; + tweet.isQuoteStatus = e['is_quote_status'] as bool?; + tweet.isTombstone = e['is_tombstone'] as bool?; + tweet.lang = e['lang'] as String?; + tweet.possiblySensitive = e['possibly_sensitive'] as bool?; + tweet.quoteCount = e['quote_count'] as int?; + tweet.quotedStatusIdStr = e['quoted_status_id_str'] as String?; + tweet.quotedStatusPermalink = + e['quoted_status_permalink'] == null ? null : QuotedStatusPermalink.fromJson(e['quoted_status_permalink']); + tweet.replyCount = e['reply_count'] as int?; + tweet.retweetCount = e['retweet_count'] as int?; + tweet.retweeted = e['retweeted'] as bool?; + tweet.source = e['source'] as String?; + tweet.text = e['text'] ?? e['full_text'] as String?; + tweet.user = user; + + if (tweet.user != null) { + tweet.user!.idStr = e['user_id_str']; + } + + tweet.retweetedStatus = retweetedStatus; + tweet.retweetedStatusWithCard = retweetedStatus; + tweet.quotedStatus = quotedStatus; + tweet.quotedStatusWithCard = quotedStatus; + + tweet.displayTextRange = (e['display_text_range'] as List?)?.map((e) => e as int).toList(); + + // TODO + tweet.coordinates = null; + tweet.truncated = null; + tweet.place = null; + tweet.possiblySensitiveAppealable = null; + + tweet.noteText = noteText; + if (noteEntities != null) { + tweet.entities = tweet.entities == null ? noteEntities : copyEntities(noteEntities, tweet.entities!); + tweet.extendedEntities = + tweet.extendedEntities == null ? noteEntities : copyEntities(noteEntities, tweet.extendedEntities!); + } + + return tweet; + } + + static Entities copyEntities(Entities src, Entities trg) { + if (src.media != null) { + trg.media = src.media; + } + if (src.urls != null) { + trg.urls = src.urls; + } + if (src.userMentions != null) { + trg.userMentions = src.userMentions; + } + if (src.hashtags != null) { + trg.hashtags = src.hashtags; + } + if (src.symbols != null) { + trg.symbols = src.symbols; + } + if (src.polls != null) { + trg.polls = src.polls; + } + return trg; + } +} + +class TweetChain { + final String id; + final List tweets; + final bool isPinned; + + TweetChain({required this.id, required this.tweets, required this.isPinned}); + + factory TweetChain.fromJson(Map e) { + var tweets = List.from(e['tweets']).map((e) => TweetWithCard.fromJson(e)).toList(); + + return TweetChain(id: e['id'], tweets: tweets, isPinned: e['isPinned']); + } + + Map toJson() { + return {'id': id, 'tweets': tweets.map((e) => e.toJson()).toList(), 'isPinned': isPinned}; + } +} + +class Follows { + final int? cursorBottom; + final int? cursorTop; + final List users; + + Follows({required this.cursorBottom, required this.cursorTop, required this.users}); +} + +class TweetStatus { + // final TweetChain after; + // final TweetChain before; + final String? cursorBottom; + final String? cursorTop; + final List chains; + + TweetStatus({required this.chains, required this.cursorBottom, required this.cursorTop}); +} + +class TwitterError { + final String uri; + final int code; + final String message; + + TwitterError({required this.uri, required this.code, required this.message}); + + @override + String toString() { + return 'TwitterError{code: $code, message: $message, url: $uri}'; + } +} + +class SearchHasNoTimelineException { + final String? query; + + SearchHasNoTimelineException(this.query); + + @override + String toString() { + return 'The search has no timeline {query: $query}'; + } +} + +class UnknownTimelineItemType implements Exception { + final String type; + final String entryId; + + UnknownTimelineItemType(this.type, this.entryId); + + @override + String toString() { + return 'Unknown timeline item type: {type: $type, entryId: $entryId}'; + } +} diff --git a/lib/constants.dart b/lib/constants.dart new file mode 100644 index 00000000..eca00724 --- /dev/null +++ b/lib/constants.dart @@ -0,0 +1,51 @@ +const optionWizardCompleted = 'option.wizard_completed'; + +const optionDisableScreenshots = 'disable_screenshots'; + +const optionErrorsEnabled = 'errors._enabled'; + +const optionHelloLastBuild = 'hello.last_build'; + +const optionHomePages = 'home.pages'; +const optionHomeInitialTab = 'home.initial_tab'; + +const optionMediaSize = 'media.size'; +const optionMediaDefaultMute = 'media.mute'; + +const optionDownloadType = 'download.type'; +const optionDownloadPath = 'download.path'; + +const optionDownloadTypeDirectory = 'directory'; +const optionDownloadTypeAsk = 'ask'; + +const optionLocale = 'locale'; +const optionLocaleDefault = 'system'; + +const optionShouldCheckForUpdates = 'should_check_for_updates'; +const optionShareBaseUrl = 'share_base_url'; + +const optionSubscriptionGroupsOrderByAscending = 'subscription_groups.order_by.ascending'; +const optionSubscriptionGroupsOrderByField = 'subscription_groups.order_by.field'; +const optionSubscriptionOrderByAscending = 'subscription.order_by.ascending'; +const optionSubscriptionOrderByField = 'subscription.order_by.field'; + +const optionThemeMode = 'theme.mode'; +const optionThemeTrueBlack = 'theme.true_black'; +const optionThemeMaterial3 = 'theme.material3'; +const optionThemeColorScheme = 'theme.color_scheme'; + +const optionTweetsHideSensitive = 'tweets.hide_sensitive'; + +const optionUserTrendsLocations = 'trends.locations'; + +const optionNonConfirmationBiasMode = 'other.improve_non_confirmation_bias'; + +const routeHome = '/'; +const routeGroup = '/group'; +const routeProfile = '/profile'; +const routeSearch = '/search'; +const routeSettings = '/settings'; +const routeSettingsExport = '/settings/export'; +const routeSettingsHome = '/settings/home'; +const routeStatus = '/status'; +const routeSubscriptionsImport = '/subscriptions/import'; diff --git a/lib/database/entities.dart b/lib/database/entities.dart new file mode 100644 index 00000000..c996961b --- /dev/null +++ b/lib/database/entities.dart @@ -0,0 +1,212 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/user.dart'; +import 'package:intl/intl.dart'; + +final DateFormat sqliteDateFormat = DateFormat('yyyy-MM-dd hh:mm:ss'); + +mixin ToMappable { + Map toMap(); +} + +class SavedTweet with ToMappable { + final String id; + final String? user; + final String? content; + + SavedTweet({required this.id, required this.user, required this.content}); + + factory SavedTweet.fromMap(Map map) { + return SavedTweet(id: map['id'] as String, user: map['user_id'] as String?, content: map['content'] as String?); + } + + @override + Map toMap() { + return {'id': id, 'content': content, 'user_id': user}; + } +} + +abstract class Subscription with ToMappable { + final String id; + final String screenName; + final String name; + final String? profileImageUrlHttps; + final bool verified; + final DateTime createdAt; + + Subscription( + {required this.id, + required this.screenName, + required this.name, + required this.profileImageUrlHttps, + required this.verified, + required this.createdAt}); +} + +class SearchSubscription extends Subscription { + SearchSubscription({required super.id, required super.createdAt}) + : super(name: id, screenName: id, verified: false, profileImageUrlHttps: null); + + factory SearchSubscription.fromMap(Map map) { + return SearchSubscription(id: map['id'] as String, createdAt: DateTime.parse(map['created_at'] as String)); + } + + @override + bool operator ==(Object other) => + identical(this, other) || other is SearchSubscription && runtimeType == other.runtimeType && id == other.id; + + @override + int get hashCode => id.hashCode; + + @override + Map toMap() { + // TODO: Created at date format + return {'id': id, 'created_at': sqliteDateFormat.format(createdAt)}; + } +} + +class UserSubscription extends Subscription { + UserSubscription( + {required super.id, + required super.screenName, + required super.name, + required super.profileImageUrlHttps, + required super.verified, + required super.createdAt}); + + factory UserSubscription.fromMap(Map map) { + var verified = map['verified'] is int; + var createdAt = map['created_at'] == null ? DateTime.now() : DateTime.parse(map['created_at'] as String); + + return UserSubscription( + id: map['id'] as String, + screenName: map['screen_name'] as String, + name: map['name'] as String, + profileImageUrlHttps: map['profile_image_url_https'] as String?, + verified: verified ? map['verified'] == 1 : false, + createdAt: createdAt); + } + + factory UserSubscription.fromUser(UserWithExtra user) { + return UserSubscription( + id: user.idStr!, + screenName: user.screenName!, + name: user.name!, + profileImageUrlHttps: user.profileImageUrlHttps, + verified: user.verified!, + createdAt: user.createdAt!); + } + + @override + bool operator ==(Object other) => + identical(this, other) || other is UserSubscription && runtimeType == other.runtimeType && id == other.id; + + @override + int get hashCode => id.hashCode; + + @override + Map toMap() { + return { + 'id': id, + 'screen_name': screenName, + 'name': name, + 'profile_image_url_https': profileImageUrlHttps, + 'verified': verified ? 1 : 0, + 'created_at': sqliteDateFormat.format(createdAt) + }; + } + + UserWithExtra toUser() { + return UserWithExtra.fromJson({ + 'id_str': id, + 'screen_name': screenName, + 'name': name, + 'profile_image_url_https': profileImageUrlHttps, + 'verified': verified + }); + } +} + +class SubscriptionGroup with ToMappable { + final String id; + final String name; + final String icon; + final Color? color; + final int numberOfMembers; + final DateTime createdAt; + + IconData get iconData => deserializeIconData(icon); + + SubscriptionGroup( + {required this.id, + required this.name, + required this.icon, + required this.color, + required this.numberOfMembers, + required this.createdAt}); + + factory SubscriptionGroup.fromMap(Map json) { + // This is here to handle imports of data from before v2.15.0 + var icon = json['icon'] as String?; + if (icon == null || icon == 'rss' || icon == '') { + icon = defaultGroupIcon; + } + + return SubscriptionGroup( + id: json['id'] as String, + name: json['name'] as String, + icon: icon, + color: json['color'] == null ? null : Color(json['color'] as int), + numberOfMembers: json['number_of_members'] == null ? 0 : json['number_of_members'] as int, + createdAt: DateTime.parse(json['created_at'] as String)); + } + + @override + Map toMap() { + return {'id': id, 'name': name, 'icon': icon, 'color': color?.value, 'created_at': createdAt.toIso8601String()}; + } +} + +class SubscriptionGroupGet { + final String id; + final String name; + final String icon; + final List subscriptions; + bool includeReplies; + bool includeRetweets; + + SubscriptionGroupGet( + {required this.id, + required this.name, + required this.icon, + required this.subscriptions, + required this.includeReplies, + required this.includeRetweets}); +} + +class SubscriptionGroupEdit { + final String? id; + String name; + String icon; + Color? color; + Set members; + + SubscriptionGroupEdit( + {required this.id, required this.name, required this.icon, required this.color, required this.members}); +} + +class SubscriptionGroupMember with ToMappable { + final String group; + final String profile; + + SubscriptionGroupMember({required this.group, required this.profile}); + + factory SubscriptionGroupMember.fromMap(Map json) { + return SubscriptionGroupMember(group: json['group_id'] as String, profile: json['profile_id'] as String); + } + + @override + Map toMap() { + return {'group_id': group, 'profile_id': profile}; + } +} diff --git a/lib/database/repository.dart b/lib/database/repository.dart new file mode 100644 index 00000000..8122494e --- /dev/null +++ b/lib/database/repository.dart @@ -0,0 +1,238 @@ +import 'dart:convert'; + +import 'package:quacker/group/group_model.dart'; +import 'package:logging/logging.dart'; +import 'package:sqflite/sqflite.dart'; +import 'package:sqflite_migration_plan/migration/sql.dart'; +import 'package:sqflite_migration_plan/sqflite_migration_plan.dart'; +import 'package:uuid/uuid.dart'; + +const String databaseName = 'quacker.db'; + +const String tableFeedGroupChunk = 'feed_group_chunk'; +const String tableFeedGroupCursor = 'feed_group_cursor'; + +const String tableSavedTweet = 'saved_tweet'; +const String tableSearchSubscription = 'search_subscription'; +const String tableSearchSubscriptionGroupMember = 'search_subscription_group_member'; +const String tableSubscription = 'subscription'; +const String tableSubscriptionGroup = 'subscription_group'; +const String tableSubscriptionGroupMember = 'subscription_group_member'; + +class Repository { + static final log = Logger('Repository'); + + static Future readOnly() async { + return openDatabase(databaseName, readOnly: true, singleInstance: false); + } + + static Future writable() async { + return openDatabase(databaseName); + } + + Future migrate() async { + MigrationPlan myMigrationPlan = MigrationPlan({ + 2: [ + SqlMigration( + 'CREATE TABLE IF NOT EXISTS following (id INTEGER PRIMARY KEY, screen_name VARCHAR, name VARCHAR, profile_image_url_https VARCHAR, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)'), + ], + 3: [ + SqlMigration( + 'CREATE TABLE IF NOT EXISTS following_group (id INTEGER PRIMARY KEY, name VARCHAR NOT NULL, icon VARCHAR NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)'), + SqlMigration('CREATE TABLE IF NOT EXISTS following_group_profile (group_id INTEGER, profile_id INTEGER)') + ], + 4: [ + // Change the following table's "id" field to be a VARCHAR + SqlMigration('ALTER TABLE following RENAME TO following_old'), + SqlMigration( + 'CREATE TABLE following (id VARCHAR PRIMARY KEY, screen_name VARCHAR, name VARCHAR, profile_image_url_https VARCHAR, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)'), + SqlMigration( + 'INSERT INTO following (id, screen_name, name, profile_image_url_https, created_at) SELECT id, screen_name, name, profile_image_url_https, created_at FROM following_old'), + SqlMigration('DROP TABLE following_old') + ], + 5: [ + // Change the following_group_profile table's "profile_id" field to be a VARCHAR to match the referenced table + SqlMigration('ALTER TABLE following_group_profile RENAME TO following_group_profile_old'), + SqlMigration('CREATE TABLE following_group_profile (group_id INTEGER, profile_id VARCHAR)'), + SqlMigration( + 'INSERT INTO following_group_profile (group_id, profile_id) SELECT group_id, profile_id FROM following_group_profile_old'), + SqlMigration('DROP TABLE following_group_profile_old') + ], + 6: [ + // Rename the old following tables to match the names in the UI + SqlMigration('ALTER TABLE following RENAME TO $tableSubscription'), + SqlMigration('ALTER TABLE following_group RENAME TO $tableSubscriptionGroup'), + SqlMigration('ALTER TABLE following_group_profile RENAME TO $tableSubscriptionGroupMember'), + ], + 7: [ + // Add the table for saved tweets + SqlMigration( + 'CREATE TABLE IF NOT EXISTS $tableSavedTweet (id VARCHAR PRIMARY KEY, content TEXT NOT NULL, saved_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)', + reverseSql: 'DROP TABLE $tableSavedTweet') + ], + 8: [ + // Add a primary key to the $TABLE_SUBSCRIPTION_GROUP_MEMBER table to prevent duplicates + SqlMigration('ALTER TABLE $tableSubscriptionGroupMember RENAME TO ${tableSubscriptionGroupMember}_old'), + SqlMigration( + 'CREATE TABLE $tableSubscriptionGroupMember (group_id INTEGER, profile_id VARCHAR, CONSTRAINT pk_$tableSubscriptionGroupMember PRIMARY KEY (group_id, profile_id))'), + SqlMigration( + 'INSERT INTO $tableSubscriptionGroupMember (group_id, profile_id) SELECT group_id, profile_id FROM ${tableSubscriptionGroupMember}_old'), + SqlMigration('DROP TABLE ${tableSubscriptionGroupMember}_old') + ], + 9: [ + // Add a new ID field for subscription groups for a UUID to determine uniqueness across devices + SqlMigration('ALTER TABLE $tableSubscriptionGroup ADD COLUMN uuid VARCHAR NULL'), + SqlMigration('ALTER TABLE $tableSubscriptionGroupMember ADD COLUMN group_uuid VARCHAR NULL'), + + // Generate a UUID for each existing subscription group + Migration(Operation((db) async { + var uuid = const Uuid(); + + // Update the existing subscription group and all of its members with the new ID + var groups = await db.query(tableSubscriptionGroup); + for (var group in groups) { + var oldId = group['id']; + var newId = uuid.v4(); + + db.update(tableSubscriptionGroup, {'uuid': newId}, where: 'id = ?', whereArgs: [oldId]); + + db.update(tableSubscriptionGroupMember, {'group_uuid': newId}, where: 'group_id = ?', whereArgs: [oldId]); + } + })), + + // Replace the old ID fields with the new ones + SqlMigration('ALTER TABLE $tableSubscriptionGroup RENAME TO ${tableSubscriptionGroup}_old'), + SqlMigration( + 'CREATE TABLE $tableSubscriptionGroup (id VARCHAR PRIMARY KEY, name VARCHAR NOT NULL, icon VARCHAR NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)'), + SqlMigration( + 'INSERT INTO $tableSubscriptionGroup (id, name, icon, created_at) SELECT uuid, name, icon, created_at FROM ${tableSubscriptionGroup}_old'), + + SqlMigration('ALTER TABLE $tableSubscriptionGroupMember RENAME TO ${tableSubscriptionGroupMember}_old'), + SqlMigration( + 'CREATE TABLE $tableSubscriptionGroupMember (group_id VARCHAR, profile_id VARCHAR, CONSTRAINT pk_$tableSubscriptionGroupMember PRIMARY KEY (group_id, profile_id))'), + SqlMigration( + 'INSERT INTO $tableSubscriptionGroupMember (group_id, profile_id) SELECT group_uuid, profile_id FROM ${tableSubscriptionGroupMember}_old'), + ], + 10: [ + // Drop the old subscription group tables now that we've replaced the IDs + SqlMigration('DROP TABLE ${tableSubscriptionGroup}_old'), + SqlMigration('DROP TABLE ${tableSubscriptionGroupMember}_old'), + ], + 11: [ + // Add columns for the subscription group settings + SqlMigration('ALTER TABLE $tableSubscriptionGroup ADD COLUMN include_replies BOOLEAN DEFAULT true'), + SqlMigration('ALTER TABLE $tableSubscriptionGroup ADD COLUMN include_retweets BOOLEAN DEFAULT true') + ], + 12: [ + // Insert a dummy record for the "All" subscription group + Migration(Operation((db) async { + await db.insert(tableSubscriptionGroup, {'id': '-1', 'name': 'All', 'icon': 'rss_feed_rounded'}, + conflictAlgorithm: ConflictAlgorithm.replace); + }), reverse: Operation((db) async { + await db.delete(tableSubscriptionGroup, where: 'id = ?', whereArgs: ['-1']); + })), + ], + 13: [ + // Duplicate migration 12, as some people had deleted the "All" group when it displayed twice in the groups list + Migration(Operation((db) async { + await db.insert(tableSubscriptionGroup, {'id': '-1', 'name': 'All', 'icon': 'rss_feed_rounded'}, + conflictAlgorithm: ConflictAlgorithm.replace); + }), reverse: Operation((db) async { + await db.delete(tableSubscriptionGroup, where: 'id = ?', whereArgs: ['-1']); + })), + ], + 14: [ + // Add a "verified" column to the subscriptions table + SqlMigration('ALTER TABLE $tableSubscription ADD COLUMN verified BOOLEAN DEFAULT 0', + reverseSql: 'ALTER TABLE $tableSubscription DROP COLUMN verified') + ], + 15: [ + // Re-apply migration 14 in a different way, as it looks like it didn't apply for some people + SqlMigration('ALTER TABLE $tableSubscription RENAME TO ${tableSubscription}_old'), + SqlMigration( + 'CREATE TABLE $tableSubscription (id VARCHAR PRIMARY KEY, screen_name VARCHAR, name VARCHAR, profile_image_url_https VARCHAR, verified BOOLEAN DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)'), + SqlMigration( + 'INSERT INTO $tableSubscription (id, screen_name, name, profile_image_url_https, created_at) SELECT id, screen_name, name, profile_image_url_https, created_at FROM ${tableSubscription}_old'), + SqlMigration('DROP TABLE ${tableSubscription}_old'), + ], + 16: [ + // Add a "color" column to the subscription groups table, and set a default icon for existing groups + SqlMigration('ALTER TABLE $tableSubscriptionGroup ADD COLUMN color INT DEFAULT NULL', + reverseSql: 'ALTER TABLE $tableSubscriptionGroup DROP COLUMN color'), + + Migration(Operation((db) async { + await db.update(tableSubscriptionGroup, {'icon': defaultGroupIcon}, + where: "icon IS NULL OR icon = '' OR icon = ?", whereArgs: ['rss_feed_rounded']); + })) + ], + 17: [ + // Add some tables to temporarily store feed chunks, used for caching and pagination + SqlMigration( + 'CREATE TABLE IF NOT EXISTS $tableFeedGroupCursor (id INTEGER PRIMARY KEY, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)', + reverseSql: 'DROP TABLE $tableFeedGroupCursor'), + SqlMigration( + 'CREATE TABLE IF NOT EXISTS $tableFeedGroupChunk (cursor_id INTEGER NOT NULL, hash VARCHAR NOT NULL, cursor_top VARCHAR, cursor_bottom VARCHAR, response VARCHAR, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)', + reverseSql: 'DROP TABLE $tableFeedGroupChunk'), + ], + 18: [ + // Add support for saving searches + SqlMigration( + 'CREATE TABLE IF NOT EXISTS $tableSearchSubscription (id VARCHAR PRIMARY KEY, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)', + reverseSql: 'DROP TABLE $tableSearchSubscription'), + SqlMigration( + 'CREATE TABLE IF NOT EXISTS $tableSearchSubscriptionGroupMember (group_id VARCHAR, search_id VARCHAR, CONSTRAINT pk_$tableSearchSubscription PRIMARY KEY (group_id, search_id))', + reverseSql: 'DROP TABLE $tableSearchSubscriptionGroupMember'), + ], + 19: [ + // Add a new column for saved tweet user IDs, and extract them from all existing records + SqlMigration('ALTER TABLE $tableSavedTweet ADD COLUMN user_id VARCHAR DEFAULT NULL', + reverseSql: 'ALTER TABLE $tableSavedTweet DROP COLUMN user_id'), + Migration(Operation((db) async { + var tweets = await db.query(tableSavedTweet, columns: ['id', 'content']); + var batch = db.batch(); + + for (var tweet in tweets) { + var content = tweet['content'] as String?; + if (content == null) { + continue; + } + + var decodedTweet = jsonDecode(content); + if (decodedTweet == null) { + continue; + } + + var userId = decodedTweet['user']?['id_str'] as String?; + if (userId != null) { + batch.update(tableSavedTweet, {'user_id': userId}, where: 'id = ?', whereArgs: [tweet['id']]); + } + } + + await batch.commit(); + })), + ], + 20: [ + Migration(Operation((db) async { + await db.update(tableSubscriptionGroup, {'icon': defaultGroupIcon}, + where: "icon IS NULL OR icon = '' OR icon = ?", whereArgs: ['rss']); + })) + ] + }); + await openDatabase( + databaseName, + version: 20, + onUpgrade: myMigrationPlan, + onCreate: myMigrationPlan, + onDowngrade: myMigrationPlan, + ); + + // Clean up any old feed chunks and cursors + var repository = await writable(); + await repository.delete(tableFeedGroupChunk, where: "created_at <= date('now', '-7 day')"); + await repository.delete(tableFeedGroupCursor, where: "created_at <= date('now', '-7 day')"); + + log.info('Finished migrating database'); + + return true; + } +} diff --git a/lib/generated/intl/messages_all.dart b/lib/generated/intl/messages_all.dart new file mode 100644 index 00000000..5239f4ff --- /dev/null +++ b/lib/generated/intl/messages_all.dart @@ -0,0 +1,175 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that looks up messages for specific locales by +// delegating to the appropriate library. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:implementation_imports, file_names, unnecessary_new +// ignore_for_file:unnecessary_brace_in_string_interps, directives_ordering +// ignore_for_file:argument_type_not_assignable, invalid_assignment +// ignore_for_file:prefer_single_quotes, prefer_generic_function_type_aliases +// ignore_for_file:comment_references + +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; +import 'package:intl/src/intl_helpers.dart'; + +import 'messages_ar.dart' as messages_ar; +import 'messages_be.dart' as messages_be; +import 'messages_be_Latn.dart' as messages_be_latn; +import 'messages_ca.dart' as messages_ca; +import 'messages_cs.dart' as messages_cs; +import 'messages_de.dart' as messages_de; +import 'messages_en.dart' as messages_en; +import 'messages_eo.dart' as messages_eo; +import 'messages_es.dart' as messages_es; +import 'messages_et.dart' as messages_et; +import 'messages_eu.dart' as messages_eu; +import 'messages_fr.dart' as messages_fr; +import 'messages_hi.dart' as messages_hi; +import 'messages_id.dart' as messages_id; +import 'messages_it.dart' as messages_it; +import 'messages_ja.dart' as messages_ja; +import 'messages_ko.dart' as messages_ko; +import 'messages_ml.dart' as messages_ml; +import 'messages_nb_NO.dart' as messages_nb_no; +import 'messages_nl.dart' as messages_nl; +import 'messages_or.dart' as messages_or; +import 'messages_pl.dart' as messages_pl; +import 'messages_pt.dart' as messages_pt; +import 'messages_pt_BR.dart' as messages_pt_br; +import 'messages_ro.dart' as messages_ro; +import 'messages_ru.dart' as messages_ru; +import 'messages_tr.dart' as messages_tr; +import 'messages_uk.dart' as messages_uk; +import 'messages_zh_Hans.dart' as messages_zh_hans; + +typedef Future LibraryLoader(); +Map _deferredLibraries = { + 'ar': () => new SynchronousFuture(null), + 'be': () => new SynchronousFuture(null), + 'be_Latn': () => new SynchronousFuture(null), + 'ca': () => new SynchronousFuture(null), + 'cs': () => new SynchronousFuture(null), + 'de': () => new SynchronousFuture(null), + 'en': () => new SynchronousFuture(null), + 'eo': () => new SynchronousFuture(null), + 'es': () => new SynchronousFuture(null), + 'et': () => new SynchronousFuture(null), + 'eu': () => new SynchronousFuture(null), + 'fr': () => new SynchronousFuture(null), + 'hi': () => new SynchronousFuture(null), + 'id': () => new SynchronousFuture(null), + 'it': () => new SynchronousFuture(null), + 'ja': () => new SynchronousFuture(null), + 'ko': () => new SynchronousFuture(null), + 'ml': () => new SynchronousFuture(null), + 'nb_NO': () => new SynchronousFuture(null), + 'nl': () => new SynchronousFuture(null), + 'or': () => new SynchronousFuture(null), + 'pl': () => new SynchronousFuture(null), + 'pt': () => new SynchronousFuture(null), + 'pt_BR': () => new SynchronousFuture(null), + 'ro': () => new SynchronousFuture(null), + 'ru': () => new SynchronousFuture(null), + 'tr': () => new SynchronousFuture(null), + 'uk': () => new SynchronousFuture(null), + 'zh_Hans': () => new SynchronousFuture(null), +}; + +MessageLookupByLibrary? _findExact(String localeName) { + switch (localeName) { + case 'ar': + return messages_ar.messages; + case 'be': + return messages_be.messages; + case 'be_Latn': + return messages_be_latn.messages; + case 'ca': + return messages_ca.messages; + case 'cs': + return messages_cs.messages; + case 'de': + return messages_de.messages; + case 'en': + return messages_en.messages; + case 'eo': + return messages_eo.messages; + case 'es': + return messages_es.messages; + case 'et': + return messages_et.messages; + case 'eu': + return messages_eu.messages; + case 'fr': + return messages_fr.messages; + case 'hi': + return messages_hi.messages; + case 'id': + return messages_id.messages; + case 'it': + return messages_it.messages; + case 'ja': + return messages_ja.messages; + case 'ko': + return messages_ko.messages; + case 'ml': + return messages_ml.messages; + case 'nb_NO': + return messages_nb_no.messages; + case 'nl': + return messages_nl.messages; + case 'or': + return messages_or.messages; + case 'pl': + return messages_pl.messages; + case 'pt': + return messages_pt.messages; + case 'pt_BR': + return messages_pt_br.messages; + case 'ro': + return messages_ro.messages; + case 'ru': + return messages_ru.messages; + case 'tr': + return messages_tr.messages; + case 'uk': + return messages_uk.messages; + case 'zh_Hans': + return messages_zh_hans.messages; + default: + return null; + } +} + +/// User programs should call this before using [localeName] for messages. +Future initializeMessages(String localeName) { + var availableLocale = Intl.verifiedLocale( + localeName, (locale) => _deferredLibraries[locale] != null, + onFailure: (_) => null); + if (availableLocale == null) { + return new SynchronousFuture(false); + } + var lib = _deferredLibraries[availableLocale]; + lib == null ? new SynchronousFuture(false) : lib(); + initializeInternalMessageLookup(() => new CompositeMessageLookup()); + messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor); + return new SynchronousFuture(true); +} + +bool _messagesExistFor(String locale) { + try { + return _findExact(locale) != null; + } catch (e) { + return false; + } +} + +MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) { + var actualLocale = + Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null); + if (actualLocale == null) return null; + return _findExact(actualLocale); +} diff --git a/lib/generated/intl/messages_ar.dart b/lib/generated/intl/messages_ar.dart new file mode 100644 index 00000000..3d73494a --- /dev/null +++ b/lib/generated/intl/messages_ar.dart @@ -0,0 +1,479 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ar locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ar'; + + static String m0(name) => "هل أنت متأكد من حذف اسم مجموعة الاشتراك ${name}?"; + + static String m1(fileName) => "صُدِّرَت البيانات إلى ${fileName}"; + + static String m2(fullPath) => "صُدِّرَت البيانات إلى ${fullPath}"; + + static String m3(timeagoFormat) => "اتنهى ${timeagoFormat}"; + + static String m4(timeagoFormat) => "يتنهي ${timeagoFormat}"; + + static String m5(snapshotData) => "تم الانتهاء بـ${snapshotData} مستخدم"; + + static String m6(name) => "المجموعة: ${name}"; + + static String m7(snapshotData) => + "${snapshotData} المستخدمين المستوردون حتى الآن"; + + static String m8(date) => "انضم ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'ولا تصويت', one: 'تصويت واحد', two: 'تصويتان', few: '${numFormatted} تصويتات', many: '${numFormatted} تصويت', other: '${numFormatted} تصويتات')}"; + + static String m10(errorMessage) => + "رجائاً تحقق من اتصال الشبكة لديك.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "انقر للتحميل ${releaseVersion}"; + + static String m12(getMediaType) => "انقر للعرض ${getMediaType}"; + + static String m13(filePath) => + "الملف غير موجود. رجائاً تأكد أنه موجو في ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} أعاد تغريد ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'لا تغريدات', one: 'تغريدة واحدة', two: 'تغريدتان', few: '${numFormatted} تغريدات', many: '${numFormatted} تغريدة', other: '${numFormatted} تغريدات')}"; + + static String m16(widgetPlaceName) => + "غير قادر على تحميل الترندات لـ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "تعذر حفظ الوسائط. أعاد تويتر حالة ${responseStatusCode}"; + + static String m18(releaseVersion) => + "حدّث إلى ${releaseVersion} عبر عميل الـF-Droid لديك"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("عن"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("الحساب معلق"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "إخفاء مؤلفي التغريدات. تجنب التحيز التأكيدي بناء على الحجج الموثوقة."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage("تفعيل نمط التحيز غير المؤكد"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("إضافة اشتراكات"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("أضف إلى المجموعة"), + "all": MessageLookupByLibrary.simpleMessage("الكل"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "كل البرمجيات الرائعة التي يستخدمها فريتر"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage("هناك تحديث متاح لفريتر! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("هل أنت متأكد؟"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("رجوع"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "لقد ألغى Twitter رمز الوصول الخاص بنا. من فضلك حاول إعادة فتح Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "السمة الزرقاء بنائاً على سمة تويتر"), + "cancel": MessageLookupByLibrary.simpleMessage("الغاء"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("فشل ذريع"), + "choose": MessageLookupByLibrary.simpleMessage("أختر"), + "choose_pages": MessageLookupByLibrary.simpleMessage("اختيار الصفحات"), + "close": MessageLookupByLibrary.simpleMessage("اغلاق"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "هل أنت متأكد من أنك تريد إغلاق Quacker؟"), + "contribute": MessageLookupByLibrary.simpleMessage("المساهمة"), + "copied_address_to_clipboard": + MessageLookupByLibrary.simpleMessage("نسخ العنوان إلى الحافظة"), + "copied_version_to_clipboard": + MessageLookupByLibrary.simpleMessage("نُسخ الإصدار إلى الحافظة"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "غير قادر على التواصل مع تويتر"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "لم يتم العثور على أي تغريدة من هذا المستخدم!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "لم يُعثر على أي تغريدات من الأيام الـ7 الماضية!"), + "country": MessageLookupByLibrary.simpleMessage("البلد"), + "dark": MessageLookupByLibrary.simpleMessage("داكن"), + "data": MessageLookupByLibrary.simpleMessage("البيانات"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("استوردت البيانات بنجاح"), + "date_created": MessageLookupByLibrary.simpleMessage("تاريخ الإنشاء"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("تاريخ الاشتراك"), + "default_tab": + MessageLookupByLibrary.simpleMessage("التبويب الافتراضي"), + "delete": MessageLookupByLibrary.simpleMessage("حذف"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("تعطيل لقطات الشاشة"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "منع التقاط لقطات الشاشة. قد لا يعمل هذا على جميع الأجهزة."), + "disabled": MessageLookupByLibrary.simpleMessage("معطل"), + "donate": MessageLookupByLibrary.simpleMessage("التبرع"), + "download": MessageLookupByLibrary.simpleMessage("تحميل"), + "download_handling": + MessageLookupByLibrary.simpleMessage("التعامل مع التحميل"), + "download_handling_description": + MessageLookupByLibrary.simpleMessage("كيفية عمل التنزيل"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("اسأل دائما"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("حفظ في المسار"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل . هذا المحتوى قد يكون متاحا فقط على شكل بث ، فريتر لا يمكنه تحميله ."), + "download_path": MessageLookupByLibrary.simpleMessage("مسار التنزيل"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("تحميل الوسائط..."), + "enable_": MessageLookupByLibrary.simpleMessage("تفعيل الحارس؟"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": + MessageLookupByLibrary.simpleMessage("ادخل اسم مستخدم للتويتر"), + "export": MessageLookupByLibrary.simpleMessage("تصدير"), + "export_settings": + MessageLookupByLibrary.simpleMessage("تصدير الإعدادات؟"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "تصدير أفراد مجموعات الاشتراكات؟"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("تصدير مجموعات الاشتراكات؟"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("تصدير الاشتراكات؟"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("تصدير التغريدات؟"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("تصدير بياناتك"), + "feed": MessageLookupByLibrary.simpleMessage("التلقيم"), + "filters": MessageLookupByLibrary.simpleMessage("المرشحات"), + "finish": MessageLookupByLibrary.simpleMessage("انهاء"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("المتابِعون"), + "following": MessageLookupByLibrary.simpleMessage("المتابَعون"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "تويتر يقول إن الوصول إلى هذا ممنوع"), + "fritter": MessageLookupByLibrary.simpleMessage("فريتر"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("فريتر أزرق"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "لم يعد تويتر يدعم هذه الميزة!"), + "general": MessageLookupByLibrary.simpleMessage("العامة"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("المجموعات"), + "help_make_fritter_even_better": + MessageLookupByLibrary.simpleMessage("المساعدة في جعل فريتر أفضل"), + "help_support_fritters_future": + MessageLookupByLibrary.simpleMessage("ساعد على دعم مستقبل فريتر"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("إخفاء التغريدات الحساسة"), + "home": MessageLookupByLibrary.simpleMessage("الرئيسية"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "إذا كان لديك أي تعليقات عن هذه الميزة، رجائاً اكتبها هنا"), + "import": MessageLookupByLibrary.simpleMessage("استيراد"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "استيراد البيانات من جهاز آخر"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("الاستيراد من تويتر"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("استيراد الاشتراكات"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": MessageLookupByLibrary.simpleMessage("تضمين الردود"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("تضمين إعادات التغاريد"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("اللغات"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("يتطلب إعادة تشغيل"), + "large": MessageLookupByLibrary.simpleMessage("كبير"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "استيردات البيانات للأندرويد القديم"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "دع المطورين يعرفون ما إذا كان هناك خطأ ما"), + "licenses": MessageLookupByLibrary.simpleMessage("الرخص"), + "light": MessageLookupByLibrary.simpleMessage("فاتح"), + "live": MessageLookupByLibrary.simpleMessage("مباشر"), + "logging": MessageLookupByLibrary.simpleMessage("تسجيل البيانات"), + "media": MessageLookupByLibrary.simpleMessage("الوسائط"), + "media_size": MessageLookupByLibrary.simpleMessage("حجم الوسائط"), + "medium": MessageLookupByLibrary.simpleMessage("متوسط"), + "missing_page": MessageLookupByLibrary.simpleMessage("صفحة مفقودة"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "لتحديد ما إذا كان يجب كتم مقاطع الفيديو افتراضيًا"), + "mute_videos": + MessageLookupByLibrary.simpleMessage("كتم صوت مقاطع الفيديو"), + "name": MessageLookupByLibrary.simpleMessage("الاسم"), + "newTrans": MessageLookupByLibrary.simpleMessage("الجديد"), + "next": MessageLookupByLibrary.simpleMessage("التالي"), + "no": MessageLookupByLibrary.simpleMessage("لا"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "لم يتم إرجاع أي بيانات، وهو ما لا ينبغي أن يحدث أبدا. يرجى الإبلاغ عن وجود خلل، إذا كان ذلك ممكنا!"), + "no_results": MessageLookupByLibrary.simpleMessage("لا نتائج"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("لا توجد نتائج لـ:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "لا اشتراكات. حاول أن تبحث أو أن تستورد البعض!"), + "not_set": MessageLookupByLibrary.simpleMessage("لم يتم تعيينه"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "ملاحظة: نظراً لقَيد معين من تويتر، قد لا يتم تضمين جميع التغريدات"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("تمام"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "لا يمكن استيراد الاشتراكات إلا من الملفات الشخصية العامة"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("أوبسي! حدث خطأ ما 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("افتح إعدادات التطبيق"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "تويتر يقول إن الصفحة غير موجودة، ولكن هذا قد لا يكون صحيحا"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "الإذن غير ممنوح. يرجى المحاولة مرة أخرى بعد منحه!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("اختر لون!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("اختر أيقونة!"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("التغريدة المثبتة"), + "playback_speed": MessageLookupByLibrary.simpleMessage("سرعة التشغيل"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("رجائاً اكتب اسماً"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "رجائاً تأكد ما إذا كانت البيانات موجودة هناك, ومن ثم اضغط على زر الاستيراد في أدناه."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "يرجى ملاحظة أن الطريقة التي يستخدمها Quacker لاستيراد الاشتراكات محدودة بشكل كبير من قبل Twitter ، لذلك قد يفشل هذا إذا كان لديك الكثير من الحسابات المتابعة."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("يحتمل أن تكون حساسة"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "قد يتضمن ملف التعريف هذا صورًا أو لغة أو محتوى آخر يحتمل أن يكون حساسًا. هل مازلت تريد مشاهدته؟"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "تحتوي هذه التغريدة على محتوى يحتمل أن يكون حساسا. هل ترغب في مشاهدته؟"), + "prefix": MessageLookupByLibrary.simpleMessage("السابقة"), + "private_profile": MessageLookupByLibrary.simpleMessage("ملف شخصي خاص"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "منشور تحت رخصة الإم أي تي (MIT License)"), + "replying_to": MessageLookupByLibrary.simpleMessage("يرد على"), + "report": MessageLookupByLibrary.simpleMessage("إبلاغ"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("الإبلاغ عن خطأ"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("الإبلاغ غن خطأ"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "إعادة تعيين الصفحة إلى القيمة الافتراضية"), + "retry": MessageLookupByLibrary.simpleMessage("إعادة المحاوة"), + "save": MessageLookupByLibrary.simpleMessage("حفظ"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "حفظ النطاق الترددي مع صور أصغر"), + "saved": MessageLookupByLibrary.simpleMessage("المحفوظ"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "تعذر عرض هذه التغريدة المحفوظة لأنها كبيرة جدًا بحيث لا يمكن تحميلها. الرجاء الإبلاغ عن ذلك للمطورين."), + "search": MessageLookupByLibrary.simpleMessage("البحث"), + "search_term": MessageLookupByLibrary.simpleMessage("مصطلح البحث"), + "select": MessageLookupByLibrary.simpleMessage("اختيار"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "تحديد حسابات مفردة، وتعيين مجموعات هما ميزات قد خُطط لها بالفعل للمستقبل!"), + "send": MessageLookupByLibrary.simpleMessage("إرسال"), + "share_base_url": + MessageLookupByLibrary.simpleMessage("عنوان URL المخصص للمشاركة"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "استخدام عنوان URL أساسي مخصص عند المشاركة"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("مشاركة محتوى التغريدة"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "مشاركة محتوى التغريدة والرابط"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("مشاركة رابط التغريدة"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "تحقق من وجود تحديثات عندما يبدأ Quacker"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("التحقق من وجود تحديثات"), + "small": MessageLookupByLibrary.simpleMessage("صغير"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("حدث خطأ ما في فريتر."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "حدث خطأ ما في فريتر، تم إنشاء تقرير لهذا الخطأ، تستطيع أن تبعث التقرير إلى مطورين فريتر لمساعدتهم على إصلاح المشكلة."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "عذرا ، لم يتم العثور على التغريدة التي تم الرد عليها!"), + "subscribe": MessageLookupByLibrary.simpleMessage("الاشتراك"), + "subscriptions": MessageLookupByLibrary.simpleMessage("الإشتراكات"), + "subtitles": MessageLookupByLibrary.simpleMessage("السطرجة"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("تم حفظ الوسائط!"), + "system": MessageLookupByLibrary.simpleMessage("النظام"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "شكراً على مساعدتك لفريتر! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("مشكلة جيثب (# 143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "التغريدة لا تحتوي على أي نص. هذا غير متوقع"), + "theme": MessageLookupByLibrary.simpleMessage("السمة"), + "theme_mode": MessageLookupByLibrary.simpleMessage("وضع النسق"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "لم يتم إرجاع أي ترند. هذا غير متوقع! رجائاً أبلغ عن خطأ، إذا كان ممكناً."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "هذه المجموعة لا تحتوي على أي مجموعات!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "استغرق هذا وقتا طويلا للتحميل. رجائاً تأكد من اتصال الشبكة لديك!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "هذه التغريدة غير متوفرة. ربما تم حذفها."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "هذا المستخدم لا يتابِع أحداً!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "هذا المستخدم ليس لديه أي اشخاص يتابعهم!"), + "thread": MessageLookupByLibrary.simpleMessage("سلسلة"), + "thumbnail": MessageLookupByLibrary.simpleMessage("الصورة المصغرة"), + "timed_out": MessageLookupByLibrary.simpleMessage("انتهت المهلة"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "لاستيراد الاشتراكات من حساب تويتر موجود، أدخل اسم المستخدم أدناه."), + "toggle_all": MessageLookupByLibrary.simpleMessage("تبديل الكل"), + "trending": MessageLookupByLibrary.simpleMessage("الشائع"), + "trends": MessageLookupByLibrary.simpleMessage("الترندات"), + "true_black": MessageLookupByLibrary.simpleMessage("أسود حقيقي؟"), + "tweets": MessageLookupByLibrary.simpleMessage("التغريدات"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("التغريدات والردود"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "تحتاج إلى صفحتان على الأقل من صفحات الشاشة الرئيسية."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحديد موقع الترندات."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "غير قادر على العثور على تغريداتك المحفوظة."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("غير قادر على الاستيراد"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "تعذر تحميل الصفحات الرئيسية الخاصة بك"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل مجموعات الاشتراك"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("غير قادر على تحميل المجموعة"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل إعدادات المجموعة"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل قائمة المتابَعون"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل الصفحة المتابَعون التالية"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل الصفحة التالية من الردود"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل الصفحة التالية من التغريدات"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل الملف الشخصي"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل نتائج البحث."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل التغريدات"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل التغريدات"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحميل التغريدات للمُلقّم"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تحديث الاشتراكات"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "غير قادر على تشغيل تحديث قاعدة البيانات"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "غير قادر على بث تفضيل موقع الترندات"), + "unknown": MessageLookupByLibrary.simpleMessage("غير معروف"), + "unsave": MessageLookupByLibrary.simpleMessage("الغاء الحفظ"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("إلغاء الاشتراك"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("عنوان URL غير مدعوم"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("التحديثات"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "استخدم ميزة الأسود الحقيقي للسمة الداكنة"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("لم يُعثر على المستخدم"), + "username": MessageLookupByLibrary.simpleMessage("اسم المستخدم"), + "version": MessageLookupByLibrary.simpleMessage("الإصدار"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "عندما يكون هناك تحديث جديد للتطبيق"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "ما إذا يجب على الأخطاء البرمجية أن يُبلّغ عنها إلى الحارس"), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "ما إذا كنت تريد إخفاء التغريدات التي تم وضع علامة عليها على أنها حساسة"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "أي تبويب يظهر عندما يفتح التطبيق"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "هل تُحب أن تفعل مُبَلغ الأخطاء الآلي؟"), + "yes": MessageLookupByLibrary.simpleMessage("نعم"), + "yes_please": MessageLookupByLibrary.simpleMessage("نعم، من فضلك"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage("لم تحفظ أي تغريدة حتى الآن!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "يجب أن يكون لديك على الأقل 2 صفحات الشاشة الرئيسية"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "يجب أن يكون ملف التعريف الخاص بك عاما، وإلا لن يعمل الاستيراد"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "تقريرك سيُبعث إلى مشروع حراسة فريتر، ويمكن العثور على تفاصيل الخصوصية في:") + }; +} diff --git a/lib/generated/intl/messages_be.dart b/lib/generated/intl/messages_be.dart new file mode 100644 index 00000000..72a5af1b --- /dev/null +++ b/lib/generated/intl/messages_be.dart @@ -0,0 +1,464 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a be locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'be'; + + static String m0(name) => + "Вы ўпэўненыя, што жадаеце выдаліць групу падпісак ${name}?"; + + static String m1(fileName) => "Дадзеныя экспартуюцца ў ${fileName}"; + + static String m2(fullPath) => "Дадзеныя экспартуюцца ў ${fullPath}"; + + static String m3(timeagoFormat) => "Завершана ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Завершыцца праз ${timeagoFormat}"; + + static String m5(snapshotData) => + "Завершана праца з акаўнтамі ${snapshotData}"; + + static String m6(name) => "Група: ${name}"; + + static String m7(snapshotData) => + "Імпартавана ${snapshotData} акаўнтаў на дадзены момант"; + + static String m8(date) => "Рэгістрацыя: ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'няма галасоў', one: 'голас', two: 'галасы', few: '${numFormatted} галасы', many: '${numFormatted} галасоў', other: '${numFormatted} голас')}"; + + static String m10(errorMessage) => + "Калі ласка, праверце вашае сеткавае падлучэнне.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Націсніце, каб усталяваць ${releaseVersion}"; + + static String m12(getMediaType) => "Націсніце, каб паказаць ${getMediaType}"; + + static String m13(filePath) => + "Файл не існуе. Калі ласка, упэўніцеся, што ён знаходзіцца па адрасе ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} ретвітнуў(ла) ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'няма твітаў', one: 'твіт', two: 'твіта', few: '${numFormatted} твіты', many: '${numFormatted} твитаў', other: '${numFormatted} твит')}"; + + static String m16(widgetPlaceName) => + "Немагчыма загрузіць актуальнае для ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Немагчыма захаваць мэдыяфайл. Twitter вярнуў статус ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Абнавіць да ${releaseVersion} праз кліент F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Аб праграме"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Уліковы запіс прыпынены"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Схаваць аўтараў твітаў. Пазбягайце прадузятасці пацверджання, заснаванага на аўтарытэтных аргументах."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Уключыць рэжым зрушэння без пацверджання"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Дадаць у групу"), + "all": MessageLookupByLibrary.simpleMessage("Усе"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Усё выдатнае праграмнае забеспячэнне, якое выкарыстоўваецца Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Абнаўленне Quacker даступна! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Вы ўпэўнены?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Назад"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter прызнаў несапраўдным наш маркер доступу. Калі ласка, паспрабуйце зноў адкрыць Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Сіняя тэма, заснаваная на каляровай схеме Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Скасаваць"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Крытычная памылка"), + "choose": MessageLookupByLibrary.simpleMessage("Выбраць"), + "close": MessageLookupByLibrary.simpleMessage("Закрыць"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Вы сапраўды хочаце закрыць Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Падтрымаць"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Адрас скапіяваны ў буфер абмену"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Версія скапіяваная ў буфер абмену"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Не атрымоўваецца звязацца з Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Не атрымалася знайсці ні аднаго твіту гэтага карыстальніка!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Не атрымліваецца знайсці якія-небудзь твіты за апошнія 7 дзён!"), + "country": MessageLookupByLibrary.simpleMessage("Краіна"), + "dark": MessageLookupByLibrary.simpleMessage("Цёмная"), + "data": MessageLookupByLibrary.simpleMessage("Дадзеныя"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Дадзеныя паспяхова імпартаваны"), + "date_created": MessageLookupByLibrary.simpleMessage("Дата стварэння"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Дата падпіскі"), + "default_tab": + MessageLookupByLibrary.simpleMessage("Укладка па змаўчанні"), + "delete": MessageLookupByLibrary.simpleMessage("Выдаліць"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Адключыць скрыншоты"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Прадухіленне стварэння скрыншотаў. Гэта можа працаваць не на ўсіх прыладах."), + "disabled": MessageLookupByLibrary.simpleMessage("Адключана"), + "donate": MessageLookupByLibrary.simpleMessage("Падтрымаць праект"), + "download": MessageLookupByLibrary.simpleMessage("Спампаваць"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Апрацоўка загрузкі"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Як павінна працаваць спампоўка"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Заўсёды пытаць"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Захаваць у тэчку"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Немагчыма загрузіць. Гэта медыя можа быць даступна толькі ў выглядзе патоку, які Quacker пакуль не можа загрузіць."), + "download_path": + MessageLookupByLibrary.simpleMessage("Шлях для спампоўкі"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Загрузка медыя..."), + "enable_": MessageLookupByLibrary.simpleMessage("Актываваць ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Увядзіце Ваша імя карыстальніка ў Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Экспартаваць"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Экспартаваць наладкі?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Экспартаваць удзельнікаў груп падпісак?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Экспартаваць групы падпісак?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Экспартаваць падпіскі?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Экспартаваць твіты?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Экспартаваць вашыя дадзеныя"), + "feed": MessageLookupByLibrary.simpleMessage("Стужка"), + "filters": MessageLookupByLibrary.simpleMessage("Фільтры"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Чытачы"), + "following": MessageLookupByLibrary.simpleMessage("Чытае"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter кажа, што доступ да гэтага забаронены"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker blue"), + "general": MessageLookupByLibrary.simpleMessage("Асноўныя"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Групы"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Дапамажыце зрабіць Quacker яшчэ лепш"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Падтрымайце будучыню Quacker"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Хаваць чуллівы кантэнт"), + "home": MessageLookupByLibrary.simpleMessage("Галоўная"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Калі ў вас ёсць водгукі аб гэтай функцыі, калі ласка, пакіньце іх на"), + "import": MessageLookupByLibrary.simpleMessage("Імпартаваць"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Імпартаваць дадзеныя з іншай прылады"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Імпартаваць з Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Імпартаваць падпіскі"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Уключаючы адказы"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Уключаючы рэтвіты"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Мова"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Неабходны перазапуск"), + "large": MessageLookupByLibrary.simpleMessage("Вялікі"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Імпарт з устарэлай версіі Android"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Паведаміце распрацоўшчыкам калі нешта пайшло не так"), + "licenses": MessageLookupByLibrary.simpleMessage("Ліцэнзіі"), + "light": MessageLookupByLibrary.simpleMessage("Светлая"), + "live": MessageLookupByLibrary.simpleMessage("Прамы эфір"), + "logging": MessageLookupByLibrary.simpleMessage("Журнал"), + "media": MessageLookupByLibrary.simpleMessage("Медыя"), + "media_size": MessageLookupByLibrary.simpleMessage("Памер медыя"), + "medium": MessageLookupByLibrary.simpleMessage("Сярэдні"), + "name": MessageLookupByLibrary.simpleMessage("Імя"), + "newTrans": MessageLookupByLibrary.simpleMessage("Новыя"), + "no": MessageLookupByLibrary.simpleMessage("Не"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Ніякія дадзеныя не былі вернуты, чаго ніколі не павінна адбывацца. Калі ласка, паведамце аб памылцы, калі гэта магчыма!"), + "no_results": + MessageLookupByLibrary.simpleMessage("Нічога не знойдзена"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Вынікі адсутнічаюць:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Няма падпісак. Паспрабуйце пашукаць або імпартаваць нешта!"), + "not_set": MessageLookupByLibrary.simpleMessage("Не ўстаноўлена"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Заўвага: У сувязі з абмежаваннем Twitter, не ўсе твіты могуць быць уключаны"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("Добра"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Ой! Нешта пайшло не так 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Адкрыць налады прыкладання"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter кажа, што гэтая старонка не існуе, але гэта можа быць няпраўдай"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Дазвол не дадзены. Калі ласка, паспрабуйце яшчэ раз пасля прадастаўлення!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Абярыце колер!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Выберыце іконку!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Замацаваны твіт"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Хуткасць прайгравання"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Калі ласка, увядзіце імя"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Пераканайцеся, што дадзеныя, якія вы хочаце імпартаваць, знаходзяцца там, затым націсніце кнопку імпарту ніжэй."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Улічыце, што метад, які выкарыстоўвае Quacker для імпарту падпісак, вельмі абмежаваны хуткасцю Twitter, таму пры наяўнасці вялікай колькасці падпісак гэта можа не спрацаваць."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Магчыма чулліва"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Гэты профіль можа змяшчаць патэнцыйна чуллівыя выявы, выказванні або іншае змесціва. Вы ўсё яшчэ хочаце прагледзець яго?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Гэты твіт змяшчае патэнцыйна чуллівы кантэнт. Вы сапраўды хочаце яго паглядзець?"), + "prefix": MessageLookupByLibrary.simpleMessage("прэфікс"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Прыватны профіль"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Апублікавана пад ліцэнзіяй MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("Адказаць"), + "report": MessageLookupByLibrary.simpleMessage("Паведаміць"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Паведаміць аб памылцы"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Паведаміць аб памылцы"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Скід старонак да значэнняў па змаўчанні"), + "retry": MessageLookupByLibrary.simpleMessage("Паўтарыць"), + "save": MessageLookupByLibrary.simpleMessage("Захаваць"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Эканомце месца на экране, з выявамі меншага памеру"), + "saved": MessageLookupByLibrary.simpleMessage("Захаванае"), + "search": MessageLookupByLibrary.simpleMessage("Пошук"), + "search_term": MessageLookupByLibrary.simpleMessage("Пошукавы запыт"), + "select": MessageLookupByLibrary.simpleMessage("Выбраць"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Выбар асобных акаўнтаў для імпарту і прызначэнне груп ужо запланаваны на будучыню!"), + "send": MessageLookupByLibrary.simpleMessage("Даслаць"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Падзяліцца змесцівам твіту"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Адправіць змесціва і спасылку"), + "share_tweet_link": MessageLookupByLibrary.simpleMessage( + "Падзяліцца спасылкай на твіт"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Правяраць наяўнасць абнаўленняў пры запуску"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Праверыць абнаўлення"), + "small": MessageLookupByLibrary.simpleMessage("Маленькі"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Нешта пайшло не так."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Нешта пайшло не так у Quacker, і была створаная справаздача аб памылцы. Справаздачу можна адправіць распрацоўнікам Quacker, каб яны маглі ўхіліць праблему."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "На жаль, твіт з адказам не знойдзены!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Чытаць"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Падпіскі"), + "subtitles": MessageLookupByLibrary.simpleMessage("Субцітры"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Файл захаваны!"), + "system": MessageLookupByLibrary.simpleMessage("Сістэмная"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Дзякуй за дапамогу Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("Прапанова GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Твіт не змяшчаў ніякага тэксту. Гэта нечакана"), + "theme": MessageLookupByLibrary.simpleMessage("Тэма"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Тэма"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Не было вернута нічога з актуальнага. Гэта нечакана! Калі ласка, паведаміце аб гэтым як аб памылцы, калі гэта магчыма."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "У гэтай групе няма падпісак!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Загрузка заняла зашмат часу. Калі ласка, праверце ваша сеткавае падключэнне!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Гэты твіт недаступны. Магчыма ён быў выдалены."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Гэты карыстальнік нікога не чытае!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Гэтага карыстальніка ніхто не чытае!"), + "thread": MessageLookupByLibrary.simpleMessage("Галінка"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Мініяцюра"), + "timed_out": MessageLookupByLibrary.simpleMessage("Час выйшаў"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Каб імпартаваць падпіскі з існуючага акаўнта Twitter, увядзіце сваё імя карыстальніка ніжэй."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Выбраць усе"), + "trending": MessageLookupByLibrary.simpleMessage("Актуальнае"), + "trends": MessageLookupByLibrary.simpleMessage("Актуальныя тэмы"), + "true_black": + MessageLookupByLibrary.simpleMessage("Сапраўдны чорны (AMOLED)?"), + "tweets": MessageLookupByLibrary.simpleMessage("Твіты"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Твіты і Адказы"), + "tweets_number": m15, + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Немагчыма знайсці даступныя краіны для актуальнага."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Немагчыма знайсці вашыя захаваныя твіты."), + "unable_to_import": MessageLookupByLibrary.simpleMessage( + "Не атрымоўваецца імпартаваць"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Немагчыма загрузіць галоўную старонку"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Не ўдаецца загрузіць групы падпісак"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Немагчыма загрузіць групу"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Немагчыма загрузіць наладкі групы"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Не атрымоўваецца загрузіць спіс падпісак"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Не атрымоўваецца загрузіць наступную старонку чытаемых"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Не ўдаецца загрузіць наступную старонку адказаў"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Немагчыма загрузіць наступную старонку твітаў"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Немагчыма загрузіць профіль"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Немагчыма загрузіць вынікі пошуку."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Не ўдаецца загрузіць твіт"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Не атрымоўваецца загрузіць твіты"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Не атрымліваецца загрузіць твіты для стужкі"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage("Немагчыма абнавіць падпіскі"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Не ўдалося зрабіць перамяшчэнне базы даных"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Немагчыма выканаць перадачу мясцовых пераваг"), + "unknown": MessageLookupByLibrary.simpleMessage("Невядомы"), + "unsave": MessageLookupByLibrary.simpleMessage("Адмяніць захаванне"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Перастаць чытаць"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Абнаўленні"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Выкарыстоўваць сапраўдны чорны (AMOLED) для цёмнай тэмы"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Карыстальнік не знойдзены"), + "username": MessageLookupByLibrary.simpleMessage("Імя карыстальніка"), + "version": MessageLookupByLibrary.simpleMessage("Версія"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Калі новае абнаўленне даступна"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage("Паведамляць пра памылкі ў "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Ці варта хаваць твіты, пазначаныя як чуллівыя"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Якая ўкладка адлюстроўваецца пры адкрыцці дадатку"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Вы хочаце ўключыць аўтаматычнае інфармаванне аб памылках?"), + "yes": MessageLookupByLibrary.simpleMessage("Так"), + "yes_please": MessageLookupByLibrary.simpleMessage("Так, калі ласка"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Вы яшчэ не захавалі ніводнага твіту!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Вы павінны ўсталяваць як мінімум дзве старонкі для галоўнага экрана"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Ваш профіль павінен быць адкрытым, інакш імпарт ня будзе працаваць"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Ваша справаздача будзе даслана ў Quacker, а інфармацыю пра канфідэнцыйнасць можна знайсці тут:") + }; +} diff --git a/lib/generated/intl/messages_be_Latn.dart b/lib/generated/intl/messages_be_Latn.dart new file mode 100644 index 00000000..65818f44 --- /dev/null +++ b/lib/generated/intl/messages_be_Latn.dart @@ -0,0 +1,139 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a be_Latn locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'be_Latn'; + + static String m1(fileName) => "Dadzienyja ekspartujucca ŭ ${fileName}"; + + static String m2(fullPath) => "Dadzienyja ekspartujucca ŭ ${fullPath}"; + + static String m8(date) => "Dałučyŭsia(-łasia) ${date}"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "add_to_group": MessageLookupByLibrary.simpleMessage("Dadać u hrupu"), + "cancel": MessageLookupByLibrary.simpleMessage("Skasavać"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Nie atrymałasia znajści ni adnaho tvitu hetaha karystalnika!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Nie atrymlivajecca znajści jakija-niebudź tvity za apošnija 7 dzion!"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Dadzienyja paśpiachova impartavany"), + "export": MessageLookupByLibrary.simpleMessage("Ekspartavać"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Ekspartavać nałady?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Ekspartavać udzielnikaŭ hrup padpisak?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("Ekspartavać hrupy padpisak?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Ekspartavać padpiski?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Ekspartavać tvity?"), + "feed": MessageLookupByLibrary.simpleMessage("Stužka"), + "filters": MessageLookupByLibrary.simpleMessage("Filtry"), + "followers": MessageLookupByLibrary.simpleMessage("Čytačy"), + "following": MessageLookupByLibrary.simpleMessage("Čytaje"), + "include_replies": + MessageLookupByLibrary.simpleMessage("Uklučajučy adkazy"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Uklučajučy retvity"), + "joined": m8, + "media": MessageLookupByLibrary.simpleMessage("Medyja"), + "no_results": MessageLookupByLibrary.simpleMessage("Niama vyniku"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Zaŭvaha: U suviazi z abmiežavańniem Twitter, nie ŭsie tvity mohuć być uklučany"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Paviedamić ab pamyłcy"), + "saved": MessageLookupByLibrary.simpleMessage("Zachavanaje"), + "select": MessageLookupByLibrary.simpleMessage("Vybrać"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Niešta pajšło nie tak u Quacker, i była stvorana spravazdača ab pamyłcy. Spravazdaču možna adpravić raspracoŭnikam Quacker, kab dapamahčy vypravić prablemu."), + "subscribe": MessageLookupByLibrary.simpleMessage("Padpisacca"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Padpiski"), + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Dziakuj za dapamohu Quacker! 💖"), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "U hetaj hrupie niama padpisak!"), + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Hety karystalnik nikoha nie čytaje!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Hetaha karystalnika nichto nie čytaje!"), + "trending": MessageLookupByLibrary.simpleMessage("Aktualnaje"), + "tweets": MessageLookupByLibrary.simpleMessage("Tvity"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tvity dy Adkazy"), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Niemahčyma znajści vašyja zachavanyja tvity."), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Nie ŭdajecca zahruzić hrupy padpisak"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Niemahčyma zahruzić hrupu"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Niemahčyma zahruzić nałady hrupy"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Niemahčyma zahruzić śpis padpisak"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Niemahčyma zahruzić nastupnuju staronku čytalnych"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Nie ŭdajecca zahruzić nastupnuju staronku adkazaŭ"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Niemahčyma zahruzić nastupnuju staronku tvitaŭ"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Niemahčyma zahruzić profil"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Niemahčyma zahruzić vyniki pošuku."), + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Nie ŭdajecca zahruzić tvit"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Niemahčyma zahruzić tvity"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Niemahčyma zahruzić tvity dla stužki"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Adpisacca"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Ci žadajecie vy ŭklučyć aŭtamatyčnaje infarmavańnie ab pamyłkach?"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Vy jašče nie zachavali nivodnaha tvitu!"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Vaša spravazdača budzie dasłana ŭ Quacker, a infarmacyju pra kanfidencyjnaść možna znajści tut:") + }; +} diff --git a/lib/generated/intl/messages_ca.dart b/lib/generated/intl/messages_ca.dart new file mode 100644 index 00000000..09c69f76 --- /dev/null +++ b/lib/generated/intl/messages_ca.dart @@ -0,0 +1,464 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ca locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ca'; + + static String m0(name) => + "Estàs segur que vols suprimir el grup de subscripcions ${name}?"; + + static String m1(fileName) => "Dades exportades a ${fileName}"; + + static String m2(fullPath) => "Dades exportades a ${fullPath}"; + + static String m3(timeagoFormat) => "Acabat ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Acaba ${timeagoFormat}"; + + static String m5(snapshotData) => "Finalitzat amb ${snapshotData} usuaris"; + + static String m6(name) => "Grup: ${name}"; + + static String m7(snapshotData) => "${snapshotData} usuaris importats per ara"; + + static String m8(date) => "Es va unir el ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Cap vot', one: 'Un vot', two: 'Dos vots', few: '${numFormatted} vots', many: '${numFormatted} vot', other: '${numFormatted} vots')}"; + + static String m10(errorMessage) => + "Comprova la connexió a Internet.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Fes un toc per descarregar ${releaseVersion}"; + + static String m12(getMediaType) => "Fes un toc per mostrar ${getMediaType}"; + + static String m13(filePath) => + "El fitxer no existeix. Assegureu-vos que es troba a ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} retuitejat ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'cap tweets', one: 'un tweet', two: 'dos tweets', few: '${numFormatted} tweets', many: '${numFormatted} tweet', other: '${numFormatted} tweets')}"; + + static String m16(widgetPlaceName) => + "No s\'han pogut carregar les tendències per ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "No s\'ha pogut desar el suport. Twitter ha retornat un estat de ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Actualitza-ho a ${releaseVersion} a través del client de F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Quant a"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Compte suspés"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Amaga els autors del tuit. Eviteu el biaix de confirmació basat en arguments d\'autoritats."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Activa el mode de biaix de no confirmació"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Afegir al grup"), + "all": MessageLookupByLibrary.simpleMessage("Tot"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Tot el genial programari utilitzat per Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Hi ha disponible una actualització per Quacker! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("N\'estàs segur?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Enrere"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "El Twitter ha invalidat el testimoni d\'accés. Si us plau, proveu de tornar a obrir Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Tema blau basat en l\'esquema de colors de Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Error catastròfic"), + "choose": MessageLookupByLibrary.simpleMessage("Tria"), + "close": MessageLookupByLibrary.simpleMessage("Tanca"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Segur que vols tancar Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Col·laborar"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "S\'ha copiat l\'adreça al porta-retalls"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Versió copiada al porta-retalls"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut contactar amb Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "No s\'ha trobat cap tuit d\'aquest usuari!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "No s\'han trobat tuits dels últims 7 dies!"), + "country": MessageLookupByLibrary.simpleMessage("País"), + "dark": MessageLookupByLibrary.simpleMessage("Fosc"), + "data": MessageLookupByLibrary.simpleMessage("Dades"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Dades importades correctament"), + "date_created": MessageLookupByLibrary.simpleMessage("Data de Creació"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Data de Subscripció"), + "default_tab": + MessageLookupByLibrary.simpleMessage("Pestanya per defecte"), + "delete": MessageLookupByLibrary.simpleMessage("Eliminar"), + "disable_screenshots": MessageLookupByLibrary.simpleMessage( + "Deshabilita captures de pantalla"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Evita que es prenguin captures de pantalla. Pot ser que això no funcioni en tots els dispositius."), + "disabled": MessageLookupByLibrary.simpleMessage("Deshabilitat"), + "donate": MessageLookupByLibrary.simpleMessage("Donar"), + "download": MessageLookupByLibrary.simpleMessage("Descarregar"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Gestió de baixades"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Com ha de funcionar la baixada"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Pregunta sempre"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Desa al directori"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut descarregar. Aquest mitjà només pot estar disponible com a flux, cosa que Quacker encara no pot descarregar."), + "download_path": + MessageLookupByLibrary.simpleMessage("Ruta de descàrrega"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Descarregant suports..."), + "enable_": MessageLookupByLibrary.simpleMessage("Habilitar ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Introdeix el teu nom d\'usuari de Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Exportar"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Exportar la configuració?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Exportar els membres dels grups de subscripcions?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Exportar els grups de subscripcions?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Exportar les subscripcions?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Exportar tuits?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Expotar les teves dades"), + "feed": MessageLookupByLibrary.simpleMessage("Continguts"), + "filters": MessageLookupByLibrary.simpleMessage("Filtres"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Seguidors"), + "following": MessageLookupByLibrary.simpleMessage("Seguint"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "El Twitter diu que l\'accés a això està prohibit"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker blau"), + "general": MessageLookupByLibrary.simpleMessage("General"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grups"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Ajuda a fer que Quacker sigui encara millor"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Ajuda a donar suport al futur de Quacker"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Amaga els tuits sensibles"), + "home": MessageLookupByLibrary.simpleMessage("Inici"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Si tens algun comentari sobre aquesta funció, deixeu-la a"), + "import": MessageLookupByLibrary.simpleMessage("Importar"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importa dades des d\'un altre dispositiu"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importar de Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importar subscripcions"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Incloure respostes"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Incloure retuits"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Idioma"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Requereix reiniciar"), + "large": MessageLookupByLibrary.simpleMessage("Gran"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Importa de Legacy Android"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Fes saber als desenvolupadors si alguna cosa s\'ha trencat"), + "licenses": MessageLookupByLibrary.simpleMessage("Llicències"), + "light": MessageLookupByLibrary.simpleMessage("Clar"), + "live": MessageLookupByLibrary.simpleMessage("DIRECTE"), + "logging": MessageLookupByLibrary.simpleMessage("Enregistrament"), + "media": MessageLookupByLibrary.simpleMessage("Mèdia"), + "media_size": MessageLookupByLibrary.simpleMessage("Tamany de mèdia"), + "medium": MessageLookupByLibrary.simpleMessage("Mitjà"), + "name": MessageLookupByLibrary.simpleMessage("Nom"), + "newTrans": MessageLookupByLibrary.simpleMessage("Nou"), + "no": MessageLookupByLibrary.simpleMessage("No"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "No s\'han retornat dades, cosa que no hauria de passar mai. Si us plau, informa de l\'error, si és possible!"), + "no_results": MessageLookupByLibrary.simpleMessage("Sense resultats"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Cap resultat per:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "No hi ha subscripcions. Prova de cercar-ne o importar-ne alguna!"), + "not_set": MessageLookupByLibrary.simpleMessage("No establert"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Nota: A causa d\'una limitació de Twitter, no es poden incloure tots els tuits"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("D\'acord"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Ui! Alguna cosa ha anat malament 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage( + "Obre la configuració de l\'aplicació"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter diu que la pàgina no existeix, però pot ser que no sigui veritat"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "No s\'ha concedit el permís. Torneu-ho a provar després de concedir-lo!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Tria un color!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Escull una icona!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Tuit ancorat"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Velocitat de reproducció"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": MessageLookupByLibrary.simpleMessage( + "Si us plau introdueix un nom"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Assegura\'t que les dades a importar es troben en aquesta direcció, i prem el botó d\'importar a continuació."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Tingueu en compte que el mètode que Quacker utilitza per importar subscripcions està fortament limitat per Twitter, de manera que això pot fallar si teniu molts comptes seguits."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potencialment sensible"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Aquest perfil pot incloure imatges, vocabulari o contingut potencialment sensible. Segur que vols veure\'l?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Aquest tuit conté contingut potencialment sensible. Vols veure\'l?"), + "prefix": MessageLookupByLibrary.simpleMessage("prefix"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Perfil privat"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Llançat sota la llicència MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("Responent a"), + "report": MessageLookupByLibrary.simpleMessage("Reportar"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Informar d\'un error"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Reportar un error"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Reinicia a les pàgines per defecte"), + "retry": MessageLookupByLibrary.simpleMessage("Reintentar"), + "save": MessageLookupByLibrary.simpleMessage("Desa"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Estalviar amplada de banda amb imatges més petites"), + "saved": MessageLookupByLibrary.simpleMessage("Desat"), + "search": MessageLookupByLibrary.simpleMessage("Cerca"), + "search_term": MessageLookupByLibrary.simpleMessage("Terme de cerca"), + "select": MessageLookupByLibrary.simpleMessage("Selecciona"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "La selecció de comptes individuals per importar i l\'assignació de grups ja estan planificats per al futur!"), + "send": MessageLookupByLibrary.simpleMessage("Enviar"), + "share_tweet_content": MessageLookupByLibrary.simpleMessage( + "Compartir el contingut del tuit"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Comparteix contingut i enllaç del tuit"), + "share_tweet_link": MessageLookupByLibrary.simpleMessage( + "Compartir l\'enllaç del tuit"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Comprova si hi ha actualitzacions a l\'iniciar Quacker"), + "should_check_for_updates_label": MessageLookupByLibrary.simpleMessage( + "Comprova si hi ha actualitzacions"), + "small": MessageLookupByLibrary.simpleMessage("Petit"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "S\'ha trencat alguna cosa a Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Alguna cosa ha sortit malament a Quacker i s\'ha generat un informe d\'error. L\'informe es pot enviar als desenvolupadors de Quacker per ajudar a solucionar el problema."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Disculpa, el tuit contestat no s\'ha pogut trobar!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Subscriure"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Subscripcions"), + "subtitles": MessageLookupByLibrary.simpleMessage("Subtítols"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Suport desat!"), + "system": MessageLookupByLibrary.simpleMessage("Sistema"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Gràcies per ajudar a Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": MessageLookupByLibrary.simpleMessage( + "el problema de GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "El tuit no contenia text. Això és inesperat"), + "theme": MessageLookupByLibrary.simpleMessage("Tema"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Mode del tema"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "No s\'han retornat les tendències. Això és inesperat! Si us plau, informeu-ho com a error, si és possible."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Aquest grup no conté subscripcions!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Ha trigat massa a carregar-se. Comprova la connexió de xarxa!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Aquest tuit no està disponible. Provablement s\'ha eliminat."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Aquest usuari no segueix a ningú!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Aquest usuari no té ningú que els segueixi!"), + "thread": MessageLookupByLibrary.simpleMessage("Fil"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniatura"), + "timed_out": MessageLookupByLibrary.simpleMessage("Temps excedit"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Per importar subscripcions des d\'un compte de Twitter existent, introduïu el vostre nom d\'usuari a continuació."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Commuta-ho tot"), + "trending": MessageLookupByLibrary.simpleMessage("Tendències"), + "trends": MessageLookupByLibrary.simpleMessage("Tendències"), + "true_black": + MessageLookupByLibrary.simpleMessage("Veritablement Fosc?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tuits"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweets i Respostes"), + "tweets_number": m15, + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "No s\'han pogut trobar les ubicacions de tendència disponibles."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "No s\'han pogut trobar els tweets desats."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("No s\'ha pogut importar"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut carregar la pàgina d\'inici"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "No s\'han pogut carregar les subscripcions als grups"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut carregar el grup"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "No es pot carregar la configuració del grup"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "No es pot carregar la llista de Seguint"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "No es pot carregar la pàgina següent de Seguint"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut carregar la pròxima pàgina de respostes"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "No es pot carregar la següent pàgina de tuits"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut carregar el perfil"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "No s\'han pogut carregar els resultats de la cerca."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut carregat el tuit"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "No s\'han pogut carregar els tweets"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "No es poden carregar els tuits del canal de Continguts"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "No s\'han pogut actualitzar les subscripcions"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "No s\'han pogut executar les migracions de la base de dades"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "No s\'ha pogut transmetre la preferència d\'ubicació de la tendència"), + "unknown": MessageLookupByLibrary.simpleMessage("Desconegut"), + "unsave": MessageLookupByLibrary.simpleMessage("Desfés"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Anul·lar subscripció"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Actualitzacions"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Utilitza negre veritable per al tema del mode fosc"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Usuari no trobat"), + "username": MessageLookupByLibrary.simpleMessage("Nom d\'usuari"), + "version": MessageLookupByLibrary.simpleMessage("Versió"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Quan hi ha disponible una nova actualització d\'una aplicació"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Si s\'han d\'informar els errors a "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Si s\'han d\'ocultar els tuits marcats com a sensibles"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Quina pestanya es mostra quan s\'obre l\'aplicació"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Voleu habilitar l\'informe automàtic d\'errors?"), + "yes": MessageLookupByLibrary.simpleMessage("Sí"), + "yes_please": MessageLookupByLibrary.simpleMessage("Sí, si us plau"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Encara no has desat cap tweet!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Heu de tenir almenys 2 pàgines de pantalla d\'inici"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "El teu perfil ha de ser públic, en cas contrari la importació no funcionarà"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "L\'informe s\'enviarà al projecte de Quacker, els detalls de privadesa es poden trobar a:") + }; +} diff --git a/lib/generated/intl/messages_cs.dart b/lib/generated/intl/messages_cs.dart new file mode 100644 index 00000000..9158d891 --- /dev/null +++ b/lib/generated/intl/messages_cs.dart @@ -0,0 +1,487 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a cs locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'cs'; + + static String m0(name) => "Opravdu chcete odstranit skupinu ${name}?"; + + static String m1(fileName) => "Data exportována do ${fileName}"; + + static String m2(fullPath) => "Data exportována do ${fullPath}"; + + static String m3(timeagoFormat) => "Ukončeno ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Končí za ${timeagoFormat}"; + + static String m5(snapshotData) => "Dokončeno s ${snapshotData} uživateli"; + + static String m6(name) => "Skupina: ${name}"; + + static String m7(snapshotData) => + "Zatím importováno ${snapshotData} uživatelů"; + + static String m8(date) => "Připojen/a ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Žádné hlasy', one: 'Jeden hlas', two: 'Dva hlasy', few: '${numFormatted} hlasy', many: '${numFormatted} hlasů', other: '${numFormatted} hlasů')}"; + + static String m10(errorMessage) => + "Zkontrolujte prosím vaše připojení k internetu.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "Ťukněte pro stažení ${releaseVersion}"; + + static String m12(getMediaType) => "Ťukněte pro zobrazení ${getMediaType}"; + + static String m13(filePath) => + "Soubor neexistuje. Ujistěte se, že se nachází v ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} retweetnul ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'žádné tweety', one: 'jeden tweet', two: 'dva tweety', few: '${numFormatted} tweety', many: '${numFormatted} tweetů', other: '${numFormatted} tweetů')}"; + + static String m16(widgetPlaceName) => + "Nepodařilo se načíst trendy pro ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Nepodařilo se uložit média. Twitter vrátil stav ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Aktualizovat na ${releaseVersion} pomocí F-Droidu"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("O aplikaci"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Účet pozastaven"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Skrýt autory tweetů. Vyhněte se konfirmačnímu zkreslení na základě autoritativních argumentů."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Aktivovat režim zkreslení bez potvrzení"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Přidat odběry"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Přidat do skupiny"), + "all": MessageLookupByLibrary.simpleMessage("Vše"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Všechen úžasný software používaný Quackerem"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Je dostupná aktualizace Quackeru! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Opravdu?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Zpět"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter zneplatnil náš přístupový token. Zkuste prosím znovu otevřít Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Modré téma založené na barevném schématu Twitteru"), + "cancel": MessageLookupByLibrary.simpleMessage("Zrušit"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Katastrofické selhání"), + "choose": MessageLookupByLibrary.simpleMessage("Vybrat"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Vybrat stránky"), + "close": MessageLookupByLibrary.simpleMessage("Zavřít"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Opravdu chcete zavřít Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Pomoct s vývojem"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Adresa zkopírována do schránky"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Verze zkopírována do schránky"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Nepodařilo se kontaktovat Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se nalézt žádné tweety tohoto uživatele!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se nalézt žádné tweety z posledních 7 dnů!"), + "country": MessageLookupByLibrary.simpleMessage("Země"), + "dark": MessageLookupByLibrary.simpleMessage("Tmavé"), + "data": MessageLookupByLibrary.simpleMessage("Data"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Data úspěšně importována"), + "date_created": MessageLookupByLibrary.simpleMessage("Datum vytvoření"), + "date_subscribed": MessageLookupByLibrary.simpleMessage("Datum odběru"), + "default_tab": MessageLookupByLibrary.simpleMessage("Výchozí karta"), + "delete": MessageLookupByLibrary.simpleMessage("Odstranit"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Zakázat snímky obrazovky"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Zabránit pořizování snímků obrazovky. Nemusí fungovat na všech zařízeních."), + "disabled": MessageLookupByLibrary.simpleMessage("Zakázáno"), + "donate": MessageLookupByLibrary.simpleMessage("Přispět"), + "download": MessageLookupByLibrary.simpleMessage("Stáhnout"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Způsob stahování"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Způsob, jakým by mělo fungovat stahování"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Vždy se zeptat"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Uložit do adresáře"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Nepodařilo se stáhnout média. Možná jsou dostupná jen jako stream, který Quacker zatím nedokáže stáhnout."), + "download_path": + MessageLookupByLibrary.simpleMessage("Cesta pro stažené"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Stahování médií..."), + "enable_": MessageLookupByLibrary.simpleMessage("Povolit ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Zadejte vaše uživatelské jméno na Twitteru"), + "export": MessageLookupByLibrary.simpleMessage("Exportovat"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Exportovat nastavení?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Exportovat členy skupin odběrů?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("Exportovat skupiny odběrů?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Exportovat odběry?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Exportovat tweety?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Exportovat vaše data"), + "feed": MessageLookupByLibrary.simpleMessage("Zdroj"), + "filters": MessageLookupByLibrary.simpleMessage("Filtry"), + "finish": MessageLookupByLibrary.simpleMessage("Dokončit"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Sledující"), + "following": MessageLookupByLibrary.simpleMessage("Sledování"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter říká, že přístup k tomuto je zamítnut"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": + MessageLookupByLibrary.simpleMessage("Quackerová modrá"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Tato funkce již není podporována Twitterem!"), + "general": MessageLookupByLibrary.simpleMessage("Obecné"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Skupiny"), + "help_make_fritter_even_better": + MessageLookupByLibrary.simpleMessage("Pomozte vylepšit Quacker"), + "help_support_fritters_future": + MessageLookupByLibrary.simpleMessage("Podpořte vývoj Quackeru"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Skrýt citlivé tweety"), + "home": MessageLookupByLibrary.simpleMessage("Domů"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Pokud máte ohledně této funkce jakoukoli zpětnou vazbu, zanechte ji prosím"), + "import": MessageLookupByLibrary.simpleMessage("Importovat"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importovat data z jiného zařízení"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importovat z Twitteru"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importovat odběry"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Zahrnout odpovědi"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Zahrnout retweety"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Jazyk"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Vyžaduje restart"), + "large": MessageLookupByLibrary.simpleMessage("Velký"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Import ze starších Androidů"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Dejte vývojářům vědět, že je něco rozbité"), + "licenses": MessageLookupByLibrary.simpleMessage("Licence"), + "light": MessageLookupByLibrary.simpleMessage("Světlé"), + "live": MessageLookupByLibrary.simpleMessage("ŽIVĚ"), + "logging": MessageLookupByLibrary.simpleMessage("Protokolování"), + "media": MessageLookupByLibrary.simpleMessage("Média"), + "media_size": MessageLookupByLibrary.simpleMessage("Velikost médií"), + "medium": MessageLookupByLibrary.simpleMessage("Střední"), + "missing_page": + MessageLookupByLibrary.simpleMessage("Chybějící stránka"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Zda mají být videa ve výchozím nastavení ztlumena"), + "mute_videos": MessageLookupByLibrary.simpleMessage("Ztlumit videa"), + "name": MessageLookupByLibrary.simpleMessage("Název"), + "newTrans": MessageLookupByLibrary.simpleMessage("Nová"), + "next": MessageLookupByLibrary.simpleMessage("Další"), + "no": MessageLookupByLibrary.simpleMessage("Ne"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Nebyla vrácena žádná data, což by se nikdy nemělo stát. Pokud je to možné, nahlaste to prosím jako chybu!"), + "no_results": MessageLookupByLibrary.simpleMessage("Žádné výsledky"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Žádné výsledky pro:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Žádné odběry. Zkuste nějaké vyhledat nebo importovat!"), + "not_set": MessageLookupByLibrary.simpleMessage("Nenastaveno"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Poznámka: kvuli imitaci Twitteru nemusí byt zahrnuty všechny tweety"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Odběry lze importovat pouze z veřejných profilů"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Jejda! Něco se pokazilo 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Otevřít nastavení aplikace"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter říká, že stránka neexistuje, nemusí to ale být pravda"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Oprávnění nebylo uděleno. Zkuste to prosím znovu po jeho udělení!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Vyberte si barvu!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Vyberte si ikonu!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Připnutý tweet"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Rychlost přehrávání"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Zadejte prosím název"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Ujistěte se, že data, která chcete importovat, se zde nachází a poté stiskněte tlačítko níže."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Vezměte prosím na vědomí, že způsob, který používá Quacker pro import odběrů je silně limitován Twitterem, takže při velkém množství sledovaných účtů může tato akce selhat."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potenciálně citlivé"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Tento profil může obsahovat potenciálně citlivé obrázky, jazyk nebo jiný obsah. Chcete jej přesto zobrazit?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Tento tweet obsahuje potenciálně citlivý obsah. Chcete jej zobrazit?"), + "prefix": MessageLookupByLibrary.simpleMessage("předpona"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Soukromý profil"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("Vydáno pod licencí MIT"), + "replying_to": + MessageLookupByLibrary.simpleMessage("Odpověď uživateli"), + "report": MessageLookupByLibrary.simpleMessage("Nahlásit"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("Nahlásit chybu"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Nahlašování chyby"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Obnovit výchozí nastavení stránek"), + "retry": MessageLookupByLibrary.simpleMessage("Zkusit znovu"), + "save": MessageLookupByLibrary.simpleMessage("Uložit"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Ušetřete data s menšími obrázky"), + "saved": MessageLookupByLibrary.simpleMessage("Uloženo"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Tento uložený tweet nebylo možné zobrazit, protože je příliš velký na to, aby se načetl. Nahlaste to prosím vývojářům."), + "search": MessageLookupByLibrary.simpleMessage("Hledat"), + "search_term": MessageLookupByLibrary.simpleMessage("Hledaný výraz"), + "select": MessageLookupByLibrary.simpleMessage("Vybrat"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Vybírání individuálních účtů pro import a přidělování skupin jsou již v plánu!"), + "send": MessageLookupByLibrary.simpleMessage("Odeslat"), + "share_base_url": + MessageLookupByLibrary.simpleMessage("Vlastní adresa URL sdílení"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Použít vlastní základní adresu URL při sdílení"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Sdílet obsah tweetu"), + "share_tweet_content_and_link": + MessageLookupByLibrary.simpleMessage("Sdílet obsah tweetu a odkaz"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Sdílet odkaz na tweet"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Zkontrolovat aktualizace při spuštění Quackeru"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Zkontrolovat aktualizace"), + "small": MessageLookupByLibrary.simpleMessage("Malý"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Něco se pokazilo ve Quackeru."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Ve Quackeru se něco pokazilo a byl vygenerován záznam o chybě. Záznam může být odeslán vývojářům Quackeru pro vyřešení problému."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Omlouváme se, ale odpovídaný tweety nebyl nalezen!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Odebírat"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Odběry"), + "subtitles": MessageLookupByLibrary.simpleMessage("Titulky"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Média uložena!"), + "system": MessageLookupByLibrary.simpleMessage("Systémové"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Děkujeme za pomoc Quackeru! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("problém na GitHubu (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Tweety neobsahoval žádný text. Toto je neočekávané"), + "theme": MessageLookupByLibrary.simpleMessage("Téma"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Režim motivu"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Nebyly vráceny žádné trendy. Toto je neočekávané! Pokud je to možné, nahlaste to prosím jako chybu."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Tato skupina neobsahuje žádné odběry!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Tento obsah se načítal příliš dlouho. Zkontrolujte prosím vaše připojení k internetu!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Tento tweet je nedostupný. Nejspíš byl odstraněn."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Tento uživatel nikoho nesleduje!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Tohoto uživatele nikdo nesleduje!"), + "thread": MessageLookupByLibrary.simpleMessage("Vlákno"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Náhled"), + "timed_out": MessageLookupByLibrary.simpleMessage("Vypršel čas"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Pro import odběrů z existujícího Twitter účtu zadejte níže vaše uživatelské jméno."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Přepnout vše"), + "trending": MessageLookupByLibrary.simpleMessage("Trendy"), + "trends": MessageLookupByLibrary.simpleMessage("Trendy"), + "true_black": MessageLookupByLibrary.simpleMessage("Pravá černá?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweety"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweety a odpovědi"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Musíte mít alespoň 2 stránky domovské obrazovky."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se nalézt umístění trendů."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se nalézt vaše uložené tweety."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Import se nezdařil"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst vaše domovské stránky"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst skupiny odběrů"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst skupinu"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst nastavení skupiny"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst seznam sledování"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst další stránku sledování"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst další stránku odpovědí"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst další stránku tweetů"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Nepodařilo se načíst profil"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst výsledky hledání."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Nepodařilo se načíst tweet"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Nepodařilo se načíst tweety"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se načíst tweety pro váš zdroj"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se znovu načíst odběry"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se spustit migrace databáze"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Nepodařilo se stremovat předvolbu umístění trendů"), + "unknown": MessageLookupByLibrary.simpleMessage("Neznámé"), + "unsave": MessageLookupByLibrary.simpleMessage("Zrušit uložení"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Zrušit odběr"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("Nepodporovaná adresa URL"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Aktualizace"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Použít pravou černou pro tmavé téma"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Uživatel nenalezen"), + "username": MessageLookupByLibrary.simpleMessage("Uživatelské jméno"), + "version": MessageLookupByLibrary.simpleMessage("Verze"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Když je dostupná aktualizace aplikace"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Nastavit, zda mají být chyby nahlašovány do "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Zda skrývat tweety označené jako citlivé"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Karta, která bude zobrazena při otevření aplikace"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Chcete povolit automatické nahlašování?"), + "yes": MessageLookupByLibrary.simpleMessage("Ano"), + "yes_please": MessageLookupByLibrary.simpleMessage("Ano, prosím"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Zatím jste si neuložili žádné tweety!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Musíte mít alespoň 2 stránky domovské obrazovky"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Váš profil musí být veřejný, jinak nebude import fungovat"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Vaše nahlášení bylo odesláno do projektu Quackeru. Podrobnosti o soukromí lze nalézt na:") + }; +} diff --git a/lib/generated/intl/messages_de.dart b/lib/generated/intl/messages_de.dart new file mode 100644 index 00000000..5aef9ba5 --- /dev/null +++ b/lib/generated/intl/messages_de.dart @@ -0,0 +1,490 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a de locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'de'; + + static String m0(name) => + "Bist du dir sicher, dass du die Gruppe ${name} löschen willst?"; + + static String m1(fileName) => "Daten wurden exportiert nach ${fileName}"; + + static String m2(fullPath) => "Daten wurden exportiert nach ${fullPath}"; + + static String m3(timeagoFormat) => "Beendet vor ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Endet ${timeagoFormat}"; + + static String m5(snapshotData) => + "Beendet mit insgesamt ${snapshotData} Nutzern"; + + static String m6(name) => "Gruppe: ${name}"; + + static String m7(snapshotData) => + "${snapshotData} bisher importierte Benutzer"; + + static String m8(date) => "Seit ${date} bei Twitter"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'keine Stimmen', one: 'eine Stimme', two: 'zwei Stimmen', few: '${numFormatted} Stimmen', many: '${numFormatted} Stimmen', other: '${numFormatted} Stimmen')}"; + + static String m10(errorMessage) => + "Bitte überprüfe deine Internetverbindung.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Antippen, um Version ${releaseVersion} herunterzuladen"; + + static String m12(getMediaType) => "Antippen, um ${getMediaType} anzuzeigen"; + + static String m13(filePath) => + "Diese Datei existiert nicht. Bitte stelle sicher, dass sie sich unter ${filePath} befindet"; + + static String m14(thisTweetUserName, timeAgo) => + "Retweet von ${thisTweetUserName} ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'keine tweets', one: 'ein tweet', two: 'zwei tweets', few: '${numFormatted} tweets', many: '${numFormatted} tweets', other: '${numFormatted} tweets')}"; + + static String m16(widgetPlaceName) => + "Trends für ${widgetPlaceName} konnten nicht geladen werden"; + + static String m17(responseStatusCode) => + "Medien konnten nicht gespeichert werden. Twitter gab folgenden Statuscode zurück: ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Update auf Version ${releaseVersion} über F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Über"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Nutzerkonto gesperrt"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Tweetautor verbergen. Vermeide Bestätigungsfehler aufgrund von Autoritätsargumenten."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Non-Confirmation-Bias-Modus aktivieren"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Abonnements hinzufügen"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Zu Gruppe hinzufügen"), + "all": MessageLookupByLibrary.simpleMessage("Alle"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "All die fantastische Software, die Quacker verwendet"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Ein Update für Quacker ist verfügbar! 🚀"), + "are_you_sure": + MessageLookupByLibrary.simpleMessage("Bist du dir sicher?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Zurück"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Der Zugangs-Token ist nicht mehr gültig. Versuche Quacker erneut zu öffnen!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Blaues Design basierend auf dem Twitter-Farbschema"), + "cancel": MessageLookupByLibrary.simpleMessage("Abbrechen"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Totalausfall"), + "choose": MessageLookupByLibrary.simpleMessage("Wählen"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Wähle Seiten"), + "close": MessageLookupByLibrary.simpleMessage("Schließen"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Willst du Quacker wirklich schließen?"), + "contribute": MessageLookupByLibrary.simpleMessage("Beteilige dich"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Link in Zwischenablage kopiert"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Version in Zwischenablage kopiert"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Es konnte keine Verbindung zu Twitter aufgebaut werden"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Keine Tweets von diesem Nutzer gefunden!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Keine Tweets aus den letzten 7 Tagen gefunden!"), + "country": MessageLookupByLibrary.simpleMessage("Land"), + "dark": MessageLookupByLibrary.simpleMessage("Dunkel"), + "data": MessageLookupByLibrary.simpleMessage("Daten"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Daten erfolgreich importiert"), + "date_created": + MessageLookupByLibrary.simpleMessage("Erstellungsdatum"), + "date_subscribed": MessageLookupByLibrary.simpleMessage("Abo-Datum"), + "default_tab": MessageLookupByLibrary.simpleMessage("Standard-Tab"), + "delete": MessageLookupByLibrary.simpleMessage("Löschen"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Screenshots deaktivieren"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Versucht zu verhindern, dass Screenshots von Fritter gemacht werden können. Dies ist keine Garantie und funktioniert möglicherweise nicht auf allen Geräten."), + "disabled": MessageLookupByLibrary.simpleMessage("Deaktiviert"), + "donate": MessageLookupByLibrary.simpleMessage("Spenden"), + "download": MessageLookupByLibrary.simpleMessage("Herunterladen"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Downloadverhalten"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "So soll das Herunterladen funktionieren"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Immer fragen"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Speichern in Ordner"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Download nicht möglich. Diese Datei ist möglicherweise nur als Stream verfügbar, welche Quacker noch nicht herunterladen kann."), + "download_path": MessageLookupByLibrary.simpleMessage("Download-Pfad"), + "downloading_media": MessageLookupByLibrary.simpleMessage( + "Medien werden heruntergeladen..."), + "enable_": MessageLookupByLibrary.simpleMessage(" aktivieren?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Gebe deinen Twitter-Nutzernamen ein"), + "export": MessageLookupByLibrary.simpleMessage("Exportieren"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Einstellungen exportieren?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Abo-Gruppen mit beinhalteten Accounts exportieren?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("Abo-Gruppen exportieren?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Abonnements exportieren?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Tweets exportieren?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Daten exportieren"), + "feed": MessageLookupByLibrary.simpleMessage("Feed"), + "filters": MessageLookupByLibrary.simpleMessage("Filter"), + "finish": MessageLookupByLibrary.simpleMessage("Fertig"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Follower"), + "following": MessageLookupByLibrary.simpleMessage("Folgt"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Zugang zu diesem Inhalt laut Twitter nicht gestattet"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker Blue"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Diese Funktion wird von Twitter nicht mehr unterstützt!"), + "general": MessageLookupByLibrary.simpleMessage("Allgemein"), + "generic_username": MessageLookupByLibrary.simpleMessage("Benutzer"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Gruppen"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Hilf dabei, Quacker noch besser zu machen"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Unterstütze Quackers Zukunft"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Anstößige Tweets ausblenden"), + "home": MessageLookupByLibrary.simpleMessage("Start"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Wenn du Feedback zu dieser Funktion hast, hinterlasse es bitte unter"), + "import": MessageLookupByLibrary.simpleMessage("Importieren"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Daten von einem anderen Gerät importieren"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Von Twitter importieren"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Abonnements importieren"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Antworten anzeigen"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Retweets anzeigen"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Sprache"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Neustart erforderlich"), + "large": MessageLookupByLibrary.simpleMessage("Groß"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Von Legacy-Android-Geräten importieren"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Teile den Entwicklern mit, falls etwas nicht funktioniert"), + "licenses": MessageLookupByLibrary.simpleMessage("Lizenzen"), + "light": MessageLookupByLibrary.simpleMessage("Hell"), + "live": MessageLookupByLibrary.simpleMessage("LIVE"), + "logging": MessageLookupByLibrary.simpleMessage("Protokollierung"), + "media": MessageLookupByLibrary.simpleMessage("Medien"), + "media_size": MessageLookupByLibrary.simpleMessage("Mediengröße"), + "medium": MessageLookupByLibrary.simpleMessage("Mittel"), + "missing_page": MessageLookupByLibrary.simpleMessage("Fehlende Seite"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Ob Videos standardmäßig stumm sein sollen"), + "mute_videos": + MessageLookupByLibrary.simpleMessage("Videos stumm schalten"), + "name": MessageLookupByLibrary.simpleMessage("Name"), + "newTrans": MessageLookupByLibrary.simpleMessage("Neu"), + "next": MessageLookupByLibrary.simpleMessage("Weiter"), + "no": MessageLookupByLibrary.simpleMessage("Nein"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Keine Daten empfangen - das sollte nie passieren. Bitte, falls möglich, Fehler melden!"), + "no_results": MessageLookupByLibrary.simpleMessage("Keine Ergebnisse"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Keine Ergebnisse für:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Keine Abonnements. Suche oder importiere welche!"), + "not_set": MessageLookupByLibrary.simpleMessage("Nicht festgelegt"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Hinweis: Aufgrund einer Beschränkung seitens Twitter werden möglicherweise nicht alle Tweets angezeigt"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Abonnements können nur von öffentlichen Profilen geladen werden"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Oh nein! Ein Fehler ist aufgetreten 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("App-Einstellungen öffnen"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter behauptet diese Seite existiere nicht"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Berechtigung nicht erteilt. Versuche es nach der Erteilung erneut!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Wähle eine Farbe!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Wähle ein Symbol!"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("Angehefteter Tweet"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Wiedergabegeschwindigkeit"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Bitte einen Namen eingeben"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Vergewisser dich, dass sich die zu importierenden Daten dort befinden und klicke dann auf die Importieren-Schaltfläche unten."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Bitte beachte, dass Quacker zum Importieren der Abonnements eine von Twitter stark durchsatzratenbegrenzte Methode verwendet. Der Import schlägt möglicherweise fehl, wenn du vielen Accounts folgst."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potentiell anstößig"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Auf diesem Profil befinden sich potentiell anstößige Bilder, Sprache oder anderes Material. Willst du es wirklich sehen?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Dieser Tweet könnte anstößiges Material enthalten. Möchtest du den Tweet sehen?"), + "prefix": MessageLookupByLibrary.simpleMessage("Präfix"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Privates Profil"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Unter der MIT-Lizenz herausgegeben"), + "replying_to": MessageLookupByLibrary.simpleMessage("Antwort auf"), + "report": MessageLookupByLibrary.simpleMessage("Bericht"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("Fehler melden"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Fehler melden"), + "reset_home_pages": + MessageLookupByLibrary.simpleMessage("Startseite zurücksetzen"), + "retry": MessageLookupByLibrary.simpleMessage("Erneut versuchen"), + "save": MessageLookupByLibrary.simpleMessage("Speichern"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Datennutzung mittels kleinerer Auflösung sparen"), + "saved": MessageLookupByLibrary.simpleMessage("Archiv"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Der gespeicherte Tweet konnte nicht geladen werden, da er zu groß ist. Bitte melde das Problem den Entwicklern."), + "search": MessageLookupByLibrary.simpleMessage("Suche"), + "search_term": MessageLookupByLibrary.simpleMessage("Suchbegriff"), + "select": MessageLookupByLibrary.simpleMessage("Auswählen"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Die Auswahl einzelner Accounts zum Importieren und die Zuweisung zu Gruppen sind bereits in Planung!"), + "send": MessageLookupByLibrary.simpleMessage("Senden"), + "share_base_url": + MessageLookupByLibrary.simpleMessage("Eigene Teilen-URL"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Nutze beim Teilen eine andere Basisadresse"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Tweet-Inhalt teilen"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Tweet-Inhalt und Link teilen"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Tweet-Link teilen"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Beim Start von Quacker nach Aktualisierungen suchen"), + "should_check_for_updates_label": MessageLookupByLibrary.simpleMessage( + "Nach Aktualisierungen suchen"), + "small": MessageLookupByLibrary.simpleMessage("Klein"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Etwas in Quacker ist kaputt."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Etwas ist schief gelaufen und ein Fehlerbericht wurde erstellt. Der Bericht kann an die Quacker-Entwickler gesendet werden, um bei der Problembehebung zu helfen."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Entschuldigung! Der beantwortete Tweet konnte nicht gefunden werden!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Abonnieren"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Abos"), + "subtitles": MessageLookupByLibrary.simpleMessage("Untertitel"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Datei gespeichert!"), + "system": MessageLookupByLibrary.simpleMessage("System"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Danke, dass du Quacker unterstützt! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("dem GitHub-Issue (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Der Tweet enthält keinen Text. Das kommt unerwartet"), + "theme": MessageLookupByLibrary.simpleMessage("Design"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Design-Modus"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Keine Trends gefunden. Das kommt unerwartet! Bitte, falls möglich, Fehler melden."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Diese Gruppe enthält keine Abonnements!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Das Laden hat zu lange gedauert. Überprüfe deine Internetverbindung!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Dieser Tweet ist nicht verfügbar. Er wurde wahrscheinlich gelöscht."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Dieser Nutzer folgt niemandem!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Dieser Nutzer hat keine Follower!"), + "thread": MessageLookupByLibrary.simpleMessage("Diskussionsfaden"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Vorschaubild"), + "timed_out": MessageLookupByLibrary.simpleMessage("Zeit abgelaufen"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Gebe unten deinen Nutzernamen an, um Abonnements von einem bestehenden Twitter-Konto zu importieren."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Alle auswählen"), + "trending": MessageLookupByLibrary.simpleMessage("Trends"), + "trends": MessageLookupByLibrary.simpleMessage("Trends"), + "true_black": MessageLookupByLibrary.simpleMessage("Reines Schwarz?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweets"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweets & Antworten"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Du musst mindestens 2 Tabs auf der Startseite haben."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Die verfügbaren Trend-Regionen konnten nicht gefunden werden."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Gespeicherte Tweets können nicht gefunden werden."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Import nicht möglich"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Laden der Startseite nicht möglich"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Abo-Gruppen können nicht geladen werden"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "Die Abo-Gruppe konnte nicht geladen werden"), + "unable_to_load_the_group_settings": MessageLookupByLibrary.simpleMessage( + "Die Einstellungen für die Abo-Gruppe konnten nicht geladen werden"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Die Liste der Follower kann nicht geladen werden"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Die weiteren Follower können nicht geladen werden"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Nächste Antworten können nicht geladen werden"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Die nächsten Tweets können nicht geladen werden"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Das Profil kann nicht geladen werden"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Die Suchergebnisse können nicht geladen werden."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Der Tweet kann nicht geladen werden"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Die Tweets können nicht geladen werden"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Die Tweets für die Timeline können nicht geladen werden"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Abonnements konnten nicht aktualisiert werden"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Die Datenbankmigrationen können nicht ausgeführt werden"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Die Trendortpräferenz kann nicht gestreamt werden"), + "unknown": MessageLookupByLibrary.simpleMessage("Unbekannt"), + "unsave": MessageLookupByLibrary.simpleMessage("Nicht mehr speichern"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Deabonnieren"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("Nicht unterstützte URL"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Updates"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Reines Schwarz für dunkles Design verwenden"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Nutzer wurde nicht gefunden"), + "username": MessageLookupByLibrary.simpleMessage("@Nutzername"), + "version": MessageLookupByLibrary.simpleMessage("Version"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Sobald ein neues Update der App verfügbar ist"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Ob Fehlermeldungen an gesendet werden sollen"), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Ob Tweets, die als anstößig gekennzeichnet sind, ausgeblendet werden sollen"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Welcher Tab beim Öffnen der App angezeigt wird"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Möchtest du die automatische Fehlermeldungen aktivieren?"), + "yes": MessageLookupByLibrary.simpleMessage("Ja"), + "yes_please": MessageLookupByLibrary.simpleMessage("Ja bitte"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Du hast noch keine Tweets gespeichert!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Du musst mindestens 2 Tabs auf der Startseite haben"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Ein öffentliches Profil ist erforderlich, sonst funktioniert der Import nicht"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Deine Meldung wird an Quackers -Projektseite gesendet. Einzelheiten zum Datenschutz findest du unter:") + }; +} diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart new file mode 100644 index 00000000..b133af44 --- /dev/null +++ b/lib/generated/intl/messages_en.dart @@ -0,0 +1,484 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a en locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'en'; + + static String m0(name) => + "Are you sure you want to delete the subscription group ${name}?"; + + static String m1(fileName) => "Data exported to ${fileName}"; + + static String m2(fullPath) => "Data exported to ${fullPath}"; + + static String m3(timeagoFormat) => "Ended ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Ends ${timeagoFormat}"; + + static String m5(snapshotData) => "Finished with ${snapshotData} users"; + + static String m6(name) => "${name}"; + + static String m7(snapshotData) => "${snapshotData} users imported so far"; + + static String m8(date) => "Joined ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'No votes', one: 'One vote', two: 'Two votes', few: '${numFormatted} votes', many: '${numFormatted} vote', other: '${numFormatted} votes')}"; + + static String m10(errorMessage) => + "Please check your Internet connection.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "Tap to download ${releaseVersion}"; + + static String m12(getMediaType) => "Tap to show ${getMediaType}"; + + static String m13(filePath) => + "The file does not exist. Please ensure it is located at ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} retweeted ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'no tweets', one: 'one tweet', two: 'two tweets', few: '${numFormatted} tweets', many: '${numFormatted} tweet', other: '${numFormatted} tweets')}"; + + static String m16(widgetPlaceName) => + "Unable to load the trends for ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Unable to save the media. Twitter returned a status of ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Update to ${releaseVersion} through your F-Droid client"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("About"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Account suspended"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Hide tweet authors. Avoid confirmation bias based on authoritative arguments."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Activate non-confirmation bias mode"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Add subscriptions"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Add to group"), + "all": MessageLookupByLibrary.simpleMessage("All"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "All the great software used by Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "An update for Quacker is available! 🚀"), + "app_info": MessageLookupByLibrary.simpleMessage("App Info"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Are you sure?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Back"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter has invalidated our access token. Please try re-opening Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Blue theme based on the Twitter color scheme"), + "cancel": MessageLookupByLibrary.simpleMessage("Cancel"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Catastrophic failure"), + "choose": MessageLookupByLibrary.simpleMessage("Choose"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Choose pages"), + "close": MessageLookupByLibrary.simpleMessage("Close"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Are you sure you want to close Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Contribute"), + "copied_address_to_clipboard": + MessageLookupByLibrary.simpleMessage("Copied address to clipboard"), + "copied_version_to_clipboard": + MessageLookupByLibrary.simpleMessage("Copied version to clipboard"), + "could_not_contact_twitter": + MessageLookupByLibrary.simpleMessage("Could not contact Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Couldn\'t find any tweets by this user!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Couldn\'t find any tweets from the last 7 days!"), + "country": MessageLookupByLibrary.simpleMessage("Country"), + "dark": MessageLookupByLibrary.simpleMessage("Dark"), + "data": MessageLookupByLibrary.simpleMessage("Data"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Data imported successfully"), + "date_created": MessageLookupByLibrary.simpleMessage("Date Created"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Date Subscribed"), + "default_tab": MessageLookupByLibrary.simpleMessage("Default tab"), + "delete": MessageLookupByLibrary.simpleMessage("Delete"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Disable screenshots"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Prevent screenshots from being taken. This may not work on all devices."), + "disabled": MessageLookupByLibrary.simpleMessage("Disabled"), + "donate": MessageLookupByLibrary.simpleMessage("Donate"), + "download": MessageLookupByLibrary.simpleMessage("Download"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Download handling"), + "download_handling_description": + MessageLookupByLibrary.simpleMessage("How downloading should work"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Always ask"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Save to directory"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Unable to download. This media may only be available as a stream, which Quacker cannot yet download."), + "download_path": MessageLookupByLibrary.simpleMessage("Download path"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Downloading media..."), + "enable_": MessageLookupByLibrary.simpleMessage("Enable ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": + MessageLookupByLibrary.simpleMessage("Enter your Twitter username"), + "export": MessageLookupByLibrary.simpleMessage("Export"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Export settings?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Export subscription group members?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("Export subscription groups?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Export subscriptions?"), + "export_tweets": MessageLookupByLibrary.simpleMessage("Export tweets?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Export your data"), + "feed": MessageLookupByLibrary.simpleMessage("Feed"), + "filters": MessageLookupByLibrary.simpleMessage("Filters"), + "finish": MessageLookupByLibrary.simpleMessage("Finish"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Followers"), + "following": MessageLookupByLibrary.simpleMessage("Following"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter says access to this is forbidden"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker blue"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "This functionality is no longer supported by Twitter!"), + "general": MessageLookupByLibrary.simpleMessage("General"), + "generic_username": MessageLookupByLibrary.simpleMessage("User"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Groups"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Help make Quacker even better"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Help support Quacker\'s future"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Hide sensitive tweets"), + "home": MessageLookupByLibrary.simpleMessage("Home"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "If you have any feedback on this feature, please leave it on"), + "import": MessageLookupByLibrary.simpleMessage("Import"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Import data from another device"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Import from Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Import subscriptions"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Include replies"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Include retweets"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Language"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Requires a restart"), + "large": MessageLookupByLibrary.simpleMessage("Large"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Legacy Android Import"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Let the developers know if something\'s broken"), + "licenses": MessageLookupByLibrary.simpleMessage("Licenses"), + "light": MessageLookupByLibrary.simpleMessage("Light"), + "live": MessageLookupByLibrary.simpleMessage("LIVE"), + "logging": MessageLookupByLibrary.simpleMessage("Logging"), + "media": MessageLookupByLibrary.simpleMessage("Media"), + "media_size": MessageLookupByLibrary.simpleMessage("Media size"), + "medium": MessageLookupByLibrary.simpleMessage("Medium"), + "missing_page": MessageLookupByLibrary.simpleMessage("Missing page"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Whether videos should be muted by default"), + "mute_videos": MessageLookupByLibrary.simpleMessage("Mute videos"), + "name": MessageLookupByLibrary.simpleMessage("Name"), + "newTrans": MessageLookupByLibrary.simpleMessage("New"), + "next": MessageLookupByLibrary.simpleMessage("Next"), + "no": MessageLookupByLibrary.simpleMessage("No"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "No data was returned, which should never happen. Please report a bug, if possible!"), + "no_results": MessageLookupByLibrary.simpleMessage("No results"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("No results for:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "No subscriptions. Try searching or importing some!"), + "not_set": MessageLookupByLibrary.simpleMessage("Not set"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Note: Due to a Twitter limitation, not all tweets may be included"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Subscriptions can only be imported from public profiles"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Oops! Something went wrong 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Open app settings"), + "open_in_browser": + MessageLookupByLibrary.simpleMessage("Open in browser"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter says the page does not exist, but that may not be true"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Permission not granted. Please try again after granting!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Pick a color!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("Pick an icon!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Pinned tweet"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Playback speed"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Please enter a name"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Please make sure the data you wish to import is located there, then press the import button below."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Please note that the method Quacker uses to import subscriptions is heavily rate-limited by Twitter, so this may fail if you have a lot of followed accounts."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potentially sensitive"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "This profile may include potentially sensitive images, language, or other content. Do you still want to view it?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "This tweet contains potentially sensitive content. Would you like to view it?"), + "prefix": MessageLookupByLibrary.simpleMessage("prefix"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Private profile"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Released under the MIT License"), + "replying_to": MessageLookupByLibrary.simpleMessage("Replying to"), + "report": MessageLookupByLibrary.simpleMessage("Report"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("Report a bug"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Reporting an error"), + "reset_home_pages": + MessageLookupByLibrary.simpleMessage("Reset pages to default"), + "retry": MessageLookupByLibrary.simpleMessage("Retry"), + "save": MessageLookupByLibrary.simpleMessage("Save"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Save bandwidth with smaller images"), + "saved": MessageLookupByLibrary.simpleMessage("Saved"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "This saved tweet could not be displayed, as it\'s too big to load. Please report it to the developers."), + "search": MessageLookupByLibrary.simpleMessage("Search"), + "search_term": MessageLookupByLibrary.simpleMessage("Search term"), + "select": MessageLookupByLibrary.simpleMessage("Select"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Selecting individual accounts to import, and assigning groups are both planned for the future already!"), + "send": MessageLookupByLibrary.simpleMessage("Send"), + "share_base_url": + MessageLookupByLibrary.simpleMessage("Custom share URL"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Use a custom base URL when sharing"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Share tweet content"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Share tweet content and link"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Share tweet link"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Check for updates when Quacker starts"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Check for updates"), + "small": MessageLookupByLibrary.simpleMessage("Small"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Something broke in Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Something just went wrong in Quacker, and an error report has been generated. The report can be sent to the Quacker developers to help fix the problem."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Sorry, the replied tweet could not be found!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Subscribe"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Subscriptions"), + "subtitles": MessageLookupByLibrary.simpleMessage("Subtitles"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Saved the media!"), + "system": MessageLookupByLibrary.simpleMessage("System"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Thanks for helping Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("the GitHub issue (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "The tweet did not contain any text. This is unexpected"), + "theme": MessageLookupByLibrary.simpleMessage("Theme"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Theme Mode"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "There were no trends returned. This is unexpected! Please report as a bug, if possible."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "This group contains no subscriptions!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "This took too long to load. Please check your network connection!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "This tweet is unavailable. It was probably deleted."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "This user does not follow anyone!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "This user does not have anyone following them!"), + "thread": MessageLookupByLibrary.simpleMessage("Thread"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Thumbnail"), + "timed_out": MessageLookupByLibrary.simpleMessage("Timed out"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "To import subscriptions from an existing Twitter account, enter your username below."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Toggle All"), + "trending": MessageLookupByLibrary.simpleMessage("Trending"), + "trends": MessageLookupByLibrary.simpleMessage("Trends"), + "true_black": MessageLookupByLibrary.simpleMessage("True Black?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweets"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweets & Replies"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "You need to have at least 2 home screen pages."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Unable to find the available trend locations."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Unable to find your saved tweets."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Unable to import"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Unable to load your home pages"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Unable to load subscription groups"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Unable to load the group"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Unable to load the group settings"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Unable to load the list of follows"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Unable to load the next page of follows"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Unable to load the next page of replies"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Unable to load the next page of tweets"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Unable to load the profile"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Unable to load the search results."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Unable to load the tweet"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Unable to load the tweets"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Unable to load the tweets for the feed"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Unable to refresh the subscriptions"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Unable to run the database migrations"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Unable to stream the trend location preference"), + "unknown": MessageLookupByLibrary.simpleMessage("Unknown"), + "unsave": MessageLookupByLibrary.simpleMessage("Unsave"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Unsubscribe"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("Unsupported URL"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Updates"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Use true black for the dark mode theme"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("User not found"), + "username": MessageLookupByLibrary.simpleMessage("Username"), + "version": MessageLookupByLibrary.simpleMessage("Version"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "When a new app update is available"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Whether errors should be reported to "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Whether to hide tweets marked as sensitive"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Which tab is shown when the app opens"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Would you like to enable automatic error reporting?"), + "yes": MessageLookupByLibrary.simpleMessage("Yes"), + "yes_please": MessageLookupByLibrary.simpleMessage("Yes, please"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "You haven\'t saved any tweets yet!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "You must have at least 2 home screen pages"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Your profile must be public, otherwise the import will not work"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Your report will be sent to Quacker\'s project, and privacy details can be found at:") + }; +} diff --git a/lib/generated/intl/messages_eo.dart b/lib/generated/intl/messages_eo.dart new file mode 100644 index 00000000..b5c0e155 --- /dev/null +++ b/lib/generated/intl/messages_eo.dart @@ -0,0 +1,479 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a eo locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'eo'; + + static String m0(name) => + "Ĉu vi certas, vi volas forigi la grupon de abonoj ${name}?"; + + static String m1(fileName) => "Datumoj eksportiĝis al ${fileName}"; + + static String m2(fullPath) => "Datumoj eksportiĝis al ${fullPath}"; + + static String m3(timeagoFormat) => "Finiĝis ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Finiĝos ${timeagoFormat}"; + + static String m5(snapshotData) => "Finiĝis kun ${snapshotData} uzantoj"; + + static String m6(name) => "Grupo: ${name}"; + + static String m7(snapshotData) => + "${snapshotData} uzantoj importiĝis ĝis nun"; + + static String m8(date) => "Membriĝis je ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Ne voĉoj', one: 'Unu voĉo', two: 'Du voĉoj', few: '${numFormatted} voĉoj', many: '${numFormatted} voĉoj', other: '${numFormatted} voĉoj')}"; + + static String m10(errorMessage) => + "Bonvolu kontroli vian konekton Interretan.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "Premu por elŝuti ${releaseVersion}"; + + static String m12(getMediaType) => "Premu por vidi ${getMediaType}"; + + static String m13(filePath) => + "La dosiero ne ekzistas. Bonvolu certigi ĝin loke ĉe ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} repepis ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'ne pepoj', one: 'unu pepo', two: 'du pepoj', few: '${numFormatted} pepoj', many: '${numFormatted} pepoj', other: '${numFormatted} pepoj')}"; + + static String m16(widgetPlaceName) => + "Ne eblas ŝarĝi la tendencaĵojn el ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Ne eblas konservi la plurmedion. Twitter revenigis staton de ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Ĝisdatigu al ${releaseVersion} per via kliento de F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Pri Quacker"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Konto haltiĝis"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Kaŝi aŭtorojn de pepoj. Eviti biason de konfirmo bazite de argumentoj aŭtoritataj."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Ŝalti reĝimon de biaso de nekonfirmo"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Aldoni al grupo"), + "all": MessageLookupByLibrary.simpleMessage("Ĉio"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Ĉiu el la programaro bonega uzate per Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Ĝisdatigo por Quacker estas disponebla! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Ĉu vi certas?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Antaŭen"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter malvalidigis la ĵetonon de atingo. Bonvolu provi remalfermi Quacker-on!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Blua temo bazite de la kolorskemo de Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Rezigni"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Malsukceso katastrofa"), + "choose": MessageLookupByLibrary.simpleMessage("Elekti"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Elekti paĝojn"), + "close": MessageLookupByLibrary.simpleMessage("Fermi"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Ĉu vi certas, vi volas fermi Quacker-on?"), + "contribute": MessageLookupByLibrary.simpleMessage("Kontribui"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Kopiis adreson al la tondujo"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Kopiis version al la tondujo"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Ne eblas kontakti Twitter-on"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Ne eblis trovi iujn ajn pepojn de tiu ĉi uzanto!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Ne eblas trovi iujn ajn pepojn de antaŭ 7 tagoj!"), + "country": MessageLookupByLibrary.simpleMessage("Lando"), + "dark": MessageLookupByLibrary.simpleMessage("Malhela"), + "data": MessageLookupByLibrary.simpleMessage("Datumoj"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Datumoj importiĝis sukcese"), + "date_created": MessageLookupByLibrary.simpleMessage("Dato de kreo"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Dato de ekabono"), + "default_tab": MessageLookupByLibrary.simpleMessage("Langeto komenca"), + "delete": MessageLookupByLibrary.simpleMessage("Forigi"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Malŝalti ekrankopiojn"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Eviti ekrankopiojn farote. Eble ne funkcii kun ĉiuj aparatoj."), + "disabled": MessageLookupByLibrary.simpleMessage("Malŝaltita"), + "donate": MessageLookupByLibrary.simpleMessage("Donaci"), + "download": MessageLookupByLibrary.simpleMessage("Elŝuti"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Trakto de elŝutoj"), + "download_handling_description": + MessageLookupByLibrary.simpleMessage("Kiel elŝutado funkcius"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Ĉiam demandi"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Konservi al dosierujo"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Ne eblas elŝuti. Tiu ĉi plurmedio eble nur estas disponebla kiel fluo, kiun Quacker ne ankoraŭ eblas elŝuti."), + "download_path": + MessageLookupByLibrary.simpleMessage("Dosiervojo de elŝutado"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Elŝutas plurmedion..."), + "enable_": MessageLookupByLibrary.simpleMessage("Ĉu ŝalti -on?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Enigi vian uzantnomon de Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Eksporti"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Ĉu eksporti la agordojn?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Ĉu eksporti la membrojn de grupo de abonoj?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Ĉu eksporti la grupojn de abonoj?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Ĉu eksporti la abonojn?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Ĉu eksporti pepojn?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Eksporti viajn datumojn"), + "feed": MessageLookupByLibrary.simpleMessage("Fluo"), + "filters": MessageLookupByLibrary.simpleMessage("Filtriloj"), + "finish": MessageLookupByLibrary.simpleMessage("Fini"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Abonantoj"), + "following": MessageLookupByLibrary.simpleMessage("Abonoj"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter diras, atingo estas malpermesita"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker blua"), + "general": MessageLookupByLibrary.simpleMessage("Ĝenerala"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grupoj"), + "help_make_fritter_even_better": + MessageLookupByLibrary.simpleMessage("Helpi plibonigi Quacker-on"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Helpi subteni estontecon de Quacker"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Kaŝi sentemajn pepojn"), + "home": MessageLookupByLibrary.simpleMessage("Hejmo"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Se vi havus iujn ajn rimarkojn pri tiu ĉi eblo, bonvolu lasi ĝin ŝaltite"), + "import": MessageLookupByLibrary.simpleMessage("Importi"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importi datumojn el alia aparato"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importi el Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importi abonojn"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Ampleksi respondojn"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Ampleksi repepojn"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Lingvo"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Bezonas rekomencon"), + "large": MessageLookupByLibrary.simpleMessage("Granda"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Importo de Android malnova"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Konigi al programistojn, se io estas difektita"), + "licenses": MessageLookupByLibrary.simpleMessage("Licencoj"), + "light": MessageLookupByLibrary.simpleMessage("Hela"), + "live": MessageLookupByLibrary.simpleMessage("REKTE"), + "logging": MessageLookupByLibrary.simpleMessage("Protokolado"), + "media": MessageLookupByLibrary.simpleMessage("Plurmedio"), + "media_size": + MessageLookupByLibrary.simpleMessage("Grando de plurmedio"), + "medium": MessageLookupByLibrary.simpleMessage("Mezgranda"), + "missing_page": MessageLookupByLibrary.simpleMessage("Paĝo manka"), + "mute_video_description": + MessageLookupByLibrary.simpleMessage("Ĉu videoj mutiĝu defaŭlte"), + "mute_videos": MessageLookupByLibrary.simpleMessage("Mutigi videojn"), + "name": MessageLookupByLibrary.simpleMessage("Nomo"), + "newTrans": MessageLookupByLibrary.simpleMessage("Nova"), + "next": MessageLookupByLibrary.simpleMessage("Sekven"), + "no": MessageLookupByLibrary.simpleMessage("Ne"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Ne datumoj revenis, kiu neniam okazu. Bonvolu raporti cimon, se eblus!"), + "no_results": MessageLookupByLibrary.simpleMessage("Ne rezultoj"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Ne rezultoj por:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Ne abonoj. Provu serĉi aŭ importi iujn!"), + "not_set": MessageLookupByLibrary.simpleMessage("Ne agordita"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Noto: Pro limigo de Twitter, ne ĉiuj pepoj eble estas ampleksitaj"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("Bone"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Abonoj nur eblas importiĝi el publikaj profiloj"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Ups! Io misokazis 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Montri agordojn de la apo"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter diras, la paĝo ne ekzistas, sed tio eble ne estas vere"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Permeso ne doniĝis. Bonvolu provi ree post permesado!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Elekti koloron!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("Elekti ikonon!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Alpinglita pepo"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Rapido de reproduktado"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Bonvolu enigi nomon"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Bonvolu certigi, ke la datumoj dezirate importontaj lokiĝas tie, tiam premu la butono de importi sube."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Bonvolu noti, ke la metodon Quacker uzas por importi abonojn peze rapidolimigante de Twitter, do eble malsukcesus se vi havus tre multajn da kontojn abonitajn."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Eble sentema"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Tiu ĉi profilo eble enhavas eble sentemajn bildojn, idiomon, aŭ alian enhavon. Ĉu vi ankoraŭ deziras vidi ĝin?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Tiu ĉi pepo enhavas enhavon eble senteman. Ĉu vi deziras vidi ĝin?"), + "prefix": MessageLookupByLibrary.simpleMessage("prefikso"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Profilo privata"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Eldonis per la licenco MIT-a"), + "replying_to": MessageLookupByLibrary.simpleMessage("Respondas al"), + "report": MessageLookupByLibrary.simpleMessage("Raporti"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("Raporti cimon"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Raporti eraron"), + "reset_home_pages": + MessageLookupByLibrary.simpleMessage("Reagordi paĝojn defaŭlten"), + "retry": MessageLookupByLibrary.simpleMessage("Reprovi"), + "save": MessageLookupByLibrary.simpleMessage("Konservi"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Konservi bendlarĝon per pli malgrandaj bildoj"), + "saved": MessageLookupByLibrary.simpleMessage("Konservitaĵoj"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Tiu ĉi pepo konservita ne eblas vidiĝi, pro ĝi estas tro granda por ŝarĝi. Bonvolu raporti al la programistoj."), + "search": MessageLookupByLibrary.simpleMessage("Serĉi"), + "search_term": MessageLookupByLibrary.simpleMessage("Termino de serĉo"), + "select": MessageLookupByLibrary.simpleMessage("Elekti"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Elektado de kontoj individuaj por importi, kaj asignado de grupoj estas ambaŭ planite estontece jam!"), + "send": MessageLookupByLibrary.simpleMessage("Sendi"), + "share_base_url": + MessageLookupByLibrary.simpleMessage("URL kunhavanta propra"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Uzi URL-on bazan propran kiam kunhavigi"), + "share_tweet_content": MessageLookupByLibrary.simpleMessage( + "Kunhavigi la enhavon de la pepo"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Kunhavigi la enhavon kaj ligilon de la pepo"), + "share_tweet_link": MessageLookupByLibrary.simpleMessage( + "Kunhavigi la ligilon de la pepo"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Kontroli por ĝisdatigoj kiam Quacker komenciĝus"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Kontroli por ĝisdatigoj"), + "small": MessageLookupByLibrary.simpleMessage("Malgranda"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Io malfunkciis en Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Io ĵus misokazis en Quacker, kaj raporto de la eraro kreiĝis. La raporto eblas sendiĝi al la programistoj de Quacker por helpi ripari la problemon."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Pardonu, la pepo alrespondita ne eblas troviĝi!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Aboni"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Abonoj"), + "subtitles": MessageLookupByLibrary.simpleMessage("Subtekstoj"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Konservis la plurmedion!"), + "system": MessageLookupByLibrary.simpleMessage("Sistema"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Dankon pro helpi Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": MessageLookupByLibrary.simpleMessage( + "la problemo ĉe GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "La pepo ne enhavas iun ajn tekston. Estas ne atendite"), + "theme": MessageLookupByLibrary.simpleMessage("Temo"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Reĝimo de temo"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Ne tendencaĵoj revenis. Estas ne atendite! Bonvolu raporti kiel cimo, se eble."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Tiu grupo enhavas ne abonojn!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "La ŝarĝado daŭris tro longe. Bonvolu kontroli vian konekton Interretan!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Tiu ĉi pepo estas maldisponebla. Ĝi probable foriĝis."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Tiu ĉi uzanto ne observas iun ajn!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Tiu ĉi uzanto ne havas iun ajn observante si!"), + "thread": MessageLookupByLibrary.simpleMessage("Diskutfadeno"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniaturo"), + "timed_out": MessageLookupByLibrary.simpleMessage("Tempolimiĝis"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Por importi abonojn el ekzistanta Twitter-konto, enigi vian uzantnomon sube."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Baskuli ĉiun"), + "trending": MessageLookupByLibrary.simpleMessage("Tendencaĵoj"), + "trends": MessageLookupByLibrary.simpleMessage("Tendencaĵoj"), + "true_black": MessageLookupByLibrary.simpleMessage("Nigro vera?"), + "tweets": MessageLookupByLibrary.simpleMessage("Pepoj"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Pepoj k. Respondoj"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Vi bezonas havi malpleje 2 paĝojn de hejmekrano."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Ne eblas trovi la lokojn disponeblajn de tendencoj."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Ne eblas trovi viajn pepojn konservitajn."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Ne eblas importi"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi viajn hejmpaĝojn"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la grupojn de abonoj"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Ne eblas ŝarĝi la grupon"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la agordojn de grupo"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la liston de abonoj"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la sekvan paĝon de abonoj"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la sekvan paĝon de respondoj"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la sekvan paĝon de pepoj"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Ne eblas ŝarĝi la profilon"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la rezultojn de la serĉo."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Ne eblas ŝarĝi la pepon"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Ne eblas ŝarĝi la pepojn"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ŝarĝi la pepojn por la fluo"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Ne eblas aktualigi la abonojn"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Ne eblas ruli migradojn de la datumbazo"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Ne eblas fluigi la agordon de loko de tendencoj"), + "unknown": MessageLookupByLibrary.simpleMessage("Nekonata"), + "unsave": MessageLookupByLibrary.simpleMessage("Malkonservi"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Malaboni"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("URL malsubtenita"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Ĝisdatigoj"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Uzi nigron veran kun la reĝimo malhela de temo"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Uzanto ne troviĝis"), + "username": MessageLookupByLibrary.simpleMessage("Uzantnomo"), + "version": MessageLookupByLibrary.simpleMessage("Versio"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Kiam ĝisdatigo de la apo estas disponebla"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage("Ĉu eraroj raportiĝus al "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Ĉu kaŝi pepojn markite kiel sentemaj"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Kiu langeto vidiĝus kiam la apo malfermiĝus"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Ĉu vi volus ŝalti eraroraportadon aŭtomatan?"), + "yes": MessageLookupByLibrary.simpleMessage("Jes"), + "yes_please": MessageLookupByLibrary.simpleMessage("Jes, bonvolu"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Vi ne konservis iujn ajn pepojn ankoraŭ!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Vi devas havi malpleje 2 paĝojn de hejmekrano"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Via profilo devas esti publika, alie la importo ne funkcios"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Via raporto sendiĝos al -projekto de Quacker, kaj la detaloj de privateco eblas troviĝi ĉe:") + }; +} diff --git a/lib/generated/intl/messages_es.dart b/lib/generated/intl/messages_es.dart new file mode 100644 index 00000000..ef2e91b8 --- /dev/null +++ b/lib/generated/intl/messages_es.dart @@ -0,0 +1,96 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a es locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'es'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "add_to_group": MessageLookupByLibrary.simpleMessage("Añadir al grupo"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "¡No se ha podido encontrar ningún tuit de este usuario!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "No pude encontrar ningún tweet de los últimos 7 días!"), + "filters": MessageLookupByLibrary.simpleMessage("Filtros"), + "include_replies": + MessageLookupByLibrary.simpleMessage("Incluye las respuestas"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Incluye los retweets"), + "no_results": MessageLookupByLibrary.simpleMessage("No hay resultados"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Nota: Debido a una limitación de Twitter, es posible que no se incluyan todos los tweets"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Informar sobre un error"), + "saved": MessageLookupByLibrary.simpleMessage("Guardado"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Algo ha ido mal en Quacker y se ha generado un informe de error. El informe puede ser enviado a los desarrolladores de Quacker para ayudar a solucionar el problema."), + "subscribe": MessageLookupByLibrary.simpleMessage("suscribirse"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Subscripciones"), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "¡Este grupo no contiene suscripciones!"), + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "¡Este usuario no sigue a nadie!"), + "trending": MessageLookupByLibrary.simpleMessage("Tendencias"), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "No se pueden encontrar tus tweets guardados."), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "No se pueden cargar los grupos de suscripción"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "No es posible cargar el grupo"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "No se puede cargar la configuración del grupo"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "No se puede cargar la lista de seguimiento"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "No se puede cargar la siguiente página de respuestas"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "No se puede cargar la siguiente página de tweets"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "No se pueden cargar los resultados de la búsqueda."), + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "No se ha podido cargar el tuit"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "No se pueden cargar los tweets para el feed"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Cancelar la suscripción"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "¿Desea activar la notificación automática de errores?"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Todavía no se has guardado ningún tuit."), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Su informe se enviará al proyecto Quacker\'s , y los detalles de privacidad se pueden encontrar en:") + }; +} diff --git a/lib/generated/intl/messages_et.dart b/lib/generated/intl/messages_et.dart new file mode 100644 index 00000000..34b3604c --- /dev/null +++ b/lib/generated/intl/messages_et.dart @@ -0,0 +1,494 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a et locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'et'; + + static String m0(name) => + "Kas sa oled kindel, et soovid kustutada tellimuste grupi ${name}?"; + + static String m1(fileName) => "Andmed on eksporditud faili ${fileName}"; + + static String m2(fullPath) => "Andmed on eksporditud kausta ${fullPath}"; + + static String m3(timeagoFormat) => "Lõppes ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Lõppeb ${timeagoFormat}"; + + static String m5(snapshotData) => + "${snapshotData} kasutaja importimine on valmis"; + + static String m6(name) => "Grupp: ${name}"; + + static String m7(snapshotData) => + "Seni on imporditud ${snapshotData} kasutajat"; + + static String m8(date) => "Liitunud ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'pole hääletatud', one: 'üks hääl', two: 'kaks häält', few: '${numFormatted} häält', many: '${numFormatted} häält', other: '${numFormatted} häält')}"; + + static String m10(errorMessage) => + "Palun kontrolli oma võrguühendust.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Versiooni ${releaseVersion} allalaadimiseks klõpsi"; + + static String m12(getMediaType) => "${getMediaType} kuvamiseks klõpsi"; + + static String m13(filePath) => + "Faili ei leidu. Palun kontrolli, et ta asuks siin ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} kirjutas ${timeAgo} eest kordussäutsu"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'säutse pole', one: 'üks säuts', two: 'kaks säutsu', few: '${numFormatted} säutsu', many: '${numFormatted} säutsu', other: '${numFormatted} säutsu')}"; + + static String m16(widgetPlaceName) => + "Ei õnnestu laadida hetkel populaarsemaid viiteid ja otsinguid riigile või piirkonnale: ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Meedia salvestamine ei õnnestu. Twitter\'i vastus päringule: ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Uuenduseks versioonini ${releaseVersion} kasuta oma F-Droidi klienti"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Rakenduse teave"), + "account_suspended": MessageLookupByLibrary.simpleMessage( + "Kasutajakonto on ajutiselt peatatud"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Antud valik peidab säutsude autorid. Sellega väldid sotsiaalmeediale omaseid kinnituskalduvusega (confirmation bias) arvestavaid algoritme."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Kasuta kinnituskalduvust eiravat režiimi"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Lisa tellimusi"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Lisa gruppi"), + "all": MessageLookupByLibrary.simpleMessage("Kõik"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Kõik suurepärane tarkvara, mida Quacker kasutab"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Quacker\'i tarkvarauuendus on saadaval! 🚀"), + "are_you_sure": + MessageLookupByLibrary.simpleMessage("Kas sa oled kindel?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Tagasi"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter on meie juurdepääsutunnuse kehtetuks tunnistanud. Palun proovi uuesti avada Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Sinine värviteema, mille aluseks on Twitteri kujundus"), + "cancel": MessageLookupByLibrary.simpleMessage("Katkesta"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Kõik läks ikka väga viltu"), + "choose": MessageLookupByLibrary.simpleMessage("Vali"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Vali lehed"), + "close": MessageLookupByLibrary.simpleMessage("Sulge"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Kas sa oled kindel, et soovid panna Quacker\'i kinni?"), + "contribute": MessageLookupByLibrary.simpleMessage("Osale arenduses"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Kopeerisin aadressi lõikelauale"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Kopeerisin versiooni lõikelauale"), + "could_not_contact_twitter": + MessageLookupByLibrary.simpleMessage("Puudub ühendus Twitter\'iga"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Ühtegi selle kasutaja säutsu ei lidunud!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Viimase 7 päeva andmetest ei leidu ühtegi säutsu!"), + "country": MessageLookupByLibrary.simpleMessage("Riik"), + "dark": MessageLookupByLibrary.simpleMessage("Tume teema"), + "data": MessageLookupByLibrary.simpleMessage("Andmed"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Andmete importimine õnnestus"), + "date_created": MessageLookupByLibrary.simpleMessage("Loomiskuupäev"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Tellimuse lisamise aeg"), + "default_tab": MessageLookupByLibrary.simpleMessage("Vaikimisi vaade"), + "delete": MessageLookupByLibrary.simpleMessage("Kustuta"), + "disable_screenshots": MessageLookupByLibrary.simpleMessage( + "Lülita ekraanitõmmised välja"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Ära luba teha ekraanitõmmiseid. See ei pruugi kõikides seadmetes toimida."), + "disabled": MessageLookupByLibrary.simpleMessage("Pole kasutusel"), + "donate": MessageLookupByLibrary.simpleMessage("Toeta rahaliselt"), + "download": MessageLookupByLibrary.simpleMessage("Laadi alla"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Allalaadimiste seadistused"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Kuidas allalaadimine peaks toimima"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Alati küsi"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Salvesta kausta"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Allalaadimine ei õnnestu. See meedia võib olla saadaval vaid voogedastusena ning Quacker veel ei oska teda alla laadida."), + "download_path": + MessageLookupByLibrary.simpleMessage("Allalaadimiste kaust"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Laadin alla meediat..."), + "enable_": + MessageLookupByLibrary.simpleMessage("Kas lubad kasutada \'t?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Sisesta oma Twitteri kasutajanimi"), + "export": MessageLookupByLibrary.simpleMessage("Eksport"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Kas ekspordime seadistused?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Kas ekspordime tellimuste gruppide liikmed?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Kas ekspordime tellimuste grupid?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Kas ekspordime tellimused?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Kas ekspordime säutsud?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Ekspordi oma andmed"), + "feed": MessageLookupByLibrary.simpleMessage("Säutsuvoog"), + "filters": MessageLookupByLibrary.simpleMessage("Filtrid"), + "finish": MessageLookupByLibrary.simpleMessage("Lõpeta"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Jälgijaid"), + "following": MessageLookupByLibrary.simpleMessage("Jälgitavaid"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter ütleb, et juurdepääs sellele sisule on keelatud"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": + MessageLookupByLibrary.simpleMessage("Quacker\'i sinine"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Twitter enam ei võimalda sellise funktsionaalsuse kasutamist!"), + "general": MessageLookupByLibrary.simpleMessage("Üldised seadistused"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grupid"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Aita muuta Quacker\'it veelgi paremaks"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Toeta Quacker\'i arendust rahaliselt"), + "hide_sensitive_tweets": MessageLookupByLibrary.simpleMessage( + "Peida võimalikud ebasobiliku sisuga säutsud"), + "home": MessageLookupByLibrary.simpleMessage("Koduleht"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Kui sul on selle funktsioonaalsuse kohta tagasisidet, palun kirjuta sellest aadressil"), + "import": MessageLookupByLibrary.simpleMessage("Import"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Impordi andmed muust seadmest"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Impordi Twitterist"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Tellimuste import"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Sealhulgas vastused"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Sealhulgas kordussäutsud"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Keel"), + "language_subtitle": MessageLookupByLibrary.simpleMessage( + "Eeldab rakenduse uuesti käivitamist"), + "large": MessageLookupByLibrary.simpleMessage("Suured pildid"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Import vanemate Androidi versioonide jaoks"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Anna arendajatele teada, kui midagi ei toimi"), + "licenses": MessageLookupByLibrary.simpleMessage("Litsentsid"), + "light": MessageLookupByLibrary.simpleMessage("Hele teema"), + "live": MessageLookupByLibrary.simpleMessage("Otsesaade"), + "logging": MessageLookupByLibrary.simpleMessage("Logimine"), + "media": MessageLookupByLibrary.simpleMessage("Meedia"), + "media_size": + MessageLookupByLibrary.simpleMessage("Multimeedia suurus"), + "medium": MessageLookupByLibrary.simpleMessage("Keskmised pildid"), + "missing_page": MessageLookupByLibrary.simpleMessage("Puuduv lehekülg"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Kas videoteheli peaks esitamisel olema vaikimisi summutatud"), + "mute_videos": + MessageLookupByLibrary.simpleMessage("Summuta videote heli"), + "name": MessageLookupByLibrary.simpleMessage("Nimi"), + "newTrans": MessageLookupByLibrary.simpleMessage("Uus"), + "next": MessageLookupByLibrary.simpleMessage("Järgmine"), + "no": MessageLookupByLibrary.simpleMessage("Ei"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Vastuses ei leidunud andmeid ning midagi sellist ei tohiks juhtuda. Kui saad, siis palun anna meile sellest veast teada!"), + "no_results": MessageLookupByLibrary.simpleMessage("Tulemusi pole"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Otsingutulemused puuduvad:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Tellimusi ei leidu. Kas lisa mõni otsingust või impordi!"), + "not_set": MessageLookupByLibrary.simpleMessage("Seadistamata"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Märkus: Twitteri määratud piirangute tõttu ei pruugi kõik säutsud olla kaasatud"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("Sobib"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Tellimusi saad importida ainult avalikest profiilidest"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Hopsti! Midagi läks nüüd viltu 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Ava rakenduse seadistused"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter ütleb, et lehte pole olemas, kuid see ei pruugi tõsi olla"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Õigusi pole. Palun proovi pärast loa andmist uuesti!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Palun vali värv!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("Vali ikoon!"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("Klammerdatud säuts"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Taasesituse kiirus"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Palun sisesta nimi"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Palun veendu, et andmed, mida soovid importida, asuvad seal, seejärel vajuta allpool olevat importimisnuppu."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Palun arvesta, et Quacker kasutab tellimuste impordiks päringut, mille kasutamise sagedust Twitter piirab. Seega kui sul on palju jälgitavaid kontosid, siis import ei pruugi õnnestuda."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Võimalik ebasobilik sisu"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Selles profiilis võib leiduda ebasobilikke pilte, sõnakasutust või muud sisu. Ka sa siiski soovid seda vaadata?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Selles säutsus võib leiduda ebasobilikku sisu. Kas sa soovid seda näha?"), + "prefix": MessageLookupByLibrary.simpleMessage("eesliide"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Privaatne profiil"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Avaldatud MIT litsentsi alusel"), + "replying_to": MessageLookupByLibrary.simpleMessage("Vastusena"), + "report": MessageLookupByLibrary.simpleMessage("Teata veast"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("Teata vigadest"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Veast teatamine"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Lähtesta lehed vaikimisi väärtusteks"), + "retry": MessageLookupByLibrary.simpleMessage("Proovi uuesti"), + "save": MessageLookupByLibrary.simpleMessage("salvesta"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Kasutades väiksemaid pildifaile säästad ribalaiust"), + "saved": MessageLookupByLibrary.simpleMessage("Salvestatud"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Seda salvestatud säutsu ei saa kuvada, kuna see on laadimiseks liiga suur. Palun teata sellest veast arendajatele."), + "search": MessageLookupByLibrary.simpleMessage("Otsi"), + "search_term": MessageLookupByLibrary.simpleMessage("Otsingusõna"), + "select": MessageLookupByLibrary.simpleMessage("Vali"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Nii üksikute kontode valimine importimiseks, kui gruppide määramine on kavandatud järgmiste arendustena!"), + "send": MessageLookupByLibrary.simpleMessage("Saada"), + "share_base_url": MessageLookupByLibrary.simpleMessage( + "Kohandatud URL lingi jagamiseks"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Kasuta lingi jagamiseks kohandatud URL\'i"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Jaga säutsu sisu"), + "share_tweet_content_and_link": + MessageLookupByLibrary.simpleMessage("Jaga säutsu sisu ja linki"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Jaga säutsu linki"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Quacker\'i käivitumisel kontrolli uuenduste olemasolu"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Kontrolli uuendusi"), + "small": MessageLookupByLibrary.simpleMessage("Väikesed pildid"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Midagi läks nüüd Quacker\'is katki."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Midagi läks Quackeris viltu ja selle alusel on olemas ka veakirjeldus. Probleemi uurimiseks ja lahendamiseks võid sa selle saata Quackeri arendajatele."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Vabandust, aga vastatud säutsu enam ei leidu!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Telli"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Tellimused"), + "subtitles": MessageLookupByLibrary.simpleMessage("Subtiitrid"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Salvestasin meedia!"), + "system": MessageLookupByLibrary.simpleMessage("Süsteemi keel"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Täname, et aitad Quacker\'it! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": MessageLookupByLibrary.simpleMessage( + "veakirjeldus GitHub\'is (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Säutsus puudus sisu. See on nüüd küll ootamatu"), + "theme": MessageLookupByLibrary.simpleMessage("Kujundus"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Kujundusrežiim"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Päringu vastuses polnud andmeid hetkel populaarsemate viidete ja otsingute kohta. Seda ei oleks nüüd küll pidanud juhtuma! Kui võimalik siis palun saada meile veateade."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Selles grupis pole tellimusi!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Andmete laadimine kestab liiga kaua. Palun vaata, kas sinu internetiühendus toimib!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "See säuts pole leitav. Ilmselt on ta juba kustutatud."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "See kasutaja ei jälgi mitte kedagi!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Mitte keegi ei jälgi seda kasutajat!"), + "thread": MessageLookupByLibrary.simpleMessage("Jutulõng"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Pisipildid"), + "timed_out": MessageLookupByLibrary.simpleMessage("Päring aegus"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Olemasoleva Twitteri konto tellimuste impordiks palun sisesta alljärgnevalt oma kasutajanimi."), + "toggle_all": + MessageLookupByLibrary.simpleMessage("Lülita kõik sisse/välja"), + "trending": MessageLookupByLibrary.simpleMessage("Hetkel populaarne"), + "trends": MessageLookupByLibrary.simpleMessage("Hetkel populaarne"), + "true_black": + MessageLookupByLibrary.simpleMessage("Missugune must teema?"), + "tweets": MessageLookupByLibrary.simpleMessage("Säutsud"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Säutsud ja vastused"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Sul peab olema vähemalt 2 avalehte."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Ei õnnestu laadida riike ja piirkondi, mille kohta kuvada hetkel populaarsemaid viiteid ja otsinguid."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Sinu salvestatud säutsude leidmine ei õnnestu."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Ei ole võimalik importida"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Sinu kodulehtede laadimine ei õnnestunud"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Tellimuste gruppide laadimine ei õnnestu"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Grupi laadimine ei õnnestu"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Grupi seadete laadimine ei õnnestu"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Jälgijate loendi laadimine ei õnnestu"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Jälgijate loendi järgmise lehe laadimine ei õnnestu"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Vastuste järgmise lehe laadimine ei õnnestu"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Säutsude järgmise lehe laadimine ei õnnestu"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Profiili laadimine ei õnnestu"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Otsingutulemuste laadimine ei õnnestu."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Säutsu laadimine ei õnnestu"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Säutsude laadimine ei õnnestu"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Selle andmevoo säutsude laadimine ei õnnestu"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Tellimuste sisu ei saa hetkel laadida"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Quackeri andmebaaside versiooniuuendus ei õnnestu"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Ei õnnestu edastada hetkel populaarsemaid viidete ja otsingute piirkondade eelistusi"), + "unknown": MessageLookupByLibrary.simpleMessage("Teadmata"), + "unsave": MessageLookupByLibrary.simpleMessage("Eemalda salvestus"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Loobu tellimusest"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("URL ei ole toetatud"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Uuendused"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Tumeda teemana kasuta korrektset musta teemat"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Kasutajat ei leidu"), + "username": MessageLookupByLibrary.simpleMessage("Kasutajanimi"), + "version": MessageLookupByLibrary.simpleMessage("Versioon"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage("Kui uuendus on saadaval"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Vigadest teatamine veebirakenduse abil"), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Kas soovid peita säutse, kus võib olla ebasobilikku sisu"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Missugune vaade on kuvatud rakenduse käivitamisel"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Kas sa luba vigadest automaatselt teatada?"), + "yes": MessageLookupByLibrary.simpleMessage("Jah"), + "yes_please": MessageLookupByLibrary.simpleMessage("Jah, palun"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Sa pole veel ühtegi säutsu salvestanud!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Sul peaks olema vähemalt 2 kodulehte"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Sinu profiil peab olema avalik, muidu import ei toimi"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Veakirjeldus saadetakse Quacker\'i kontole veahaldusrakenduses. privaatusteabe leiad siit:") + }; +} diff --git a/lib/generated/intl/messages_eu.dart b/lib/generated/intl/messages_eu.dart new file mode 100644 index 00000000..4bf148c1 --- /dev/null +++ b/lib/generated/intl/messages_eu.dart @@ -0,0 +1,465 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a eu locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'eu'; + + static String m0(name) => + "Ziur ${name} harpidetza taldea ezabatu nahi duzula?"; + + static String m1(fileName) => "${fileName}-era esportatu dira datuak"; + + static String m2(fullPath) => "${fullPath}-era esportatu dira datuak"; + + static String m3(timeagoFormat) => "Amaituta ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Amaitzen da ${timeagoFormat}"; + + static String m5(snapshotData) => + "${snapshotData} erabiltzaileekin amaitu da"; + + static String m6(name) => "Taldea: ${name}"; + + static String m7(snapshotData) => + "Orain arte inportatutako ${snapshotData} erabiltzaileak"; + + static String m8(date) => "${date}-ean sortua"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Botorik gabea', one: 'Boto bat', two: 'Bi boto', few: '${numFormatted} boto', many: '${numFormatted} boto', other: '${numFormatted} boto')}"; + + static String m10(errorMessage) => + "Mesedez, egiaztatu Internet konexioa.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "Sakatu ${releaseVersion} deskargatzeko"; + + static String m12(getMediaType) => "Sakatu ${getMediaType} erakusteko"; + + static String m13(filePath) => + "Fitxategia ez da existitzen. Mesedez, ziurtatu ${filePath} helbidean dagoela"; + + static String m14(thisTweetUserName, timeAgo) => + "Orain dela ${timeAgo} ${thisTweetUserName} birtxiotua"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'Txorik gabea', one: 'Txio bat', two: 'Bi txio', few: '${numFormatted} txio', many: '${numFormatted} txio', other: '${numFormatted} txio')}"; + + static String m16(widgetPlaceName) => + "Ezin dira joerak kargatu ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Ezin da multimedia gorde. Twitter-ek ${responseStatusCode} egoerara itzuli du"; + + static String m18(releaseVersion) => + "Eguneratu ${releaseVersion} zure F-Droid bezeroaren bidez"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Honi buruz"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Etendako kontua"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Ezkutatu txioen egileak. Saihestu baieztapen-alborapena argudio autoritarioetan oinarrituta."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Aktibatu berrespenik gabeko alborapen modua"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Gehitu taldera"), + "all": MessageLookupByLibrary.simpleMessage("Dena"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Quacker-ek erabiltzen duen software bikaina"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Quacker-en eguneraketa eskuragarri dago! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Ziur zaude?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Itzuli"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitterrek sarbide-tokena baliogabetu du. Mesedez, saiatu Quacker berriro irekitzen!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Twitter-eko kolore eskeman oinarritutako gai urdina"), + "cancel": MessageLookupByLibrary.simpleMessage("Ezeztatu"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Akats katastrofikoa"), + "choose": MessageLookupByLibrary.simpleMessage("Aukeratu"), + "close": MessageLookupByLibrary.simpleMessage("Itxi"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Ziur al zaude Quacker itxi nahi duzula?"), + "contribute": MessageLookupByLibrary.simpleMessage("Egin ekarpena"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Helbidea arbelean kopiatu da"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Kopiatu da bertsioa arbelean"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Ezin izan da Twitterrekin harremanetan jarri"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Ezin izan da erabiltzaile honen txiorik aurkitu!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Ezin izan da azken 7 egunetako txiorik aurkitu!"), + "country": MessageLookupByLibrary.simpleMessage("Herrialdea"), + "dark": MessageLookupByLibrary.simpleMessage("Iluna"), + "data": MessageLookupByLibrary.simpleMessage("Datuak"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Datuak behar bezala inportatu dira"), + "date_created": MessageLookupByLibrary.simpleMessage("Sortze data"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Harpidetza data"), + "default_tab": MessageLookupByLibrary.simpleMessage("Fitxa lehenetsia"), + "delete": MessageLookupByLibrary.simpleMessage("Ezabatu"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Desgaitu pantaila-argazkiak"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Saihestu pantaila-argazkiak ateratzea. Baliteke honek gailu guztietan ez funtzionatzea."), + "disabled": MessageLookupByLibrary.simpleMessage("Desgaituta"), + "donate": MessageLookupByLibrary.simpleMessage("Dohaintza"), + "download": MessageLookupByLibrary.simpleMessage("Deskargatu"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Deskargak erabiltzea"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Deskargak nola funtzionatu behar duen"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Galdetu beti"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Gorde direktorioan"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Ezin da deskargatu. Baliteke multimedia hau korronte gisa soilik egotea, Quacker-ek oraindik deskargatu ezin duena."), + "download_path": + MessageLookupByLibrary.simpleMessage("Deskargatzeko bidea"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Multimedia deskargatzen..."), + "enable_": MessageLookupByLibrary.simpleMessage(" gaitu?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Sartu zure Twitter erabiltzaile-izena"), + "export": MessageLookupByLibrary.simpleMessage("Esportatu"), + "export_settings": MessageLookupByLibrary.simpleMessage( + "Ezarpenak esportatu nahi dituzu?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Harpidetza taldeko kideak esportatu nahi dituzu?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Harpidetza-taldeak esportatu nahi dituzu?"), + "export_subscriptions": MessageLookupByLibrary.simpleMessage( + "Harpidetzak esportatu nahi dituzu?"), + "export_tweets": MessageLookupByLibrary.simpleMessage( + "Txioak esportatu nahi dituzu?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Esportatu zure datuak"), + "feed": MessageLookupByLibrary.simpleMessage("Jarioa"), + "filters": MessageLookupByLibrary.simpleMessage("Filtroak"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Jarraitzaileak"), + "following": MessageLookupByLibrary.simpleMessage("Jarraitzen"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitterrek dio horretarako sarbidea debekatuta dagoela"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker urdina"), + "general": MessageLookupByLibrary.simpleMessage("Orokorra"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Taldeak"), + "help_make_fritter_even_better": + MessageLookupByLibrary.simpleMessage("Lagundu Quacker hobetzen"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Lagundu Quacker-en etorkizuna bermatzen"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Ezkutatu txio sentikorrak"), + "home": MessageLookupByLibrary.simpleMessage("Hasiera"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Funtzio honi buruzko iruzkinen bat baduzu, utzi"), + "import": MessageLookupByLibrary.simpleMessage("Inportatu"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Inportatu datuak beste gailu batetik"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Inportatu Twitter-etik"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Inportatu harpidetzak"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Erantzunak sartu"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Birtxioak sartu"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Hizkuntza"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Berrabiaraztea eskatzen du"), + "large": MessageLookupByLibrary.simpleMessage("Handia"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Legacy Android inportazioa"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Utzi garatzaileei zerbait hautsita dagoen jakin dezaten"), + "licenses": MessageLookupByLibrary.simpleMessage("Lizentziak"), + "light": MessageLookupByLibrary.simpleMessage("Argia"), + "live": MessageLookupByLibrary.simpleMessage("ZUZENEAN"), + "logging": MessageLookupByLibrary.simpleMessage("Erregistratzea"), + "media": MessageLookupByLibrary.simpleMessage("Multimedia"), + "media_size": + MessageLookupByLibrary.simpleMessage("Multimedia tamaina"), + "medium": MessageLookupByLibrary.simpleMessage("Ertaina"), + "name": MessageLookupByLibrary.simpleMessage("Izena"), + "newTrans": MessageLookupByLibrary.simpleMessage("Berria"), + "no": MessageLookupByLibrary.simpleMessage("Ez"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Ez da daturik itzuli, eta hori ez litzateke inoiz gertatu behar. Mesedez, jakinarazi akatsen bat, ahal bada!"), + "no_results": + MessageLookupByLibrary.simpleMessage("Ez dago emaitzarik"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Ez dago emaitzarik:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Ez dago harpidetzarik. Saiatu batzuk bilatzen edo inportatzen!"), + "not_set": MessageLookupByLibrary.simpleMessage("Ez da ezarri"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Oharra: Twitter-eko muga bat dela eta, litekeena da txio guztiak ez agertzea"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("Ados"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Hara! Zerbait gaizki atera da 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage( + "Ireki aplikazioaren ezarpenak"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitterrek dio orria ez dela existitzen, baina baliteke hori egia ez izatea"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Ez da baimenik eman. Mesedez, saiatu berriro eman ondoren!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Aukeratu kolore bat!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Aukeratu ikono bat!"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("Ainguratutako txioa"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Erreprodukzio abiadura"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Mesedez, idatzi izen bat"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Mesedez, ziurtatu inportatu nahi dituzun datuak bertan daudela, eta sakatu beheko inportazio-botoia."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Kontuan izan Quacker-ek Twitter bidez harpidetzak inportatzeko erabiltzen duen modua oso mugatuta dagoela eta kontu asko jarraian baditu, huts egin dezakeela."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potentzialki sentikorra"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Baliteke profil honek irudi, hizkuntz edo bestelako eduki sentikorrak izan ditzazkeela. Hala ere ikusi nahi al duzu?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Txio honek eduki sentikorra du. Ikusi nahi al duzu?"), + "prefix": MessageLookupByLibrary.simpleMessage("aurrizkia"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Profil pribatua"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "MIT lizentziapean argitaratua"), + "replying_to": MessageLookupByLibrary.simpleMessage("Erantzun"), + "report": MessageLookupByLibrary.simpleMessage("Txostena"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Akats baten berri eman"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Akats baten berri eman"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Berrezarri orriak aurrez zehaztutako balioetara"), + "retry": MessageLookupByLibrary.simpleMessage("Saiatu berriro"), + "save": MessageLookupByLibrary.simpleMessage("Gorde"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Gorde banda-zabalera irudi txikiagoekin"), + "saved": MessageLookupByLibrary.simpleMessage("Gordeak"), + "search": MessageLookupByLibrary.simpleMessage("Bilatu"), + "search_term": MessageLookupByLibrary.simpleMessage("Bilatu"), + "select": MessageLookupByLibrary.simpleMessage("Hautatu"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Inportatu beharreko kontu indibidualak hautatzea eta taldeak esleitzea etorkizunerako aurreikusita daude dagoeneko!"), + "send": MessageLookupByLibrary.simpleMessage("Bidali"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Partekatu txioaren edukia"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Partekatu txioaren edukia eta esteka"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Partekatu txioaren esteka"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Egiaztatu eguneratzeak Quacker hasten denean"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Egiaztatu eguneratzeak"), + "small": MessageLookupByLibrary.simpleMessage("Txikia"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Quacker-en zerbait hautsi da."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Zerbait gaizki atera da Quacker-en, eta akatsen txostena sortu da. Txostena Quackerren garatzaileei bidali ahal zaie arazoa konpontzen laguntzeko."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Sentitzen dugu, ezin izan zen txioa aurkitu!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Harpidetu"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Harpidetzak"), + "subtitles": MessageLookupByLibrary.simpleMessage("Azpitituluak"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Multimedia gorde da!"), + "system": MessageLookupByLibrary.simpleMessage("Sistema"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Eskerrik asko Quacker laguntzeagatik! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("Github arazoa (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage("Txioak ez zuen testurik"), + "theme": MessageLookupByLibrary.simpleMessage("Gaia"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Gaiaren modua"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Ez da joerarik itzuli. Hau ezustekoa! Mesedez, jakinarazi akats gisa, ahal baduzu."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Talde honek ez du harpidetzarik!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Denbora gehiegi behar izan du honek kargatzeko. Mesedez, egiaztatu interneteko konexioa!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Txio hau ez dago erabilgarri. Ziurrenik ezabatua izango zen."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Erabiltzaile honek ez du inor jarraitzen!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Erabiltzaile hau ez du inork jarraitzen!"), + "thread": MessageLookupByLibrary.simpleMessage("Haria"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniatura"), + "timed_out": MessageLookupByLibrary.simpleMessage("Denbora agortuta"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Lehendik dagoen Twitter kontu batetik harpidetzak inportatzeko, idatzi zure erabiltzaile-izena behean."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Aktibatu guztiak"), + "trending": MessageLookupByLibrary.simpleMessage("Joerak"), + "trends": MessageLookupByLibrary.simpleMessage("Joerak"), + "true_black": MessageLookupByLibrary.simpleMessage("Benetako beltza?"), + "tweets": MessageLookupByLibrary.simpleMessage("Txioak"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Txioak eta erantzunak"), + "tweets_number": m15, + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Ezin dira aurkitu eskuragarri dauden joera-kokapenak."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Ezin dira aurkitu gordetako txioak."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Ezin da inportatu"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Ezin dira hasierako orriak kargatu"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Ezin dira harpidetza taldeak kargatu"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Ezin da taldea kargatu"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Ezin dira taldearen ezarpenak kargatu"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Ezin da jarraipenen zerrenda kargatu"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Ezin da jarraipenen hurrengo orrialdea kargatu"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Ezin da hurrengo erantzunen orria kargatu"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Ezin da txioen hurrengo orria kargatu"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Ezin da profila kargatu"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Ezin dira bilaketaren emaitzak kargatu."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Ezin da txioa kargatu"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Ezin da txioa kargatu"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Ezin dira kargatu jarioko txioak"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Harpidetzak ezin dira eguneratu"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Ezin dira datu-baseko migrazioak gauzatu"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Ezin da igorri joera kokapenaren hobespena"), + "unknown": MessageLookupByLibrary.simpleMessage("Ezezaguna"), + "unsave": MessageLookupByLibrary.simpleMessage("Ez gorde"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Kendu harpidetza"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Eguneraketak"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Erabili benetako beltza gai ilunerako"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Ez da erabiltzailea aurkitu"), + "username": MessageLookupByLibrary.simpleMessage("Erabiltzaile-izena"), + "version": MessageLookupByLibrary.simpleMessage("Bertsioa"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Aplikazioaren eguneratze berri bat eskuragarri dagoenean"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Akatsak ri bidali behar litzaizkioke"), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Sentikor gisa markatutako txioak ezkutatu"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Aplikazioa irekitzean erakutsiko den fitxa"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Akats txostenen berri emate automatikoa gaitu nahi duzu?"), + "yes": MessageLookupByLibrary.simpleMessage("Bai"), + "yes_please": MessageLookupByLibrary.simpleMessage("Bai, mesedez"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Oraindik ez duzu txiorik gorde!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Hasierako 2 orrialde izan behar ditu gutxienez"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Zure profilak publikoa izan behar du, bestela inportazioak ez du funtzionatuko"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Zure txostena Quacker-en proiektura bidaliko da, eta pribatutasun xehetasunak helbide honetan aurki ditzakezu:") + }; +} diff --git a/lib/generated/intl/messages_fr.dart b/lib/generated/intl/messages_fr.dart new file mode 100644 index 00000000..99053275 --- /dev/null +++ b/lib/generated/intl/messages_fr.dart @@ -0,0 +1,493 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a fr locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'fr'; + + static String m0(name) => + "Voulez-vous vraiment supprimer le groupe d\'abonnement ${name} ?"; + + static String m1(fileName) => "Données exportées vers ${fileName}"; + + static String m2(fullPath) => "Données exportées vers ${fullPath}"; + + static String m3(timeagoFormat) => "Terminé ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Fin ${timeagoFormat}"; + + static String m5(snapshotData) => + "Terminé avec les utilisateurs ${snapshotData}"; + + static String m6(name) => "Groupe : ${name}"; + + static String m7(snapshotData) => + "${snapshotData} utilisateurs importés jusqu\'à présent"; + + static String m8(date) => "S\'est inscrit·e le ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Aucun vote', one: 'Un vote', two: 'Deux votes', few: '${numFormatted} votes', many: '${numFormatted} vote', other: '${numFormatted} votes')}"; + + static String m10(errorMessage) => + "Veuillez vérifier votre connexion Internet.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Appuyez pour télécharger ${releaseVersion}"; + + static String m12(getMediaType) => "Appuyer pour afficher ${getMediaType}"; + + static String m13(filePath) => + "Le fichier n’existe pas. Veuillez vous assurer qu’il se trouve à ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} a retweeté ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'no tweets', one: 'un tweet', two: 'deux tweets', few: '${numFormatted} tweets', many: '${numFormatted} tweet', other: '${numFormatted} tweets')}"; + + static String m16(widgetPlaceName) => + "Impossible de charger les tendances pour ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Impossible d\'enregistrer le média. Twitter a renvoyé un statut de ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Mise à jour vers ${releaseVersion} via votre client F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("À propos"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Compte suspendu"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Masque les auteurs des tweets. Évite les biais de confirmation basés sur des arguments faisant autorité."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Activer le mode biais de non-confirmation"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Ajouter des abonnements"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Ajouter au groupe"), + "all": MessageLookupByLibrary.simpleMessage("Tout"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Tous les excellents logiciels utilisés par Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Une mise à jour pour Quacker est disponible ! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Êtes-vous sûr ?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Retour"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter a invalidé le jeton d\'accès. Essayez de relancer Quacker !"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Thème bleu basé sur la palette de couleurs de Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Annuler"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Défaillance catastrophique"), + "choose": MessageLookupByLibrary.simpleMessage("Choisissez"), + "choose_pages": + MessageLookupByLibrary.simpleMessage("Choisir les pages"), + "close": MessageLookupByLibrary.simpleMessage("Fermer"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Êtes-vous sûr de vouloir fermer Quacker ?"), + "contribute": MessageLookupByLibrary.simpleMessage("Contribuer"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Copie de l\'adresse dans le presse-papiers"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Copie de la version dans le presse-papiers"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Impossible de contacter Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Impossible de trouver des tweets de cet utilisateur !"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Impossible de trouver des tweets des 7 derniers jours !"), + "country": MessageLookupByLibrary.simpleMessage("Pays"), + "dark": MessageLookupByLibrary.simpleMessage("Sombre"), + "data": MessageLookupByLibrary.simpleMessage("Données"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Données importées avec succès"), + "date_created": + MessageLookupByLibrary.simpleMessage("Date de création"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Date d\'inscription"), + "default_tab": + MessageLookupByLibrary.simpleMessage("Onglet par défaut"), + "delete": MessageLookupByLibrary.simpleMessage("Supprimer"), + "disable_screenshots": MessageLookupByLibrary.simpleMessage( + "Désactiver les captures d\'écran"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Empêche la prise de captures d\'écran. Cela peut ne pas fonctionner sur tous les appareils."), + "disabled": MessageLookupByLibrary.simpleMessage("Désactivé"), + "donate": MessageLookupByLibrary.simpleMessage("Faire un don"), + "download": MessageLookupByLibrary.simpleMessage("Télécharger"), + "download_handling": MessageLookupByLibrary.simpleMessage( + "Traitement des téléchargements"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Comment le téléchargement devrait fonctionner"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Toujours demander"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage( + "Enregistrer dans le répertoire"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Téléchargement impossible. Ce média pourrais être seulement disponible sous forme de flux, ce que Quacker ne sais pas encore télécharger."), + "download_path": + MessageLookupByLibrary.simpleMessage("Chemin de téléchargement"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Téléchargement des médias…"), + "enable_": MessageLookupByLibrary.simpleMessage("Activer  ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Entrer votre nom d\'utilisateur Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Exporter"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Exporter les paramètres ?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Exporter les membres du groupe d\'abonnement ?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Exporter les groupes d\'abonnement ?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Exporter les abonnements ?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Exporter les tweets ?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Exporter vos données"), + "feed": MessageLookupByLibrary.simpleMessage("Flux"), + "filters": MessageLookupByLibrary.simpleMessage("Filtres"), + "finish": MessageLookupByLibrary.simpleMessage("Finir"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Abonnés"), + "following": MessageLookupByLibrary.simpleMessage("Abonnements"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter informe que l\'accès est interdit"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker bleu"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Cette fonctionnalité n\'est plus prise en charge par Twitter !"), + "general": MessageLookupByLibrary.simpleMessage("Général"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Groupes"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Contribuer à l\'amélioration de Quacker"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Soutenir le développement de Quacker"), + "hide_sensitive_tweets": MessageLookupByLibrary.simpleMessage( + "Masquer les tweets sensibles"), + "home": MessageLookupByLibrary.simpleMessage("Accueil"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Si vous avez des commentaires sur cette fonctionnalité, veuillez m\'en faire part"), + "import": MessageLookupByLibrary.simpleMessage("Importer"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importer des données depuis un autre appareil"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importer depuis Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importer des abonnements"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Inclure les réponses"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Inclure les retweets"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Langue"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Nécessite un redémarrage"), + "large": MessageLookupByLibrary.simpleMessage("Grand"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Importation depuis un appareil Android ancien"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Faites savoir aux développeurs si quelque chose est défectueux"), + "licenses": MessageLookupByLibrary.simpleMessage("Licences"), + "light": MessageLookupByLibrary.simpleMessage("Lumineux"), + "live": MessageLookupByLibrary.simpleMessage("DIRECT"), + "logging": MessageLookupByLibrary.simpleMessage("Enregistrement"), + "media": MessageLookupByLibrary.simpleMessage("Médias"), + "media_size": MessageLookupByLibrary.simpleMessage("Taille du média"), + "medium": MessageLookupByLibrary.simpleMessage("Moyen"), + "missing_page": MessageLookupByLibrary.simpleMessage("Page manquante"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Si les vidéos doivent être mises en sourdine par défaut"), + "mute_videos": MessageLookupByLibrary.simpleMessage( + "Mettre les vidéos en sourdine"), + "name": MessageLookupByLibrary.simpleMessage("Nom"), + "newTrans": MessageLookupByLibrary.simpleMessage("Nouveau"), + "next": MessageLookupByLibrary.simpleMessage("Suivant"), + "no": MessageLookupByLibrary.simpleMessage("Non"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Aucune donnée n\'a été renvoyée, ce qui ne devrait jamais arriver. Veuillez signaler une erreur, si possible !"), + "no_results": MessageLookupByLibrary.simpleMessage("Aucun résultat"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Aucun résultat pour :"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Aucun abonnement. Essayez d’en rechercher ou d’en importer !"), + "not_set": MessageLookupByLibrary.simpleMessage("Non défini"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Note : En raison d\'une limitation de Twitter, tous les tweets peuvent ne pas être inclus"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Les abonnements peuvent être importés seulement de profils publics"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Oups ! Quelque chose a mal tourné 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage( + "Ouvrir les paramètres de l\'appli"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter informe que la page n\'existe pas, ce qui ne peux ne pas être vrai"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Autorisation non accordée. Veuillez réessayer après avoir accordé l\'autorisation !"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Choisissez une couleur !"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Choisissez une icône !"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Tweet épinglé"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Vitesse de lecture"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Veuillez entrer un nom"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Assurez-vous que les données que vous souhaitez importer s\'y trouvent, puis appuyez sur le bouton d\'importation ci-dessous."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Veuillez noter que la méthode utilisée par Quacker pour importer les abonnements est fortement limitée par Twitter, cela peut donc échouer si vous avez beaucoup de comptes suivis."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potentiellement sensible"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Ce profil peut contenir des images, un langage ou d\'autres contenus potentiellement sensibles. Voulez-vous toujours le consulter ?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Ce tweet contient un contenu potentiellement sensible. Voulez-vous le voir ?"), + "prefix": MessageLookupByLibrary.simpleMessage("préfixe"), + "private_profile": MessageLookupByLibrary.simpleMessage("Profil privé"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("Publié sous la licence MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("Réponse à"), + "report": MessageLookupByLibrary.simpleMessage("Signaler"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Signaler une erreur"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Signaler une erreur"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Réinitialiser les pages par défaut"), + "retry": MessageLookupByLibrary.simpleMessage("Répondre"), + "save": MessageLookupByLibrary.simpleMessage("Enregistrer"), + "save_bandwidth_using_smaller_images": MessageLookupByLibrary.simpleMessage( + "Économiser de la bande passante en chargeant des images plus petites"), + "saved": MessageLookupByLibrary.simpleMessage("Enregistré"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Ce tweet enregistré n\'a pas pu être affiché, car il est trop lourd à charger. Veuillez le signaler aux développeurs."), + "search": MessageLookupByLibrary.simpleMessage("Recherche"), + "search_term": + MessageLookupByLibrary.simpleMessage("Terme de recherche"), + "select": MessageLookupByLibrary.simpleMessage("Sélectionner"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "La sélection de comptes individuels à importer et l’affectation de groupes sont déjà en cours de développement !"), + "send": MessageLookupByLibrary.simpleMessage("Envoyer"), + "share_base_url": + MessageLookupByLibrary.simpleMessage("URL de partage personnalisé"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Utiliser une URL de base personnalisée lors du partage"), + "share_tweet_content": MessageLookupByLibrary.simpleMessage( + "Partager le contenu du tweet"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Partager le contenu du tweet et le lien"), + "share_tweet_link": MessageLookupByLibrary.simpleMessage( + "Partager le lien vers le tweet"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Vérifier les mises à jour quand Quacker démarre"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Vérifier les mises à jour"), + "small": MessageLookupByLibrary.simpleMessage("Petit"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Quelque chose s\'est cassé dans Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Un problème vient de se produire dans Quacker, et un rapport d\'erreur a été généré. Ce rapport peut être envoyé aux développeurs de Quacker pour les aider à résoudre le problème."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Désolé, impossible de trouver le tweet auquel on a répondu !"), + "subscribe": MessageLookupByLibrary.simpleMessage("S\'abonner"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Abonnements"), + "subtitles": MessageLookupByLibrary.simpleMessage("Sous-titres"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Le média est sauvegardé !"), + "system": MessageLookupByLibrary.simpleMessage("Système"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Merci d\'avoir aidé Quacker ! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("le problème GitHub (nº 143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Le tweet ne contenait aucun texte. C’est inattendu"), + "theme": MessageLookupByLibrary.simpleMessage("Thème"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Mode du thème"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Aucune tendance n\'a été retournée. C\'est inattendu ! Veuillez le signaler comme erreur, si possible."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Ce groupe ne contient pas d\'abonnements !"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Le chargement est trop long. Veuillez vérifier votre connexion réseau !"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Ce tweet n’est pas disponible Il a probablement été supprimé."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Cet utilisateur ne suit personne !"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Cet utilisateur n\'a personne qui le suit !"), + "thread": MessageLookupByLibrary.simpleMessage("Fil de discussion"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniature"), + "timed_out": MessageLookupByLibrary.simpleMessage("Délai expiré"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Pour importer des abonnements depuis un compte Twitter existant, saisissez votre nom d\'utilisateur ci-dessous."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Tout basculer"), + "trending": MessageLookupByLibrary.simpleMessage("Tendances"), + "trends": MessageLookupByLibrary.simpleMessage("Tendances"), + "true_black": MessageLookupByLibrary.simpleMessage("Vrai noir ?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweets"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweets & Réponses"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Vous devez disposer d\'au moins deux pages d\'écran d\'accueil."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Impossible de trouver les emplacements de tendance disponibles."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Impossible de trouver vos tweets enregistrés."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Importation impossible"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Impossible de charger vos pages d\'accueil"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger les groupes d\'abonnement"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "Impossible de charger le groupe"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger les paramètres du groupe"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger la liste des abonnés"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger la page suivante"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger la page suivante de réponses"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger la page suivante de tweets"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Impossible de charger le profil"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger les résultats de la recherche."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Impossible de charger le tweet"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Impossible de charger les tweets"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Impossible de charger les tweets pour le fil d\'actualité"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Impossible de rafraîchir la liste des abonnements"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Impossible d\'exécuter les migrations de la base de données"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Impossible de diffuser la préférence de localisation de la tendance"), + "unknown": MessageLookupByLibrary.simpleMessage("Inconnu"), + "unsave": MessageLookupByLibrary.simpleMessage("Désenregistrer"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Se désabonner"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("URL non pris en charge"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Mises à jour"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Utilisez le noir profond pour le thème du mode sombre"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Utilisateur non trouvé"), + "username": MessageLookupByLibrary.simpleMessage("Nom d’utilisateur"), + "version": MessageLookupByLibrary.simpleMessage("Version"), + "when_a_new_app_update_is_available": MessageLookupByLibrary.simpleMessage( + "Lorsqu\'une nouvelle mise à jour de l\'application est disponible"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Si les erreurs doivent être signalées à "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "La possibilité de masquer les tweets marqués comme sensibles"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Quel onglet s’affiche à l’ouverture de l’application"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Voulez-vous activer le rapport d\'erreur automatique ?"), + "yes": MessageLookupByLibrary.simpleMessage("Oui"), + "yes_please": + MessageLookupByLibrary.simpleMessage("Oui, s\'il vous plaît"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Vous n\'avez pas encore enregistré de tweets !"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Vous devez avoir au moins 2 pages d\'écran d\'accueil"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Votre profil doit être public, sinon l’importation ne fonctionnera pas"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Votre rapport sera envoyé au projet de Quacker, et les détails de la confidentialité peuvent être trouvés à l\'adresse suivante :") + }; +} diff --git a/lib/generated/intl/messages_hi.dart b/lib/generated/intl/messages_hi.dart new file mode 100644 index 00000000..cb464dc2 --- /dev/null +++ b/lib/generated/intl/messages_hi.dart @@ -0,0 +1,25 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a hi locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'hi'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => {}; +} diff --git a/lib/generated/intl/messages_id.dart b/lib/generated/intl/messages_id.dart new file mode 100644 index 00000000..f9686146 --- /dev/null +++ b/lib/generated/intl/messages_id.dart @@ -0,0 +1,473 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a id locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'id'; + + static String m0(name) => + "Apakah Anda yakin Anda ingin menghapus grup langganan ${name}?"; + + static String m1(fileName) => "Data diekspor ke ${fileName}"; + + static String m2(fullPath) => "Data diekspor ke ${fullPath}"; + + static String m3(timeagoFormat) => "Selesai ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Selesai ${timeagoFormat}"; + + static String m5(snapshotData) => "Selesai dengan ${snapshotData} pengguna"; + + static String m6(name) => "Grup: ${name}"; + + static String m7(snapshotData) => + "${snapshotData} pengguna terimpor sejauh ini"; + + static String m8(date) => "Bergabung ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Tidak ada pemilihan', one: 'Satu pemilihan', two: 'Dua pemilihan', few: '${numFormatted} pemilihan', many: '${numFormatted} pemilihan', other: '${numFormatted} pemilihan')}"; + + static String m10(errorMessage) => + "Mohon periksa koneksi Internet Anda.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Ketuk untuk mengunduh ${releaseVersion}"; + + static String m12(getMediaType) => "Ketuk untuk menampilkan ${getMediaType}"; + + static String m13(filePath) => + "Berkas tidak ada. Pastikan bahwa itu terletak di ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} mencuit ulang ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'tidak ada cuitan', one: '1 cuitan', two: '2 cuitan', few: '${numFormatted} cuitan', many: '${numFormatted} cuitan', other: '${numFormatted} cuitan')}"; + + static String m16(widgetPlaceName) => + "Tidak bisa memuat tren untuk ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Tidak dapat menyimpan media. Twitter mengembalikan status ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Perbarui ke ${releaseVersion} lewat klien F-Droid Anda"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Tentang"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Akun ditangguhkan"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Sembunyikan pembuat cuitan. Hindari bias konfirmasi berdasarkan argumen otoritatif."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Aktifkan mode bias non-konfirmasi"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Tambah ke grup"), + "all": MessageLookupByLibrary.simpleMessage("Semua"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Semua perangkat lunak hebat yang digunakan oleh Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Pembaruan untuk Quacker tersedia! 🚀"), + "are_you_sure": + MessageLookupByLibrary.simpleMessage("Apakah Anda yakin?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Kembali"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter telah membatalkan token akses kami. Coba buka ulang Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Tema biru berdasarkan pada skema warna Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Batal"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Kegagalan serius"), + "choose": MessageLookupByLibrary.simpleMessage("Pilih"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Pilih halaman"), + "close": MessageLookupByLibrary.simpleMessage("Tutup"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Apakah Anda yakin ingin menutup Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Kontribusi"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Alamat disalin ke papan klip"), + "copied_version_to_clipboard": + MessageLookupByLibrary.simpleMessage("Salin versi ke papan klip"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Tidak bisa menghubungi Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa mencari cuitan apa pun dari pengguna ini!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa menemukan cuitan apa pun dari 7 hari terakhir!"), + "country": MessageLookupByLibrary.simpleMessage("Negara"), + "dark": MessageLookupByLibrary.simpleMessage("Gelap"), + "data": MessageLookupByLibrary.simpleMessage("Data"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Data berhasil diimpor"), + "date_created": MessageLookupByLibrary.simpleMessage("Tanggal Dibuat"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Tanggal Berlangganan"), + "default_tab": MessageLookupByLibrary.simpleMessage("Bilah baku"), + "delete": MessageLookupByLibrary.simpleMessage("Hapus"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Nonaktifkan tangkap layar"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Cegah tangkapan layar untuk diambil. Ini mungkin tidak bekerja pada semua perangkat."), + "disabled": MessageLookupByLibrary.simpleMessage("Dinonaktifkan"), + "donate": MessageLookupByLibrary.simpleMessage("Donasi"), + "download": MessageLookupByLibrary.simpleMessage("Unduh"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Penanganan unduhan"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Bagaimana unduhan seharusnya bekerja"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Selalu tanya"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Simpan ke direktori"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Tidak bisa mengunduh. Media ini hanya tersedia sebagai siaran, yang Quacker belum bisa mengunduhnya."), + "download_path": MessageLookupByLibrary.simpleMessage("Jalur unduhan"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Mengunduh media..."), + "enable_": MessageLookupByLibrary.simpleMessage("Aktifkan ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Masukkan nama pengguna Twitter Anda"), + "export": MessageLookupByLibrary.simpleMessage("Ekspor"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Ekspor pengaturan?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Ekspor anggota grup langganan?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("Ekspor grup langganan?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Ekspor langganan?"), + "export_tweets": MessageLookupByLibrary.simpleMessage("Ekspor cuitan?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Ekspor data Anda"), + "feed": MessageLookupByLibrary.simpleMessage("Umpan"), + "filters": MessageLookupByLibrary.simpleMessage("Filter"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Pengikut"), + "following": MessageLookupByLibrary.simpleMessage("Mengikuti"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter mengatakan bahwa akses ke sini terlarang"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker biru"), + "general": MessageLookupByLibrary.simpleMessage("Umum"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grup"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Bantu Quacker menjadi lebih baik"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Bantu dukung masa depan Quacker"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Sembunyikan cuitan sensitif"), + "home": MessageLookupByLibrary.simpleMessage("Beranda"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Jika Anda punya umpan balik terhadap fitur ini, mohon tinggalkan di"), + "import": MessageLookupByLibrary.simpleMessage("Impor"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Impor data dari perangkat lain"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Impor dari Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Impor langganan"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Sertakan balasan"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Sertakan cuit ulang"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Bahasa"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Memerlukan pemulaian ulang"), + "large": MessageLookupByLibrary.simpleMessage("Besar"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Impor Android Lawas"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Biarkan pengembang tahu jika ada sesuatu yang rusak"), + "licenses": MessageLookupByLibrary.simpleMessage("Lisensi"), + "light": MessageLookupByLibrary.simpleMessage("Terang"), + "live": MessageLookupByLibrary.simpleMessage("LANGSUNG"), + "logging": MessageLookupByLibrary.simpleMessage("Log"), + "media": MessageLookupByLibrary.simpleMessage("Media"), + "media_size": MessageLookupByLibrary.simpleMessage("Ukuran media"), + "medium": MessageLookupByLibrary.simpleMessage("Sedang"), + "missing_page": MessageLookupByLibrary.simpleMessage("Halaman hilang"), + "name": MessageLookupByLibrary.simpleMessage("Nama"), + "newTrans": MessageLookupByLibrary.simpleMessage("Baru"), + "no": MessageLookupByLibrary.simpleMessage("Tidak"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Tidak ada data yang dikembalikan, yang seharusnya tidak pernah terjadi. Silakan laporkan masalah, jika mungkin!"), + "no_results": MessageLookupByLibrary.simpleMessage("Tidak ada hasil"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Tidak ada hasil untuk:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Tidak ada langganan. Coba mencari atau mengimpor beberapa!"), + "not_set": MessageLookupByLibrary.simpleMessage("Tidak diatur"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Catatan: Karena batasan Twitter, tidak semua cuitan akan disertakan"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("Oke"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Subskripsi hanya bisa terimpor dari profil publik"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Aduh! Ada yang tidak beres 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Buka pengaturan aplikasi"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter mengatakan halaman ini tidak ada, tetapi mungkin itu tidak benar"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Izin tidak diberikan. Coba lagi setelah memberikannya!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Pilih sebuah warna!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("Pilih ikon!"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("Cuitan yang disematkan"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Kecepatan pemutaran"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Mohon masukkan nama"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Mohon pastikan data yang ingin Anda impor terletak di sana, kemudian tekan tombol impor di bawah."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Mohon dicatat bahwa metode yang Quacker gunakan untuk mengimpor langganan sangat dibatasi oleh Twitter, jadi ini mungkin akan gagal jika Anda mengikuti banyak akun."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Kemungkinan sensitif"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Profil ini mungkin mengandung gambar, bahasa, atau konten lain yang kemungkinan sensitif. Apakah Anda masih ingin melihatnya?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Cuitan ini mengandung konten yang kemungkinan sensitif. Apakah Anda ingin melihatnya?"), + "prefix": MessageLookupByLibrary.simpleMessage("awalan"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Profil privat"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Dirilis di bawah Lisensi MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("Membalas ke"), + "report": MessageLookupByLibrary.simpleMessage("Lapor"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Laporkan masalah"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Melaporkan galat"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Atur ulang halaman ke yang baku"), + "retry": MessageLookupByLibrary.simpleMessage("Ulang"), + "save": MessageLookupByLibrary.simpleMessage("Simpan"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Hemat bandwidth menggunakan gambar yang lebih kecil"), + "saved": MessageLookupByLibrary.simpleMessage("Disimpan"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Tweet yang disimpan ini tidak bisa ditampilkan, karna terlalu besar. Silahkan laporkan ke developer."), + "search": MessageLookupByLibrary.simpleMessage("Cari"), + "search_term": MessageLookupByLibrary.simpleMessage("Kata pencarian"), + "select": MessageLookupByLibrary.simpleMessage("Pilih"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Memilih akun individu untuk diimpor, dan menetapkan grup sudah direncanakan untuk masa mendatang!"), + "send": MessageLookupByLibrary.simpleMessage("Kirim"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Bagi konten cuitan"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Bagi konten dan tautan cuitan"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Bagi tautan cuitan"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Periksa pembaruan ketika Quacker dimulai"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Periksa pembaruan"), + "small": MessageLookupByLibrary.simpleMessage("Kecil"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Sesuatu rusak di Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Ada sesuatu yang salah di Quacker, dan laporan galat telah dibuat. Laporan bisa dikirim ke pengembang Quacker untuk membantu memperbaiki masalah."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Maaf, cuitan yang dibalas tidak dapat ditemukan!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Langgan"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Langganan"), + "subtitles": MessageLookupByLibrary.simpleMessage("Takarir"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Media disimpan!"), + "system": MessageLookupByLibrary.simpleMessage("Sistem"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Terima kasih telah membantu Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("isu GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Cuitan tidak mengandung teks apa pun. Ini tidak diduga"), + "theme": MessageLookupByLibrary.simpleMessage("Tema"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Mode Tema"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Tidak ada tren yang dikembalikan. Ini tidak terduga! Mohon laporkan sebagai masalah, jika mungkin."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Grup ini tidak berisi langganan!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Ini perlu waktu lama untuk memuat. Mohon periksa koneksi jaringan Anda!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Cuitan ini tidak tersedia. Mungkin sudah dihapus."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Pengguna ini tidak mengikuti siapa pun!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Pengguna ini tidak punya seseorang yang mengikuti mereka!"), + "thread": MessageLookupByLibrary.simpleMessage("Utas"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Keluku"), + "timed_out": MessageLookupByLibrary.simpleMessage("Waktu habis"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Untuk mengimpor langganan dari akun Twitter yang ada, masukkan nama pengguna Anda di bawah ini."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Alih Semua"), + "trending": MessageLookupByLibrary.simpleMessage("Tren"), + "trends": MessageLookupByLibrary.simpleMessage("Tren"), + "true_black": MessageLookupByLibrary.simpleMessage("Hitam Pekat?"), + "tweets": MessageLookupByLibrary.simpleMessage("Cuitan"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Cuitan & Balasan"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Kamu perlu setidaknya 2 halaman beranda."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa menemukan lokasi tren yang tersedia."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa menemukan cuitan tersimpan Anda."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Tidak bisa mengimpor"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat beranda Anda"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat grup langganan"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Tidak bisa memuat grup"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat pengaturan grup"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat daftar pengikut"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat halaman pengikut selanjutnya"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat halaman balasan selanjutnya"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Tidak dapat memuat halaman cuitan selanjutnya"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Tidak bisa memuat profil"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat hasil pencarian."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Tidak bisa memuat cuitan"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Tidak bisa memuat cuitan"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa memuat cuitan untuk umpan"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa menyegarkan langganan"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa menjalankan migrasi basis data"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Tidak bisa mengalirkan preferensi lokasi tren"), + "unknown": MessageLookupByLibrary.simpleMessage("Tidak diketahui"), + "unsave": MessageLookupByLibrary.simpleMessage("Batal simpan"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Batal langganan"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("URL tidak didukung"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Pembaruan"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Gunakan hitam pekat untuk tema mode gelap"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Pengguna tidak ditemukan"), + "username": MessageLookupByLibrary.simpleMessage("Nama pengguna"), + "version": MessageLookupByLibrary.simpleMessage("Versi"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Ketika pembaruan aplikasi baru tersedia"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Apakah galat harus dilaporkan ke "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Untuk menyembunyikan cuitan yang ditandai sebagai sensitif"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Bilah mana yang ditampilkan ketika aplikasi dibuka"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Apakah Anda ingin mengaktifkan pelaporan galat otomatis?"), + "yes": MessageLookupByLibrary.simpleMessage("Ya"), + "yes_please": MessageLookupByLibrary.simpleMessage("Ya, silakan"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Anda belum menyimpan cuitan apa pun!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Anda harus paling tidak memiliki dua halaman beranda"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Profil Anda harus publik, jika tidak impor tidak akan bekerja"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Laporan Anda akan dikirim ke proyek Quacker, dan detail privasi bisa ditemukan pada:") + }; +} diff --git a/lib/generated/intl/messages_it.dart b/lib/generated/intl/messages_it.dart new file mode 100644 index 00000000..8198cdc2 --- /dev/null +++ b/lib/generated/intl/messages_it.dart @@ -0,0 +1,491 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a it locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'it'; + + static String m0(name) => + "Sei sicuro/a di voler eliminare il gruppo di iscrizioni ${name}?"; + + static String m1(fileName) => "Dati esportati in ${fileName}"; + + static String m2(fullPath) => "Dati esportati in ${fullPath}"; + + static String m3(timeagoFormat) => "Finito ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Finisce ${timeagoFormat}"; + + static String m5(snapshotData) => "Finito con ${snapshotData} utenti"; + + static String m6(name) => "Gruppo: ${name}"; + + static String m7(snapshotData) => "${snapshotData} utenti importati finora"; + + static String m8(date) => "Iscrizione: ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Nessun voto', one: 'Un voto', two: 'Due voti', few: '${numFormatted} voti', many: '${numFormatted} voto', other: '${numFormatted} voti')}"; + + static String m10(errorMessage) => + "Controlla la tua connessione a Internet.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "Tocca per scaricare ${releaseVersion}"; + + static String m12(getMediaType) => "Tocca per mostrare ${getMediaType}"; + + static String m13(filePath) => + "Il file non esiste. Assicurati che si trovi in ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} ha ritwittato ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'nessun tweet', one: 'un tweet', two: 'due tweet', few: '${numFormatted} tweet', many: '${numFormatted} tweet', other: '${numFormatted} tweet')}"; + + static String m16(widgetPlaceName) => + "Impossibile caricare le tendenze per ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Impossibile salvare il contenuto. Twitter ha restituito uno stato di ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Aggiorna a ${releaseVersion} tramite il tuo client F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Info"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Profilo sospeso"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Nascondi gli autori dei tweet. Evita il bias di conferma causato dall\'appello all\'autorità."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Modalità anti-bias di conferma"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Aggiungi abbonamenti"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Aggiungi al gruppo"), + "all": MessageLookupByLibrary.simpleMessage("Tutti"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Tutto l\'ottimo software utilizzato da Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "È disponibile un aggiornamento di Quacker! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Sei sicuro?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Indietro"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter ha invalidato il nostro token di accesso. Prova a riaprire Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Tema blu basato sui colori di Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Annulla"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Fallimento catastrofico"), + "choose": MessageLookupByLibrary.simpleMessage("Scegli"), + "choose_pages": + MessageLookupByLibrary.simpleMessage("Scegli le pagine"), + "close": MessageLookupByLibrary.simpleMessage("Chiudi"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Sei sicuro di voler chiudere Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Contribuisci"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Indirizzo copiato negli appunti"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Versione copiata negli appunti"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Impossibile contattare Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Non è stato trovato nessun tweet di questo utente!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Impossibile trovare tweet negli ultimi 7 giorni!"), + "country": MessageLookupByLibrary.simpleMessage("Nazione"), + "dark": MessageLookupByLibrary.simpleMessage("Scuro"), + "data": MessageLookupByLibrary.simpleMessage("Dati"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Dati importati con successo"), + "date_created": + MessageLookupByLibrary.simpleMessage("Data di creazione"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Data di iscrizione"), + "default_tab": + MessageLookupByLibrary.simpleMessage("Scheda predefinita"), + "delete": MessageLookupByLibrary.simpleMessage("Elimina"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Disattiva screenshot"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Impedisce di poter acquisire screenshot. Potrebbe non funzionare su tutti i dispositivi."), + "disabled": MessageLookupByLibrary.simpleMessage("Disabilitato"), + "donate": MessageLookupByLibrary.simpleMessage("Dona"), + "download": MessageLookupByLibrary.simpleMessage("Scarica"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Gestione degli scaricamenti"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Come dovrebbe funzionare lo scaricamento"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Chiedi sempre"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Salva nella cartella"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Impossibile effettuare il download. Questo contenuto potrebbe essere disponibile soltanto come stream, che Quacker non è ancora in grado di scaricare."), + "download_path": + MessageLookupByLibrary.simpleMessage("Percorso di download"), + "downloading_media": MessageLookupByLibrary.simpleMessage( + "Download del contenuto in corso..."), + "enable_": MessageLookupByLibrary.simpleMessage("Abilitare ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Inserisci il tuo nome utente di Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Esporta"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Esportare le impostazioni?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Esportare i membri dei gruppi di iscrizioni?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Esportare i gruppi di iscrizioni?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Esportare le iscrizioni?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Esportare i tweet?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Esporta i tuoi dati"), + "feed": MessageLookupByLibrary.simpleMessage("Feed"), + "filters": MessageLookupByLibrary.simpleMessage("Filtri"), + "finish": MessageLookupByLibrary.simpleMessage("Fine"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Seguaci"), + "following": MessageLookupByLibrary.simpleMessage("Seguiti"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter dice che l\'accesso non è consentito"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Blu Quacker"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Questa funzionalità non è più supportata da Twitter!"), + "general": MessageLookupByLibrary.simpleMessage("Generale"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Gruppi"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Aiuta a rendere Quacker migliore"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Aiuta a supportare il futuro di Quacker"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Nascondi tweet sensibili"), + "home": MessageLookupByLibrary.simpleMessage("Home"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Se hai qualche feedback su questa funzione, lascialo nella"), + "import": MessageLookupByLibrary.simpleMessage("Importa"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importa dati da un altro dispositivo"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importa da Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importa iscrizioni"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Includi risposte"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Includi retweet"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Lingua"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Richiede un riavvio"), + "large": MessageLookupByLibrary.simpleMessage("Grande"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Importa Android Legacy"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Fai sapere agli sviluppatori se qualcosa non funziona"), + "licenses": MessageLookupByLibrary.simpleMessage("Licenze"), + "light": MessageLookupByLibrary.simpleMessage("Chiaro"), + "live": MessageLookupByLibrary.simpleMessage("LIVE"), + "logging": MessageLookupByLibrary.simpleMessage("Registro"), + "media": MessageLookupByLibrary.simpleMessage("Contenuti"), + "media_size": MessageLookupByLibrary.simpleMessage( + "Dimensione dei contenuti multimediali"), + "medium": MessageLookupByLibrary.simpleMessage("Medio"), + "missing_page": MessageLookupByLibrary.simpleMessage("Pagina mancante"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Se i video dovrebbero essere silenziati per impostazione predefinita"), + "mute_videos": MessageLookupByLibrary.simpleMessage("Silenzia i video"), + "name": MessageLookupByLibrary.simpleMessage("Nome"), + "newTrans": MessageLookupByLibrary.simpleMessage("Nuovo"), + "next": MessageLookupByLibrary.simpleMessage("Avanti"), + "no": MessageLookupByLibrary.simpleMessage("No"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Nessun dato è stato restituito, il che non dovrebbe mai accadere. Si prega di segnalare un errore, se possibile!"), + "no_results": MessageLookupByLibrary.simpleMessage("Nessun risultato"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Nessun risultato per:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Nessuna iscrizione. Prova a cercare o importane alcuni!"), + "not_set": MessageLookupByLibrary.simpleMessage("Non impostato"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Nota: a causa di una limitazione di Twitter, non tutti i tweet potrebbero essere inclusi"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("Ok"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Le iscrizioni possono essere importate soltanto da profili pubblici"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Ops! Qualcosa è andato storto 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage( + "Apri le impostazioni dell\'app"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter dice che la pagina non esiste, ma potrebbe non essere vero"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Permesso non concesso. Si prega di riprovare dopo la concessione!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Scegli un colore!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Scegli un\'icona!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Tweet fissato"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Velocità di riproduzione"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Inserisci un nome"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Assicurati che i dati che vuoi importare si trovino lì, poi premi il pulsante di importazione qui sotto."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Si ricorda che il metodo che Quacker usa per importare le iscrizioni è fortemente limitato da Twitter, quindi potrebbe fallire se segui molti account."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potenzialmente sensibile"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Questo profilo può includere immagini, linguaggio o altri contenuti potenzialmente sensibili. Desideri comunque vederlo?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Questo tweet contiene contenuti potenzialmente sensibili. Desideri visualizzarlo?"), + "prefix": MessageLookupByLibrary.simpleMessage("prefisso"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Profilo privato"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Rilasciato sotto licenza MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("In risposta a"), + "report": MessageLookupByLibrary.simpleMessage("Segnala"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Segnala un errore"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Segnalazione di un errore"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Reimposta pagine predefinite"), + "retry": MessageLookupByLibrary.simpleMessage("Riprova"), + "save": MessageLookupByLibrary.simpleMessage("Salva"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Risparmia banda usando immagini più piccole"), + "saved": MessageLookupByLibrary.simpleMessage("Salvati"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Non è stato possibile visualizzare questo tweet salvato, poiché è troppo grande per essere caricato. Si prega di segnalarlo agli sviluppatori."), + "search": MessageLookupByLibrary.simpleMessage("Ricerca"), + "search_term": MessageLookupByLibrary.simpleMessage("Ricerca"), + "select": MessageLookupByLibrary.simpleMessage("Seleziona"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "La selezione dei singoli account da importare e l\'assegnazione dei gruppi sono entrambe già pianificate per il futuro!"), + "send": MessageLookupByLibrary.simpleMessage("Invia"), + "share_base_url": MessageLookupByLibrary.simpleMessage( + "URL di condivisione personalizzato"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Usa un URL di base personalizzato per la condivisione"), + "share_tweet_content": MessageLookupByLibrary.simpleMessage( + "Condividi il contenuto del tweet"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Condividi il link e il contenuto del tweet"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Condividi il link al tweet"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Controlla gli aggiornamenti all\'avvio di Quacker"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Controlla gli aggiornamenti"), + "small": MessageLookupByLibrary.simpleMessage("Piccolo"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Qualcosa si è rotto in Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Qualcosa è andato storto in Quacker ed è stato generato un rapporto di errore. Il rapporto può essere inviato agli sviluppatori di Quacker per aiutare a risolvere il problema."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Spiacenti, il tweet a cui è riferita la risposta non è stato trovato!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Iscriviti"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Iscrizioni"), + "subtitles": MessageLookupByLibrary.simpleMessage("Sottotitoli"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Contenuto salvato!"), + "system": MessageLookupByLibrary.simpleMessage("Sistema"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Grazie per aver aiutato Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("issue GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Il tweet non contiene alcun testo. Questo è inaspettato"), + "theme": MessageLookupByLibrary.simpleMessage("Tema"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Modalità del tema"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Non è stata restituita alcuna tendenza. Questo è inaspettato! Si prega di segnalare un errore, se possibile."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Questo gruppo non contiene iscrizioni!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Il caricamento ha impiegato troppo tempo. Si prega di controllare la connessione di rete!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Questo tweet non è disponibile. Probabilmente è stato cancellato."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Questo utente non segue nessuno!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Nessuno sta seguendo questo utente!"), + "thread": MessageLookupByLibrary.simpleMessage("Discussione"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniatura"), + "timed_out": MessageLookupByLibrary.simpleMessage("Tempo scaduto"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Per importare le iscrizioni da un account Twitter esistente, inserisci il tuo nome utente qui sotto."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Seleziona tutto"), + "trending": MessageLookupByLibrary.simpleMessage("Tendenze"), + "trends": MessageLookupByLibrary.simpleMessage("Tendenze"), + "true_black": MessageLookupByLibrary.simpleMessage("Nero assoluto?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweet"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweet e risposte"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "È necessario avere almeno due pagine nella home."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Impossibile trovare le posizioni delle tendenze disponibili."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Impossibile trovare i tuoi tweet salvati."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Impossibile importare"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Impossibile caricare le tue pagine della home"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare i gruppi di iscrizioni"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "Impossibile caricare il gruppo"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare le impostazioni del gruppo"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare l\'elenco dei seguiti"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare la pagina successiva dei seguiti"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare la pagina successiva delle risposte"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare la pagina successiva dei tweet"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Impossibile caricare il profilo"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare i risultati della ricerca."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Impossibile caricare il tweet"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Impossibile caricare i tweet"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Impossibile caricare i tweet per il feed"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Impossibile aggiornare le iscrizioni"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Impossibile eseguire le migrazioni del database"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Impossibile trasmettere la preferenza della posizione delle tendenze"), + "unknown": MessageLookupByLibrary.simpleMessage("Sconosciuto"), + "unsave": MessageLookupByLibrary.simpleMessage("Annulla salvataggio"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Annulla iscrizione"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("URL non supportato"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Aggiornamenti"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Usa un nero vero per il tema scuro"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Utente non trovato"), + "username": MessageLookupByLibrary.simpleMessage("Nome utente"), + "version": MessageLookupByLibrary.simpleMessage("Versione"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Quando è disponibile un nuovo aggiornamento dell\'app"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Se gli errori dovrebbero essere segnalati a "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Se nascondere i tweet segnalati come sensibili"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Quale scheda viene visualizzata quando si apre l\'app"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Vorresti abilitare la segnalazione automatica degli errori?"), + "yes": MessageLookupByLibrary.simpleMessage("Sì"), + "yes_please": MessageLookupByLibrary.simpleMessage("Si, grazie"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Non hai ancora salvato un tweet!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Devi avere almeno due pagine nella home"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Il tuo profilo deve essere pubblico, altrimenti l\'importazione non funzionerà"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Il tuo rapporto verrà inviato al progetto Quacker di , i dettagli sulla privacy possono essere trovati a:") + }; +} diff --git a/lib/generated/intl/messages_ja.dart b/lib/generated/intl/messages_ja.dart new file mode 100644 index 00000000..c670a827 --- /dev/null +++ b/lib/generated/intl/messages_ja.dart @@ -0,0 +1,387 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ja locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ja'; + + static String m0(name) => "登録グループ${name}を削除してもよろしいですか?"; + + static String m1(fileName) => "データが${fileName}にエクスポートされました"; + + static String m2(fullPath) => "データが${fullPath}にエクスポートされました"; + + static String m3(timeagoFormat) => "${timeagoFormat}に終了"; + + static String m4(timeagoFormat) => "${timeagoFormat}に終了"; + + static String m5(snapshotData) => "${snapshotData}ユーザのインポートが完了しました"; + + static String m6(name) => "グループ: ${name}"; + + static String m7(snapshotData) => "${snapshotData}ユーザがインポートされました"; + + static String m8(date) => "${date}に登録"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: '0 票', one: '1 票', two: '2 票', few: '${numFormatted} 票', many: '${numFormatted} 票', other: '${numFormatted} 票')}"; + + static String m10(errorMessage) => "インターネット接続を確認してください。\n\n${errorMessage}"; + + static String m11(releaseVersion) => "タップしてダウンロード:${releaseVersion}"; + + static String m12(getMediaType) => "タップして${getMediaType}を表示"; + + static String m13(filePath) => "ファイルが存在しません。${filePath}に存在することを確認してください"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName}がリツイート ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: '0 ツイート', one: '1 ツイート', two: '2 ツイート', few: '${numFormatted} ツイート', many: '${numFormatted} ツイート', other: '${numFormatted} ツイート')}"; + + static String m16(widgetPlaceName) => "${widgetPlaceName}のトレンドを読み込めませんでした"; + + static String m17(responseStatusCode) => + "メディアを保存できませんでした。Twitterから返されたステータス:${responseStatusCode}"; + + static String m18(releaseVersion) => "F-Droidクライアントから${releaseVersion}に更新"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Quackerについて"), + "account_suspended": MessageLookupByLibrary.simpleMessage("凍結済みアカウント"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "ツイート発信者を非表示にして、権威に基づく確証バイアスに陥るのを避けます。"), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage("対確証バイアスモードを有効化"), + "add_to_group": MessageLookupByLibrary.simpleMessage("グループに追加"), + "all": MessageLookupByLibrary.simpleMessage("すべて"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage("Quackerで使用する偉大なソフトウェア"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage("Quackerの更新が利用可能です!🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("確認"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("戻る"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage("Twitterの配色に基づいたブルーのテーマ"), + "cancel": MessageLookupByLibrary.simpleMessage("キャンセル"), + "catastrophic_failure": MessageLookupByLibrary.simpleMessage("致命的なエラー"), + "choose": MessageLookupByLibrary.simpleMessage("選択"), + "close": MessageLookupByLibrary.simpleMessage("閉じる"), + "confirm_close_fritter": + MessageLookupByLibrary.simpleMessage("Quacker を閉じますか?"), + "contribute": MessageLookupByLibrary.simpleMessage("貢献する"), + "copied_address_to_clipboard": + MessageLookupByLibrary.simpleMessage("アドレスをクリップボードにコピーしました"), + "copied_version_to_clipboard": + MessageLookupByLibrary.simpleMessage("バージョンをクリップボードにコピーしました"), + "could_not_contact_twitter": + MessageLookupByLibrary.simpleMessage("Twitterにアクセスできませんでした"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage("このユーザのツイートが見つかりません!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage("過去7日間にツイートが見つかりませんでした!"), + "country": MessageLookupByLibrary.simpleMessage("国"), + "dark": MessageLookupByLibrary.simpleMessage("ダーク"), + "data": MessageLookupByLibrary.simpleMessage("データ"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("データのインポートに成功しました"), + "date_created": MessageLookupByLibrary.simpleMessage("作成日"), + "date_subscribed": MessageLookupByLibrary.simpleMessage("登録日"), + "default_tab": MessageLookupByLibrary.simpleMessage("デフォルトのタブ"), + "delete": MessageLookupByLibrary.simpleMessage("削除"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("スクリーンショットを無効化"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "スクリーンショットの撮影を防止する。すべての端末で動作しない可能性があります。"), + "disabled": MessageLookupByLibrary.simpleMessage("無効"), + "donate": MessageLookupByLibrary.simpleMessage("寄付"), + "download": MessageLookupByLibrary.simpleMessage("ダウンロード"), + "download_handling": MessageLookupByLibrary.simpleMessage("ダウンロード制御"), + "download_handling_description": + MessageLookupByLibrary.simpleMessage("どのようにダウンロードするか"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("毎回確認する"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("ディレクトリに保存"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "ダウンロードできません。このメディアはストリーム限定の可能性があり、今のQuackerではダウンロードできません。"), + "download_path": MessageLookupByLibrary.simpleMessage("ダウンロード先"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("メディアをダウンロード中..."), + "enable_": MessageLookupByLibrary.simpleMessage("を有効化?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": + MessageLookupByLibrary.simpleMessage("Twitterユーザ名を入力"), + "export": MessageLookupByLibrary.simpleMessage("エクスポート"), + "export_settings": MessageLookupByLibrary.simpleMessage("設定をエクスポート?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage("登録グループのアカウントをエクスポート?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("登録グループをエクスポート?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("登録アカウントをエクスポート?"), + "export_tweets": MessageLookupByLibrary.simpleMessage("ツイートをエクスポート?"), + "export_your_data": MessageLookupByLibrary.simpleMessage("データのエクスポート"), + "feed": MessageLookupByLibrary.simpleMessage("フィード"), + "filters": MessageLookupByLibrary.simpleMessage("フィルタ"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("フォロワー"), + "following": MessageLookupByLibrary.simpleMessage("フォロー"), + "forbidden": MessageLookupByLibrary.simpleMessage("Twitterによればアクセス禁止"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quackerブルー"), + "general": MessageLookupByLibrary.simpleMessage("一般"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("グループ"), + "help_make_fritter_even_better": + MessageLookupByLibrary.simpleMessage("Quackerを改善するために協力する"), + "help_support_fritters_future": + MessageLookupByLibrary.simpleMessage("Quackerの将来を支援する"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("センシティブな内容のツイートを隠す"), + "home": MessageLookupByLibrary.simpleMessage("ホーム"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "この機能にフィードバックがありましたら、こちらにお願いします。"), + "import": MessageLookupByLibrary.simpleMessage("インポート"), + "import_data_from_another_device": + MessageLookupByLibrary.simpleMessage("他の端末からデータをインポートする"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Twitterからインポート"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("登録アカウントをインポートする"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": MessageLookupByLibrary.simpleMessage("返信を含める"), + "include_retweets": MessageLookupByLibrary.simpleMessage("リツイートを含める"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("言語"), + "language_subtitle": MessageLookupByLibrary.simpleMessage("再起動が必要"), + "large": MessageLookupByLibrary.simpleMessage("大"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("インポート(レガシー端末)"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage("不都合を開発者に知らせる"), + "licenses": MessageLookupByLibrary.simpleMessage("ライセンス"), + "light": MessageLookupByLibrary.simpleMessage("ライト"), + "live": MessageLookupByLibrary.simpleMessage("ライブ"), + "logging": MessageLookupByLibrary.simpleMessage("ログ"), + "media": MessageLookupByLibrary.simpleMessage("メディア"), + "media_size": MessageLookupByLibrary.simpleMessage("メディアの大きさ"), + "medium": MessageLookupByLibrary.simpleMessage("中"), + "name": MessageLookupByLibrary.simpleMessage("グループ名"), + "newTrans": MessageLookupByLibrary.simpleMessage("新着"), + "next": MessageLookupByLibrary.simpleMessage("次"), + "no": MessageLookupByLibrary.simpleMessage("いいえ"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "データが返されませんでした。これは起こりえないことです。可能でしたらバグとして報告ください!"), + "no_results": MessageLookupByLibrary.simpleMessage("結果なし"), + "no_results_for": MessageLookupByLibrary.simpleMessage("結果なし:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "登録アカウントがありません。検索するか、インポートしてみてください!"), + "not_set": MessageLookupByLibrary.simpleMessage("設定しない"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "注意:Twitterの制限により全てのツイートが含まれない可能性があります"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("問題が発生しました🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage("アプリで開く設定"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitterはページがないと表示しているが、本当ではないかもしれない"), + "permission_not_granted": + MessageLookupByLibrary.simpleMessage("権限がありません。許可後に再度試してみてください!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("色を選択!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("アイコンを選択!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("固定ツイート"), + "playback_speed": MessageLookupByLibrary.simpleMessage("再生速度"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("グループ名を入力してください"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "インポートしたいデータが存在することを確認し、下のインポートボタンを押してください。"), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Quackerが登録アカウントをインポートする際に使うメソッドはTwitterが厳しくレート制限しているため、フォローアカウントが多い場合は失敗する可能性があります。"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "プロフィールにセンシティブな画像、言語、その他のコンテンツが含まれる可能性があります。表示しますか?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "ツイートにセンシティブな内容が含まれる可能性があります。表示しますか?"), + "prefix": MessageLookupByLibrary.simpleMessage("プレフィックス"), + "private_profile": MessageLookupByLibrary.simpleMessage("非公開プロフィール"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("MITライセンスで公開"), + "replying_to": MessageLookupByLibrary.simpleMessage("返信:"), + "report": MessageLookupByLibrary.simpleMessage("レポート"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("バグのレポート"), + "reporting_an_error": MessageLookupByLibrary.simpleMessage("エラーの報告"), + "retry": MessageLookupByLibrary.simpleMessage("再試行"), + "save": MessageLookupByLibrary.simpleMessage("保存"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage("小さい画像にすると通信容量を削減できます"), + "saved": MessageLookupByLibrary.simpleMessage("保存ツイート"), + "search": MessageLookupByLibrary.simpleMessage("検索"), + "select": MessageLookupByLibrary.simpleMessage("選択"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "インポートするアカウントの選択やグループへの割り当ては今後対応予定です!"), + "send": MessageLookupByLibrary.simpleMessage("送信"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("ツイート内容を共有"), + "share_tweet_content_and_link": + MessageLookupByLibrary.simpleMessage("ツイート内容とリンクを共有"), + "share_tweet_link": MessageLookupByLibrary.simpleMessage("ツイートリンクを共有"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage("Quacker開始時に更新を確認する"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("更新を確認"), + "small": MessageLookupByLibrary.simpleMessage("小"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Quackerに異常が発生しました。"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Quackerに問題が発生し、エラーレポートが作成されました。問題修正のため、このレポートを開発者に送信できます。"), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage("返信ツイートが見つかりませんでした!"), + "subscribe": MessageLookupByLibrary.simpleMessage("登録する"), + "subscriptions": MessageLookupByLibrary.simpleMessage("登録アカウント"), + "subtitles": MessageLookupByLibrary.simpleMessage("字幕"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("メディアを保存しました!"), + "system": MessageLookupByLibrary.simpleMessage("システム"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": + MessageLookupByLibrary.simpleMessage("Quackerを支援いただきありがとうございます!💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("GitHub issue (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage("ツイートのテキストがありません。予期せぬ結果です"), + "theme": MessageLookupByLibrary.simpleMessage("テーマ"), + "theme_mode": MessageLookupByLibrary.simpleMessage("テーマのモード"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "トレンドが返されませんでした。予期せぬ動作です!可能でしたらバグとして報告ください。"), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage("このグループは空です!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "読み込みに時間がかかり過ぎています。ネットワーク接続を確認してください!"), + "this_tweet_is_unavailable": + MessageLookupByLibrary.simpleMessage("このツイートはありません。削除されたかもしれません。"), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage("このユーザは誰もフォローしていません!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage("このユーザをフォローしている人はいません!"), + "thread": MessageLookupByLibrary.simpleMessage("スレッド"), + "thumbnail": MessageLookupByLibrary.simpleMessage("サムネイル"), + "timed_out": MessageLookupByLibrary.simpleMessage("タイムアウト"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Twitterアカウントから登録アカウントをインポートするには、以下にユーザ名を入力してください。"), + "toggle_all": MessageLookupByLibrary.simpleMessage("すべて選択"), + "trending": MessageLookupByLibrary.simpleMessage("トレンド"), + "trends": MessageLookupByLibrary.simpleMessage("トレンド"), + "true_black": MessageLookupByLibrary.simpleMessage("トゥルーブラック?"), + "tweets": MessageLookupByLibrary.simpleMessage("ツイート"), + "tweets_and_replies": MessageLookupByLibrary.simpleMessage("ツイートと返信"), + "tweets_number": m15, + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage("利用可能なトレンドの地域が見つかりませんでした。"), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage("保存したツイートが見つかりませんでした。"), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("インポートできませんでした"), + "unable_to_load_home_pages": + MessageLookupByLibrary.simpleMessage("ホームを読み込めません"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage("登録グループの読み込みに失敗しました"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("グループの読み込みに失敗しました"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage("グループ設定の読み込みに失敗しました"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage("フォローリストを読み込めませんでした"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage("フォローの次のページを読み込めませんでした"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage("返信の次のページ読み込みに失敗しました"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage("ツイートの次のページ読み込みに失敗しました"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("プロフィールを読み込めませんでした"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage("検索結果の読み込みに失敗しました。"), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("ツイートの読み込みに失敗しました"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("ツイートを読み込めませんでした"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage("フィードにツイートを読み込めませんでした"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage("データベース移行ができませんでした"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage("トレンドの地域設定をストリームできませんでした"), + "unknown": MessageLookupByLibrary.simpleMessage("不明"), + "unsave": MessageLookupByLibrary.simpleMessage("保存取り消し"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("登録解除"), + "unsupported_url": MessageLookupByLibrary.simpleMessage("未対応のURL"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("更新"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage("ダークテーマで完全な黒を使用する"), + "user_not_found": MessageLookupByLibrary.simpleMessage("ユーザが見つかりません"), + "username": MessageLookupByLibrary.simpleMessage("ユーザ名"), + "version": MessageLookupByLibrary.simpleMessage("バージョン"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage("新しいアプリの更新が利用可能なとき"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage("エラーをに送信する"), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage("センシティブとされたツイートを隠すかどうか"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage("アプリの起動時に表示するタブ"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage("自動エラー報告を有効にしますか?"), + "yes": MessageLookupByLibrary.simpleMessage("はい"), + "yes_please": MessageLookupByLibrary.simpleMessage("はいどうぞ"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage("まだツイートを保存していません!"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage("公開アカウントである必要があります"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "レポートはQuackerのプロジェクトに送信されます。プライバシーの詳細は以下の通りです:") + }; +} diff --git a/lib/generated/intl/messages_ko.dart b/lib/generated/intl/messages_ko.dart new file mode 100644 index 00000000..4a257338 --- /dev/null +++ b/lib/generated/intl/messages_ko.dart @@ -0,0 +1,96 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ko locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ko'; + + static String m1(fileName) => "정보를 ${fileName}(으)로 내보냈습니다"; + + static String m2(fullPath) => "정보를 ${fullPath}(으)로 내보냈습니다"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "add_to_group": MessageLookupByLibrary.simpleMessage("그룹에 추가"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage("7일 이상의 트윗을 찾을 수 없습니다!"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("데이터가 성공적으로 내보내졌습니다"), + "export": MessageLookupByLibrary.simpleMessage("내보내기"), + "export_settings": MessageLookupByLibrary.simpleMessage("내보내기 설정?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage("구독 그룹 맴버를 내보내겠습니까?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("구독 그룹을 내보내겠습니까?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("구독 내보내기?"), + "export_tweets": MessageLookupByLibrary.simpleMessage("트윗 내보내기?"), + "feed": MessageLookupByLibrary.simpleMessage("피드"), + "filters": MessageLookupByLibrary.simpleMessage("필터"), + "followers": MessageLookupByLibrary.simpleMessage("팔로워"), + "following": MessageLookupByLibrary.simpleMessage("팔로잉"), + "include_replies": MessageLookupByLibrary.simpleMessage("답장 포함"), + "include_retweets": MessageLookupByLibrary.simpleMessage("리트윗 포함"), + "media": MessageLookupByLibrary.simpleMessage("미디어"), + "no_results": MessageLookupByLibrary.simpleMessage("결과 없음"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "공지: 트위터의 한계로 인하여 모든 트윗이 포함되지 않을 수 있습니다"), + "reporting_an_error": MessageLookupByLibrary.simpleMessage("오류를 보고합니다"), + "saved": MessageLookupByLibrary.simpleMessage("저장됨"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Quacker에 오류가 발생하였으며, 오류 보고서가 생성되었습니다. 문제해결을 위해 보고서를 Quacker 개발자에게 보낼 수 있습니다."), + "subscribe": MessageLookupByLibrary.simpleMessage("구독"), + "subscriptions": MessageLookupByLibrary.simpleMessage("구독"), + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage("해당 유저는 아무도 팔로우 하지 않았습니다!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage("해당 유저는 팔로워가 없습니다!"), + "trending": MessageLookupByLibrary.simpleMessage("트랜드"), + "tweets": MessageLookupByLibrary.simpleMessage("트윗"), + "tweets_and_replies": MessageLookupByLibrary.simpleMessage("트윗 & 답장"), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage("저장된 트윗을 찾을 수 없습니다."), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("그룹을 불러올 수 없습니다"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage("그룹 설정을 불러올 수 없습니다"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage("팔로우 목록을 불러올 수 없습니다"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage("다음 페이지 팔로우 목록을 불러올 수 없습니다"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage("다음 페이지 트윗을 불러올 수 없습니다"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("프로필을 불러올 수 없습니다"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage("검색결과를 불러올 수 없습니다."), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("트윗을 불러올 수 없습니다"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage("트윗 피드를 불러올 수 없습니다"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("구독 해제"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage("자동 오류 보고를 켜시겠습니까?"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage("아무 트윗도 저장하지 않았습니다!") + }; +} diff --git a/lib/generated/intl/messages_ml.dart b/lib/generated/intl/messages_ml.dart new file mode 100644 index 00000000..67826830 --- /dev/null +++ b/lib/generated/intl/messages_ml.dart @@ -0,0 +1,25 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ml locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ml'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => {}; +} diff --git a/lib/generated/intl/messages_nb_NO.dart b/lib/generated/intl/messages_nb_NO.dart new file mode 100644 index 00000000..5542f596 --- /dev/null +++ b/lib/generated/intl/messages_nb_NO.dart @@ -0,0 +1,412 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a nb_NO locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'nb_NO'; + + static String m0(name) => "Slett ${name}-abonnementsgruppen?"; + + static String m1(fileName) => "Data eksportert til ${fileName}"; + + static String m2(fullPath) => "Data eksportert til ${fullPath}"; + + static String m3(timeagoFormat) => "Sluttet ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Slutter ${timeagoFormat}"; + + static String m5(snapshotData) => "Fullført med ${snapshotData} brukere"; + + static String m6(name) => "Gruppe: ${name}"; + + static String m7(snapshotData) => + "${snapshotData} brukere importert så langt"; + + static String m8(date) => "Tok del ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'ingen stemmer', one: 'én stemme', two: 'to stemmer', few: '${numFormatted} stemmer', many: '${numFormatted} stemme', other: '${numFormatted} stemmer')}"; + + static String m10(errorMessage) => + "Sjekk at du er tilkoblet Internett.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Trykk for å laste ned ${releaseVersion}"; + + static String m12(getMediaType) => "Trykk for å vise ${getMediaType}"; + + static String m13(filePath) => + "Filen finnes ikke. Sørg for at den er å finne i ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} re-tvitret"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'ingen tvitringer', one: 'én tvitring', two: 'to tvitringer', few: '${numFormatted} tvitringer', many: '${numFormatted} tvitringer', other: '${numFormatted} tvitringer')}"; + + static String m16(widgetPlaceName) => + "Kunne ikke laste ned tendenser for ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Kunne ikke lagre mediafilen. Twitter svarte med ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Oppgrader til ${releaseVersion} med din F-Droid-klient"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Om"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Kontoen er suspendert"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Skjul forfattere av tvitringer. Unngå bekreftelsesbias basert på argumenter i form av autoriteter."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage("Forhindre bekreftelsesbias"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Legg til i gruppe"), + "all": MessageLookupByLibrary.simpleMessage("Alle"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "All den flotte programvaren som brukes av Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "En oppdatering for Quacker er tilgjengelig! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Er du sikker?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Tilbake"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Blå drakt basert på Twitter-fargepaletten"), + "cancel": MessageLookupByLibrary.simpleMessage("Avbryt"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Katastrofal feil"), + "choose": MessageLookupByLibrary.simpleMessage("Velg"), + "close": MessageLookupByLibrary.simpleMessage("Lukk"), + "confirm_close_fritter": + MessageLookupByLibrary.simpleMessage("Lukk Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Bidra"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Adresse kopiert til utklippstavle"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Versjon kopiert til utklippstavlen"), + "could_not_contact_twitter": + MessageLookupByLibrary.simpleMessage("Kunne ikke kontakte Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Kunne ikke finne noen tweets fra denne brukeren!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Kunne ikke finne noen tweets fra de siste 7 dagene!"), + "country": MessageLookupByLibrary.simpleMessage("Land"), + "dark": MessageLookupByLibrary.simpleMessage("Mørk"), + "data": MessageLookupByLibrary.simpleMessage("Data"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Data importert"), + "date_created": + MessageLookupByLibrary.simpleMessage("Opprettelsesdato"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Abonneringsdato"), + "default_tab": MessageLookupByLibrary.simpleMessage("Forvalgt fane"), + "delete": MessageLookupByLibrary.simpleMessage("Slett"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Skru av skjermavbildninger"), + "disabled": MessageLookupByLibrary.simpleMessage("Avskrudd"), + "donate": MessageLookupByLibrary.simpleMessage("Doner"), + "download": MessageLookupByLibrary.simpleMessage("Last ned"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Alltid spør"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Lagre i mappe"), + "download_path": MessageLookupByLibrary.simpleMessage("Nedlastingssti"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Laster ned media …"), + "enable_": MessageLookupByLibrary.simpleMessage("Vil du aktivere ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Skriv inn ditt Twitter-brukernavn"), + "export": MessageLookupByLibrary.simpleMessage("Eksporter"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Eksporter innstillinger?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Eksporter abonnementsgruppemedlemmer?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Eksporter abonnementsgrupper?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Eksporter abonnementer?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Eksporter tvitringer?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Eksporter dataen din"), + "feed": MessageLookupByLibrary.simpleMessage("Informasjonsstrøm"), + "filters": MessageLookupByLibrary.simpleMessage("Filtre"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Følgere"), + "following": MessageLookupByLibrary.simpleMessage("Følger"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker-blå"), + "general": MessageLookupByLibrary.simpleMessage("Generelt"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grupper"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Hjelp til å gjøre Quacker enda bedre"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Hjelp til å støtte Quackers fremtid"), + "home": MessageLookupByLibrary.simpleMessage("Hjem"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Hvis du har tilbakemeldinger om denne funksjonen, vennligst la den være på"), + "import": MessageLookupByLibrary.simpleMessage("Importer"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importer data fra en annen enhet"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importer fra Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importer abonnementer"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": MessageLookupByLibrary.simpleMessage("Ta med svar"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Inkluder retweets"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Språk"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Krever omstart"), + "large": MessageLookupByLibrary.simpleMessage("Stort"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Gammeldags Android-import"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Gi beskjed til utviklerne hvis noe er ødelagt"), + "licenses": MessageLookupByLibrary.simpleMessage("Lisenser"), + "light": MessageLookupByLibrary.simpleMessage("Lys"), + "live": MessageLookupByLibrary.simpleMessage("DIREKTE"), + "logging": MessageLookupByLibrary.simpleMessage("Loggføring"), + "media": MessageLookupByLibrary.simpleMessage("Media"), + "media_size": MessageLookupByLibrary.simpleMessage("Mediastørrelse"), + "medium": MessageLookupByLibrary.simpleMessage("Middels"), + "name": MessageLookupByLibrary.simpleMessage("Navn"), + "newTrans": MessageLookupByLibrary.simpleMessage("Ny"), + "no": MessageLookupByLibrary.simpleMessage("Nei"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Ingen data ble returnert, noe som aldri skulle skje. Vennligst rapporter en feil, hvis mulig!"), + "no_results": MessageLookupByLibrary.simpleMessage("Ingen resultater"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Ingen abonnementer. Prøv å søke eller importere noen!"), + "not_set": MessageLookupByLibrary.simpleMessage("Ikke satt"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Merk: På grunn av en Twitter-begrensning kan det hende at ikke alle tweets er inkludert"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Oops! Noe gikk galt 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Åpne programinnstillingene"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Velg en farge!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("Velg et ikon"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Festet tvitring"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Avspillingshastighet"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Vennligst skriv inn et navn"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Forsikre deg om at dataen du ønsker å importere er å finne der. Deretter trykker du på «Import»-knappen nedenfor."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Vær oppmerksom på at metoden Quacker bruker for å importere abonnementer er sterkt takstbegrenset av Twitter, så dette kan mislykkes hvis du har mange fulgte kontoer."), + "prefix": MessageLookupByLibrary.simpleMessage("prefiks"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Privat profil"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("Utgitt under MIT-lisensen"), + "replying_to": MessageLookupByLibrary.simpleMessage("Svarer til"), + "report": MessageLookupByLibrary.simpleMessage("Rapporter"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Rapporter en feil"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Rapporterer en feil"), + "retry": MessageLookupByLibrary.simpleMessage("Prøv på nytt"), + "save": MessageLookupByLibrary.simpleMessage("Lagre"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Spar båndbredde ved å bruke mindre bilder"), + "saved": MessageLookupByLibrary.simpleMessage("Lagret"), + "search": MessageLookupByLibrary.simpleMessage("Søk"), + "select": MessageLookupByLibrary.simpleMessage("Velg"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Valg av individuelle kontoer og importere, samt tildeling av grupper er allerede planlagt."), + "send": MessageLookupByLibrary.simpleMessage("Send"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Del tvitringsinnhold"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Del tvitringsinnhold og lenk"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Del tweet-lenke"), + "small": MessageLookupByLibrary.simpleMessage("Lite"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Noe brakk i Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Noe gikk galt i Quacker, og en feilrapport har blitt generert. Rapporten kan sendes til Quacker-utviklerne for å hjelpe med å fikse problemet."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage("Fant ikke svar-tvitringen."), + "subscribe": MessageLookupByLibrary.simpleMessage("Abonnere"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Abonnementer"), + "subtitles": MessageLookupByLibrary.simpleMessage("Undertitler"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Media lagret."), + "system": MessageLookupByLibrary.simpleMessage("System"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Takk for at du hjelper Quacker. 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Tweeten inneholdt ingen tekst. Dette er uventet"), + "theme": MessageLookupByLibrary.simpleMessage("Drakt"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Draktmodus"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Det var ingen trender tilbake. Dette er uventet! Vennligst rapporter som en feil, hvis mulig."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Denne gruppen inneholder ingen abonnementer!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Dette tok for lang tid å laste. Vennligst sjekk nettverkstilkoblingen din!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Denne tweeten er utilgjengelig"), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Denne brukeren følger ingen!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Denne brukeren har ingen som følger dem!"), + "thread": MessageLookupByLibrary.simpleMessage("Tråd"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniatyrbilde"), + "timed_out": MessageLookupByLibrary.simpleMessage("Tidsavbrudd"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Skriv inn brukernavnet ditt nedenfor hvis du vil importere abonnementer fra en eksisterende Twitter-konto."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Veksle alt"), + "trending": MessageLookupByLibrary.simpleMessage("Trender"), + "trends": MessageLookupByLibrary.simpleMessage("Trender"), + "true_black": MessageLookupByLibrary.simpleMessage("Helt svart?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tvitringer"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tvitringer og svar"), + "tweets_number": m15, + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Kan ikke finne tilgjengelige trendplasseringer."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Kan ikke finne dine lagrede tweets."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Kan ikke importere"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Kan ikke laste inn abonnementsgrupper"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Kan ikke laste inn gruppen"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Kan ikke laste inn gruppeinnstillingene"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Kan ikke laste inn listen over følger"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Kunne ikke laste inn neste side med følgere"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Kan ikke laste inn neste side med svar"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Kan ikke laste inn neste side med tweets"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Kunne ikke laste inn profilen"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Kan ikke laste søkeresultatene."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Kan ikke laste tweeten"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Kunne ikke laste inn tvitringene"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Kan ikke laste inn tweets for feeden"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Kunne ikke kjøre databaseflytting"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Kunne ikke strømme tendensposisjonsvalg"), + "unknown": MessageLookupByLibrary.simpleMessage("Ukjent"), + "unsave": MessageLookupByLibrary.simpleMessage("Opphev lagring"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Avslutte abonnementet"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Oppdateringer"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Bruk svart drakt for mørkt valg"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Bruker ikke funnet"), + "username": MessageLookupByLibrary.simpleMessage("Brukernavn"), + "version": MessageLookupByLibrary.simpleMessage("Versjon"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Når en ny appoppdatering er tilgjengelig"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Om feil skal rapporteres til "), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Hvilken fane som vises når programmet åpnes"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Vil du aktivere automatisk feilrapportering?"), + "yes": MessageLookupByLibrary.simpleMessage("Ja"), + "yes_please": MessageLookupByLibrary.simpleMessage("Ja"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Du har ikke lagret noen tweets ennå!"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Profilen din må være offentlig, ellers vil ikke importen fungere"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Rapporten din vil bli sendt til Quacker\'s -prosjekt, og personverndetaljer kan finnes på:") + }; +} diff --git a/lib/generated/intl/messages_nl.dart b/lib/generated/intl/messages_nl.dart new file mode 100644 index 00000000..f8338391 --- /dev/null +++ b/lib/generated/intl/messages_nl.dart @@ -0,0 +1,124 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a nl locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'nl'; + + static String m10(errorMessage) => + "Controleer je internet verbinding.\n\n${errorMessage}"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "account_suspended": + MessageLookupByLibrary.simpleMessage("Account uitgeschakeld"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Aan groep toevoegen"), + "back": MessageLookupByLibrary.simpleMessage("Terug"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter heeft onze toegangssleutel ongeldig gemaakt. Probeer Quacker opnieuw te starten!"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Katastrofale fout"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Kon geen contact met Twitter krijgen"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Geen tweets gevonden voor deze gebruiker!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Kon geen tweets van de laatste 7 dagen vinden!"), + "filters": MessageLookupByLibrary.simpleMessage("Filters"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter zegt dat de toegang verboden is"), + "include_replies": + MessageLookupByLibrary.simpleMessage("Reacties toevoegen"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Opmerking: door een beperking bij Twitter kunnen niet alle tweets worden opgenomen"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Oeps! Er ging iets mis 🥲"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter meldt dat deze pagina niet bestaat, maar dit hoeft niet te kloppen"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("Vastgezette tweet"), + "please_check_your_internet_connection_error_message": m10, + "private_profile": + MessageLookupByLibrary.simpleMessage("Privé profiel"), + "replying_to": MessageLookupByLibrary.simpleMessage("Reagerend op"), + "report": MessageLookupByLibrary.simpleMessage("Rapporteer"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Meld een fout"), + "retry": MessageLookupByLibrary.simpleMessage("Opnieuw"), + "save": MessageLookupByLibrary.simpleMessage("Veilig"), + "select": MessageLookupByLibrary.simpleMessage("Selecteer"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Deel inhoud van de tweet"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Deel inhoud en link naar tweet"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Deel link naar tweet"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Er ging iets mis in Quacker, een rapport is gegenereerd. Het rapport kan naar de Quacker ontwikkelaars worden gestuurd zodat het probleem kan worden opgespoord."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Sorry, kon de beantwoorde tweet niet vinden!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Abonneer"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "De tweet bevat geen tekst. Dit is onverwacht"), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Deze groep bevat geen abonnementen!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Laden duurde te lang. Controleer je internet verbinding!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Deze tweet is niet beschikbaar. Mogelijk is deze verwijderd."), + "thread": MessageLookupByLibrary.simpleMessage("Draad"), + "timed_out": + MessageLookupByLibrary.simpleMessage("Wachttijd versterken"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Laden van de abonnement groepen mislukt"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Groep laden mislukt"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Laden van groep instellingen mislukt"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Laden van meer reacties is mislukt"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Meer tweets laden is mislukt"), + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Laden van de tweet is mislukt"), + "unsave": MessageLookupByLibrary.simpleMessage("Onveilig"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Abonnement stoppen"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Gebruiker niet gevonden"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Automatische foutrapportage inschakelen?"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Het rapport wordt naar het project van Quacker gestuurd, details over privacy kunnen worden gevonden op:") + }; +} diff --git a/lib/generated/intl/messages_or.dart b/lib/generated/intl/messages_or.dart new file mode 100644 index 00000000..c340b011 --- /dev/null +++ b/lib/generated/intl/messages_or.dart @@ -0,0 +1,41 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a or locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'or'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("ଵିଷୟରେ"), + "country": MessageLookupByLibrary.simpleMessage("ଦେଶ"), + "dark": MessageLookupByLibrary.simpleMessage("ଗାଢ଼"), + "general": MessageLookupByLibrary.simpleMessage("ସାଧାରଣ"), + "light": MessageLookupByLibrary.simpleMessage("ହାଲୁକା"), + "media": MessageLookupByLibrary.simpleMessage("ମିଡ଼ିଆ"), + "name": MessageLookupByLibrary.simpleMessage("ନାମ"), + "newTrans": MessageLookupByLibrary.simpleMessage("ନୂଆ"), + "no": MessageLookupByLibrary.simpleMessage("ନାହିଁ"), + "ok": MessageLookupByLibrary.simpleMessage("ଠିକ୍ ଅଛି"), + "search": MessageLookupByLibrary.simpleMessage("ସନ୍ଧାନ"), + "system": MessageLookupByLibrary.simpleMessage("ସିଷ୍ଟମ୍"), + "theme": MessageLookupByLibrary.simpleMessage("ଥିମ୍"), + "version": MessageLookupByLibrary.simpleMessage("ସଂସ୍କରଣ"), + "yes": MessageLookupByLibrary.simpleMessage("ହଁ") + }; +} diff --git a/lib/generated/intl/messages_pl.dart b/lib/generated/intl/messages_pl.dart new file mode 100644 index 00000000..3910b614 --- /dev/null +++ b/lib/generated/intl/messages_pl.dart @@ -0,0 +1,485 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pl locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pl'; + + static String m0(name) => + "Czy na pewno chcesz usunąć grupę subskrypcji ${name}?"; + + static String m1(fileName) => "Dane wyeksportowano do ${fileName}"; + + static String m2(fullPath) => "Dane wyeksportowano do ${fullPath}"; + + static String m3(timeagoFormat) => "Zakończono ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Kończy się za ${timeagoFormat}"; + + static String m5(snapshotData) => "Ukończono z ${snapshotData} użytkownikami"; + + static String m6(name) => "Grupa: ${name}"; + + static String m7(snapshotData) => + "Do tej pory zaimportowano ${snapshotData} użytkowników"; + + static String m8(date) => "Dołączył(a) ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Brak głosów', one: '1 głos', two: '2 głosy', few: '${numFormatted} głosy', many: '${numFormatted} głosów', other: '${numFormatted} głosów')}"; + + static String m10(errorMessage) => + "Sprawdź swoje połączenie internetowe.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "Naciśnij, aby pobrać ${releaseVersion}"; + + static String m12(getMediaType) => "Naciśnij, aby wyświetlić ${getMediaType}"; + + static String m13(filePath) => + "Plik nie istnieje. Upewnij się, że znajduje się w ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} podał(a) dalej tweeta ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'brak tweetów', one: '1 tweet', two: '2 tweety', few: '${numFormatted} tweety', many: '${numFormatted} tweetów', other: '${numFormatted} tweetów')}"; + + static String m16(widgetPlaceName) => + "Nie można załadować trendów dla ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Nie można zapisać multimediów. Twitter zwrócił status ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Zaktualizuj do ${releaseVersion} przez klienta F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("O aplikacji"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Konto zawieszone"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Ukrywaj autorów tweetów. Unikaj efektu potwierdzenia opartego na autorytatywnych argumentach"), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Aktywuj tryb bez efektu potwierdzenia"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Dodaj subskrypcje"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Dodaj do grupy"), + "all": MessageLookupByLibrary.simpleMessage("Wszystkie"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Całe świetne oprogramowanie używane przez Quackera"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Dostępna jest aktualizacja Quackera! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Czy na pewno?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Wstecz"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter unieważnił nasz token dostępu. Spróbuj ponownie otworzyć Quackera!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Niebieski motyw oparty na kolorystyce Twittera"), + "cancel": MessageLookupByLibrary.simpleMessage("Anuluj"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Katastrofalna awaria"), + "choose": MessageLookupByLibrary.simpleMessage("Wybierz"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Wybierz karty"), + "close": MessageLookupByLibrary.simpleMessage("Zamknij"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Czy na pewno chcesz zamknąć Quackera?"), + "contribute": MessageLookupByLibrary.simpleMessage("Wnieś swój wkład"), + "copied_address_to_clipboard": + MessageLookupByLibrary.simpleMessage("Skopiowano adres do schowka"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Skopiowano wersję do schowka"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Nie udało się połączyć z Twitterem"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Nie udało się znaleźć żadnych tweetów tego użytkownika!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Nie udało się znaleźć żadnych tweetów z ostatnich 7 dni!"), + "country": MessageLookupByLibrary.simpleMessage("Kraj"), + "dark": MessageLookupByLibrary.simpleMessage("Ciemny"), + "data": MessageLookupByLibrary.simpleMessage("Dane"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Dane zostały zaimportowane"), + "date_created": MessageLookupByLibrary.simpleMessage("Data utworzenia"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Data subskrypcji"), + "default_tab": MessageLookupByLibrary.simpleMessage("Domyślna karta"), + "delete": MessageLookupByLibrary.simpleMessage("Usuń"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Wyłącz zrzuty ekranu"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Zapobiegaj robieniu zrzutów ekranu. Może to nie działać na wszystkich urządzeniach"), + "disabled": MessageLookupByLibrary.simpleMessage("Wyłączone"), + "donate": MessageLookupByLibrary.simpleMessage("Przekaż datek"), + "download": MessageLookupByLibrary.simpleMessage("Pobierz"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Obsługa pobierania"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Jak powinno działać pobieranie"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Zawsze pytaj"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Zapisuj w katalogu"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Nie można pobrać. Te multimedia mogą być dostępne tylko jako strumień, którego Quacker jeszcze nie obsługuje."), + "download_path": + MessageLookupByLibrary.simpleMessage("Ścieżka pobierania"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Pobieranie multimediów…"), + "enable_": MessageLookupByLibrary.simpleMessage("Włączyć ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Wprowadź swoją nazwę użytkownika Twittera"), + "export": MessageLookupByLibrary.simpleMessage("Eksportuj"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Wyeksportować ustawienia?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Wyeksportować członków grup subskrypcji?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Wyeksportować grupy subskrypcji?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Wyeksportować subskrypcje?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Wyeksportować tweety?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Wyeksportuj swoje dane"), + "feed": MessageLookupByLibrary.simpleMessage("Główna"), + "filters": MessageLookupByLibrary.simpleMessage("Filtry"), + "finish": MessageLookupByLibrary.simpleMessage("Zakończ"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Obserwujący"), + "following": MessageLookupByLibrary.simpleMessage("Obserwowani"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter mówi, że dostęp do tego jest zabroniony"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker Blue"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Ta funkcja nie jest już obsługiwana przez Twittera!"), + "general": MessageLookupByLibrary.simpleMessage("Ogólne"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grupy"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Pomóż uczynić Quacker jeszcze lepszym"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Pomóż wesprzeć przyszłość Quackera"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Ukrywaj wrażliwe tweety"), + "home": MessageLookupByLibrary.simpleMessage("Karty"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Jeśli masz jakieś uwagi na temat tej funkcji, zgłoś je w"), + "import": MessageLookupByLibrary.simpleMessage("Importuj"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Zaimportuj dane z innego urządzenia"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importuj z Twittera"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importuj subskrypcje"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Uwzględniaj odpowiedzi"), + "include_retweets": MessageLookupByLibrary.simpleMessage( + "Uwzględniaj tweety podane dalej"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Język"), + "language_subtitle": MessageLookupByLibrary.simpleMessage( + "Wymaga ponownego uruchomienia"), + "large": MessageLookupByLibrary.simpleMessage("Duże"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Importowanie ze starszej wersji Androida"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Daj znać programistom, jeśli coś się zepsuło"), + "licenses": MessageLookupByLibrary.simpleMessage("Licencje"), + "light": MessageLookupByLibrary.simpleMessage("Jasny"), + "live": MessageLookupByLibrary.simpleMessage("NA ŻYWO"), + "logging": MessageLookupByLibrary.simpleMessage("Zbieranie danych"), + "media": MessageLookupByLibrary.simpleMessage("Multimedia"), + "media_size": + MessageLookupByLibrary.simpleMessage("Rozmiar multimediów"), + "medium": MessageLookupByLibrary.simpleMessage("Średnie"), + "missing_page": MessageLookupByLibrary.simpleMessage("Brakująca karta"), + "mute_video_description": + MessageLookupByLibrary.simpleMessage("Domyślnie wyciszaj wideo"), + "mute_videos": MessageLookupByLibrary.simpleMessage("Wyciszaj wideo"), + "name": MessageLookupByLibrary.simpleMessage("Nazwa"), + "newTrans": MessageLookupByLibrary.simpleMessage("Nowa"), + "next": MessageLookupByLibrary.simpleMessage("Dalej"), + "no": MessageLookupByLibrary.simpleMessage("Nie"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Żadne dane nie zostały zwrócone, co nigdy nie powinno się zdarzyć. Jeśli to możliwe, zgłoś błąd!"), + "no_results": MessageLookupByLibrary.simpleMessage("Brak wyników"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Brak wyników dla:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Brak subskrypcji. Spróbuj wyszukać lub zaimportować trochę!"), + "not_set": MessageLookupByLibrary.simpleMessage("Nie ustawiono"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Uwaga: Ze względu na ograniczenia Twittera nie wszystkie tweety mogą zostać uwzględnione"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Subskrypcje mogą być importowane tylko z profili publicznych."), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Ups! Coś poszło nie tak 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Otwórz ustawienia aplikacji"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter twierdzi, że strona nie istnieje, ale to może nie być prawda"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Nie przyznano uprawnienia. Spróbuj ponownie po przyznaniu!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Wybierz kolor!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("Wybierz ikonę!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Przypięty tweet"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Prędkość odtwarzania"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Wprowadź nazwę"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Upewnij się, że znajdują się tam dane, które chcesz zaimportować, a następnie naciśnij przycisk importu poniżej."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Pamiętaj, że metoda, której używa Quacker do importowania subskrypcji, jest mocno ograniczona przez Twittera, więc może się to nie udać, jeśli masz dużo obserwowanych kont."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potencjalnie wrażliwy"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Ten profil może zawierać potencjalnie wrażliwe obrazy, język lub inne treści. Czy nadal chcesz go wyświetlić?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Ten tweet zawiera potencjalnie wrażliwe treści. Czy chcesz go wyświetlić?"), + "prefix": MessageLookupByLibrary.simpleMessage("prefiks"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Profil prywatny"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("Wydany na licencji MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("W odpowiedzi do"), + "report": MessageLookupByLibrary.simpleMessage("Zgłoś"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("Zgłoś błąd"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Zgłaszanie błędu"), + "reset_home_pages": + MessageLookupByLibrary.simpleMessage("Przywróć domyślne"), + "retry": MessageLookupByLibrary.simpleMessage("Ponów"), + "save": MessageLookupByLibrary.simpleMessage("Zapisz"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Oszczędzaj transfer dzięki mniejszym obrazom"), + "saved": MessageLookupByLibrary.simpleMessage("Zapisane"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Ten zapisany tweet nie mógł zostać wyświetlony, ponieważ jest zbyt duży, aby go załadować. Zgłoś to programistom."), + "search": MessageLookupByLibrary.simpleMessage("Szukaj"), + "search_term": + MessageLookupByLibrary.simpleMessage("Fraza wyszukiwania"), + "select": MessageLookupByLibrary.simpleMessage("Wybierz"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Wybieranie poszczególnych kont do zaimportowania i przypisywanie grup są już zaplanowane na przyszłość!"), + "send": MessageLookupByLibrary.simpleMessage("Wyślij"), + "share_base_url": MessageLookupByLibrary.simpleMessage( + "Niestandardowy URL udostępniania"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Używaj niestandardowej podstawy adresu URL podczas udostępniania"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Udostępnij treść tweeta"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Udostępnij treść tweeta i link"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Udostępnij link do tweeta"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Sprawdzaj aktualizacje po uruchomieniu Quackera"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Sprawdzaj aktualizacje"), + "small": MessageLookupByLibrary.simpleMessage("Małe"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Coś się popsuło we Quackerze."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Coś poszło nie tak we Quackerze, dlatego został wygenerowany raport o błędzie. Raport można wysłać do programistów Quackera, aby pomóc w rozwiązaniu problemu."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Przepraszamy, nie znaleziono tweeta z odpowiedzią!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Subskrybuj"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Subskrypcje"), + "subtitles": MessageLookupByLibrary.simpleMessage("Napisy"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Zapisano multimedia!"), + "system": MessageLookupByLibrary.simpleMessage("Systemowy"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Dzięki za pomoc Quackerowi! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": MessageLookupByLibrary.simpleMessage( + "zgłoszeniu (#143) na GitHubie"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Tweet nie zawierał żadnego tekstu. To nieoczekiwane!"), + "theme": MessageLookupByLibrary.simpleMessage("Motyw"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Tryb motywu"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Nie zwrócono żadnych trendów. To nieoczekiwane! Jeśli to możliwe, zgłoś błąd."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Ta grupa nie zawiera subskrypcji!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Ładowanie trwało zbyt długo. Sprawdź swoje połączenie sieciowe!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Ten tweet jest niedostępny. Prawdopodobnie został usunięty."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Ten użytkownik nikogo nie obserwuje!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Ten użytkownik nie jest obserwowany przez nikogo!"), + "thread": MessageLookupByLibrary.simpleMessage("Wątek"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniatury"), + "timed_out": + MessageLookupByLibrary.simpleMessage("Przekroczono limit czasu"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Aby zaimportować subskrypcje z istniejącego konta na Twitterze, wprowadź poniżej swoją nazwę użytkownika."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Przełącz"), + "trending": MessageLookupByLibrary.simpleMessage("Trendy"), + "trends": MessageLookupByLibrary.simpleMessage("Trendy"), + "true_black": MessageLookupByLibrary.simpleMessage("Prawdziwa czerń?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweety"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweety i odpowiedzi"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Musisz mieć co najmniej 2 karty."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Nie można znaleźć dostępnych lokalizacji trendów."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Nie można znaleźć Twoich zapisanych tweetów."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Nie można zaimportować"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Nie można załadować Twoich kart"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować grup subskrypcji"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Nie można załadować grupy"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować ustawień grupy"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować listy obserwowanych"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować następnej strony z obserwowanymi"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować następnej strony z odpowiedziami"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować następnej strony z tweetami"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Nie można załadować profilu"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować wyników wyszukiwania."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Nie można załadować tweeta"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Nie można załadować tweetów"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Nie można załadować tweetów na stronę główną"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Nie można odświeżyć subskrypcji"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Nie można uruchomić migracji bazy danych"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Nie można przesłać strumieniowo preferencji lokalizacji trendu"), + "unknown": MessageLookupByLibrary.simpleMessage("Nieznane"), + "unsave": MessageLookupByLibrary.simpleMessage("Usuń z zapisanych"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Odsubskrybuj"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("Nieobsługiwany adres URL"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Aktualizacje"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Używaj prawdziwej czerni dla ciemnego motywu"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Nie znaleziono użytkownika"), + "username": MessageLookupByLibrary.simpleMessage("Nazwa użytkownika"), + "version": MessageLookupByLibrary.simpleMessage("Wersja"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Gdy dostępna jest nowa aktualizacja aplikacji"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage("Zgłaszaj błędy do "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Ukrywaj tweety oznaczone jako wrażliwe"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Karta wyświetlana po otwarciu aplikacji"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Czy chcesz włączyć automatyczne raportowanie błędów?"), + "yes": MessageLookupByLibrary.simpleMessage("Tak"), + "yes_please": MessageLookupByLibrary.simpleMessage("Tak, proszę"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Nie zapisałeś(-aś) jeszcze żadnych tweetów!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Musisz mieć co najmniej 2 karty"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Profil musi być publiczny, inaczej import nie zadziała"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Twoje zgłoszenie zostanie wysłane do projektu Quacker na , a szczegóły dotyczące prywatności można znaleźć na:") + }; +} diff --git a/lib/generated/intl/messages_pt.dart b/lib/generated/intl/messages_pt.dart new file mode 100644 index 00000000..65c7ecb4 --- /dev/null +++ b/lib/generated/intl/messages_pt.dart @@ -0,0 +1,486 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pt locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pt'; + + static String m0(name) => + "Tem certeza de que deseja apagar o grupo de inscrições ${name}?"; + + static String m1(fileName) => "Dados exportados para ${fileName}"; + + static String m2(fullPath) => "Dados exportados para ${fullPath}"; + + static String m3(timeagoFormat) => "Finalizado ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Termina ${timeagoFormat}"; + + static String m5(snapshotData) => "Terminou com ${snapshotData} utilizadores"; + + static String m6(name) => "Grupo: ${name}"; + + static String m7(snapshotData) => + "${snapshotData} utilizadores importados até agora"; + + static String m8(date) => "Ingressou em ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Nenhum voto', one: 'Um voto', two: 'Dois votos', few: '${numFormatted} votos', many: '${numFormatted} voto', other: '${numFormatted} votos')}"; + + static String m10(errorMessage) => + "Por favor, verifique a sua conexão à internet.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Toque para descarregar ${releaseVersion}"; + + static String m12(getMediaType) => "Toque para mostrar ${getMediaType}"; + + static String m13(filePath) => + "O ficheiro não existe. Certifique-se de que está localizado em ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} retweetado ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'nenhum tweet', one: 'um tweet', two: 'dois tweets', few: '${numFormatted} tweets', many: '${numFormatted} tweet', other: '${numFormatted} tweets')}"; + + static String m16(widgetPlaceName) => + "Não foi possível carregar as tendências para ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Não foi possível gravar a mídia. O Twitter retornou um estado de ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Atualizar para ${releaseVersion} através do seu cliente F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Sobre"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Conta suspensa"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Esconda autores de tweets. Evitar confirmação de viés baseado em argumentos autoritários."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Ativar modo de não-confirmação de viés"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Adicionar ao grupo"), + "all": MessageLookupByLibrary.simpleMessage("Tudo"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Todo o ótimo software usado por Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Uma atualização para o Quacker está disponível! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Tem certeza?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Voltar"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter invalidou nosso token de acesso. Por favor tente reabrir o Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Tema azul baseado no esquema de cores do Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Falha catastrófica"), + "choose": MessageLookupByLibrary.simpleMessage("Escolher"), + "choose_pages": + MessageLookupByLibrary.simpleMessage("Escolha as páginas"), + "close": MessageLookupByLibrary.simpleMessage("Fechar"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Tem certeza de que deseja fechar o Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Contribuir"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Endereço copiado para a área de transferência"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Versão copiada para a área de transferência"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Não foi possível entrar em contato com o Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar nenhum tweet deste utilizador!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar nenhum tweet dos últimos 7 dias!"), + "country": MessageLookupByLibrary.simpleMessage("País"), + "dark": MessageLookupByLibrary.simpleMessage("Escuro"), + "data": MessageLookupByLibrary.simpleMessage("Dados"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Dados importados com sucesso"), + "date_created": MessageLookupByLibrary.simpleMessage("Data de Criação"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Data de Inscrição"), + "default_tab": MessageLookupByLibrary.simpleMessage("Guia padrão"), + "delete": MessageLookupByLibrary.simpleMessage("Apagar"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Desativar capturas de ecrã"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Previne que sejam feitas capturas de ecrã. Isso pode não funcionar em todos os aparelhos."), + "disabled": MessageLookupByLibrary.simpleMessage("Desativado"), + "donate": MessageLookupByLibrary.simpleMessage("Doar"), + "download": MessageLookupByLibrary.simpleMessage("Descarregar"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Manipulação de descargas"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Como a descarga deve funcionar"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Sempre perguntar"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Gravar no diretório"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Incapaz de descarregar. Esta mídia pode estar disponível apenas como uma transmissão, que Quacker ainda não pode descarregar."), + "download_path": + MessageLookupByLibrary.simpleMessage("Caminho da descarga"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Descarregando mídia..."), + "enable_": MessageLookupByLibrary.simpleMessage("Ativar ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Digite o seu nome de utilizador do Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Exportar"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Exportar configurações?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Exportar membros do grupo de inscrições?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Exportar grupos de inscrições?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Exportar inscrições?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Exportar tweets?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Exportar os seus dados"), + "feed": MessageLookupByLibrary.simpleMessage("Feed"), + "filters": MessageLookupByLibrary.simpleMessage("Filtros"), + "finish": MessageLookupByLibrary.simpleMessage("Terminar"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Seguidores"), + "following": MessageLookupByLibrary.simpleMessage("Seguindo"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter diz que o acesso a isso é proibido"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker azul"), + "general": MessageLookupByLibrary.simpleMessage("Geral"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grupos"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Ajude a deixar o Quacker ainda melhor"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Ajude a apoiar o futuro do Quacker"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Ocultar tweets sensíveis"), + "home": MessageLookupByLibrary.simpleMessage("Início"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Se tiver algum comentário sobre esse recurso, deixe-o em"), + "import": MessageLookupByLibrary.simpleMessage("Importar"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importar dados de outro aparelho"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importar do Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importar inscrições"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Incluir respostas"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Incluir retweets"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Idioma"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Requer um reinício"), + "large": MessageLookupByLibrary.simpleMessage("Grande"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Importação do Android antigo"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Deixe os programadores saberem se algo está quebrado"), + "licenses": MessageLookupByLibrary.simpleMessage("Licenças"), + "light": MessageLookupByLibrary.simpleMessage("Claro"), + "live": MessageLookupByLibrary.simpleMessage("LIVE"), + "logging": MessageLookupByLibrary.simpleMessage("Criando Log"), + "media": MessageLookupByLibrary.simpleMessage("Mídia"), + "media_size": MessageLookupByLibrary.simpleMessage("Tamanho da mídia"), + "medium": MessageLookupByLibrary.simpleMessage("Média"), + "missing_page": MessageLookupByLibrary.simpleMessage("Página ausente"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Se os vídeos devem ser silenciados por padrão"), + "mute_videos": MessageLookupByLibrary.simpleMessage("Silenciar vídeos"), + "name": MessageLookupByLibrary.simpleMessage("Nome"), + "newTrans": MessageLookupByLibrary.simpleMessage("Novo"), + "next": MessageLookupByLibrary.simpleMessage("Próximo"), + "no": MessageLookupByLibrary.simpleMessage("Não"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Nenhum dado foi retornado, o que nunca deveria acontecer. Por favor, reporte um bug, se possível!"), + "no_results": MessageLookupByLibrary.simpleMessage("Nenhum resultado"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Sem resultados para:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Nenhuma inscrição. Tente pesquisar ou importar alguns!"), + "not_set": MessageLookupByLibrary.simpleMessage("Não configurado"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Observação: devido a uma limitação do Twitter, nem todos os tweets podem ser incluídos"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "As inscrições só podem ser importadas de perfis públicos"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Ops! Algo deu errado 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage( + "Abrir as configurações da app"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter diz que a página não existe, mas isso pode não ser verdade"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Permissão não concedida. Por favor, tente novamente após a concessão!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Escolha uma cor!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Escolher um ícone!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Tweet fixado"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Velocidade de reprodução"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Por favor, digite um nome"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Certifique-se de que os dados que deseja importar estão localizados lá e pressione o botão de importação abaixo."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Observe que o método que o Quacker usa para importar inscrições é fortemente limitado pelo Twitter, portanto, isso pode falhar se estiver a seguir muitas contas."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potencialmente sensível"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Este perfil pode conter imagens, idiomas, ou outros conteúdos potencialmente sensíveis. Ainda quer vê-lo?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Este tweet contém conteúdo potencialmente sensível. Gostaria de vê-lo?"), + "prefix": MessageLookupByLibrary.simpleMessage("prefixo"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Perfil privado"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("Lançado sob a licença MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("Respondendo a"), + "report": MessageLookupByLibrary.simpleMessage("Reportar"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Reportar um erro"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Relatar um erro"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Redefinir páginas para o padrão"), + "retry": MessageLookupByLibrary.simpleMessage("Tentar novamente"), + "save": MessageLookupByLibrary.simpleMessage("Gravar"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Economize largura de banda com imagens menores"), + "saved": MessageLookupByLibrary.simpleMessage("Salvo"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Este tweet salvo não pôde ser exibido porque é muito grande para carregar. Por favor, denuncie aos programadores."), + "search": MessageLookupByLibrary.simpleMessage("Buscar"), + "search_term": MessageLookupByLibrary.simpleMessage("Buscar termo"), + "select": MessageLookupByLibrary.simpleMessage("Selecionar"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "A seleção de contas individuais para importação e a atribuição de grupos já estão planejadas para o futuro!"), + "send": MessageLookupByLibrary.simpleMessage("Enviar"), + "share_base_url": MessageLookupByLibrary.simpleMessage( + "URL de compartilhamento personalizado"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Use um URL base personalizado ao compartilhar"), + "share_tweet_content": MessageLookupByLibrary.simpleMessage( + "Compartilhar conteúdo do tweet"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Compartilhar conteúdo e ligação do tweet"), + "share_tweet_link": MessageLookupByLibrary.simpleMessage( + "Compartilhar ligação do tweet"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Verificar se há atualizações quando o Quacker iniciar"), + "should_check_for_updates_label": MessageLookupByLibrary.simpleMessage( + "Verificar se há atualizações"), + "small": MessageLookupByLibrary.simpleMessage("Pequena"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Algo quebrou no Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Algo deu errado no Quacker e um relatório de erro foi gerado. O relatório pode ser enviado aos programadores do Quacker para ajudar a corrigir o problema."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Desculpe, o tweet respondido não foi encontrado!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Inscrever-se"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Inscrições"), + "subtitles": MessageLookupByLibrary.simpleMessage("Legendas"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Salvou a mídia!"), + "system": MessageLookupByLibrary.simpleMessage("Sistema"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Obrigado por ajudar o Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("o problema do GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "O tweet não continha nenhum texto. Isso é inesperado"), + "theme": MessageLookupByLibrary.simpleMessage("Tema"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Modo Tema"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Não houve tendências devolvidas. Isso é inesperado! Por favor, reporte como um bug, se possível."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Este grupo não contém inscrições!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Isso demorou muito para carregar. Verifique a sua conexão de rede!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Este tweet está indisponível. Provavelmente foi deletado."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Este utilizador não segue ninguém!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Este utilizador não tem nenhum seguidor!"), + "thread": MessageLookupByLibrary.simpleMessage("Thread"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniatura"), + "timed_out": MessageLookupByLibrary.simpleMessage("Tempo esgotado"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Para importar assinaturas de uma conta existente do Twitter, digite o seu nome de utilizador abaixo."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Alternar Tudo"), + "trending": MessageLookupByLibrary.simpleMessage("Tendência"), + "trends": MessageLookupByLibrary.simpleMessage("Tendências"), + "true_black": MessageLookupByLibrary.simpleMessage("Preto Verdadeiro?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweets"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweets e Respostas"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Precisa ter pelo menos 2 páginas iniciais."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar os locais de tendências disponíveis."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar os seus tweets gravados."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Não foi possível importar"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar as suas páginas iniciais"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os grupos de inscrições"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar o grupo"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar as configurações do grupo"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a lista de seguidores"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a próxima página de seguidores"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a próxima página de respostas"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a próxima página de tweets"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar o perfil"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os resultados da pesquisa."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar o tweet"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os tweets"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os tweets para o feed"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Incapaz de atualizar as inscrições"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Não é possível executar as migrações de banco de dados"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Não é possível transmitir a preferência de localização da tendência"), + "unknown": MessageLookupByLibrary.simpleMessage("Desconhecido"), + "unsave": MessageLookupByLibrary.simpleMessage("Remover dos salvos"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Cancelar inscrição"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("URL não suportado"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Atualizações"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Use preto verdadeiro para o tema do modo escuro"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Utilizador não encontrado"), + "username": MessageLookupByLibrary.simpleMessage("Nome de utilizador"), + "version": MessageLookupByLibrary.simpleMessage("Versão"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Quando uma nova atualização da app está disponível"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Se os erros devem ser relatados ao "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Se os tweets marcados como sensíveis devem ser ocultados"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Qual guia é mostrada quando a app é aberta"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Deseja ativar o relatório automático de erros?"), + "yes": MessageLookupByLibrary.simpleMessage("Sim"), + "yes_please": MessageLookupByLibrary.simpleMessage("Sim, por favor"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Ainda não salvou nenhum tweet!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Deve ter pelo menos 2 páginas de ecrã inicial"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "O seu perfil deve ser público, caso contrário a importação não funcionará"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "O seu relatório será enviado ao projeto do Quacker e os detalhes de privacidade encontram-se em:") + }; +} diff --git a/lib/generated/intl/messages_pt_BR.dart b/lib/generated/intl/messages_pt_BR.dart new file mode 100644 index 00000000..c08b6408 --- /dev/null +++ b/lib/generated/intl/messages_pt_BR.dart @@ -0,0 +1,489 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pt_BR locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pt_BR'; + + static String m0(name) => + "Tem certeza de que deseja excluir o grupo de inscrições ${name}?"; + + static String m1(fileName) => "Dados exportados para ${fileName}"; + + static String m2(fullPath) => "Dados exportados para ${fullPath}"; + + static String m3(timeagoFormat) => "Finalizado ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Termina ${timeagoFormat}"; + + static String m5(snapshotData) => "Terminou com ${snapshotData} usuários"; + + static String m6(name) => "Grupo: ${name}"; + + static String m7(snapshotData) => + "${snapshotData} usuários importados até agora"; + + static String m8(date) => "Ingressou em ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Nenhum voto', one: 'Um voto', two: 'Dois votos', few: '${numFormatted} votos', many: '${numFormatted} voto', other: '${numFormatted} votos')}"; + + static String m10(errorMessage) => + "Por favor, verifique sua conexão à internet.\n\n${errorMessage}"; + + static String m11(releaseVersion) => "Toque para baixar ${releaseVersion}"; + + static String m12(getMediaType) => "Toque para mostrar ${getMediaType}"; + + static String m13(filePath) => + "O arquivo não existe. Certifique-se de que está localizado em ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} retweetado ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'nenhum tweet', one: 'um tweet', two: 'dois tweets', few: '${numFormatted} tweets', many: '${numFormatted} tweet', other: '${numFormatted} tweets')}"; + + static String m16(widgetPlaceName) => + "Não foi possível carregar as tendências para ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Não foi possível salvar a mídia. O Twitter retornou um status de ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Atualizar para ${releaseVersion} através do seu cliente F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Sobre"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Conta suspensa"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Esconda autores de tweets. Evitar confirmação de viés baseado em argumentos autoritários."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Ativar modo de não-confirmação de viés"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Adicionar inscrições"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Adicionar ao grupo"), + "all": MessageLookupByLibrary.simpleMessage("Tudo"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Todo o ótimo software usado por Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Uma atualização para o Quacker está disponível! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Tem certeza?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Voltar"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter invalidou nosso token de acesso. Por favor tente reabrir o Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Tema azul baseado no esquema de cores do Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Falha catastrófica"), + "choose": MessageLookupByLibrary.simpleMessage("Escolher"), + "choose_pages": + MessageLookupByLibrary.simpleMessage("Escolha as páginas"), + "close": MessageLookupByLibrary.simpleMessage("Fechar"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Tem certeza de que deseja fechar o Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Contribuir"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Endereço copiado para a área de transferência"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Versão copiada para a área de transferência"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Não foi possível entrar em contato com o Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar nenhum tweet deste usuário!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar nenhum tweet dos últimos 7 dias!"), + "country": MessageLookupByLibrary.simpleMessage("País"), + "dark": MessageLookupByLibrary.simpleMessage("Escuro"), + "data": MessageLookupByLibrary.simpleMessage("Dados"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Dados importados com sucesso"), + "date_created": MessageLookupByLibrary.simpleMessage("Data de Criação"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Data de Inscrição"), + "default_tab": MessageLookupByLibrary.simpleMessage("Aba padrão"), + "delete": MessageLookupByLibrary.simpleMessage("Excluir"), + "disable_screenshots": MessageLookupByLibrary.simpleMessage( + "Desabilitar capturas de tela"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Previne que sejam feitas capturas de tela. Isso pode não funcionar em todos os dispositivos."), + "disabled": MessageLookupByLibrary.simpleMessage("Desativado"), + "donate": MessageLookupByLibrary.simpleMessage("Doar"), + "download": MessageLookupByLibrary.simpleMessage("Download"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Manipulação de downloads"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Como o download deve funcionar"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Sempre perguntar"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Salvar no diretório"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Incapaz de baixar. Esta mídia pode estar disponível apenas como uma transmissão, que Quacker ainda não pode baixar."), + "download_path": + MessageLookupByLibrary.simpleMessage("Caminho do download"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Baixando mídia..."), + "enable_": MessageLookupByLibrary.simpleMessage("Ativar ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Digite seu nome de usuário do Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Exportar"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Exportar configurações?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Exportar membros do grupo de inscrições?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Exportar grupos de inscrições?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Exportar inscrições?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Exportar tweets?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Exportar seus dados"), + "feed": MessageLookupByLibrary.simpleMessage("Feed"), + "filters": MessageLookupByLibrary.simpleMessage("Filtros"), + "finish": MessageLookupByLibrary.simpleMessage("Terminar"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Seguidores"), + "following": MessageLookupByLibrary.simpleMessage("Seguindo"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter diz que o acesso a isso é proibido"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker azul"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Esta funcionalidade não é mais suportada pelo Twitter!"), + "general": MessageLookupByLibrary.simpleMessage("Geral"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Grupos"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Ajude a deixar o Quacker ainda melhor"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Ajude a apoiar o futuro do Quacker"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Ocultar tweets sensíveis"), + "home": MessageLookupByLibrary.simpleMessage("Início"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Se você tiver algum comentário sobre esse recurso, deixe-o em"), + "import": MessageLookupByLibrary.simpleMessage("Importar"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Importar dados de outro dispositivo"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Importar do Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Importar inscrições"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Incluir respostas"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Incluir retweets"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Idioma"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Requer um reinício"), + "large": MessageLookupByLibrary.simpleMessage("Grande"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Importação do Android antigo"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Deixe os desenvolvedores saberem se algo está quebrado"), + "licenses": MessageLookupByLibrary.simpleMessage("Licenças"), + "light": MessageLookupByLibrary.simpleMessage("Claro"), + "live": MessageLookupByLibrary.simpleMessage("LIVE"), + "logging": MessageLookupByLibrary.simpleMessage("Criando Log"), + "media": MessageLookupByLibrary.simpleMessage("Mídia"), + "media_size": MessageLookupByLibrary.simpleMessage("Tamanho da mídia"), + "medium": MessageLookupByLibrary.simpleMessage("Média"), + "missing_page": MessageLookupByLibrary.simpleMessage("Página ausente"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Se os vídeos devem ser silenciados por padrão"), + "mute_videos": MessageLookupByLibrary.simpleMessage("Silenciar vídeos"), + "name": MessageLookupByLibrary.simpleMessage("Nome"), + "newTrans": MessageLookupByLibrary.simpleMessage("Novo"), + "next": MessageLookupByLibrary.simpleMessage("Próximo"), + "no": MessageLookupByLibrary.simpleMessage("Não"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Nenhum dado foi retornado, o que nunca deveria acontecer. Por favor, reporte um bug, se possível!"), + "no_results": MessageLookupByLibrary.simpleMessage("Nenhum resultado"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Sem resultados para:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Nenhuma inscrição. Tente pesquisar ou importar alguns!"), + "not_set": MessageLookupByLibrary.simpleMessage("Não configurado"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Observação: devido a uma limitação do Twitter, nem todos os tweets podem ser incluídos"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "As inscrições só podem ser importadas de perfis públicos"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Ops! Algo deu errado 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage( + "Abrir as configurações do aplicativo"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter diz que a página não existe, mas isso pode não ser verdade"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Permissão não concedida. Por favor, tente novamente após a concessão!"), + "pick_a_color": + MessageLookupByLibrary.simpleMessage("Escolha uma cor!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Escolher um ícone!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("Tweet fixado"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Velocidade de reprodução"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Por favor, digite um nome"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Certifique-se de que os dados que deseja importar estão localizados lá e pressione o botão de importação abaixo."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Observe que o método que o Quacker usa para importar inscrições é fortemente limitado pelo Twitter, portanto, isso pode falhar se você estiver seguindo muitas contas."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Potencialmente sensível"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Este perfil pode conter imagens, idiomas, ou outros conteúdos potencialmente sensíveis. Você ainda quer vê-lo?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Este tweet contém conteúdo potencialmente sensível. Você gostaria de vê-lo?"), + "prefix": MessageLookupByLibrary.simpleMessage("prefixo"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Perfil privado"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("Lançado sob a licença MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("Respondendo a"), + "report": MessageLookupByLibrary.simpleMessage("Reportar"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Reportar um erro"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Relatar um erro"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Redefinir páginas para o padrão"), + "retry": MessageLookupByLibrary.simpleMessage("Tentar novamente"), + "save": MessageLookupByLibrary.simpleMessage("Salvar"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Economize largura de banda com imagens menores"), + "saved": MessageLookupByLibrary.simpleMessage("Salvo"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Este tweet salvo não pôde ser exibido porque é muito grande para carregar. Por favor, denuncie aos desenvolvedores."), + "search": MessageLookupByLibrary.simpleMessage("Buscar"), + "search_term": MessageLookupByLibrary.simpleMessage("Buscar termo"), + "select": MessageLookupByLibrary.simpleMessage("Selecionar"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "A seleção de contas individuais para importação e a atribuição de grupos já estão planejadas para o futuro!"), + "send": MessageLookupByLibrary.simpleMessage("Enviar"), + "share_base_url": MessageLookupByLibrary.simpleMessage( + "URL de compartilhamento personalizado"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Use um URL base personalizado ao compartilhar"), + "share_tweet_content": MessageLookupByLibrary.simpleMessage( + "Compartilhar conteúdo do tweet"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Compartilhar conteúdo e link do tweet"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Compartilhar link do tweet"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Verificar se há atualizações quando o Quacker iniciar"), + "should_check_for_updates_label": MessageLookupByLibrary.simpleMessage( + "Verificar se há atualizações"), + "small": MessageLookupByLibrary.simpleMessage("Pequena"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Algo quebrou no Quacker."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Algo deu errado no Quacker e um relatório de erro foi gerado. O relatório pode ser enviado aos desenvolvedores do Quacker para ajudar a corrigir o problema."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Desculpe, o tweet respondido não foi encontrado!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Inscrever-se"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Inscrições"), + "subtitles": MessageLookupByLibrary.simpleMessage("Legendas"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Salvou a mídia!"), + "system": MessageLookupByLibrary.simpleMessage("Sistema"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Obrigado por ajudar o Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("o problema do GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "O tweet não continha nenhum texto. Isso é inesperado"), + "theme": MessageLookupByLibrary.simpleMessage("Tema"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Modo Tema"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Não houve tendências devolvidas. Isso é inesperado! Por favor, reporte como um bug, se possível."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Este grupo não contém inscrições!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Isso demorou muito para carregar. Verifique sua conexão de rede!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Este tweet está indisponível. Provavelmente foi deletado."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Este usuário não segue ninguém!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Este usuário não tem nenhum seguidor!"), + "thread": MessageLookupByLibrary.simpleMessage("Thread"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Miniatura"), + "timed_out": MessageLookupByLibrary.simpleMessage("Tempo esgotado"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Para importar assinaturas de uma conta existente do Twitter, digite seu nome de usuário abaixo."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Alternar Tudo"), + "trending": MessageLookupByLibrary.simpleMessage("Tendência"), + "trends": MessageLookupByLibrary.simpleMessage("Tendências"), + "true_black": MessageLookupByLibrary.simpleMessage("Preto Verdadeiro?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweets"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweets e Respostas"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "Você precisa ter pelo menos 2 páginas iniciais."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar os locais de tendências disponíveis."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Não foi possível encontrar seus tweets salvos."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Não foi possível importar"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar suas páginas iniciais"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os grupos de inscrições"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar o grupo"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar as configurações do grupo"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a lista de seguidores"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a próxima página de seguidores"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a próxima página de respostas"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar a próxima página de tweets"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar o perfil"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os resultados da pesquisa."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar o tweet"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os tweets"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Não foi possível carregar os tweets para o feed"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Incapaz de atualizar as inscrições"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Não é possível executar as migrações de banco de dados"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Não é possível transmitir a preferência de localização da tendência"), + "unknown": MessageLookupByLibrary.simpleMessage("Desconhecido"), + "unsave": MessageLookupByLibrary.simpleMessage("Remover dos salvos"), + "unsubscribe": + MessageLookupByLibrary.simpleMessage("Cancelar inscrição"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("URL não suportado"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Atualizações"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Use preto verdadeiro para o tema do modo escuro"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Usuário não encontrado"), + "username": MessageLookupByLibrary.simpleMessage("Nome de usuário"), + "version": MessageLookupByLibrary.simpleMessage("Versão"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Quando uma nova atualização do aplicativo está disponível"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Se os erros devem ser relatados ao "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Se os tweets marcados como sensíveis devem ser ocultados"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Qual aba é mostrada quando o aplicativo é aberto"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Deseja ativar o relatório automático de erros?"), + "yes": MessageLookupByLibrary.simpleMessage("Sim"), + "yes_please": MessageLookupByLibrary.simpleMessage("Sim, por favor"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Você ainda não salvou nenhum tweet!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Você deve ter pelo menos 2 páginas de tela inicial"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Seu perfil deve ser público, caso contrário a importação não funcionará"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Seu relatório será enviado para o projeto do Quacker, e os detalhes de privacidade podem ser encontrados em:") + }; +} diff --git a/lib/generated/intl/messages_ro.dart b/lib/generated/intl/messages_ro.dart new file mode 100644 index 00000000..ba4b35d0 --- /dev/null +++ b/lib/generated/intl/messages_ro.dart @@ -0,0 +1,67 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ro locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ro'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "add_to_group": + MessageLookupByLibrary.simpleMessage("Adăugați la grup"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Nu a putut găsi orice tweets de către acest utilizator!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Nu am putut găsi niciun tweet din ultimele 7 zile!"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Raportarea unei erori"), + "select": MessageLookupByLibrary.simpleMessage("Selectați"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Ceva pur și simplu nu a mers bine în Quacker și a fost generat un raport de eroare. Raportul poate fi trimis dezvoltatorilor Quacker pentru a ajuta la remedierea problemei."), + "subscribe": MessageLookupByLibrary.simpleMessage("Abonează-te"), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Acest grup nu conține abonamente!"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Nu se pot încărca grupurile de abonament"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Nu se poate încărca grupul"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Nu se poate încărca următoarea pagină de răspunsuri"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Nu se poate încărca următoarea pagină de tweet-uri"), + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Nu se poate încărca tweet-ul"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Nu se pot încărca tweet-urile pentru feed"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Dezabonează-te"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Doriți să activați raportarea automată a erorilor?"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Raportul dvs. va fi trimis către proiectul Quacker\'s , iar detaliile de confidențialitate pot fi găsite la:") + }; +} diff --git a/lib/generated/intl/messages_ru.dart b/lib/generated/intl/messages_ru.dart new file mode 100644 index 00000000..f7346d40 --- /dev/null +++ b/lib/generated/intl/messages_ru.dart @@ -0,0 +1,465 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ru locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ru'; + + static String m0(name) => + "Вы уверены, что хотите удалить группу подписок ${name}?"; + + static String m1(fileName) => "Данные экспортируются в ${fileName}"; + + static String m2(fullPath) => "Данные экспортируются в ${fullPath}"; + + static String m3(timeagoFormat) => "Завершено ${timeagoFormat}"; + + static String m4(timeagoFormat) => "Завершится через ${timeagoFormat}"; + + static String m5(snapshotData) => + "Завершена работа с аккаунтами ${snapshotData}"; + + static String m6(name) => "Группа: ${name}"; + + static String m7(snapshotData) => + "Импортировано ${snapshotData} аккаунтов на данный момент"; + + static String m8(date) => "Регистрация: ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'нет голосов', one: 'голос', two: 'голоса', few: '${numFormatted} голосов', many: '${numFormatted} голосов', other: '${numFormatted} голос')}"; + + static String m10(errorMessage) => + "Пожалуйста, проверьте ваше сетевое подключение.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "Нажмите, чтобы установить ${releaseVersion}"; + + static String m12(getMediaType) => "Нажмите, чтобы показать ${getMediaType}"; + + static String m13(filePath) => + "Файл не существует. Пожалуйста, убедитесь, что он находится по адресу ${filePath}"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} ретвитнул(а) ${timeAgo}"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'нет твитов', one: 'твит', two: 'твита', few: '${numFormatted} твитов', many: '${numFormatted} твитов', other: '${numFormatted} твит')}"; + + static String m16(widgetPlaceName) => + "Невозможно загрузить актуальное для ${widgetPlaceName}"; + + static String m17(responseStatusCode) => + "Невозможно сохранить медиафайл. Twitter вернул статус ${responseStatusCode}"; + + static String m18(releaseVersion) => + "Обновить до ${releaseVersion} через клиент F-Droid"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("О программе"), + "account_suspended": MessageLookupByLibrary.simpleMessage( + "Учётная запись приостановлена"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Скрывайте авторов твитов. Избегайте предубеждения подтверждения, основанного на авторитетных аргументах."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Включить режим смещения без подтверждения"), + "add_to_group": + MessageLookupByLibrary.simpleMessage("Добавить в группу"), + "all": MessageLookupByLibrary.simpleMessage("Все"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Всё замечательное программное обеспечение, используемое Quacker"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Обновление Quacker доступно! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Вы уверены?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Назад"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter признал недействительным наш маркер доступа. Пожалуйста, попробуйте снова открыть Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Синяя тема, основанная на цветовой схеме Twitter"), + "cancel": MessageLookupByLibrary.simpleMessage("Отмена"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Катастрофическая ошибка"), + "choose": MessageLookupByLibrary.simpleMessage("Выбрать"), + "close": MessageLookupByLibrary.simpleMessage("Закрыть"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Вы действительно хотите закрыть Quacker?"), + "contribute": MessageLookupByLibrary.simpleMessage("Поддержать"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Адрес скопирован в буфер обмена"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Версия скопирована в буфер обмена"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Не удаётся связаться с Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Не удалось найти ни одного твита этого пользователя!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Не удаётся найти какие-либо твиты за последние 7 дней!"), + "country": MessageLookupByLibrary.simpleMessage("Страна"), + "dark": MessageLookupByLibrary.simpleMessage("Тёмная"), + "data": MessageLookupByLibrary.simpleMessage("Данные"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Данные успешно импортированы"), + "date_created": MessageLookupByLibrary.simpleMessage("Дата создания"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Дата подписки"), + "default_tab": + MessageLookupByLibrary.simpleMessage("Вкладка по умолчанию"), + "delete": MessageLookupByLibrary.simpleMessage("Удалить"), + "disable_screenshots": + MessageLookupByLibrary.simpleMessage("Отключить скриншоты"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Предотвращение создания скриншотов. Это может работать не на всех устройствах."), + "disabled": MessageLookupByLibrary.simpleMessage("Отключено"), + "donate": MessageLookupByLibrary.simpleMessage("Поддержать проект"), + "download": MessageLookupByLibrary.simpleMessage("Скачать"), + "download_handling": + MessageLookupByLibrary.simpleMessage("Обработка загрузки"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "Как должна работать загрузка"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Всегда спрашивайте"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Сохранить в папку"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "Невозможно загрузить. Это медиа может быть доступно только в виде потока, который Quacker пока не может загрузить."), + "download_path": + MessageLookupByLibrary.simpleMessage("Путь для загрузки"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Загрузка медиа..."), + "enable_": MessageLookupByLibrary.simpleMessage("Активировать ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Введите Ваше имя пользователя в Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Экспортировать"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Экспортировать настройки?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Экспортировать участников групп подписок?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Экспортировать группы подписок?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Экспортировать подписки?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Экспортировать твиты?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Экспортировать ваши данные"), + "feed": MessageLookupByLibrary.simpleMessage("Лента"), + "filters": MessageLookupByLibrary.simpleMessage("Фильтры"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Читатели"), + "following": MessageLookupByLibrary.simpleMessage("Читает"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter говорит, что доступ к этому запрещен"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker blue"), + "general": MessageLookupByLibrary.simpleMessage("Основные"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Группы"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Помогите сделать Quacker ещё лучше"), + "help_support_fritters_future": + MessageLookupByLibrary.simpleMessage("Поддержите Quacker"), + "hide_sensitive_tweets": MessageLookupByLibrary.simpleMessage( + "Скрывать чувствительный контент"), + "home": MessageLookupByLibrary.simpleMessage("Главная"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Если у вас есть отзывы об этой функции, пожалуйста, оставьте их на"), + "import": MessageLookupByLibrary.simpleMessage("Импортировать"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Импортировать данные с другого устройства"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Импортировать из Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Импортировать подписки"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Включая ответы"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Включая ретвиты"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Язык"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Необходим перезапуск"), + "large": MessageLookupByLibrary.simpleMessage("Большой"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Импорт с устаревшей версии Android"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Сообщите разработчикам если что-то пошло не так"), + "licenses": MessageLookupByLibrary.simpleMessage("Лицензии"), + "light": MessageLookupByLibrary.simpleMessage("Светлая"), + "live": MessageLookupByLibrary.simpleMessage("Прямой эфир"), + "logging": MessageLookupByLibrary.simpleMessage("Журнал"), + "media": MessageLookupByLibrary.simpleMessage("Медиа"), + "media_size": MessageLookupByLibrary.simpleMessage("Размер медиа"), + "medium": MessageLookupByLibrary.simpleMessage("Средний"), + "name": MessageLookupByLibrary.simpleMessage("Имя"), + "newTrans": MessageLookupByLibrary.simpleMessage("Новые"), + "no": MessageLookupByLibrary.simpleMessage("Нет"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Никакие данные не были возвращены, чего никогда не должно происходить. Пожалуйста, сообщите об ошибке, если это возможно!"), + "no_results": MessageLookupByLibrary.simpleMessage("Ничего не найдено"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Результаты отсутствуют:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Нет подписок. Попробуйте поискать или импортировать некоторые!"), + "not_set": MessageLookupByLibrary.simpleMessage("Не установлено"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Примечание: В связи с ограничением Twitter, не все твиты могут быть включены"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("Ок"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("Ой! Что-то пошло не так 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage( + "Открыть настройки приложения"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twiiter говорит, что эта страница не существует, но это может оказаться неправдой"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "Разрешение не предоставлено. Пожалуйста, повторите попытку после предоставления!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Выберите цвет!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Выберите иконку!"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("Закреплённый твит"), + "playback_speed": + MessageLookupByLibrary.simpleMessage("Скорость воспроизведения"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Пожалуйста, введите имя"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Убедитесь, что данные, которые вы хотите импортировать, находятся там, затем нажмите кнопку импорта ниже."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Учтите, что метод, используемый Quacker для импорта подписок, сильно ограничен скоростью Twitter, поэтому при наличии большого количества подписок это может не сработать."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Возможно чувствительно"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Этот профиль может содержать потенциально чувствительные изображения, высказывания или другое содержимое. Вы все еще хотите просмотреть его?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Этот твит содержит потенциально чувствительный контент. Вы действительно хотите его посмотреть?"), + "prefix": MessageLookupByLibrary.simpleMessage("префикс"), + "private_profile": + MessageLookupByLibrary.simpleMessage("Приватный профиль"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "Опубликовано под лицензией MIT"), + "replying_to": MessageLookupByLibrary.simpleMessage("Ответить"), + "report": MessageLookupByLibrary.simpleMessage("Сообщить"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Сообщить об ошибке"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Сообщить об ошибке"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Сброс страниц к значениям по умолчанию"), + "retry": MessageLookupByLibrary.simpleMessage("Повторить"), + "save": MessageLookupByLibrary.simpleMessage("Сохранить"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Экономьте место на экране, с изображениями меньшего размера"), + "saved": MessageLookupByLibrary.simpleMessage("Избранное"), + "search": MessageLookupByLibrary.simpleMessage("Поиск"), + "search_term": MessageLookupByLibrary.simpleMessage("Поисковый запрос"), + "select": MessageLookupByLibrary.simpleMessage("Выбрать"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Выбор отдельных аккаунтов для импорта и назначение групп уже запланированы на будущее!"), + "send": MessageLookupByLibrary.simpleMessage("Отправить"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Поделиться содержимым твита"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Отправить содержимое и ссылку"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Поделиться ссылкой на твит"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Проверять наличие обновлений при запуске"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Проверить обновления"), + "small": MessageLookupByLibrary.simpleMessage("Маленький"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Что-то пошло не так."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Что-то пошло не так в Quacker, и был создан отчет об ошибке. Отчет можно отправить разработчикам Quacker, чтобы они могли устранить проблему."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Извините, ответ не удалось найти!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Читать"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Подписки"), + "subtitles": MessageLookupByLibrary.simpleMessage("Субтитры"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Файл сохранён!"), + "system": MessageLookupByLibrary.simpleMessage("Системная"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Спасибо за помощь Quacker! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("предложение GitHub (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Твит не содержал никакого текста. Это неожиданно"), + "theme": MessageLookupByLibrary.simpleMessage("Тема"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Тема"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Не было возвращено ничего из актуального. Это неожиданно! Пожалуйста, сообщите об этом как об ошибке, если это возможно."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage("В этой группе нет подписок!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Загрузка заняла слишком много времени. Пожалуйста, проверьте ваше сетевое подключение!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Этот твит недоступен. Возможно он был удалён."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Этот пользователь никого не читает!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Этого пользователя никто не читает!"), + "thread": MessageLookupByLibrary.simpleMessage("Ветка"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Миниатюра"), + "timed_out": MessageLookupByLibrary.simpleMessage("Время вышло"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Чтобы импортировать подписки из существующего аккаунта Twitter, введите свое имя пользователя ниже."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Выбрать все"), + "trending": MessageLookupByLibrary.simpleMessage("Актуальное"), + "trends": MessageLookupByLibrary.simpleMessage("Актуальные темы"), + "true_black": + MessageLookupByLibrary.simpleMessage("Настоящий чёрный (AMOLED)?"), + "tweets": MessageLookupByLibrary.simpleMessage("Твиты"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Твиты и Ответы"), + "tweets_number": m15, + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Не удается найти доступные страны для актуального."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Не удаётся найти ваши сохранённые твиты."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Не удаётся импортировать"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Невозможно загрузить вашу главную страницу"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить группы подписок"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Не удаётся загрузить группу"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить настройки группы"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить список читаемых"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить следующую страницу читаемых"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить следующую страницу ответов"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить следующую страницу твитов"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить профиль"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить результаты поиска."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Не удаётся загрузить твит"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Не удаётся загрузить твиты"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Не удаётся загрузить твиты для ленты"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Невозможно обновить подписки"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Не удалось произвести перемещение базы данных"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Невозможно выполнить передачу местных предпочтений"), + "unknown": MessageLookupByLibrary.simpleMessage("Неизвестный"), + "unsave": MessageLookupByLibrary.simpleMessage("Отменить сохранение"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Перестать читать"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Обновления"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Использовать настоящий чёрный (AMOLED) для тёмной темы"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Пользователь не найден"), + "username": MessageLookupByLibrary.simpleMessage("Имя пользователя"), + "version": MessageLookupByLibrary.simpleMessage("Версия"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Когда новое обновление доступно"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage("Сообщать об ошибках в "), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Следует ли скрывать твиты, помеченные как чувствительные"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Какая вкладка отображается при открытии приложения"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Вы хотите включить автоматическое информирование об ошибках?"), + "yes": MessageLookupByLibrary.simpleMessage("Да"), + "yes_please": MessageLookupByLibrary.simpleMessage("Да, пожалуйста"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Вы ещё не сохранили ни одного твита!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "Вы должны установить как минимум две страницы для главного экрана"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Ваш профиль должен быть открытым, иначе импортирование не будет работать"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Ваш отчет будет отправлен в Quacker, а информацию о конфиденциальности можно найти здесь:") + }; +} diff --git a/lib/generated/intl/messages_tr.dart b/lib/generated/intl/messages_tr.dart new file mode 100644 index 00000000..ddea4fff --- /dev/null +++ b/lib/generated/intl/messages_tr.dart @@ -0,0 +1,485 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a tr locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'tr'; + + static String m0(name) => + "${name} abonelik grubunu silmek istediğinizden emin misiniz?"; + + static String m1(fileName) => "Veriler ${fileName}\'a aktarıldı"; + + static String m2(fullPath) => "Veriler ${fullPath} konumuna aktarıldı"; + + static String m3(timeagoFormat) => "${timeagoFormat} sona erdi"; + + static String m4(timeagoFormat) => "Bitiş ${timeagoFormat}"; + + static String m5(snapshotData) => "${snapshotData} kullanıcı ile tamamlandı"; + + static String m6(name) => "Grup: ${name}"; + + static String m7(snapshotData) => + "Şimdiye kadar ${snapshotData} kullanıcı içe aktarıldı"; + + static String m8(date) => "${date} tarihinde katıldı"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: 'Oy yok', one: 'Bir oy', two: 'İki oy', few: '${numFormatted} oy', many: '${numFormatted} oy', other: '${numFormatted} oy')}"; + + static String m10(errorMessage) => + "Lütfen internet bağlantınızı kontrol edin.\n\n${errorMessage}"; + + static String m11(releaseVersion) => + "${releaseVersion} sürümünü indirmek için dokunun"; + + static String m12(getMediaType) => "${getMediaType} göstermek için dokunun"; + + static String m13(filePath) => + "Dosya yok. Lütfen ${filePath} konumunda olduğundan emin olun"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} ${timeAgo} retweet\'ledi"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: 'tweet yok', one: 'bir tweet', two: 'iki tweet', few: '${numFormatted} tweet', many: '${numFormatted} tweet', other: '${numFormatted} tweet')}"; + + static String m16(widgetPlaceName) => + "${widgetPlaceName} için trendler yüklenemiyor"; + + static String m17(responseStatusCode) => + "Medya kaydedilemiyor. Twitter ${responseStatusCode} durumuyla döndü"; + + static String m18(releaseVersion) => + "F-Droid istemciniz aracılığıyla ${releaseVersion} sürümüne güncelleyin"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Hakkında"), + "account_suspended": + MessageLookupByLibrary.simpleMessage("Hesap askıya alındı"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Tweet yazarlarını gizleyin. Yazarın argümanlara dayalı doğrulama yanlılığından kaçının."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Doğrulama yanlılığı kapalı modunu etkinleştir"), + "add_subscriptions": + MessageLookupByLibrary.simpleMessage("Abonelik ekle"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Gruba ekle"), + "all": MessageLookupByLibrary.simpleMessage("Hepsi"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Quacker tarafından kullanılan tüm harika yazılımlar"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage( + "Quacker için bir güncelleme mevcut! 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Emin misiniz?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("Geri"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter erişim belirtecimizi geçersiz kıldı. Lütfen Quacker\'ı yeniden açmayı deneyin!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage( + "Twitter renk şemasına dayalı mavi tema"), + "cancel": MessageLookupByLibrary.simpleMessage("İptal et"), + "catastrophic_failure": + MessageLookupByLibrary.simpleMessage("Feci arıza"), + "choose": MessageLookupByLibrary.simpleMessage("Seç"), + "choose_pages": MessageLookupByLibrary.simpleMessage("Sayfaları seçin"), + "close": MessageLookupByLibrary.simpleMessage("Kapat"), + "confirm_close_fritter": MessageLookupByLibrary.simpleMessage( + "Quacker\'ı kapatmak istediğinizden emin misiniz?"), + "contribute": MessageLookupByLibrary.simpleMessage("Katkıda bulunun"), + "copied_address_to_clipboard": + MessageLookupByLibrary.simpleMessage("Adres panoya kopyalandı"), + "copied_version_to_clipboard": + MessageLookupByLibrary.simpleMessage("Sürüm panoya kopyalandı"), + "could_not_contact_twitter": MessageLookupByLibrary.simpleMessage( + "Twitter ile iletişim kurulamadı"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Bu kullanıcının herhangi bir tweeti bulunamadı!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Son 7 güne ait herhangi bir tweet bulunamadı!"), + "country": MessageLookupByLibrary.simpleMessage("Ülke"), + "dark": MessageLookupByLibrary.simpleMessage("Koyu"), + "data": MessageLookupByLibrary.simpleMessage("Veriler"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": MessageLookupByLibrary.simpleMessage( + "Veriler başarıyla içe aktarıldı"), + "date_created": + MessageLookupByLibrary.simpleMessage("Oluşturulma Tarihi"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Abone Olunan Tarih"), + "default_tab": MessageLookupByLibrary.simpleMessage("Varsayılan sekme"), + "delete": MessageLookupByLibrary.simpleMessage("Sil"), + "disable_screenshots": MessageLookupByLibrary.simpleMessage( + "Ekran görüntülerini devre dışı bırak"), + "disable_screenshots_hint": MessageLookupByLibrary.simpleMessage( + "Ekran görüntülerinin alınmasını engelleyin. Bu, tüm aygıtlarda çalışmayabilir."), + "disabled": MessageLookupByLibrary.simpleMessage("Devre dışı"), + "donate": MessageLookupByLibrary.simpleMessage("Bağış yapın"), + "download": MessageLookupByLibrary.simpleMessage("İndir"), + "download_handling": + MessageLookupByLibrary.simpleMessage("İndirmelerin ele alınması"), + "download_handling_description": MessageLookupByLibrary.simpleMessage( + "İndirmeler nasıl ele alınmalı"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("Her zaman sor"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("Dizine kaydet"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "İndirilemiyor. Bu medya yalnızca Quacker\'ın henüz indiremediği bir akış olarak mevcut olabilir."), + "download_path": MessageLookupByLibrary.simpleMessage("İndirme yolu"), + "downloading_media": + MessageLookupByLibrary.simpleMessage("Medya indiriliyor..."), + "enable_": + MessageLookupByLibrary.simpleMessage(" etkinleştirilsin mi?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Twitter kullanıcı adınızı girin"), + "export": MessageLookupByLibrary.simpleMessage("Dışa aktar"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Ayarlar aktarılsın mı?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Abonelik grubu üyeleri aktarılsın mı?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Abonelik grupları aktarılsın mı?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Abonelikler aktarılsın mı?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Tweet\'ler aktarılsın mı?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Verilerinizi dışa aktarın"), + "feed": MessageLookupByLibrary.simpleMessage("Akış"), + "filters": MessageLookupByLibrary.simpleMessage("Filtreler"), + "finish": MessageLookupByLibrary.simpleMessage("Bitir"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Takipçi"), + "following": MessageLookupByLibrary.simpleMessage("Takip ediyor"), + "forbidden": MessageLookupByLibrary.simpleMessage( + "Twitter buna erişimin yasak olduğunu söylüyor"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker mavisi"), + "functionality_unsupported": MessageLookupByLibrary.simpleMessage( + "Bu işlev artık Twitter tarafından desteklenmiyor!"), + "general": MessageLookupByLibrary.simpleMessage("Genel"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("Gruplar"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Quacker\'ın daha da iyi olmasına yardımcı olun"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Quacker\'ın geleceğini desteklemeye yardımcı olun"), + "hide_sensitive_tweets": + MessageLookupByLibrary.simpleMessage("Hassas tweetleri gizle"), + "home": MessageLookupByLibrary.simpleMessage("Ana sayfa"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Bu özellikle ilgili herhangi bir görüşünüz varsa lütfen geri bildirim yapın"), + "import": MessageLookupByLibrary.simpleMessage("İçe aktar"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Verileri başka bir cihazdan aktarın"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Twitter\'dan içe aktar"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Abonelikleri içe aktar"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Yanıtları dahil et"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Retweet\'leri dahil et"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("Dil"), + "language_subtitle": + MessageLookupByLibrary.simpleMessage("Yeniden başlatma gerektirir"), + "large": MessageLookupByLibrary.simpleMessage("Büyük"), + "legacy_android_import": MessageLookupByLibrary.simpleMessage( + "Eski Android için İçe Aktarma"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Yanlış giden şeyler varsa geliştiricilere bildirin"), + "licenses": MessageLookupByLibrary.simpleMessage("Lisanslar"), + "light": MessageLookupByLibrary.simpleMessage("Açık"), + "live": MessageLookupByLibrary.simpleMessage("CANLI"), + "logging": MessageLookupByLibrary.simpleMessage("Günlük tutma"), + "media": MessageLookupByLibrary.simpleMessage("Medya"), + "media_size": MessageLookupByLibrary.simpleMessage("Medya boyutu"), + "medium": MessageLookupByLibrary.simpleMessage("Orta"), + "missing_page": MessageLookupByLibrary.simpleMessage("Eksik sayfa"), + "mute_video_description": MessageLookupByLibrary.simpleMessage( + "Videoların öntanımlı olarak sesinin kapatılıp kapatılmayacağı"), + "mute_videos": + MessageLookupByLibrary.simpleMessage("Videoların sesini kapat"), + "name": MessageLookupByLibrary.simpleMessage("Ad"), + "newTrans": MessageLookupByLibrary.simpleMessage("Yeni"), + "next": MessageLookupByLibrary.simpleMessage("İleri"), + "no": MessageLookupByLibrary.simpleMessage("Hayır"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Hiçbir veri dönmedi, bu asla olmamalıydı. Mümkünse lütfen bir hata bildirin!"), + "no_results": MessageLookupByLibrary.simpleMessage("Sonuç yok"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Sonuç bulunamadı:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Abonelik yok. Bazılarını aramayı veya içe aktarmayı deneyin!"), + "not_set": MessageLookupByLibrary.simpleMessage("Ayarlanmadı"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Not: Twitter sınırlaması nedeniyle, tüm tweet\'ler dahil edilmeyebilir"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("TAMAM"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage( + "Abonelikler yalnızca herkese açık profillerden içe aktarılabilir"), + "oops_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Hop! Bir şeyler ters gitti 🥲"), + "open_app_settings": + MessageLookupByLibrary.simpleMessage("Uygulama ayarlarını aç"), + "page_not_found": MessageLookupByLibrary.simpleMessage( + "Twitter sayfanın mevcut olmadığını söylüyor, ancak bu doğru olmayabilir"), + "permission_not_granted": MessageLookupByLibrary.simpleMessage( + "İzin verilmedi. Lütfen verdikten sonra tekrar deneyin!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Bir renk seçin!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Bir simge seçin!"), + "pinned_tweet": + MessageLookupByLibrary.simpleMessage("Sabitlenmiş tweet"), + "playback_speed": MessageLookupByLibrary.simpleMessage("Oynatma hızı"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Lütfen bir ad girin"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Lütfen içe aktarmak istediğiniz verilerin orada olduğundan emin olun, ardından aşağıdaki içe aktar düğmesine basın."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Quacker\'ın abonelikleri içe aktarmak için kullandığı yöntemin Twitter tarafından yüksek oranda sınırlandırıldığını, bu nedenle çok sayıda takip ettiğiniz hesap varsa bunun başarısız olabileceğini lütfen unutmayın."), + "possibly_sensitive": + MessageLookupByLibrary.simpleMessage("Hassas olabilir"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "Bu profil hassas olabilecek görüntüler, dil veya başka içerikler içerebilir. Yine de görüntülemek istiyor musunuz?"), + "possibly_sensitive_tweet": MessageLookupByLibrary.simpleMessage( + "Bu tweet olası hassas içerik barındırmaktadır. Görüntülemek ister misiniz?"), + "prefix": MessageLookupByLibrary.simpleMessage("ön ek"), + "private_profile": MessageLookupByLibrary.simpleMessage("Gizli profil"), + "released_under_the_mit_license": MessageLookupByLibrary.simpleMessage( + "MIT Lisansı altında yayınlandı"), + "replying_to": MessageLookupByLibrary.simpleMessage("Yanıtlıyor"), + "report": MessageLookupByLibrary.simpleMessage("Bildir"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("Hata bildir"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Hata bildirme"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage( + "Sayfaları öntanımlı olana sıfırla"), + "retry": MessageLookupByLibrary.simpleMessage("Yeniden dene"), + "save": MessageLookupByLibrary.simpleMessage("Kaydet"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Daha küçük görüntülerle bant genişliğinden tasarruf edin"), + "saved": MessageLookupByLibrary.simpleMessage("Kaydedilmiş"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "Kaydedilen bu tweet, yüklenemeyecek kadar büyük olduğu için görüntülenemedi. Lütfen bunu geliştiricilere bildirin."), + "search": MessageLookupByLibrary.simpleMessage("Ara"), + "search_term": MessageLookupByLibrary.simpleMessage("Arama terimi"), + "select": MessageLookupByLibrary.simpleMessage("Seç"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "İçe aktarılacak bireysel hesapların seçilmesi ve grupların atanması şimdiden gelecek için planlanmıştır!"), + "send": MessageLookupByLibrary.simpleMessage("Gönder"), + "share_base_url": + MessageLookupByLibrary.simpleMessage("Özel paylaşım URL\'si"), + "share_base_url_description": MessageLookupByLibrary.simpleMessage( + "Paylaşırken özel bir temel URL kullanın"), + "share_tweet_content": + MessageLookupByLibrary.simpleMessage("Tweet içeriğini paylaş"), + "share_tweet_content_and_link": MessageLookupByLibrary.simpleMessage( + "Tweet içeriğini ve bağlantısını paylaş"), + "share_tweet_link": + MessageLookupByLibrary.simpleMessage("Tweet bağlantısını paylaş"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage( + "Quacker başladığında güncellemeleri denetle"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("Güncellemeleri denetle"), + "small": MessageLookupByLibrary.simpleMessage("Küçük"), + "something_broke_in_fritter": MessageLookupByLibrary.simpleMessage( + "Quacker\'da bir şey bozuldu."), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Quacker\'da bir şeyler ters gitti ve bir hata raporu oluşturuldu. Rapor, sorunun çözülmesine yardımcı olmaları için Quacker geliştiricilerine gönderilebilir."), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage( + "Üzgünüz, yanıtlanan tweet bulunamadı!"), + "subscribe": MessageLookupByLibrary.simpleMessage("Abone ol"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Abonelikler"), + "subtitles": MessageLookupByLibrary.simpleMessage("Altyazılar"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("Medya kaydedildi!"), + "system": MessageLookupByLibrary.simpleMessage("Sistem"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": MessageLookupByLibrary.simpleMessage( + "Quacker\'a yardım ettiğin için teşekkürler! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("GitHub sorunu (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage( + "Tweet\'te herhangi bir metin yoktu. Bu beklenmedik bir şey"), + "theme": MessageLookupByLibrary.simpleMessage("Tema"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Tema Modu"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Geri dönen trend yoktu. Bu beklenmedik! Mümkünse lütfen bir hata olarak bildirin."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Bu grup hiçbir abonelik içermiyor!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage( + "Bunun yüklenmesi çok uzun sürdü. Lütfen internet bağlantınızı kontrol edin!"), + "this_tweet_is_unavailable": MessageLookupByLibrary.simpleMessage( + "Bu tweete ulaşılamıyor. Muhtemelen silindi."), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Bu kullanıcı kimseyi takip etmiyor!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Bu kullanıcıyı takip eden kimse yok!"), + "thread": MessageLookupByLibrary.simpleMessage("Başlık"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Küçük resim"), + "timed_out": + MessageLookupByLibrary.simpleMessage("Zaman aşımına uğradı"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Mevcut bir Twitter hesabından abonelikleri içe aktarmak için aşağıya kullanıcı adınızı girin."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Tümünü Aç/Kapat"), + "trending": MessageLookupByLibrary.simpleMessage("Trendler"), + "trends": MessageLookupByLibrary.simpleMessage("Trendler"), + "true_black": + MessageLookupByLibrary.simpleMessage("Gerçek siyah olsun mu?"), + "tweets": MessageLookupByLibrary.simpleMessage("Tweet\'ler"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Tweet\'ler & Yanıtlar"), + "tweets_number": m15, + "two_home_pages_required": MessageLookupByLibrary.simpleMessage( + "En az 2 ana ekran sayfanızın olması gerekir."), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Mevcut trend konumları bulunamadı."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Kayıtlı tweet\'leriniz bulunamıyor."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("İçe aktarılamıyor"), + "unable_to_load_home_pages": MessageLookupByLibrary.simpleMessage( + "Ana sayfalarınız yüklenemiyor"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Abonelik grupları yüklenemiyor"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("Grup yüklenemedi"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage("Grup ayarları yüklenemedi"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Aşağıdakilerin listesi yüklenemiyor"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Takip edenlerin sonraki sayfası yüklenemiyor"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Yanıtların bir sonraki sayfası yüklenemedi"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Tweet\'lerin sonraki sayfası yüklenemiyor"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("Profil yüklenemiyor"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Arama sonuçları yüklenemiyor."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("Tweet yüklenemedi"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("Tweet\'ler yüklenemedi"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Akış için tweet\'ler yüklenemiyor"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage("Abonelikler yenilenemiyor"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage( + "Veritabanı geçişleri çalıştırılamıyor"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage( + "Trend konumu tercihi aktarılamıyor"), + "unknown": MessageLookupByLibrary.simpleMessage("Bilinmeyen"), + "unsave": MessageLookupByLibrary.simpleMessage("Kaydetmeyi iptal et"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Abonelikten çık"), + "unsupported_url": + MessageLookupByLibrary.simpleMessage("Desteklenmeyen URL"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("Güncellemeler"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Koyu tema için gerçek siyahı kullanın"), + "user_not_found": + MessageLookupByLibrary.simpleMessage("Kullanıcı bulunamadı"), + "username": MessageLookupByLibrary.simpleMessage("Kullanıcı adı"), + "version": MessageLookupByLibrary.simpleMessage("Sürüm"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage( + "Yeni bir uygulama güncellemesi mevcut olduğunda"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Hataların \'ye bildirilip bildirilmeyeceği"), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage( + "Hassas olarak işaretlenen tweetlerin gizlenip gizlenmeyeceği"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Uygulama açıldığında hangi sekmenin gösterileceğini belirler"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Otomatik hata bildirimini etkinleştirmek ister misiniz?"), + "yes": MessageLookupByLibrary.simpleMessage("Evet"), + "yes_please": MessageLookupByLibrary.simpleMessage("Evet, lütfen"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage("Henüz tweet kaydetmediniz!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage( + "En az 2 ana ekran sayfanız olmalıdır"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Profiliniz herkese açık olmalıdır, aksi takdirde alma işlemi çalışmaz"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Raporunuz Quacker\'ın projesine gönderilecektir ve gizlilik detaylarını şu adreste bulabilirsiniz:") + }; +} diff --git a/lib/generated/intl/messages_uk.dart b/lib/generated/intl/messages_uk.dart new file mode 100644 index 00000000..5c7a3a9b --- /dev/null +++ b/lib/generated/intl/messages_uk.dart @@ -0,0 +1,290 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a uk locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'uk'; + + static String m0(name) => + "Ви впевнені, що хочете видалити групу підписників ${name}?"; + + static String m1(fileName) => "Дані експортовано до ${fileName}"; + + static String m2(fullPath) => "Дані експортовано до ${fullPath}"; + + static String m5(snapshotData) => "Завершено з ${snapshotData} користувачами"; + + static String m7(snapshotData) => "${snapshotData} імпортованих користувачів"; + + static String m8(date) => "Приєднався ${date}"; + + static String m13(filePath) => + "Файл не існує. Переконайтеся, що він знаходиться за адресою ${filePath}"; + + static String m16(widgetPlaceName) => + "Не вдалося завантажити тренди для ${widgetPlaceName}"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("Про Quacker"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage( + "Приховати авторів твітів. Уникайте підтвердження, заснованого на авторитетних аргументах."), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage( + "Активувати режим зсуву без підтвердження"), + "add_to_group": MessageLookupByLibrary.simpleMessage("Додати до групи"), + "all": MessageLookupByLibrary.simpleMessage("Все"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage( + "Все чудове програмне забезпечення, яке використовує Quacker"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("Ви впевнені?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "cancel": MessageLookupByLibrary.simpleMessage("Скасувати"), + "close": MessageLookupByLibrary.simpleMessage("Закрити"), + "contribute": MessageLookupByLibrary.simpleMessage("Зробити внесок"), + "copied_address_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Адресу скопійовано в буфер обміну"), + "copied_version_to_clipboard": MessageLookupByLibrary.simpleMessage( + "Версія скопійована в буфер обміну"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage( + "Не вдалося знайти жодного твіту цього користувача!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage( + "Не вдалося знайти жодного твіту за останні 7 днів!"), + "dark": MessageLookupByLibrary.simpleMessage("Темна"), + "data": MessageLookupByLibrary.simpleMessage("Дані"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("Дані успішно імпортовано"), + "date_created": MessageLookupByLibrary.simpleMessage("Дата створення"), + "date_subscribed": + MessageLookupByLibrary.simpleMessage("Дата підписки"), + "default_tab": + MessageLookupByLibrary.simpleMessage("Вкладка за замовчуванням"), + "delete": MessageLookupByLibrary.simpleMessage("Видалити"), + "disabled": MessageLookupByLibrary.simpleMessage("Вимкнено"), + "donate": MessageLookupByLibrary.simpleMessage("Пожертвувати"), + "enable_": MessageLookupByLibrary.simpleMessage("Увімкнути ?"), + "enter_your_twitter_username": MessageLookupByLibrary.simpleMessage( + "Введіть своє ім\'я користувача у Twitter"), + "export": MessageLookupByLibrary.simpleMessage("Експорт"), + "export_settings": + MessageLookupByLibrary.simpleMessage("Експортувати налаштування?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage( + "Експортувати членів групи підписників?"), + "export_subscription_groups": MessageLookupByLibrary.simpleMessage( + "Експортувати групи підписників?"), + "export_subscriptions": + MessageLookupByLibrary.simpleMessage("Експортувати підписки?"), + "export_tweets": + MessageLookupByLibrary.simpleMessage("Експортувати твіти?"), + "export_your_data": + MessageLookupByLibrary.simpleMessage("Експортуйте свої дані"), + "feed": MessageLookupByLibrary.simpleMessage("Стрічка"), + "filters": MessageLookupByLibrary.simpleMessage("Фільтри"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("Підписники"), + "following": MessageLookupByLibrary.simpleMessage("Слідкує"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "general": MessageLookupByLibrary.simpleMessage("Головне"), + "groups": MessageLookupByLibrary.simpleMessage("Групи"), + "help_make_fritter_even_better": MessageLookupByLibrary.simpleMessage( + "Допоможіть зробити Quacker ще кращим"), + "help_support_fritters_future": MessageLookupByLibrary.simpleMessage( + "Допоможіть підтримати майбутнє Quacker"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage( + "Якщо у вас є відгуки про цю функцію, будь ласка, залиште їх на"), + "import": MessageLookupByLibrary.simpleMessage("Імпорт"), + "import_data_from_another_device": MessageLookupByLibrary.simpleMessage( + "Імпортуйте дані з іншого пристрою"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("Імпортувати з Twitter"), + "import_subscriptions": + MessageLookupByLibrary.simpleMessage("Імпорт підписок"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": + MessageLookupByLibrary.simpleMessage("Включити відповіді"), + "include_retweets": + MessageLookupByLibrary.simpleMessage("Включити ретвіти"), + "joined": m8, + "large": MessageLookupByLibrary.simpleMessage("Великий"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("Застарілий імпорт Android"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage( + "Повідомте розробників, якщо щось зламалося"), + "licenses": MessageLookupByLibrary.simpleMessage("Ліцензії"), + "light": MessageLookupByLibrary.simpleMessage("Світла"), + "logging": MessageLookupByLibrary.simpleMessage("Логування"), + "media": MessageLookupByLibrary.simpleMessage("Медіа"), + "media_size": MessageLookupByLibrary.simpleMessage("Розмір медіа"), + "medium": MessageLookupByLibrary.simpleMessage("Середній"), + "name": MessageLookupByLibrary.simpleMessage("Ім\'я"), + "newTrans": MessageLookupByLibrary.simpleMessage("Нове"), + "no": MessageLookupByLibrary.simpleMessage("Ні"), + "no_results": MessageLookupByLibrary.simpleMessage("Немає результатів"), + "no_results_for": + MessageLookupByLibrary.simpleMessage("Нічого не знайдено для:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage( + "Немає підписок. Спробуйте пошукати або імпортувати!"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage( + "Примітка: Через обмеження Twitter, не всі твіти можуть бути включені"), + "ok": MessageLookupByLibrary.simpleMessage("Добре"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("Вибери колір!"), + "pick_an_icon": + MessageLookupByLibrary.simpleMessage("Вибери піктограму!"), + "please_enter_a_name": + MessageLookupByLibrary.simpleMessage("Будь ласка, введіть ім\'я"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage( + "Будь ласка, переконайтеся, що дані, які ви хочете імпортувати, знаходяться там, а потім натисніть кнопку імпорту нижче."), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "Будь ласка, зверніть увагу, що метод, який використовує Quacker для імпорту підписок, сильно обмежений Twitter, тому він може не спрацювати, якщо у вас багато акаунтів, на які ви підписані."), + "prefix": MessageLookupByLibrary.simpleMessage("префікс"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("Випущено за ліцензією MIT"), + "report_a_bug": + MessageLookupByLibrary.simpleMessage("Повідомити про помилку"), + "reporting_an_error": + MessageLookupByLibrary.simpleMessage("Повідомити про помилку"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage( + "Економте трафік за допомогою менших зображень"), + "saved": MessageLookupByLibrary.simpleMessage("Збережено"), + "search": MessageLookupByLibrary.simpleMessage("Пошук"), + "select": MessageLookupByLibrary.simpleMessage("Вибрати"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage( + "Вибір окремих облікових записів для імпорту та призначення груп вже заплановано на майбутнє!"), + "send": MessageLookupByLibrary.simpleMessage("Надіслати"), + "small": MessageLookupByLibrary.simpleMessage("Маленький"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Щойно у Quacker щось пішло не так, і було створено звіт про помилку. Звіт можна відправити розробникам Quacker, щоб вони допомогли розв\'язати проблему."), + "subscribe": MessageLookupByLibrary.simpleMessage("Підписатися"), + "subscriptions": MessageLookupByLibrary.simpleMessage("Підписки"), + "system": MessageLookupByLibrary.simpleMessage("Система"), + "thanks_for_helping_fritter": + MessageLookupByLibrary.simpleMessage("Дякуємо за допомогу! 💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("GitHub issue (#143)"), + "theme": MessageLookupByLibrary.simpleMessage("Тема"), + "theme_mode": MessageLookupByLibrary.simpleMessage("Режим теми"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage( + "Немає повернених трендів. Це неочікувано! Будь ласка, повідомте про помилку, якщо можливо."), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage( + "Ця група не містить підписок!"), + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage( + "Цей користувач ні за ким не стежить!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage( + "Цей користувач не має жодного підписника!"), + "thumbnail": MessageLookupByLibrary.simpleMessage("Ескіз"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "Щоб імпортувати підписки з наявного облікового запису Twitter, введіть своє ім\'я користувача нижче."), + "toggle_all": MessageLookupByLibrary.simpleMessage("Перемкнути все"), + "trending": MessageLookupByLibrary.simpleMessage("Тренди"), + "true_black": MessageLookupByLibrary.simpleMessage("Справжній чорний?"), + "tweets": MessageLookupByLibrary.simpleMessage("Твіти"), + "tweets_and_replies": + MessageLookupByLibrary.simpleMessage("Твіти і відповіді"), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage( + "Не вдалося знайти доступні місцеположення трендів."), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage( + "Не вдається знайти збережені твіти."), + "unable_to_import": + MessageLookupByLibrary.simpleMessage("Не вдалося імпортувати"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити групи підписників"), + "unable_to_load_the_group": MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити групу"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити налаштування групи"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити список підписників"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити наступну сторінку з підписниками"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити наступну сторінку відповідей"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити наступну сторінку твітів"), + "unable_to_load_the_profile": MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити профіль"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити результати пошуку."), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити твіт"), + "unable_to_load_the_tweets": MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити твіти"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage( + "Не вдається завантажити твіти для стрічки"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage("Не вдалося оновити підписки"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("Відписатися"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage( + "Використовуйте справжній чорний колір для темної теми"), + "username": MessageLookupByLibrary.simpleMessage("Ім\'я користувача"), + "version": MessageLookupByLibrary.simpleMessage("Версія"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage( + "Чи потрібно повідомляти про помилки в "), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage( + "Яка вкладка відображатиметься під час відкриття додатка"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage( + "Бажаєте увімкнути автоматичне повідомлення про помилки?"), + "yes": MessageLookupByLibrary.simpleMessage("Так"), + "yes_please": MessageLookupByLibrary.simpleMessage("Так, будь ласка"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage( + "Ви ще не зберегли жодного твіту!"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage( + "Ваш профіль має бути публічним, інакше імпорт не спрацює"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "Ваш звіт буде надіслано до проекту Quacker\'s , а деталі конфіденційності можна знайти за посиланням:") + }; +} diff --git a/lib/generated/intl/messages_zh_Hans.dart b/lib/generated/intl/messages_zh_Hans.dart new file mode 100644 index 00000000..c10b72c6 --- /dev/null +++ b/lib/generated/intl/messages_zh_Hans.dart @@ -0,0 +1,397 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a zh_Hans locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'zh_Hans'; + + static String m0(name) => "您确定要删除订阅组 ${name} 吗?"; + + static String m1(fileName) => "导出数据至文件 ${fileName}"; + + static String m2(fullPath) => "导出数据至路径 ${fullPath}"; + + static String m3(timeagoFormat) => "${timeagoFormat} 已结束"; + + static String m4(timeagoFormat) => "${timeagoFormat} 结束"; + + static String m5(snapshotData) => "${snapshotData} 个用户已导入完成"; + + static String m6(name) => "组:${name}"; + + static String m7(snapshotData) => "已导入 ${snapshotData} 名用户"; + + static String m8(date) => "加入于 ${date}"; + + static String m9(num, numFormatted) => + "${Intl.plural(num, zero: '0 票', one: '1 票', two: '2 票', few: '${numFormatted} 票', many: '${numFormatted} 票', other: '${numFormatted} 票')}"; + + static String m10(errorMessage) => "请检查您的网络连接。\n\n${errorMessage}"; + + static String m11(releaseVersion) => "点击下载 ${releaseVersion}"; + + static String m12(getMediaType) => "点击 ${getMediaType} 显示"; + + static String m13(filePath) => "文件不存在。请确保它位于 ${filePath} 的位置"; + + static String m14(thisTweetUserName, timeAgo) => + "${thisTweetUserName} 于 ${timeAgo} 前转推了"; + + static String m15(num, numFormatted) => + "${Intl.plural(num, zero: '0 推文', one: '1 推文', two: '2 推文', few: '${numFormatted} 推文', many: '${numFormatted} 推文', other: '${numFormatted}推文')}"; + + static String m16(widgetPlaceName) => "无法加载 ${widgetPlaceName} 的趋势"; + + static String m17(responseStatusCode) => + "无法保存媒体。Twitter 返回的状态是 ${responseStatusCode}"; + + static String m18(releaseVersion) => "从 F-Droid 客户端更新 ${releaseVersion}"; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "about": MessageLookupByLibrary.simpleMessage("关于"), + "account_suspended": MessageLookupByLibrary.simpleMessage("账号已被冻结"), + "activate_non_confirmation_bias_mode_description": + MessageLookupByLibrary.simpleMessage("隐藏推文作者以避免基于权威论据的确认偏向。"), + "activate_non_confirmation_bias_mode_label": + MessageLookupByLibrary.simpleMessage("激活非确认偏向模式"), + "add_subscriptions": MessageLookupByLibrary.simpleMessage("添加订阅"), + "add_to_group": MessageLookupByLibrary.simpleMessage("添加到订阅组"), + "all": MessageLookupByLibrary.simpleMessage("全部"), + "all_the_great_software_used_by_fritter": + MessageLookupByLibrary.simpleMessage("Quacker 所使用的伟大项目😇"), + "an_update_for_fritter_is_available": + MessageLookupByLibrary.simpleMessage("Quacker 有新版本 🚀"), + "are_you_sure": MessageLookupByLibrary.simpleMessage("你确定吗?"), + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": + m0, + "back": MessageLookupByLibrary.simpleMessage("返回"), + "bad_guest_token": MessageLookupByLibrary.simpleMessage( + "Twitter 使我们的访问令牌无效。请尝试重新打开 Quacker!"), + "blue_theme_based_on_the_twitter_color_scheme": + MessageLookupByLibrary.simpleMessage("基于 Twitter 配色方案的蓝色主题"), + "cancel": MessageLookupByLibrary.simpleMessage("取消"), + "catastrophic_failure": MessageLookupByLibrary.simpleMessage("致命问题"), + "choose": MessageLookupByLibrary.simpleMessage("选择"), + "choose_pages": MessageLookupByLibrary.simpleMessage("选择页面"), + "close": MessageLookupByLibrary.simpleMessage("关闭"), + "confirm_close_fritter": + MessageLookupByLibrary.simpleMessage("确定要关闭 Quacker 吗?"), + "contribute": MessageLookupByLibrary.simpleMessage("贡献 💖"), + "copied_address_to_clipboard": + MessageLookupByLibrary.simpleMessage("已将地址复制到剪切板"), + "copied_version_to_clipboard": + MessageLookupByLibrary.simpleMessage("已复制版本号"), + "could_not_contact_twitter": + MessageLookupByLibrary.simpleMessage("无法访问 Twitter"), + "could_not_find_any_tweets_by_this_user": + MessageLookupByLibrary.simpleMessage("找不到该用户的任何推文!"), + "could_not_find_any_tweets_from_the_last_7_days": + MessageLookupByLibrary.simpleMessage("找不到过去 7 天的任何推文!"), + "country": MessageLookupByLibrary.simpleMessage("国家"), + "dark": MessageLookupByLibrary.simpleMessage("暗色主题"), + "data": MessageLookupByLibrary.simpleMessage("数据"), + "data_exported_to_fileName": m1, + "data_exported_to_fullPath": m2, + "data_imported_successfully": + MessageLookupByLibrary.simpleMessage("数据导入成功"), + "date_created": MessageLookupByLibrary.simpleMessage("创建日期"), + "date_subscribed": MessageLookupByLibrary.simpleMessage("订阅日期"), + "default_tab": MessageLookupByLibrary.simpleMessage("默认页面"), + "delete": MessageLookupByLibrary.simpleMessage("删除"), + "disable_screenshots": MessageLookupByLibrary.simpleMessage("禁用截屏"), + "disable_screenshots_hint": + MessageLookupByLibrary.simpleMessage("防止截屏。可能不适用于所有设备。"), + "disabled": MessageLookupByLibrary.simpleMessage("不显示"), + "donate": MessageLookupByLibrary.simpleMessage("捐赠"), + "download": MessageLookupByLibrary.simpleMessage("下载"), + "download_handling": MessageLookupByLibrary.simpleMessage("下载处理"), + "download_handling_description": + MessageLookupByLibrary.simpleMessage("下载应该如何工作"), + "download_handling_type_ask": + MessageLookupByLibrary.simpleMessage("始终询问"), + "download_handling_type_directory": + MessageLookupByLibrary.simpleMessage("保存到目录"), + "download_media_no_url": MessageLookupByLibrary.simpleMessage( + "无法下载。 此媒体可能仅作为在线流提供,Quacker 尚无法下载。"), + "download_path": MessageLookupByLibrary.simpleMessage("下载路径"), + "downloading_media": MessageLookupByLibrary.simpleMessage("正在下载媒体..."), + "enable_": MessageLookupByLibrary.simpleMessage("启用 ?"), + "ended_timeago_format_endsAt_allowFromNow_true": m3, + "ends_timeago_format_endsAt_allowFromNow_true": m4, + "enter_your_twitter_username": + MessageLookupByLibrary.simpleMessage("输入您的 Twitter 用户名"), + "export": MessageLookupByLibrary.simpleMessage("导出"), + "export_settings": MessageLookupByLibrary.simpleMessage("导出设置?"), + "export_subscription_group_members": + MessageLookupByLibrary.simpleMessage("导出订阅组成员?"), + "export_subscription_groups": + MessageLookupByLibrary.simpleMessage("导出订阅组?"), + "export_subscriptions": MessageLookupByLibrary.simpleMessage("导出订阅?"), + "export_tweets": MessageLookupByLibrary.simpleMessage("导出推文?"), + "export_your_data": MessageLookupByLibrary.simpleMessage("导出您的数据"), + "feed": MessageLookupByLibrary.simpleMessage("最新"), + "filters": MessageLookupByLibrary.simpleMessage("过滤器"), + "finish": MessageLookupByLibrary.simpleMessage("完毕"), + "finished_with_snapshotData_users": m5, + "followers": MessageLookupByLibrary.simpleMessage("关注者"), + "following": MessageLookupByLibrary.simpleMessage("正在关注"), + "forbidden": MessageLookupByLibrary.simpleMessage("Twitter 表示禁止访问此内容"), + "fritter": MessageLookupByLibrary.simpleMessage("Quacker"), + "fritter_blue": MessageLookupByLibrary.simpleMessage("Quacker 蓝"), + "functionality_unsupported": + MessageLookupByLibrary.simpleMessage("Twitter 不再支持此功能!"), + "general": MessageLookupByLibrary.simpleMessage("通用"), + "group_name": m6, + "groups": MessageLookupByLibrary.simpleMessage("订阅组"), + "help_make_fritter_even_better": + MessageLookupByLibrary.simpleMessage("一起改进 Quacker,让它变得更好😉"), + "help_support_fritters_future": + MessageLookupByLibrary.simpleMessage("帮助支持 Quacker 的未来🍚"), + "hide_sensitive_tweets": MessageLookupByLibrary.simpleMessage("隐藏敏感推文"), + "home": MessageLookupByLibrary.simpleMessage("主页"), + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": + MessageLookupByLibrary.simpleMessage("如果您对此功能有任何反馈,请留言于"), + "import": MessageLookupByLibrary.simpleMessage("导入"), + "import_data_from_another_device": + MessageLookupByLibrary.simpleMessage("从其他设备导入数据"), + "import_from_twitter": + MessageLookupByLibrary.simpleMessage("从 Twitter 导入"), + "import_subscriptions": MessageLookupByLibrary.simpleMessage("导入订阅"), + "imported_snapshot_data_users_so_far": m7, + "include_replies": MessageLookupByLibrary.simpleMessage("包括回复"), + "include_retweets": MessageLookupByLibrary.simpleMessage("包括转推"), + "joined": m8, + "language": MessageLookupByLibrary.simpleMessage("语言"), + "language_subtitle": MessageLookupByLibrary.simpleMessage("需要重启应用"), + "large": MessageLookupByLibrary.simpleMessage("大"), + "legacy_android_import": + MessageLookupByLibrary.simpleMessage("从旧的 Android 设备导入"), + "let_the_developers_know_if_something_is_broken": + MessageLookupByLibrary.simpleMessage("有问题请告诉开发者🐦"), + "licenses": MessageLookupByLibrary.simpleMessage("许可证"), + "light": MessageLookupByLibrary.simpleMessage("亮色主题"), + "live": MessageLookupByLibrary.simpleMessage("LIVE"), + "logging": MessageLookupByLibrary.simpleMessage("日志"), + "media": MessageLookupByLibrary.simpleMessage("媒体"), + "media_size": MessageLookupByLibrary.simpleMessage("媒体尺寸"), + "medium": MessageLookupByLibrary.simpleMessage("中"), + "missing_page": MessageLookupByLibrary.simpleMessage("缺失的页面"), + "mute_video_description": + MessageLookupByLibrary.simpleMessage("是否应默认将视频静音"), + "mute_videos": MessageLookupByLibrary.simpleMessage("将视频静音"), + "name": MessageLookupByLibrary.simpleMessage("取个名字"), + "newTrans": MessageLookupByLibrary.simpleMessage("新的"), + "next": MessageLookupByLibrary.simpleMessage("下一条"), + "no": MessageLookupByLibrary.simpleMessage("不"), + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage("没有返回任何数据,这不应该发生。如果可能,请反馈错误!"), + "no_results": MessageLookupByLibrary.simpleMessage("没有结果"), + "no_results_for": MessageLookupByLibrary.simpleMessage("搜索词无结果:"), + "no_subscriptions_try_searching_or_importing_some": + MessageLookupByLibrary.simpleMessage("没有订阅。尝试搜索或导入一些!"), + "not_set": MessageLookupByLibrary.simpleMessage("未设置"), + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": + MessageLookupByLibrary.simpleMessage("注:由于 Twitter 的限制,可能不会包含所有推文"), + "numberFormat_format_total_votes": m9, + "ok": MessageLookupByLibrary.simpleMessage("确定"), + "only_public_subscriptions_can_be_imported": + MessageLookupByLibrary.simpleMessage("只能从公开的个人资料页导入订阅"), + "oops_something_went_wrong": + MessageLookupByLibrary.simpleMessage("哎呀!出了点问题 🥲"), + "open_app_settings": MessageLookupByLibrary.simpleMessage("打开应用设置"), + "page_not_found": + MessageLookupByLibrary.simpleMessage("Twitter 说该页面不存在,但这可能不是真的"), + "permission_not_granted": + MessageLookupByLibrary.simpleMessage("未授予权限。 请在授权后重试!"), + "pick_a_color": MessageLookupByLibrary.simpleMessage("挑一种颜色吧!"), + "pick_an_icon": MessageLookupByLibrary.simpleMessage("挑选图标!"), + "pinned_tweet": MessageLookupByLibrary.simpleMessage("置顶推文"), + "playback_speed": MessageLookupByLibrary.simpleMessage("播放速度"), + "please_check_your_internet_connection_error_message": m10, + "please_enter_a_name": MessageLookupByLibrary.simpleMessage("请输入订阅组名称"), + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": + MessageLookupByLibrary.simpleMessage("请确保您要导入的数据位于此处,然后点击下方的导入按钮。"), + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": + MessageLookupByLibrary.simpleMessage( + "请注意,Quacker 用于导入订阅的方法受到 Twitter 严格的速率限制,因此如果您有很多关注账号,这可能会失败。"), + "possibly_sensitive": MessageLookupByLibrary.simpleMessage("潜在敏感"), + "possibly_sensitive_profile": MessageLookupByLibrary.simpleMessage( + "该个人资料可能包含潜在的敏感图像、语言或其他内容。是否仍要浏览?"), + "possibly_sensitive_tweet": + MessageLookupByLibrary.simpleMessage("该推文包含潜在的敏感内容。是否浏览?"), + "prefix": MessageLookupByLibrary.simpleMessage("字首"), + "private_profile": MessageLookupByLibrary.simpleMessage("个人简介"), + "released_under_the_mit_license": + MessageLookupByLibrary.simpleMessage("以 MIT 许可证发布"), + "replying_to": MessageLookupByLibrary.simpleMessage("回复"), + "report": MessageLookupByLibrary.simpleMessage("报告"), + "report_a_bug": MessageLookupByLibrary.simpleMessage("报告 Bug 🐞"), + "reporting_an_error": MessageLookupByLibrary.simpleMessage("发送错误报告"), + "reset_home_pages": MessageLookupByLibrary.simpleMessage("将页面重置为默认值"), + "retry": MessageLookupByLibrary.simpleMessage("重试"), + "save": MessageLookupByLibrary.simpleMessage("保存"), + "save_bandwidth_using_smaller_images": + MessageLookupByLibrary.simpleMessage("使用较小的图像以节省带宽"), + "saved": MessageLookupByLibrary.simpleMessage("书签"), + "saved_tweet_too_large": MessageLookupByLibrary.simpleMessage( + "无法显示这条已保存的推文,因其太大导致难以加载。请将它报告给开发者。"), + "search": MessageLookupByLibrary.simpleMessage("搜索"), + "search_term": MessageLookupByLibrary.simpleMessage("搜索词"), + "select": MessageLookupByLibrary.simpleMessage("选择"), + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": + MessageLookupByLibrary.simpleMessage("未来我们会支持导入单个账号到指定组!"), + "send": MessageLookupByLibrary.simpleMessage("发送"), + "share_base_url": MessageLookupByLibrary.simpleMessage("自定义分享 URL"), + "share_base_url_description": + MessageLookupByLibrary.simpleMessage("分享时使用自定义的基 URL"), + "share_tweet_content": MessageLookupByLibrary.simpleMessage("分享推特内容"), + "share_tweet_content_and_link": + MessageLookupByLibrary.simpleMessage("分享推文内容和链接"), + "share_tweet_link": MessageLookupByLibrary.simpleMessage("分享推特链接"), + "should_check_for_updates_description": + MessageLookupByLibrary.simpleMessage("Quacker 启动时检查更新"), + "should_check_for_updates_label": + MessageLookupByLibrary.simpleMessage("检查更新"), + "small": MessageLookupByLibrary.simpleMessage("小"), + "something_broke_in_fritter": + MessageLookupByLibrary.simpleMessage("Quacker 发生异常。"), + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": + MessageLookupByLibrary.simpleMessage( + "Quacker 刚刚出了点问题,并生成了错误报告。可将该报告发送给 Quacker 开发者以帮助解决问题。"), + "sorry_the_replied_tweet_could_not_be_found": + MessageLookupByLibrary.simpleMessage("对不起,无法找到回复的推文!"), + "subscribe": MessageLookupByLibrary.simpleMessage("订阅"), + "subscriptions": MessageLookupByLibrary.simpleMessage("订阅"), + "subtitles": MessageLookupByLibrary.simpleMessage("字幕"), + "successfully_saved_the_media": + MessageLookupByLibrary.simpleMessage("已保存媒体文件!"), + "system": MessageLookupByLibrary.simpleMessage("跟随系统"), + "tap_to_download_release_version": m11, + "tap_to_show_getMediaType_item_type": m12, + "thanks_for_helping_fritter": + MessageLookupByLibrary.simpleMessage("感谢您帮助 Quacker!💖"), + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": m13, + "the_github_issue": + MessageLookupByLibrary.simpleMessage("GitHub Issue (#143)"), + "the_tweet_did_not_contain_any_text_this_is_unexpected": + MessageLookupByLibrary.simpleMessage("该推文不包含任何文字"), + "theme": MessageLookupByLibrary.simpleMessage("主题"), + "theme_mode": MessageLookupByLibrary.simpleMessage("主题模式"), + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": + MessageLookupByLibrary.simpleMessage("没有返回的趋势。这是出乎意料的!如果可能,请反馈错误。"), + "this_group_contains_no_subscriptions": + MessageLookupByLibrary.simpleMessage("该组不包含任何订阅!"), + "this_took_too_long_to_load_please_check_your_network_connection": + MessageLookupByLibrary.simpleMessage("加载时间太长了。 检查您的网络连接!"), + "this_tweet_is_unavailable": + MessageLookupByLibrary.simpleMessage("此推文不可用。它可能已被删除。"), + "this_tweet_user_name_retweeted": m14, + "this_user_does_not_follow_anyone": + MessageLookupByLibrary.simpleMessage("该用户没有关注任何人!"), + "this_user_does_not_have_anyone_following_them": + MessageLookupByLibrary.simpleMessage("该用户无人关注!"), + "thread": MessageLookupByLibrary.simpleMessage("时间线"), + "thumbnail": MessageLookupByLibrary.simpleMessage("缩略图"), + "timed_out": MessageLookupByLibrary.simpleMessage("超时"), + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": + MessageLookupByLibrary.simpleMessage( + "要从现有的 Twitter 账号导入订阅,请在下方输入您的用户名。"), + "toggle_all": MessageLookupByLibrary.simpleMessage("全选"), + "trending": MessageLookupByLibrary.simpleMessage("趋势"), + "trends": MessageLookupByLibrary.simpleMessage("趋势"), + "true_black": MessageLookupByLibrary.simpleMessage("纯黑模式?"), + "tweets": MessageLookupByLibrary.simpleMessage("推文"), + "tweets_and_replies": MessageLookupByLibrary.simpleMessage("推文和回复"), + "tweets_number": m15, + "two_home_pages_required": + MessageLookupByLibrary.simpleMessage("你需要有至少 2 个主屏页面。"), + "unable_to_find_the_available_trend_locations": + MessageLookupByLibrary.simpleMessage("无法找到可用的趋势位置。"), + "unable_to_find_your_saved_tweets": + MessageLookupByLibrary.simpleMessage("无法找到您保存的推文。"), + "unable_to_import": MessageLookupByLibrary.simpleMessage("无法导入"), + "unable_to_load_home_pages": + MessageLookupByLibrary.simpleMessage("无法加载主页"), + "unable_to_load_subscription_groups": + MessageLookupByLibrary.simpleMessage("无法载入订阅组"), + "unable_to_load_the_group": + MessageLookupByLibrary.simpleMessage("无法加载该组"), + "unable_to_load_the_group_settings": + MessageLookupByLibrary.simpleMessage("无法加载订阅组的设置"), + "unable_to_load_the_list_of_follows": + MessageLookupByLibrary.simpleMessage("无法加载关注列表"), + "unable_to_load_the_next_page_of_follows": + MessageLookupByLibrary.simpleMessage("无法载入下一页关注列表"), + "unable_to_load_the_next_page_of_replies": + MessageLookupByLibrary.simpleMessage("无法载入下一页回复"), + "unable_to_load_the_next_page_of_tweets": + MessageLookupByLibrary.simpleMessage("无法载入下一页的推文"), + "unable_to_load_the_profile": + MessageLookupByLibrary.simpleMessage("无法载入个人资料"), + "unable_to_load_the_search_results": + MessageLookupByLibrary.simpleMessage("无法载入搜索结果。"), + "unable_to_load_the_trends_for_widget_place_name": m16, + "unable_to_load_the_tweet": + MessageLookupByLibrary.simpleMessage("无法载入这条推文"), + "unable_to_load_the_tweets": + MessageLookupByLibrary.simpleMessage("无法载入推文"), + "unable_to_load_the_tweets_for_the_feed": + MessageLookupByLibrary.simpleMessage("无法载入最新推文"), + "unable_to_refresh_the_subscriptions": + MessageLookupByLibrary.simpleMessage("无法刷新订阅"), + "unable_to_run_the_database_migrations": + MessageLookupByLibrary.simpleMessage("无法进行数据迁移"), + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": + m17, + "unable_to_stream_the_trend_location_preference": + MessageLookupByLibrary.simpleMessage("无法传输趋势位置首选项"), + "unknown": MessageLookupByLibrary.simpleMessage("未知"), + "unsave": MessageLookupByLibrary.simpleMessage("取消保存"), + "unsubscribe": MessageLookupByLibrary.simpleMessage("取消订阅"), + "unsupported_url": MessageLookupByLibrary.simpleMessage("不受支持的 URL"), + "update_to_release_version_through_your_fdroid_client": m18, + "updates": MessageLookupByLibrary.simpleMessage("更新"), + "use_true_black_for_the_dark_mode_theme": + MessageLookupByLibrary.simpleMessage("在暗色主题中使用纯黑"), + "user_not_found": MessageLookupByLibrary.simpleMessage("未找到用户"), + "username": MessageLookupByLibrary.simpleMessage("用户名"), + "version": MessageLookupByLibrary.simpleMessage("版本"), + "when_a_new_app_update_is_available": + MessageLookupByLibrary.simpleMessage("当有更新可用时"), + "whether_errors_should_be_reported_to_": + MessageLookupByLibrary.simpleMessage("是否向 发送错误?👀"), + "whether_to_hide_tweets_marked_as_sensitive": + MessageLookupByLibrary.simpleMessage("是否隐藏被标记为敏感的推文"), + "which_tab_is_shown_when_the_app_opens": + MessageLookupByLibrary.simpleMessage("打开应用时显示哪个页面"), + "would_you_like_to_enable_automatic_error_reporting": + MessageLookupByLibrary.simpleMessage("您希望自动发送错误报告吗?"), + "yes": MessageLookupByLibrary.simpleMessage("好"), + "yes_please": MessageLookupByLibrary.simpleMessage("是,请让我看"), + "you_have_not_saved_any_tweets_yet": + MessageLookupByLibrary.simpleMessage("您尚未保存任何推文!"), + "you_must_have_at_least_2_home_screen_pages": + MessageLookupByLibrary.simpleMessage("必须至少有 2 个主屏幕页面"), + "your_profile_must_be_public_otherwise_the_import_will_not_work": + MessageLookupByLibrary.simpleMessage("你的个人资料必须是公开的,否则无法导入"), + "your_report_will_be_sent_to_fritter__project": + MessageLookupByLibrary.simpleMessage( + "您的报告将被发送至 Quacker 的 项目,隐私详情可在下述位置找到:") + }; +} diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart new file mode 100644 index 00000000..ab1eec0e --- /dev/null +++ b/lib/generated/l10n.dart @@ -0,0 +1,2482 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'intl/messages_all.dart'; + +// ************************************************************************** +// Generator: Flutter Intl IDE plugin +// Made by Localizely +// ************************************************************************** + +// ignore_for_file: non_constant_identifier_names, lines_longer_than_80_chars +// ignore_for_file: join_return_with_assignment, prefer_final_in_for_each +// ignore_for_file: avoid_redundant_argument_values, avoid_escaping_inner_quotes + +class L10n { + L10n(); + + static L10n? _current; + + static L10n get current { + assert(_current != null, + 'No instance of L10n was loaded. Try to initialize the L10n delegate before accessing L10n.current.'); + return _current!; + } + + static const AppLocalizationDelegate delegate = AppLocalizationDelegate(); + + static Future load(Locale locale) { + final name = (locale.countryCode?.isEmpty ?? false) + ? locale.languageCode + : locale.toString(); + final localeName = Intl.canonicalizedLocale(name); + return initializeMessages(localeName).then((_) { + Intl.defaultLocale = localeName; + final instance = L10n(); + L10n._current = instance; + + return instance; + }); + } + + static L10n of(BuildContext context) { + final instance = L10n.maybeOf(context); + assert(instance != null, + 'No instance of L10n present in the widget tree. Did you add L10n.delegate in localizationsDelegates?'); + return instance!; + } + + static L10n? maybeOf(BuildContext context) { + return Localizations.of(context, L10n); + } + + /// `This group contains no subscriptions!` + String get this_group_contains_no_subscriptions { + return Intl.message( + 'This group contains no subscriptions!', + name: 'this_group_contains_no_subscriptions', + desc: '', + args: [], + ); + } + + /// `Couldn't find any tweets by this user!` + String get could_not_find_any_tweets_by_this_user { + return Intl.message( + 'Couldn\'t find any tweets by this user!', + name: 'could_not_find_any_tweets_by_this_user', + desc: '', + args: [], + ); + } + + /// `Unable to load the next page of replies` + String get unable_to_load_the_next_page_of_replies { + return Intl.message( + 'Unable to load the next page of replies', + name: 'unable_to_load_the_next_page_of_replies', + desc: '', + args: [], + ); + } + + /// `Unable to load the tweet` + String get unable_to_load_the_tweet { + return Intl.message( + 'Unable to load the tweet', + name: 'unable_to_load_the_tweet', + desc: '', + args: [], + ); + } + + /// `Unable to load subscription groups` + String get unable_to_load_subscription_groups { + return Intl.message( + 'Unable to load subscription groups', + name: 'unable_to_load_subscription_groups', + desc: '', + args: [], + ); + } + + /// `Add to group` + String get add_to_group { + return Intl.message( + 'Add to group', + name: 'add_to_group', + desc: '', + args: [], + ); + } + + /// `Select` + String get select { + return Intl.message( + 'Select', + name: 'select', + desc: '', + args: [], + ); + } + + /// `Unsubscribe` + String get unsubscribe { + return Intl.message( + 'Unsubscribe', + name: 'unsubscribe', + desc: '', + args: [], + ); + } + + /// `Subscribe` + String get subscribe { + return Intl.message( + 'Subscribe', + name: 'subscribe', + desc: '', + args: [], + ); + } + + /// `Reporting an error` + String get reporting_an_error { + return Intl.message( + 'Reporting an error', + name: 'reporting_an_error', + desc: '', + args: [], + ); + } + + /// `Something just went wrong in Quacker, and an error report has been generated. The report can be sent to the Quacker developers to help fix the problem.` + String + get something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated { + return Intl.message( + 'Something just went wrong in Quacker, and an error report has been generated. The report can be sent to the Quacker developers to help fix the problem.', + name: + 'something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated', + desc: '', + args: [], + ); + } + + /// `Would you like to enable automatic error reporting?` + String get would_you_like_to_enable_automatic_error_reporting { + return Intl.message( + 'Would you like to enable automatic error reporting?', + name: 'would_you_like_to_enable_automatic_error_reporting', + desc: '', + args: [], + ); + } + + /// `Your report will be sent to Quacker's project, and privacy details can be found at:` + String get your_report_will_be_sent_to_fritter__project { + return Intl.message( + 'Your report will be sent to Quacker\'s project, and privacy details can be found at:', + name: 'your_report_will_be_sent_to_fritter__project', + desc: '', + args: [], + ); + } + + /// `Unable to load the next page of tweets` + String get unable_to_load_the_next_page_of_tweets { + return Intl.message( + 'Unable to load the next page of tweets', + name: 'unable_to_load_the_next_page_of_tweets', + desc: '', + args: [], + ); + } + + /// `Unable to load the tweets for the feed` + String get unable_to_load_the_tweets_for_the_feed { + return Intl.message( + 'Unable to load the tweets for the feed', + name: 'unable_to_load_the_tweets_for_the_feed', + desc: '', + args: [], + ); + } + + /// `Couldn't find any tweets from the last 7 days!` + String get could_not_find_any_tweets_from_the_last_7_days { + return Intl.message( + 'Couldn\'t find any tweets from the last 7 days!', + name: 'could_not_find_any_tweets_from_the_last_7_days', + desc: '', + args: [], + ); + } + + /// `Unable to load the group` + String get unable_to_load_the_group { + return Intl.message( + 'Unable to load the group', + name: 'unable_to_load_the_group', + desc: '', + args: [], + ); + } + + /// `Unable to load the group settings` + String get unable_to_load_the_group_settings { + return Intl.message( + 'Unable to load the group settings', + name: 'unable_to_load_the_group_settings', + desc: '', + args: [], + ); + } + + /// `Filters` + String get filters { + return Intl.message( + 'Filters', + name: 'filters', + desc: '', + args: [], + ); + } + + /// `Note: Due to a Twitter limitation, not all tweets may be included` + String get note_due_to_a_twitter_limitation_not_all_tweets_may_be_included { + return Intl.message( + 'Note: Due to a Twitter limitation, not all tweets may be included', + name: 'note_due_to_a_twitter_limitation_not_all_tweets_may_be_included', + desc: '', + args: [], + ); + } + + /// `Include replies` + String get include_replies { + return Intl.message( + 'Include replies', + name: 'include_replies', + desc: '', + args: [], + ); + } + + /// `Include retweets` + String get include_retweets { + return Intl.message( + 'Include retweets', + name: 'include_retweets', + desc: '', + args: [], + ); + } + + /// `Unable to find your saved tweets.` + String get unable_to_find_your_saved_tweets { + return Intl.message( + 'Unable to find your saved tweets.', + name: 'unable_to_find_your_saved_tweets', + desc: '', + args: [], + ); + } + + /// `You haven't saved any tweets yet!` + String get you_have_not_saved_any_tweets_yet { + return Intl.message( + 'You haven\'t saved any tweets yet!', + name: 'you_have_not_saved_any_tweets_yet', + desc: '', + args: [], + ); + } + + /// `Unable to load the search results.` + String get unable_to_load_the_search_results { + return Intl.message( + 'Unable to load the search results.', + name: 'unable_to_load_the_search_results', + desc: '', + args: [], + ); + } + + /// `No results` + String get no_results { + return Intl.message( + 'No results', + name: 'no_results', + desc: '', + args: [], + ); + } + + /// `Feed` + String get feed { + return Intl.message( + 'Feed', + name: 'feed', + desc: '', + args: [], + ); + } + + /// `Subscriptions` + String get subscriptions { + return Intl.message( + 'Subscriptions', + name: 'subscriptions', + desc: '', + args: [], + ); + } + + /// `Trending` + String get trending { + return Intl.message( + 'Trending', + name: 'trending', + desc: '', + args: [], + ); + } + + /// `Saved` + String get saved { + return Intl.message( + 'Saved', + name: 'saved', + desc: '', + args: [], + ); + } + + /// `Unable to load the list of follows` + String get unable_to_load_the_list_of_follows { + return Intl.message( + 'Unable to load the list of follows', + name: 'unable_to_load_the_list_of_follows', + desc: '', + args: [], + ); + } + + /// `Unable to load the next page of follows` + String get unable_to_load_the_next_page_of_follows { + return Intl.message( + 'Unable to load the next page of follows', + name: 'unable_to_load_the_next_page_of_follows', + desc: '', + args: [], + ); + } + + /// `This user does not follow anyone!` + String get this_user_does_not_follow_anyone { + return Intl.message( + 'This user does not follow anyone!', + name: 'this_user_does_not_follow_anyone', + desc: '', + args: [], + ); + } + + /// `This user does not have anyone following them!` + String get this_user_does_not_have_anyone_following_them { + return Intl.message( + 'This user does not have anyone following them!', + name: 'this_user_does_not_have_anyone_following_them', + desc: '', + args: [], + ); + } + + /// `Unable to load the tweets` + String get unable_to_load_the_tweets { + return Intl.message( + 'Unable to load the tweets', + name: 'unable_to_load_the_tweets', + desc: '', + args: [], + ); + } + + /// `Unable to load the profile` + String get unable_to_load_the_profile { + return Intl.message( + 'Unable to load the profile', + name: 'unable_to_load_the_profile', + desc: '', + args: [], + ); + } + + /// `Tweets` + String get tweets { + return Intl.message( + 'Tweets', + name: 'tweets', + desc: '', + args: [], + ); + } + + /// `Tweets & Replies` + String get tweets_and_replies { + return Intl.message( + 'Tweets & Replies', + name: 'tweets_and_replies', + desc: '', + args: [], + ); + } + + /// `Media` + String get media { + return Intl.message( + 'Media', + name: 'media', + desc: '', + args: [], + ); + } + + /// `Following` + String get following { + return Intl.message( + 'Following', + name: 'following', + desc: '', + args: [], + ); + } + + /// `Followers` + String get followers { + return Intl.message( + 'Followers', + name: 'followers', + desc: '', + args: [], + ); + } + + /// `Joined {date}` + String joined(Object date) { + return Intl.message( + 'Joined $date', + name: 'joined', + desc: '', + args: [date], + ); + } + + /// `Export` + String get export { + return Intl.message( + 'Export', + name: 'export', + desc: '', + args: [], + ); + } + + /// `Data exported to {fullPath}` + String data_exported_to_fullPath(Object fullPath) { + return Intl.message( + 'Data exported to $fullPath', + name: 'data_exported_to_fullPath', + desc: '', + args: [fullPath], + ); + } + + /// `Data exported to {fileName}` + String data_exported_to_fileName(Object fileName) { + return Intl.message( + 'Data exported to $fileName', + name: 'data_exported_to_fileName', + desc: '', + args: [fileName], + ); + } + + /// `Export settings?` + String get export_settings { + return Intl.message( + 'Export settings?', + name: 'export_settings', + desc: '', + args: [], + ); + } + + /// `Export subscriptions?` + String get export_subscriptions { + return Intl.message( + 'Export subscriptions?', + name: 'export_subscriptions', + desc: '', + args: [], + ); + } + + /// `Export subscription groups?` + String get export_subscription_groups { + return Intl.message( + 'Export subscription groups?', + name: 'export_subscription_groups', + desc: '', + args: [], + ); + } + + /// `Export subscription group members?` + String get export_subscription_group_members { + return Intl.message( + 'Export subscription group members?', + name: 'export_subscription_group_members', + desc: '', + args: [], + ); + } + + /// `Export tweets?` + String get export_tweets { + return Intl.message( + 'Export tweets?', + name: 'export_tweets', + desc: '', + args: [], + ); + } + + /// `Data imported successfully` + String get data_imported_successfully { + return Intl.message( + 'Data imported successfully', + name: 'data_imported_successfully', + desc: '', + args: [], + ); + } + + /// `Cancel` + String get cancel { + return Intl.message( + 'Cancel', + name: 'cancel', + desc: '', + args: [], + ); + } + + /// `Thanks for helping Quacker! 💖` + String get thanks_for_helping_fritter { + return Intl.message( + 'Thanks for helping Quacker! 💖', + name: 'thanks_for_helping_fritter', + desc: '', + args: [], + ); + } + + /// `Send` + String get send { + return Intl.message( + 'Send', + name: 'send', + desc: '', + args: [], + ); + } + + /// `General` + String get general { + return Intl.message( + 'General', + name: 'general', + desc: '', + args: [], + ); + } + + /// `Default tab` + String get default_tab { + return Intl.message( + 'Default tab', + name: 'default_tab', + desc: '', + args: [], + ); + } + + /// `App Info` + String get app_info { + return Intl.message( + 'App Info', + name: 'app_info', + desc: '', + args: [], + ); + } + + /// `Which tab is shown when the app opens` + String get which_tab_is_shown_when_the_app_opens { + return Intl.message( + 'Which tab is shown when the app opens', + name: 'which_tab_is_shown_when_the_app_opens', + desc: '', + args: [], + ); + } + + /// `Media size` + String get media_size { + return Intl.message( + 'Media size', + name: 'media_size', + desc: '', + args: [], + ); + } + + /// `Save bandwidth with smaller images` + String get save_bandwidth_using_smaller_images { + return Intl.message( + 'Save bandwidth with smaller images', + name: 'save_bandwidth_using_smaller_images', + desc: '', + args: [], + ); + } + + /// `Disabled` + String get disabled { + return Intl.message( + 'Disabled', + name: 'disabled', + desc: '', + args: [], + ); + } + + /// `Thumbnail` + String get thumbnail { + return Intl.message( + 'Thumbnail', + name: 'thumbnail', + desc: '', + args: [], + ); + } + + /// `Small` + String get small { + return Intl.message( + 'Small', + name: 'small', + desc: '', + args: [], + ); + } + + /// `Medium` + String get medium { + return Intl.message( + 'Medium', + name: 'medium', + desc: '', + args: [], + ); + } + + /// `Large` + String get large { + return Intl.message( + 'Large', + name: 'large', + desc: '', + args: [], + ); + } + + /// `Theme` + String get theme { + return Intl.message( + 'Theme', + name: 'theme', + desc: '', + args: [], + ); + } + + /// `Theme Mode` + String get theme_mode { + return Intl.message( + 'Theme Mode', + name: 'theme_mode', + desc: '', + args: [], + ); + } + + /// `System` + String get system { + return Intl.message( + 'System', + name: 'system', + desc: '', + args: [], + ); + } + + /// `Light` + String get light { + return Intl.message( + 'Light', + name: 'light', + desc: '', + args: [], + ); + } + + /// `Dark` + String get dark { + return Intl.message( + 'Dark', + name: 'dark', + desc: '', + args: [], + ); + } + + /// `True Black?` + String get true_black { + return Intl.message( + 'True Black?', + name: 'true_black', + desc: '', + args: [], + ); + } + + /// `Use true black for the dark mode theme` + String get use_true_black_for_the_dark_mode_theme { + return Intl.message( + 'Use true black for the dark mode theme', + name: 'use_true_black_for_the_dark_mode_theme', + desc: '', + args: [], + ); + } + + /// `Data` + String get data { + return Intl.message( + 'Data', + name: 'data', + desc: '', + args: [], + ); + } + + /// `Import` + String get import { + return Intl.message( + 'Import', + name: 'import', + desc: '', + args: [], + ); + } + + /// `Import data from another device` + String get import_data_from_another_device { + return Intl.message( + 'Import data from another device', + name: 'import_data_from_another_device', + desc: '', + args: [], + ); + } + + /// `Legacy Android Import` + String get legacy_android_import { + return Intl.message( + 'Legacy Android Import', + name: 'legacy_android_import', + desc: '', + args: [], + ); + } + + /// `The file does not exist. Please ensure it is located at {filePath}` + String the_file_does_not_exist_please_ensure_it_is_located_at_file_path( + Object filePath) { + return Intl.message( + 'The file does not exist. Please ensure it is located at $filePath', + name: 'the_file_does_not_exist_please_ensure_it_is_located_at_file_path', + desc: '', + args: [filePath], + ); + } + + /// `prefix` + String get prefix { + return Intl.message( + 'prefix', + name: 'prefix', + desc: '', + args: [], + ); + } + + /// `Please make sure the data you wish to import is located there, then press the import button below.` + String + get please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below { + return Intl.message( + 'Please make sure the data you wish to import is located there, then press the import button below.', + name: + 'please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below', + desc: '', + args: [], + ); + } + + /// `Export your data` + String get export_your_data { + return Intl.message( + 'Export your data', + name: 'export_your_data', + desc: '', + args: [], + ); + } + + /// `Logging` + String get logging { + return Intl.message( + 'Logging', + name: 'logging', + desc: '', + args: [], + ); + } + + /// `Enable ?` + String get enable_ { + return Intl.message( + 'Enable ?', + name: 'enable_', + desc: '', + args: [], + ); + } + + /// `Activate non-confirmation bias mode` + String get activate_non_confirmation_bias_mode_label { + return Intl.message( + 'Activate non-confirmation bias mode', + name: 'activate_non_confirmation_bias_mode_label', + desc: '', + args: [], + ); + } + + /// `Hide tweet authors. Avoid confirmation bias based on authoritative arguments.` + String get activate_non_confirmation_bias_mode_description { + return Intl.message( + 'Hide tweet authors. Avoid confirmation bias based on authoritative arguments.', + name: 'activate_non_confirmation_bias_mode_description', + desc: '', + args: [], + ); + } + + /// `Whether errors should be reported to ` + String get whether_errors_should_be_reported_to_ { + return Intl.message( + 'Whether errors should be reported to ', + name: 'whether_errors_should_be_reported_to_', + desc: '', + args: [], + ); + } + + /// `About` + String get about { + return Intl.message( + 'About', + name: 'about', + desc: '', + args: [], + ); + } + + /// `Version` + String get version { + return Intl.message( + 'Version', + name: 'version', + desc: '', + args: [], + ); + } + + /// `Copied version to clipboard` + String get copied_version_to_clipboard { + return Intl.message( + 'Copied version to clipboard', + name: 'copied_version_to_clipboard', + desc: '', + args: [], + ); + } + + /// `Contribute` + String get contribute { + return Intl.message( + 'Contribute', + name: 'contribute', + desc: '', + args: [], + ); + } + + /// `Help make Quacker even better` + String get help_make_fritter_even_better { + return Intl.message( + 'Help make Quacker even better', + name: 'help_make_fritter_even_better', + desc: '', + args: [], + ); + } + + /// `Report a bug` + String get report_a_bug { + return Intl.message( + 'Report a bug', + name: 'report_a_bug', + desc: '', + args: [], + ); + } + + /// `Let the developers know if something's broken` + String get let_the_developers_know_if_something_is_broken { + return Intl.message( + 'Let the developers know if something\'s broken', + name: 'let_the_developers_know_if_something_is_broken', + desc: '', + args: [], + ); + } + + /// `Donate` + String get donate { + return Intl.message( + 'Donate', + name: 'donate', + desc: '', + args: [], + ); + } + + /// `Help support Quacker's future` + String get help_support_fritters_future { + return Intl.message( + 'Help support Quacker\'s future', + name: 'help_support_fritters_future', + desc: '', + args: [], + ); + } + + /// `Copied address to clipboard` + String get copied_address_to_clipboard { + return Intl.message( + 'Copied address to clipboard', + name: 'copied_address_to_clipboard', + desc: '', + args: [], + ); + } + + /// `Licenses` + String get licenses { + return Intl.message( + 'Licenses', + name: 'licenses', + desc: '', + args: [], + ); + } + + /// `All the great software used by Quacker` + String get all_the_great_software_used_by_fritter { + return Intl.message( + 'All the great software used by Quacker', + name: 'all_the_great_software_used_by_fritter', + desc: '', + args: [], + ); + } + + /// `Quacker` + String get fritter { + return Intl.message( + 'Quacker', + name: 'fritter', + desc: '', + args: [], + ); + } + + /// `Released under the MIT License` + String get released_under_the_mit_license { + return Intl.message( + 'Released under the MIT License', + name: 'released_under_the_mit_license', + desc: '', + args: [], + ); + } + + /// `All` + String get all { + return Intl.message( + 'All', + name: 'all', + desc: '', + args: [], + ); + } + + /// `New` + String get newTrans { + return Intl.message( + 'New', + name: 'newTrans', + desc: '', + args: [], + ); + } + + /// `No` + String get no { + return Intl.message( + 'No', + name: 'no', + desc: '', + args: [], + ); + } + + /// `Yes` + String get yes { + return Intl.message( + 'Yes', + name: 'yes', + desc: '', + args: [], + ); + } + + /// `Yes, please` + String get yes_please { + return Intl.message( + 'Yes, please', + name: 'yes_please', + desc: '', + args: [], + ); + } + + /// `Are you sure?` + String get are_you_sure { + return Intl.message( + 'Are you sure?', + name: 'are_you_sure', + desc: '', + args: [], + ); + } + + /// `Are you sure you want to delete the subscription group {name}?` + String are_you_sure_you_want_to_delete_the_subscription_group_name_of_group( + Object name) { + return Intl.message( + 'Are you sure you want to delete the subscription group $name?', + name: + 'are_you_sure_you_want_to_delete_the_subscription_group_name_of_group', + desc: '', + args: [name], + ); + } + + /// `Toggle All` + String get toggle_all { + return Intl.message( + 'Toggle All', + name: 'toggle_all', + desc: '', + args: [], + ); + } + + /// `Delete` + String get delete { + return Intl.message( + 'Delete', + name: 'delete', + desc: '', + args: [], + ); + } + + /// `OK` + String get ok { + return Intl.message( + 'OK', + name: 'ok', + desc: '', + args: [], + ); + } + + /// `Name` + String get name { + return Intl.message( + 'Name', + name: 'name', + desc: '', + args: [], + ); + } + + /// `Please enter a name` + String get please_enter_a_name { + return Intl.message( + 'Please enter a name', + name: 'please_enter_a_name', + desc: '', + args: [], + ); + } + + /// `Pick a color!` + String get pick_a_color { + return Intl.message( + 'Pick a color!', + name: 'pick_a_color', + desc: '', + args: [], + ); + } + + /// `Pick an icon!` + String get pick_an_icon { + return Intl.message( + 'Pick an icon!', + name: 'pick_an_icon', + desc: '', + args: [], + ); + } + + /// `Search` + String get search { + return Intl.message( + 'Search', + name: 'search', + desc: '', + args: [], + ); + } + + /// `No results for:` + String get no_results_for { + return Intl.message( + 'No results for:', + name: 'no_results_for', + desc: '', + args: [], + ); + } + + /// `Close` + String get close { + return Intl.message( + 'Close', + name: 'close', + desc: '', + args: [], + ); + } + + /// `Import subscriptions` + String get import_subscriptions { + return Intl.message( + 'Import subscriptions', + name: 'import_subscriptions', + desc: '', + args: [], + ); + } + + /// `To import subscriptions from an existing Twitter account, enter your username below.` + String + get to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below { + return Intl.message( + 'To import subscriptions from an existing Twitter account, enter your username below.', + name: + 'to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below', + desc: '', + args: [], + ); + } + + /// `Please note that the method Quacker uses to import subscriptions is heavily rate-limited by Twitter, so this may fail if you have a lot of followed accounts.` + String + get please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts { + return Intl.message( + 'Please note that the method Quacker uses to import subscriptions is heavily rate-limited by Twitter, so this may fail if you have a lot of followed accounts.', + name: + 'please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts', + desc: '', + args: [], + ); + } + + /// `If you have any feedback on this feature, please leave it on` + String get if_you_have_any_feedback_on_this_feature_please_leave_it_on { + return Intl.message( + 'If you have any feedback on this feature, please leave it on', + name: 'if_you_have_any_feedback_on_this_feature_please_leave_it_on', + desc: '', + args: [], + ); + } + + /// `the GitHub issue (#143)` + String get the_github_issue { + return Intl.message( + 'the GitHub issue (#143)', + name: 'the_github_issue', + desc: '', + args: [], + ); + } + + /// `Selecting individual accounts to import, and assigning groups are both planned for the future already!` + String + get selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already { + return Intl.message( + 'Selecting individual accounts to import, and assigning groups are both planned for the future already!', + name: + 'selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already', + desc: '', + args: [], + ); + } + + /// `Enter your Twitter username` + String get enter_your_twitter_username { + return Intl.message( + 'Enter your Twitter username', + name: 'enter_your_twitter_username', + desc: '', + args: [], + ); + } + + /// `Your profile must be public, otherwise the import will not work` + String get your_profile_must_be_public_otherwise_the_import_will_not_work { + return Intl.message( + 'Your profile must be public, otherwise the import will not work', + name: 'your_profile_must_be_public_otherwise_the_import_will_not_work', + desc: '', + args: [], + ); + } + + /// `Username` + String get username { + return Intl.message( + 'Username', + name: 'username', + desc: '', + args: [], + ); + } + + /// `Unable to import` + String get unable_to_import { + return Intl.message( + 'Unable to import', + name: 'unable_to_import', + desc: '', + args: [], + ); + } + + /// `{snapshotData} users imported so far` + String imported_snapshot_data_users_so_far(Object snapshotData) { + return Intl.message( + '$snapshotData users imported so far', + name: 'imported_snapshot_data_users_so_far', + desc: '', + args: [snapshotData], + ); + } + + /// `Finished with {snapshotData} users` + String finished_with_snapshotData_users(Object snapshotData) { + return Intl.message( + 'Finished with $snapshotData users', + name: 'finished_with_snapshotData_users', + desc: '', + args: [snapshotData], + ); + } + + /// `No subscriptions. Try searching or importing some!` + String get no_subscriptions_try_searching_or_importing_some { + return Intl.message( + 'No subscriptions. Try searching or importing some!', + name: 'no_subscriptions_try_searching_or_importing_some', + desc: '', + args: [], + ); + } + + /// `Import from Twitter` + String get import_from_twitter { + return Intl.message( + 'Import from Twitter', + name: 'import_from_twitter', + desc: '', + args: [], + ); + } + + /// `Unable to refresh the subscriptions` + String get unable_to_refresh_the_subscriptions { + return Intl.message( + 'Unable to refresh the subscriptions', + name: 'unable_to_refresh_the_subscriptions', + desc: '', + args: [], + ); + } + + /// `Groups` + String get groups { + return Intl.message( + 'Groups', + name: 'groups', + desc: '', + args: [], + ); + } + + /// `Date Created` + String get date_created { + return Intl.message( + 'Date Created', + name: 'date_created', + desc: '', + args: [], + ); + } + + /// `Date Subscribed` + String get date_subscribed { + return Intl.message( + 'Date Subscribed', + name: 'date_subscribed', + desc: '', + args: [], + ); + } + + /// `Unable to load the trends for {widgetPlaceName}` + String unable_to_load_the_trends_for_widget_place_name( + Object widgetPlaceName) { + return Intl.message( + 'Unable to load the trends for $widgetPlaceName', + name: 'unable_to_load_the_trends_for_widget_place_name', + desc: '', + args: [widgetPlaceName], + ); + } + + /// `There were no trends returned. This is unexpected! Please report as a bug, if possible.` + String + get there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible { + return Intl.message( + 'There were no trends returned. This is unexpected! Please report as a bug, if possible.', + name: + 'there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible', + desc: '', + args: [], + ); + } + + /// `Unable to find the available trend locations.` + String get unable_to_find_the_available_trend_locations { + return Intl.message( + 'Unable to find the available trend locations.', + name: 'unable_to_find_the_available_trend_locations', + desc: '', + args: [], + ); + } + + /// `Country` + String get country { + return Intl.message( + 'Country', + name: 'country', + desc: '', + args: [], + ); + } + + /// `Unable to stream the trend location preference` + String get unable_to_stream_the_trend_location_preference { + return Intl.message( + 'Unable to stream the trend location preference', + name: 'unable_to_stream_the_trend_location_preference', + desc: '', + args: [], + ); + } + + /// `Trends` + String get trends { + return Intl.message( + 'Trends', + name: 'trends', + desc: '', + args: [], + ); + } + + /// `{num, plural, zero{no tweets} one{one tweet} two{two tweets} few{{numFormatted} tweets} many{{numFormatted} tweet} other{{numFormatted} tweets}}` + String tweets_number(num num, Object numFormatted) { + return Intl.plural( + num, + zero: 'no tweets', + one: 'one tweet', + two: 'two tweets', + few: '$numFormatted tweets', + many: '$numFormatted tweet', + other: '$numFormatted tweets', + name: 'tweets_number', + desc: '', + args: [num, numFormatted], + ); + } + + /// `Ended {timeagoFormat}` + String ended_timeago_format_endsAt_allowFromNow_true(Object timeagoFormat) { + return Intl.message( + 'Ended $timeagoFormat', + name: 'ended_timeago_format_endsAt_allowFromNow_true', + desc: '', + args: [timeagoFormat], + ); + } + + /// `Ends {timeagoFormat}` + String ends_timeago_format_endsAt_allowFromNow_true(Object timeagoFormat) { + return Intl.message( + 'Ends $timeagoFormat', + name: 'ends_timeago_format_endsAt_allowFromNow_true', + desc: '', + args: [timeagoFormat], + ); + } + + /// `{num, plural, zero{No votes} one{One vote} two{Two votes} few{{numFormatted} votes} many{{numFormatted} vote} other{{numFormatted} votes}}` + String numberFormat_format_total_votes(num num, Object numFormatted) { + return Intl.plural( + num, + zero: 'No votes', + one: 'One vote', + two: 'Two votes', + few: '$numFormatted votes', + many: '$numFormatted vote', + other: '$numFormatted votes', + name: 'numberFormat_format_total_votes', + desc: '', + args: [num, numFormatted], + ); + } + + /// `Tap to show {getMediaType}` + String tap_to_show_getMediaType_item_type(Object getMediaType) { + return Intl.message( + 'Tap to show $getMediaType', + name: 'tap_to_show_getMediaType_item_type', + desc: '', + args: [getMediaType], + ); + } + + /// `Unable to save the media. Twitter returned a status of {responseStatusCode}` + String + unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode( + Object responseStatusCode) { + return Intl.message( + 'Unable to save the media. Twitter returned a status of $responseStatusCode', + name: + 'unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode', + desc: '', + args: [responseStatusCode], + ); + } + + /// `Downloading media...` + String get downloading_media { + return Intl.message( + 'Downloading media...', + name: 'downloading_media', + desc: '', + args: [], + ); + } + + /// `Unable to download. This media may only be available as a stream, which Quacker cannot yet download.` + String get download_media_no_url { + return Intl.message( + 'Unable to download. This media may only be available as a stream, which Quacker cannot yet download.', + name: 'download_media_no_url', + desc: '', + args: [], + ); + } + + /// `Saved the media!` + String get successfully_saved_the_media { + return Intl.message( + 'Saved the media!', + name: 'successfully_saved_the_media', + desc: '', + args: [], + ); + } + + /// `Unknown` + String get unknown { + return Intl.message( + 'Unknown', + name: 'unknown', + desc: '', + args: [], + ); + } + + /// `Playback speed` + String get playback_speed { + return Intl.message( + 'Playback speed', + name: 'playback_speed', + desc: '', + args: [], + ); + } + + /// `Subtitles` + String get subtitles { + return Intl.message( + 'Subtitles', + name: 'subtitles', + desc: '', + args: [], + ); + } + + /// `LIVE` + String get live { + return Intl.message( + 'LIVE', + name: 'live', + desc: '', + args: [], + ); + } + + /// `Download` + String get download { + return Intl.message( + 'Download', + name: 'download', + desc: '', + args: [], + ); + } + + /// `{thisTweetUserName} retweeted {timeAgo}` + String this_tweet_user_name_retweeted( + Object thisTweetUserName, Object timeAgo) { + return Intl.message( + '$thisTweetUserName retweeted $timeAgo', + name: 'this_tweet_user_name_retweeted', + desc: '', + args: [thisTweetUserName, timeAgo], + ); + } + + /// `Sorry, the replied tweet could not be found!` + String get sorry_the_replied_tweet_could_not_be_found { + return Intl.message( + 'Sorry, the replied tweet could not be found!', + name: 'sorry_the_replied_tweet_could_not_be_found', + desc: '', + args: [], + ); + } + + /// `Replying to` + String get replying_to { + return Intl.message( + 'Replying to', + name: 'replying_to', + desc: '', + args: [], + ); + } + + /// `The tweet did not contain any text. This is unexpected` + String get the_tweet_did_not_contain_any_text_this_is_unexpected { + return Intl.message( + 'The tweet did not contain any text. This is unexpected', + name: 'the_tweet_did_not_contain_any_text_this_is_unexpected', + desc: '', + args: [], + ); + } + + /// `This tweet is unavailable. It was probably deleted.` + String get this_tweet_is_unavailable { + return Intl.message( + 'This tweet is unavailable. It was probably deleted.', + name: 'this_tweet_is_unavailable', + desc: '', + args: [], + ); + } + + /// `Pinned tweet` + String get pinned_tweet { + return Intl.message( + 'Pinned tweet', + name: 'pinned_tweet', + desc: '', + args: [], + ); + } + + /// `Thread` + String get thread { + return Intl.message( + 'Thread', + name: 'thread', + desc: '', + args: [], + ); + } + + /// `Unsave` + String get unsave { + return Intl.message( + 'Unsave', + name: 'unsave', + desc: '', + args: [], + ); + } + + /// `Save` + String get save { + return Intl.message( + 'Save', + name: 'save', + desc: '', + args: [], + ); + } + + /// `Share tweet content` + String get share_tweet_content { + return Intl.message( + 'Share tweet content', + name: 'share_tweet_content', + desc: '', + args: [], + ); + } + + /// `Share tweet link` + String get share_tweet_link { + return Intl.message( + 'Share tweet link', + name: 'share_tweet_link', + desc: '', + args: [], + ); + } + + /// `Share tweet content and link` + String get share_tweet_content_and_link { + return Intl.message( + 'Share tweet content and link', + name: 'share_tweet_content_and_link', + desc: '', + args: [], + ); + } + + /// `Private profile` + String get private_profile { + return Intl.message( + 'Private profile', + name: 'private_profile', + desc: '', + args: [], + ); + } + + /// `Twitter says the page does not exist, but that may not be true` + String get page_not_found { + return Intl.message( + 'Twitter says the page does not exist, but that may not be true', + name: 'page_not_found', + desc: '', + args: [], + ); + } + + /// `Twitter says access to this is forbidden` + String get forbidden { + return Intl.message( + 'Twitter says access to this is forbidden', + name: 'forbidden', + desc: '', + args: [], + ); + } + + /// `Twitter has invalidated our access token. Please try re-opening Quacker!` + String get bad_guest_token { + return Intl.message( + 'Twitter has invalidated our access token. Please try re-opening Quacker!', + name: 'bad_guest_token', + desc: '', + args: [], + ); + } + + /// `User not found` + String get user_not_found { + return Intl.message( + 'User not found', + name: 'user_not_found', + desc: '', + args: [], + ); + } + + /// `Account suspended` + String get account_suspended { + return Intl.message( + 'Account suspended', + name: 'account_suspended', + desc: '', + args: [], + ); + } + + /// `Catastrophic failure` + String get catastrophic_failure { + return Intl.message( + 'Catastrophic failure', + name: 'catastrophic_failure', + desc: '', + args: [], + ); + } + + /// `Back` + String get back { + return Intl.message( + 'Back', + name: 'back', + desc: '', + args: [], + ); + } + + /// `Next` + String get next { + return Intl.message( + 'Next', + name: 'next', + desc: '', + args: [], + ); + } + + /// `Finish` + String get finish { + return Intl.message( + 'Finish', + name: 'finish', + desc: '', + args: [], + ); + } + + /// `Retry` + String get retry { + return Intl.message( + 'Retry', + name: 'retry', + desc: '', + args: [], + ); + } + + /// `Could not contact Twitter` + String get could_not_contact_twitter { + return Intl.message( + 'Could not contact Twitter', + name: 'could_not_contact_twitter', + desc: '', + args: [], + ); + } + + /// `Please check your Internet connection.\n\n{errorMessage}` + String please_check_your_internet_connection_error_message( + Object errorMessage) { + return Intl.message( + 'Please check your Internet connection.\n\n$errorMessage', + name: 'please_check_your_internet_connection_error_message', + desc: '', + args: [errorMessage], + ); + } + + /// `Timed out` + String get timed_out { + return Intl.message( + 'Timed out', + name: 'timed_out', + desc: '', + args: [], + ); + } + + /// `This took too long to load. Please check your network connection!` + String get this_took_too_long_to_load_please_check_your_network_connection { + return Intl.message( + 'This took too long to load. Please check your network connection!', + name: 'this_took_too_long_to_load_please_check_your_network_connection', + desc: '', + args: [], + ); + } + + /// `Oops! Something went wrong 🥲` + String get oops_something_went_wrong { + return Intl.message( + 'Oops! Something went wrong 🥲', + name: 'oops_something_went_wrong', + desc: '', + args: [], + ); + } + + /// `Report` + String get report { + return Intl.message( + 'Report', + name: 'report', + desc: '', + args: [], + ); + } + + /// `No data was returned, which should never happen. Please report a bug, if possible!` + String + get no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible { + return Intl.message( + 'No data was returned, which should never happen. Please report a bug, if possible!', + name: + 'no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible', + desc: '', + args: [], + ); + } + + /// `Updates` + String get updates { + return Intl.message( + 'Updates', + name: 'updates', + desc: '', + args: [], + ); + } + + /// `When a new app update is available` + String get when_a_new_app_update_is_available { + return Intl.message( + 'When a new app update is available', + name: 'when_a_new_app_update_is_available', + desc: '', + args: [], + ); + } + + /// `An update for Quacker is available! 🚀` + String get an_update_for_fritter_is_available { + return Intl.message( + 'An update for Quacker is available! 🚀', + name: 'an_update_for_fritter_is_available', + desc: '', + args: [], + ); + } + + /// `Tap to download {releaseVersion}` + String tap_to_download_release_version(Object releaseVersion) { + return Intl.message( + 'Tap to download $releaseVersion', + name: 'tap_to_download_release_version', + desc: '', + args: [releaseVersion], + ); + } + + /// `Update to {releaseVersion} through your F-Droid client` + String update_to_release_version_through_your_fdroid_client( + Object releaseVersion) { + return Intl.message( + 'Update to $releaseVersion through your F-Droid client', + name: 'update_to_release_version_through_your_fdroid_client', + desc: '', + args: [releaseVersion], + ); + } + + /// `Quacker blue` + String get fritter_blue { + return Intl.message( + 'Quacker blue', + name: 'fritter_blue', + desc: '', + args: [], + ); + } + + /// `Blue theme based on the Twitter color scheme` + String get blue_theme_based_on_the_twitter_color_scheme { + return Intl.message( + 'Blue theme based on the Twitter color scheme', + name: 'blue_theme_based_on_the_twitter_color_scheme', + desc: '', + args: [], + ); + } + + /// `Something broke in Quacker.` + String get something_broke_in_fritter { + return Intl.message( + 'Something broke in Quacker.', + name: 'something_broke_in_fritter', + desc: '', + args: [], + ); + } + + /// `Unable to run the database migrations` + String get unable_to_run_the_database_migrations { + return Intl.message( + 'Unable to run the database migrations', + name: 'unable_to_run_the_database_migrations', + desc: '', + args: [], + ); + } + + /// `Check for updates` + String get should_check_for_updates_label { + return Intl.message( + 'Check for updates', + name: 'should_check_for_updates_label', + desc: '', + args: [], + ); + } + + /// `Check for updates when Quacker starts` + String get should_check_for_updates_description { + return Intl.message( + 'Check for updates when Quacker starts', + name: 'should_check_for_updates_description', + desc: '', + args: [], + ); + } + + /// `Download handling` + String get download_handling { + return Intl.message( + 'Download handling', + name: 'download_handling', + desc: '', + args: [], + ); + } + + /// `How downloading should work` + String get download_handling_description { + return Intl.message( + 'How downloading should work', + name: 'download_handling_description', + desc: '', + args: [], + ); + } + + /// `Always ask` + String get download_handling_type_ask { + return Intl.message( + 'Always ask', + name: 'download_handling_type_ask', + desc: '', + args: [], + ); + } + + /// `Save to directory` + String get download_handling_type_directory { + return Intl.message( + 'Save to directory', + name: 'download_handling_type_directory', + desc: '', + args: [], + ); + } + + /// `Download path` + String get download_path { + return Intl.message( + 'Download path', + name: 'download_path', + desc: '', + args: [], + ); + } + + /// `Permission not granted. Please try again after granting!` + String get permission_not_granted { + return Intl.message( + 'Permission not granted. Please try again after granting!', + name: 'permission_not_granted', + desc: '', + args: [], + ); + } + + /// `Open app settings` + String get open_app_settings { + return Intl.message( + 'Open app settings', + name: 'open_app_settings', + desc: '', + args: [], + ); + } + + /// `Open in browser` + String get open_in_browser { + return Intl.message( + 'Open in browser', + name: 'open_in_browser', + desc: '', + args: [], + ); + } + + /// `Choose` + String get choose { + return Intl.message( + 'Choose', + name: 'choose', + desc: '', + args: [], + ); + } + + /// `Not set` + String get not_set { + return Intl.message( + 'Not set', + name: 'not_set', + desc: '', + args: [], + ); + } + + /// `Language` + String get language { + return Intl.message( + 'Language', + name: 'language', + desc: '', + args: [], + ); + } + + /// `Requires a restart` + String get language_subtitle { + return Intl.message( + 'Requires a restart', + name: 'language_subtitle', + desc: '', + args: [], + ); + } + + /// `Hide sensitive tweets` + String get hide_sensitive_tweets { + return Intl.message( + 'Hide sensitive tweets', + name: 'hide_sensitive_tweets', + desc: '', + args: [], + ); + } + + /// `Whether to hide tweets marked as sensitive` + String get whether_to_hide_tweets_marked_as_sensitive { + return Intl.message( + 'Whether to hide tweets marked as sensitive', + name: 'whether_to_hide_tweets_marked_as_sensitive', + desc: '', + args: [], + ); + } + + /// `Disable screenshots` + String get disable_screenshots { + return Intl.message( + 'Disable screenshots', + name: 'disable_screenshots', + desc: '', + args: [], + ); + } + + /// `Prevent screenshots from being taken. This may not work on all devices.` + String get disable_screenshots_hint { + return Intl.message( + 'Prevent screenshots from being taken. This may not work on all devices.', + name: 'disable_screenshots_hint', + desc: '', + args: [], + ); + } + + /// `Potentially sensitive` + String get possibly_sensitive { + return Intl.message( + 'Potentially sensitive', + name: 'possibly_sensitive', + desc: '', + args: [], + ); + } + + /// `This tweet contains potentially sensitive content. Would you like to view it?` + String get possibly_sensitive_tweet { + return Intl.message( + 'This tweet contains potentially sensitive content. Would you like to view it?', + name: 'possibly_sensitive_tweet', + desc: '', + args: [], + ); + } + + /// `This profile may include potentially sensitive images, language, or other content. Do you still want to view it?` + String get possibly_sensitive_profile { + return Intl.message( + 'This profile may include potentially sensitive images, language, or other content. Do you still want to view it?', + name: 'possibly_sensitive_profile', + desc: '', + args: [], + ); + } + + /// `Home` + String get home { + return Intl.message( + 'Home', + name: 'home', + desc: '', + args: [], + ); + } + + /// `Unable to load your home pages` + String get unable_to_load_home_pages { + return Intl.message( + 'Unable to load your home pages', + name: 'unable_to_load_home_pages', + desc: '', + args: [], + ); + } + + /// `Reset pages to default` + String get reset_home_pages { + return Intl.message( + 'Reset pages to default', + name: 'reset_home_pages', + desc: '', + args: [], + ); + } + + /// `You must have at least 2 home screen pages` + String get you_must_have_at_least_2_home_screen_pages { + return Intl.message( + 'You must have at least 2 home screen pages', + name: 'you_must_have_at_least_2_home_screen_pages', + desc: '', + args: [], + ); + } + + /// `{name}` + String group_name(Object name) { + return Intl.message( + '$name', + name: 'group_name', + desc: '', + args: [name], + ); + } + + /// `Are you sure you want to close Quacker?` + String get confirm_close_fritter { + return Intl.message( + 'Are you sure you want to close Quacker?', + name: 'confirm_close_fritter', + desc: '', + args: [], + ); + } + + /// `Search term` + String get search_term { + return Intl.message( + 'Search term', + name: 'search_term', + desc: '', + args: [], + ); + } + + /// `Subscriptions can only be imported from public profiles` + String get only_public_subscriptions_can_be_imported { + return Intl.message( + 'Subscriptions can only be imported from public profiles', + name: 'only_public_subscriptions_can_be_imported', + desc: '', + args: [], + ); + } + + /// `Unsupported URL` + String get unsupported_url { + return Intl.message( + 'Unsupported URL', + name: 'unsupported_url', + desc: '', + args: [], + ); + } + + /// `This saved tweet could not be displayed, as it's too big to load. Please report it to the developers.` + String get saved_tweet_too_large { + return Intl.message( + 'This saved tweet could not be displayed, as it\'s too big to load. Please report it to the developers.', + name: 'saved_tweet_too_large', + desc: '', + args: [], + ); + } + + /// `User` + String get generic_username { + return Intl.message( + 'User', + name: 'generic_username', + desc: '', + args: [], + ); + } + + /// `Missing page` + String get missing_page { + return Intl.message( + 'Missing page', + name: 'missing_page', + desc: '', + args: [], + ); + } + + /// `You need to have at least 2 home screen pages.` + String get two_home_pages_required { + return Intl.message( + 'You need to have at least 2 home screen pages.', + name: 'two_home_pages_required', + desc: '', + args: [], + ); + } + + /// `Choose pages` + String get choose_pages { + return Intl.message( + 'Choose pages', + name: 'choose_pages', + desc: '', + args: [], + ); + } + + /// `Mute videos` + String get mute_videos { + return Intl.message( + 'Mute videos', + name: 'mute_videos', + desc: '', + args: [], + ); + } + + /// `Whether videos should be muted by default` + String get mute_video_description { + return Intl.message( + 'Whether videos should be muted by default', + name: 'mute_video_description', + desc: '', + args: [], + ); + } + + /// `Custom share URL` + String get share_base_url { + return Intl.message( + 'Custom share URL', + name: 'share_base_url', + desc: '', + args: [], + ); + } + + /// `Use a custom base URL when sharing` + String get share_base_url_description { + return Intl.message( + 'Use a custom base URL when sharing', + name: 'share_base_url_description', + desc: '', + args: [], + ); + } + + /// `This functionality is no longer supported by Twitter!` + String get functionality_unsupported { + return Intl.message( + 'This functionality is no longer supported by Twitter!', + name: 'functionality_unsupported', + desc: '', + args: [], + ); + } + + /// `Add subscriptions` + String get add_subscriptions { + return Intl.message( + 'Add subscriptions', + name: 'add_subscriptions', + desc: '', + args: [], + ); + } +} + +class AppLocalizationDelegate extends LocalizationsDelegate { + const AppLocalizationDelegate(); + + List get supportedLocales { + return const [ + Locale.fromSubtags(languageCode: 'en'), + Locale.fromSubtags(languageCode: 'ar'), + Locale.fromSubtags(languageCode: 'be'), + Locale.fromSubtags(languageCode: 'be', scriptCode: 'Latn'), + Locale.fromSubtags(languageCode: 'ca'), + Locale.fromSubtags(languageCode: 'cs'), + Locale.fromSubtags(languageCode: 'de'), + Locale.fromSubtags(languageCode: 'eo'), + Locale.fromSubtags(languageCode: 'es'), + Locale.fromSubtags(languageCode: 'et'), + Locale.fromSubtags(languageCode: 'eu'), + Locale.fromSubtags(languageCode: 'fr'), + Locale.fromSubtags(languageCode: 'hi'), + Locale.fromSubtags(languageCode: 'id'), + Locale.fromSubtags(languageCode: 'it'), + Locale.fromSubtags(languageCode: 'ja'), + Locale.fromSubtags(languageCode: 'ko'), + Locale.fromSubtags(languageCode: 'ml'), + Locale.fromSubtags(languageCode: 'nb', countryCode: 'NO'), + Locale.fromSubtags(languageCode: 'nl'), + Locale.fromSubtags(languageCode: 'or'), + Locale.fromSubtags(languageCode: 'pl'), + Locale.fromSubtags(languageCode: 'pt'), + Locale.fromSubtags(languageCode: 'pt', countryCode: 'BR'), + Locale.fromSubtags(languageCode: 'ro'), + Locale.fromSubtags(languageCode: 'ru'), + Locale.fromSubtags(languageCode: 'tr'), + Locale.fromSubtags(languageCode: 'uk'), + Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans'), + ]; + } + + @override + bool isSupported(Locale locale) => _isSupported(locale); + @override + Future load(Locale locale) => L10n.load(locale); + @override + bool shouldReload(AppLocalizationDelegate old) => false; + + bool _isSupported(Locale locale) { + for (var supportedLocale in supportedLocales) { + if (supportedLocale.languageCode == locale.languageCode) { + return true; + } + } + return false; + } +} diff --git a/lib/group/_feed.dart b/lib/group/_feed.dart new file mode 100644 index 00000000..8374c967 --- /dev/null +++ b/lib/group/_feed.dart @@ -0,0 +1,279 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_screen.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/tweet/_video.dart'; +import 'package:quacker/tweet/conversation.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:sqflite/sqflite.dart'; + +class SubscriptionGroupFeed extends StatefulWidget { + final SubscriptionGroupGet group; + final List chunks; + final bool includeReplies; + final bool includeRetweets; + final ScrollController? scrollController; + + const SubscriptionGroupFeed( + {Key? key, + required this.group, + required this.chunks, + required this.includeReplies, + required this.includeRetweets, + this.scrollController}) + : super(key: key); + + @override + State createState() => _SubscriptionGroupFeedState(); +} + +class _SubscriptionGroupFeedState extends State { + late PagingController _pagingController; + + @override + void initState() { + super.initState(); + + _pagingController = PagingController(firstPageKey: null); + _pagingController.addPageRequestListener((cursor) async { + await _listTweets(cursor); + }); + } + + @override + void dispose() { + _pagingController.dispose(); + super.dispose(); + } + + @override + void didUpdateWidget(SubscriptionGroupFeed oldWidget) { + super.didUpdateWidget(oldWidget); + + if (oldWidget.includeReplies != widget.includeReplies || oldWidget.includeRetweets != widget.includeRetweets) { + _pagingController.refresh(); + } + } + + Future createCursor(Database repository) async { + return (await repository.insert(tableFeedGroupCursor, {}, nullColumnHack: 'id')).toString(); + } + + String _buildSearchQuery(List users) { + var query = ''; + if (!widget.includeReplies) { + query += '-filter:replies '; + } + + if (!widget.includeRetweets) { + query += '-filter:retweets '; + } else { + query += 'include:nativeretweets '; + } + + var remainingLength = 512 - query.length; + + for (var user in users) { + var queryToAdd = ''; + if (user is UserSubscription) { + queryToAdd = 'from:${user.screenName}'; + } else if (user is SearchSubscription) { + queryToAdd = '"${user.id}"'; + } + + // If we can add this user to the query and still be less than ~512 characters, do so + if (query.length + queryToAdd.length < remainingLength) { + if (query.isNotEmpty) { + query += '+OR+'; + } + + query += queryToAdd; + } else { + // Otherwise, add the search future and start a new one + assert(false, 'should never reach here'); + query = queryToAdd; + } + } + + return query; + } + + /// Search for our next "page" of tweets. + /// + /// Here, each page is actually a set of mappings, where the ID of each set is the hash of all the user IDs in that + /// set. We store this along with the top and bottom pagination cursors, which we use to perform pagination for all + /// sets at the same time, allowing us to create a feed made up of individual search queries. + Future _listTweets(String? cursorKey) async { + try { + List>> futures = []; + + var repository = await Repository.writable(); + var nextCursor = await createCursor(repository); + + for (var chunk in widget.chunks) { + var hash = chunk.hash; + + futures.add(Future(() async { + var tweets = []; + + String? searchCursor; + + if (cursorKey == null) { + // We're loading the initial content for the feed screen, so load all the chunks we already have + var storedChunks = await repository.query(tableFeedGroupChunk, + where: 'hash = ?', whereArgs: [hash], orderBy: 'created_at DESC'); + + // Make sure we load any existing stored tweets from the chunk + var storedChunksTweets = storedChunks + .map((e) => jsonDecode(e['response'] as String)) + .map((e) => List.from(e)) + .expand((e) => e.map((c) => TweetChain.fromJson(c))) + .toList(); + + tweets.addAll(storedChunksTweets); + + // Use the latest chunk's top cursor to load any new tweets since the last time we checked + var latestChunk = storedChunks.firstOrNull; + if (latestChunk != null) { + searchCursor = latestChunk['cursor_top'] as String; + } else { + // Otherwise we need to perform a fresh load from scratch for this chunk + searchCursor = null; + } + } else { + // We're currently at the end of our current feed, so load the oldest chunk and use its cursor to load more + var storedChunks = await repository.query(tableFeedGroupChunk, + where: 'cursor_id = ? AND hash = ?', whereArgs: [int.parse(cursorKey), hash]); + if (storedChunks.isNotEmpty) { + searchCursor = storedChunks.first['cursor_bottom'] as String; + } else { + searchCursor = null; + } + } + + // Perform our search for the next page of results for this chunk, and add those tweets to our collection + var query = _buildSearchQuery(chunk.users); + var result = await Twitter.searchTweets(query, widget.includeReplies, limit: 100, cursor: searchCursor); + + if (result.chains.isNotEmpty) { + tweets.addAll(result.chains); + + // Make sure we insert the set of cursors for this latest chunk, ready for the next time we paginate + await repository.insert(tableFeedGroupChunk, { + 'cursor_id': int.parse(nextCursor), + 'hash': hash, + 'cursor_top': result.cursorTop, + 'cursor_bottom': result.cursorBottom, + 'response': jsonEncode(result.chains.map((e) => e.toJson()).toList()) + }); + } + + return tweets; + })); + } + + // Wait for all our searches to complete, then build our list of tweet conversations + var result = (await Future.wait(futures)); + var threads = result.expand((element) => element).sorted((a, b) { + var aCreatedAt = a.tweets[0].createdAt; + var bCreatedAt = b.tweets[0].createdAt; + + if (aCreatedAt == null || bCreatedAt == null) { + return 0; + } + + return bCreatedAt.compareTo(aCreatedAt); + }).toList(); + + if (!mounted) { + return; + } + + if (result.isEmpty) { + _pagingController.appendLastPage([]); + } else { + // If this page is the same as the last page we received before, assume it's the last page + if (nextCursor == _pagingController.nextPageKey) { + _pagingController.appendLastPage([]); + } else { + _pagingController.appendPage(threads, nextCursor); + } + } + } catch (e, stackTrace) { + if (mounted) { + _pagingController.error = [e, stackTrace]; + } + } + } + + @override + Widget build(BuildContext context) { + if (widget.chunks.isEmpty) { + return Scaffold( + body: Center( + child: Text(L10n.of(context).this_group_contains_no_subscriptions), + ), + ); + } + + var prefs = PrefService.of(context, listen: false); + + return Scaffold( + body: RefreshIndicator( + onRefresh: () async { + var repository = await Repository.writable(); + await repository.delete(tableFeedGroupChunk); + _pagingController.refresh(); + }, + child: MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (_) => TweetContextState(prefs.get(optionTweetsHideSensitive))), + ChangeNotifierProvider( + create: (_) => VideoContextState(prefs.get(optionMediaDefaultMute))), + ], + child: PagedListView( + padding: const EdgeInsets.only(top: 4), + scrollController: widget.scrollController, + pagingController: _pagingController, + addAutomaticKeepAlives: false, + builderDelegate: PagedChildBuilderDelegate( + itemBuilder: (context, conversation, index) { + return TweetConversation( + id: conversation.id, username: null, tweets: conversation.tweets, isPinned: conversation.isPinned); + }, + newPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_next_page_of_tweets, + onRetry: () => _listTweets(_pagingController.firstPageKey), + ), + firstPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_tweets_for_the_feed, + onRetry: () => _listTweets(_pagingController.nextPageKey), + ), + noItemsFoundIndicatorBuilder: (context) => Center( + child: Text( + L10n.of(context).could_not_find_any_tweets_from_the_last_7_days, + ), + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/group/_settings.dart b/lib/group/_settings.dart new file mode 100644 index 00000000..1f2fc64f --- /dev/null +++ b/lib/group/_settings.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; + +void showFeedSettings(BuildContext context, GroupModel model) { + showModalBottomSheet( + context: context, + builder: (context) { + var theme = Theme.of(context); + + return SizedBox( + height: 250, + child: Container( + decoration: const BoxDecoration( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(25), + topRight: Radius.circular(25), + ), + ), + child: Column( + children: [ + ListTile( + leading: IconButton( + icon: const Icon(Icons.arrow_back_rounded), + onPressed: () { + Navigator.of(context).pop(); + }), + title: Text(L10n.of(context).filters), + tileColor: theme.colorScheme.primary, + ), + Container( + alignment: Alignment.centerLeft, + margin: const EdgeInsets.only(bottom: 8, top: 16, left: 16, right: 16), + child: Text( + L10n.of(context).note_due_to_a_twitter_limitation_not_all_tweets_may_be_included, + style: TextStyle( + color: Theme.of(context).disabledColor, + ), + )), + ScopedBuilder( + store: model, + onState: (_, state) { + return Column( + children: [ + CheckboxListTile( + title: Text( + L10n.of(context).include_replies, + ), + value: model.state.includeReplies, + onChanged: (value) async { + await model.toggleSubscriptionGroupIncludeReplies(value ?? false); + }), + CheckboxListTile( + title: Text( + L10n.of(context).include_retweets, + ), + value: model.state.includeRetweets, + onChanged: (value) async { + await model.toggleSubscriptionGroupIncludeRetweets(value ?? false); + }), + ], + ); + }, + ), + ], + ), + ), + ); + }); +} diff --git a/lib/group/group_model.dart b/lib/group/group_model.dart new file mode 100644 index 00000000..93e56ed7 --- /dev/null +++ b/lib/group/group_model.dart @@ -0,0 +1,258 @@ +import 'dart:convert'; +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:flutter_iconpicker_plus/flutter_iconpicker.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:logging/logging.dart'; +import 'package:pref/pref.dart'; +import 'package:uuid/uuid.dart'; + +var defaultGroupIcon = '{"pack":"custom","key":"rss_feed_rounded"}'; + +IconData deserializeIconData(String iconData) { + try { + var icon = deserializeIcon(jsonDecode(iconData)); + if (icon != null) { + return icon; + } + } catch (e, stackTrace) { + log('Unable to deserialize icon', error: e, stackTrace: stackTrace); + } + + // Use this as a default; + return Icons.rss_feed_rounded; +} + +class GroupModel extends Store { + final String id; + + GroupModel(this.id) + : super(SubscriptionGroupGet( + id: '', + name: '', + icon: defaultGroupIcon, + subscriptions: [], + includeRetweets: false, + includeReplies: false)); + + Future loadGroup() async { + await execute(() async { + var database = await Repository.readOnly(); + + var group = (await database.query(tableSubscriptionGroup, where: 'id = ?', whereArgs: [id])).first; + + if (id == '-1') { + var subscriptions = + (await database.query(tableSubscription)).map((e) => UserSubscription.fromMap(e)).toList(growable: false); + + return SubscriptionGroupGet( + id: '-1', + name: 'All', + icon: group['icon'] as String, + subscriptions: subscriptions, + includeReplies: group['include_replies'] == 1, + includeRetweets: group['include_retweets'] == 1); + } + + var searchSubscriptions = (await database.rawQuery( + 'SELECT s.* FROM $tableSearchSubscription s LEFT JOIN $tableSubscriptionGroupMember sgm ON sgm.profile_id = s.id WHERE sgm.group_id = ?', + [id])) + .map((e) => SearchSubscription.fromMap(e)) + .toList(growable: false); + + var userSubscriptions = (await database.rawQuery( + 'SELECT s.* FROM $tableSubscription s LEFT JOIN $tableSubscriptionGroupMember sgm ON sgm.profile_id = s.id WHERE sgm.group_id = ?', + [id])) + .map((e) => UserSubscription.fromMap(e)) + .toList(growable: false); + + // TODO: Factory + return SubscriptionGroupGet( + id: group['id'] as String, + name: group['name'] as String, + icon: group['icon'] as String, + subscriptions: [...userSubscriptions, ...searchSubscriptions], + includeReplies: group['include_replies'] == 1, + includeRetweets: group['include_retweets'] == 1); + }); + } + + Future toggleSubscriptionGroupIncludeReplies(bool value) async { + await execute(() async { + (await Repository.writable()) + .rawUpdate('UPDATE $tableSubscriptionGroup SET include_replies = ? WHERE id = ?', [value, state.id]); + state.includeReplies = value; + return state; + }); + } + + Future toggleSubscriptionGroupIncludeRetweets(bool value) async { + await execute(() async { + (await Repository.writable()) + .rawUpdate('UPDATE $tableSubscriptionGroup SET include_retweets = ? WHERE id = ?', [value, state.id]); + state.includeRetweets = value; + return state; + }); + } +} + +class GroupsModel extends Store> { + static final log = Logger('GroupModel'); + + final BasePrefService prefs; + + GroupsModel(this.prefs) : super([]); + + bool get orderGroupsAscending => prefs.get(optionSubscriptionGroupsOrderByAscending); + String get orderGroupsBy => prefs.get(optionSubscriptionGroupsOrderByField); + + Future deleteGroup(String id) async { + log.info('Deleting the group $id'); + + await execute(() async { + var database = await Repository.writable(); + + await database.delete(tableSubscriptionGroupMember, where: 'group_id = ?', whereArgs: [id]); + await database.delete(tableSubscriptionGroup, where: 'id = ?', whereArgs: [id]); + + return state.where((e) => e.id != id).toList(); + }); + } + + Future reloadGroups() async { + log.info('Listing subscriptions groups'); + + await execute(() async { + var database = await Repository.readOnly(); + + var orderByDirection = orderGroupsAscending ? 'COLLATE NOCASE ASC' : 'COLLATE NOCASE DESC'; + + var query = + "SELECT g.id, g.name, g.icon, g.color, g.created_at, COUNT(gm.profile_id) AS number_of_members FROM $tableSubscriptionGroup g LEFT JOIN $tableSubscriptionGroupMember gm ON gm.group_id = g.id WHERE g.id != '-1' GROUP BY g.id ORDER BY $orderGroupsBy $orderByDirection"; + + return (await database.rawQuery(query)).map((e) => SubscriptionGroup.fromMap(e)).toList(growable: false); + }); + } + + Future> listGroupMembers() async { + var database = await Repository.readOnly(); + + return (await database.query(tableSubscriptionGroupMember)) + .map((e) => SubscriptionGroupMember(group: e['group_id'] as String, profile: e['profile_id'] as String)) + .toList(growable: false); + } + + Future> listGroupsForUser(String user) async { + var database = await Repository.readOnly(); + + return (await database.query(tableSubscriptionGroupMember, + columns: ['group_id'], where: 'profile_id = ?', whereArgs: [user])) + .map((e) => e['group_id'] as String) + .toList(growable: false); + } + + Future saveUserGroupMembership(String user, List memberships) async { + var database = await Repository.writable(); + + var batch = database.batch(); + + // First, clear all the memberships for the user + batch.delete(tableSubscriptionGroupMember, where: 'profile_id = ?', whereArgs: [user]); + + // Then add all the new memberships + for (var group in memberships) { + batch.insert(tableSubscriptionGroupMember, {'group_id': group, 'profile_id': user}); + } + + await batch.commit(); + await reloadGroups(); + } + + Future loadGroupEdit(String? id) async { + var database = await Repository.readOnly(); + + if (id == null) { + return SubscriptionGroupEdit( + id: null, + name: '', + icon: defaultGroupIcon, + color: null, + members: {}, + ); + } + + var group = await database.query(tableSubscriptionGroup, where: 'id = ?', whereArgs: [id]); + if (group.isEmpty) { + return SubscriptionGroupEdit( + id: null, + name: '', + icon: defaultGroupIcon, + color: null, + members: {}, + ); + } + + var members = (await database.query(tableSubscriptionGroupMember, where: 'group_id = ?', whereArgs: [id])) + .map((e) => e['profile_id'] as String) + .toSet(); + + return SubscriptionGroupEdit( + id: group.first['id'] as String, + name: group.first['name'] as String, + icon: group.first['icon'] as String, + color: group.first['color'] == null ? null : Color(group.first['color'] as int), + members: members, + ); + } + + Future saveGroup(String? id, String name, String icon, Color? color, Set subscriptions) async { + await execute(() async { + var database = await Repository.writable(); + + // First insert or update the subscription group details + if (id == null) { + id = const Uuid().v4(); + + await database.insert(tableSubscriptionGroup, {'id': id, 'name': name, 'color': color?.value, 'icon': icon}); + } else { + await database.update( + tableSubscriptionGroup, + { + 'name': name, + 'color': color?.value, + 'icon': icon, + }, + where: 'id = ?', + whereArgs: [id]); + } + + // Then clear out any existing subscriptions for the group and add our new set + await database.delete(tableSubscriptionGroupMember, where: 'group_id = ?', whereArgs: [id]); + + var batch = database.batch(); + for (var subscription in subscriptions) { + batch.insert(tableSubscriptionGroupMember, {'group_id': id, 'profile_id': subscription}); + } + + await batch.commit(noResult: true); + await reloadGroups(); + + // TODO: Replace the group in the state instead + return state; + }); + } + + void changeOrderSubscriptionGroupsBy(String? value) async { + await prefs.set(optionSubscriptionGroupsOrderByField, value ?? 'name'); + await reloadGroups(); + } + + void toggleOrderSubscriptionGroupsAscending() async { + await prefs.set(optionSubscriptionGroupsOrderByAscending, !orderGroupsAscending); + await reloadGroups(); + } +} diff --git a/lib/group/group_screen.dart b/lib/group/group_screen.dart new file mode 100644 index 00000000..e49aa72c --- /dev/null +++ b/lib/group/group_screen.dart @@ -0,0 +1,143 @@ +import 'package:crypto/crypto.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/group/_feed.dart'; +import 'package:quacker/group/_settings.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:provider/provider.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:quiver/iterables.dart'; + +class GroupScreenArguments { + final String id; + final String name; + + GroupScreenArguments({required this.id, required this.name}); + + @override + String toString() { + return 'GroupScreenArguments{id: $id, name: $name}'; + } +} + +class GroupScreen extends StatelessWidget { + const GroupScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final args = ModalRoute.of(context)!.settings.arguments as GroupScreenArguments; + + return SubscriptionGroupScreen( + scrollController: ScrollController(), id: args.id, name: args.name, actions: const []); + } +} + +class SubscriptionGroupScreenContent extends StatelessWidget { + final String id; + + const SubscriptionGroupScreenContent({Key? key, required this.id}) : super(key: key); + + @override + Widget build(BuildContext context) { + return ScopedBuilder.transition( + store: context.read(), + onLoading: (_) => const Center(child: Text('lad')), + onError: (_, error) => + ScaffoldErrorWidget(error: error, stackTrace: null, prefix: L10n.current.unable_to_load_the_group), + onState: (_, group) { + // TODO: This is pretty gross. Figure out how to have a "no data" state + if (group.id.isEmpty) { + return Container(); + } + + // Split the users into chunks, oldest first, to prevent thrashing of all groups when a new user is added + var users = group.subscriptions.sorted((a, b) => a.createdAt.compareTo(b.createdAt)).toList(); + + var chunks = partition(users, 16) + .map((e) => SubscriptionGroupFeedChunk(e, group.includeReplies, group.includeRetweets)) + .toList(); + + return SubscriptionGroupFeed( + group: group, + chunks: chunks, + includeReplies: group.includeReplies, + includeRetweets: group.includeRetweets, + ); + }, + ); + } +} + +class SubscriptionGroupFeedChunk { + final List users; + final bool includeReplies; + final bool includeRetweets; + + SubscriptionGroupFeedChunk(this.users, this.includeReplies, this.includeRetweets); + + String get hash { + var toHash = '${users.map((e) => e.id).join(', ')}$includeReplies$includeRetweets'; + + return sha1.convert(toHash.codeUnits).toString(); + } +} + +class SubscriptionGroupScreen extends StatelessWidget { + final ScrollController scrollController; + final String id; + final String name; + final List actions; + + const SubscriptionGroupScreen( + {Key? key, required this.scrollController, required this.id, required this.name, required this.actions}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Provider( + create: (context) { + var model = GroupModel(id); + model.loadGroup(); + + return model; + }, + builder: (context, child) { + var model = context.read(); + + return NestedScrollView( + controller: scrollController, + floatHeaderSlivers: true, + headerSliverBuilder: (context, innerBoxIsScrolled) { + return [ + SliverAppBar( + pinned: false, + snap: true, + floating: true, + title: Text(name), + actions: [ + IconButton(icon: const Icon(Icons.more_vert), onPressed: () => showFeedSettings(context, model)), + IconButton( + icon: const Icon(Icons.arrow_upward_rounded), + onPressed: () async { + await scrollController.animateTo(0, + duration: const Duration(seconds: 1), curve: Curves.easeInOut); + }), + IconButton( + icon: const Icon(Icons.refresh_rounded), + onPressed: () async { + await model.loadGroup(); + }), + ...actions + ], + ) + ]; + }, + body: SubscriptionGroupScreenContent(id: id), + ); + }, + ); + } +} diff --git a/lib/home/_feed.dart b/lib/home/_feed.dart new file mode 100644 index 00000000..3f33f45e --- /dev/null +++ b/lib/home/_feed.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/group/group_screen.dart'; +import 'package:quacker/home/home_screen.dart'; + +class FeedScreen extends StatefulWidget { + final ScrollController scrollController; + final String id; + final String name; + + const FeedScreen({Key? key, required this.scrollController, required this.id, required this.name}) : super(key: key); + + @override + State createState() => _FeedScreenState(); +} + +class _FeedScreenState extends State with AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + + @override + Widget build(BuildContext context) { + super.build(context); + + return SubscriptionGroupScreen( + scrollController: widget.scrollController, + id: widget.id, + name: widget.name, + actions: createCommonAppBarActions(context)); + } +} diff --git a/lib/home/_groups.dart b/lib/home/_groups.dart new file mode 100644 index 00000000..e7e413b8 --- /dev/null +++ b/lib/home/_groups.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/subscriptions/_groups.dart'; +import 'package:provider/provider.dart'; + +class GroupsScreen extends StatelessWidget { + final ScrollController scrollController; + + const GroupsScreen({Key? key, required this.scrollController}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: NestedScrollView( + controller: scrollController, + headerSliverBuilder: (context, innerBoxIsScrolled) { + return [ + SliverAppBar( + pinned: false, + snap: true, + floating: true, + title: Text(L10n.current.groups), + actions: [ + PopupMenuButton( + icon: const Icon(Icons.sort_rounded), + itemBuilder: (context) => [ + PopupMenuItem( + value: 'name', + child: Text(L10n.of(context).name), + ), + PopupMenuItem( + value: 'created_at', + child: Text(L10n.of(context).date_created), + ), + ], + onSelected: (value) => context.read().changeOrderSubscriptionGroupsBy(value), + ), + IconButton( + icon: const Icon(Icons.sort_by_alpha_rounded), + onPressed: () => context.read().toggleOrderSubscriptionGroupsAscending(), + ), + ...createCommonAppBarActions(context), + ], + ) + ]; + }, + body: SubscriptionGroups(scrollController: scrollController), + )); + } +} diff --git a/lib/home/_missing.dart b/lib/home/_missing.dart new file mode 100644 index 00000000..325a8df8 --- /dev/null +++ b/lib/home/_missing.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/ui/errors.dart'; + +class MissingScreen extends StatelessWidget { + const MissingScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + actions: createCommonAppBarActions(context), + ), + body: EmojiErrorWidget( + emoji: '🧨', + message: L10n.current.missing_page, + errorMessage: L10n.current.two_home_pages_required, + retryText: L10n.current.choose_pages, + onRetry: () => Navigator.pushNamed(context, routeSettingsHome), + showBackButton: false, + ), + ); + } +} diff --git a/lib/home/_saved.dart b/lib/home/_saved.dart new file mode 100644 index 00000000..1d9c6ef2 --- /dev/null +++ b/lib/home/_saved.dart @@ -0,0 +1,147 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; + +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/saved/saved_tweet_model.dart'; +import 'package:quacker/tweet/tweet.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; + +class SavedScreen extends StatefulWidget { + final ScrollController scrollController; + + const SavedScreen({Key? key, required this.scrollController}) : super(key: key); + + @override + State createState() => _SavedScreenState(); +} + +class _SavedScreenState extends State with AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + + @override + void initState() { + super.initState(); + + context.read().listSavedTweets(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + var model = context.read(); + + var prefs = PrefService.of(context, listen: false); + + return NestedScrollView( + controller: widget.scrollController, + headerSliverBuilder: (context, innerBoxIsScrolled) { + return [ + SliverAppBar( + pinned: false, + snap: true, + floating: true, + title: Text(L10n.current.saved), + actions: createCommonAppBarActions(context), + ) + ]; + }, + body: MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (_) => TweetContextState(prefs.get(optionTweetsHideSensitive))), + ], + child: ScopedBuilder>.transition( + store: model, + onError: (_, e) => FullPageErrorWidget( + error: e, + stackTrace: null, + prefix: L10n.current.unable_to_load_the_tweets, + onRetry: () => model.listSavedTweets(), + ), + onLoading: (_) => const Center(child: CircularProgressIndicator()), + onState: (_, data) { + if (data.isEmpty) { + return Center(child: Text(L10n.of(context).you_have_not_saved_any_tweets_yet)); + } + + return ListView.builder( + controller: widget.scrollController, + padding: const EdgeInsets.only(top: 4), + itemCount: data.length, + itemBuilder: (context, index) { + var item = data[index]; + return SavedTweetTile(id: item.id, content: item.content); + }, + ); + }, + ), + ), + ); + } +} + +class SavedTweetTile extends StatelessWidget { + final String id; + final String? content; + + const SavedTweetTile({Key? key, required this.id, this.content}) : super(key: key); + + @override + Widget build(BuildContext context) { + var content = this.content; + if (content == null) { + // The tweet is probably too big to fit inside the cursor and has been removed from the result set + return SavedTweetTooLarge(id: id); + } + + var tweet = TweetWithCard.fromJson(jsonDecode(content)); + + return TweetTile(key: Key(tweet.idStr!), tweet: tweet, clickable: true); + } +} + +class SavedTweetTooLarge extends StatelessWidget { + final String id; + + const SavedTweetTooLarge({Key? key, required this.id}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ListTile( + leading: const Icon(Icons.error_outline, color: Colors.red), + title: Text(L10n.current.oops_something_went_wrong), + subtitle: Text(L10n.current.saved_tweet_too_large), + ), + ], + ), + ), + ); + } +} + +class SavedTweetTooLargeException implements Exception { + final String id; + + SavedTweetTooLargeException(this.id); + + @override + String toString() { + return 'The saved tweet with the ID $id was too large'; + } +} diff --git a/lib/home/home_model.dart b/lib/home/home_model.dart new file mode 100644 index 00000000..113f250b --- /dev/null +++ b/lib/home/home_model.dart @@ -0,0 +1,96 @@ +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:pref/pref.dart'; + +class HomePage { + final String id; + bool selected; + final NavigationPage page; + + HomePage(this.id, this.selected, this.page); +} + +class HomeModel extends Store> { + final BasePrefService prefs; + final GroupsModel groupsModel; + + HomeModel(this.prefs, this.groupsModel) : super([]) { + groupsModel.observer(onState: (state) async { + await loadPages(); + }); + } + + Future resetPages() async { + await execute(() async { + prefs.set(optionHomePages, defaultHomePages.map((e) => e.id).toList()); + await loadPages(); + return state; + }); + } + + Future loadPages() async { + await execute(() async { + var saved = prefs.getStringList(optionHomePages) ?? []; + + var available = [ + ...defaultHomePages, + ...groupsModel.state + .map((e) => NavigationPage('group-${e.id}', (c) => L10n.of(c).group_name(e.name), e.iconData)), + ]; + + var pages = []; + + // First, add all of our saved pages, in the correct order + for (var id in saved) { + var page = available.firstWhereOrNull((e) => e.id == id); + if (page == null) { + continue; + } + + pages.add(HomePage(id, true, page)); + } + + // Then add all the other available pages, unselected, to the end of the list, for the settings screen + for (var page in available) { + if (saved.contains(page.id)) { + continue; + } + + pages.add(HomePage(page.id, false, page)); + } + + return pages; + }); + } + + Future movePage(int oldIndex, int newIndex) async { + if (newIndex > oldIndex) { + newIndex = newIndex - 1; + } + + final page = state.removeAt(oldIndex); + state.insert(newIndex, page); + update(state); + } + + Future save() async { + var pages = state.where((e) => e.selected).map((e) => e.id).toList(); + + await prefs.set(optionHomePages, pages); + } + + Future selectPage(String id, bool selected) async { + for (var page in state) { + if (page.id == id) { + page.selected = selected; + break; + } + } + + update(state, force: true); + } +} diff --git a/lib/home/home_screen.dart b/lib/home/home_screen.dart new file mode 100644 index 00000000..2f876fa0 --- /dev/null +++ b/lib/home/home_screen.dart @@ -0,0 +1,244 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/_feed.dart'; +import 'package:quacker/home/_groups.dart'; +import 'package:quacker/home/_missing.dart'; +import 'package:quacker/home/_saved.dart'; +import 'package:quacker/home/home_model.dart'; +import 'package:quacker/search/search.dart'; +import 'package:quacker/subscriptions/subscriptions.dart'; +import 'package:quacker/trends/trends.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/ui/physics.dart'; +import 'package:quacker/utils/debounce.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:scroll_bottom_navigation_bar/scroll_bottom_navigation_bar.dart'; + +typedef NavigationTitleBuilder = String Function(BuildContext context); + +class NavigationPage { + final String id; + final NavigationTitleBuilder titleBuilder; + final IconData icon; + + NavigationPage(this.id, this.titleBuilder, this.icon); +} + +List createCommonAppBarActions(BuildContext context) { + return [ + IconButton( + icon: const Icon(Icons.search_rounded), + onPressed: () => Navigator.pushNamed(context, routeSearch, arguments: SearchArguments(0, focusInputOnOpen: true)), + ), + IconButton( + icon: const Icon(Icons.settings_outlined), + onPressed: () { + Navigator.pushNamed(context, routeSettings); + }, + ) + ]; +} + +final List defaultHomePages = [ + NavigationPage('feed', (c) => L10n.of(c).feed, Icons.rss_feed_rounded), + NavigationPage('subscriptions', (c) => L10n.of(c).subscriptions, Icons.subscriptions_outlined), + NavigationPage('groups', (c) => L10n.of(c).groups, Icons.group_outlined), + NavigationPage('trending', (c) => L10n.of(c).trending, Icons.trending_up_rounded), + NavigationPage('saved', (c) => L10n.of(c).saved, Icons.bookmark_border_rounded), +]; + +class HomeScreen extends StatelessWidget { + const HomeScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + var prefs = PrefService.of(context); + var model = context.read(); + + return _HomeScreen(prefs: prefs, model: model); + } +} + +class _HomeScreen extends StatefulWidget { + final BasePrefService prefs; + final HomeModel model; + + const _HomeScreen({Key? key, required this.prefs, required this.model}) : super(key: key); + + @override + State<_HomeScreen> createState() => _HomeScreenState(); +} + +class _HomeScreenState extends State<_HomeScreen> { + int _initialPage = 0; + List _pages = []; + + @override + void initState() { + super.initState(); + + _buildPages(widget.model.state); + widget.model.observer(onState: _buildPages); + } + + void _buildPages(List state) { + var pages = state.where((element) => element.selected).map((e) => e.page).toList(); + + if (widget.prefs.getKeys().contains(optionHomeInitialTab)) { + _initialPage = max(0, pages.indexWhere((element) => element.id == widget.prefs.get(optionHomeInitialTab))); + } + + setState(() { + _pages = pages; + }); + } + + @override + Widget build(BuildContext context) { + return ScopedBuilder>.transition( + store: widget.model, + onError: (_, e) => ScaffoldErrorWidget( + prefix: L10n.current.unable_to_load_home_pages, + error: e, + stackTrace: null, + onRetry: () async => await widget.model.resetPages(), + retryText: L10n.current.reset_home_pages, + ), + onLoading: (_) => const Center(child: CircularProgressIndicator()), + onState: (_, state) { + return ScaffoldWithBottomNavigation( + pages: _pages, + initialPage: _initialPage, + builder: (scrollController) { + return [ + ..._pages.map((e) { + if (e.id.startsWith('group-')) { + return FeedScreen( + scrollController: scrollController, + id: e.id.replaceAll('group-', ''), + name: e.titleBuilder(context)); + } + + switch (e.id) { + case 'feed': + return FeedScreen(scrollController: scrollController, id: '-1', name: L10n.current.feed); + case 'subscriptions': + return const SubscriptionsScreen(); + case 'groups': + return GroupsScreen(scrollController: scrollController); + case 'trending': + return TrendsScreen(scrollController: scrollController); + case 'saved': + return SavedScreen(scrollController: scrollController); + default: + return const MissingScreen(); + } + }) + ]; + }); + }); + } +} + +class ScaffoldWithBottomNavigation extends StatefulWidget { + final List pages; + final int initialPage; + final List Function(ScrollController scrollController) builder; + + const ScaffoldWithBottomNavigation({Key? key, required this.pages, required this.initialPage, required this.builder}) + : super(key: key); + + @override + State createState() => _ScaffoldWithBottomNavigationState(); +} + +class _ScaffoldWithBottomNavigationState extends State { + final ScrollController scrollController = ScrollController(); + + PageController? _pageController; + late List _children; + late List _pages; + + @override + void initState() { + super.initState(); + + _pages = _padToMinimumPagesLength(widget.pages); + + _pageController = PageController(initialPage: widget.initialPage); + + scrollController.bottomNavigationBar.setTab(widget.initialPage); + scrollController.bottomNavigationBar.tabListener((index) { + _pageController?.animateToPage(index, curve: Curves.easeInOut, duration: const Duration(milliseconds: 100)); + }); + + _children = widget.builder(scrollController); + } + + List _padToMinimumPagesLength(List pages) { + var widgetPages = pages; + if (widgetPages.length < 2) { + widgetPages.addAll(List.generate(2 - widgetPages.length, (index) { + return NavigationPage('none', (context) => L10n.current.missing_page, Icons.disabled_by_default_outlined); + })); + } + + return widgetPages; + } + + @override + void didUpdateWidget(ScaffoldWithBottomNavigation oldWidget) { + super.didUpdateWidget(oldWidget); + + var newPages = _padToMinimumPagesLength(widget.pages); + if (oldWidget.pages != widget.pages) { + setState(() { + _children = widget.builder(scrollController); + _pages = newPages; + }); + } + + var page = _pageController?.page?.toInt(); + if (page != null) { + // Ensure we're not trying to show a page that no longer exists (i.e. one that was selected, but now deleted) + var currentTab = scrollController.bottomNavigationBar.tabNotifier.value; + if (currentTab >= newPages.length) { + scrollController.bottomNavigationBar.tabNotifier.value = newPages.length - 1; + } + } + } + + @override + void dispose() { + super.dispose(); + _pageController?.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: PageView( + controller: _pageController, + physics: const LessSensitiveScrollPhysics(), + onPageChanged: (page) => Debouncer.debounce('page-change', const Duration(milliseconds: 200), () { + // Reset the height when the page changes, otherwise the navigation bar stays hidden forever + scrollController.bottomNavigationBar.heightNotifier.value = 1; + scrollController.bottomNavigationBar.setTab(page); + }), + children: _children, + ), + bottomNavigationBar: ScrollBottomNavigationBar( + controller: scrollController, + showUnselectedLabels: false, + items: [ + ..._pages.map((e) => BottomNavigationBarItem(icon: Icon(e.icon, size: 22), label: e.titleBuilder(context))) + ], + ), + ); + } +} diff --git a/lib/import_data_model.dart b/lib/import_data_model.dart new file mode 100644 index 00000000..1f1c41fe --- /dev/null +++ b/lib/import_data_model.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:logging/logging.dart'; +import 'package:sqflite/sqflite.dart'; + +class ImportDataModel extends ChangeNotifier { + static final log = Logger('HomeModel'); + + Future importData(Map> data) async { + var database = await Repository.writable(); + + var batch = database.batch(); + + for (var pair in data.entries) { + for (var datum in pair.value) { + batch.insert(pair.key, datum.toMap(), conflictAlgorithm: ConflictAlgorithm.replace); + } + + log.info('Imported data into ${pair.key}'); + } + + await batch.commit(); + } +} diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb new file mode 100644 index 00000000..e1b77a0f --- /dev/null +++ b/lib/l10n/intl_ar.arb @@ -0,0 +1,490 @@ +{ + "this_group_contains_no_subscriptions": "هذه المجموعة لا تحتوي على أي مجموعات!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "لم يتم العثور على أي تغريدة من هذا المستخدم!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "غير قادر على تحميل الصفحة التالية من الردود", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "غير قادر على تحميل التغريدات", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "غير قادر على تحميل مجموعات الاشتراك", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "أضف إلى المجموعة", + "@add_to_group": {}, + "unsubscribe": "إلغاء الاشتراك", + "@unsubscribe": {}, + "subscribe": "الاشتراك", + "@subscribe": {}, + "reporting_an_error": "الإبلاغ غن خطأ", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "حدث خطأ ما في فريتر، تم إنشاء تقرير لهذا الخطأ، تستطيع أن تبعث التقرير إلى مطورين فريتر لمساعدتهم على إصلاح المشكلة.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "هل تُحب أن تفعل مُبَلغ الأخطاء الآلي؟", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "تقريرك سيُبعث إلى مشروع حراسة فريتر، ويمكن العثور على تفاصيل الخصوصية في:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "ابعث مرة واحدة", + "@send_once": {}, + "send_always": "ابعث كل مرة", + "@send_always": {}, + "don_not_send": "لا تبعث", + "@don_not_send": {}, + "never_send": "يا ويلك لو تبعث", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "بُلِّغ عن خطأ للحارس. شكرا!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "شكراً علي تبليغك لنا. سنحاول أن نصحله بأسرع ما يمكن!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_tweets_for_the_feed": "غير قادر على تحميل التغريدات للمُلقّم", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "لم يُعثر على أي تغريدات من الأيام الـ7 الماضية!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "غير قادر على تحميل المجموعة", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "غير قادر على تحميل إعدادات المجموعة", + "@unable_to_load_the_group_settings": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "ملاحظة: نظراً لقَيد معين من تويتر، قد لا يتم تضمين جميع التغريدات", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "تضمين الردود", + "@include_replies": {}, + "include_retweets": "تضمين إعادات التغاريد", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "غير قادر على العثور على تغريداتك المحفوظة.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "لم تحفظ أي تغريدة حتى الآن!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "غير قادر على تحميل نتائج البحث.", + "@unable_to_load_the_search_results": {}, + "no_results": "لا نتائج", + "@no_results": {}, + "feed": "التلقيم", + "@feed": {}, + "subscriptions": "الإشتراكات", + "@subscriptions": {}, + "trending": "الشائع", + "@trending": {}, + "saved": "المحفوظ", + "@saved": {}, + "unable_to_load_the_list_of_follows": "غير قادر على تحميل قائمة المتابَعون", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "غير قادر على تحميل الصفحة المتابَعون التالية", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "هذا المستخدم لا يتابِع أحداً!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "هذا المستخدم ليس لديه أي اشخاص يتابعهم!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "غير قادر على تحميل التغريدات", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "غير قادر على تحميل الملف الشخصي", + "@unable_to_load_the_profile": {}, + "tweets": "التغريدات", + "@tweets": {}, + "tweets_and_replies": "التغريدات والردود", + "@tweets_and_replies": {}, + "media": "الوسائط", + "@media": {}, + "following": "المتابَعون", + "@following": {}, + "followers": "المتابِعون", + "@followers": {}, + "export": "تصدير", + "@export": {}, + "data_exported_to_fullPath": "صُدِّرَت البيانات إلى {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "صُدِّرَت البيانات إلى {fileName}", + "@data_exported_to_fileName": {}, + "export_settings": "تصدير الإعدادات؟", + "@export_settings": {}, + "export_subscriptions": "تصدير الاشتراكات؟", + "@export_subscriptions": {}, + "export_subscription_groups": "تصدير مجموعات الاشتراكات؟", + "@export_subscription_groups": {}, + "export_subscription_group_members": "تصدير أفراد مجموعات الاشتراكات؟", + "@export_subscription_group_members": {}, + "export_tweets": "تصدير التغريدات؟", + "@export_tweets": {}, + "data_imported_successfully": "استوردت البيانات بنجاح", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "يبدوا أنك قد سلمت بالفعل من إصدار فريتر هذا!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "الغاء", + "@cancel": {}, + "thanks_for_helping_fritter": "شكراً على مساعدتك لفريتر! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "يبدوا أنك بالفعل قد أرسلت بينج حديثاً 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "تعذر إرسال الأمر ping. كان رمز الحالة {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "انتهت مهلة المحاولة لإرسال البنج 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "غير قادر على إرسال البنج. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "إرسال", + "@send": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "هنا البيانات التي سيتم إرسالها. سيتم استخدامه فقط لتحديد الأجهزة واللغات التي يجب دعمها في Quacker في المستقبل.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "أرسل ping غير محدد الهوية لإخباري بأنك تستخدم Quacker وللمساعدة في التطوير المستقبلي", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "العامة", + "@general": {}, + "default_tab": "التبويب الافتراضي", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "أي تبويب يظهر عندما يفتح التطبيق", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "حجم الوسائط", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "حفظ النطاق الترددي مع صور أصغر", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "معطل", + "@disabled": {}, + "thumbnail": "الصورة المصغرة", + "@thumbnail": {}, + "small": "صغير", + "@small": {}, + "medium": "متوسط", + "@medium": {}, + "large": "كبير", + "@large": {}, + "theme": "السمة", + "@theme": {}, + "system": "النظام", + "@system": {}, + "light": "فاتح", + "@light": {}, + "dark": "داكن", + "@dark": {}, + "true_black": "أسود حقيقي؟", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "استخدم ميزة الأسود الحقيقي للسمة الداكنة", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "البيانات", + "@data": {}, + "import": "استيراد", + "@import": {}, + "import_data_from_another_device": "استيراد البيانات من جهاز آخر", + "@import_data_from_another_device": {}, + "legacy_android_import": "استيردات البيانات للأندرويد القديم", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "الملف غير موجود. رجائاً تأكد أنه موجو في {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "السابقة", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "رجائاً تأكد ما إذا كانت البيانات موجودة هناك, ومن ثم اضغط على زر الاستيراد في أدناه.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "تصدير بياناتك", + "@export_your_data": {}, + "logging": "تسجيل البيانات", + "@logging": {}, + "enable_": "تفعيل الحارس؟", + "@enable_": {}, + "whether_errors_should_be_reported_to_": "ما إذا يجب على الأخطاء البرمجية أن يُبلّغ عنها إلى الحارس", + "@whether_errors_should_be_reported_to_": {}, + "about": "عن", + "@about": {}, + "version": "الإصدار", + "@version": {}, + "copied_version_to_clipboard": "نُسخ الإصدار إلى الحافظة", + "@copied_version_to_clipboard": {}, + "contribute": "المساهمة", + "@contribute": {}, + "help_make_fritter_even_better": "المساعدة في جعل فريتر أفضل", + "@help_make_fritter_even_better": {}, + "report_a_bug": "الإبلاغ عن خطأ", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "دع المطورين يعرفون ما إذا كان هناك خطأ ما", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "التبرع", + "@donate": {}, + "help_support_fritters_future": "ساعد على دعم مستقبل فريتر", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "نسخ العنوان إلى الحافظة", + "@copied_address_to_clipboard": {}, + "licenses": "الرخص", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "كل البرمجيات الرائعة التي يستخدمها فريتر", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "فريتر", + "@fritter": {}, + "released_under_the_mit_license": "منشور تحت رخصة الإم أي تي (MIT License)", + "@released_under_the_mit_license": {}, + "all": "الكل", + "@all": {}, + "newTrans": "الجديد", + "@newTrans": {}, + "no": "لا", + "@no": {}, + "yes": "نعم", + "@yes": {}, + "are_you_sure": "هل أنت متأكد؟", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "هل أنت متأكد من حذف اسم مجموعة الاشتراك {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "toggle_all": "تبديل الكل", + "@toggle_all": {}, + "delete": "حذف", + "@delete": {}, + "ok": "تمام", + "@ok": {}, + "name": "الاسم", + "@name": {}, + "please_enter_a_name": "رجائاً اكتب اسماً", + "@please_enter_a_name": {}, + "pick_a_color": "اختر لون!", + "@pick_a_color": {}, + "import_subscriptions": "استيراد الاشتراكات", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "لاستيراد الاشتراكات من حساب تويتر موجود، أدخل اسم المستخدم أدناه.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "يرجى ملاحظة أن الطريقة التي يستخدمها Quacker لاستيراد الاشتراكات محدودة بشكل كبير من قبل Twitter ، لذلك قد يفشل هذا إذا كان لديك الكثير من الحسابات المتابعة.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "إذا كان لديك أي تعليقات عن هذه الميزة، رجائاً اكتبها هنا", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "تحديد حسابات مفردة، وتعيين مجموعات هما ميزات قد خُطط لها بالفعل للمستقبل!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "ادخل اسم مستخدم للتويتر", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "يجب أن يكون ملف التعريف الخاص بك عاما، وإلا لن يعمل الاستيراد", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "اسم المستخدم", + "@username": {}, + "unable_to_import": "غير قادر على الاستيراد", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} المستخدمين المستوردون حتى الآن", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "تم الانتهاء بـ{snapshotData} مستخدم", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "لا اشتراكات. حاول أن تبحث أو أن تستورد البعض!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "الاستيراد من تويتر", + "@import_from_twitter": {}, + "groups": "المجموعات", + "@groups": {}, + "date_created": "تاريخ الإنشاء", + "@date_created": {}, + "date_subscribed": "تاريخ الاشتراك", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "غير قادر على تحميل الترندات لـ{widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "لم يتم إرجاع أي ترند. هذا غير متوقع! رجائاً أبلغ عن خطأ، إذا كان ممكناً.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "غير قادر على تحديد موقع الترندات.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "البلد", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "غير قادر على بث تفضيل موقع الترندات", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "الترندات", + "@trends": {}, + "tweets_number": "{num, plural, zero{لا تغريدات} one{تغريدة واحدة} two{تغريدتان} few{{numFormatted} تغريدات} many{{numFormatted} تغريدة} other{{numFormatted} تغريدات}}", + "@tweets_number": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "اتنهى {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "يتنهي {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{ولا تصويت} one{تصويت واحد} two{تصويتان} few{{numFormatted} تصويتات} many{{numFormatted} تصويت} other{{numFormatted} تصويتات}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "انقر للعرض {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "تعذر حفظ الوسائط. أعاد تويتر حالة {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "downloading_media": "تحميل الوسائط...", + "@downloading_media": {}, + "successfully_saved_the_media": "تم حفظ الوسائط!", + "@successfully_saved_the_media": {}, + "unknown": "غير معروف", + "@unknown": {}, + "playback_speed": "سرعة التشغيل", + "@playback_speed": {}, + "subtitles": "السطرجة", + "@subtitles": {}, + "live": "مباشر", + "@live": {}, + "download": "تحميل", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} أعاد تغريد {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "sorry_the_replied_tweet_could_not_be_found": "عذرا ، لم يتم العثور على التغريدة التي تم الرد عليها!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "يرد على", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "التغريدة لا تحتوي على أي نص. هذا غير متوقع", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "هذه التغريدة غير متوفرة. ربما تم حذفها.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "التغريدة المثبتة", + "@pinned_tweet": {}, + "thread": "سلسلة", + "@thread": {}, + "unsave": "الغاء الحفظ", + "@unsave": {}, + "save": "حفظ", + "@save": {}, + "share_tweet_content": "مشاركة محتوى التغريدة", + "@share_tweet_content": {}, + "share_tweet_link": "مشاركة رابط التغريدة", + "@share_tweet_link": {}, + "private_profile": "ملف شخصي خاص", + "@private_profile": {}, + "user_not_found": "لم يُعثر على المستخدم", + "@user_not_found": {}, + "account_suspended": "الحساب معلق", + "@account_suspended": {}, + "catastrophic_failure": "فشل ذريع", + "@catastrophic_failure": {}, + "back": "رجوع", + "@back": {}, + "retry": "إعادة المحاوة", + "@retry": {}, + "could_not_contact_twitter": "غير قادر على التواصل مع تويتر", + "@could_not_contact_twitter": {}, + "please_check_your_internet_connection_error_message": "رجائاً تحقق من اتصال الشبكة لديك.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "انتهت المهلة", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "استغرق هذا وقتا طويلا للتحميل. رجائاً تأكد من اتصال الشبكة لديك!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "أوبسي! حدث خطأ ما 🥲", + "@oops_something_went_wrong": {}, + "report": "إبلاغ", + "@report": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "لم يتم إرجاع أي بيانات، وهو ما لا ينبغي أن يحدث أبدا. يرجى الإبلاغ عن وجود خلل، إذا كان ذلك ممكنا!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "التحديثات", + "@updates": {}, + "when_a_new_app_update_is_available": "عندما يكون هناك تحديث جديد للتطبيق", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "هناك تحديث متاح لفريتر! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "انقر للتحميل {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "حدّث إلى {releaseVersion} عبر عميل الـF-Droid لديك", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "فريتر أزرق", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "السمة الزرقاء بنائاً على سمة تويتر", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "حدث خطأ ما في فريتر.", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "غير قادر على تشغيل تحديث قاعدة البيانات", + "@unable_to_run_the_database_migrations": {}, + "unable_to_load_the_next_page_of_tweets": "غير قادر على تحميل الصفحة التالية من التغريدات", + "@unable_to_load_the_next_page_of_tweets": {}, + "filters": "المرشحات", + "@filters": {}, + "joined": "انضم {date}", + "@joined": {}, + "select": "اختيار", + "@select": {}, + "the_github_issue": "مشكلة جيثب (# 143)", + "@the_github_issue": {}, + "download_handling_type_ask": "اسأل دائما", + "@download_handling_type_ask": {}, + "no_results_for": "لا توجد نتائج لـ:", + "@no_results_for": {}, + "close": "اغلاق", + "@close": {}, + "pick_an_icon": "اختر أيقونة!", + "@pick_an_icon": {}, + "search": "البحث", + "@search": {}, + "permission_not_granted": "الإذن غير ممنوح. يرجى المحاولة مرة أخرى بعد منحه!", + "@permission_not_granted": {}, + "share_tweet_content_and_link": "مشاركة محتوى التغريدة والرابط", + "@share_tweet_content_and_link": {}, + "should_check_for_updates_label": "التحقق من وجود تحديثات", + "@should_check_for_updates_label": {}, + "should_check_for_updates_description": "تحقق من وجود تحديثات عندما يبدأ Quacker", + "@should_check_for_updates_description": {}, + "download_handling": "التعامل مع التحميل", + "@download_handling": {}, + "download_handling_description": "كيفية عمل التنزيل", + "@download_handling_description": {}, + "download_handling_type_directory": "حفظ في المسار", + "@download_handling_type_directory": {}, + "download_path": "مسار التنزيل", + "@download_path": {}, + "open_app_settings": "افتح إعدادات التطبيق", + "@open_app_settings": {}, + "choose": "أختر", + "@choose": {}, + "not_set": "لم يتم تعيينه", + "@not_set": {}, + "page_not_found": "تويتر يقول إن الصفحة غير موجودة، ولكن هذا قد لا يكون صحيحا", + "@page_not_found": {}, + "unable_to_refresh_the_subscriptions": "غير قادر على تحديث الاشتراكات", + "@unable_to_refresh_the_subscriptions": {}, + "forbidden": "تويتر يقول إن الوصول إلى هذا ممنوع", + "@forbidden": {}, + "bad_guest_token": "لقد ألغى Twitter رمز الوصول الخاص بنا. من فضلك حاول إعادة فتح Quacker!", + "@bad_guest_token": {}, + "language": "اللغات", + "@language": {}, + "language_subtitle": "يتطلب إعادة تشغيل", + "@language_subtitle": {}, + "download_media_no_url": "غير قادر على تحميل . هذا المحتوى قد يكون متاحا فقط على شكل بث ، فريتر لا يمكنه تحميله .", + "@download_media_no_url": {}, + "possibly_sensitive": "يحتمل أن تكون حساسة", + "@possibly_sensitive": {}, + "theme_mode": "وضع النسق", + "@theme_mode": {}, + "yes_please": "نعم، من فضلك", + "@yes_please": {}, + "possibly_sensitive_tweet": "تحتوي هذه التغريدة على محتوى يحتمل أن يكون حساسا. هل ترغب في مشاهدته؟", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "قد يتضمن ملف التعريف هذا صورًا أو لغة أو محتوى آخر يحتمل أن يكون حساسًا. هل مازلت تريد مشاهدته؟", + "@possibly_sensitive_profile": {}, + "hide_sensitive_tweets": "إخفاء التغريدات الحساسة", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "ما إذا كنت تريد إخفاء التغريدات التي تم وضع علامة عليها على أنها حساسة", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "confirm_close_fritter": "هل أنت متأكد من أنك تريد إغلاق Quacker؟", + "@confirm_close_fritter": {}, + "search_term": "مصطلح البحث", + "@search_term": {}, + "group_name": "المجموعة: {name}", + "@group_name": {}, + "disable_screenshots": "تعطيل لقطات الشاشة", + "@disable_screenshots": {}, + "disable_screenshots_hint": "منع التقاط لقطات الشاشة. قد لا يعمل هذا على جميع الأجهزة.", + "@disable_screenshots_hint": {}, + "home": "الرئيسية", + "@home": {}, + "unable_to_load_home_pages": "تعذر تحميل الصفحات الرئيسية الخاصة بك", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "إعادة تعيين الصفحة إلى القيمة الافتراضية", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "يجب أن يكون لديك على الأقل 2 صفحات الشاشة الرئيسية", + "@you_must_have_at_least_2_home_screen_pages": {}, + "activate_non_confirmation_bias_mode_label": "تفعيل نمط التحيز غير المؤكد", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "إخفاء مؤلفي التغريدات. تجنب التحيز التأكيدي بناء على الحجج الموثوقة.", + "@activate_non_confirmation_bias_mode_description": {}, + "only_public_subscriptions_can_be_imported": "لا يمكن استيراد الاشتراكات إلا من الملفات الشخصية العامة", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "عنوان URL غير مدعوم", + "@unsupported_url": {}, + "saved_tweet_too_large": "تعذر عرض هذه التغريدة المحفوظة لأنها كبيرة جدًا بحيث لا يمكن تحميلها. الرجاء الإبلاغ عن ذلك للمطورين.", + "@saved_tweet_too_large": {}, + "missing_page": "صفحة مفقودة", + "@missing_page": {}, + "two_home_pages_required": "تحتاج إلى صفحتان على الأقل من صفحات الشاشة الرئيسية.", + "@two_home_pages_required": {}, + "choose_pages": "اختيار الصفحات", + "@choose_pages": {}, + "next": "التالي", + "@next": {}, + "finish": "انهاء", + "@finish": {}, + "mute_videos": "كتم صوت مقاطع الفيديو", + "@mute_videos": {}, + "share_base_url": "عنوان URL المخصص للمشاركة", + "@share_base_url": {}, + "mute_video_description": "لتحديد ما إذا كان يجب كتم مقاطع الفيديو افتراضيًا", + "@mute_video_description": {}, + "share_base_url_description": "استخدام عنوان URL أساسي مخصص عند المشاركة", + "@share_base_url_description": {}, + "functionality_unsupported": "لم يعد تويتر يدعم هذه الميزة!", + "@functionality_unsupported": {}, + "add_subscriptions": "إضافة اشتراكات", + "@add_subscriptions": {} +} diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb new file mode 100644 index 00000000..de44b8a7 --- /dev/null +++ b/lib/l10n/intl_be.arb @@ -0,0 +1,462 @@ +{ + "cancel": "Скасаваць", + "@cancel": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Не ўдалося адправіць ping. Код стану быў {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Перарвалася спроба адправіць ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Не ўдалося адправіць ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Даслаць", + "@send": {}, + "unable_to_load_the_tweet": "Не ўдаецца загрузіць твіт", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Не ўдаецца загрузіць групы падпісак", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Дадаць у групу", + "@add_to_group": {}, + "select": "Выбраць", + "@select": {}, + "unsubscribe": "Перастаць чытаць", + "@unsubscribe": {}, + "subscribe": "Чытаць", + "@subscribe": {}, + "reporting_an_error": "Паведаміць аб памылцы", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "Вы хочаце ўключыць аўтаматычнае інфармаванне аб памылках?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Ваша справаздача будзе даслана ў Quacker, а інфармацыю пра канфідэнцыйнасць можна знайсці тут:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Адправіць адзін раз", + "@send_once": {}, + "send_always": "Заўсёды адпраўляць", + "@send_always": {}, + "never_send": "Ніколі не адпраўляць", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Памылка была перададзена ў . Дзякуй!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Дзякуй за паведамленне. Мы пастараемся выправіць гэта ў бліжэйшы час!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Немагчыма загрузіць наступную старонку твітаў", + "@unable_to_load_the_next_page_of_tweets": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Не атрымліваецца знайсці якія-небудзь твіты за апошнія 7 дзён!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Немагчыма загрузіць групу", + "@unable_to_load_the_group": {}, + "filters": "Фільтры", + "@filters": {}, + "include_retweets": "Уключаючы рэтвіты", + "@include_retweets": {}, + "you_have_not_saved_any_tweets_yet": "Вы яшчэ не захавалі ніводнага твіту!", + "@you_have_not_saved_any_tweets_yet": {}, + "default_tab": "Укладка па змаўчанні", + "@default_tab": {}, + "media_size": "Памер медыя", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Эканомце месца на экране, з выявамі меншага памеру", + "@save_bandwidth_using_smaller_images": {}, + "thumbnail": "Мініяцюра", + "@thumbnail": {}, + "small": "Маленькі", + "@small": {}, + "large": "Вялікі", + "@large": {}, + "theme": "Тэма", + "@theme": {}, + "dark": "Цёмная", + "@dark": {}, + "true_black": "Сапраўдны чорны (AMOLED)?", + "@true_black": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Файл не існуе. Калі ласка, упэўніцеся, што ён знаходзіцца па адрасе {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "version": "Версія", + "@version": {}, + "copied_version_to_clipboard": "Версія скапіяваная ў буфер абмену", + "@copied_version_to_clipboard": {}, + "help_make_fritter_even_better": "Дапамажыце зрабіць Quacker яшчэ лепш", + "@help_make_fritter_even_better": {}, + "donate": "Падтрымаць праект", + "@donate": {}, + "downloading_media": "Загрузка медыя...", + "@downloading_media": {}, + "unknown": "Невядомы", + "@unknown": {}, + "download": "Спампаваць", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} ретвітнуў(ла) {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "share_tweet_content_and_link": "Адправіць змесціва і спасылку", + "@share_tweet_content_and_link": {}, + "account_suspended": "Уліковы запіс прыпынены", + "@account_suspended": {}, + "back": "Назад", + "@back": {}, + "timed_out": "Час выйшаў", + "@timed_out": {}, + "oops_something_went_wrong": "Ой! Нешта пайшло не так 🥲", + "@oops_something_went_wrong": {}, + "report": "Паведаміць", + "@report": {}, + "download_handling_description": "Як павінна працаваць спампоўка", + "@download_handling_description": {}, + "download_handling_type_ask": "Заўсёды пытаць", + "@download_handling_type_ask": {}, + "download_handling_type_directory": "Захаваць у тэчку", + "@download_handling_type_directory": {}, + "download_path": "Шлях для спампоўкі", + "@download_path": {}, + "permission_not_granted": "Дазвол не дадзены. Калі ласка, паспрабуйце яшчэ раз пасля прадастаўлення!", + "@permission_not_granted": {}, + "open_app_settings": "Адкрыць налады прыкладання", + "@open_app_settings": {}, + "choose": "Выбраць", + "@choose": {}, + "not_set": "Не ўстаноўлена", + "@not_set": {}, + "language": "Мова", + "@language": {}, + "language_subtitle": "Неабходны перазапуск", + "@language_subtitle": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Ці варта хаваць твіты, пазначаныя як чуллівыя", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "disable_screenshots_hint": "Прадухіленне стварэння скрыншотаў. Гэта можа працаваць не на ўсіх прыладах.", + "@disable_screenshots_hint": {}, + "possibly_sensitive": "Магчыма чулліва", + "@possibly_sensitive": {}, + "home": "Галоўная", + "@home": {}, + "reset_home_pages": "Скід старонак да значэнняў па змаўчанні", + "@reset_home_pages": {}, + "group_name": "Група: {name}", + "@group_name": {}, + "are_you_sure": "Вы ўпэўнены?", + "@are_you_sure": {}, + "delete": "Выдаліць", + "@delete": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Вы ўпэўненыя, што жадаеце выдаліць групу падпісак {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "toggle_all": "Выбраць усе", + "@toggle_all": {}, + "ok": "Добра", + "@ok": {}, + "search": "Пошук", + "@search": {}, + "name": "Імя", + "@name": {}, + "unable_to_import": "Не атрымоўваецца імпартаваць", + "@unable_to_import": {}, + "please_enter_a_name": "Калі ласка, увядзіце імя", + "@please_enter_a_name": {}, + "pick_a_color": "Абярыце колер!", + "@pick_a_color": {}, + "imported_snapshot_data_users_so_far": "Імпартавана {snapshotData} акаўнтаў на дадзены момант", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Завершана праца з акаўнтамі {snapshotData}", + "@finished_with_snapshotData_users": {}, + "import_from_twitter": "Імпартаваць з Twitter", + "@import_from_twitter": {}, + "pick_an_icon": "Выберыце іконку!", + "@pick_an_icon": {}, + "enter_your_twitter_username": "Увядзіце Ваша імя карыстальніка ў Twitter", + "@enter_your_twitter_username": {}, + "no_results_for": "Вынікі адсутнічаюць:", + "@no_results_for": {}, + "close": "Закрыць", + "@close": {}, + "import_subscriptions": "Імпартаваць падпіскі", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Каб імпартаваць падпіскі з існуючага акаўнта Twitter, увядзіце сваё імя карыстальніка ніжэй.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "the_github_issue": "Прапанова GitHub (#143)", + "@the_github_issue": {}, + "username": "Імя карыстальніка", + "@username": {}, + "trends": "Актуальныя тэмы", + "@trends": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Немагчыма захаваць мэдыяфайл. Twitter вярнуў статус {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Улічыце, што метад, які выкарыстоўвае Quacker для імпарту падпісак, вельмі абмежаваны хуткасцю Twitter, таму пры наяўнасці вялікай колькасці падпісак гэта можа не спрацаваць.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Калі ў вас ёсць водгукі аб гэтай функцыі, калі ласка, пакіньце іх на", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Выбар асобных акаўнтаў для імпарту і прызначэнне груп ужо запланаваны на будучыню!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "unable_to_find_the_available_trend_locations": "Немагчыма знайсці даступныя краіны для актуальнага.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "Краіна", + "@country": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Ваш профіль павінен быць адкрытым, інакш імпарт ня будзе працаваць", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "no_subscriptions_try_searching_or_importing_some": "Няма падпісак. Паспрабуйце пашукаць або імпартаваць нешта!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "date_created": "Дата стварэння", + "@date_created": {}, + "unable_to_refresh_the_subscriptions": "Немагчыма абнавіць падпіскі", + "@unable_to_refresh_the_subscriptions": {}, + "date_subscribed": "Дата падпіскі", + "@date_subscribed": {}, + "save": "Захаваць", + "@save": {}, + "share_tweet_link": "Падзяліцца спасылкай на твіт", + "@share_tweet_link": {}, + "page_not_found": "Twitter кажа, што гэтая старонка не існуе, але гэта можа быць няпраўдай", + "@page_not_found": {}, + "catastrophic_failure": "Крытычная памылка", + "@catastrophic_failure": {}, + "bad_guest_token": "Twitter прызнаў несапраўдным наш маркер доступу. Калі ласка, паспрабуйце зноў адкрыць Quacker!", + "@bad_guest_token": {}, + "user_not_found": "Карыстальнік не знойдзены", + "@user_not_found": {}, + "this_group_contains_no_subscriptions": "У гэтай групе няма падпісак!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Не атрымалася знайсці ні аднаго твіту гэтага карыстальніка!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Не ўдаецца загрузіць наступную старонку адказаў", + "@unable_to_load_the_next_page_of_replies": {}, + "could_not_contact_twitter": "Не атрымоўваецца звязацца з Twitter", + "@could_not_contact_twitter": {}, + "please_check_your_internet_connection_error_message": "Калі ласка, праверце вашае сеткавае падлучэнне.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Загрузка заняла зашмат часу. Калі ласка, праверце ваша сеткавае падключэнне!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Ніякія дадзеныя не былі вернуты, чаго ніколі не павінна адбывацца. Калі ласка, паведамце аб памылцы, калі гэта магчыма!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Абнаўленні", + "@updates": {}, + "unable_to_run_the_database_migrations": "Не ўдалося зрабіць перамяшчэнне базы даных", + "@unable_to_run_the_database_migrations": {}, + "when_a_new_app_update_is_available": "Калі новае абнаўленне даступна", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Абнаўленне Quacker даступна! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Націсніце, каб усталяваць {releaseVersion}", + "@tap_to_download_release_version": {}, + "something_broke_in_fritter": "Нешта пайшло не так.", + "@something_broke_in_fritter": {}, + "update_to_release_version_through_your_fdroid_client": "Абнавіць да {releaseVersion} праз кліент F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "should_check_for_updates_description": "Правяраць наяўнасць абнаўленняў пры запуску", + "@should_check_for_updates_description": {}, + "download_handling": "Апрацоўка загрузкі", + "@download_handling": {}, + "should_check_for_updates_label": "Праверыць абнаўлення", + "@should_check_for_updates_label": {}, + "unable_to_load_the_trends_for_widget_place_name": "Немагчыма загрузіць актуальнае для {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Не было вернута нічога з актуальнага. Гэта нечакана! Калі ласка, паведаміце аб гэтым як аб памылцы, калі гэта магчыма.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_stream_the_trend_location_preference": "Немагчыма выканаць перадачу мясцовых пераваг", + "@unable_to_stream_the_trend_location_preference": {}, + "tweets_number": "{num, plural, zero{няма твітаў} one{твіт} two{твіта} few{{numFormatted} твіты} many{{numFormatted} твитаў} other{{numFormatted} твит}}", + "@tweets_number": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Завершана {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "playback_speed": "Хуткасць прайгравання", + "@playback_speed": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Завершыцца праз {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "tap_to_show_getMediaType_item_type": "Націсніце, каб паказаць {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "numberFormat_format_total_votes": "{num, plural, zero{няма галасоў} one{голас} two{галасы} few{{numFormatted} галасы} many{{numFormatted} галасоў} other{{numFormatted} голас}}", + "@numberFormat_format_total_votes": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Сіняя тэма, заснаваная на каляровай схеме Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "live": "Прамы эфір", + "@live": {}, + "replying_to": "Адказаць", + "@replying_to": {}, + "successfully_saved_the_media": "Файл захаваны!", + "@successfully_saved_the_media": {}, + "download_media_no_url": "Немагчыма загрузіць. Гэта медыя можа быць даступна толькі ў выглядзе патоку, які Quacker пакуль не можа загрузіць.", + "@download_media_no_url": {}, + "subtitles": "Субцітры", + "@subtitles": {}, + "sorry_the_replied_tweet_could_not_be_found": "На жаль, твіт з адказам не знойдзены!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Твіт не змяшчаў ніякага тэксту. Гэта нечакана", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "pinned_tweet": "Замацаваны твіт", + "@pinned_tweet": {}, + "unsave": "Адмяніць захаванне", + "@unsave": {}, + "this_tweet_is_unavailable": "Гэты твіт недаступны. Магчыма ён быў выдалены.", + "@this_tweet_is_unavailable": {}, + "share_tweet_content": "Падзяліцца змесцівам твіту", + "@share_tweet_content": {}, + "private_profile": "Прыватны профіль", + "@private_profile": {}, + "thread": "Галінка", + "@thread": {}, + "forbidden": "Twitter кажа, што доступ да гэтага забаронены", + "@forbidden": {}, + "retry": "Паўтарыць", + "@retry": {}, + "fritter_blue": "Quacker blue", + "@fritter_blue": {}, + "following": "Чытае", + "@following": {}, + "followers": "Чытачы", + "@followers": {}, + "joined": "Рэгістрацыя: {date}", + "@joined": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Нешта пайшло не так у Quacker, і была створаная справаздача аб памылцы. Справаздачу можна адправіць распрацоўнікам Quacker, каб яны маглі ўхіліць праблему.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "don_not_send": "Не адпраўляць", + "@don_not_send": {}, + "unable_to_load_the_tweets_for_the_feed": "Не атрымліваецца загрузіць твіты для стужкі", + "@unable_to_load_the_tweets_for_the_feed": {}, + "unable_to_load_the_group_settings": "Немагчыма загрузіць наладкі групы", + "@unable_to_load_the_group_settings": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Заўвага: У сувязі з абмежаваннем Twitter, не ўсе твіты могуць быць уключаны", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Уключаючы адказы", + "@include_replies": {}, + "no_results": "Нічога не знойдзена", + "@no_results": {}, + "unable_to_find_your_saved_tweets": "Немагчыма знайсці вашыя захаваныя твіты.", + "@unable_to_find_your_saved_tweets": {}, + "unable_to_load_the_search_results": "Немагчыма загрузіць вынікі пошуку.", + "@unable_to_load_the_search_results": {}, + "unable_to_load_the_profile": "Немагчыма загрузіць профіль", + "@unable_to_load_the_profile": {}, + "data_exported_to_fullPath": "Дадзеныя экспартуюцца ў {fullPath}", + "@data_exported_to_fullPath": {}, + "feed": "Стужка", + "@feed": {}, + "subscriptions": "Падпіскі", + "@subscriptions": {}, + "light": "Светлая", + "@light": {}, + "import": "Імпартаваць", + "@import": {}, + "enable_": "Актываваць ?", + "@enable_": {}, + "copied_address_to_clipboard": "Адрас скапіяваны ў буфер абмену", + "@copied_address_to_clipboard": {}, + "trending": "Актуальнае", + "@trending": {}, + "unable_to_load_the_next_page_of_follows": "Не атрымоўваецца загрузіць наступную старонку чытаемых", + "@unable_to_load_the_next_page_of_follows": {}, + "data_exported_to_fileName": "Дадзеныя экспартуюцца ў {fileName}", + "@data_exported_to_fileName": {}, + "saved": "Захаванае", + "@saved": {}, + "unable_to_load_the_tweets": "Не атрымоўваецца загрузіць твіты", + "@unable_to_load_the_tweets": {}, + "tweets": "Твіты", + "@tweets": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Выглядае на тое, што вы ўжо нас прывіталі ад гэтай версіі Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "unable_to_load_the_list_of_follows": "Не атрымоўваецца загрузіць спіс падпісак", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_follow_anyone": "Гэты карыстальнік нікога не чытае!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Гэтага карыстальніка ніхто не чытае!", + "@this_user_does_not_have_anyone_following_them": {}, + "media": "Медыя", + "@media": {}, + "tweets_and_replies": "Твіты і Адказы", + "@tweets_and_replies": {}, + "export": "Экспартаваць", + "@export": {}, + "export_settings": "Экспартаваць наладкі?", + "@export_settings": {}, + "export_subscription_groups": "Экспартаваць групы падпісак?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Экспартаваць удзельнікаў груп падпісак?", + "@export_subscription_group_members": {}, + "export_tweets": "Экспартаваць твіты?", + "@export_tweets": {}, + "export_subscriptions": "Экспартаваць падпіскі?", + "@export_subscriptions": {}, + "data_imported_successfully": "Дадзеныя паспяхова імпартаваны", + "@data_imported_successfully": {}, + "thanks_for_helping_fritter": "Дзякуй за дапамогу Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Падобна, што вы ўжо адпраўлялі пінг нядаўна 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Вось дадзеныя, якія будуць адпраўлены. Яны будуць скарыстаны толькі для вызначэння таго, якія прылады і мовы будуць падтрымлівацца ў Quacker у будучыні.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Адпраўце ананімны пінг, каб я ведаў, што вы карыстаецеся Quacker, і каб дапамагчы будучай распрацоўцы", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Асноўныя", + "@general": {}, + "which_tab_is_shown_when_the_app_opens": "Якая ўкладка адлюстроўваецца пры адкрыцці дадатку", + "@which_tab_is_shown_when_the_app_opens": {}, + "activate_non_confirmation_bias_mode_description": "Схаваць аўтараў твітаў. Пазбягайце прадузятасці пацверджання, заснаванага на аўтарытэтных аргументах.", + "@activate_non_confirmation_bias_mode_description": {}, + "whether_errors_should_be_reported_to_": "Паведамляць пра памылкі ў ", + "@whether_errors_should_be_reported_to_": {}, + "licenses": "Ліцэнзіі", + "@licenses": {}, + "disabled": "Адключана", + "@disabled": {}, + "data": "Дадзеныя", + "@data": {}, + "prefix": "прэфікс", + "@prefix": {}, + "theme_mode": "Тэма", + "@theme_mode": {}, + "use_true_black_for_the_dark_mode_theme": "Выкарыстоўваць сапраўдны чорны (AMOLED) для цёмнай тэмы", + "@use_true_black_for_the_dark_mode_theme": {}, + "activate_non_confirmation_bias_mode_label": "Уключыць рэжым зрушэння без пацверджання", + "@activate_non_confirmation_bias_mode_label": {}, + "medium": "Сярэдні", + "@medium": {}, + "import_data_from_another_device": "Імпартаваць дадзеныя з іншай прылады", + "@import_data_from_another_device": {}, + "legacy_android_import": "Імпарт з устарэлай версіі Android", + "@legacy_android_import": {}, + "system": "Сістэмная", + "@system": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Пераканайцеся, што дадзеныя, якія вы хочаце імпартаваць, знаходзяцца там, затым націсніце кнопку імпарту ніжэй.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Экспартаваць вашыя дадзеныя", + "@export_your_data": {}, + "let_the_developers_know_if_something_is_broken": "Паведаміце распрацоўшчыкам калі нешта пайшло не так", + "@let_the_developers_know_if_something_is_broken": {}, + "logging": "Журнал", + "@logging": {}, + "about": "Аб праграме", + "@about": {}, + "contribute": "Падтрымаць", + "@contribute": {}, + "help_support_fritters_future": "Падтрымайце будучыню Quacker", + "@help_support_fritters_future": {}, + "fritter": "Quacker", + "@fritter": {}, + "no": "Не", + "@no": {}, + "report_a_bug": "Паведаміць аб памылцы", + "@report_a_bug": {}, + "groups": "Групы", + "@groups": {}, + "all_the_great_software_used_by_fritter": "Усё выдатнае праграмнае забеспячэнне, якое выкарыстоўваецца Quacker", + "@all_the_great_software_used_by_fritter": {}, + "newTrans": "Новыя", + "@newTrans": {}, + "released_under_the_mit_license": "Апублікавана пад ліцэнзіяй MIT", + "@released_under_the_mit_license": {}, + "all": "Усе", + "@all": {}, + "yes": "Так", + "@yes": {}, + "yes_please": "Так, калі ласка", + "@yes_please": {}, + "search_term": "Пошукавы запыт", + "@search_term": {}, + "disable_screenshots": "Адключыць скрыншоты", + "@disable_screenshots": {}, + "possibly_sensitive_profile": "Гэты профіль можа змяшчаць патэнцыйна чуллівыя выявы, выказванні або іншае змесціва. Вы ўсё яшчэ хочаце прагледзець яго?", + "@possibly_sensitive_profile": {}, + "unable_to_load_home_pages": "Немагчыма загрузіць галоўную старонку", + "@unable_to_load_home_pages": {}, + "hide_sensitive_tweets": "Хаваць чуллівы кантэнт", + "@hide_sensitive_tweets": {}, + "possibly_sensitive_tweet": "Гэты твіт змяшчае патэнцыйна чуллівы кантэнт. Вы сапраўды хочаце яго паглядзець?", + "@possibly_sensitive_tweet": {}, + "confirm_close_fritter": "Вы сапраўды хочаце закрыць Quacker?", + "@confirm_close_fritter": {}, + "you_must_have_at_least_2_home_screen_pages": "Вы павінны ўсталяваць як мінімум дзве старонкі для галоўнага экрана", + "@you_must_have_at_least_2_home_screen_pages": {} +} diff --git a/lib/l10n/intl_be_Latn.arb b/lib/l10n/intl_be_Latn.arb new file mode 100644 index 00000000..2e8055cf --- /dev/null +++ b/lib/l10n/intl_be_Latn.arb @@ -0,0 +1,124 @@ +{ + "unable_to_load_the_tweets_for_the_feed": "Niemahčyma zahruzić tvity dla stužki", + "@unable_to_load_the_tweets_for_the_feed": {}, + "filters": "Filtry", + "@filters": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Dziakuj za spravazdaču. My pastarajemsia vypravić heta ŭ bližejšy čas!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_group_settings": "Niemahčyma zahruzić nałady hrupy", + "@unable_to_load_the_group_settings": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Zaŭvaha: U suviazi z abmiežavańniem Twitter, nie ŭsie tvity mohuć być uklučany", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "unable_to_load_the_list_of_follows": "Niemahčyma zahruzić śpis padpisak", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_follow_anyone": "Hety karystalnik nikoha nie čytaje!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Hetaha karystalnika nichto nie čytaje!", + "@this_user_does_not_have_anyone_following_them": {}, + "tweets": "Tvity", + "@tweets": {}, + "tweets_and_replies": "Tvity dy Adkazy", + "@tweets_and_replies": {}, + "export_tweets": "Ekspartavać tvity?", + "@export_tweets": {}, + "export_subscription_group_members": "Ekspartavać udzielnikaŭ hrup padpisak?", + "@export_subscription_group_members": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Vyhladaje na toje, što vy ŭžo nas pryvitali ad hetaj versyi Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "this_group_contains_no_subscriptions": "U hetaj hrupie niama padpisak!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Nie atrymałasia znajści ni adnaho tvitu hetaha karystalnika!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Nie ŭdajecca zahruzić nastupnuju staronku adkazaŭ", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Nie ŭdajecca zahruzić tvit", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Nie ŭdajecca zahruzić hrupy padpisak", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Dadać u hrupu", + "@add_to_group": {}, + "select": "Vybrać", + "@select": {}, + "unsubscribe": "Adpisacca", + "@unsubscribe": {}, + "subscribe": "Padpisacca", + "@subscribe": {}, + "reporting_an_error": "Paviedamić ab pamyłcy", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Niešta pajšło nie tak u Quacker, i była stvorana spravazdača ab pamyłcy. Spravazdaču možna adpravić raspracoŭnikam Quacker, kab dapamahčy vypravić prablemu.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Ci žadajecie vy ŭklučyć aŭtamatyčnaje infarmavańnie ab pamyłkach?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Vaša spravazdača budzie dasłana ŭ Quacker, a infarmacyju pra kanfidencyjnaść možna znajści tut:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Adpravić adzin raz", + "@send_once": {}, + "send_always": "Adpraŭlać zaŭsiody", + "@send_always": {}, + "don_not_send": "Nie adpraŭlać", + "@don_not_send": {}, + "never_send": "Nikoli nie adpraŭlać", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Pamyłka była pieradadziena ŭ . Dziakuj!", + "@an_error_was_reported_to__thank_you": {}, + "unable_to_load_the_next_page_of_tweets": "Niemahčyma zahruzić nastupnuju staronku tvitaŭ", + "@unable_to_load_the_next_page_of_tweets": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Nie atrymlivajecca znajści jakija-niebudź tvity za apošnija 7 dzion!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Niemahčyma zahruzić hrupu", + "@unable_to_load_the_group": {}, + "include_replies": "Uklučajučy adkazy", + "@include_replies": {}, + "include_retweets": "Uklučajučy retvity", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Niemahčyma znajści vašyja zachavanyja tvity.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Vy jašče nie zachavali nivodnaha tvitu!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Niemahčyma zahruzić vyniki pošuku.", + "@unable_to_load_the_search_results": {}, + "no_results": "Niama vyniku", + "@no_results": {}, + "feed": "Stužka", + "@feed": {}, + "subscriptions": "Padpiski", + "@subscriptions": {}, + "trending": "Aktualnaje", + "@trending": {}, + "saved": "Zachavanaje", + "@saved": {}, + "unable_to_load_the_next_page_of_follows": "Niemahčyma zahruzić nastupnuju staronku čytalnych", + "@unable_to_load_the_next_page_of_follows": {}, + "unable_to_load_the_tweets": "Niemahčyma zahruzić tvity", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Niemahčyma zahruzić profil", + "@unable_to_load_the_profile": {}, + "media": "Medyja", + "@media": {}, + "following": "Čytaje", + "@following": {}, + "followers": "Čytačy", + "@followers": {}, + "joined": "Dałučyŭsia(-łasia) {date}", + "@joined": {}, + "export": "Ekspartavać", + "@export": {}, + "data_exported_to_fullPath": "Dadzienyja ekspartujucca ŭ {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "Dadzienyja ekspartujucca ŭ {fileName}", + "@data_exported_to_fileName": {}, + "export_settings": "Ekspartavać nałady?", + "@export_settings": {}, + "export_subscriptions": "Ekspartavać padpiski?", + "@export_subscriptions": {}, + "export_subscription_groups": "Ekspartavać hrupy padpisak?", + "@export_subscription_groups": {}, + "data_imported_successfully": "Dadzienyja paśpiachova impartavany", + "@data_imported_successfully": {}, + "cancel": "Skasavać", + "@cancel": {}, + "thanks_for_helping_fritter": "Dziakuj za dapamohu Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Padobna, što vy ŭžo adpraŭlali pinh niadaŭna 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {} +} diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb new file mode 100644 index 00000000..0399714e --- /dev/null +++ b/lib/l10n/intl_ca.arb @@ -0,0 +1,466 @@ +{ + "this_group_contains_no_subscriptions": "Aquest grup no conté subscripcions!", + "@this_group_contains_no_subscriptions": {}, + "unable_to_load_the_next_page_of_replies": "No s'ha pogut carregar la pròxima pàgina de respostes", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_subscription_groups": "No s'han pogut carregar les subscripcions als grups", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Afegir al grup", + "@add_to_group": {}, + "could_not_find_any_tweets_by_this_user": "No s'ha trobat cap tuit d'aquest usuari!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_tweet": "No s'ha pogut carregat el tuit", + "@unable_to_load_the_tweet": {}, + "subscribe": "Subscriure", + "@subscribe": {}, + "reporting_an_error": "Reportar un error", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "Voleu habilitar l'informe automàtic d'errors?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "L'informe s'enviarà al projecte de Quacker, els detalls de privadesa es poden trobar a:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Enviar una vegada", + "@send_once": {}, + "send_always": "Enviar sempre", + "@send_always": {}, + "don_not_send": "No enviar", + "@don_not_send": {}, + "never_send": "No enviar mai", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "S'ha reportat un error a . Moltes gràcies!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Gràcies per informar. Intentarem solucionar-ho de seguida!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_tweets_for_the_feed": "No es poden carregar els tuits del canal de Continguts", + "@unable_to_load_the_tweets_for_the_feed": {}, + "unable_to_load_the_group": "No s'ha pogut carregar el grup", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "No es pot carregar la configuració del grup", + "@unable_to_load_the_group_settings": {}, + "filters": "Filtres", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Nota: A causa d'una limitació de Twitter, no es poden incloure tots els tuits", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "could_not_find_any_tweets_from_the_last_7_days": "No s'han trobat tuits dels últims 7 dies!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_find_your_saved_tweets": "No s'han pogut trobar els tweets desats.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Encara no has desat cap tweet!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "No s'han pogut carregar els resultats de la cerca.", + "@unable_to_load_the_search_results": {}, + "no_results": "Sense resultats", + "@no_results": {}, + "feed": "Continguts", + "@feed": {}, + "unable_to_load_the_list_of_follows": "No es pot carregar la llista de Seguint", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "No es pot carregar la pàgina següent de Seguint", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_have_anyone_following_them": "Aquest usuari no té ningú que els segueixi!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "No s'han pogut carregar els tweets", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "No s'ha pogut carregar el perfil", + "@unable_to_load_the_profile": {}, + "tweets_and_replies": "Tweets i Respostes", + "@tweets_and_replies": {}, + "media": "Mèdia", + "@media": {}, + "following": "Seguint", + "@following": {}, + "followers": "Seguidors", + "@followers": {}, + "joined": "Es va unir el {date}", + "@joined": {}, + "export": "Exportar", + "@export": {}, + "tweets": "Tuits", + "@tweets": {}, + "export_settings": "Exportar la configuració?", + "@export_settings": {}, + "export_subscriptions": "Exportar les subscripcions?", + "@export_subscriptions": {}, + "export_subscription_groups": "Exportar els grups de subscripcions?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Exportar els membres dels grups de subscripcions?", + "@export_subscription_group_members": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Aquestes són les dades que s'enviaran. Només s'utilitzaràn per determinar en quins dispositius i idiomes donarà suport Quacker en el futur.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Envia un ping no identificatiu per fer-me saber que estàs utilitzant Quacker i ajudar-me amb el futur desenvolupament", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "General", + "@general": {}, + "default_tab": "Pestanya per defecte", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Quina pestanya es mostra quan s'obre l'aplicació", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Tamany de mèdia", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Estalviar amplada de banda amb imatges més petites", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Deshabilitat", + "@disabled": {}, + "thumbnail": "Miniatura", + "@thumbnail": {}, + "small": "Petit", + "@small": {}, + "medium": "Mitjà", + "@medium": {}, + "large": "Gran", + "@large": {}, + "theme": "Tema", + "@theme": {}, + "system": "Sistema", + "@system": {}, + "true_black": "Veritablement Fosc?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Utilitza negre veritable per al tema del mode fosc", + "@use_true_black_for_the_dark_mode_theme": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "El fitxer no existeix. Assegureu-vos que es troba a {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "prefix", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Assegura't que les dades a importar es troben en aquesta direcció, i prem el botó d'importar a continuació.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Expotar les teves dades", + "@export_your_data": {}, + "enable_": "Habilitar ?", + "@enable_": {}, + "about": "Quant a", + "@about": {}, + "version": "Versió", + "@version": {}, + "contribute": "Col·laborar", + "@contribute": {}, + "help_make_fritter_even_better": "Ajuda a fer que Quacker sigui encara millor", + "@help_make_fritter_even_better": {}, + "report_a_bug": "Informar d'un error", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Fes saber als desenvolupadors si alguna cosa s'ha trencat", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Donar", + "@donate": {}, + "help_support_fritters_future": "Ajuda a donar suport al futur de Quacker", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "S'ha copiat l'adreça al porta-retalls", + "@copied_address_to_clipboard": {}, + "licenses": "Llicències", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Tot el genial programari utilitzat per Quacker", + "@all_the_great_software_used_by_fritter": {}, + "released_under_the_mit_license": "Llançat sota la llicència MIT", + "@released_under_the_mit_license": {}, + "all": "Tot", + "@all": {}, + "yes": "Sí", + "@yes": {}, + "are_you_sure": "N'estàs segur?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Estàs segur que vols suprimir el grup de subscripcions {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "toggle_all": "Commuta-ho tot", + "@toggle_all": {}, + "delete": "Eliminar", + "@delete": {}, + "ok": "D'acord", + "@ok": {}, + "name": "Nom", + "@name": {}, + "please_enter_a_name": "Si us plau introdueix un nom", + "@please_enter_a_name": {}, + "pick_a_color": "Tria un color!", + "@pick_a_color": {}, + "import_subscriptions": "Importar subscripcions", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Per importar subscripcions des d'un compte de Twitter existent, introduïu el vostre nom d'usuari a continuació.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Tingueu en compte que el mètode que Quacker utilitza per importar subscripcions està fortament limitat per Twitter, de manera que això pot fallar si teniu molts comptes seguits.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Si tens algun comentari sobre aquesta funció, deixeu-la a", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "enter_your_twitter_username": "Introdeix el teu nom d'usuari de Twitter", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "El teu perfil ha de ser públic, en cas contrari la importació no funcionarà", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "finished_with_snapshotData_users": "Finalitzat amb {snapshotData} usuaris", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "No hi ha subscripcions. Prova de cercar-ne o importar-ne alguna!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Importar de Twitter", + "@import_from_twitter": {}, + "groups": "Grups", + "@groups": {}, + "date_created": "Data de Creació", + "@date_created": {}, + "date_subscribed": "Data de Subscripció", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "No s'han pogut carregar les tendències per {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "No s'han retornat les tendències. Això és inesperat! Si us plau, informeu-ho com a error, si és possible.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "No s'han pogut trobar les ubicacions de tendència disponibles.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "País", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "No s'ha pogut transmetre la preferència d'ubicació de la tendència", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Tendències", + "@trends": {}, + "tweets_number": "{num, plural, zero{cap tweets} one{un tweet} two{dos tweets} few{{numFormatted} tweets} many{{numFormatted} tweet} other{{numFormatted} tweets}}", + "@tweets_number": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Acabat {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Acaba {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Cap vot} one{Un vot} two{Dos vots} few{{numFormatted} vots} many{{numFormatted} vot} other{{numFormatted} vots}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Fes un toc per mostrar {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "successfully_saved_the_media": "Suport desat!", + "@successfully_saved_the_media": {}, + "unknown": "Desconegut", + "@unknown": {}, + "playback_speed": "Velocitat de reproducció", + "@playback_speed": {}, + "subtitles": "Subtítols", + "@subtitles": {}, + "live": "DIRECTE", + "@live": {}, + "download": "Descarregar", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} retuitejat {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "replying_to": "Responent a", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "El tuit no contenia text. Això és inesperat", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Aquest tuit no està disponible. Provablement s'ha eliminat.", + "@this_tweet_is_unavailable": {}, + "account_suspended": "Compte suspés", + "@account_suspended": {}, + "catastrophic_failure": "Error catastròfic", + "@catastrophic_failure": {}, + "back": "Enrere", + "@back": {}, + "please_check_your_internet_connection_error_message": "Comprova la connexió a Internet.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Temps excedit", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Ha trigat massa a carregar-se. Comprova la connexió de xarxa!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "Ui! Alguna cosa ha anat malament 🥲", + "@oops_something_went_wrong": {}, + "report": "Reportar", + "@report": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "No s'han retornat dades, cosa que no hauria de passar mai. Si us plau, informa de l'error, si és possible!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Actualitzacions", + "@updates": {}, + "when_a_new_app_update_is_available": "Quan hi ha disponible una nova actualització d'una aplicació", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Hi ha disponible una actualització per Quacker! 🚀", + "@an_update_for_fritter_is_available": {}, + "update_to_release_version_through_your_fdroid_client": "Actualitza-ho a {releaseVersion} a través del client de F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker blau", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Tema blau basat en l'esquema de colors de Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "S'ha trencat alguna cosa a Quacker.", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "No s'han pogut executar les migracions de la base de dades", + "@unable_to_run_the_database_migrations": {}, + "unsubscribe": "Anul·lar subscripció", + "@unsubscribe": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Alguna cosa ha sortit malament a Quacker i s'ha generat un informe d'error. L'informe es pot enviar als desenvolupadors de Quacker per ajudar a solucionar el problema.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "unable_to_load_the_next_page_of_tweets": "No es pot carregar la següent pàgina de tuits", + "@unable_to_load_the_next_page_of_tweets": {}, + "thanks_for_helping_fritter": "Gràcies per ajudar a Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Sembla que ja has enviat un ping recentment 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "include_retweets": "Incloure retuits", + "@include_retweets": {}, + "include_replies": "Incloure respostes", + "@include_replies": {}, + "subscriptions": "Subscripcions", + "@subscriptions": {}, + "trending": "Tendències", + "@trending": {}, + "saved": "Desat", + "@saved": {}, + "this_user_does_not_follow_anyone": "Aquest usuari no segueix a ningú!", + "@this_user_does_not_follow_anyone": {}, + "data_exported_to_fullPath": "Dades exportades a {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "Dades exportades a {fileName}", + "@data_exported_to_fileName": {}, + "export_tweets": "Exportar tuits?", + "@export_tweets": {}, + "data_imported_successfully": "Dades importades correctament", + "@data_imported_successfully": {}, + "timed_out_trying_to_send_the_ping": "S'ha esgotat el temps intentant enviar el ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Sembla que ja has saludat des d'aquesta versió de Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "Cancelar", + "@cancel": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "No es pot enviar el ping. El codi d'estatus és {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "say_hello": "Saluda", + "@say_hello": {}, + "unable_to_send_the_ping_e_to_string": "No s'ha pogut enviar el ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Enviar", + "@send": {}, + "say_hello_emoji": "Saluda 👋", + "@say_hello_emoji": {}, + "data": "Dades", + "@data": {}, + "import": "Importar", + "@import": {}, + "dark": "Fosc", + "@dark": {}, + "import_data_from_another_device": "Importa dades des d'un altre dispositiu", + "@import_data_from_another_device": {}, + "legacy_android_import": "Importa de Legacy Android", + "@legacy_android_import": {}, + "light": "Clar", + "@light": {}, + "logging": "Enregistrament", + "@logging": {}, + "whether_errors_should_be_reported_to_": "Si s'han d'informar els errors a ", + "@whether_errors_should_be_reported_to_": {}, + "copied_version_to_clipboard": "Versió copiada al porta-retalls", + "@copied_version_to_clipboard": {}, + "newTrans": "Nou", + "@newTrans": {}, + "fritter": "Quacker", + "@fritter": {}, + "no": "No", + "@no": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "La selecció de comptes individuals per importar i l'assignació de grups ja estan planificats per al futur!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "No s'ha pogut desar el suport. Twitter ha retornat un estat de {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "username": "Nom d'usuari", + "@username": {}, + "unable_to_import": "No s'ha pogut importar", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} usuaris importats per ara", + "@imported_snapshot_data_users_so_far": {}, + "could_not_contact_twitter": "No s'ha pogut contactar amb Twitter", + "@could_not_contact_twitter": {}, + "user_not_found": "Usuari no trobat", + "@user_not_found": {}, + "downloading_media": "Descarregant suports...", + "@downloading_media": {}, + "share_tweet_content": "Compartir el contingut del tuit", + "@share_tweet_content": {}, + "private_profile": "Perfil privat", + "@private_profile": {}, + "sorry_the_replied_tweet_could_not_be_found": "Disculpa, el tuit contestat no s'ha pogut trobar!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "thread": "Fil", + "@thread": {}, + "share_tweet_link": "Compartir l'enllaç del tuit", + "@share_tweet_link": {}, + "pinned_tweet": "Tuit ancorat", + "@pinned_tweet": {}, + "retry": "Reintentar", + "@retry": {}, + "unsave": "Desfés", + "@unsave": {}, + "save": "Desa", + "@save": {}, + "tap_to_download_release_version": "Fes un toc per descarregar {releaseVersion}", + "@tap_to_download_release_version": {}, + "select": "Selecciona", + "@select": {}, + "pick_an_icon": "Escull una icona!", + "@pick_an_icon": {}, + "search": "Cerca", + "@search": {}, + "no_results_for": "Cap resultat per:", + "@no_results_for": {}, + "close": "Tanca", + "@close": {}, + "the_github_issue": "el problema de GitHub (#143)", + "@the_github_issue": {}, + "share_tweet_content_and_link": "Comparteix contingut i enllaç del tuit", + "@share_tweet_content_and_link": {}, + "should_check_for_updates_label": "Comprova si hi ha actualitzacions", + "@should_check_for_updates_label": {}, + "should_check_for_updates_description": "Comprova si hi ha actualitzacions a l'iniciar Quacker", + "@should_check_for_updates_description": {}, + "download_handling": "Gestió de baixades", + "@download_handling": {}, + "download_handling_description": "Com ha de funcionar la baixada", + "@download_handling_description": {}, + "download_handling_type_ask": "Pregunta sempre", + "@download_handling_type_ask": {}, + "open_app_settings": "Obre la configuració de l'aplicació", + "@open_app_settings": {}, + "download_handling_type_directory": "Desa al directori", + "@download_handling_type_directory": {}, + "download_path": "Ruta de descàrrega", + "@download_path": {}, + "permission_not_granted": "No s'ha concedit el permís. Torneu-ho a provar després de concedir-lo!", + "@permission_not_granted": {}, + "choose": "Tria", + "@choose": {}, + "not_set": "No establert", + "@not_set": {}, + "unable_to_refresh_the_subscriptions": "No s'han pogut actualitzar les subscripcions", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter diu que la pàgina no existeix, però pot ser que no sigui veritat", + "@page_not_found": {}, + "forbidden": "El Twitter diu que l'accés a això està prohibit", + "@forbidden": {}, + "bad_guest_token": "El Twitter ha invalidat el testimoni d'accés. Si us plau, proveu de tornar a obrir Quacker!", + "@bad_guest_token": {}, + "language": "Idioma", + "@language": {}, + "language_subtitle": "Requereix reiniciar", + "@language_subtitle": {}, + "download_media_no_url": "No s'ha pogut descarregar. Aquest mitjà només pot estar disponible com a flux, cosa que Quacker encara no pot descarregar.", + "@download_media_no_url": {}, + "theme_mode": "Mode del tema", + "@theme_mode": {}, + "confirm_close_fritter": "Segur que vols tancar Quacker?", + "@confirm_close_fritter": {}, + "search_term": "Terme de cerca", + "@search_term": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Si s'han d'ocultar els tuits marcats com a sensibles", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "hide_sensitive_tweets": "Amaga els tuits sensibles", + "@hide_sensitive_tweets": {}, + "group_name": "Grup: {name}", + "@group_name": {}, + "activate_non_confirmation_bias_mode_label": "Activa el mode de biaix de no confirmació", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Amaga els autors del tuit. Eviteu el biaix de confirmació basat en arguments d'autoritats.", + "@activate_non_confirmation_bias_mode_description": {}, + "possibly_sensitive_tweet": "Aquest tuit conté contingut potencialment sensible. Vols veure'l?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Aquest perfil pot incloure imatges, vocabulari o contingut potencialment sensible. Segur que vols veure'l?", + "@possibly_sensitive_profile": {}, + "reset_home_pages": "Reinicia a les pàgines per defecte", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Heu de tenir almenys 2 pàgines de pantalla d'inici", + "@you_must_have_at_least_2_home_screen_pages": {}, + "disable_screenshots": "Deshabilita captures de pantalla", + "@disable_screenshots": {}, + "possibly_sensitive": "Potencialment sensible", + "@possibly_sensitive": {}, + "home": "Inici", + "@home": {}, + "disable_screenshots_hint": "Evita que es prenguin captures de pantalla. Pot ser que això no funcioni en tots els dispositius.", + "@disable_screenshots_hint": {}, + "yes_please": "Sí, si us plau", + "@yes_please": {}, + "unable_to_load_home_pages": "No s'ha pogut carregar la pàgina d'inici", + "@unable_to_load_home_pages": {} +} diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb new file mode 100644 index 00000000..a69ffaa2 --- /dev/null +++ b/lib/l10n/intl_cs.arb @@ -0,0 +1,494 @@ +{ + "your_report_will_be_sent_to_fritter__project": "Vaše nahlášení bylo odesláno do projektu Quackeru. Podrobnosti o soukromí lze nalézt na:", + "@your_report_will_be_sent_to_fritter__project": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Děkujeme za nahlášení. Chybu se pokusíme opravit co nejdříve budeme moct!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Nepodařilo se načíst další stránku tweetů", + "@unable_to_load_the_next_page_of_tweets": {}, + "this_group_contains_no_subscriptions": "Tato skupina neobsahuje žádné odběry!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Nepodařilo se nalézt žádné tweety tohoto uživatele!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Nepodařilo se načíst další stránku odpovědí", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Nepodařilo se načíst tweet", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Nepodařilo se načíst skupiny odběrů", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Přidat do skupiny", + "@add_to_group": {}, + "unsubscribe": "Zrušit odběr", + "@unsubscribe": {}, + "subscribe": "Odebírat", + "@subscribe": {}, + "reporting_an_error": "Nahlašování chyby", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "Chcete povolit automatické nahlašování?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "send_always": "Posílat vždy", + "@send_always": {}, + "don_not_send": "Neposílat", + "@don_not_send": {}, + "never_send": "Nikdy neposílat", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Chyba byla nahlášena do . Děkujeme!", + "@an_error_was_reported_to__thank_you": {}, + "unable_to_load_the_tweets_for_the_feed": "Nepodařilo se načíst tweety pro váš zdroj", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Nepodařilo se nalézt žádné tweety z posledních 7 dnů!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Nepodařilo se načíst skupinu", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Nepodařilo se načíst nastavení skupiny", + "@unable_to_load_the_group_settings": {}, + "include_retweets": "Zahrnout retweety", + "@include_retweets": {}, + "you_have_not_saved_any_tweets_yet": "Zatím jste si neuložili žádné tweety!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Nepodařilo se načíst výsledky hledání.", + "@unable_to_load_the_search_results": {}, + "no_results": "Žádné výsledky", + "@no_results": {}, + "subscriptions": "Odběry", + "@subscriptions": {}, + "trending": "Trendy", + "@trending": {}, + "saved": "Uloženo", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Nepodařilo se načíst seznam sledování", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_have_anyone_following_them": "Tohoto uživatele nikdo nesleduje!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Nepodařilo se načíst tweety", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Nepodařilo se načíst profil", + "@unable_to_load_the_profile": {}, + "tweets": "Tweety", + "@tweets": {}, + "tweets_and_replies": "Tweety a odpovědi", + "@tweets_and_replies": {}, + "media": "Média", + "@media": {}, + "following": "Sledování", + "@following": {}, + "followers": "Sledující", + "@followers": {}, + "joined": "Připojen/a {date}", + "@joined": {}, + "data_exported_to_fullPath": "Data exportována do {fullPath}", + "@data_exported_to_fullPath": {}, + "export_settings": "Exportovat nastavení?", + "@export_settings": {}, + "export_subscriptions": "Exportovat odběry?", + "@export_subscriptions": {}, + "export_subscription_groups": "Exportovat skupiny odběrů?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Exportovat členy skupin odběrů?", + "@export_subscription_group_members": {}, + "export_tweets": "Exportovat tweety?", + "@export_tweets": {}, + "data_imported_successfully": "Data úspěšně importována", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Vypadá to, že z této verze Quackeru jste již poslali ahoj!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "thanks_for_helping_fritter": "Děkujeme za pomoc Quackeru! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Vypadá to, že jste již nedávno poslali ping 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Nepodařilo se poslat ping. Stavový kód byl {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Při pokusu odeslat ping vypršel čas 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Nepodařilo se odeslat ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Odeslat", + "@send": {}, + "say_hello_emoji": "Řekněte ahoj 👋", + "@say_hello_emoji": {}, + "say_hello": "Řekněte ahoj", + "@say_hello": {}, + "general": "Obecné", + "@general": {}, + "default_tab": "Výchozí karta", + "@default_tab": {}, + "media_size": "Velikost médií", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Ušetřete data s menšími obrázky", + "@save_bandwidth_using_smaller_images": {}, + "small": "Malý", + "@small": {}, + "medium": "Střední", + "@medium": {}, + "large": "Velký", + "@large": {}, + "theme": "Téma", + "@theme": {}, + "dark": "Tmavé", + "@dark": {}, + "true_black": "Pravá černá?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Použít pravou černou pro tmavé téma", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Data", + "@data": {}, + "import": "Importovat", + "@import": {}, + "legacy_android_import": "Import ze starších Androidů", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Soubor neexistuje. Ujistěte se, že se nachází v {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Ujistěte se, že data, která chcete importovat, se zde nachází a poté stiskněte tlačítko níže.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Exportovat vaše data", + "@export_your_data": {}, + "logging": "Protokolování", + "@logging": {}, + "enable_": "Povolit ?", + "@enable_": {}, + "whether_errors_should_be_reported_to_": "Nastavit, zda mají být chyby nahlašovány do ", + "@whether_errors_should_be_reported_to_": {}, + "about": "O aplikaci", + "@about": {}, + "version": "Verze", + "@version": {}, + "copied_version_to_clipboard": "Verze zkopírována do schránky", + "@copied_version_to_clipboard": {}, + "help_make_fritter_even_better": "Pomozte vylepšit Quacker", + "@help_make_fritter_even_better": {}, + "donate": "Přispět", + "@donate": {}, + "help_support_fritters_future": "Podpořte vývoj Quackeru", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Adresa zkopírována do schránky", + "@copied_address_to_clipboard": {}, + "licenses": "Licence", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Všechen úžasný software používaný Quackerem", + "@all_the_great_software_used_by_fritter": {}, + "released_under_the_mit_license": "Vydáno pod licencí MIT", + "@released_under_the_mit_license": {}, + "all": "Vše", + "@all": {}, + "no": "Ne", + "@no": {}, + "yes": "Ano", + "@yes": {}, + "toggle_all": "Přepnout vše", + "@toggle_all": {}, + "delete": "Odstranit", + "@delete": {}, + "please_enter_a_name": "Zadejte prosím název", + "@please_enter_a_name": {}, + "pick_a_color": "Vyberte si barvu!", + "@pick_a_color": {}, + "import_subscriptions": "Importovat odběry", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Pro import odběrů z existujícího Twitter účtu zadejte níže vaše uživatelské jméno.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Pokud máte ohledně této funkce jakoukoli zpětnou vazbu, zanechte ji prosím", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Vybírání individuálních účtů pro import a přidělování skupin jsou již v plánu!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "username": "Uživatelské jméno", + "@username": {}, + "unable_to_import": "Import se nezdařil", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "Zatím importováno {snapshotData} uživatelů", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Dokončeno s {snapshotData} uživateli", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Žádné odběry. Zkuste nějaké vyhledat nebo importovat!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "groups": "Skupiny", + "@groups": {}, + "date_created": "Datum vytvoření", + "@date_created": {}, + "date_subscribed": "Datum odběru", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "Nepodařilo se načíst trendy pro {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "unable_to_find_the_available_trend_locations": "Nepodařilo se nalézt umístění trendů.", + "@unable_to_find_the_available_trend_locations": {}, + "unable_to_stream_the_trend_location_preference": "Nepodařilo se stremovat předvolbu umístění trendů", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Trendy", + "@trends": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Ukončeno {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "downloading_media": "Stahování médií...", + "@downloading_media": {}, + "live": "ŽIVĚ", + "@live": {}, + "download": "Stáhnout", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} retweetnul {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "sorry_the_replied_tweet_could_not_be_found": "Omlouváme se, ale odpovídaný tweety nebyl nalezen!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "Odpověď uživateli", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Tweety neobsahoval žádný text. Toto je neočekávané", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Tento tweet je nedostupný. Nejspíš byl odstraněn.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Připnutý tweet", + "@pinned_tweet": {}, + "thread": "Vlákno", + "@thread": {}, + "unsave": "Zrušit uložení", + "@unsave": {}, + "save": "Uložit", + "@save": {}, + "private_profile": "Soukromý profil", + "@private_profile": {}, + "user_not_found": "Uživatel nenalezen", + "@user_not_found": {}, + "account_suspended": "Účet pozastaven", + "@account_suspended": {}, + "retry": "Zkusit znovu", + "@retry": {}, + "please_check_your_internet_connection_error_message": "Zkontrolujte prosím vaše připojení k internetu.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Tento obsah se načítal příliš dlouho. Zkontrolujte prosím vaše připojení k internetu!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "Jejda! Něco se pokazilo 🥲", + "@oops_something_went_wrong": {}, + "updates": "Aktualizace", + "@updates": {}, + "when_a_new_app_update_is_available": "Když je dostupná aktualizace aplikace", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Je dostupná aktualizace Quackeru! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Ťukněte pro stažení {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Aktualizovat na {releaseVersion} pomocí F-Droidu", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quackerová modrá", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Modré téma založené na barevném schématu Twitteru", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Něco se pokazilo ve Quackeru.", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "Nepodařilo se spustit migrace databáze", + "@unable_to_run_the_database_migrations": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Ve Quackeru se něco pokazilo a byl vygenerován záznam o chybě. Záznam může být odeslán vývojářům Quackeru pro vyřešení problému.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "send_once": "Poslat jednou", + "@send_once": {}, + "include_replies": "Zahrnout odpovědi", + "@include_replies": {}, + "data_exported_to_fileName": "Data exportována do {fileName}", + "@data_exported_to_fileName": {}, + "this_user_does_not_follow_anyone": "Tento uživatel nikoho nesleduje!", + "@this_user_does_not_follow_anyone": {}, + "cancel": "Zrušit", + "@cancel": {}, + "filters": "Filtry", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Poznámka: kvuli imitaci Twitteru nemusí byt zahrnuty všechny tweety", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "unable_to_find_your_saved_tweets": "Nepodařilo se nalézt vaše uložené tweety.", + "@unable_to_find_your_saved_tweets": {}, + "feed": "Zdroj", + "@feed": {}, + "unable_to_load_the_next_page_of_follows": "Nepodařilo se načíst další stránku sledování", + "@unable_to_load_the_next_page_of_follows": {}, + "thumbnail": "Náhled", + "@thumbnail": {}, + "let_the_developers_know_if_something_is_broken": "Dejte vývojářům vědět, že je něco rozbité", + "@let_the_developers_know_if_something_is_broken": {}, + "export": "Exportovat", + "@export": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Zde jsou data, která budou odeslána. Budou použita pouze k určení, jaká zařízení a jazyky by měl v budoucnu Quacker podporovat.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "which_tab_is_shown_when_the_app_opens": "Karta, která bude zobrazena při otevření aplikace", + "@which_tab_is_shown_when_the_app_opens": {}, + "contribute": "Pomoct s vývojem", + "@contribute": {}, + "fritter": "Quacker", + "@fritter": {}, + "disabled": "Zakázáno", + "@disabled": {}, + "report_a_bug": "Nahlásit chybu", + "@report_a_bug": {}, + "country": "Země", + "@country": {}, + "system": "Systémové", + "@system": {}, + "light": "Světlé", + "@light": {}, + "import_data_from_another_device": "Importovat data z jiného zařízení", + "@import_data_from_another_device": {}, + "prefix": "předpona", + "@prefix": {}, + "newTrans": "Nová", + "@newTrans": {}, + "are_you_sure": "Opravdu?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Opravdu chcete odstranit skupinu {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "ok": "OK", + "@ok": {}, + "name": "Název", + "@name": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Vezměte prosím na vědomí, že způsob, který používá Quacker pro import odběrů je silně limitován Twitterem, takže při velkém množství sledovaných účtů může tato akce selhat.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "enter_your_twitter_username": "Zadejte vaše uživatelské jméno na Twitteru", + "@enter_your_twitter_username": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Nebyly vráceny žádné trendy. Toto je neočekávané! Pokud je to možné, nahlaste to prosím jako chybu.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Váš profil musí být veřejný, jinak nebude import fungovat", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "import_from_twitter": "Importovat z Twitteru", + "@import_from_twitter": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Končí za {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Nepodařilo se uložit média. Twitter vrátil stav {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "successfully_saved_the_media": "Média uložena!", + "@successfully_saved_the_media": {}, + "unknown": "Neznámé", + "@unknown": {}, + "subtitles": "Titulky", + "@subtitles": {}, + "could_not_contact_twitter": "Nepodařilo se kontaktovat Twitter", + "@could_not_contact_twitter": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Žádné hlasy} one{Jeden hlas} two{Dva hlasy} few{{numFormatted} hlasy} many{{numFormatted} hlasů} other{{numFormatted} hlasů}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Ťukněte pro zobrazení {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "playback_speed": "Rychlost přehrávání", + "@playback_speed": {}, + "share_tweet_link": "Sdílet odkaz na tweet", + "@share_tweet_link": {}, + "catastrophic_failure": "Katastrofické selhání", + "@catastrophic_failure": {}, + "tweets_number": "{num, plural, zero{žádné tweety} one{jeden tweet} two{dva tweety} few{{numFormatted} tweety} many{{numFormatted} tweetů} other{{numFormatted} tweetů}}", + "@tweets_number": {}, + "share_tweet_content": "Sdílet obsah tweetu", + "@share_tweet_content": {}, + "back": "Zpět", + "@back": {}, + "timed_out": "Vypršel čas", + "@timed_out": {}, + "report": "Nahlásit", + "@report": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Nebyla vrácena žádná data, což by se nikdy nemělo stát. Pokud je to možné, nahlaste to prosím jako chybu!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Pošlete mi neidentifikovatelný ping, abych věděl, že používáte Quacker, a abyste pomohli budoucímu vývoji", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "search": "Hledat", + "@search": {}, + "download_handling_type_directory": "Uložit do adresáře", + "@download_handling_type_directory": {}, + "should_check_for_updates_label": "Zkontrolovat aktualizace", + "@should_check_for_updates_label": {}, + "the_github_issue": "problém na GitHubu (#143)", + "@the_github_issue": {}, + "open_app_settings": "Otevřít nastavení aplikace", + "@open_app_settings": {}, + "choose": "Vybrat", + "@choose": {}, + "close": "Zavřít", + "@close": {}, + "select": "Vybrat", + "@select": {}, + "not_set": "Nenastaveno", + "@not_set": {}, + "share_tweet_content_and_link": "Sdílet obsah tweetu a odkaz", + "@share_tweet_content_and_link": {}, + "should_check_for_updates_description": "Zkontrolovat aktualizace při spuštění Quackeru", + "@should_check_for_updates_description": {}, + "pick_an_icon": "Vyberte si ikonu!", + "@pick_an_icon": {}, + "no_results_for": "Žádné výsledky pro:", + "@no_results_for": {}, + "download_handling": "Způsob stahování", + "@download_handling": {}, + "download_handling_type_ask": "Vždy se zeptat", + "@download_handling_type_ask": {}, + "download_path": "Cesta pro stažené", + "@download_path": {}, + "permission_not_granted": "Oprávnění nebylo uděleno. Zkuste to prosím znovu po jeho udělení!", + "@permission_not_granted": {}, + "download_handling_description": "Způsob, jakým by mělo fungovat stahování", + "@download_handling_description": {}, + "bad_guest_token": "Twitter zneplatnil náš přístupový token. Zkuste prosím znovu otevřít Quacker!", + "@bad_guest_token": {}, + "unable_to_refresh_the_subscriptions": "Nepodařilo se znovu načíst odběry", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter říká, že stránka neexistuje, nemusí to ale být pravda", + "@page_not_found": {}, + "forbidden": "Twitter říká, že přístup k tomuto je zamítnut", + "@forbidden": {}, + "language": "Jazyk", + "@language": {}, + "language_subtitle": "Vyžaduje restart", + "@language_subtitle": {}, + "download_media_no_url": "Nepodařilo se stáhnout média. Možná jsou dostupná jen jako stream, který Quacker zatím nedokáže stáhnout.", + "@download_media_no_url": {}, + "yes_please": "Ano, prosím", + "@yes_please": {}, + "theme_mode": "Režim motivu", + "@theme_mode": {}, + "possibly_sensitive": "Potenciálně citlivé", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Tento tweet obsahuje potenciálně citlivý obsah. Chcete jej zobrazit?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Tento profil může obsahovat potenciálně citlivé obrázky, jazyk nebo jiný obsah. Chcete jej přesto zobrazit?", + "@possibly_sensitive_profile": {}, + "hide_sensitive_tweets": "Skrýt citlivé tweety", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Zda skrývat tweety označené jako citlivé", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "activate_non_confirmation_bias_mode_label": "Aktivovat režim zkreslení bez potvrzení", + "@activate_non_confirmation_bias_mode_label": {}, + "reset_home_pages": "Obnovit výchozí nastavení stránek", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Musíte mít alespoň 2 stránky domovské obrazovky", + "@you_must_have_at_least_2_home_screen_pages": {}, + "confirm_close_fritter": "Opravdu chcete zavřít Quacker?", + "@confirm_close_fritter": {}, + "search_term": "Hledaný výraz", + "@search_term": {}, + "group_name": "Skupina: {name}", + "@group_name": {}, + "disable_screenshots": "Zakázat snímky obrazovky", + "@disable_screenshots": {}, + "disable_screenshots_hint": "Zabránit pořizování snímků obrazovky. Nemusí fungovat na všech zařízeních.", + "@disable_screenshots_hint": {}, + "home": "Domů", + "@home": {}, + "unable_to_load_home_pages": "Nepodařilo se načíst vaše domovské stránky", + "@unable_to_load_home_pages": {}, + "activate_non_confirmation_bias_mode_description": "Skrýt autory tweetů. Vyhněte se konfirmačnímu zkreslení na základě autoritativních argumentů.", + "@activate_non_confirmation_bias_mode_description": {}, + "only_public_subscriptions_can_be_imported": "Odběry lze importovat pouze z veřejných profilů", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "Nepodporovaná adresa URL", + "@unsupported_url": {}, + "missing_page": "Chybějící stránka", + "@missing_page": {}, + "two_home_pages_required": "Musíte mít alespoň 2 stránky domovské obrazovky.", + "@two_home_pages_required": {}, + "choose_pages": "Vybrat stránky", + "@choose_pages": {}, + "saved_tweet_too_large": "Tento uložený tweet nebylo možné zobrazit, protože je příliš velký na to, aby se načetl. Nahlaste to prosím vývojářům.", + "@saved_tweet_too_large": {}, + "share_base_url_description": "Použít vlastní základní adresu URL při sdílení", + "@share_base_url_description": {}, + "mute_video_description": "Zda mají být videa ve výchozím nastavení ztlumena", + "@mute_video_description": {}, + "mute_videos": "Ztlumit videa", + "@mute_videos": {}, + "share_base_url": "Vlastní adresa URL sdílení", + "@share_base_url": {}, + "next": "Další", + "@next": {}, + "finish": "Dokončit", + "@finish": {}, + "functionality_unsupported": "Tato funkce již není podporována Twitterem!", + "@functionality_unsupported": {}, + "add_subscriptions": "Přidat odběry", + "@add_subscriptions": {} +} diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb new file mode 100644 index 00000000..1d1fc677 --- /dev/null +++ b/lib/l10n/intl_de.arb @@ -0,0 +1,496 @@ +{ + "saved": "Archiv", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Die Liste der Follower kann nicht geladen werden", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_have_anyone_following_them": "Dieser Nutzer hat keine Follower!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Die Tweets können nicht geladen werden", + "@unable_to_load_the_tweets": {}, + "tweets": "Tweets", + "@tweets": {}, + "tweets_and_replies": "Tweets & Antworten", + "@tweets_and_replies": {}, + "media": "Medien", + "@media": {}, + "following": "Folgt", + "@following": {}, + "followers": "Follower", + "@followers": {}, + "joined": "Seit {date} bei Twitter", + "@joined": {}, + "export": "Exportieren", + "@export": {}, + "export_subscriptions": "Abonnements exportieren?", + "@export_subscriptions": {}, + "export_subscription_group_members": "Abo-Gruppen mit beinhalteten Accounts exportieren?", + "@export_subscription_group_members": {}, + "export_tweets": "Tweets exportieren?", + "@export_tweets": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Du hast anscheinend bereits mit dieser Quacker-Version Hallo gesagt!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "Abbrechen", + "@cancel": {}, + "timed_out_trying_to_send_the_ping": "Das Senden des Pings hat zu lange gedauert 😢", + "@timed_out_trying_to_send_the_ping": {}, + "send": "Senden", + "@send": {}, + "say_hello": "Sag Hallo", + "@say_hello": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Schicke einen nicht-identifizierenden Ping, um mir mitzuteilen, dass du Quacker nutzt und um die zukünftige Entwicklung zu unterstützen", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Allgemein", + "@general": {}, + "small": "Klein", + "@small": {}, + "medium": "Mittel", + "@medium": {}, + "use_true_black_for_the_dark_mode_theme": "Reines Schwarz für dunkles Design verwenden", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Daten", + "@data": {}, + "import": "Importieren", + "@import": {}, + "import_data_from_another_device": "Daten von einem anderen Gerät importieren", + "@import_data_from_another_device": {}, + "legacy_android_import": "Von Legacy-Android-Geräten importieren", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Diese Datei existiert nicht. Bitte stelle sicher, dass sie sich unter {filePath} befindet", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "enable_": " aktivieren?", + "@enable_": {}, + "activate_non_confirmation_bias_mode_label": "Non-Confirmation-Bias-Modus aktivieren", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Tweetautor verbergen. Vermeide Bestätigungsfehler aufgrund von Autoritätsargumenten.", + "@activate_non_confirmation_bias_mode_description": {}, + "whether_errors_should_be_reported_to_": "Ob Fehlermeldungen an gesendet werden sollen", + "@whether_errors_should_be_reported_to_": {}, + "about": "Über", + "@about": {}, + "copied_version_to_clipboard": "Version in Zwischenablage kopiert", + "@copied_version_to_clipboard": {}, + "contribute": "Beteilige dich", + "@contribute": {}, + "report_a_bug": "Fehler melden", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Teile den Entwicklern mit, falls etwas nicht funktioniert", + "@let_the_developers_know_if_something_is_broken": {}, + "copied_address_to_clipboard": "Link in Zwischenablage kopiert", + "@copied_address_to_clipboard": {}, + "licenses": "Lizenzen", + "@licenses": {}, + "no": "Nein", + "@no": {}, + "are_you_sure": "Bist du dir sicher?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Bist du dir sicher, dass du die Gruppe {name} löschen willst?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "toggle_all": "Alle auswählen", + "@toggle_all": {}, + "delete": "Löschen", + "@delete": {}, + "enter_your_twitter_username": "Gebe deinen Twitter-Nutzernamen ein", + "@enter_your_twitter_username": {}, + "username": "@Nutzername", + "@username": {}, + "import_from_twitter": "Von Twitter importieren", + "@import_from_twitter": {}, + "country": "Land", + "@country": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Endet {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "tap_to_show_getMediaType_item_type": "Antippen, um {getMediaType} anzuzeigen", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Medien konnten nicht gespeichert werden. Twitter gab folgenden Statuscode zurück: {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "downloading_media": "Medien werden heruntergeladen...", + "@downloading_media": {}, + "successfully_saved_the_media": "Datei gespeichert!", + "@successfully_saved_the_media": {}, + "unknown": "Unbekannt", + "@unknown": {}, + "subtitles": "Untertitel", + "@subtitles": {}, + "download": "Herunterladen", + "@download": {}, + "this_tweet_is_unavailable": "Dieser Tweet ist nicht verfügbar. Er wurde wahrscheinlich gelöscht.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Angehefteter Tweet", + "@pinned_tweet": {}, + "thread": "Diskussionsfaden", + "@thread": {}, + "unsave": "Nicht mehr speichern", + "@unsave": {}, + "save": "Speichern", + "@save": {}, + "share_tweet_link": "Tweet-Link teilen", + "@share_tweet_link": {}, + "private_profile": "Privates Profil", + "@private_profile": {}, + "user_not_found": "Nutzer wurde nicht gefunden", + "@user_not_found": {}, + "account_suspended": "Nutzerkonto gesperrt", + "@account_suspended": {}, + "catastrophic_failure": "Totalausfall", + "@catastrophic_failure": {}, + "retry": "Erneut versuchen", + "@retry": {}, + "please_check_your_internet_connection_error_message": "Bitte überprüfe deine Internetverbindung.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Zeit abgelaufen", + "@timed_out": {}, + "updates": "Updates", + "@updates": {}, + "fritter_blue": "Quacker Blue", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Blaues Design basierend auf dem Twitter-Farbschema", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Etwas in Quacker ist kaputt.", + "@something_broke_in_fritter": {}, + "data_exported_to_fullPath": "Daten wurden exportiert nach {fullPath}", + "@data_exported_to_fullPath": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Hinweis: Aufgrund einer Beschränkung seitens Twitter werden möglicherweise nicht alle Tweets angezeigt", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_retweets": "Retweets anzeigen", + "@include_retweets": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Wenn du Feedback zu dieser Funktion hast, hinterlasse es bitte unter", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Die Auswahl einzelner Accounts zum Importieren und die Zuweisung zu Gruppen sind bereits in Planung!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "fritter": "Quacker", + "@fritter": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Gebe unten deinen Nutzernamen an, um Abonnements von einem bestehenden Twitter-Konto zu importieren.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "no_results": "Keine Ergebnisse", + "@no_results": {}, + "feed": "Feed", + "@feed": {}, + "export_settings": "Einstellungen exportieren?", + "@export_settings": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Anscheinend hast du erst kürzlich einen Ping gesendet 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "include_replies": "Antworten anzeigen", + "@include_replies": {}, + "unable_to_load_the_search_results": "Die Suchergebnisse können nicht geladen werden.", + "@unable_to_load_the_search_results": {}, + "subscriptions": "Abos", + "@subscriptions": {}, + "trending": "Trends", + "@trending": {}, + "filters": "Filter", + "@filters": {}, + "unable_to_find_your_saved_tweets": "Gespeicherte Tweets können nicht gefunden werden.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Du hast noch keine Tweets gespeichert!", + "@you_have_not_saved_any_tweets_yet": {}, + "export_subscription_groups": "Abo-Gruppen exportieren?", + "@export_subscription_groups": {}, + "unable_to_load_the_next_page_of_follows": "Die weiteren Follower können nicht geladen werden", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "Dieser Nutzer folgt niemandem!", + "@this_user_does_not_follow_anyone": {}, + "name": "Name", + "@name": {}, + "unable_to_load_the_profile": "Das Profil kann nicht geladen werden", + "@unable_to_load_the_profile": {}, + "data_exported_to_fileName": "Daten wurden exportiert nach {fileName}", + "@data_exported_to_fileName": {}, + "data_imported_successfully": "Daten erfolgreich importiert", + "@data_imported_successfully": {}, + "unable_to_send_the_ping_e_to_string": "Der Ping konnte nicht gesendet werden. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "default_tab": "Standard-Tab", + "@default_tab": {}, + "thanks_for_helping_fritter": "Danke, dass du Quacker unterstützt! 💖", + "@thanks_for_helping_fritter": {}, + "say_hello_emoji": "Sag Hallo 👋", + "@say_hello_emoji": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Hier sind die Daten, die versendet werden. Sie werden nur verwendet, um festzustellen, welche Geräte und Sprachen Quacker zukünftig unterstützen soll.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Der Ping konnte nicht gesendet werden. Der Status-Code lautet {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "which_tab_is_shown_when_the_app_opens": "Welcher Tab beim Öffnen der App angezeigt wird", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Mediengröße", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Datennutzung mittels kleinerer Auflösung sparen", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Deaktiviert", + "@disabled": {}, + "thumbnail": "Vorschaubild", + "@thumbnail": {}, + "large": "Groß", + "@large": {}, + "theme": "Design", + "@theme": {}, + "system": "System", + "@system": {}, + "light": "Hell", + "@light": {}, + "dark": "Dunkel", + "@dark": {}, + "true_black": "Reines Schwarz?", + "@true_black": {}, + "prefix": "Präfix", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Vergewisser dich, dass sich die zu importierenden Daten dort befinden und klicke dann auf die Importieren-Schaltfläche unten.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Daten exportieren", + "@export_your_data": {}, + "donate": "Spenden", + "@donate": {}, + "newTrans": "Neu", + "@newTrans": {}, + "ok": "OK", + "@ok": {}, + "version": "Version", + "@version": {}, + "help_make_fritter_even_better": "Hilf dabei, Quacker noch besser zu machen", + "@help_make_fritter_even_better": {}, + "help_support_fritters_future": "Unterstütze Quackers Zukunft", + "@help_support_fritters_future": {}, + "all_the_great_software_used_by_fritter": "All die fantastische Software, die Quacker verwendet", + "@all_the_great_software_used_by_fritter": {}, + "released_under_the_mit_license": "Unter der MIT-Lizenz herausgegeben", + "@released_under_the_mit_license": {}, + "please_enter_a_name": "Bitte einen Namen eingeben", + "@please_enter_a_name": {}, + "pick_a_color": "Wähle eine Farbe!", + "@pick_a_color": {}, + "import_subscriptions": "Abonnements importieren", + "@import_subscriptions": {}, + "all": "Alle", + "@all": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Bitte beachte, dass Quacker zum Importieren der Abonnements eine von Twitter stark durchsatzratenbegrenzte Methode verwendet. Der Import schlägt möglicherweise fehl, wenn du vielen Accounts folgst.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "yes": "Ja", + "@yes": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Ein öffentliches Profil ist erforderlich, sonst funktioniert der Import nicht", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "date_created": "Erstellungsdatum", + "@date_created": {}, + "groups": "Gruppen", + "@groups": {}, + "unable_to_import": "Import nicht möglich", + "@unable_to_import": {}, + "no_subscriptions_try_searching_or_importing_some": "Keine Abonnements. Suche oder importiere welche!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "date_subscribed": "Abo-Datum", + "@date_subscribed": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} bisher importierte Benutzer", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Beendet mit insgesamt {snapshotData} Nutzern", + "@finished_with_snapshotData_users": {}, + "unable_to_load_the_trends_for_widget_place_name": "Trends für {widgetPlaceName} konnten nicht geladen werden", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "trends": "Trends", + "@trends": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Keine Trends gefunden. Das kommt unerwartet! Bitte, falls möglich, Fehler melden.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_stream_the_trend_location_preference": "Die Trendortpräferenz kann nicht gestreamt werden", + "@unable_to_stream_the_trend_location_preference": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Beendet vor {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "unable_to_find_the_available_trend_locations": "Die verfügbaren Trend-Regionen konnten nicht gefunden werden.", + "@unable_to_find_the_available_trend_locations": {}, + "tweets_number": "{num, plural, zero{keine tweets} one{ein tweet} two{zwei tweets} few{{numFormatted} tweets} many{{numFormatted} tweets} other{{numFormatted} tweets}}", + "@tweets_number": {}, + "numberFormat_format_total_votes": "{num, plural, zero{keine Stimmen} one{eine Stimme} two{zwei Stimmen} few{{numFormatted} Stimmen} many{{numFormatted} Stimmen} other{{numFormatted} Stimmen}}", + "@numberFormat_format_total_votes": {}, + "replying_to": "Antwort auf", + "@replying_to": {}, + "playback_speed": "Wiedergabegeschwindigkeit", + "@playback_speed": {}, + "this_tweet_user_name_retweeted": "Retweet von {thisTweetUserName} {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "live": "LIVE", + "@live": {}, + "sorry_the_replied_tweet_could_not_be_found": "Entschuldigung! Der beantwortete Tweet konnte nicht gefunden werden!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "share_tweet_content": "Tweet-Inhalt teilen", + "@share_tweet_content": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Der Tweet enthält keinen Text. Das kommt unerwartet", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "tap_to_download_release_version": "Antippen, um Version {releaseVersion} herunterzuladen", + "@tap_to_download_release_version": {}, + "an_update_for_fritter_is_available": "Ein Update für Quacker ist verfügbar! 🚀", + "@an_update_for_fritter_is_available": {}, + "back": "Zurück", + "@back": {}, + "could_not_contact_twitter": "Es konnte keine Verbindung zu Twitter aufgebaut werden", + "@could_not_contact_twitter": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Das Laden hat zu lange gedauert. Überprüfe deine Internetverbindung!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "Oh nein! Ein Fehler ist aufgetreten 🥲", + "@oops_something_went_wrong": {}, + "report": "Bericht", + "@report": {}, + "when_a_new_app_update_is_available": "Sobald ein neues Update der App verfügbar ist", + "@when_a_new_app_update_is_available": {}, + "update_to_release_version_through_your_fdroid_client": "Update auf Version {releaseVersion} über F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Keine Daten empfangen - das sollte nie passieren. Bitte, falls möglich, Fehler melden!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "unable_to_run_the_database_migrations": "Die Datenbankmigrationen können nicht ausgeführt werden", + "@unable_to_run_the_database_migrations": {}, + "this_group_contains_no_subscriptions": "Diese Gruppe enthält keine Abonnements!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Keine Tweets von diesem Nutzer gefunden!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Nächste Antworten können nicht geladen werden", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Der Tweet kann nicht geladen werden", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Abo-Gruppen können nicht geladen werden", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Zu Gruppe hinzufügen", + "@add_to_group": {}, + "unsubscribe": "Deabonnieren", + "@unsubscribe": {}, + "subscribe": "Abonnieren", + "@subscribe": {}, + "reporting_an_error": "Fehler melden", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Etwas ist schief gelaufen und ein Fehlerbericht wurde erstellt. Der Bericht kann an die Quacker-Entwickler gesendet werden, um bei der Problembehebung zu helfen.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Möchtest du die automatische Fehlermeldungen aktivieren?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Deine Meldung wird an Quackers -Projektseite gesendet. Einzelheiten zum Datenschutz findest du unter:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Einmalig Senden", + "@send_once": {}, + "send_always": "Immer Senden", + "@send_always": {}, + "don_not_send": "Nicht Senden", + "@don_not_send": {}, + "never_send": "Nie Senden", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Der Fehler wurde auf gemeldet. Vielen Dank!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Danke für die Meldung. Wir werden versuchen das Problem schnellstmöglich zu beheben!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Die nächsten Tweets können nicht geladen werden", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Die Tweets für die Timeline können nicht geladen werden", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Keine Tweets aus den letzten 7 Tagen gefunden!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Die Abo-Gruppe konnte nicht geladen werden", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Die Einstellungen für die Abo-Gruppe konnten nicht geladen werden", + "@unable_to_load_the_group_settings": {}, + "logging": "Protokollierung", + "@logging": {}, + "select": "Auswählen", + "@select": {}, + "no_results_for": "Keine Ergebnisse für:", + "@no_results_for": {}, + "the_github_issue": "dem GitHub-Issue (#143)", + "@the_github_issue": {}, + "download_handling_description": "So soll das Herunterladen funktionieren", + "@download_handling_description": {}, + "download_handling_type_ask": "Immer fragen", + "@download_handling_type_ask": {}, + "should_check_for_updates_description": "Beim Start von Quacker nach Aktualisierungen suchen", + "@should_check_for_updates_description": {}, + "download_path": "Download-Pfad", + "@download_path": {}, + "pick_an_icon": "Wähle ein Symbol!", + "@pick_an_icon": {}, + "search": "Suche", + "@search": {}, + "close": "Schließen", + "@close": {}, + "share_tweet_content_and_link": "Tweet-Inhalt und Link teilen", + "@share_tweet_content_and_link": {}, + "should_check_for_updates_label": "Nach Aktualisierungen suchen", + "@should_check_for_updates_label": {}, + "download_handling_type_directory": "Speichern in Ordner", + "@download_handling_type_directory": {}, + "permission_not_granted": "Berechtigung nicht erteilt. Versuche es nach der Erteilung erneut!", + "@permission_not_granted": {}, + "open_app_settings": "App-Einstellungen öffnen", + "@open_app_settings": {}, + "choose": "Wählen", + "@choose": {}, + "not_set": "Nicht festgelegt", + "@not_set": {}, + "language": "Sprache", + "@language": {}, + "language_subtitle": "Neustart erforderlich", + "@language_subtitle": {}, + "hide_sensitive_tweets": "Anstößige Tweets ausblenden", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Ob Tweets, die als anstößig gekennzeichnet sind, ausgeblendet werden sollen", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "disable_screenshots": "Screenshots deaktivieren", + "@disable_screenshots": {}, + "disable_screenshots_hint": "Versucht zu verhindern, dass Screenshots von Fritter gemacht werden können. Dies ist keine Garantie und funktioniert möglicherweise nicht auf allen Geräten.", + "@disable_screenshots_hint": {}, + "generic_username": "Benutzer", + "@generic_username": {}, + "theme_mode": "Design-Modus", + "@theme_mode": {}, + "download_handling": "Downloadverhalten", + "@download_handling": {}, + "mute_videos": "Videos stumm schalten", + "@mute_videos": {}, + "finish": "Fertig", + "@finish": {}, + "next": "Weiter", + "@next": {}, + "possibly_sensitive": "Potentiell anstößig", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Dieser Tweet könnte anstößiges Material enthalten. Möchtest du den Tweet sehen?", + "@possibly_sensitive_tweet": {}, + "unable_to_load_home_pages": "Laden der Startseite nicht möglich", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Startseite zurücksetzen", + "@reset_home_pages": {}, + "confirm_close_fritter": "Willst du Quacker wirklich schließen?", + "@confirm_close_fritter": {}, + "you_must_have_at_least_2_home_screen_pages": "Du musst mindestens 2 Tabs auf der Startseite haben", + "@you_must_have_at_least_2_home_screen_pages": {}, + "home": "Start", + "@home": {}, + "search_term": "Suchbegriff", + "@search_term": {}, + "unsupported_url": "Nicht unterstützte URL", + "@unsupported_url": {}, + "saved_tweet_too_large": "Der gespeicherte Tweet konnte nicht geladen werden, da er zu groß ist. Bitte melde das Problem den Entwicklern.", + "@saved_tweet_too_large": {}, + "missing_page": "Fehlende Seite", + "@missing_page": {}, + "two_home_pages_required": "Du musst mindestens 2 Tabs auf der Startseite haben.", + "@two_home_pages_required": {}, + "choose_pages": "Wähle Seiten", + "@choose_pages": {}, + "share_base_url": "Eigene Teilen-URL", + "@share_base_url": {}, + "share_base_url_description": "Nutze beim Teilen eine andere Basisadresse", + "@share_base_url_description": {}, + "possibly_sensitive_profile": "Auf diesem Profil befinden sich potentiell anstößige Bilder, Sprache oder anderes Material. Willst du es wirklich sehen?", + "@possibly_sensitive_profile": {}, + "only_public_subscriptions_can_be_imported": "Abonnements können nur von öffentlichen Profilen geladen werden", + "@only_public_subscriptions_can_be_imported": {}, + "group_name": "Gruppe: {name}", + "@group_name": {}, + "unable_to_refresh_the_subscriptions": "Abonnements konnten nicht aktualisiert werden", + "@unable_to_refresh_the_subscriptions": {}, + "download_media_no_url": "Download nicht möglich. Diese Datei ist möglicherweise nur als Stream verfügbar, welche Quacker noch nicht herunterladen kann.", + "@download_media_no_url": {}, + "yes_please": "Ja bitte", + "@yes_please": {}, + "page_not_found": "Twitter behauptet diese Seite existiere nicht", + "@page_not_found": {}, + "forbidden": "Zugang zu diesem Inhalt laut Twitter nicht gestattet", + "@forbidden": {}, + "bad_guest_token": "Der Zugangs-Token ist nicht mehr gültig. Versuche Quacker erneut zu öffnen!", + "@bad_guest_token": {}, + "mute_video_description": "Ob Videos standardmäßig stumm sein sollen", + "@mute_video_description": {}, + "functionality_unsupported": "Diese Funktion wird von Twitter nicht mehr unterstützt!", + "@functionality_unsupported": {}, + "add_subscriptions": "Abonnements hinzufügen", + "@add_subscriptions": {} +} diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb new file mode 100644 index 00000000..cdcc0180 --- /dev/null +++ b/lib/l10n/intl_en.arb @@ -0,0 +1,416 @@ +{ + "this_group_contains_no_subscriptions": "This group contains no subscriptions!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Couldn't find any tweets by this user!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Unable to load the next page of replies", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Unable to load the tweet", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Unable to load subscription groups", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Add to group", + "@add_to_group": {}, + "select": "Select", + "unsubscribe": "Unsubscribe", + "@unsubscribe": {}, + "subscribe": "Subscribe", + "@subscribe": {}, + "reporting_an_error": "Reporting an error", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Something just went wrong in Quacker, and an error report has been generated. The report can be sent to the Quacker developers to help fix the problem.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Would you like to enable automatic error reporting?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Your report will be sent to Quacker's project, and privacy details can be found at:", + "@your_report_will_be_sent_to_fritter__project": {}, + "unable_to_load_the_next_page_of_tweets": "Unable to load the next page of tweets", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Unable to load the tweets for the feed", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Couldn't find any tweets from the last 7 days!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Unable to load the group", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Unable to load the group settings", + "@unable_to_load_the_group_settings": {}, + "filters": "Filters", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Note: Due to a Twitter limitation, not all tweets may be included", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Include replies", + "@include_replies": {}, + "include_retweets": "Include retweets", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Unable to find your saved tweets.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "You haven't saved any tweets yet!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Unable to load the search results.", + "@unable_to_load_the_search_results": {}, + "no_results": "No results", + "@no_results": {}, + "feed": "Feed", + "@feed": {}, + "subscriptions": "Subscriptions", + "@subscriptions": {}, + "trending": "Trending", + "@trending": {}, + "saved": "Saved", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Unable to load the list of follows", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "Unable to load the next page of follows", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "This user does not follow anyone!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "This user does not have anyone following them!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Unable to load the tweets", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Unable to load the profile", + "@unable_to_load_the_profile": {}, + "tweets": "Tweets", + "@tweets": {}, + "tweets_and_replies": "Tweets & Replies", + "@tweets_and_replies": {}, + "media": "Media", + "@media": {}, + "following": "Following", + "@following": {}, + "followers": "Followers", + "@followers": {}, + "joined": "Joined {date}", + "@joined": {}, + "export": "Export", + "@export": {}, + "data_exported_to_fullPath": "Data exported to {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "Data exported to {fileName}", + "@data_exported_to_fileName": {}, + "export_settings": "Export settings?", + "@export_settings": {}, + "export_subscriptions": "Export subscriptions?", + "@export_subscriptions": {}, + "export_subscription_groups": "Export subscription groups?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Export subscription group members?", + "@export_subscription_group_members": {}, + "export_tweets": "Export tweets?", + "@export_tweets": {}, + "data_imported_successfully": "Data imported successfully", + "@data_imported_successfully": {}, + "cancel": "Cancel", + "@cancel": {}, + "thanks_for_helping_fritter": "Thanks for helping Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "send": "Send", + "@send": {}, + "general": "General", + "@general": {}, + "default_tab": "Default tab", + "@default_tab": {}, + "app_info": "App Info", + "@app_info": {}, + "which_tab_is_shown_when_the_app_opens": "Which tab is shown when the app opens", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Media size", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Save bandwidth with smaller images", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Disabled", + "@disabled": {}, + "thumbnail": "Thumbnail", + "@thumbnail": {}, + "small": "Small", + "@small": {}, + "medium": "Medium", + "@medium": {}, + "large": "Large", + "@large": {}, + "theme": "Theme", + "@theme": {}, + "theme_mode": "Theme Mode", + "@theme_mode": {}, + "system": "System", + "@system": {}, + "light": "Light", + "@light": {}, + "dark": "Dark", + "@dark": {}, + "true_black": "True Black?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Use true black for the dark mode theme", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Data", + "@data": {}, + "import": "Import", + "@import": {}, + "import_data_from_another_device": "Import data from another device", + "@import_data_from_another_device": {}, + "legacy_android_import": "Legacy Android Import", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "The file does not exist. Please ensure it is located at {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "prefix", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Please make sure the data you wish to import is located there, then press the import button below.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Export your data", + "@export_your_data": {}, + "logging": "Logging", + "@logging": {}, + "enable_": "Enable ?", + "@enable_": {}, + "activate_non_confirmation_bias_mode_label": "Activate non-confirmation bias mode", + "activate_non_confirmation_bias_mode_description": "Hide tweet authors. Avoid confirmation bias based on authoritative arguments.", + "whether_errors_should_be_reported_to_": "Whether errors should be reported to ", + "@whether_errors_should_be_reported_to_": {}, + "about": "About", + "@about": {}, + "version": "Version", + "@version": {}, + "copied_version_to_clipboard": "Copied version to clipboard", + "@copied_version_to_clipboard": {}, + "contribute": "Contribute", + "@contribute": {}, + "help_make_fritter_even_better": "Help make Quacker even better", + "@help_make_fritter_even_better": {}, + "report_a_bug": "Report a bug", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Let the developers know if something's broken", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Donate", + "@donate": {}, + "help_support_fritters_future": "Help support Quacker's future", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Copied address to clipboard", + "@copied_address_to_clipboard": {}, + "licenses": "Licenses", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "All the great software used by Quacker", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "Released under the MIT License", + "@released_under_the_mit_license": {}, + "all": "All", + "@all": {}, + "newTrans": "New", + "@newTrans": {}, + "no": "No", + "@no": {}, + "yes": "Yes", + "@yes": {}, + "yes_please": "Yes, please", + "are_you_sure": "Are you sure?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Are you sure you want to delete the subscription group {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "toggle_all": "Toggle All", + "@toggle_all": {}, + "delete": "Delete", + "@delete": {}, + "ok": "OK", + "@ok": {}, + "name": "Name", + "@name": {}, + "please_enter_a_name": "Please enter a name", + "@please_enter_a_name": {}, + "pick_a_color": "Pick a color!", + "@pick_a_color": {}, + "pick_an_icon": "Pick an icon!", + "search": "Search", + "no_results_for": "No results for:", + "close": "Close", + "import_subscriptions": "Import subscriptions", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "To import subscriptions from an existing Twitter account, enter your username below.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Please note that the method Quacker uses to import subscriptions is heavily rate-limited by Twitter, so this may fail if you have a lot of followed accounts.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "If you have any feedback on this feature, please leave it on", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "the_github_issue": "the GitHub issue (#143)", + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Selecting individual accounts to import, and assigning groups are both planned for the future already!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "Enter your Twitter username", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Your profile must be public, otherwise the import will not work", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "Username", + "@username": {}, + "unable_to_import": "Unable to import", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} users imported so far", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Finished with {snapshotData} users", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "No subscriptions. Try searching or importing some!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Import from Twitter", + "@import_from_twitter": {}, + "unable_to_refresh_the_subscriptions": "Unable to refresh the subscriptions", + "@unable_to_refresh_the_subscriptions": {}, + "groups": "Groups", + "@groups": {}, + "date_created": "Date Created", + "@date_created": {}, + "date_subscribed": "Date Subscribed", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "Unable to load the trends for {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "There were no trends returned. This is unexpected! Please report as a bug, if possible.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "Unable to find the available trend locations.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "Country", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "Unable to stream the trend location preference", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Trends", + "@trends": {}, + "tweets_number": "{num, plural, zero{no tweets} one{one tweet} two{two tweets} few{{numFormatted} tweets} many{{numFormatted} tweet} other{{numFormatted} tweets}}", + "@tweets_number": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Ended {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Ends {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{No votes} one{One vote} two{Two votes} few{{numFormatted} votes} many{{numFormatted} vote} other{{numFormatted} votes}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Tap to show {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Unable to save the media. Twitter returned a status of {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "downloading_media": "Downloading media...", + "@downloading_media": {}, + "download_media_no_url": "Unable to download. This media may only be available as a stream, which Quacker cannot yet download.", + "successfully_saved_the_media": "Saved the media!", + "@successfully_saved_the_media": {}, + "unknown": "Unknown", + "@unknown": {}, + "playback_speed": "Playback speed", + "@playback_speed": {}, + "subtitles": "Subtitles", + "@subtitles": {}, + "live": "LIVE", + "@live": {}, + "download": "Download", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} retweeted {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "sorry_the_replied_tweet_could_not_be_found": "Sorry, the replied tweet could not be found!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "Replying to", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "The tweet did not contain any text. This is unexpected", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "This tweet is unavailable. It was probably deleted.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Pinned tweet", + "@pinned_tweet": {}, + "thread": "Thread", + "@thread": {}, + "unsave": "Unsave", + "@unsave": {}, + "save": "Save", + "@save": {}, + "share_tweet_content": "Share tweet content", + "@share_tweet_content": {}, + "share_tweet_link": "Share tweet link", + "@share_tweet_link": {}, + "share_tweet_content_and_link": "Share tweet content and link", + "private_profile": "Private profile", + "@private_profile": {}, + "page_not_found": "Twitter says the page does not exist, but that may not be true", + "@page_not_found": {}, + "forbidden": "Twitter says access to this is forbidden", + "@forbidden": {}, + "bad_guest_token": "Twitter has invalidated our access token. Please try re-opening Quacker!", + "@bad_guest_token": {}, + "user_not_found": "User not found", + "@user_not_found": {}, + "account_suspended": "Account suspended", + "@account_suspended": {}, + "catastrophic_failure": "Catastrophic failure", + "@catastrophic_failure": {}, + "back": "Back", + "@back": {}, + "next": "Next", + "finish": "Finish", + "retry": "Retry", + "@retry": {}, + "could_not_contact_twitter": "Could not contact Twitter", + "@could_not_contact_twitter": {}, + "please_check_your_internet_connection_error_message": "Please check your Internet connection.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Timed out", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "This took too long to load. Please check your network connection!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "Oops! Something went wrong 🥲", + "@oops_something_went_wrong": {}, + "report": "Report", + "@report": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "No data was returned, which should never happen. Please report a bug, if possible!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Updates", + "@updates": {}, + "when_a_new_app_update_is_available": "When a new app update is available", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "An update for Quacker is available! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Tap to download {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Update to {releaseVersion} through your F-Droid client", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker blue", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Blue theme based on the Twitter color scheme", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Something broke in Quacker.", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "Unable to run the database migrations", + "@unable_to_run_the_database_migrations": {}, + "should_check_for_updates_label": "Check for updates", + "should_check_for_updates_description": "Check for updates when Quacker starts", + "download_handling": "Download handling", + "download_handling_description": "How downloading should work", + "download_handling_type_ask": "Always ask", + "download_handling_type_directory": "Save to directory", + "download_path": "Download path", + "permission_not_granted": "Permission not granted. Please try again after granting!", + "open_app_settings": "Open app settings", + "open_in_browser": "Open in browser", + "choose": "Choose", + "not_set": "Not set", + "language": "Language", + "language_subtitle": "Requires a restart", + "hide_sensitive_tweets": "Hide sensitive tweets", + "whether_to_hide_tweets_marked_as_sensitive": "Whether to hide tweets marked as sensitive", + "disable_screenshots": "Disable screenshots", + "disable_screenshots_hint": "Prevent screenshots from being taken. This may not work on all devices.", + "possibly_sensitive": "Potentially sensitive", + "possibly_sensitive_tweet": "This tweet contains potentially sensitive content. Would you like to view it?", + "possibly_sensitive_profile": "This profile may include potentially sensitive images, language, or other content. Do you still want to view it?", + "home": "Home", + "unable_to_load_home_pages": "Unable to load your home pages", + "reset_home_pages": "Reset pages to default", + "you_must_have_at_least_2_home_screen_pages": "You must have at least 2 home screen pages", + "group_name": "{name}", + "confirm_close_fritter": "Are you sure you want to close Quacker?", + "search_term": "Search term", + "only_public_subscriptions_can_be_imported": "Subscriptions can only be imported from public profiles", + "unsupported_url": "Unsupported URL", + "saved_tweet_too_large": "This saved tweet could not be displayed, as it's too big to load. Please report it to the developers.", + "generic_username": "User", + "missing_page": "Missing page", + "two_home_pages_required": "You need to have at least 2 home screen pages.", + "choose_pages": "Choose pages", + "mute_videos": "Mute videos", + "mute_video_description": "Whether videos should be muted by default", + "share_base_url": "Custom share URL", + "share_base_url_description": "Use a custom base URL when sharing", + "functionality_unsupported": "This functionality is no longer supported by Twitter!", + "add_subscriptions": "Add subscriptions" +} diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb new file mode 100644 index 00000000..d8dfec0d --- /dev/null +++ b/lib/l10n/intl_eo.arb @@ -0,0 +1,490 @@ +{ + "this_group_contains_no_subscriptions": "Tiu grupo enhavas ne abonojn!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Ne eblis trovi iujn ajn pepojn de tiu ĉi uzanto!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Ne eblas ŝarĝi la sekvan paĝon de respondoj", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Ne eblas ŝarĝi la pepon", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Ne eblas ŝarĝi la grupojn de abonoj", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Aldoni al grupo", + "@add_to_group": {}, + "select": "Elekti", + "@select": {}, + "unsubscribe": "Malaboni", + "@unsubscribe": {}, + "reporting_an_error": "Raporti eraron", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "Ĉu vi volus ŝalti eraroraportadon aŭtomatan?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Via raporto sendiĝos al -projekto de Quacker, kaj la detaloj de privateco eblas troviĝi ĉe:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Sendi unufoje", + "@send_once": {}, + "send_always": "Sendi ĉiufoje", + "@send_always": {}, + "don_not_send": "Ne sendi", + "@don_not_send": {}, + "never_send": "Sendi neniam", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Eraro raportiĝis al . Dankon!", + "@an_error_was_reported_to__thank_you": {}, + "unable_to_load_the_next_page_of_tweets": "Ne eblas ŝarĝi la sekvan paĝon de pepoj", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Ne eblas ŝarĝi la pepojn por la fluo", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Ne eblas trovi iujn ajn pepojn de antaŭ 7 tagoj!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Ne eblas ŝarĝi la grupon", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Ne eblas ŝarĝi la agordojn de grupo", + "@unable_to_load_the_group_settings": {}, + "filters": "Filtriloj", + "@filters": {}, + "include_replies": "Ampleksi respondojn", + "@include_replies": {}, + "include_retweets": "Ampleksi repepojn", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Ne eblas trovi viajn pepojn konservitajn.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Vi ne konservis iujn ajn pepojn ankoraŭ!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Ne eblas ŝarĝi la rezultojn de la serĉo.", + "@unable_to_load_the_search_results": {}, + "no_results": "Ne rezultoj", + "@no_results": {}, + "feed": "Fluo", + "@feed": {}, + "subscriptions": "Abonoj", + "@subscriptions": {}, + "trending": "Tendencaĵoj", + "@trending": {}, + "saved": "Konservitaĵoj", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Ne eblas ŝarĝi la liston de abonoj", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "Ne eblas ŝarĝi la sekvan paĝon de abonoj", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "Tiu ĉi uzanto ne observas iun ajn!", + "@this_user_does_not_follow_anyone": {}, + "unable_to_load_the_tweets": "Ne eblas ŝarĝi la pepojn", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Ne eblas ŝarĝi la profilon", + "@unable_to_load_the_profile": {}, + "tweets": "Pepoj", + "@tweets": {}, + "tweets_and_replies": "Pepoj k. Respondoj", + "@tweets_and_replies": {}, + "media": "Plurmedio", + "@media": {}, + "following": "Abonoj", + "@following": {}, + "followers": "Abonantoj", + "@followers": {}, + "joined": "Membriĝis je {date}", + "@joined": {}, + "export": "Eksporti", + "@export": {}, + "data_exported_to_fullPath": "Datumoj eksportiĝis al {fullPath}", + "@data_exported_to_fullPath": {}, + "export_settings": "Ĉu eksporti la agordojn?", + "@export_settings": {}, + "export_subscriptions": "Ĉu eksporti la abonojn?", + "@export_subscriptions": {}, + "export_subscription_groups": "Ĉu eksporti la grupojn de abonoj?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Ĉu eksporti la membrojn de grupo de abonoj?", + "@export_subscription_group_members": {}, + "export_tweets": "Ĉu eksporti pepojn?", + "@export_tweets": {}, + "data_imported_successfully": "Datumoj importiĝis sukcese", + "@data_imported_successfully": {}, + "cancel": "Rezigni", + "@cancel": {}, + "thanks_for_helping_fritter": "Dankon pro helpi Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Ŝajnas, vi jam sendis ping-on de antaŭ ne longe 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Ne eblis sendi la ping-on. La statkodo estis {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Tempolimo dum trovi sendi la ping-on 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Ne eblas sendi la ping-on. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Sendi", + "@send": {}, + "say_hello_emoji": "Diri saluton 👋", + "@say_hello_emoji": {}, + "say_hello": "Diri saluton", + "@say_hello": {}, + "general": "Ĝenerala", + "@general": {}, + "default_tab": "Langeto komenca", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Kiu langeto vidiĝus kiam la apo malfermiĝus", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Grando de plurmedio", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Konservi bendlarĝon per pli malgrandaj bildoj", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Malŝaltita", + "@disabled": {}, + "thumbnail": "Miniaturo", + "@thumbnail": {}, + "small": "Malgranda", + "@small": {}, + "medium": "Mezgranda", + "@medium": {}, + "large": "Granda", + "@large": {}, + "theme": "Temo", + "@theme": {}, + "theme_mode": "Reĝimo de temo", + "@theme_mode": {}, + "system": "Sistema", + "@system": {}, + "light": "Hela", + "@light": {}, + "dark": "Malhela", + "@dark": {}, + "true_black": "Nigro vera?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Uzi nigron veran kun la reĝimo malhela de temo", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Datumoj", + "@data": {}, + "import": "Importi", + "@import": {}, + "import_data_from_another_device": "Importi datumojn el alia aparato", + "@import_data_from_another_device": {}, + "legacy_android_import": "Importo de Android malnova", + "@legacy_android_import": {}, + "prefix": "prefikso", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Bonvolu certigi, ke la datumoj dezirate importontaj lokiĝas tie, tiam premu la butono de importi sube.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Eksporti viajn datumojn", + "@export_your_data": {}, + "logging": "Protokolado", + "@logging": {}, + "enable_": "Ĉu ŝalti -on?", + "@enable_": {}, + "activate_non_confirmation_bias_mode_label": "Ŝalti reĝimon de biaso de nekonfirmo", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Kaŝi aŭtorojn de pepoj. Eviti biason de konfirmo bazite de argumentoj aŭtoritataj.", + "@activate_non_confirmation_bias_mode_description": {}, + "whether_errors_should_be_reported_to_": "Ĉu eraroj raportiĝus al ", + "@whether_errors_should_be_reported_to_": {}, + "about": "Pri Quacker", + "@about": {}, + "version": "Versio", + "@version": {}, + "copied_version_to_clipboard": "Kopiis version al la tondujo", + "@copied_version_to_clipboard": {}, + "contribute": "Kontribui", + "@contribute": {}, + "report_a_bug": "Raporti cimon", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Konigi al programistojn, se io estas difektita", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Donaci", + "@donate": {}, + "help_support_fritters_future": "Helpi subteni estontecon de Quacker", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Kopiis adreson al la tondujo", + "@copied_address_to_clipboard": {}, + "all_the_great_software_used_by_fritter": "Ĉiu el la programaro bonega uzate per Quacker", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "Eldonis per la licenco MIT-a", + "@released_under_the_mit_license": {}, + "all": "Ĉio", + "@all": {}, + "newTrans": "Nova", + "@newTrans": {}, + "no": "Ne", + "@no": {}, + "yes": "Jes", + "@yes": {}, + "yes_please": "Jes, bonvolu", + "@yes_please": {}, + "are_you_sure": "Ĉu vi certas?", + "@are_you_sure": {}, + "toggle_all": "Baskuli ĉiun", + "@toggle_all": {}, + "delete": "Forigi", + "@delete": {}, + "ok": "Bone", + "@ok": {}, + "name": "Nomo", + "@name": {}, + "please_enter_a_name": "Bonvolu enigi nomon", + "@please_enter_a_name": {}, + "pick_a_color": "Elekti koloron!", + "@pick_a_color": {}, + "pick_an_icon": "Elekti ikonon!", + "@pick_an_icon": {}, + "search": "Serĉi", + "@search": {}, + "no_results_for": "Ne rezultoj por:", + "@no_results_for": {}, + "close": "Fermi", + "@close": {}, + "import_subscriptions": "Importi abonojn", + "@import_subscriptions": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Se vi havus iujn ajn rimarkojn pri tiu ĉi eblo, bonvolu lasi ĝin ŝaltite", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "the_github_issue": "la problemo ĉe GitHub (#143)", + "@the_github_issue": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Elektado de kontoj individuaj por importi, kaj asignado de grupoj estas ambaŭ planite estontece jam!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "Enigi vian uzantnomon de Twitter", + "@enter_your_twitter_username": {}, + "username": "Uzantnomo", + "@username": {}, + "unable_to_import": "Ne eblas importi", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} uzantoj importiĝis ĝis nun", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Finiĝis kun {snapshotData} uzantoj", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Ne abonoj. Provu serĉi aŭ importi iujn!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Importi el Twitter", + "@import_from_twitter": {}, + "unable_to_refresh_the_subscriptions": "Ne eblas aktualigi la abonojn", + "@unable_to_refresh_the_subscriptions": {}, + "groups": "Grupoj", + "@groups": {}, + "date_created": "Dato de kreo", + "@date_created": {}, + "date_subscribed": "Dato de ekabono", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "Ne eblas ŝarĝi la tendencaĵojn el {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Ne tendencaĵoj revenis. Estas ne atendite! Bonvolu raporti kiel cimo, se eble.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "Ne eblas trovi la lokojn disponeblajn de tendencoj.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "Lando", + "@country": {}, + "trends": "Tendencaĵoj", + "@trends": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Finiĝis {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Finiĝos {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Ne voĉoj} one{Unu voĉo} two{Du voĉoj} few{{numFormatted} voĉoj} many{{numFormatted} voĉoj} other{{numFormatted} voĉoj}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Premu por vidi {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Ne eblas konservi la plurmedion. Twitter revenigis staton de {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "downloading_media": "Elŝutas plurmedion...", + "@downloading_media": {}, + "successfully_saved_the_media": "Konservis la plurmedion!", + "@successfully_saved_the_media": {}, + "unknown": "Nekonata", + "@unknown": {}, + "playback_speed": "Rapido de reproduktado", + "@playback_speed": {}, + "subtitles": "Subtekstoj", + "@subtitles": {}, + "live": "REKTE", + "@live": {}, + "download": "Elŝuti", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} repepis {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "sorry_the_replied_tweet_could_not_be_found": "Pardonu, la pepo alrespondita ne eblas troviĝi!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "Respondas al", + "@replying_to": {}, + "this_tweet_is_unavailable": "Tiu ĉi pepo estas maldisponebla. Ĝi probable foriĝis.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Alpinglita pepo", + "@pinned_tweet": {}, + "thread": "Diskutfadeno", + "@thread": {}, + "unsave": "Malkonservi", + "@unsave": {}, + "save": "Konservi", + "@save": {}, + "share_tweet_link": "Kunhavigi la ligilon de la pepo", + "@share_tweet_link": {}, + "share_tweet_content_and_link": "Kunhavigi la enhavon kaj ligilon de la pepo", + "@share_tweet_content_and_link": {}, + "private_profile": "Profilo privata", + "@private_profile": {}, + "forbidden": "Twitter diras, atingo estas malpermesita", + "@forbidden": {}, + "bad_guest_token": "Twitter malvalidigis la ĵetonon de atingo. Bonvolu provi remalfermi Quacker-on!", + "@bad_guest_token": {}, + "user_not_found": "Uzanto ne troviĝis", + "@user_not_found": {}, + "account_suspended": "Konto haltiĝis", + "@account_suspended": {}, + "catastrophic_failure": "Malsukceso katastrofa", + "@catastrophic_failure": {}, + "back": "Antaŭen", + "@back": {}, + "retry": "Reprovi", + "@retry": {}, + "could_not_contact_twitter": "Ne eblas kontakti Twitter-on", + "@could_not_contact_twitter": {}, + "timed_out": "Tempolimiĝis", + "@timed_out": {}, + "oops_something_went_wrong": "Ups! Io misokazis 🥲", + "@oops_something_went_wrong": {}, + "report": "Raporti", + "@report": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Ne datumoj revenis, kiu neniam okazu. Bonvolu raporti cimon, se eblus!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Ĝisdatigoj", + "@updates": {}, + "when_a_new_app_update_is_available": "Kiam ĝisdatigo de la apo estas disponebla", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Ĝisdatigo por Quacker estas disponebla! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Premu por elŝuti {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Ĝisdatigu al {releaseVersion} per via kliento de F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker blua", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Blua temo bazite de la kolorskemo de Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Io malfunkciis en Quacker.", + "@something_broke_in_fritter": {}, + "should_check_for_updates_description": "Kontroli por ĝisdatigoj kiam Quacker komenciĝus", + "@should_check_for_updates_description": {}, + "download_handling": "Trakto de elŝutoj", + "@download_handling": {}, + "download_handling_description": "Kiel elŝutado funkcius", + "@download_handling_description": {}, + "download_handling_type_ask": "Ĉiam demandi", + "@download_handling_type_ask": {}, + "download_path": "Dosiervojo de elŝutado", + "@download_path": {}, + "permission_not_granted": "Permeso ne doniĝis. Bonvolu provi ree post permesado!", + "@permission_not_granted": {}, + "open_app_settings": "Montri agordojn de la apo", + "@open_app_settings": {}, + "choose": "Elekti", + "@choose": {}, + "not_set": "Ne agordita", + "@not_set": {}, + "language_subtitle": "Bezonas rekomencon", + "@language_subtitle": {}, + "hide_sensitive_tweets": "Kaŝi sentemajn pepojn", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Ĉu kaŝi pepojn markite kiel sentemaj", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "disable_screenshots": "Malŝalti ekrankopiojn", + "@disable_screenshots": {}, + "possibly_sensitive": "Eble sentema", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Tiu ĉi pepo enhavas enhavon eble senteman. Ĉu vi deziras vidi ĝin?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Tiu ĉi profilo eble enhavas eble sentemajn bildojn, idiomon, aŭ alian enhavon. Ĉu vi ankoraŭ deziras vidi ĝin?", + "@possibly_sensitive_profile": {}, + "home": "Hejmo", + "@home": {}, + "unable_to_load_home_pages": "Ne eblas ŝarĝi viajn hejmpaĝojn", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Reagordi paĝojn defaŭlten", + "@reset_home_pages": {}, + "group_name": "Grupo: {name}", + "@group_name": {}, + "confirm_close_fritter": "Ĉu vi certas, vi volas fermi Quacker-on?", + "@confirm_close_fritter": {}, + "search_term": "Termino de serĉo", + "@search_term": {}, + "only_public_subscriptions_can_be_imported": "Abonoj nur eblas importiĝi el publikaj profiloj", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "URL malsubtenita", + "@unsupported_url": {}, + "missing_page": "Paĝo manka", + "@missing_page": {}, + "two_home_pages_required": "Vi bezonas havi malpleje 2 paĝojn de hejmekrano.", + "@two_home_pages_required": {}, + "choose_pages": "Elekti paĝojn", + "@choose_pages": {}, + "subscribe": "Aboni", + "@subscribe": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Io ĵus misokazis en Quacker, kaj raporto de la eraro kreiĝis. La raporto eblas sendiĝi al la programistoj de Quacker por helpi ripari la problemon.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Dankon pro la raporto. Ni klopodos ripari ĝin baldaŭ!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Noto: Pro limigo de Twitter, ne ĉiuj pepoj eble estas ampleksitaj", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "this_user_does_not_have_anyone_following_them": "Tiu ĉi uzanto ne havas iun ajn observante si!", + "@this_user_does_not_have_anyone_following_them": {}, + "data_exported_to_fileName": "Datumoj eksportiĝis al {fileName}", + "@data_exported_to_fileName": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Ŝajnas, vi jam diris saluton el tiu ĉi versio de Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Jen datumoj kiuj sendiĝos. Si nur uziĝos por determini kiujn aparatojn kaj lingvojn subtenote de Quacker estontece.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "La dosiero ne ekzistas. Bonvolu certigi ĝin loke ĉe {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "help_make_fritter_even_better": "Helpi plibonigi Quacker-on", + "@help_make_fritter_even_better": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Sendi ping-on neidentigan por konigi al mi, ke vi uzas Quacker, kaj helpi programadon estontece", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "licenses": "Licencoj", + "@licenses": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Ĉu vi certas, vi volas forigi la grupon de abonoj {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Por importi abonojn el ekzistanta Twitter-konto, enigi vian uzantnomon sube.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Bonvolu noti, ke la metodon Quacker uzas por importi abonojn peze rapidolimigante de Twitter, do eble malsukcesus se vi havus tre multajn da kontojn abonitajn.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Via profilo devas esti publika, alie la importo ne funkcios", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "unable_to_stream_the_trend_location_preference": "Ne eblas fluigi la agordon de loko de tendencoj", + "@unable_to_stream_the_trend_location_preference": {}, + "tweets_number": "{num, plural, zero{ne pepoj} one{unu pepo} two{du pepoj} few{{numFormatted} pepoj} many{{numFormatted} pepoj} other{{numFormatted} pepoj}}", + "@tweets_number": {}, + "download_media_no_url": "Ne eblas elŝuti. Tiu ĉi plurmedio eble nur estas disponebla kiel fluo, kiun Quacker ne ankoraŭ eblas elŝuti.", + "@download_media_no_url": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "La pepo ne enhavas iun ajn tekston. Estas ne atendite", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "share_tweet_content": "Kunhavigi la enhavon de la pepo", + "@share_tweet_content": {}, + "page_not_found": "Twitter diras, la paĝo ne ekzistas, sed tio eble ne estas vere", + "@page_not_found": {}, + "please_check_your_internet_connection_error_message": "Bonvolu kontroli vian konekton Interretan.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "La ŝarĝado daŭris tro longe. Bonvolu kontroli vian konekton Interretan!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "download_handling_type_directory": "Konservi al dosierujo", + "@download_handling_type_directory": {}, + "unable_to_run_the_database_migrations": "Ne eblas ruli migradojn de la datumbazo", + "@unable_to_run_the_database_migrations": {}, + "should_check_for_updates_label": "Kontroli por ĝisdatigoj", + "@should_check_for_updates_label": {}, + "language": "Lingvo", + "@language": {}, + "disable_screenshots_hint": "Eviti ekrankopiojn farote. Eble ne funkcii kun ĉiuj aparatoj.", + "@disable_screenshots_hint": {}, + "you_must_have_at_least_2_home_screen_pages": "Vi devas havi malpleje 2 paĝojn de hejmekrano", + "@you_must_have_at_least_2_home_screen_pages": {}, + "saved_tweet_too_large": "Tiu ĉi pepo konservita ne eblas vidiĝi, pro ĝi estas tro granda por ŝarĝi. Bonvolu raporti al la programistoj.", + "@saved_tweet_too_large": {}, + "next": "Sekven", + "@next": {}, + "share_base_url_description": "Uzi URL-on bazan propran kiam kunhavigi", + "@share_base_url_description": {}, + "mute_videos": "Mutigi videojn", + "@mute_videos": {}, + "finish": "Fini", + "@finish": {}, + "mute_video_description": "Ĉu videoj mutiĝu defaŭlte", + "@mute_video_description": {}, + "share_base_url": "URL kunhavanta propra", + "@share_base_url": {} +} diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb new file mode 100644 index 00000000..b93b5e8d --- /dev/null +++ b/lib/l10n/intl_es.arb @@ -0,0 +1,74 @@ +{ + "unable_to_load_the_search_results": "No se pueden cargar los resultados de la búsqueda.", + "@unable_to_load_the_search_results": {}, + "don_not_send": "No envíe", + "@don_not_send": {}, + "unable_to_load_the_tweets_for_the_feed": "No se pueden cargar los tweets para el feed", + "@unable_to_load_the_tweets_for_the_feed": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Gracias por informarnos. Intentaremos solucionarlo enseguida!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "No se puede cargar la siguiente página de tweets", + "@unable_to_load_the_next_page_of_tweets": {}, + "could_not_find_any_tweets_from_the_last_7_days": "No pude encontrar ningún tweet de los últimos 7 días!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "No es posible cargar el grupo", + "@unable_to_load_the_group": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Nota: Debido a una limitación de Twitter, es posible que no se incluyan todos los tweets", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_retweets": "Incluye los retweets", + "@include_retweets": {}, + "trending": "Tendencias", + "@trending": {}, + "unable_to_load_the_list_of_follows": "No se puede cargar la lista de seguimiento", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_group_settings": "No se puede cargar la configuración del grupo", + "@unable_to_load_the_group_settings": {}, + "subscriptions": "Subscripciones", + "@subscriptions": {}, + "saved": "Guardado", + "@saved": {}, + "filters": "Filtros", + "@filters": {}, + "include_replies": "Incluye las respuestas", + "@include_replies": {}, + "unable_to_find_your_saved_tweets": "No se pueden encontrar tus tweets guardados.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Todavía no se has guardado ningún tuit.", + "@you_have_not_saved_any_tweets_yet": {}, + "no_results": "No hay resultados", + "@no_results": {}, + "this_group_contains_no_subscriptions": "¡Este grupo no contiene suscripciones!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "¡No se ha podido encontrar ningún tuit de este usuario!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "No se puede cargar la siguiente página de respuestas", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "No se ha podido cargar el tuit", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "No se pueden cargar los grupos de suscripción", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Añadir al grupo", + "@add_to_group": {}, + "unsubscribe": "Cancelar la suscripción", + "@unsubscribe": {}, + "subscribe": "suscribirse", + "@subscribe": {}, + "reporting_an_error": "Informar sobre un error", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Algo ha ido mal en Quacker y se ha generado un informe de error. El informe puede ser enviado a los desarrolladores de Quacker para ayudar a solucionar el problema.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "¿Desea activar la notificación automática de errores?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Su informe se enviará al proyecto Quacker's , y los detalles de privacidad se pueden encontrar en:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Enviar una vez", + "@send_once": {}, + "send_always": "Enviar siempre", + "@send_always": {}, + "never_send": "Nunca envíes", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Se ha comunicado un error a . Gracias!", + "@an_error_was_reported_to__thank_you": {}, + "this_user_does_not_follow_anyone": "¡Este usuario no sigue a nadie!", + "@this_user_does_not_follow_anyone": {} +} diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb new file mode 100644 index 00000000..381526c8 --- /dev/null +++ b/lib/l10n/intl_et.arb @@ -0,0 +1,494 @@ +{ + "this_group_contains_no_subscriptions": "Selles grupis pole tellimusi!", + "@this_group_contains_no_subscriptions": {}, + "unable_to_load_subscription_groups": "Tellimuste gruppide laadimine ei õnnestu", + "@unable_to_load_subscription_groups": {}, + "unable_to_load_the_next_page_of_replies": "Vastuste järgmise lehe laadimine ei õnnestu", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Säutsu laadimine ei õnnestu", + "@unable_to_load_the_tweet": {}, + "add_to_group": "Lisa gruppi", + "@add_to_group": {}, + "reporting_an_error": "Veast teatamine", + "@reporting_an_error": {}, + "subscriptions": "Tellimused", + "@subscriptions": {}, + "unable_to_load_the_tweets": "Säutsude laadimine ei õnnestu", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Profiili laadimine ei õnnestu", + "@unable_to_load_the_profile": {}, + "tweets": "Säutsud", + "@tweets": {}, + "tweets_and_replies": "Säutsud ja vastused", + "@tweets_and_replies": {}, + "followers": "Jälgijaid", + "@followers": {}, + "following": "Jälgitavaid", + "@following": {}, + "joined": "Liitunud {date}", + "@joined": {}, + "trending": "Hetkel populaarne", + "@trending": {}, + "saved": "Salvestatud", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Jälgijate loendi laadimine ei õnnestu", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_follow_anyone": "See kasutaja ei jälgi mitte kedagi!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Mitte keegi ei jälgi seda kasutajat!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_find_your_saved_tweets": "Sinu salvestatud säutsude leidmine ei õnnestu.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Sa pole veel ühtegi säutsu salvestanud!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Otsingutulemuste laadimine ei õnnestu.", + "@unable_to_load_the_search_results": {}, + "feed": "Säutsuvoog", + "@feed": {}, + "export": "Eksport", + "@export": {}, + "export_subscriptions": "Kas ekspordime tellimused?", + "@export_subscriptions": {}, + "export_subscription_groups": "Kas ekspordime tellimuste grupid?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Kas ekspordime tellimuste gruppide liikmed?", + "@export_subscription_group_members": {}, + "data_exported_to_fileName": "Andmed on eksporditud faili {fileName}", + "@data_exported_to_fileName": {}, + "thanks_for_helping_fritter": "Täname, et aitad Quacker'it! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Tundub, et sa oled endast meile hiljuti teada andnud 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Olekuteate saatmine ei õnnestu. Päringu staatus: {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Olekuteate saatmine aegus 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Olekuteate saatmine ei õnnestu. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "say_hello_emoji": "Ütle meile tere 👋", + "@say_hello_emoji": {}, + "say_hello": "Ütle meile tere", + "@say_hello": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Quackeri kasutuse hindamiseks ja tulevaste arenduste kavandamiseks saada meile mitteisikustatav olekuteade", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "licenses": "Litsentsid", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Kõik suurepärane tarkvara, mida Quacker kasutab", + "@all_the_great_software_used_by_fritter": {}, + "released_under_the_mit_license": "Avaldatud MIT litsentsi alusel", + "@released_under_the_mit_license": {}, + "import_subscriptions": "Tellimuste import", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Olemasoleva Twitteri konto tellimuste impordiks palun sisesta alljärgnevalt oma kasutajanimi.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Kas sa oled kindel, et soovid kustutada tellimuste grupi {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "no_subscriptions_try_searching_or_importing_some": "Tellimusi ei leidu. Kas lisa mõni otsingust või impordi!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "date_subscribed": "Tellimuse lisamise aeg", + "@date_subscribed": {}, + "this_tweet_is_unavailable": "See säuts pole leitav. Ilmselt on ta juba kustutatud.", + "@this_tweet_is_unavailable": {}, + "thread": "Jutulõng", + "@thread": {}, + "pinned_tweet": "Klammerdatud säuts", + "@pinned_tweet": {}, + "unsave": "Eemalda salvestus", + "@unsave": {}, + "save": "salvesta", + "@save": {}, + "share_tweet_content": "Jaga säutsu sisu", + "@share_tweet_content": {}, + "private_profile": "Privaatne profiil", + "@private_profile": {}, + "user_not_found": "Kasutajat ei leidu", + "@user_not_found": {}, + "please_check_your_internet_connection_error_message": "Palun kontrolli oma võrguühendust.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "updates": "Uuendused", + "@updates": {}, + "when_a_new_app_update_is_available": "Kui uuendus on saadaval", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Quacker'i tarkvarauuendus on saadaval! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Versiooni {releaseVersion} allalaadimiseks klõpsi", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Uuenduseks versioonini {releaseVersion} kasuta oma F-Droidi klienti", + "@update_to_release_version_through_your_fdroid_client": {}, + "unable_to_run_the_database_migrations": "Quackeri andmebaaside versiooniuuendus ei õnnestu", + "@unable_to_run_the_database_migrations": {}, + "fritter_blue": "Quacker'i sinine", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Sinine värviteema, mille aluseks on Twitteri kujundus", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Midagi läks nüüd Quacker'is katki.", + "@something_broke_in_fritter": {}, + "subscribe": "Telli", + "@subscribe": {}, + "unsubscribe": "Loobu tellimusest", + "@unsubscribe": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Palun arvesta, et Quacker kasutab tellimuste impordiks päringut, mille kasutamise sagedust Twitter piirab. Seega kui sul on palju jälgitavaid kontosid, siis import ei pruugi õnnestuda.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "could_not_find_any_tweets_by_this_user": "Ühtegi selle kasutaja säutsu ei lidunud!", + "@could_not_find_any_tweets_by_this_user": {}, + "media": "Meedia", + "@media": {}, + "data_exported_to_fullPath": "Andmed on eksporditud kausta {fullPath}", + "@data_exported_to_fullPath": {}, + "unable_to_load_the_next_page_of_follows": "Jälgijate loendi järgmise lehe laadimine ei õnnestu", + "@unable_to_load_the_next_page_of_follows": {}, + "share_tweet_link": "Jaga säutsu linki", + "@share_tweet_link": {}, + "no_results": "Tulemusi pole", + "@no_results": {}, + "send": "Saada", + "@send": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Siin näed meile saadetavaid andmeid. Me kasutame seda vaid selleks, et omada ülevaadet seadmetest ja keeltest, mida Quacker võiks ka tulevikus toetada.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Midagi läks Quackeris viltu ja selle alusel on olemas ka veakirjeldus. Probleemi uurimiseks ja lahendamiseks võid sa selle saata Quackeri arendajatele.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Kas sa luba vigadest automaatselt teatada?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Veakirjeldus saadetakse Quacker'i kontole veahaldusrakenduses. privaatusteabe leiad siit:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Saada vaid sel korral", + "@send_once": {}, + "send_always": "Saada alati", + "@send_always": {}, + "don_not_send": "Ära saada", + "@don_not_send": {}, + "never_send": "Ära saada mitte kunagi", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Veateade on saadetud veahaldusrakendusse. Tänud!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Tänud teatamast. Õige pea proovime põhjuse tuvastada ning vea parandada!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_tweets_for_the_feed": "Selle andmevoo säutsude laadimine ei õnnestu", + "@unable_to_load_the_tweets_for_the_feed": {}, + "unable_to_load_the_next_page_of_tweets": "Säutsude järgmise lehe laadimine ei õnnestu", + "@unable_to_load_the_next_page_of_tweets": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Viimase 7 päeva andmetest ei leidu ühtegi säutsu!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Grupi laadimine ei õnnestu", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Grupi seadete laadimine ei õnnestu", + "@unable_to_load_the_group_settings": {}, + "filters": "Filtrid", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Märkus: Twitteri määratud piirangute tõttu ei pruugi kõik säutsud olla kaasatud", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Sealhulgas vastused", + "@include_replies": {}, + "include_retweets": "Sealhulgas kordussäutsud", + "@include_retweets": {}, + "export_settings": "Kas ekspordime seadistused?", + "@export_settings": {}, + "export_tweets": "Kas ekspordime säutsud?", + "@export_tweets": {}, + "data_imported_successfully": "Andmete importimine õnnestus", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Tundub, et sa juba oled sellest Quackeri versioonist meile teada andnud!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "Katkesta", + "@cancel": {}, + "general": "Üldised seadistused", + "@general": {}, + "default_tab": "Vaikimisi vaade", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Missugune vaade on kuvatud rakenduse käivitamisel", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Multimeedia suurus", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Kasutades väiksemaid pildifaile säästad ribalaiust", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Pole kasutusel", + "@disabled": {}, + "thumbnail": "Pisipildid", + "@thumbnail": {}, + "small": "Väikesed pildid", + "@small": {}, + "medium": "Keskmised pildid", + "@medium": {}, + "large": "Suured pildid", + "@large": {}, + "theme": "Kujundus", + "@theme": {}, + "system": "Süsteemi keel", + "@system": {}, + "light": "Hele teema", + "@light": {}, + "dark": "Tume teema", + "@dark": {}, + "true_black": "Missugune must teema?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Tumeda teemana kasuta korrektset musta teemat", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Andmed", + "@data": {}, + "import": "Import", + "@import": {}, + "import_data_from_another_device": "Impordi andmed muust seadmest", + "@import_data_from_another_device": {}, + "legacy_android_import": "Import vanemate Androidi versioonide jaoks", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Faili ei leidu. Palun kontrolli, et ta asuks siin {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "eesliide", + "@prefix": {}, + "export_your_data": "Ekspordi oma andmed", + "@export_your_data": {}, + "logging": "Logimine", + "@logging": {}, + "enable_": "Kas lubad kasutada 't?", + "@enable_": {}, + "about": "Rakenduse teave", + "@about": {}, + "version": "Versioon", + "@version": {}, + "copied_version_to_clipboard": "Kopeerisin versiooni lõikelauale", + "@copied_version_to_clipboard": {}, + "contribute": "Osale arenduses", + "@contribute": {}, + "help_make_fritter_even_better": "Aita muuta Quacker'it veelgi paremaks", + "@help_make_fritter_even_better": {}, + "report_a_bug": "Teata vigadest", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Anna arendajatele teada, kui midagi ei toimi", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Toeta rahaliselt", + "@donate": {}, + "copied_address_to_clipboard": "Kopeerisin aadressi lõikelauale", + "@copied_address_to_clipboard": {}, + "fritter": "Quacker", + "@fritter": {}, + "all": "Kõik", + "@all": {}, + "newTrans": "Uus", + "@newTrans": {}, + "no": "Ei", + "@no": {}, + "yes": "Jah", + "@yes": {}, + "are_you_sure": "Kas sa oled kindel?", + "@are_you_sure": {}, + "toggle_all": "Lülita kõik sisse/välja", + "@toggle_all": {}, + "delete": "Kustuta", + "@delete": {}, + "name": "Nimi", + "@name": {}, + "pick_a_color": "Palun vali värv!", + "@pick_a_color": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Kui sul on selle funktsioonaalsuse kohta tagasisidet, palun kirjuta sellest aadressil", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Nii üksikute kontode valimine importimiseks, kui gruppide määramine on kavandatud järgmiste arendustena!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "Sisesta oma Twitteri kasutajanimi", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Sinu profiil peab olema avalik, muidu import ei toimi", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "Kasutajanimi", + "@username": {}, + "unable_to_import": "Ei ole võimalik importida", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "Seni on imporditud {snapshotData} kasutajat", + "@imported_snapshot_data_users_so_far": {}, + "import_from_twitter": "Impordi Twitterist", + "@import_from_twitter": {}, + "successfully_saved_the_media": "Salvestasin meedia!", + "@successfully_saved_the_media": {}, + "unknown": "Teadmata", + "@unknown": {}, + "playback_speed": "Taasesituse kiirus", + "@playback_speed": {}, + "subtitles": "Subtiitrid", + "@subtitles": {}, + "live": "Otsesaade", + "@live": {}, + "download": "Laadi alla", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} kirjutas {timeAgo} eest kordussäutsu", + "@this_tweet_user_name_retweeted": {}, + "downloading_media": "Laadin alla meediat...", + "@downloading_media": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Meedia salvestamine ei õnnestu. Twitter'i vastus päringule: {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "tap_to_show_getMediaType_item_type": "{getMediaType} kuvamiseks klõpsi", + "@tap_to_show_getMediaType_item_type": {}, + "groups": "Grupid", + "@groups": {}, + "date_created": "Loomiskuupäev", + "@date_created": {}, + "trends": "Hetkel populaarne", + "@trends": {}, + "unable_to_find_the_available_trend_locations": "Ei õnnestu laadida riike ja piirkondi, mille kohta kuvada hetkel populaarsemaid viiteid ja otsinguid.", + "@unable_to_find_the_available_trend_locations": {}, + "unable_to_stream_the_trend_location_preference": "Ei õnnestu edastada hetkel populaarsemaid viidete ja otsingute piirkondade eelistusi", + "@unable_to_stream_the_trend_location_preference": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Päringu vastuses polnud andmeid hetkel populaarsemate viidete ja otsingute kohta. Seda ei oleks nüüd küll pidanud juhtuma! Kui võimalik siis palun saada meile veateade.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "country": "Riik", + "@country": {}, + "numberFormat_format_total_votes": "{num, plural, zero{pole hääletatud} one{üks hääl} two{kaks häält} few{{numFormatted} häält} many{{numFormatted} häält} other{{numFormatted} häält}}", + "@numberFormat_format_total_votes": {}, + "unable_to_load_the_trends_for_widget_place_name": "Ei õnnestu laadida hetkel populaarsemaid viiteid ja otsinguid riigile või piirkonnale: {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "replying_to": "Vastusena", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Säutsus puudus sisu. See on nüüd küll ootamatu", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "account_suspended": "Kasutajakonto on ajutiselt peatatud", + "@account_suspended": {}, + "catastrophic_failure": "Kõik läks ikka väga viltu", + "@catastrophic_failure": {}, + "back": "Tagasi", + "@back": {}, + "retry": "Proovi uuesti", + "@retry": {}, + "could_not_contact_twitter": "Puudub ühendus Twitter'iga", + "@could_not_contact_twitter": {}, + "timed_out": "Päring aegus", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Andmete laadimine kestab liiga kaua. Palun vaata, kas sinu internetiühendus toimib!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "Hopsti! Midagi läks nüüd viltu 🥲", + "@oops_something_went_wrong": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Vastuses ei leidunud andmeid ning midagi sellist ei tohiks juhtuda. Kui saad, siis palun anna meile sellest veast teada!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "report": "Teata veast", + "@report": {}, + "help_support_fritters_future": "Toeta Quacker'i arendust rahaliselt", + "@help_support_fritters_future": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Palun veendu, et andmed, mida soovid importida, asuvad seal, seejärel vajuta allpool olevat importimisnuppu.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "whether_errors_should_be_reported_to_": "Vigadest teatamine veebirakenduse abil", + "@whether_errors_should_be_reported_to_": {}, + "ok": "Sobib", + "@ok": {}, + "please_enter_a_name": "Palun sisesta nimi", + "@please_enter_a_name": {}, + "finished_with_snapshotData_users": "{snapshotData} kasutaja importimine on valmis", + "@finished_with_snapshotData_users": {}, + "sorry_the_replied_tweet_could_not_be_found": "Vabandust, aga vastatud säutsu enam ei leidu!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Lõppeb {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Lõppes {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "tweets_number": "{num, plural, zero{säutse pole} one{üks säuts} two{kaks säutsu} few{{numFormatted} säutsu} many{{numFormatted} säutsu} other{{numFormatted} säutsu}}", + "@tweets_number": {}, + "select": "Vali", + "@select": {}, + "download_handling": "Allalaadimiste seadistused", + "@download_handling": {}, + "download_handling_description": "Kuidas allalaadimine peaks toimima", + "@download_handling_description": {}, + "download_handling_type_directory": "Salvesta kausta", + "@download_handling_type_directory": {}, + "download_path": "Allalaadimiste kaust", + "@download_path": {}, + "permission_not_granted": "Õigusi pole. Palun proovi pärast loa andmist uuesti!", + "@permission_not_granted": {}, + "open_app_settings": "Ava rakenduse seadistused", + "@open_app_settings": {}, + "choose": "Vali", + "@choose": {}, + "not_set": "Seadistamata", + "@not_set": {}, + "search": "Otsi", + "@search": {}, + "should_check_for_updates_label": "Kontrolli uuendusi", + "@should_check_for_updates_label": {}, + "pick_an_icon": "Vali ikoon!", + "@pick_an_icon": {}, + "the_github_issue": "veakirjeldus GitHub'is (#143)", + "@the_github_issue": {}, + "no_results_for": "Otsingutulemused puuduvad:", + "@no_results_for": {}, + "close": "Sulge", + "@close": {}, + "download_handling_type_ask": "Alati küsi", + "@download_handling_type_ask": {}, + "share_tweet_content_and_link": "Jaga säutsu sisu ja linki", + "@share_tweet_content_and_link": {}, + "should_check_for_updates_description": "Quacker'i käivitumisel kontrolli uuenduste olemasolu", + "@should_check_for_updates_description": {}, + "unable_to_refresh_the_subscriptions": "Tellimuste sisu ei saa hetkel laadida", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter ütleb, et lehte pole olemas, kuid see ei pruugi tõsi olla", + "@page_not_found": {}, + "forbidden": "Twitter ütleb, et juurdepääs sellele sisule on keelatud", + "@forbidden": {}, + "bad_guest_token": "Twitter on meie juurdepääsutunnuse kehtetuks tunnistanud. Palun proovi uuesti avada Quacker!", + "@bad_guest_token": {}, + "language": "Keel", + "@language": {}, + "language_subtitle": "Eeldab rakenduse uuesti käivitamist", + "@language_subtitle": {}, + "theme_mode": "Kujundusrežiim", + "@theme_mode": {}, + "yes_please": "Jah, palun", + "@yes_please": {}, + "download_media_no_url": "Allalaadimine ei õnnestu. See meedia võib olla saadaval vaid voogedastusena ning Quacker veel ei oska teda alla laadida.", + "@download_media_no_url": {}, + "possibly_sensitive": "Võimalik ebasobilik sisu", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Selles säutsus võib leiduda ebasobilikku sisu. Kas sa soovid seda näha?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Selles profiilis võib leiduda ebasobilikke pilte, sõnakasutust või muud sisu. Ka sa siiski soovid seda vaadata?", + "@possibly_sensitive_profile": {}, + "hide_sensitive_tweets": "Peida võimalikud ebasobiliku sisuga säutsud", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Kas soovid peita säutse, kus võib olla ebasobilikku sisu", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "confirm_close_fritter": "Kas sa oled kindel, et soovid panna Quacker'i kinni?", + "@confirm_close_fritter": {}, + "search_term": "Otsingusõna", + "@search_term": {}, + "disable_screenshots_hint": "Ära luba teha ekraanitõmmiseid. See ei pruugi kõikides seadmetes toimida.", + "@disable_screenshots_hint": {}, + "group_name": "Grupp: {name}", + "@group_name": {}, + "disable_screenshots": "Lülita ekraanitõmmised välja", + "@disable_screenshots": {}, + "home": "Koduleht", + "@home": {}, + "unable_to_load_home_pages": "Sinu kodulehtede laadimine ei õnnestunud", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Lähtesta lehed vaikimisi väärtusteks", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Sul peaks olema vähemalt 2 kodulehte", + "@you_must_have_at_least_2_home_screen_pages": {}, + "activate_non_confirmation_bias_mode_label": "Kasuta kinnituskalduvust eiravat režiimi", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Antud valik peidab säutsude autorid. Sellega väldid sotsiaalmeediale omaseid kinnituskalduvusega (confirmation bias) arvestavaid algoritme.", + "@activate_non_confirmation_bias_mode_description": {}, + "only_public_subscriptions_can_be_imported": "Tellimusi saad importida ainult avalikest profiilidest", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "URL ei ole toetatud", + "@unsupported_url": {}, + "missing_page": "Puuduv lehekülg", + "@missing_page": {}, + "two_home_pages_required": "Sul peab olema vähemalt 2 avalehte.", + "@two_home_pages_required": {}, + "choose_pages": "Vali lehed", + "@choose_pages": {}, + "saved_tweet_too_large": "Seda salvestatud säutsu ei saa kuvada, kuna see on laadimiseks liiga suur. Palun teata sellest veast arendajatele.", + "@saved_tweet_too_large": {}, + "mute_videos": "Summuta videote heli", + "@mute_videos": {}, + "mute_video_description": "Kas videoteheli peaks esitamisel olema vaikimisi summutatud", + "@mute_video_description": {}, + "share_base_url_description": "Kasuta lingi jagamiseks kohandatud URL'i", + "@share_base_url_description": {}, + "finish": "Lõpeta", + "@finish": {}, + "share_base_url": "Kohandatud URL lingi jagamiseks", + "@share_base_url": {}, + "next": "Järgmine", + "@next": {}, + "add_subscriptions": "Lisa tellimusi", + "@add_subscriptions": {}, + "functionality_unsupported": "Twitter enam ei võimalda sellise funktsionaalsuse kasutamist!", + "@functionality_unsupported": {} +} diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb new file mode 100644 index 00000000..dc2e8afc --- /dev/null +++ b/lib/l10n/intl_eu.arb @@ -0,0 +1,466 @@ +{ + "this_group_contains_no_subscriptions": "Talde honek ez du harpidetzarik!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Ezin izan da erabiltzaile honen txiorik aurkitu!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Ezin da hurrengo erantzunen orria kargatu", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Ezin da txioa kargatu", + "@unable_to_load_the_tweet": {}, + "add_to_group": "Gehitu taldera", + "@add_to_group": {}, + "select": "Hautatu", + "@select": {}, + "unsubscribe": "Kendu harpidetza", + "@unsubscribe": {}, + "subscribe": "Harpidetu", + "@subscribe": {}, + "reporting_an_error": "Akats baten berri eman", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "Akats txostenen berri emate automatikoa gaitu nahi duzu?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "unable_to_load_subscription_groups": "Ezin dira harpidetza taldeak kargatu", + "@unable_to_load_subscription_groups": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Zerbait gaizki atera da Quacker-en, eta akatsen txostena sortu da. Txostena Quackerren garatzaileei bidali ahal zaie arazoa konpontzen laguntzeko.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "say_hello_emoji": "Agurtu 👋", + "@say_hello_emoji": {}, + "say_hello": "Agurtu", + "@say_hello": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Hona hemen bidaliko diren datuak. Etorkizunean Quacker-en zein gailu eta hizkuntza onartzen diren zehazteko soilik erabiliko da.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Bidali identifikatu gabeko ping bat Quacker erabiltzen ari zarela jakinarazteko eta etorkizuneko garapenari laguntzeko", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Orokorra", + "@general": {}, + "default_tab": "Fitxa lehenetsia", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Aplikazioa irekitzean erakutsiko den fitxa", + "@which_tab_is_shown_when_the_app_opens": {}, + "save_bandwidth_using_smaller_images": "Gorde banda-zabalera irudi txikiagoekin", + "@save_bandwidth_using_smaller_images": {}, + "media_size": "Multimedia tamaina", + "@media_size": {}, + "disabled": "Desgaituta", + "@disabled": {}, + "thumbnail": "Miniatura", + "@thumbnail": {}, + "small": "Txikia", + "@small": {}, + "system": "Sistema", + "@system": {}, + "light": "Argia", + "@light": {}, + "dark": "Iluna", + "@dark": {}, + "true_black": "Benetako beltza?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Erabili benetako beltza gai ilunerako", + "@use_true_black_for_the_dark_mode_theme": {}, + "import": "Inportatu", + "@import": {}, + "data": "Datuak", + "@data": {}, + "import_data_from_another_device": "Inportatu datuak beste gailu batetik", + "@import_data_from_another_device": {}, + "legacy_android_import": "Legacy Android inportazioa", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Fitxategia ez da existitzen. Mesedez, ziurtatu {filePath} helbidean dagoela", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "aurrizkia", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Mesedez, ziurtatu inportatu nahi dituzun datuak bertan daudela, eta sakatu beheko inportazio-botoia.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Esportatu zure datuak", + "@export_your_data": {}, + "copied_version_to_clipboard": "Kopiatu da bertsioa arbelean", + "@copied_version_to_clipboard": {}, + "help_make_fritter_even_better": "Lagundu Quacker hobetzen", + "@help_make_fritter_even_better": {}, + "report_a_bug": "Akats baten berri eman", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Utzi garatzaileei zerbait hautsita dagoen jakin dezaten", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Dohaintza", + "@donate": {}, + "help_support_fritters_future": "Lagundu Quacker-en etorkizuna bermatzen", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Helbidea arbelean kopiatu da", + "@copied_address_to_clipboard": {}, + "licenses": "Lizentziak", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Quacker-ek erabiltzen duen software bikaina", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "MIT lizentziapean argitaratua", + "@released_under_the_mit_license": {}, + "all": "Dena", + "@all": {}, + "newTrans": "Berria", + "@newTrans": {}, + "please_enter_a_name": "Mesedez, idatzi izen bat", + "@please_enter_a_name": {}, + "no": "Ez", + "@no": {}, + "yes": "Bai", + "@yes": {}, + "unable_to_refresh_the_subscriptions": "Harpidetzak ezin dira eguneratu", + "@unable_to_refresh_the_subscriptions": {}, + "country": "Herrialdea", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "Ezin da igorri joera kokapenaren hobespena", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Joerak", + "@trends": {}, + "tweets_number": "{num, plural, zero{Txorik gabea} one{Txio bat} two{Bi txio} few{{numFormatted} txio} many{{numFormatted} txio} other{{numFormatted} txio}}", + "@tweets_number": {}, + "page_not_found": "Twitterrek dio orria ez dela existitzen, baina baliteke hori egia ez izatea", + "@page_not_found": {}, + "forbidden": "Twitterrek dio horretarako sarbidea debekatuta dagoela", + "@forbidden": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Amaituta {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "share_tweet_content": "Partekatu txioaren edukia", + "@share_tweet_content": {}, + "share_tweet_link": "Partekatu txioaren esteka", + "@share_tweet_link": {}, + "oops_something_went_wrong": "Hara! Zerbait gaizki atera da 🥲", + "@oops_something_went_wrong": {}, + "please_check_your_internet_connection_error_message": "Mesedez, egiaztatu Internet konexioa.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Denbora agortuta", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Denbora gehiegi behar izan du honek kargatzeko. Mesedez, egiaztatu interneteko konexioa!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "your_report_will_be_sent_to_fritter__project": "Zure txostena Quacker-en proiektura bidaliko da, eta pribatutasun xehetasunak helbide honetan aurki ditzakezu:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Bidali behin", + "@send_once": {}, + "send_always": "Bidali beti", + "@send_always": {}, + "don_not_send": "Ez bidali", + "@don_not_send": {}, + "never_send": "Ez bidali inoiz", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Akats baten berri eman zaio -ri. Eskerrik asko!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Eskerrik asko informatzeagatik. Denbora gutxian konpontzen saiatuko gara!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Ezin da txioen hurrengo orria kargatu", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Ezin dira kargatu jarioko txioak", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Ezin izan da azken 7 egunetako txiorik aurkitu!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Ezin da taldea kargatu", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Ezin dira taldearen ezarpenak kargatu", + "@unable_to_load_the_group_settings": {}, + "filters": "Filtroak", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Oharra: Twitter-eko muga bat dela eta, litekeena da txio guztiak ez agertzea", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Erantzunak sartu", + "@include_replies": {}, + "you_have_not_saved_any_tweets_yet": "Oraindik ez duzu txiorik gorde!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Ezin dira bilaketaren emaitzak kargatu.", + "@unable_to_load_the_search_results": {}, + "no_results": "Ez dago emaitzarik", + "@no_results": {}, + "include_retweets": "Birtxioak sartu", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Ezin dira aurkitu gordetako txioak.", + "@unable_to_find_your_saved_tweets": {}, + "feed": "Jarioa", + "@feed": {}, + "trending": "Joerak", + "@trending": {}, + "saved": "Gordeak", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Ezin da jarraipenen zerrenda kargatu", + "@unable_to_load_the_list_of_follows": {}, + "media": "Multimedia", + "@media": {}, + "subscriptions": "Harpidetzak", + "@subscriptions": {}, + "unable_to_load_the_next_page_of_follows": "Ezin da jarraipenen hurrengo orrialdea kargatu", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "Erabiltzaile honek ez du inor jarraitzen!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Erabiltzaile hau ez du inork jarraitzen!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Ezin da txioa kargatu", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Ezin da profila kargatu", + "@unable_to_load_the_profile": {}, + "tweets": "Txioak", + "@tweets": {}, + "tweets_and_replies": "Txioak eta erantzunak", + "@tweets_and_replies": {}, + "following": "Jarraitzen", + "@following": {}, + "data_exported_to_fullPath": "{fullPath}-era esportatu dira datuak", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "{fileName}-era esportatu dira datuak", + "@data_exported_to_fileName": {}, + "export_settings": "Ezarpenak esportatu nahi dituzu?", + "@export_settings": {}, + "export_subscriptions": "Harpidetzak esportatu nahi dituzu?", + "@export_subscriptions": {}, + "export_subscription_groups": "Harpidetza-taldeak esportatu nahi dituzu?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Harpidetza taldeko kideak esportatu nahi dituzu?", + "@export_subscription_group_members": {}, + "export_tweets": "Txioak esportatu nahi dituzu?", + "@export_tweets": {}, + "thanks_for_helping_fritter": "Eskerrik asko Quacker laguntzeagatik! 💖", + "@thanks_for_helping_fritter": {}, + "cancel": "Ezeztatu", + "@cancel": {}, + "data_imported_successfully": "Datuak behar bezala inportatu dira", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Badirudi Quacker-en bertsio honetatik agurtu duzula jada!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Badirudi duela gutxi ping bat bidali duzula 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Ezin da ping-a bidali. Egoera kodea {statusCode} zen", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Itxaronaldia agortu da ping-a bidali nahian 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Ezin da ping-a bidali. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Bidali", + "@send": {}, + "logging": "Erregistratzea", + "@logging": {}, + "enable_": " gaitu?", + "@enable_": {}, + "whether_errors_should_be_reported_to_": "Akatsak ri bidali behar litzaizkioke", + "@whether_errors_should_be_reported_to_": {}, + "about": "Honi buruz", + "@about": {}, + "version": "Bertsioa", + "@version": {}, + "contribute": "Egin ekarpena", + "@contribute": {}, + "toggle_all": "Aktibatu guztiak", + "@toggle_all": {}, + "delete": "Ezabatu", + "@delete": {}, + "name": "Izena", + "@name": {}, + "are_you_sure": "Ziur zaude?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Ziur {name} harpidetza taldea ezabatu nahi duzula?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "ok": "Ados", + "@ok": {}, + "pick_a_color": "Aukeratu kolore bat!", + "@pick_a_color": {}, + "pick_an_icon": "Aukeratu ikono bat!", + "@pick_an_icon": {}, + "search": "Bilatu", + "@search": {}, + "no_results_for": "Ez dago emaitzarik:", + "@no_results_for": {}, + "close": "Itxi", + "@close": {}, + "import_subscriptions": "Inportatu harpidetzak", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Lehendik dagoen Twitter kontu batetik harpidetzak inportatzeko, idatzi zure erabiltzaile-izena behean.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "the_github_issue": "Github arazoa (#143)", + "@the_github_issue": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Inportatu beharreko kontu indibidualak hautatzea eta taldeak esleitzea etorkizunerako aurreikusita daude dagoeneko!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "Sartu zure Twitter erabiltzaile-izena", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Zure profilak publikoa izan behar du, bestela inportazioak ez du funtzionatuko", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Kontuan izan Quacker-ek Twitter bidez harpidetzak inportatzeko erabiltzen duen modua oso mugatuta dagoela eta kontu asko jarraian baditu, huts egin dezakeela.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Funtzio honi buruzko iruzkinen bat baduzu, utzi", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "imported_snapshot_data_users_so_far": "Orain arte inportatutako {snapshotData} erabiltzaileak", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "{snapshotData} erabiltzaileekin amaitu da", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Ez dago harpidetzarik. Saiatu batzuk bilatzen edo inportatzen!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Inportatu Twitter-etik", + "@import_from_twitter": {}, + "username": "Erabiltzaile-izena", + "@username": {}, + "unable_to_import": "Ezin da inportatu", + "@unable_to_import": {}, + "groups": "Taldeak", + "@groups": {}, + "date_created": "Sortze data", + "@date_created": {}, + "date_subscribed": "Harpidetza data", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "Ezin dira joerak kargatu {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Ez da joerarik itzuli. Hau ezustekoa! Mesedez, jakinarazi akats gisa, ahal baduzu.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "Ezin dira aurkitu eskuragarri dauden joera-kokapenak.", + "@unable_to_find_the_available_trend_locations": {}, + "downloading_media": "Multimedia deskargatzen...", + "@downloading_media": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Amaitzen da {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Botorik gabea} one{Boto bat} two{Bi boto} few{{numFormatted} boto} many{{numFormatted} boto} other{{numFormatted} boto}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Sakatu {getMediaType} erakusteko", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Ezin da multimedia gorde. Twitter-ek {responseStatusCode} egoerara itzuli du", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "live": "ZUZENEAN", + "@live": {}, + "download": "Deskargatu", + "@download": {}, + "unknown": "Ezezaguna", + "@unknown": {}, + "playback_speed": "Erreprodukzio abiadura", + "@playback_speed": {}, + "subtitles": "Azpitituluak", + "@subtitles": {}, + "this_tweet_user_name_retweeted": "Orain dela {timeAgo} {thisTweetUserName} birtxiotua", + "@this_tweet_user_name_retweeted": {}, + "successfully_saved_the_media": "Multimedia gorde da!", + "@successfully_saved_the_media": {}, + "unsave": "Ez gorde", + "@unsave": {}, + "replying_to": "Erantzun", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Txioak ez zuen testurik", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Txio hau ez dago erabilgarri. Ziurrenik ezabatua izango zen.", + "@this_tweet_is_unavailable": {}, + "sorry_the_replied_tweet_could_not_be_found": "Sentitzen dugu, ezin izan zen txioa aurkitu!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "pinned_tweet": "Ainguratutako txioa", + "@pinned_tweet": {}, + "thread": "Haria", + "@thread": {}, + "save": "Gorde", + "@save": {}, + "share_tweet_content_and_link": "Partekatu txioaren edukia eta esteka", + "@share_tweet_content_and_link": {}, + "private_profile": "Profil pribatua", + "@private_profile": {}, + "user_not_found": "Ez da erabiltzailea aurkitu", + "@user_not_found": {}, + "account_suspended": "Etendako kontua", + "@account_suspended": {}, + "catastrophic_failure": "Akats katastrofikoa", + "@catastrophic_failure": {}, + "back": "Itzuli", + "@back": {}, + "retry": "Saiatu berriro", + "@retry": {}, + "could_not_contact_twitter": "Ezin izan da Twitterrekin harremanetan jarri", + "@could_not_contact_twitter": {}, + "tap_to_download_release_version": "Sakatu {releaseVersion} deskargatzeko", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Eguneratu {releaseVersion} zure F-Droid bezeroaren bidez", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker urdina", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Twitter-eko kolore eskeman oinarritutako gai urdina", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "updates": "Eguneraketak", + "@updates": {}, + "when_a_new_app_update_is_available": "Aplikazioaren eguneratze berri bat eskuragarri dagoenean", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Quacker-en eguneraketa eskuragarri dago! 🚀", + "@an_update_for_fritter_is_available": {}, + "download_handling": "Deskargak erabiltzea", + "@download_handling": {}, + "download_handling_description": "Deskargak nola funtzionatu behar duen", + "@download_handling_description": {}, + "download_handling_type_ask": "Galdetu beti", + "@download_handling_type_ask": {}, + "something_broke_in_fritter": "Quacker-en zerbait hautsi da.", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "Ezin dira datu-baseko migrazioak gauzatu", + "@unable_to_run_the_database_migrations": {}, + "should_check_for_updates_label": "Egiaztatu eguneratzeak", + "@should_check_for_updates_label": {}, + "should_check_for_updates_description": "Egiaztatu eguneratzeak Quacker hasten denean", + "@should_check_for_updates_description": {}, + "download_handling_type_directory": "Gorde direktorioan", + "@download_handling_type_directory": {}, + "download_path": "Deskargatzeko bidea", + "@download_path": {}, + "permission_not_granted": "Ez da baimenik eman. Mesedez, saiatu berriro eman ondoren!", + "@permission_not_granted": {}, + "open_app_settings": "Ireki aplikazioaren ezarpenak", + "@open_app_settings": {}, + "choose": "Aukeratu", + "@choose": {}, + "not_set": "Ez da ezarri", + "@not_set": {}, + "language": "Hizkuntza", + "@language": {}, + "bad_guest_token": "Twitterrek sarbide-tokena baliogabetu du. Mesedez, saiatu Quacker berriro irekitzen!", + "@bad_guest_token": {}, + "report": "Txostena", + "@report": {}, + "language_subtitle": "Berrabiaraztea eskatzen du", + "@language_subtitle": {}, + "followers": "Jarraitzaileak", + "@followers": {}, + "joined": "{date}-ean sortua", + "@joined": {}, + "export": "Esportatu", + "@export": {}, + "large": "Handia", + "@large": {}, + "medium": "Ertaina", + "@medium": {}, + "theme": "Gaia", + "@theme": {}, + "download_media_no_url": "Ezin da deskargatu. Baliteke multimedia hau korronte gisa soilik egotea, Quacker-ek oraindik deskargatu ezin duena.", + "@download_media_no_url": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Ez da daturik itzuli, eta hori ez litzateke inoiz gertatu behar. Mesedez, jakinarazi akatsen bat, ahal bada!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "theme_mode": "Gaiaren modua", + "@theme_mode": {}, + "possibly_sensitive": "Potentzialki sentikorra", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Txio honek eduki sentikorra du. Ikusi nahi al duzu?", + "@possibly_sensitive_tweet": {}, + "hide_sensitive_tweets": "Ezkutatu txio sentikorrak", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Sentikor gisa markatutako txioak ezkutatu", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "possibly_sensitive_profile": "Baliteke profil honek irudi, hizkuntz edo bestelako eduki sentikorrak izan ditzazkeela. Hala ere ikusi nahi al duzu?", + "@possibly_sensitive_profile": {}, + "yes_please": "Bai, mesedez", + "@yes_please": {}, + "confirm_close_fritter": "Ziur al zaude Quacker itxi nahi duzula?", + "@confirm_close_fritter": {}, + "search_term": "Bilatu", + "@search_term": {}, + "group_name": "Taldea: {name}", + "@group_name": {}, + "disable_screenshots": "Desgaitu pantaila-argazkiak", + "@disable_screenshots": {}, + "home": "Hasiera", + "@home": {}, + "unable_to_load_home_pages": "Ezin dira hasierako orriak kargatu", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Berrezarri orriak aurrez zehaztutako balioetara", + "@reset_home_pages": {}, + "activate_non_confirmation_bias_mode_label": "Aktibatu berrespenik gabeko alborapen modua", + "@activate_non_confirmation_bias_mode_label": {}, + "disable_screenshots_hint": "Saihestu pantaila-argazkiak ateratzea. Baliteke honek gailu guztietan ez funtzionatzea.", + "@disable_screenshots_hint": {}, + "you_must_have_at_least_2_home_screen_pages": "Hasierako 2 orrialde izan behar ditu gutxienez", + "@you_must_have_at_least_2_home_screen_pages": {}, + "activate_non_confirmation_bias_mode_description": "Ezkutatu txioen egileak. Saihestu baieztapen-alborapena argudio autoritarioetan oinarrituta.", + "@activate_non_confirmation_bias_mode_description": {} +} diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb new file mode 100644 index 00000000..c3003f5b --- /dev/null +++ b/lib/l10n/intl_fr.arb @@ -0,0 +1,494 @@ +{ + "export": "Exporter", + "@export": {}, + "feed": "Flux", + "@feed": {}, + "saved": "Enregistré", + "@saved": {}, + "joined": "S'est inscrit·e le {date}", + "@joined": {}, + "no_results": "Aucun résultat", + "@no_results": {}, + "trending": "Tendances", + "@trending": {}, + "unable_to_load_the_list_of_follows": "Impossible de charger la liste des abonnés", + "@unable_to_load_the_list_of_follows": {}, + "subscriptions": "Abonnements", + "@subscriptions": {}, + "this_group_contains_no_subscriptions": "Ce groupe ne contient pas d'abonnements !", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Impossible de trouver des tweets de cet utilisateur !", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Impossible de charger la page suivante de réponses", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Impossible de charger le tweet", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Impossible de charger les groupes d'abonnement", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Ajouter au groupe", + "@add_to_group": {}, + "unsubscribe": "Se désabonner", + "@unsubscribe": {}, + "subscribe": "S'abonner", + "@subscribe": {}, + "reporting_an_error": "Signaler une erreur", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Un problème vient de se produire dans Quacker, et un rapport d'erreur a été généré. Ce rapport peut être envoyé aux développeurs de Quacker pour les aider à résoudre le problème.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Voulez-vous activer le rapport d'erreur automatique ?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Votre rapport sera envoyé au projet de Quacker, et les détails de la confidentialité peuvent être trouvés à l'adresse suivante :", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Envoyer une fois", + "@send_once": {}, + "send_always": "Toujours envoyer", + "@send_always": {}, + "don_not_send": "Ne pas envoyer", + "@don_not_send": {}, + "never_send": "Ne jamais envoyer", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Une erreur a été signalée à . Merci !", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Merci de le signaler. Nous allons essayer de le corriger en un rien de temps !", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Impossible de charger la page suivante de tweets", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Impossible de charger les tweets pour le fil d'actualité", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Impossible de trouver des tweets des 7 derniers jours !", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Impossible de charger le groupe", + "@unable_to_load_the_group": {}, + "unable_to_load_the_next_page_of_follows": "Impossible de charger la page suivante", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_have_anyone_following_them": "Cet utilisateur n'a personne qui le suit !", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_profile": "Impossible de charger le profil", + "@unable_to_load_the_profile": {}, + "tweets_and_replies": "Tweets & Réponses", + "@tweets_and_replies": {}, + "media": "Médias", + "@media": {}, + "following": "Abonnements", + "@following": {}, + "followers": "Abonnés", + "@followers": {}, + "data_exported_to_fullPath": "Données exportées vers {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "Données exportées vers {fileName}", + "@data_exported_to_fileName": {}, + "export_settings": "Exporter les paramètres ?", + "@export_settings": {}, + "data_imported_successfully": "Données importées avec succès", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Il semble que vous ayez déjà salué cette version de Quacker !", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Impossible d'envoyer le ping. Le code d'erreur était {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "unable_to_send_the_ping_e_to_string": "Impossible d'envoyer le ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Envoyer", + "@send": {}, + "say_hello_emoji": "Dites bonjour 👋", + "@say_hello_emoji": {}, + "say_hello": "Saluer", + "@say_hello": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Voici les données qui seront envoyées. Elles ne seront utilisées que pour déterminer les appareils et les langues à prendre en charge dans Quacker à l'avenir.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "general": "Général", + "@general": {}, + "default_tab": "Onglet par défaut", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Quel onglet s’affiche à l’ouverture de l’application", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Taille du média", + "@media_size": {}, + "small": "Petit", + "@small": {}, + "medium": "Moyen", + "@medium": {}, + "large": "Grand", + "@large": {}, + "theme": "Thème", + "@theme": {}, + "system": "Système", + "@system": {}, + "light": "Lumineux", + "@light": {}, + "data": "Données", + "@data": {}, + "import_data_from_another_device": "Importer des données depuis un autre appareil", + "@import_data_from_another_device": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Le fichier n’existe pas. Veuillez vous assurer qu’il se trouve à {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "logging": "Enregistrement", + "@logging": {}, + "enable_": "Activer  ?", + "@enable_": {}, + "whether_errors_should_be_reported_to_": "Si les erreurs doivent être signalées à ", + "@whether_errors_should_be_reported_to_": {}, + "about": "À propos", + "@about": {}, + "country": "Pays", + "@country": {}, + "tap_to_show_getMediaType_item_type": "Appuyer pour afficher {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_import": "Importation impossible", + "@unable_to_import": {}, + "filters": "Filtres", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Note : En raison d'une limitation de Twitter, tous les tweets peuvent ne pas être inclus", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Inclure les réponses", + "@include_replies": {}, + "unable_to_find_your_saved_tweets": "Impossible de trouver vos tweets enregistrés.", + "@unable_to_find_your_saved_tweets": {}, + "include_retweets": "Inclure les retweets", + "@include_retweets": {}, + "you_have_not_saved_any_tweets_yet": "Vous n'avez pas encore enregistré de tweets !", + "@you_have_not_saved_any_tweets_yet": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Voulez-vous vraiment supprimer le groupe d'abonnement {name} ?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "unable_to_load_the_search_results": "Impossible de charger les résultats de la recherche.", + "@unable_to_load_the_search_results": {}, + "this_user_does_not_follow_anyone": "Cet utilisateur ne suit personne !", + "@this_user_does_not_follow_anyone": {}, + "tweets": "Tweets", + "@tweets": {}, + "export_subscription_group_members": "Exporter les membres du groupe d'abonnement ?", + "@export_subscription_group_members": {}, + "export_subscriptions": "Exporter les abonnements ?", + "@export_subscriptions": {}, + "export_subscription_groups": "Exporter les groupes d'abonnement ?", + "@export_subscription_groups": {}, + "export_tweets": "Exporter les tweets ?", + "@export_tweets": {}, + "cancel": "Annuler", + "@cancel": {}, + "thanks_for_helping_fritter": "Merci d'avoir aidé Quacker ! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "On dirait que vous avez déjà envoyé un ping récemment 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "disabled": "Désactivé", + "@disabled": {}, + "timed_out_trying_to_send_the_ping": "Expiration du délai d'attente pour envoyer le ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Envoyer un ping non identifiant pour me faire savoir que vous utilisez Quacker, et pour aider au développement futur", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "save_bandwidth_using_smaller_images": "Économiser de la bande passante en chargeant des images plus petites", + "@save_bandwidth_using_smaller_images": {}, + "thumbnail": "Miniature", + "@thumbnail": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Assurez-vous que les données que vous souhaitez importer s'y trouvent, puis appuyez sur le bouton d'importation ci-dessous.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "copied_version_to_clipboard": "Copie de la version dans le presse-papiers", + "@copied_version_to_clipboard": {}, + "prefix": "préfixe", + "@prefix": {}, + "help_make_fritter_even_better": "Contribuer à l'amélioration de Quacker", + "@help_make_fritter_even_better": {}, + "released_under_the_mit_license": "Publié sous la licence MIT", + "@released_under_the_mit_license": {}, + "dark": "Sombre", + "@dark": {}, + "use_true_black_for_the_dark_mode_theme": "Utilisez le noir profond pour le thème du mode sombre", + "@use_true_black_for_the_dark_mode_theme": {}, + "import": "Importer", + "@import": {}, + "legacy_android_import": "Importation depuis un appareil Android ancien", + "@legacy_android_import": {}, + "true_black": "Vrai noir ?", + "@true_black": {}, + "export_your_data": "Exporter vos données", + "@export_your_data": {}, + "version": "Version", + "@version": {}, + "ok": "OK", + "@ok": {}, + "report_a_bug": "Signaler une erreur", + "@report_a_bug": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Si vous avez des commentaires sur cette fonctionnalité, veuillez m'en faire part", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "contribute": "Contribuer", + "@contribute": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Pour importer des abonnements depuis un compte Twitter existant, saisissez votre nom d'utilisateur ci-dessous.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "let_the_developers_know_if_something_is_broken": "Faites savoir aux développeurs si quelque chose est défectueux", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Faire un don", + "@donate": {}, + "fritter": "Quacker", + "@fritter": {}, + "help_support_fritters_future": "Soutenir le développement de Quacker", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Copie de l'adresse dans le presse-papiers", + "@copied_address_to_clipboard": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} utilisateurs importés jusqu'à présent", + "@imported_snapshot_data_users_so_far": {}, + "licenses": "Licences", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Tous les excellents logiciels utilisés par Quacker", + "@all_the_great_software_used_by_fritter": {}, + "all": "Tout", + "@all": {}, + "newTrans": "Nouveau", + "@newTrans": {}, + "yes": "Oui", + "@yes": {}, + "no": "Non", + "@no": {}, + "are_you_sure": "Êtes-vous sûr ?", + "@are_you_sure": {}, + "delete": "Supprimer", + "@delete": {}, + "name": "Nom", + "@name": {}, + "pick_a_color": "Choisissez une couleur !", + "@pick_a_color": {}, + "import_subscriptions": "Importer des abonnements", + "@import_subscriptions": {}, + "toggle_all": "Tout basculer", + "@toggle_all": {}, + "please_enter_a_name": "Veuillez entrer un nom", + "@please_enter_a_name": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Veuillez noter que la méthode utilisée par Quacker pour importer les abonnements est fortement limitée par Twitter, cela peut donc échouer si vous avez beaucoup de comptes suivis.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "La sélection de comptes individuels à importer et l’affectation de groupes sont déjà en cours de développement !", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "Entrer votre nom d'utilisateur Twitter", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Votre profil doit être public, sinon l’importation ne fonctionnera pas", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "Nom d’utilisateur", + "@username": {}, + "finished_with_snapshotData_users": "Terminé avec les utilisateurs {snapshotData}", + "@finished_with_snapshotData_users": {}, + "import_from_twitter": "Importer depuis Twitter", + "@import_from_twitter": {}, + "no_subscriptions_try_searching_or_importing_some": "Aucun abonnement. Essayez d’en rechercher ou d’en importer !", + "@no_subscriptions_try_searching_or_importing_some": {}, + "groups": "Groupes", + "@groups": {}, + "date_subscribed": "Date d'inscription", + "@date_subscribed": {}, + "date_created": "Date de création", + "@date_created": {}, + "unable_to_load_the_trends_for_widget_place_name": "Impossible de charger les tendances pour {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Aucune tendance n'a été retournée. C'est inattendu ! Veuillez le signaler comme erreur, si possible.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "trends": "Tendances", + "@trends": {}, + "unable_to_stream_the_trend_location_preference": "Impossible de diffuser la préférence de localisation de la tendance", + "@unable_to_stream_the_trend_location_preference": {}, + "tweets_number": "{num, plural, zero{no tweets} one{un tweet} two{deux tweets} few{{numFormatted} tweets} many{{numFormatted} tweet} other{{numFormatted} tweets}}", + "@tweets_number": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Terminé {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Fin {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "unable_to_find_the_available_trend_locations": "Impossible de trouver les emplacements de tendance disponibles.", + "@unable_to_find_the_available_trend_locations": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Impossible d'enregistrer le média. Twitter a renvoyé un statut de {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Aucun vote} one{Un vote} two{Deux votes} few{{numFormatted} votes} many{{numFormatted} vote} other{{numFormatted} votes}}", + "@numberFormat_format_total_votes": {}, + "unable_to_load_the_group_settings": "Impossible de charger les paramètres du groupe", + "@unable_to_load_the_group_settings": {}, + "unable_to_load_the_tweets": "Impossible de charger les tweets", + "@unable_to_load_the_tweets": {}, + "downloading_media": "Téléchargement des médias…", + "@downloading_media": {}, + "successfully_saved_the_media": "Le média est sauvegardé !", + "@successfully_saved_the_media": {}, + "unknown": "Inconnu", + "@unknown": {}, + "playback_speed": "Vitesse de lecture", + "@playback_speed": {}, + "subtitles": "Sous-titres", + "@subtitles": {}, + "live": "DIRECT", + "@live": {}, + "replying_to": "Réponse à", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Le tweet ne contenait aucun texte. C’est inattendu", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Ce tweet n’est pas disponible Il a probablement été supprimé.", + "@this_tweet_is_unavailable": {}, + "share_tweet_content": "Partager le contenu du tweet", + "@share_tweet_content": {}, + "share_tweet_link": "Partager le lien vers le tweet", + "@share_tweet_link": {}, + "user_not_found": "Utilisateur non trouvé", + "@user_not_found": {}, + "could_not_contact_twitter": "Impossible de contacter Twitter", + "@could_not_contact_twitter": {}, + "please_check_your_internet_connection_error_message": "Veuillez vérifier votre connexion Internet.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "oops_something_went_wrong": "Oups ! Quelque chose a mal tourné 🥲", + "@oops_something_went_wrong": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Aucune donnée n'a été renvoyée, ce qui ne devrait jamais arriver. Veuillez signaler une erreur, si possible !", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Mises à jour", + "@updates": {}, + "something_broke_in_fritter": "Quelque chose s'est cassé dans Quacker.", + "@something_broke_in_fritter": {}, + "download": "Télécharger", + "@download": {}, + "sorry_the_replied_tweet_could_not_be_found": "Désolé, impossible de trouver le tweet auquel on a répondu !", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "save": "Enregistrer", + "@save": {}, + "back": "Retour", + "@back": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} a retweeté {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "pinned_tweet": "Tweet épinglé", + "@pinned_tweet": {}, + "thread": "Fil de discussion", + "@thread": {}, + "unsave": "Désenregistrer", + "@unsave": {}, + "private_profile": "Profil privé", + "@private_profile": {}, + "account_suspended": "Compte suspendu", + "@account_suspended": {}, + "catastrophic_failure": "Défaillance catastrophique", + "@catastrophic_failure": {}, + "retry": "Répondre", + "@retry": {}, + "timed_out": "Délai expiré", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Le chargement est trop long. Veuillez vérifier votre connexion réseau !", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "report": "Signaler", + "@report": {}, + "when_a_new_app_update_is_available": "Lorsqu'une nouvelle mise à jour de l'application est disponible", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Une mise à jour pour Quacker est disponible ! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Appuyez pour télécharger {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Mise à jour vers {releaseVersion} via votre client F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker bleu", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Thème bleu basé sur la palette de couleurs de Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "unable_to_run_the_database_migrations": "Impossible d'exécuter les migrations de la base de données", + "@unable_to_run_the_database_migrations": {}, + "select": "Sélectionner", + "@select": {}, + "pick_an_icon": "Choisissez une icône !", + "@pick_an_icon": {}, + "should_check_for_updates_label": "Vérifier les mises à jour", + "@should_check_for_updates_label": {}, + "download_handling": "Traitement des téléchargements", + "@download_handling": {}, + "download_handling_type_ask": "Toujours demander", + "@download_handling_type_ask": {}, + "download_path": "Chemin de téléchargement", + "@download_path": {}, + "permission_not_granted": "Autorisation non accordée. Veuillez réessayer après avoir accordé l'autorisation !", + "@permission_not_granted": {}, + "open_app_settings": "Ouvrir les paramètres de l'appli", + "@open_app_settings": {}, + "choose": "Choisissez", + "@choose": {}, + "not_set": "Non défini", + "@not_set": {}, + "the_github_issue": "le problème GitHub (nº 143)", + "@the_github_issue": {}, + "search": "Recherche", + "@search": {}, + "no_results_for": "Aucun résultat pour :", + "@no_results_for": {}, + "close": "Fermer", + "@close": {}, + "should_check_for_updates_description": "Vérifier les mises à jour quand Quacker démarre", + "@should_check_for_updates_description": {}, + "download_handling_description": "Comment le téléchargement devrait fonctionner", + "@download_handling_description": {}, + "download_handling_type_directory": "Enregistrer dans le répertoire", + "@download_handling_type_directory": {}, + "share_tweet_content_and_link": "Partager le contenu du tweet et le lien", + "@share_tweet_content_and_link": {}, + "unable_to_refresh_the_subscriptions": "Impossible de rafraîchir la liste des abonnements", + "@unable_to_refresh_the_subscriptions": {}, + "bad_guest_token": "Twitter a invalidé le jeton d'accès. Essayez de relancer Quacker !", + "@bad_guest_token": {}, + "forbidden": "Twitter informe que l'accès est interdit", + "@forbidden": {}, + "language_subtitle": "Nécessite un redémarrage", + "@language_subtitle": {}, + "download_media_no_url": "Téléchargement impossible. Ce média pourrais être seulement disponible sous forme de flux, ce que Quacker ne sais pas encore télécharger.", + "@download_media_no_url": {}, + "page_not_found": "Twitter informe que la page n'existe pas, ce qui ne peux ne pas être vrai", + "@page_not_found": {}, + "language": "Langue", + "@language": {}, + "theme_mode": "Mode du thème", + "@theme_mode": {}, + "yes_please": "Oui, s'il vous plaît", + "@yes_please": {}, + "possibly_sensitive": "Potentiellement sensible", + "@possibly_sensitive": {}, + "hide_sensitive_tweets": "Masquer les tweets sensibles", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "La possibilité de masquer les tweets marqués comme sensibles", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "possibly_sensitive_tweet": "Ce tweet contient un contenu potentiellement sensible. Voulez-vous le voir ?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Ce profil peut contenir des images, un langage ou d'autres contenus potentiellement sensibles. Voulez-vous toujours le consulter ?", + "@possibly_sensitive_profile": {}, + "confirm_close_fritter": "Êtes-vous sûr de vouloir fermer Quacker ?", + "@confirm_close_fritter": {}, + "search_term": "Terme de recherche", + "@search_term": {}, + "disable_screenshots": "Désactiver les captures d'écran", + "@disable_screenshots": {}, + "home": "Accueil", + "@home": {}, + "unable_to_load_home_pages": "Impossible de charger vos pages d'accueil", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Réinitialiser les pages par défaut", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Vous devez avoir au moins 2 pages d'écran d'accueil", + "@you_must_have_at_least_2_home_screen_pages": {}, + "activate_non_confirmation_bias_mode_description": "Masque les auteurs des tweets. Évite les biais de confirmation basés sur des arguments faisant autorité.", + "@activate_non_confirmation_bias_mode_description": {}, + "activate_non_confirmation_bias_mode_label": "Activer le mode biais de non-confirmation", + "@activate_non_confirmation_bias_mode_label": {}, + "disable_screenshots_hint": "Empêche la prise de captures d'écran. Cela peut ne pas fonctionner sur tous les appareils.", + "@disable_screenshots_hint": {}, + "group_name": "Groupe : {name}", + "@group_name": {}, + "only_public_subscriptions_can_be_imported": "Les abonnements peuvent être importés seulement de profils publics", + "@only_public_subscriptions_can_be_imported": {}, + "two_home_pages_required": "Vous devez disposer d'au moins deux pages d'écran d'accueil.", + "@two_home_pages_required": {}, + "choose_pages": "Choisir les pages", + "@choose_pages": {}, + "missing_page": "Page manquante", + "@missing_page": {}, + "saved_tweet_too_large": "Ce tweet enregistré n'a pas pu être affiché, car il est trop lourd à charger. Veuillez le signaler aux développeurs.", + "@saved_tweet_too_large": {}, + "unsupported_url": "URL non pris en charge", + "@unsupported_url": {}, + "mute_videos": "Mettre les vidéos en sourdine", + "@mute_videos": {}, + "mute_video_description": "Si les vidéos doivent être mises en sourdine par défaut", + "@mute_video_description": {}, + "share_base_url": "URL de partage personnalisé", + "@share_base_url": {}, + "share_base_url_description": "Utiliser une URL de base personnalisée lors du partage", + "@share_base_url_description": {}, + "next": "Suivant", + "@next": {}, + "finish": "Finir", + "@finish": {}, + "functionality_unsupported": "Cette fonctionnalité n'est plus prise en charge par Twitter !", + "@functionality_unsupported": {}, + "add_subscriptions": "Ajouter des abonnements", + "@add_subscriptions": {} +} diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/lib/l10n/intl_hi.arb @@ -0,0 +1 @@ +{} diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb new file mode 100644 index 00000000..46cc5772 --- /dev/null +++ b/lib/l10n/intl_id.arb @@ -0,0 +1,478 @@ +{ + "include_retweets": "Sertakan cuit ulang", + "@include_retweets": {}, + "unable_to_load_the_search_results": "Tidak bisa memuat hasil pencarian.", + "@unable_to_load_the_search_results": {}, + "this_user_does_not_follow_anyone": "Pengguna ini tidak mengikuti siapa pun!", + "@this_user_does_not_follow_anyone": {}, + "tweets_and_replies": "Cuitan & Balasan", + "@tweets_and_replies": {}, + "media": "Media", + "@media": {}, + "export": "Ekspor", + "@export": {}, + "data_exported_to_fileName": "Data diekspor ke {fileName}", + "@data_exported_to_fileName": {}, + "export_subscriptions": "Ekspor langganan?", + "@export_subscriptions": {}, + "export_subscription_groups": "Ekspor grup langganan?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Ekspor anggota grup langganan?", + "@export_subscription_group_members": {}, + "cancel": "Batal", + "@cancel": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Sepertinya Anda sudah mengirim ping baru-baru ini 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "timed_out_trying_to_send_the_ping": "Waktu habis mencoba untuk mengirim ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "media_size": "Ukuran media", + "@media_size": {}, + "thumbnail": "Keluku", + "@thumbnail": {}, + "theme": "Tema", + "@theme": {}, + "light": "Terang", + "@light": {}, + "dark": "Gelap", + "@dark": {}, + "true_black": "Hitam Pekat?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Gunakan hitam pekat untuk tema mode gelap", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Data", + "@data": {}, + "legacy_android_import": "Impor Android Lawas", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Berkas tidak ada. Pastikan bahwa itu terletak di {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "awalan", + "@prefix": {}, + "export_your_data": "Ekspor data Anda", + "@export_your_data": {}, + "logging": "Log", + "@logging": {}, + "report_a_bug": "Laporkan masalah", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Biarkan pengembang tahu jika ada sesuatu yang rusak", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Donasi", + "@donate": {}, + "help_support_fritters_future": "Bantu dukung masa depan Quacker", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Alamat disalin ke papan klip", + "@copied_address_to_clipboard": {}, + "fritter": "Quacker", + "@fritter": {}, + "all": "Semua", + "@all": {}, + "newTrans": "Baru", + "@newTrans": {}, + "toggle_all": "Alih Semua", + "@toggle_all": {}, + "delete": "Hapus", + "@delete": {}, + "ok": "Oke", + "@ok": {}, + "name": "Nama", + "@name": {}, + "please_enter_a_name": "Mohon masukkan nama", + "@please_enter_a_name": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Jika Anda punya umpan balik terhadap fitur ini, mohon tinggalkan di", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Memilih akun individu untuk diimpor, dan menetapkan grup sudah direncanakan untuk masa mendatang!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "import_from_twitter": "Impor dari Twitter", + "@import_from_twitter": {}, + "unable_to_load_the_trends_for_widget_place_name": "Tidak bisa memuat tren untuk {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Tidak ada tren yang dikembalikan. Ini tidak terduga! Mohon laporkan sebagai masalah, jika mungkin.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "Tidak bisa menemukan lokasi tren yang tersedia.", + "@unable_to_find_the_available_trend_locations": {}, + "unable_to_stream_the_trend_location_preference": "Tidak bisa mengalirkan preferensi lokasi tren", + "@unable_to_stream_the_trend_location_preference": {}, + "thread": "Utas", + "@thread": {}, + "back": "Kembali", + "@back": {}, + "fritter_blue": "Quacker biru", + "@fritter_blue": {}, + "saved": "Disimpan", + "@saved": {}, + "joined": "Bergabung {date}", + "@joined": {}, + "disabled": "Dinonaktifkan", + "@disabled": {}, + "medium": "Sedang", + "@medium": {}, + "include_replies": "Sertakan balasan", + "@include_replies": {}, + "feed": "Umpan", + "@feed": {}, + "trending": "Tren", + "@trending": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Kirim ping tak-mengidentifikasi untuk memberi tahu saya bahwa Anda menggunakan Quacker, dan untuk membantu pengembangan di masa mendatang", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "which_tab_is_shown_when_the_app_opens": "Bilah mana yang ditampilkan ketika aplikasi dibuka", + "@which_tab_is_shown_when_the_app_opens": {}, + "system": "Sistem", + "@system": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Cuitan tidak mengandung teks apa pun. Ini tidak diduga", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Catatan: Karena batasan Twitter, tidak semua cuitan akan disertakan", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "filters": "Filter", + "@filters": {}, + "data_exported_to_fullPath": "Data diekspor ke {fullPath}", + "@data_exported_to_fullPath": {}, + "unable_to_find_your_saved_tweets": "Tidak bisa menemukan cuitan tersimpan Anda.", + "@unable_to_find_your_saved_tweets": {}, + "unable_to_load_the_tweets": "Tidak bisa memuat cuitan", + "@unable_to_load_the_tweets": {}, + "send": "Kirim", + "@send": {}, + "you_have_not_saved_any_tweets_yet": "Anda belum menyimpan cuitan apa pun!", + "@you_have_not_saved_any_tweets_yet": {}, + "no_results": "Tidak ada hasil", + "@no_results": {}, + "subscriptions": "Langganan", + "@subscriptions": {}, + "this_user_does_not_have_anyone_following_them": "Pengguna ini tidak punya seseorang yang mengikuti mereka!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_profile": "Tidak bisa memuat profil", + "@unable_to_load_the_profile": {}, + "tweets": "Cuitan", + "@tweets": {}, + "data_imported_successfully": "Data berhasil diimpor", + "@data_imported_successfully": {}, + "following": "Mengikuti", + "@following": {}, + "followers": "Pengikut", + "@followers": {}, + "export_settings": "Ekspor pengaturan?", + "@export_settings": {}, + "export_tweets": "Ekspor cuitan?", + "@export_tweets": {}, + "thanks_for_helping_fritter": "Terima kasih telah membantu Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Tidak bisa mengirim ping. Kode statusnya adalah {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Sepertinya Anda sudah menyapa dari versi Quacker ini!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "say_hello": "Sapa", + "@say_hello": {}, + "unable_to_send_the_ping_e_to_string": "Tidak bisa mengirim ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Berikut data yang akan dikirim. Ini hanya akan digunakan untuk menentukan perangkat dan bahasa mana yang akan didukung di Quacker di masa mendatang.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "general": "Umum", + "@general": {}, + "say_hello_emoji": "Sapa 👋", + "@say_hello_emoji": {}, + "default_tab": "Bilah baku", + "@default_tab": {}, + "save_bandwidth_using_smaller_images": "Hemat bandwidth menggunakan gambar yang lebih kecil", + "@save_bandwidth_using_smaller_images": {}, + "small": "Kecil", + "@small": {}, + "enable_": "Aktifkan ?", + "@enable_": {}, + "version": "Versi", + "@version": {}, + "licenses": "Lisensi", + "@licenses": {}, + "import": "Impor", + "@import": {}, + "import_data_from_another_device": "Impor data dari perangkat lain", + "@import_data_from_another_device": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Mohon pastikan data yang ingin Anda impor terletak di sana, kemudian tekan tombol impor di bawah.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "about": "Tentang", + "@about": {}, + "copied_version_to_clipboard": "Salin versi ke papan klip", + "@copied_version_to_clipboard": {}, + "contribute": "Kontribusi", + "@contribute": {}, + "whether_errors_should_be_reported_to_": "Apakah galat harus dilaporkan ke ", + "@whether_errors_should_be_reported_to_": {}, + "help_make_fritter_even_better": "Bantu Quacker menjadi lebih baik", + "@help_make_fritter_even_better": {}, + "no": "Tidak", + "@no": {}, + "all_the_great_software_used_by_fritter": "Semua perangkat lunak hebat yang digunakan oleh Quacker", + "@all_the_great_software_used_by_fritter": {}, + "import_subscriptions": "Impor langganan", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Untuk mengimpor langganan dari akun Twitter yang ada, masukkan nama pengguna Anda di bawah ini.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "yes": "Ya", + "@yes": {}, + "released_under_the_mit_license": "Dirilis di bawah Lisensi MIT", + "@released_under_the_mit_license": {}, + "are_you_sure": "Apakah Anda yakin?", + "@are_you_sure": {}, + "pick_a_color": "Pilih sebuah warna!", + "@pick_a_color": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Apakah Anda yakin Anda ingin menghapus grup langganan {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Mohon dicatat bahwa metode yang Quacker gunakan untuk mengimpor langganan sangat dibatasi oleh Twitter, jadi ini mungkin akan gagal jika Anda mengikuti banyak akun.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Tidak dapat menyimpan media. Twitter mengembalikan status {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "unknown": "Tidak diketahui", + "@unknown": {}, + "enter_your_twitter_username": "Masukkan nama pengguna Twitter Anda", + "@enter_your_twitter_username": {}, + "unable_to_import": "Tidak bisa mengimpor", + "@unable_to_import": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Selesai {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Profil Anda harus publik, jika tidak impor tidak akan bekerja", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "Nama pengguna", + "@username": {}, + "no_subscriptions_try_searching_or_importing_some": "Tidak ada langganan. Coba mencari atau mengimpor beberapa!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "groups": "Grup", + "@groups": {}, + "date_created": "Tanggal Dibuat", + "@date_created": {}, + "date_subscribed": "Tanggal Berlangganan", + "@date_subscribed": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} pengguna terimpor sejauh ini", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Selesai dengan {snapshotData} pengguna", + "@finished_with_snapshotData_users": {}, + "country": "Negara", + "@country": {}, + "trends": "Tren", + "@trends": {}, + "playback_speed": "Kecepatan pemutaran", + "@playback_speed": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Selesai {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "tap_to_show_getMediaType_item_type": "Ketuk untuk menampilkan {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "downloading_media": "Mengunduh media...", + "@downloading_media": {}, + "successfully_saved_the_media": "Media disimpan!", + "@successfully_saved_the_media": {}, + "live": "LANGSUNG", + "@live": {}, + "download": "Unduh", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} mencuit ulang {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "subtitles": "Takarir", + "@subtitles": {}, + "please_check_your_internet_connection_error_message": "Mohon periksa koneksi Internet Anda.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Waktu habis", + "@timed_out": {}, + "unable_to_run_the_database_migrations": "Tidak bisa menjalankan migrasi basis data", + "@unable_to_run_the_database_migrations": {}, + "sorry_the_replied_tweet_could_not_be_found": "Maaf, cuitan yang dibalas tidak dapat ditemukan!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "Membalas ke", + "@replying_to": {}, + "unsave": "Batal simpan", + "@unsave": {}, + "share_tweet_content": "Bagi konten cuitan", + "@share_tweet_content": {}, + "share_tweet_link": "Bagi tautan cuitan", + "@share_tweet_link": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Tidak ada data yang dikembalikan, yang seharusnya tidak pernah terjadi. Silakan laporkan masalah, jika mungkin!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "this_tweet_is_unavailable": "Cuitan ini tidak tersedia. Mungkin sudah dihapus.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Cuitan yang disematkan", + "@pinned_tweet": {}, + "save": "Simpan", + "@save": {}, + "private_profile": "Profil privat", + "@private_profile": {}, + "user_not_found": "Pengguna tidak ditemukan", + "@user_not_found": {}, + "account_suspended": "Akun ditangguhkan", + "@account_suspended": {}, + "retry": "Ulang", + "@retry": {}, + "could_not_contact_twitter": "Tidak bisa menghubungi Twitter", + "@could_not_contact_twitter": {}, + "oops_something_went_wrong": "Aduh! Ada yang tidak beres 🥲", + "@oops_something_went_wrong": {}, + "report": "Lapor", + "@report": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Ini perlu waktu lama untuk memuat. Mohon periksa koneksi jaringan Anda!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "catastrophic_failure": "Kegagalan serius", + "@catastrophic_failure": {}, + "an_update_for_fritter_is_available": "Pembaruan untuk Quacker tersedia! 🚀", + "@an_update_for_fritter_is_available": {}, + "updates": "Pembaruan", + "@updates": {}, + "when_a_new_app_update_is_available": "Ketika pembaruan aplikasi baru tersedia", + "@when_a_new_app_update_is_available": {}, + "tap_to_download_release_version": "Ketuk untuk mengunduh {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Perbarui ke {releaseVersion} lewat klien F-Droid Anda", + "@update_to_release_version_through_your_fdroid_client": {}, + "something_broke_in_fritter": "Sesuatu rusak di Quacker.", + "@something_broke_in_fritter": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Tema biru berdasarkan pada skema warna Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "this_group_contains_no_subscriptions": "Grup ini tidak berisi langganan!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Tidak bisa mencari cuitan apa pun dari pengguna ini!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Tidak bisa memuat halaman balasan selanjutnya", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Tidak bisa memuat cuitan", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Tidak bisa memuat grup langganan", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Tambah ke grup", + "@add_to_group": {}, + "unsubscribe": "Batal langganan", + "@unsubscribe": {}, + "subscribe": "Langgan", + "@subscribe": {}, + "reporting_an_error": "Melaporkan galat", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Ada sesuatu yang salah di Quacker, dan laporan galat telah dibuat. Laporan bisa dikirim ke pengembang Quacker untuk membantu memperbaiki masalah.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "your_report_will_be_sent_to_fritter__project": "Laporan Anda akan dikirim ke proyek Quacker, dan detail privasi bisa ditemukan pada:", + "@your_report_will_be_sent_to_fritter__project": {}, + "would_you_like_to_enable_automatic_error_reporting": "Apakah Anda ingin mengaktifkan pelaporan galat otomatis?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "send_once": "Kirim sekali", + "@send_once": {}, + "send_always": "Kirim selalu", + "@send_always": {}, + "don_not_send": "Jangan kirim", + "@don_not_send": {}, + "never_send": "Jangan pernah kirim", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Sebuah galat telah dilaporkan ke . Terima kasih!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Terima kasih telah melaporkan. Kami akan mencoba dan memperbaikinya secepatnya!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Tidak dapat memuat halaman cuitan selanjutnya", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Tidak bisa memuat cuitan untuk umpan", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Tidak bisa menemukan cuitan apa pun dari 7 hari terakhir!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Tidak bisa memuat grup", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Tidak bisa memuat pengaturan grup", + "@unable_to_load_the_group_settings": {}, + "large": "Besar", + "@large": {}, + "tweets_number": "{num, plural, zero{tidak ada cuitan} one{1 cuitan} two{2 cuitan} few{{numFormatted} cuitan} many{{numFormatted} cuitan} other{{numFormatted} cuitan}}", + "@tweets_number": {}, + "select": "Pilih", + "@select": {}, + "search": "Cari", + "@search": {}, + "the_github_issue": "isu GitHub (#143)", + "@the_github_issue": {}, + "should_check_for_updates_label": "Periksa pembaruan", + "@should_check_for_updates_label": {}, + "share_tweet_content_and_link": "Bagi konten dan tautan cuitan", + "@share_tweet_content_and_link": {}, + "download_handling_description": "Bagaimana unduhan seharusnya bekerja", + "@download_handling_description": {}, + "download_handling_type_directory": "Simpan ke direktori", + "@download_handling_type_directory": {}, + "download_path": "Jalur unduhan", + "@download_path": {}, + "download_handling_type_ask": "Selalu tanya", + "@download_handling_type_ask": {}, + "pick_an_icon": "Pilih ikon!", + "@pick_an_icon": {}, + "close": "Tutup", + "@close": {}, + "no_results_for": "Tidak ada hasil untuk:", + "@no_results_for": {}, + "not_set": "Tidak diatur", + "@not_set": {}, + "should_check_for_updates_description": "Periksa pembaruan ketika Quacker dimulai", + "@should_check_for_updates_description": {}, + "choose": "Pilih", + "@choose": {}, + "permission_not_granted": "Izin tidak diberikan. Coba lagi setelah memberikannya!", + "@permission_not_granted": {}, + "open_app_settings": "Buka pengaturan aplikasi", + "@open_app_settings": {}, + "download_handling": "Penanganan unduhan", + "@download_handling": {}, + "unable_to_load_the_list_of_follows": "Tidak bisa memuat daftar pengikut", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_refresh_the_subscriptions": "Tidak bisa menyegarkan langganan", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter mengatakan halaman ini tidak ada, tetapi mungkin itu tidak benar", + "@page_not_found": {}, + "forbidden": "Twitter mengatakan bahwa akses ke sini terlarang", + "@forbidden": {}, + "language": "Bahasa", + "@language": {}, + "unable_to_load_the_next_page_of_follows": "Tidak bisa memuat halaman pengikut selanjutnya", + "@unable_to_load_the_next_page_of_follows": {}, + "bad_guest_token": "Twitter telah membatalkan token akses kami. Coba buka ulang Quacker!", + "@bad_guest_token": {}, + "language_subtitle": "Memerlukan pemulaian ulang", + "@language_subtitle": {}, + "theme_mode": "Mode Tema", + "@theme_mode": {}, + "hide_sensitive_tweets": "Sembunyikan cuitan sensitif", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Untuk menyembunyikan cuitan yang ditandai sebagai sensitif", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "possibly_sensitive_profile": "Profil ini mungkin mengandung gambar, bahasa, atau konten lain yang kemungkinan sensitif. Apakah Anda masih ingin melihatnya?", + "@possibly_sensitive_profile": {}, + "yes_please": "Ya, silakan", + "@yes_please": {}, + "download_media_no_url": "Tidak bisa mengunduh. Media ini hanya tersedia sebagai siaran, yang Quacker belum bisa mengunduhnya.", + "@download_media_no_url": {}, + "possibly_sensitive": "Kemungkinan sensitif", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Cuitan ini mengandung konten yang kemungkinan sensitif. Apakah Anda ingin melihatnya?", + "@possibly_sensitive_tweet": {}, + "confirm_close_fritter": "Apakah Anda yakin ingin menutup Quacker?", + "@confirm_close_fritter": {}, + "search_term": "Kata pencarian", + "@search_term": {}, + "group_name": "Grup: {name}", + "@group_name": {}, + "you_must_have_at_least_2_home_screen_pages": "Anda harus paling tidak memiliki dua halaman beranda", + "@you_must_have_at_least_2_home_screen_pages": {}, + "disable_screenshots_hint": "Cegah tangkapan layar untuk diambil. Ini mungkin tidak bekerja pada semua perangkat.", + "@disable_screenshots_hint": {}, + "unable_to_load_home_pages": "Tidak bisa memuat beranda Anda", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Atur ulang halaman ke yang baku", + "@reset_home_pages": {}, + "disable_screenshots": "Nonaktifkan tangkap layar", + "@disable_screenshots": {}, + "home": "Beranda", + "@home": {}, + "activate_non_confirmation_bias_mode_label": "Aktifkan mode bias non-konfirmasi", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Sembunyikan pembuat cuitan. Hindari bias konfirmasi berdasarkan argumen otoritatif.", + "@activate_non_confirmation_bias_mode_description": {}, + "only_public_subscriptions_can_be_imported": "Subskripsi hanya bisa terimpor dari profil publik", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "URL tidak didukung", + "@unsupported_url": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Tidak ada pemilihan} one{Satu pemilihan} two{Dua pemilihan} few{{numFormatted} pemilihan} many{{numFormatted} pemilihan} other{{numFormatted} pemilihan}}", + "@numberFormat_format_total_votes": {}, + "saved_tweet_too_large": "Tweet yang disimpan ini tidak bisa ditampilkan, karna terlalu besar. Silahkan laporkan ke developer.", + "@saved_tweet_too_large": {}, + "two_home_pages_required": "Kamu perlu setidaknya 2 halaman beranda.", + "@two_home_pages_required": {}, + "choose_pages": "Pilih halaman", + "@choose_pages": {}, + "missing_page": "Halaman hilang", + "@missing_page": {} +} diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb new file mode 100644 index 00000000..dc0746d5 --- /dev/null +++ b/lib/l10n/intl_it.arb @@ -0,0 +1,494 @@ +{ + "filters": "Filtri", + "@filters": {}, + "include_retweets": "Includi retweet", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Impossibile trovare i tuoi tweet salvati.", + "@unable_to_find_your_saved_tweets": {}, + "unable_to_load_the_search_results": "Impossibile caricare i risultati della ricerca.", + "@unable_to_load_the_search_results": {}, + "feed": "Feed", + "@feed": {}, + "trending": "Tendenze", + "@trending": {}, + "unable_to_load_the_next_page_of_follows": "Impossibile caricare la pagina successiva dei seguiti", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "Questo utente non segue nessuno!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Nessuno sta seguendo questo utente!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Impossibile caricare i tweet", + "@unable_to_load_the_tweets": {}, + "tweets_and_replies": "Tweet e risposte", + "@tweets_and_replies": {}, + "media": "Contenuti", + "@media": {}, + "following": "Seguiti", + "@following": {}, + "followers": "Seguaci", + "@followers": {}, + "joined": "Iscrizione: {date}", + "@joined": {}, + "export": "Esporta", + "@export": {}, + "data_exported_to_fullPath": "Dati esportati in {fullPath}", + "@data_exported_to_fullPath": {}, + "export_tweets": "Esportare i tweet?", + "@export_tweets": {}, + "cancel": "Annulla", + "@cancel": {}, + "thanks_for_helping_fritter": "Grazie per aver aiutato Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "timed_out_trying_to_send_the_ping": "Tempo scaduto nel tentativo di inviare il ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Impossibile inviare il ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Invia", + "@send": {}, + "say_hello_emoji": "Dì ciao 👋", + "@say_hello_emoji": {}, + "general": "Generale", + "@general": {}, + "default_tab": "Scheda predefinita", + "@default_tab": {}, + "save_bandwidth_using_smaller_images": "Risparmia banda usando immagini più piccole", + "@save_bandwidth_using_smaller_images": {}, + "thumbnail": "Miniatura", + "@thumbnail": {}, + "small": "Piccolo", + "@small": {}, + "system": "Sistema", + "@system": {}, + "true_black": "Nero assoluto?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Usa un nero vero per il tema scuro", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Dati", + "@data": {}, + "legacy_android_import": "Importa Android Legacy", + "@legacy_android_import": {}, + "prefix": "prefisso", + "@prefix": {}, + "export_your_data": "Esporta i tuoi dati", + "@export_your_data": {}, + "logging": "Registro", + "@logging": {}, + "enable_": "Abilitare ?", + "@enable_": {}, + "whether_errors_should_be_reported_to_": "Se gli errori dovrebbero essere segnalati a ", + "@whether_errors_should_be_reported_to_": {}, + "version": "Versione", + "@version": {}, + "contribute": "Contribuisci", + "@contribute": {}, + "help_make_fritter_even_better": "Aiuta a rendere Quacker migliore", + "@help_make_fritter_even_better": {}, + "report_a_bug": "Segnala un errore", + "@report_a_bug": {}, + "help_support_fritters_future": "Aiuta a supportare il futuro di Quacker", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Indirizzo copiato negli appunti", + "@copied_address_to_clipboard": {}, + "licenses": "Licenze", + "@licenses": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "Rilasciato sotto licenza MIT", + "@released_under_the_mit_license": {}, + "newTrans": "Nuovo", + "@newTrans": {}, + "no": "No", + "@no": {}, + "are_you_sure": "Sei sicuro?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Sei sicuro/a di voler eliminare il gruppo di iscrizioni {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "all": "Tutti", + "@all": {}, + "delete": "Elimina", + "@delete": {}, + "ok": "Ok", + "@ok": {}, + "please_enter_a_name": "Inserisci un nome", + "@please_enter_a_name": {}, + "pick_a_color": "Scegli un colore!", + "@pick_a_color": {}, + "import_subscriptions": "Importa iscrizioni", + "@import_subscriptions": {}, + "username": "Nome utente", + "@username": {}, + "unable_to_import": "Impossibile importare", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} utenti importati finora", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Finito con {snapshotData} utenti", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Nessuna iscrizione. Prova a cercare o importane alcuni!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "groups": "Gruppi", + "@groups": {}, + "date_created": "Data di creazione", + "@date_created": {}, + "date_subscribed": "Data di iscrizione", + "@date_subscribed": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Non è stata restituita alcuna tendenza. Questo è inaspettato! Si prega di segnalare un errore, se possibile.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "Impossibile trovare le posizioni delle tendenze disponibili.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "Nazione", + "@country": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Finito {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Finisce {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Nessun voto} one{Un voto} two{Due voti} few{{numFormatted} voti} many{{numFormatted} voto} other{{numFormatted} voti}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Tocca per mostrare {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "downloading_media": "Download del contenuto in corso...", + "@downloading_media": {}, + "successfully_saved_the_media": "Contenuto salvato!", + "@successfully_saved_the_media": {}, + "unknown": "Sconosciuto", + "@unknown": {}, + "playback_speed": "Velocità di riproduzione", + "@playback_speed": {}, + "subtitles": "Sottotitoli", + "@subtitles": {}, + "live": "LIVE", + "@live": {}, + "sorry_the_replied_tweet_could_not_be_found": "Spiacenti, il tweet a cui è riferita la risposta non è stato trovato!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "In risposta a", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Il tweet non contiene alcun testo. Questo è inaspettato", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "pinned_tweet": "Tweet fissato", + "@pinned_tweet": {}, + "thread": "Discussione", + "@thread": {}, + "unsave": "Annulla salvataggio", + "@unsave": {}, + "share_tweet_link": "Condividi il link al tweet", + "@share_tweet_link": {}, + "user_not_found": "Utente non trovato", + "@user_not_found": {}, + "account_suspended": "Profilo sospeso", + "@account_suspended": {}, + "back": "Indietro", + "@back": {}, + "retry": "Riprova", + "@retry": {}, + "oops_something_went_wrong": "Ops! Qualcosa è andato storto 🥲", + "@oops_something_went_wrong": {}, + "report": "Segnala", + "@report": {}, + "an_update_for_fritter_is_available": "È disponibile un aggiornamento di Quacker! 🚀", + "@an_update_for_fritter_is_available": {}, + "fritter_blue": "Blu Quacker", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Tema blu basato sui colori di Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Qualcosa si è rotto in Quacker.", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "Impossibile eseguire le migrazioni del database", + "@unable_to_run_the_database_migrations": {}, + "export_subscription_groups": "Esportare i gruppi di iscrizioni?", + "@export_subscription_groups": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Nota: a causa di una limitazione di Twitter, non tutti i tweet potrebbero essere inclusi", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Includi risposte", + "@include_replies": {}, + "you_have_not_saved_any_tweets_yet": "Non hai ancora salvato un tweet!", + "@you_have_not_saved_any_tweets_yet": {}, + "subscriptions": "Iscrizioni", + "@subscriptions": {}, + "export_subscriptions": "Esportare le iscrizioni?", + "@export_subscriptions": {}, + "no_results": "Nessun risultato", + "@no_results": {}, + "unable_to_load_the_list_of_follows": "Impossibile caricare l'elenco dei seguiti", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_profile": "Impossibile caricare il profilo", + "@unable_to_load_the_profile": {}, + "tweets": "Tweet", + "@tweets": {}, + "saved": "Salvati", + "@saved": {}, + "export_subscription_group_members": "Esportare i membri dei gruppi di iscrizioni?", + "@export_subscription_group_members": {}, + "export_settings": "Esportare le impostazioni?", + "@export_settings": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Sembra che tu abbia già detto ciao da questa versione di Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "data_exported_to_fileName": "Dati esportati in {fileName}", + "@data_exported_to_fileName": {}, + "data_imported_successfully": "Dati importati con successo", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Sembra che tu abbia già inviato un ping di recente 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Impossibile inviare il ping. Il codice di stato era {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "media_size": "Dimensione dei contenuti multimediali", + "@media_size": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Invia un ping non identificativo per farmi sapere che stai usando Quacker e per aiutare lo sviluppo futuro", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "say_hello": "Dì ciao", + "@say_hello": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Ecco i dati che verranno inviati. Saranno usati solo per determinare quali dispositivi e lingue supportare su Quacker in futuro.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "which_tab_is_shown_when_the_app_opens": "Quale scheda viene visualizzata quando si apre l'app", + "@which_tab_is_shown_when_the_app_opens": {}, + "disabled": "Disabilitato", + "@disabled": {}, + "name": "Nome", + "@name": {}, + "medium": "Medio", + "@medium": {}, + "large": "Grande", + "@large": {}, + "theme": "Tema", + "@theme": {}, + "light": "Chiaro", + "@light": {}, + "dark": "Scuro", + "@dark": {}, + "all_the_great_software_used_by_fritter": "Tutto l'ottimo software utilizzato da Quacker", + "@all_the_great_software_used_by_fritter": {}, + "import": "Importa", + "@import": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Assicurati che i dati che vuoi importare si trovino lì, poi premi il pulsante di importazione qui sotto.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "import_data_from_another_device": "Importa dati da un altro dispositivo", + "@import_data_from_another_device": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Il file non esiste. Assicurati che si trovi in {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "copied_version_to_clipboard": "Versione copiata negli appunti", + "@copied_version_to_clipboard": {}, + "let_the_developers_know_if_something_is_broken": "Fai sapere agli sviluppatori se qualcosa non funziona", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Dona", + "@donate": {}, + "yes": "Sì", + "@yes": {}, + "about": "Info", + "@about": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Per importare le iscrizioni da un account Twitter esistente, inserisci il tuo nome utente qui sotto.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "toggle_all": "Seleziona tutto", + "@toggle_all": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Si ricorda che il metodo che Quacker usa per importare le iscrizioni è fortemente limitato da Twitter, quindi potrebbe fallire se segui molti account.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Se hai qualche feedback su questa funzione, lascialo nella", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Il tuo profilo deve essere pubblico, altrimenti l'importazione non funzionerà", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "import_from_twitter": "Importa da Twitter", + "@import_from_twitter": {}, + "enter_your_twitter_username": "Inserisci il tuo nome utente di Twitter", + "@enter_your_twitter_username": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "La selezione dei singoli account da importare e l'assegnazione dei gruppi sono entrambe già pianificate per il futuro!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "download": "Scarica", + "@download": {}, + "unable_to_load_the_trends_for_widget_place_name": "Impossibile caricare le tendenze per {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "unable_to_stream_the_trend_location_preference": "Impossibile trasmettere la preferenza della posizione delle tendenze", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Tendenze", + "@trends": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Impossibile salvare il contenuto. Twitter ha restituito uno stato di {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} ha ritwittato {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "share_tweet_content": "Condividi il contenuto del tweet", + "@share_tweet_content": {}, + "could_not_contact_twitter": "Impossibile contattare Twitter", + "@could_not_contact_twitter": {}, + "this_tweet_is_unavailable": "Questo tweet non è disponibile. Probabilmente è stato cancellato.", + "@this_tweet_is_unavailable": {}, + "catastrophic_failure": "Fallimento catastrofico", + "@catastrophic_failure": {}, + "please_check_your_internet_connection_error_message": "Controlla la tua connessione a Internet.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Tempo scaduto", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Il caricamento ha impiegato troppo tempo. Si prega di controllare la connessione di rete!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "private_profile": "Profilo privato", + "@private_profile": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Nessun dato è stato restituito, il che non dovrebbe mai accadere. Si prega di segnalare un errore, se possibile!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Aggiornamenti", + "@updates": {}, + "when_a_new_app_update_is_available": "Quando è disponibile un nuovo aggiornamento dell'app", + "@when_a_new_app_update_is_available": {}, + "tweets_number": "{num, plural, zero{nessun tweet} one{un tweet} two{due tweet} few{{numFormatted} tweet} many{{numFormatted} tweet} other{{numFormatted} tweet}}", + "@tweets_number": {}, + "tap_to_download_release_version": "Tocca per scaricare {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Aggiorna a {releaseVersion} tramite il tuo client F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "could_not_find_any_tweets_by_this_user": "Non è stato trovato nessun tweet di questo utente!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Impossibile caricare la pagina successiva delle risposte", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Impossibile caricare il tweet", + "@unable_to_load_the_tweet": {}, + "add_to_group": "Aggiungi al gruppo", + "@add_to_group": {}, + "this_group_contains_no_subscriptions": "Questo gruppo non contiene iscrizioni!", + "@this_group_contains_no_subscriptions": {}, + "unable_to_load_subscription_groups": "Impossibile caricare i gruppi di iscrizioni", + "@unable_to_load_subscription_groups": {}, + "unsubscribe": "Annulla iscrizione", + "@unsubscribe": {}, + "subscribe": "Iscriviti", + "@subscribe": {}, + "reporting_an_error": "Segnalazione di un errore", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Qualcosa è andato storto in Quacker ed è stato generato un rapporto di errore. Il rapporto può essere inviato agli sviluppatori di Quacker per aiutare a risolvere il problema.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Vorresti abilitare la segnalazione automatica degli errori?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Il tuo rapporto verrà inviato al progetto Quacker di , i dettagli sulla privacy possono essere trovati a:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Invia una volta", + "@send_once": {}, + "send_always": "Invia sempre", + "@send_always": {}, + "don_not_send": "Non inviare", + "@don_not_send": {}, + "never_send": "Non inviare mai", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Un errore è stato segnalato a . Grazie!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Grazie per la segnalazione. Proveremo a sistemarlo in pochissimo tempo!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Impossibile caricare la pagina successiva dei tweet", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Impossibile caricare i tweet per il feed", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Impossibile trovare tweet negli ultimi 7 giorni!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Impossibile caricare il gruppo", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Impossibile caricare le impostazioni del gruppo", + "@unable_to_load_the_group_settings": {}, + "save": "Salva", + "@save": {}, + "select": "Seleziona", + "@select": {}, + "pick_an_icon": "Scegli un'icona!", + "@pick_an_icon": {}, + "download_handling": "Gestione degli scaricamenti", + "@download_handling": {}, + "search": "Ricerca", + "@search": {}, + "the_github_issue": "issue GitHub (#143)", + "@the_github_issue": {}, + "no_results_for": "Nessun risultato per:", + "@no_results_for": {}, + "close": "Chiudi", + "@close": {}, + "share_tweet_content_and_link": "Condividi il link e il contenuto del tweet", + "@share_tweet_content_and_link": {}, + "should_check_for_updates_label": "Controlla gli aggiornamenti", + "@should_check_for_updates_label": {}, + "download_handling_type_directory": "Salva nella cartella", + "@download_handling_type_directory": {}, + "download_path": "Percorso di download", + "@download_path": {}, + "permission_not_granted": "Permesso non concesso. Si prega di riprovare dopo la concessione!", + "@permission_not_granted": {}, + "open_app_settings": "Apri le impostazioni dell'app", + "@open_app_settings": {}, + "should_check_for_updates_description": "Controlla gli aggiornamenti all'avvio di Quacker", + "@should_check_for_updates_description": {}, + "download_handling_description": "Come dovrebbe funzionare lo scaricamento", + "@download_handling_description": {}, + "download_handling_type_ask": "Chiedi sempre", + "@download_handling_type_ask": {}, + "choose": "Scegli", + "@choose": {}, + "not_set": "Non impostato", + "@not_set": {}, + "forbidden": "Twitter dice che l'accesso non è consentito", + "@forbidden": {}, + "unable_to_refresh_the_subscriptions": "Impossibile aggiornare le iscrizioni", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter dice che la pagina non esiste, ma potrebbe non essere vero", + "@page_not_found": {}, + "bad_guest_token": "Twitter ha invalidato il nostro token di accesso. Prova a riaprire Quacker!", + "@bad_guest_token": {}, + "confirm_close_fritter": "Sei sicuro di voler chiudere Quacker?", + "@confirm_close_fritter": {}, + "search_term": "Ricerca", + "@search_term": {}, + "hide_sensitive_tweets": "Nascondi tweet sensibili", + "@hide_sensitive_tweets": {}, + "possibly_sensitive_tweet": "Questo tweet contiene contenuti potenzialmente sensibili. Desideri visualizzarlo?", + "@possibly_sensitive_tweet": {}, + "group_name": "Gruppo: {name}", + "@group_name": {}, + "language": "Lingua", + "@language": {}, + "activate_non_confirmation_bias_mode_label": "Modalità anti-bias di conferma", + "@activate_non_confirmation_bias_mode_label": {}, + "yes_please": "Si, grazie", + "@yes_please": {}, + "download_media_no_url": "Impossibile effettuare il download. Questo contenuto potrebbe essere disponibile soltanto come stream, che Quacker non è ancora in grado di scaricare.", + "@download_media_no_url": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Se nascondere i tweet segnalati come sensibili", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "disable_screenshots": "Disattiva screenshot", + "@disable_screenshots": {}, + "disable_screenshots_hint": "Impedisce di poter acquisire screenshot. Potrebbe non funzionare su tutti i dispositivi.", + "@disable_screenshots_hint": {}, + "possibly_sensitive_profile": "Questo profilo può includere immagini, linguaggio o altri contenuti potenzialmente sensibili. Desideri comunque vederlo?", + "@possibly_sensitive_profile": {}, + "theme_mode": "Modalità del tema", + "@theme_mode": {}, + "activate_non_confirmation_bias_mode_description": "Nascondi gli autori dei tweet. Evita il bias di conferma causato dall'appello all'autorità.", + "@activate_non_confirmation_bias_mode_description": {}, + "language_subtitle": "Richiede un riavvio", + "@language_subtitle": {}, + "possibly_sensitive": "Potenzialmente sensibile", + "@possibly_sensitive": {}, + "home": "Home", + "@home": {}, + "reset_home_pages": "Reimposta pagine predefinite", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Devi avere almeno due pagine nella home", + "@you_must_have_at_least_2_home_screen_pages": {}, + "unable_to_load_home_pages": "Impossibile caricare le tue pagine della home", + "@unable_to_load_home_pages": {}, + "only_public_subscriptions_can_be_imported": "Le iscrizioni possono essere importate soltanto da profili pubblici", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "URL non supportato", + "@unsupported_url": {}, + "saved_tweet_too_large": "Non è stato possibile visualizzare questo tweet salvato, poiché è troppo grande per essere caricato. Si prega di segnalarlo agli sviluppatori.", + "@saved_tweet_too_large": {}, + "missing_page": "Pagina mancante", + "@missing_page": {}, + "two_home_pages_required": "È necessario avere almeno due pagine nella home.", + "@two_home_pages_required": {}, + "choose_pages": "Scegli le pagine", + "@choose_pages": {}, + "share_base_url": "URL di condivisione personalizzato", + "@share_base_url": {}, + "finish": "Fine", + "@finish": {}, + "mute_videos": "Silenzia i video", + "@mute_videos": {}, + "mute_video_description": "Se i video dovrebbero essere silenziati per impostazione predefinita", + "@mute_video_description": {}, + "share_base_url_description": "Usa un URL di base personalizzato per la condivisione", + "@share_base_url_description": {}, + "next": "Avanti", + "@next": {}, + "functionality_unsupported": "Questa funzionalità non è più supportata da Twitter!", + "@functionality_unsupported": {}, + "add_subscriptions": "Aggiungi abbonamenti", + "@add_subscriptions": {} +} diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb new file mode 100644 index 00000000..ed4d80bf --- /dev/null +++ b/lib/l10n/intl_ja.arb @@ -0,0 +1,458 @@ +{ + "could_not_find_any_tweets_by_this_user": "このユーザのツイートが見つかりません!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_tweet": "ツイートの読み込みに失敗しました", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "登録グループの読み込みに失敗しました", + "@unable_to_load_subscription_groups": {}, + "would_you_like_to_enable_automatic_error_reporting": "自動エラー報告を有効にしますか?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "レポートはQuackerのプロジェクトに送信されます。プライバシーの詳細は以下の通りです:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "今回だけ送信", + "@send_once": {}, + "send_always": "いつも送信する", + "@send_always": {}, + "don_not_send": "送信しない", + "@don_not_send": {}, + "never_send": "今後送信しない", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "エラーがSentoryに送信されました。ありがとうございました!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "レポートありがとうございます。できるだけ早く修正いたします!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "ツイートの次のページ読み込みに失敗しました", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "フィードにツイートを読み込めませんでした", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "過去7日間にツイートが見つかりませんでした!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "グループの読み込みに失敗しました", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "グループ設定の読み込みに失敗しました", + "@unable_to_load_the_group_settings": {}, + "include_replies": "返信を含める", + "@include_replies": {}, + "include_retweets": "リツイートを含める", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "保存したツイートが見つかりませんでした。", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "まだツイートを保存していません!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "検索結果の読み込みに失敗しました。", + "@unable_to_load_the_search_results": {}, + "no_results": "結果なし", + "@no_results": {}, + "feed": "フィード", + "@feed": {}, + "subscriptions": "登録アカウント", + "@subscriptions": {}, + "trending": "トレンド", + "@trending": {}, + "saved": "保存ツイート", + "@saved": {}, + "unable_to_load_the_list_of_follows": "フォローリストを読み込めませんでした", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "フォローの次のページを読み込めませんでした", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_have_anyone_following_them": "このユーザをフォローしている人はいません!", + "@this_user_does_not_have_anyone_following_them": {}, + "tweets": "ツイート", + "@tweets": {}, + "media": "メディア", + "@media": {}, + "following": "フォロー", + "@following": {}, + "followers": "フォロワー", + "@followers": {}, + "export": "エクスポート", + "@export": {}, + "data_exported_to_fullPath": "データが{fullPath}にエクスポートされました", + "@data_exported_to_fullPath": {}, + "this_group_contains_no_subscriptions": "このグループは空です!", + "@this_group_contains_no_subscriptions": {}, + "add_to_group": "グループに追加", + "@add_to_group": {}, + "unsubscribe": "登録解除", + "@unsubscribe": {}, + "reporting_an_error": "エラーの報告", + "@reporting_an_error": {}, + "unable_to_load_the_next_page_of_replies": "返信の次のページ読み込みに失敗しました", + "@unable_to_load_the_next_page_of_replies": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Quackerに問題が発生し、エラーレポートが作成されました。問題修正のため、このレポートを開発者に送信できます。", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "subscribe": "登録する", + "@subscribe": {}, + "unable_to_load_the_profile": "プロフィールを読み込めませんでした", + "@unable_to_load_the_profile": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "注意:Twitterの制限により全てのツイートが含まれない可能性があります", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "this_user_does_not_follow_anyone": "このユーザは誰もフォローしていません!", + "@this_user_does_not_follow_anyone": {}, + "unable_to_load_the_tweets": "ツイートを読み込めませんでした", + "@unable_to_load_the_tweets": {}, + "tweets_and_replies": "ツイートと返信", + "@tweets_and_replies": {}, + "export_settings": "設定をエクスポート?", + "@export_settings": {}, + "export_subscription_group_members": "登録グループのアカウントをエクスポート?", + "@export_subscription_group_members": {}, + "export_tweets": "ツイートをエクスポート?", + "@export_tweets": {}, + "data_imported_successfully": "データのインポートに成功しました", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "既に最近pingを送信しているようです。🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "timed_out_trying_to_send_the_ping": "Pingの送信がタイムアウトしました😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Pingの送信に失敗しました。{e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "送信", + "@send": {}, + "say_hello_emoji": "こんにちは👋", + "@say_hello_emoji": {}, + "general": "一般", + "@general": {}, + "default_tab": "デフォルトのタブ", + "@default_tab": {}, + "media_size": "メディアの大きさ", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "小さい画像にすると通信容量を削減できます", + "@save_bandwidth_using_smaller_images": {}, + "large": "大", + "@large": {}, + "system": "システム", + "@system": {}, + "light": "ライト", + "@light": {}, + "true_black": "トゥルーブラック?", + "@true_black": {}, + "legacy_android_import": "インポート(レガシー端末)", + "@legacy_android_import": {}, + "prefix": "プレフィックス", + "@prefix": {}, + "export_your_data": "データのエクスポート", + "@export_your_data": {}, + "logging": "ログ", + "@logging": {}, + "enable_": "を有効化?", + "@enable_": {}, + "whether_errors_should_be_reported_to_": "エラーをに送信する", + "@whether_errors_should_be_reported_to_": {}, + "copied_version_to_clipboard": "バージョンをクリップボードにコピーしました", + "@copied_version_to_clipboard": {}, + "contribute": "貢献する", + "@contribute": {}, + "report_a_bug": "バグのレポート", + "@report_a_bug": {}, + "donate": "寄付", + "@donate": {}, + "help_support_fritters_future": "Quackerの将来を支援する", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "アドレスをクリップボードにコピーしました", + "@copied_address_to_clipboard": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "MITライセンスで公開", + "@released_under_the_mit_license": {}, + "all": "すべて", + "@all": {}, + "newTrans": "新着", + "@newTrans": {}, + "no": "いいえ", + "@no": {}, + "are_you_sure": "確認", + "@are_you_sure": {}, + "toggle_all": "すべて選択", + "@toggle_all": {}, + "delete": "削除", + "@delete": {}, + "ok": "OK", + "@ok": {}, + "name": "グループ名", + "@name": {}, + "please_enter_a_name": "グループ名を入力してください", + "@please_enter_a_name": {}, + "pick_a_color": "色を選択!", + "@pick_a_color": {}, + "import_subscriptions": "登録アカウントをインポートする", + "@import_subscriptions": {}, + "enter_your_twitter_username": "Twitterユーザ名を入力", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "公開アカウントである必要があります", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "ユーザ名", + "@username": {}, + "finished_with_snapshotData_users": "{snapshotData}ユーザのインポートが完了しました", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "登録アカウントがありません。検索するか、インポートしてみてください!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Twitterからインポート", + "@import_from_twitter": {}, + "groups": "グループ", + "@groups": {}, + "date_created": "作成日", + "@date_created": {}, + "date_subscribed": "登録日", + "@date_subscribed": {}, + "unable_to_find_the_available_trend_locations": "利用可能なトレンドの地域が見つかりませんでした。", + "@unable_to_find_the_available_trend_locations": {}, + "country": "国", + "@country": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "{timeagoFormat}に終了", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "{timeagoFormat}に終了", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{0 票} one{1 票} two{2 票} few{{numFormatted} 票} many{{numFormatted} 票} other{{numFormatted} 票}}", + "@numberFormat_format_total_votes": {}, + "playback_speed": "再生速度", + "@playback_speed": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName}がリツイート {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "sorry_the_replied_tweet_could_not_be_found": "返信ツイートが見つかりませんでした!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "ツイートのテキストがありません。予期せぬ結果です", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "このツイートはありません。削除されたかもしれません。", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "固定ツイート", + "@pinned_tweet": {}, + "unsave": "保存取り消し", + "@unsave": {}, + "save": "保存", + "@save": {}, + "share_tweet_content": "ツイート内容を共有", + "@share_tweet_content": {}, + "replying_to": "返信:", + "@replying_to": {}, + "private_profile": "非公開プロフィール", + "@private_profile": {}, + "user_not_found": "ユーザが見つかりません", + "@user_not_found": {}, + "account_suspended": "凍結済みアカウント", + "@account_suspended": {}, + "back": "戻る", + "@back": {}, + "please_check_your_internet_connection_error_message": "インターネット接続を確認してください。\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "updates": "更新", + "@updates": {}, + "an_update_for_fritter_is_available": "Quackerの更新が利用可能です!🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "タップしてダウンロード:{releaseVersion}", + "@tap_to_download_release_version": {}, + "fritter_blue": "Quackerブルー", + "@fritter_blue": {}, + "something_broke_in_fritter": "Quackerに異常が発生しました。", + "@something_broke_in_fritter": {}, + "thanks_for_helping_fritter": "Quackerを支援いただきありがとうございます!💖", + "@thanks_for_helping_fritter": {}, + "say_hello": "挨拶する", + "@say_hello": {}, + "use_true_black_for_the_dark_mode_theme": "ダークテーマで完全な黒を使用する", + "@use_true_black_for_the_dark_mode_theme": {}, + "import_data_from_another_device": "他の端末からデータをインポートする", + "@import_data_from_another_device": {}, + "joined": "{date}に登録", + "@joined": {}, + "export_subscriptions": "登録アカウントをエクスポート?", + "@export_subscriptions": {}, + "export_subscription_groups": "登録グループをエクスポート?", + "@export_subscription_groups": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Pingを送信できませんでした。ステータスコード:{statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "以下が送信されるデータです。今後Quackerがサポートすべき端末と言語を特定するためにのみ使用されます。", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "dark": "ダーク", + "@dark": {}, + "import": "インポート", + "@import": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "既にこのバージョンのQuackerから挨拶を送っているようです!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "キャンセル", + "@cancel": {}, + "which_tab_is_shown_when_the_app_opens": "アプリの起動時に表示するタブ", + "@which_tab_is_shown_when_the_app_opens": {}, + "medium": "中", + "@medium": {}, + "theme": "テーマ", + "@theme": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Quackerを使用していることを示す匿名のpingを開発者に送り、今後の開発を支援する", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "disabled": "無効", + "@disabled": {}, + "thumbnail": "サムネイル", + "@thumbnail": {}, + "small": "小", + "@small": {}, + "data": "データ", + "@data": {}, + "yes": "はい", + "@yes": {}, + "about": "Quackerについて", + "@about": {}, + "let_the_developers_know_if_something_is_broken": "不都合を開発者に知らせる", + "@let_the_developers_know_if_something_is_broken": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "ファイルが存在しません。{filePath}に存在することを確認してください", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "インポートしたいデータが存在することを確認し、下のインポートボタンを押してください。", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "licenses": "ライセンス", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Quackerで使用する偉大なソフトウェア", + "@all_the_great_software_used_by_fritter": {}, + "help_make_fritter_even_better": "Quackerを改善するために協力する", + "@help_make_fritter_even_better": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "登録グループ{name}を削除してもよろしいですか?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Twitterアカウントから登録アカウントをインポートするには、以下にユーザ名を入力してください。", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "filters": "フィルタ", + "@filters": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Quackerが登録アカウントをインポートする際に使うメソッドはTwitterが厳しくレート制限しているため、フォローアカウントが多い場合は失敗する可能性があります。", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "この機能にフィードバックがありましたら、こちらにお願いします。", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "トレンドが返されませんでした。予期せぬ動作です!可能でしたらバグとして報告ください。", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "インポートするアカウントの選択やグループへの割り当ては今後対応予定です!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "unable_to_import": "インポートできませんでした", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData}ユーザがインポートされました", + "@imported_snapshot_data_users_so_far": {}, + "unable_to_load_the_trends_for_widget_place_name": "{widgetPlaceName}のトレンドを読み込めませんでした", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "tweets_number": "{num, plural, zero{0 ツイート} one{1 ツイート} two{2 ツイート} few{{numFormatted} ツイート} many{{numFormatted} ツイート} other{{numFormatted} ツイート}}", + "@tweets_number": {}, + "trends": "トレンド", + "@trends": {}, + "unable_to_stream_the_trend_location_preference": "トレンドの地域設定をストリームできませんでした", + "@unable_to_stream_the_trend_location_preference": {}, + "tap_to_show_getMediaType_item_type": "タップして{getMediaType}を表示", + "@tap_to_show_getMediaType_item_type": {}, + "downloading_media": "メディアをダウンロード中...", + "@downloading_media": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "メディアを保存できませんでした。Twitterから返されたステータス:{responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "successfully_saved_the_media": "メディアを保存しました!", + "@successfully_saved_the_media": {}, + "unknown": "不明", + "@unknown": {}, + "subtitles": "字幕", + "@subtitles": {}, + "catastrophic_failure": "致命的なエラー", + "@catastrophic_failure": {}, + "retry": "再試行", + "@retry": {}, + "could_not_contact_twitter": "Twitterにアクセスできませんでした", + "@could_not_contact_twitter": {}, + "timed_out": "タイムアウト", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "読み込みに時間がかかり過ぎています。ネットワーク接続を確認してください!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "report": "レポート", + "@report": {}, + "when_a_new_app_update_is_available": "新しいアプリの更新が利用可能なとき", + "@when_a_new_app_update_is_available": {}, + "update_to_release_version_through_your_fdroid_client": "F-Droidクライアントから{releaseVersion}に更新", + "@update_to_release_version_through_your_fdroid_client": {}, + "share_tweet_link": "ツイートリンクを共有", + "@share_tweet_link": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "データが返されませんでした。これは起こりえないことです。可能でしたらバグとして報告ください!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "oops_something_went_wrong": "問題が発生しました🥲", + "@oops_something_went_wrong": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Twitterの配色に基づいたブルーのテーマ", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "unable_to_run_the_database_migrations": "データベース移行ができませんでした", + "@unable_to_run_the_database_migrations": {}, + "data_exported_to_fileName": "データが{fileName}にエクスポートされました", + "@data_exported_to_fileName": {}, + "version": "バージョン", + "@version": {}, + "live": "ライブ", + "@live": {}, + "download": "ダウンロード", + "@download": {}, + "thread": "スレッド", + "@thread": {}, + "select": "選択", + "@select": {}, + "pick_an_icon": "アイコンを選択!", + "@pick_an_icon": {}, + "search": "検索", + "@search": {}, + "close": "閉じる", + "@close": {}, + "the_github_issue": "GitHub issue (#143)", + "@the_github_issue": {}, + "share_tweet_content_and_link": "ツイート内容とリンクを共有", + "@share_tweet_content_and_link": {}, + "download_handling": "ダウンロード制御", + "@download_handling": {}, + "download_handling_description": "どのようにダウンロードするか", + "@download_handling_description": {}, + "download_handling_type_directory": "ディレクトリに保存", + "@download_handling_type_directory": {}, + "choose": "選択", + "@choose": {}, + "not_set": "設定しない", + "@not_set": {}, + "open_app_settings": "アプリで開く設定", + "@open_app_settings": {}, + "should_check_for_updates_description": "Quacker開始時に更新を確認する", + "@should_check_for_updates_description": {}, + "download_handling_type_ask": "毎回確認する", + "@download_handling_type_ask": {}, + "permission_not_granted": "権限がありません。許可後に再度試してみてください!", + "@permission_not_granted": {}, + "no_results_for": "結果なし:", + "@no_results_for": {}, + "should_check_for_updates_label": "更新を確認", + "@should_check_for_updates_label": {}, + "download_path": "ダウンロード先", + "@download_path": {}, + "possibly_sensitive_tweet": "ツイートにセンシティブな内容が含まれる可能性があります。表示しますか?", + "@possibly_sensitive_tweet": {}, + "home": "ホーム", + "@home": {}, + "confirm_close_fritter": "Quacker を閉じますか?", + "@confirm_close_fritter": {}, + "next": "次", + "@next": {}, + "language_subtitle": "再起動が必要", + "@language_subtitle": {}, + "hide_sensitive_tweets": "センシティブな内容のツイートを隠す", + "@hide_sensitive_tweets": {}, + "disable_screenshots": "スクリーンショットを無効化", + "@disable_screenshots": {}, + "disable_screenshots_hint": "スクリーンショットの撮影を防止する。すべての端末で動作しない可能性があります。", + "@disable_screenshots_hint": {}, + "possibly_sensitive_profile": "プロフィールにセンシティブな画像、言語、その他のコンテンツが含まれる可能性があります。表示しますか?", + "@possibly_sensitive_profile": {}, + "unable_to_load_home_pages": "ホームを読み込めません", + "@unable_to_load_home_pages": {}, + "unsupported_url": "未対応のURL", + "@unsupported_url": {}, + "page_not_found": "Twitterはページがないと表示しているが、本当ではないかもしれない", + "@page_not_found": {}, + "forbidden": "Twitterによればアクセス禁止", + "@forbidden": {}, + "theme_mode": "テーマのモード", + "@theme_mode": {}, + "whether_to_hide_tweets_marked_as_sensitive": "センシティブとされたツイートを隠すかどうか", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "group_name": "グループ: {name}", + "@group_name": {}, + "language": "言語", + "@language": {}, + "activate_non_confirmation_bias_mode_label": "対確証バイアスモードを有効化", + "@activate_non_confirmation_bias_mode_label": {}, + "yes_please": "はいどうぞ", + "@yes_please": {}, + "download_media_no_url": "ダウンロードできません。このメディアはストリーム限定の可能性があり、今のQuackerではダウンロードできません。", + "@download_media_no_url": {}, + "activate_non_confirmation_bias_mode_description": "ツイート発信者を非表示にして、権威に基づく確証バイアスに陥るのを避けます。", + "@activate_non_confirmation_bias_mode_description": {} +} diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb new file mode 100644 index 00000000..5ac2ce4e --- /dev/null +++ b/lib/l10n/intl_ko.arb @@ -0,0 +1,100 @@ +{ + "add_to_group": "그룹에 추가", + "@add_to_group": {}, + "unable_to_load_the_next_page_of_follows": "다음 페이지 팔로우 목록을 불러올 수 없습니다", + "@unable_to_load_the_next_page_of_follows": {}, + "unsubscribe": "구독 해제", + "@unsubscribe": {}, + "subscribe": "구독", + "@subscribe": {}, + "reporting_an_error": "오류를 보고합니다", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "자동 오류 보고를 켜시겠습니까?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "send_once": "한번 보내기", + "@send_once": {}, + "send_always": "항상 보내기", + "@send_always": {}, + "don_not_send": "보내지 않기", + "@don_not_send": {}, + "never_send": "절대 보내지 않기", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "오류가 보고되었습니다. 감사합니다!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "보고 감사합니다. 빨리 수정하도록 하겠습니다!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_tweets_for_the_feed": "트윗 피드를 불러올 수 없습니다", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "7일 이상의 트윗을 찾을 수 없습니다!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "그룹을 불러올 수 없습니다", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "그룹 설정을 불러올 수 없습니다", + "@unable_to_load_the_group_settings": {}, + "filters": "필터", + "@filters": {}, + "include_replies": "답장 포함", + "@include_replies": {}, + "include_retweets": "리트윗 포함", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "저장된 트윗을 찾을 수 없습니다.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "아무 트윗도 저장하지 않았습니다!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "검색결과를 불러올 수 없습니다.", + "@unable_to_load_the_search_results": {}, + "no_results": "결과 없음", + "@no_results": {}, + "feed": "피드", + "@feed": {}, + "subscriptions": "구독", + "@subscriptions": {}, + "trending": "트랜드", + "@trending": {}, + "saved": "저장됨", + "@saved": {}, + "unable_to_load_the_list_of_follows": "팔로우 목록을 불러올 수 없습니다", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_follow_anyone": "해당 유저는 아무도 팔로우 하지 않았습니다!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "해당 유저는 팔로워가 없습니다!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "트윗을 불러올 수 없습니다", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "프로필을 불러올 수 없습니다", + "@unable_to_load_the_profile": {}, + "tweets": "트윗", + "@tweets": {}, + "media": "미디어", + "@media": {}, + "followers": "팔로워", + "@followers": {}, + "export": "내보내기", + "@export": {}, + "data_exported_to_fullPath": "정보를 {fullPath}(으)로 내보냈습니다", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "정보를 {fileName}(으)로 내보냈습니다", + "@data_exported_to_fileName": {}, + "export_settings": "내보내기 설정?", + "@export_settings": {}, + "export_subscription_groups": "구독 그룹을 내보내겠습니까?", + "@export_subscription_groups": {}, + "export_subscriptions": "구독 내보내기?", + "@export_subscriptions": {}, + "export_tweets": "트윗 내보내기?", + "@export_tweets": {}, + "data_imported_successfully": "데이터가 성공적으로 내보내졌습니다", + "@data_imported_successfully": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Quacker에 오류가 발생하였으며, 오류 보고서가 생성되었습니다. 문제해결을 위해 보고서를 Quacker 개발자에게 보낼 수 있습니다.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "unable_to_load_the_next_page_of_tweets": "다음 페이지 트윗을 불러올 수 없습니다", + "@unable_to_load_the_next_page_of_tweets": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "공지: 트위터의 한계로 인하여 모든 트윗이 포함되지 않을 수 있습니다", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "tweets_and_replies": "트윗 & 답장", + "@tweets_and_replies": {}, + "following": "팔로잉", + "@following": {}, + "export_subscription_group_members": "구독 그룹 맴버를 내보내겠습니까?", + "@export_subscription_group_members": {} +} diff --git a/lib/l10n/intl_ml.arb b/lib/l10n/intl_ml.arb new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/lib/l10n/intl_ml.arb @@ -0,0 +1 @@ +{} diff --git a/lib/l10n/intl_nb_NO.arb b/lib/l10n/intl_nb_NO.arb new file mode 100644 index 00000000..15a3d736 --- /dev/null +++ b/lib/l10n/intl_nb_NO.arb @@ -0,0 +1,422 @@ +{ + "this_group_contains_no_subscriptions": "Denne gruppen inneholder ingen abonnementer!", + "@this_group_contains_no_subscriptions": {}, + "include_replies": "Ta med svar", + "@include_replies": {}, + "include_retweets": "Inkluder retweets", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Kan ikke finne dine lagrede tweets.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Du har ikke lagret noen tweets ennå!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Kan ikke laste søkeresultatene.", + "@unable_to_load_the_search_results": {}, + "no_results": "Ingen resultater", + "@no_results": {}, + "subscriptions": "Abonnementer", + "@subscriptions": {}, + "trending": "Trender", + "@trending": {}, + "saved": "Lagret", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Kan ikke laste inn listen over følger", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_have_anyone_following_them": "Denne brukeren har ingen som følger dem!", + "@this_user_does_not_have_anyone_following_them": {}, + "followers": "Følgere", + "@followers": {}, + "donate": "Doner", + "@donate": {}, + "report_a_bug": "Rapporter en feil", + "@report_a_bug": {}, + "help_make_fritter_even_better": "Hjelp til å gjøre Quacker enda bedre", + "@help_make_fritter_even_better": {}, + "contribute": "Bidra", + "@contribute": {}, + "all": "Alle", + "@all": {}, + "fritter": "Quacker", + "@fritter": {}, + "all_the_great_software_used_by_fritter": "All den flotte programvaren som brukes av Quacker", + "@all_the_great_software_used_by_fritter": {}, + "licenses": "Lisenser", + "@licenses": {}, + "name": "Navn", + "@name": {}, + "ok": "OK", + "@ok": {}, + "delete": "Slett", + "@delete": {}, + "are_you_sure": "Er du sikker?", + "@are_you_sure": {}, + "yes": "Ja", + "@yes": {}, + "no": "Nei", + "@no": {}, + "enter_your_twitter_username": "Skriv inn ditt Twitter-brukernavn", + "@enter_your_twitter_username": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Hvis du har tilbakemeldinger om denne funksjonen, vennligst la den være på", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "import_from_twitter": "Importer fra Twitter", + "@import_from_twitter": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Slutter {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "trends": "Trender", + "@trends": {}, + "unknown": "Ukjent", + "@unknown": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Tweeten inneholdt ingen tekst. Dette er uventet", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "replying_to": "Svarer til", + "@replying_to": {}, + "download": "Last ned", + "@download": {}, + "save": "Lagre", + "@save": {}, + "back": "Tilbake", + "@back": {}, + "account_suspended": "Kontoen er suspendert", + "@account_suspended": {}, + "user_not_found": "Bruker ikke funnet", + "@user_not_found": {}, + "something_broke_in_fritter": "Noe brakk i Quacker.", + "@something_broke_in_fritter": {}, + "tap_to_download_release_version": "Trykk for å laste ned {releaseVersion}", + "@tap_to_download_release_version": {}, + "an_update_for_fritter_is_available": "En oppdatering for Quacker er tilgjengelig! 🚀", + "@an_update_for_fritter_is_available": {}, + "updates": "Oppdateringer", + "@updates": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Ingen data ble returnert, noe som aldri skulle skje. Vennligst rapporter en feil, hvis mulig!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "report": "Rapporter", + "@report": {}, + "oops_something_went_wrong": "Oops! Noe gikk galt 🥲", + "@oops_something_went_wrong": {}, + "whether_errors_should_be_reported_to_": "Om feil skal rapporteres til ", + "@whether_errors_should_be_reported_to_": {}, + "version": "Versjon", + "@version": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Merk: På grunn av en Twitter-begrensning kan det hende at ikke alle tweets er inkludert", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "filters": "Filtre", + "@filters": {}, + "this_user_does_not_follow_anyone": "Denne brukeren følger ingen!", + "@this_user_does_not_follow_anyone": {}, + "following": "Følger", + "@following": {}, + "country": "Land", + "@country": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Det var ingen trender tilbake. Dette er uventet! Vennligst rapporter som en feil, hvis mulig.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "newTrans": "Ny", + "@newTrans": {}, + "could_not_contact_twitter": "Kunne ikke kontakte Twitter", + "@could_not_contact_twitter": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Sluttet {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "no_subscriptions_try_searching_or_importing_some": "Ingen abonnementer. Prøv å søke eller importere noen!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "please_enter_a_name": "Vennligst skriv inn et navn", + "@please_enter_a_name": {}, + "when_a_new_app_update_is_available": "Når en ny appoppdatering er tilgjengelig", + "@when_a_new_app_update_is_available": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Dette tok for lang tid å laste. Vennligst sjekk nettverkstilkoblingen din!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "this_tweet_is_unavailable": "Denne tweeten er utilgjengelig", + "@this_tweet_is_unavailable": {}, + "retry": "Prøv på nytt", + "@retry": {}, + "share_tweet_link": "Del tweet-lenke", + "@share_tweet_link": {}, + "username": "Brukernavn", + "@username": {}, + "unable_to_find_the_available_trend_locations": "Kan ikke finne tilgjengelige trendplasseringer.", + "@unable_to_find_the_available_trend_locations": {}, + "groups": "Grupper", + "@groups": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Profilen din må være offentlig, ellers vil ikke importen fungere", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "pick_a_color": "Velg en farge!", + "@pick_a_color": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Vær oppmerksom på at metoden Quacker bruker for å importere abonnementer er sterkt takstbegrenset av Twitter, så dette kan mislykkes hvis du har mange fulgte kontoer.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "help_support_fritters_future": "Hjelp til å støtte Quackers fremtid", + "@help_support_fritters_future": {}, + "about": "Om", + "@about": {}, + "let_the_developers_know_if_something_is_broken": "Gi beskjed til utviklerne hvis noe er ødelagt", + "@let_the_developers_know_if_something_is_broken": {}, + "released_under_the_mit_license": "Utgitt under MIT-lisensen", + "@released_under_the_mit_license": {}, + "enable_": "Vil du aktivere ?", + "@enable_": {}, + "could_not_find_any_tweets_by_this_user": "Kunne ikke finne noen tweets fra denne brukeren!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Kan ikke laste inn neste side med svar", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Kan ikke laste tweeten", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Kan ikke laste inn abonnementsgrupper", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Legg til i gruppe", + "@add_to_group": {}, + "unsubscribe": "Avslutte abonnementet", + "@unsubscribe": {}, + "subscribe": "Abonnere", + "@subscribe": {}, + "reporting_an_error": "Rapporterer en feil", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Noe gikk galt i Quacker, og en feilrapport har blitt generert. Rapporten kan sendes til Quacker-utviklerne for å hjelpe med å fikse problemet.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Vil du aktivere automatisk feilrapportering?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Rapporten din vil bli sendt til Quacker's -prosjekt, og personverndetaljer kan finnes på:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Send en gang", + "@send_once": {}, + "send_always": "Send alltid", + "@send_always": {}, + "don_not_send": "Ikke send", + "@don_not_send": {}, + "never_send": "Send aldri", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "En feil ble rapportert til . Takk skal du ha!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Takk for at du rapporterte. Vi skal prøve å fikse det på kort tid!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Kan ikke laste inn neste side med tweets", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Kan ikke laste inn tweets for feeden", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Kunne ikke finne noen tweets fra de siste 7 dagene!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Kan ikke laste inn gruppen", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Kan ikke laste inn gruppeinnstillingene", + "@unable_to_load_the_group_settings": {}, + "live": "DIREKTE", + "@live": {}, + "feed": "Informasjonsstrøm", + "@feed": {}, + "unable_to_load_the_next_page_of_follows": "Kunne ikke laste inn neste side med følgere", + "@unable_to_load_the_next_page_of_follows": {}, + "tweets": "Tvitringer", + "@tweets": {}, + "unable_to_load_the_profile": "Kunne ikke laste inn profilen", + "@unable_to_load_the_profile": {}, + "tweets_and_replies": "Tvitringer og svar", + "@tweets_and_replies": {}, + "media": "Media", + "@media": {}, + "data_exported_to_fullPath": "Data eksportert til {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "Data eksportert til {fileName}", + "@data_exported_to_fileName": {}, + "export_settings": "Eksporter innstillinger?", + "@export_settings": {}, + "export_subscriptions": "Eksporter abonnementer?", + "@export_subscriptions": {}, + "export_tweets": "Eksporter tvitringer?", + "@export_tweets": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Det ser ut som du allerede har sagt hei fra denne versjonen av Quacker.", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "Avbryt", + "@cancel": {}, + "thanks_for_helping_fritter": "Takk for at du hjelper Quacker. 💖", + "@thanks_for_helping_fritter": {}, + "data_imported_successfully": "Data importert", + "@data_imported_successfully": {}, + "send": "Send", + "@send": {}, + "say_hello_emoji": "Si hei 👋", + "@say_hello_emoji": {}, + "unable_to_send_the_ping_e_to_string": "Kunne ikke sende ekkoforespørselen. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "say_hello": "Si hei", + "@say_hello": {}, + "general": "Generelt", + "@general": {}, + "default_tab": "Forvalgt fane", + "@default_tab": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Send en ikke-identifiserende ekkoforespørsel til meg for å tilkjennegjøre at du bruker Quacker, og hjelp videre utvikling.", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Denne dataen vil bli sendt. Den brukes kun til å bestemme hvilke enheter og språk som skal støttes i Quacker i fremtiden.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "disabled": "Avskrudd", + "@disabled": {}, + "thumbnail": "Miniatyrbilde", + "@thumbnail": {}, + "small": "Lite", + "@small": {}, + "media_size": "Mediastørrelse", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Spar båndbredde ved å bruke mindre bilder", + "@save_bandwidth_using_smaller_images": {}, + "which_tab_is_shown_when_the_app_opens": "Hvilken fane som vises når programmet åpnes", + "@which_tab_is_shown_when_the_app_opens": {}, + "medium": "Middels", + "@medium": {}, + "large": "Stort", + "@large": {}, + "system": "System", + "@system": {}, + "light": "Lys", + "@light": {}, + "dark": "Mørk", + "@dark": {}, + "import": "Importer", + "@import": {}, + "import_data_from_another_device": "Importer data fra en annen enhet", + "@import_data_from_another_device": {}, + "prefix": "prefiks", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Forsikre deg om at dataen du ønsker å importere er å finne der. Deretter trykker du på «Import»-knappen nedenfor.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "logging": "Loggføring", + "@logging": {}, + "copied_address_to_clipboard": "Adresse kopiert til utklippstavle", + "@copied_address_to_clipboard": {}, + "copied_version_to_clipboard": "Versjon kopiert til utklippstavlen", + "@copied_version_to_clipboard": {}, + "import_subscriptions": "Importer abonnementer", + "@import_subscriptions": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Slett {name}-abonnementsgruppen?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Valg av individuelle kontoer og importere, samt tildeling av grupper er allerede planlagt.", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "unable_to_import": "Kan ikke importere", + "@unable_to_import": {}, + "date_created": "Opprettelsesdato", + "@date_created": {}, + "date_subscribed": "Abonneringsdato", + "@date_subscribed": {}, + "numberFormat_format_total_votes": "{num, plural, zero{ingen stemmer} one{én stemme} two{to stemmer} few{{numFormatted} stemmer} many{{numFormatted} stemme} other{{numFormatted} stemmer}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Trykk for å vise {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Kunne ikke lagre mediafilen. Twitter svarte med {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "downloading_media": "Laster ned media …", + "@downloading_media": {}, + "playback_speed": "Avspillingshastighet", + "@playback_speed": {}, + "successfully_saved_the_media": "Media lagret.", + "@successfully_saved_the_media": {}, + "subtitles": "Undertitler", + "@subtitles": {}, + "pinned_tweet": "Festet tvitring", + "@pinned_tweet": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} re-tvitret", + "@this_tweet_user_name_retweeted": {}, + "catastrophic_failure": "Katastrofal feil", + "@catastrophic_failure": {}, + "timed_out": "Tidsavbrudd", + "@timed_out": {}, + "unable_to_run_the_database_migrations": "Kunne ikke kjøre databaseflytting", + "@unable_to_run_the_database_migrations": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Blå drakt basert på Twitter-fargepaletten", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "fritter_blue": "Quacker-blå", + "@fritter_blue": {}, + "update_to_release_version_through_your_fdroid_client": "Oppgrader til {releaseVersion} med din F-Droid-klient", + "@update_to_release_version_through_your_fdroid_client": {}, + "unable_to_load_the_tweets": "Kunne ikke laste inn tvitringene", + "@unable_to_load_the_tweets": {}, + "export": "Eksporter", + "@export": {}, + "joined": "Tok del {date}", + "@joined": {}, + "export_subscription_groups": "Eksporter abonnementsgrupper?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Eksporter abonnementsgruppemedlemmer?", + "@export_subscription_group_members": {}, + "use_true_black_for_the_dark_mode_theme": "Bruk svart drakt for mørkt valg", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Data", + "@data": {}, + "export_your_data": "Eksporter dataen din", + "@export_your_data": {}, + "theme": "Drakt", + "@theme": {}, + "true_black": "Helt svart?", + "@true_black": {}, + "legacy_android_import": "Gammeldags Android-import", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Filen finnes ikke. Sørg for at den er å finne i {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "finished_with_snapshotData_users": "Fullført med {snapshotData} brukere", + "@finished_with_snapshotData_users": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} brukere importert så langt", + "@imported_snapshot_data_users_so_far": {}, + "unable_to_load_the_trends_for_widget_place_name": "Kunne ikke laste ned tendenser for {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "unable_to_stream_the_trend_location_preference": "Kunne ikke strømme tendensposisjonsvalg", + "@unable_to_stream_the_trend_location_preference": {}, + "tweets_number": "{num, plural, zero{ingen tvitringer} one{én tvitring} two{to tvitringer} few{{numFormatted} tvitringer} many{{numFormatted} tvitringer} other{{numFormatted} tvitringer}}", + "@tweets_number": {}, + "thread": "Tråd", + "@thread": {}, + "unsave": "Opphev lagring", + "@unsave": {}, + "share_tweet_content": "Del tvitringsinnhold", + "@share_tweet_content": {}, + "private_profile": "Privat profil", + "@private_profile": {}, + "toggle_all": "Veksle alt", + "@toggle_all": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Det ser ut til at du allerede har sendt en ekkoforespørsel 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Kunne ikke sende ekkoforespørselen. Statuskoden er {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Tidsavbrudd under forsendelse av ekkoforespørsel 😢", + "@timed_out_trying_to_send_the_ping": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Skriv inn brukernavnet ditt nedenfor hvis du vil importere abonnementer fra en eksisterende Twitter-konto.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "sorry_the_replied_tweet_could_not_be_found": "Fant ikke svar-tvitringen.", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "please_check_your_internet_connection_error_message": "Sjekk at du er tilkoblet Internett.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "pick_an_icon": "Velg et ikon", + "@pick_an_icon": {}, + "search": "Søk", + "@search": {}, + "close": "Lukk", + "@close": {}, + "choose": "Velg", + "@choose": {}, + "download_handling_type_ask": "Alltid spør", + "@download_handling_type_ask": {}, + "confirm_close_fritter": "Lukk Quacker?", + "@confirm_close_fritter": {}, + "open_app_settings": "Åpne programinnstillingene", + "@open_app_settings": {}, + "not_set": "Ikke satt", + "@not_set": {}, + "language_subtitle": "Krever omstart", + "@language_subtitle": {}, + "activate_non_confirmation_bias_mode_label": "Forhindre bekreftelsesbias", + "@activate_non_confirmation_bias_mode_label": {}, + "select": "Velg", + "@select": {}, + "theme_mode": "Draktmodus", + "@theme_mode": {}, + "download_path": "Nedlastingssti", + "@download_path": {}, + "activate_non_confirmation_bias_mode_description": "Skjul forfattere av tvitringer. Unngå bekreftelsesbias basert på argumenter i form av autoriteter.", + "@activate_non_confirmation_bias_mode_description": {}, + "download_handling_type_directory": "Lagre i mappe", + "@download_handling_type_directory": {}, + "disable_screenshots": "Skru av skjermavbildninger", + "@disable_screenshots": {}, + "share_tweet_content_and_link": "Del tvitringsinnhold og lenk", + "@share_tweet_content_and_link": {}, + "group_name": "Gruppe: {name}", + "@group_name": {}, + "yes_please": "Ja", + "@yes_please": {}, + "language": "Språk", + "@language": {}, + "home": "Hjem", + "@home": {} +} diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb new file mode 100644 index 00000000..292e88e5 --- /dev/null +++ b/lib/l10n/intl_nl.arb @@ -0,0 +1,106 @@ +{ + "this_group_contains_no_subscriptions": "Deze groep bevat geen abonnementen!", + "@this_group_contains_no_subscriptions": {}, + "send_once": "Eén keer verzenden", + "@send_once": {}, + "don_not_send": "Niet verzenden", + "@don_not_send": {}, + "send_always": "Altijd verzenden", + "@send_always": {}, + "could_not_find_any_tweets_by_this_user": "Geen tweets gevonden voor deze gebruiker!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Laden van meer reacties is mislukt", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Laden van de tweet is mislukt", + "@unable_to_load_the_tweet": {}, + "select": "Selecteer", + "@select": {}, + "unsubscribe": "Abonnement stoppen", + "@unsubscribe": {}, + "unable_to_load_subscription_groups": "Laden van de abonnement groepen mislukt", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Aan groep toevoegen", + "@add_to_group": {}, + "subscribe": "Abonneer", + "@subscribe": {}, + "reporting_an_error": "Meld een fout", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Er ging iets mis in Quacker, een rapport is gegenereerd. Het rapport kan naar de Quacker ontwikkelaars worden gestuurd zodat het probleem kan worden opgespoord.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Automatische foutrapportage inschakelen?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Het rapport wordt naar het project van Quacker gestuurd, details over privacy kunnen worden gevonden op:", + "@your_report_will_be_sent_to_fritter__project": {}, + "never_send": "Nooit verzonden", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Een fout is gerapporteerd aan . Bedankt!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Bedankt voor de rapportage. We proberen het zo snel mogelijk te repareren!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Meer tweets laden is mislukt", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_group": "Groep laden mislukt", + "@unable_to_load_the_group": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Kon geen tweets van de laatste 7 dagen vinden!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group_settings": "Laden van groep instellingen mislukt", + "@unable_to_load_the_group_settings": {}, + "filters": "Filters", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Opmerking: door een beperking bij Twitter kunnen niet alle tweets worden opgenomen", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Reacties toevoegen", + "@include_replies": {}, + "sorry_the_replied_tweet_could_not_be_found": "Sorry, kon de beantwoorde tweet niet vinden!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "share_tweet_link": "Deel link naar tweet", + "@share_tweet_link": {}, + "share_tweet_content_and_link": "Deel inhoud en link naar tweet", + "@share_tweet_content_and_link": {}, + "back": "Terug", + "@back": {}, + "retry": "Opnieuw", + "@retry": {}, + "timed_out": "Wachttijd versterken", + "@timed_out": {}, + "replying_to": "Reagerend op", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "De tweet bevat geen tekst. Dit is onverwacht", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "unsave": "Onveilig", + "@unsave": {}, + "save": "Veilig", + "@save": {}, + "share_tweet_content": "Deel inhoud van de tweet", + "@share_tweet_content": {}, + "private_profile": "Privé profiel", + "@private_profile": {}, + "page_not_found": "Twitter meldt dat deze pagina niet bestaat, maar dit hoeft niet te kloppen", + "@page_not_found": {}, + "forbidden": "Twitter zegt dat de toegang verboden is", + "@forbidden": {}, + "bad_guest_token": "Twitter heeft onze toegangssleutel ongeldig gemaakt. Probeer Quacker opnieuw te starten!", + "@bad_guest_token": {}, + "user_not_found": "Gebruiker niet gevonden", + "@user_not_found": {}, + "account_suspended": "Account uitgeschakeld", + "@account_suspended": {}, + "catastrophic_failure": "Katastrofale fout", + "@catastrophic_failure": {}, + "could_not_contact_twitter": "Kon geen contact met Twitter krijgen", + "@could_not_contact_twitter": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Laden duurde te lang. Controleer je internet verbinding!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "Oeps! Er ging iets mis 🥲", + "@oops_something_went_wrong": {}, + "report": "Rapporteer", + "@report": {}, + "this_tweet_is_unavailable": "Deze tweet is niet beschikbaar. Mogelijk is deze verwijderd.", + "@this_tweet_is_unavailable": {}, + "thread": "Draad", + "@thread": {}, + "please_check_your_internet_connection_error_message": "Controleer je internet verbinding.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "pinned_tweet": "Vastgezette tweet", + "@pinned_tweet": {} +} diff --git a/lib/l10n/intl_or.arb b/lib/l10n/intl_or.arb new file mode 100644 index 00000000..bc0e32ca --- /dev/null +++ b/lib/l10n/intl_or.arb @@ -0,0 +1,32 @@ +{ + "media": "ମିଡ଼ିଆ", + "@media": {}, + "general": "ସାଧାରଣ", + "@general": {}, + "theme": "ଥିମ୍", + "@theme": {}, + "system": "ସିଷ୍ଟମ୍", + "@system": {}, + "light": "ହାଲୁକା", + "@light": {}, + "about": "ଵିଷୟରେ", + "@about": {}, + "version": "ସଂସ୍କରଣ", + "@version": {}, + "no": "ନାହିଁ", + "@no": {}, + "yes": "ହଁ", + "@yes": {}, + "newTrans": "ନୂଆ", + "@newTrans": {}, + "ok": "ଠିକ୍ ଅଛି", + "@ok": {}, + "name": "ନାମ", + "@name": {}, + "search": "ସନ୍ଧାନ", + "@search": {}, + "country": "ଦେଶ", + "@country": {}, + "dark": "ଗାଢ଼", + "@dark": {} +} diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb new file mode 100644 index 00000000..67283ab9 --- /dev/null +++ b/lib/l10n/intl_pl.arb @@ -0,0 +1,494 @@ +{ + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Dzięki za zgłoszenie. Postaramy się to naprawić w mgnieniu oka!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_subscription_groups": "Nie można załadować grup subskrypcji", + "@unable_to_load_subscription_groups": {}, + "this_group_contains_no_subscriptions": "Ta grupa nie zawiera subskrypcji!", + "@this_group_contains_no_subscriptions": {}, + "unable_to_load_the_tweet": "Nie można załadować tweeta", + "@unable_to_load_the_tweet": {}, + "add_to_group": "Dodaj do grupy", + "@add_to_group": {}, + "unsubscribe": "Odsubskrybuj", + "@unsubscribe": {}, + "subscribe": "Subskrybuj", + "@subscribe": {}, + "reporting_an_error": "Zgłaszanie błędu", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Coś poszło nie tak we Quackerze, dlatego został wygenerowany raport o błędzie. Raport można wysłać do programistów Quackera, aby pomóc w rozwiązaniu problemu.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Czy chcesz włączyć automatyczne raportowanie błędów?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Twoje zgłoszenie zostanie wysłane do projektu Quacker na , a szczegóły dotyczące prywatności można znaleźć na:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Wyślij tylko raz", + "@send_once": {}, + "send_always": "Wysyłaj zawsze", + "@send_always": {}, + "don_not_send": "Nie wysyłaj", + "@don_not_send": {}, + "never_send": "Nigdy nie wysyłaj", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Błąd został zgłoszony do . Dziękujemy!", + "@an_error_was_reported_to__thank_you": {}, + "unable_to_load_the_next_page_of_tweets": "Nie można załadować następnej strony z tweetami", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_next_page_of_replies": "Nie można załadować następnej strony z odpowiedziami", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweets_for_the_feed": "Nie można załadować tweetów na stronę główną", + "@unable_to_load_the_tweets_for_the_feed": {}, + "unable_to_load_the_group_settings": "Nie można załadować ustawień grupy", + "@unable_to_load_the_group_settings": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Uwaga: Ze względu na ograniczenia Twittera nie wszystkie tweety mogą zostać uwzględnione", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Uwzględniaj odpowiedzi", + "@include_replies": {}, + "include_retweets": "Uwzględniaj tweety podane dalej", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Nie można znaleźć Twoich zapisanych tweetów.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Nie zapisałeś(-aś) jeszcze żadnych tweetów!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Nie można załadować wyników wyszukiwania.", + "@unable_to_load_the_search_results": {}, + "no_results": "Brak wyników", + "@no_results": {}, + "subscriptions": "Subskrypcje", + "@subscriptions": {}, + "trending": "Trendy", + "@trending": {}, + "saved": "Zapisane", + "@saved": {}, + "unable_to_load_the_next_page_of_follows": "Nie można załadować następnej strony z obserwowanymi", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_have_anyone_following_them": "Ten użytkownik nie jest obserwowany przez nikogo!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Nie można załadować tweetów", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Nie można załadować profilu", + "@unable_to_load_the_profile": {}, + "tweets_and_replies": "Tweety i odpowiedzi", + "@tweets_and_replies": {}, + "media": "Multimedia", + "@media": {}, + "export": "Eksportuj", + "@export": {}, + "data_exported_to_fullPath": "Dane wyeksportowano do {fullPath}", + "@data_exported_to_fullPath": {}, + "export_settings": "Wyeksportować ustawienia?", + "@export_settings": {}, + "export_tweets": "Wyeksportować tweety?", + "@export_tweets": {}, + "export_subscription_group_members": "Wyeksportować członków grup subskrypcji?", + "@export_subscription_group_members": {}, + "data_imported_successfully": "Dane zostały zaimportowane", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Wygląda na to, że już przywitałeś(-aś) się z tej wersji Quackera!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "Anuluj", + "@cancel": {}, + "thanks_for_helping_fritter": "Dzięki za pomoc Quackerowi! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Wygląda na to, że ostatnio już wysłałeś(-aś) ping 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Nie można wysłać ping. Kod statusu to {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "unable_to_send_the_ping_e_to_string": "Nie można wysłać ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Wyślij", + "@send": {}, + "say_hello_emoji": "Przywitaj się 👋", + "@say_hello_emoji": {}, + "say_hello": "Przywitaj się", + "@say_hello": {}, + "could_not_find_any_tweets_by_this_user": "Nie udało się znaleźć żadnych tweetów tego użytkownika!", + "@could_not_find_any_tweets_by_this_user": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Nie udało się znaleźć żadnych tweetów z ostatnich 7 dni!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Nie można załadować grupy", + "@unable_to_load_the_group": {}, + "feed": "Główna", + "@feed": {}, + "data_exported_to_fileName": "Dane wyeksportowano do {fileName}", + "@data_exported_to_fileName": {}, + "export_subscription_groups": "Wyeksportować grupy subskrypcji?", + "@export_subscription_groups": {}, + "followers": "Obserwujący", + "@followers": {}, + "unable_to_load_the_list_of_follows": "Nie można załadować listy obserwowanych", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_follow_anyone": "Ten użytkownik nikogo nie obserwuje!", + "@this_user_does_not_follow_anyone": {}, + "tweets": "Tweety", + "@tweets": {}, + "following": "Obserwowani", + "@following": {}, + "export_subscriptions": "Wyeksportować subskrypcje?", + "@export_subscriptions": {}, + "timed_out_trying_to_send_the_ping": "Przekroczono limit czasu podczas próby wysłania ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Oto dane, które zostaną wysłane. Zostaną wykorzystane tylko do określenia, które urządzenia i języki będą obsługiwane we Quackerze w przyszłości.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Wyślij nieidentyfikujący ping, aby dać mi znać, że używasz Quackera, i pomóc w przyszłym rozwoju", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Ogólne", + "@general": {}, + "default_tab": "Domyślna karta", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Karta wyświetlana po otwarciu aplikacji", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Rozmiar multimediów", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Oszczędzaj transfer dzięki mniejszym obrazom", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Wyłączone", + "@disabled": {}, + "thumbnail": "Miniatury", + "@thumbnail": {}, + "small": "Małe", + "@small": {}, + "medium": "Średnie", + "@medium": {}, + "large": "Duże", + "@large": {}, + "theme": "Motyw", + "@theme": {}, + "system": "Systemowy", + "@system": {}, + "light": "Jasny", + "@light": {}, + "dark": "Ciemny", + "@dark": {}, + "true_black": "Prawdziwa czerń?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Używaj prawdziwej czerni dla ciemnego motywu", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Dane", + "@data": {}, + "import": "Importuj", + "@import": {}, + "import_data_from_another_device": "Zaimportuj dane z innego urządzenia", + "@import_data_from_another_device": {}, + "legacy_android_import": "Importowanie ze starszej wersji Androida", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Plik nie istnieje. Upewnij się, że znajduje się w {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "prefiks", + "@prefix": {}, + "copied_version_to_clipboard": "Skopiowano wersję do schowka", + "@copied_version_to_clipboard": {}, + "contribute": "Wnieś swój wkład", + "@contribute": {}, + "help_make_fritter_even_better": "Pomóż uczynić Quacker jeszcze lepszym", + "@help_make_fritter_even_better": {}, + "report_a_bug": "Zgłoś błąd", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Daj znać programistom, jeśli coś się zepsuło", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Przekaż datek", + "@donate": {}, + "help_support_fritters_future": "Pomóż wesprzeć przyszłość Quackera", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Skopiowano adres do schowka", + "@copied_address_to_clipboard": {}, + "licenses": "Licencje", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Całe świetne oprogramowanie używane przez Quackera", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "Wydany na licencji MIT", + "@released_under_the_mit_license": {}, + "all": "Wszystkie", + "@all": {}, + "newTrans": "Nowa", + "@newTrans": {}, + "no": "Nie", + "@no": {}, + "yes": "Tak", + "@yes": {}, + "are_you_sure": "Czy na pewno?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Czy na pewno chcesz usunąć grupę subskrypcji {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "toggle_all": "Przełącz", + "@toggle_all": {}, + "delete": "Usuń", + "@delete": {}, + "ok": "OK", + "@ok": {}, + "name": "Nazwa", + "@name": {}, + "please_enter_a_name": "Wprowadź nazwę", + "@please_enter_a_name": {}, + "pick_a_color": "Wybierz kolor!", + "@pick_a_color": {}, + "import_subscriptions": "Importuj subskrypcje", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Aby zaimportować subskrypcje z istniejącego konta na Twitterze, wprowadź poniżej swoją nazwę użytkownika.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Pamiętaj, że metoda, której używa Quacker do importowania subskrypcji, jest mocno ograniczona przez Twittera, więc może się to nie udać, jeśli masz dużo obserwowanych kont.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Jeśli masz jakieś uwagi na temat tej funkcji, zgłoś je w", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Wybieranie poszczególnych kont do zaimportowania i przypisywanie grup są już zaplanowane na przyszłość!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "Wprowadź swoją nazwę użytkownika Twittera", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Profil musi być publiczny, inaczej import nie zadziała", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "imported_snapshot_data_users_so_far": "Do tej pory zaimportowano {snapshotData} użytkowników", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Ukończono z {snapshotData} użytkownikami", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Brak subskrypcji. Spróbuj wyszukać lub zaimportować trochę!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Importuj z Twittera", + "@import_from_twitter": {}, + "date_subscribed": "Data subskrypcji", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "Nie można załadować trendów dla {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "unable_to_find_the_available_trend_locations": "Nie można znaleźć dostępnych lokalizacji trendów.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "Kraj", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "Nie można przesłać strumieniowo preferencji lokalizacji trendu", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Trendy", + "@trends": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Zakończono {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Kończy się za {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Brak głosów} one{1 głos} two{2 głosy} few{{numFormatted} głosy} many{{numFormatted} głosów} other{{numFormatted} głosów}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Naciśnij, aby wyświetlić {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Nie można zapisać multimediów. Twitter zwrócił status {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "downloading_media": "Pobieranie multimediów…", + "@downloading_media": {}, + "successfully_saved_the_media": "Zapisano multimedia!", + "@successfully_saved_the_media": {}, + "unknown": "Nieznane", + "@unknown": {}, + "subtitles": "Napisy", + "@subtitles": {}, + "live": "NA ŻYWO", + "@live": {}, + "download": "Pobierz", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} podał(a) dalej tweeta {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "replying_to": "W odpowiedzi do", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Tweet nie zawierał żadnego tekstu. To nieoczekiwane!", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Ten tweet jest niedostępny. Prawdopodobnie został usunięty.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Przypięty tweet", + "@pinned_tweet": {}, + "thread": "Wątek", + "@thread": {}, + "unsave": "Usuń z zapisanych", + "@unsave": {}, + "save": "Zapisz", + "@save": {}, + "share_tweet_content": "Udostępnij treść tweeta", + "@share_tweet_content": {}, + "share_tweet_link": "Udostępnij link do tweeta", + "@share_tweet_link": {}, + "user_not_found": "Nie znaleziono użytkownika", + "@user_not_found": {}, + "account_suspended": "Konto zawieszone", + "@account_suspended": {}, + "back": "Wstecz", + "@back": {}, + "retry": "Ponów", + "@retry": {}, + "could_not_contact_twitter": "Nie udało się połączyć z Twitterem", + "@could_not_contact_twitter": {}, + "please_check_your_internet_connection_error_message": "Sprawdź swoje połączenie internetowe.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Przekroczono limit czasu", + "@timed_out": {}, + "oops_something_went_wrong": "Ups! Coś poszło nie tak 🥲", + "@oops_something_went_wrong": {}, + "report": "Zgłoś", + "@report": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Żadne dane nie zostały zwrócone, co nigdy nie powinno się zdarzyć. Jeśli to możliwe, zgłoś błąd!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "when_a_new_app_update_is_available": "Gdy dostępna jest nowa aktualizacja aplikacji", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Dostępna jest aktualizacja Quackera! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Naciśnij, aby pobrać {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Zaktualizuj do {releaseVersion} przez klienta F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker Blue", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Niebieski motyw oparty na kolorystyce Twittera", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Coś się popsuło we Quackerze.", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "Nie można uruchomić migracji bazy danych", + "@unable_to_run_the_database_migrations": {}, + "export_your_data": "Wyeksportuj swoje dane", + "@export_your_data": {}, + "logging": "Zbieranie danych", + "@logging": {}, + "whether_errors_should_be_reported_to_": "Zgłaszaj błędy do ", + "@whether_errors_should_be_reported_to_": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Upewnij się, że znajdują się tam dane, które chcesz zaimportować, a następnie naciśnij przycisk importu poniżej.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "enable_": "Włączyć ?", + "@enable_": {}, + "about": "O aplikacji", + "@about": {}, + "version": "Wersja", + "@version": {}, + "groups": "Grupy", + "@groups": {}, + "username": "Nazwa użytkownika", + "@username": {}, + "unable_to_import": "Nie można zaimportować", + "@unable_to_import": {}, + "date_created": "Data utworzenia", + "@date_created": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Nie zwrócono żadnych trendów. To nieoczekiwane! Jeśli to możliwe, zgłoś błąd.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "tweets_number": "{num, plural, zero{brak tweetów} one{1 tweet} two{2 tweety} few{{numFormatted} tweety} many{{numFormatted} tweetów} other{{numFormatted} tweetów}}", + "@tweets_number": {}, + "sorry_the_replied_tweet_could_not_be_found": "Przepraszamy, nie znaleziono tweeta z odpowiedzią!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "playback_speed": "Prędkość odtwarzania", + "@playback_speed": {}, + "private_profile": "Profil prywatny", + "@private_profile": {}, + "catastrophic_failure": "Katastrofalna awaria", + "@catastrophic_failure": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Ładowanie trwało zbyt długo. Sprawdź swoje połączenie sieciowe!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "updates": "Aktualizacje", + "@updates": {}, + "filters": "Filtry", + "@filters": {}, + "joined": "Dołączył(a) {date}", + "@joined": {}, + "select": "Wybierz", + "@select": {}, + "the_github_issue": "zgłoszeniu (#143) na GitHubie", + "@the_github_issue": {}, + "should_check_for_updates_description": "Sprawdzaj aktualizacje po uruchomieniu Quackera", + "@should_check_for_updates_description": {}, + "no_results_for": "Brak wyników dla:", + "@no_results_for": {}, + "pick_an_icon": "Wybierz ikonę!", + "@pick_an_icon": {}, + "search": "Szukaj", + "@search": {}, + "close": "Zamknij", + "@close": {}, + "should_check_for_updates_label": "Sprawdzaj aktualizacje", + "@should_check_for_updates_label": {}, + "share_tweet_content_and_link": "Udostępnij treść tweeta i link", + "@share_tweet_content_and_link": {}, + "download_handling": "Obsługa pobierania", + "@download_handling": {}, + "download_handling_type_ask": "Zawsze pytaj", + "@download_handling_type_ask": {}, + "download_handling_type_directory": "Zapisuj w katalogu", + "@download_handling_type_directory": {}, + "download_path": "Ścieżka pobierania", + "@download_path": {}, + "choose": "Wybierz", + "@choose": {}, + "not_set": "Nie ustawiono", + "@not_set": {}, + "download_handling_description": "Jak powinno działać pobieranie", + "@download_handling_description": {}, + "permission_not_granted": "Nie przyznano uprawnienia. Spróbuj ponownie po przyznaniu!", + "@permission_not_granted": {}, + "open_app_settings": "Otwórz ustawienia aplikacji", + "@open_app_settings": {}, + "forbidden": "Twitter mówi, że dostęp do tego jest zabroniony", + "@forbidden": {}, + "unable_to_refresh_the_subscriptions": "Nie można odświeżyć subskrypcji", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter twierdzi, że strona nie istnieje, ale to może nie być prawda", + "@page_not_found": {}, + "bad_guest_token": "Twitter unieważnił nasz token dostępu. Spróbuj ponownie otworzyć Quackera!", + "@bad_guest_token": {}, + "language": "Język", + "@language": {}, + "language_subtitle": "Wymaga ponownego uruchomienia", + "@language_subtitle": {}, + "download_media_no_url": "Nie można pobrać. Te multimedia mogą być dostępne tylko jako strumień, którego Quacker jeszcze nie obsługuje.", + "@download_media_no_url": {}, + "hide_sensitive_tweets": "Ukrywaj wrażliwe tweety", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Ukrywaj tweety oznaczone jako wrażliwe", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "yes_please": "Tak, proszę", + "@yes_please": {}, + "possibly_sensitive": "Potencjalnie wrażliwy", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Ten tweet zawiera potencjalnie wrażliwe treści. Czy chcesz go wyświetlić?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Ten profil może zawierać potencjalnie wrażliwe obrazy, język lub inne treści. Czy nadal chcesz go wyświetlić?", + "@possibly_sensitive_profile": {}, + "theme_mode": "Tryb motywu", + "@theme_mode": {}, + "disable_screenshots": "Wyłącz zrzuty ekranu", + "@disable_screenshots": {}, + "disable_screenshots_hint": "Zapobiegaj robieniu zrzutów ekranu. Może to nie działać na wszystkich urządzeniach", + "@disable_screenshots_hint": {}, + "unable_to_load_home_pages": "Nie można załadować Twoich kart", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Przywróć domyślne", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Musisz mieć co najmniej 2 karty", + "@you_must_have_at_least_2_home_screen_pages": {}, + "home": "Karty", + "@home": {}, + "activate_non_confirmation_bias_mode_label": "Aktywuj tryb bez efektu potwierdzenia", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Ukrywaj autorów tweetów. Unikaj efektu potwierdzenia opartego na autorytatywnych argumentach", + "@activate_non_confirmation_bias_mode_description": {}, + "confirm_close_fritter": "Czy na pewno chcesz zamknąć Quackera?", + "@confirm_close_fritter": {}, + "search_term": "Fraza wyszukiwania", + "@search_term": {}, + "group_name": "Grupa: {name}", + "@group_name": {}, + "only_public_subscriptions_can_be_imported": "Subskrypcje mogą być importowane tylko z profili publicznych.", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "Nieobsługiwany adres URL", + "@unsupported_url": {}, + "choose_pages": "Wybierz karty", + "@choose_pages": {}, + "missing_page": "Brakująca karta", + "@missing_page": {}, + "saved_tweet_too_large": "Ten zapisany tweet nie mógł zostać wyświetlony, ponieważ jest zbyt duży, aby go załadować. Zgłoś to programistom.", + "@saved_tweet_too_large": {}, + "two_home_pages_required": "Musisz mieć co najmniej 2 karty.", + "@two_home_pages_required": {}, + "mute_videos": "Wyciszaj wideo", + "@mute_videos": {}, + "mute_video_description": "Domyślnie wyciszaj wideo", + "@mute_video_description": {}, + "share_base_url": "Niestandardowy URL udostępniania", + "@share_base_url": {}, + "share_base_url_description": "Używaj niestandardowej podstawy adresu URL podczas udostępniania", + "@share_base_url_description": {}, + "finish": "Zakończ", + "@finish": {}, + "next": "Dalej", + "@next": {}, + "add_subscriptions": "Dodaj subskrypcje", + "@add_subscriptions": {}, + "functionality_unsupported": "Ta funkcja nie jest już obsługiwana przez Twittera!", + "@functionality_unsupported": {} +} diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb new file mode 100644 index 00000000..84cb16c1 --- /dev/null +++ b/lib/l10n/intl_pt.arb @@ -0,0 +1,490 @@ +{ + "this_group_contains_no_subscriptions": "Este grupo não contém inscrições!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Não foi possível encontrar nenhum tweet deste utilizador!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Não foi possível carregar a próxima página de respostas", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Não foi possível carregar o tweet", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Não foi possível carregar os grupos de inscrições", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Adicionar ao grupo", + "@add_to_group": {}, + "unable_to_load_the_profile": "Não foi possível carregar o perfil", + "@unable_to_load_the_profile": {}, + "export_settings": "Exportar configurações?", + "@export_settings": {}, + "true_black": "Preto Verdadeiro?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Use preto verdadeiro para o tema do modo escuro", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Dados", + "@data": {}, + "import": "Importar", + "@import": {}, + "import_data_from_another_device": "Importar dados de outro aparelho", + "@import_data_from_another_device": {}, + "legacy_android_import": "Importação do Android antigo", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "O ficheiro não existe. Certifique-se de que está localizado em {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "prefix": "prefixo", + "@prefix": {}, + "export_your_data": "Exportar os seus dados", + "@export_your_data": {}, + "logging": "Criando Log", + "@logging": {}, + "import_subscriptions": "Importar inscrições", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Para importar assinaturas de uma conta existente do Twitter, digite o seu nome de utilizador abaixo.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "country": "País", + "@country": {}, + "downloading_media": "Descarregando mídia...", + "@downloading_media": {}, + "playback_speed": "Velocidade de reprodução", + "@playback_speed": {}, + "subtitles": "Legendas", + "@subtitles": {}, + "live": "LIVE", + "@live": {}, + "download": "Descarregar", + "@download": {}, + "unsave": "Remover dos salvos", + "@unsave": {}, + "save": "Gravar", + "@save": {}, + "share_tweet_content": "Compartilhar conteúdo do tweet", + "@share_tweet_content": {}, + "back": "Voltar", + "@back": {}, + "should_check_for_updates_label": "Verificar se há atualizações", + "@should_check_for_updates_label": {}, + "should_check_for_updates_description": "Verificar se há atualizações quando o Quacker iniciar", + "@should_check_for_updates_description": {}, + "download_handling": "Manipulação de descargas", + "@download_handling": {}, + "download_handling_description": "Como a descarga deve funcionar", + "@download_handling_description": {}, + "download_handling_type_ask": "Sempre perguntar", + "@download_handling_type_ask": {}, + "open_app_settings": "Abrir as configurações da app", + "@open_app_settings": {}, + "choose": "Escolher", + "@choose": {}, + "not_set": "Não configurado", + "@not_set": {}, + "language": "Idioma", + "@language": {}, + "group_name": "Grupo: {name}", + "@group_name": {}, + "confirm_close_fritter": "Tem certeza de que deseja fechar o Quacker?", + "@confirm_close_fritter": {}, + "search_term": "Buscar termo", + "@search_term": {}, + "only_public_subscriptions_can_be_imported": "As inscrições só podem ser importadas de perfis públicos", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "URL não suportado", + "@unsupported_url": {}, + "saved_tweet_too_large": "Este tweet salvo não pôde ser exibido porque é muito grande para carregar. Por favor, denuncie aos programadores.", + "@saved_tweet_too_large": {}, + "missing_page": "Página ausente", + "@missing_page": {}, + "two_home_pages_required": "Precisa ter pelo menos 2 páginas iniciais.", + "@two_home_pages_required": {}, + "share_base_url_description": "Use um URL base personalizado ao compartilhar", + "@share_base_url_description": {}, + "no_results": "Nenhum resultado", + "@no_results": {}, + "select": "Selecionar", + "@select": {}, + "unsubscribe": "Cancelar inscrição", + "@unsubscribe": {}, + "subscribe": "Inscrever-se", + "@subscribe": {}, + "reporting_an_error": "Relatar um erro", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Algo deu errado no Quacker e um relatório de erro foi gerado. O relatório pode ser enviado aos programadores do Quacker para ajudar a corrigir o problema.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Deseja ativar o relatório automático de erros?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "O seu relatório será enviado ao projeto do Quacker e os detalhes de privacidade encontram-se em:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Enviar uma vez", + "@send_once": {}, + "send_always": "Enviar sempre", + "@send_always": {}, + "don_not_send": "Não enviar", + "@don_not_send": {}, + "never_send": "Nunca enviar", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Um erro foi relatado ao . Obrigada!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Obrigado por relatar. Vamos tentar corrigi-lo o mais rápido possível!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Não foi possível carregar a próxima página de tweets", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Não foi possível carregar os tweets para o feed", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Não foi possível encontrar nenhum tweet dos últimos 7 dias!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Não foi possível carregar o grupo", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Não foi possível carregar as configurações do grupo", + "@unable_to_load_the_group_settings": {}, + "filters": "Filtros", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Observação: devido a uma limitação do Twitter, nem todos os tweets podem ser incluídos", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Incluir respostas", + "@include_replies": {}, + "include_retweets": "Incluir retweets", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Não foi possível encontrar os seus tweets gravados.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Ainda não salvou nenhum tweet!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Não foi possível carregar os resultados da pesquisa.", + "@unable_to_load_the_search_results": {}, + "feed": "Feed", + "@feed": {}, + "subscriptions": "Inscrições", + "@subscriptions": {}, + "trending": "Tendência", + "@trending": {}, + "saved": "Salvo", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Não foi possível carregar a lista de seguidores", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "Não foi possível carregar a próxima página de seguidores", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "Este utilizador não segue ninguém!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Este utilizador não tem nenhum seguidor!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Não foi possível carregar os tweets", + "@unable_to_load_the_tweets": {}, + "tweets": "Tweets", + "@tweets": {}, + "tweets_and_replies": "Tweets e Respostas", + "@tweets_and_replies": {}, + "media": "Mídia", + "@media": {}, + "following": "Seguindo", + "@following": {}, + "followers": "Seguidores", + "@followers": {}, + "joined": "Ingressou em {date}", + "@joined": {}, + "export": "Exportar", + "@export": {}, + "data_exported_to_fullPath": "Dados exportados para {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "Dados exportados para {fileName}", + "@data_exported_to_fileName": {}, + "export_subscriptions": "Exportar inscrições?", + "@export_subscriptions": {}, + "export_subscription_groups": "Exportar grupos de inscrições?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Exportar membros do grupo de inscrições?", + "@export_subscription_group_members": {}, + "export_tweets": "Exportar tweets?", + "@export_tweets": {}, + "data_imported_successfully": "Dados importados com sucesso", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Parece que já disse olá desta versão do Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "cancel": "Cancelar", + "@cancel": {}, + "thanks_for_helping_fritter": "Obrigado por ajudar o Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Parece que já enviou um ping recentemente 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Não foi possível enviar o ping. O código de estado era {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Tempo esgotado tentando enviar o ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Não foi possível enviar o ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Enviar", + "@send": {}, + "say_hello_emoji": "Diga Olá 👋", + "@say_hello_emoji": {}, + "say_hello": "Diga Olá", + "@say_hello": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Aqui estão os dados que serão enviados. Ele será usado apenas para determinar quais aparelhos e idiomas serão suportados no Quacker no futuro.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Envie um ping não identificável para me informar que usa o Quacker e para ajudar no desenvolvimento futuro", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Geral", + "@general": {}, + "default_tab": "Guia padrão", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Qual guia é mostrada quando a app é aberta", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Tamanho da mídia", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Economize largura de banda com imagens menores", + "@save_bandwidth_using_smaller_images": {}, + "small": "Pequena", + "@small": {}, + "medium": "Média", + "@medium": {}, + "large": "Grande", + "@large": {}, + "theme": "Tema", + "@theme": {}, + "theme_mode": "Modo Tema", + "@theme_mode": {}, + "system": "Sistema", + "@system": {}, + "light": "Claro", + "@light": {}, + "dark": "Escuro", + "@dark": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Certifique-se de que os dados que deseja importar estão localizados lá e pressione o botão de importação abaixo.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "enable_": "Ativar ?", + "@enable_": {}, + "activate_non_confirmation_bias_mode_label": "Ativar modo de não-confirmação de viés", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Esconda autores de tweets. Evitar confirmação de viés baseado em argumentos autoritários.", + "@activate_non_confirmation_bias_mode_description": {}, + "whether_errors_should_be_reported_to_": "Se os erros devem ser relatados ao ", + "@whether_errors_should_be_reported_to_": {}, + "about": "Sobre", + "@about": {}, + "version": "Versão", + "@version": {}, + "disabled": "Desativado", + "@disabled": {}, + "thumbnail": "Miniatura", + "@thumbnail": {}, + "copied_version_to_clipboard": "Versão copiada para a área de transferência", + "@copied_version_to_clipboard": {}, + "contribute": "Contribuir", + "@contribute": {}, + "donate": "Doar", + "@donate": {}, + "help_support_fritters_future": "Ajude a apoiar o futuro do Quacker", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "Endereço copiado para a área de transferência", + "@copied_address_to_clipboard": {}, + "licenses": "Licenças", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Todo o ótimo software usado por Quacker", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "Lançado sob a licença MIT", + "@released_under_the_mit_license": {}, + "all": "Tudo", + "@all": {}, + "newTrans": "Novo", + "@newTrans": {}, + "no": "Não", + "@no": {}, + "yes": "Sim", + "@yes": {}, + "yes_please": "Sim, por favor", + "@yes_please": {}, + "help_make_fritter_even_better": "Ajude a deixar o Quacker ainda melhor", + "@help_make_fritter_even_better": {}, + "report_a_bug": "Reportar um erro", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Deixe os programadores saberem se algo está quebrado", + "@let_the_developers_know_if_something_is_broken": {}, + "are_you_sure": "Tem certeza?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Tem certeza de que deseja apagar o grupo de inscrições {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "toggle_all": "Alternar Tudo", + "@toggle_all": {}, + "delete": "Apagar", + "@delete": {}, + "ok": "OK", + "@ok": {}, + "name": "Nome", + "@name": {}, + "please_enter_a_name": "Por favor, digite um nome", + "@please_enter_a_name": {}, + "pick_a_color": "Escolha uma cor!", + "@pick_a_color": {}, + "enter_your_twitter_username": "Digite o seu nome de utilizador do Twitter", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "O seu perfil deve ser público, caso contrário a importação não funcionará", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "Nome de utilizador", + "@username": {}, + "unable_to_import": "Não foi possível importar", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} utilizadores importados até agora", + "@imported_snapshot_data_users_so_far": {}, + "pick_an_icon": "Escolher um ícone!", + "@pick_an_icon": {}, + "search": "Buscar", + "@search": {}, + "no_results_for": "Sem resultados para:", + "@no_results_for": {}, + "close": "Fechar", + "@close": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Observe que o método que o Quacker usa para importar inscrições é fortemente limitado pelo Twitter, portanto, isso pode falhar se estiver a seguir muitas contas.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Se tiver algum comentário sobre esse recurso, deixe-o em", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "the_github_issue": "o problema do GitHub (#143)", + "@the_github_issue": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "A seleção de contas individuais para importação e a atribuição de grupos já estão planejadas para o futuro!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "finished_with_snapshotData_users": "Terminou com {snapshotData} utilizadores", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Nenhuma inscrição. Tente pesquisar ou importar alguns!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Importar do Twitter", + "@import_from_twitter": {}, + "unable_to_refresh_the_subscriptions": "Incapaz de atualizar as inscrições", + "@unable_to_refresh_the_subscriptions": {}, + "groups": "Grupos", + "@groups": {}, + "date_created": "Data de Criação", + "@date_created": {}, + "date_subscribed": "Data de Inscrição", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "Não foi possível carregar as tendências para {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Não houve tendências devolvidas. Isso é inesperado! Por favor, reporte como um bug, se possível.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "Não foi possível encontrar os locais de tendências disponíveis.", + "@unable_to_find_the_available_trend_locations": {}, + "unable_to_stream_the_trend_location_preference": "Não é possível transmitir a preferência de localização da tendência", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Tendências", + "@trends": {}, + "tweets_number": "{num, plural, zero{nenhum tweet} one{um tweet} two{dois tweets} few{{numFormatted} tweets} many{{numFormatted} tweet} other{{numFormatted} tweets}}", + "@tweets_number": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Finalizado {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Termina {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Nenhum voto} one{Um voto} two{Dois votos} few{{numFormatted} votos} many{{numFormatted} voto} other{{numFormatted} votos}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "Toque para mostrar {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Não foi possível gravar a mídia. O Twitter retornou um estado de {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "download_media_no_url": "Incapaz de descarregar. Esta mídia pode estar disponível apenas como uma transmissão, que Quacker ainda não pode descarregar.", + "@download_media_no_url": {}, + "successfully_saved_the_media": "Salvou a mídia!", + "@successfully_saved_the_media": {}, + "unknown": "Desconhecido", + "@unknown": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} retweetado {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "sorry_the_replied_tweet_could_not_be_found": "Desculpe, o tweet respondido não foi encontrado!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "Respondendo a", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "O tweet não continha nenhum texto. Isso é inesperado", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Este tweet está indisponível. Provavelmente foi deletado.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Tweet fixado", + "@pinned_tweet": {}, + "thread": "Thread", + "@thread": {}, + "share_tweet_link": "Compartilhar ligação do tweet", + "@share_tweet_link": {}, + "share_tweet_content_and_link": "Compartilhar conteúdo e ligação do tweet", + "@share_tweet_content_and_link": {}, + "private_profile": "Perfil privado", + "@private_profile": {}, + "page_not_found": "Twitter diz que a página não existe, mas isso pode não ser verdade", + "@page_not_found": {}, + "forbidden": "Twitter diz que o acesso a isso é proibido", + "@forbidden": {}, + "bad_guest_token": "Twitter invalidou nosso token de acesso. Por favor tente reabrir o Quacker!", + "@bad_guest_token": {}, + "user_not_found": "Utilizador não encontrado", + "@user_not_found": {}, + "account_suspended": "Conta suspensa", + "@account_suspended": {}, + "catastrophic_failure": "Falha catastrófica", + "@catastrophic_failure": {}, + "next": "Próximo", + "@next": {}, + "finish": "Terminar", + "@finish": {}, + "retry": "Tentar novamente", + "@retry": {}, + "could_not_contact_twitter": "Não foi possível entrar em contato com o Twitter", + "@could_not_contact_twitter": {}, + "please_check_your_internet_connection_error_message": "Por favor, verifique a sua conexão à internet.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "timed_out": "Tempo esgotado", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Isso demorou muito para carregar. Verifique a sua conexão de rede!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "Ops! Algo deu errado 🥲", + "@oops_something_went_wrong": {}, + "report": "Reportar", + "@report": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Nenhum dado foi retornado, o que nunca deveria acontecer. Por favor, reporte um bug, se possível!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Atualizações", + "@updates": {}, + "when_a_new_app_update_is_available": "Quando uma nova atualização da app está disponível", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Uma atualização para o Quacker está disponível! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Toque para descarregar {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Atualizar para {releaseVersion} através do seu cliente F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Tema azul baseado no esquema de cores do Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Algo quebrou no Quacker.", + "@something_broke_in_fritter": {}, + "fritter_blue": "Quacker azul", + "@fritter_blue": {}, + "unable_to_run_the_database_migrations": "Não é possível executar as migrações de banco de dados", + "@unable_to_run_the_database_migrations": {}, + "download_handling_type_directory": "Gravar no diretório", + "@download_handling_type_directory": {}, + "download_path": "Caminho da descarga", + "@download_path": {}, + "permission_not_granted": "Permissão não concedida. Por favor, tente novamente após a concessão!", + "@permission_not_granted": {}, + "language_subtitle": "Requer um reinício", + "@language_subtitle": {}, + "hide_sensitive_tweets": "Ocultar tweets sensíveis", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Se os tweets marcados como sensíveis devem ser ocultados", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "disable_screenshots": "Desativar capturas de ecrã", + "@disable_screenshots": {}, + "disable_screenshots_hint": "Previne que sejam feitas capturas de ecrã. Isso pode não funcionar em todos os aparelhos.", + "@disable_screenshots_hint": {}, + "possibly_sensitive": "Potencialmente sensível", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Este tweet contém conteúdo potencialmente sensível. Gostaria de vê-lo?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Este perfil pode conter imagens, idiomas, ou outros conteúdos potencialmente sensíveis. Ainda quer vê-lo?", + "@possibly_sensitive_profile": {}, + "home": "Início", + "@home": {}, + "unable_to_load_home_pages": "Não foi possível carregar as suas páginas iniciais", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Redefinir páginas para o padrão", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Deve ter pelo menos 2 páginas de ecrã inicial", + "@you_must_have_at_least_2_home_screen_pages": {}, + "choose_pages": "Escolha as páginas", + "@choose_pages": {}, + "mute_videos": "Silenciar vídeos", + "@mute_videos": {}, + "mute_video_description": "Se os vídeos devem ser silenciados por padrão", + "@mute_video_description": {}, + "share_base_url": "URL de compartilhamento personalizado", + "@share_base_url": {} +} diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb new file mode 100644 index 00000000..7691ebb5 --- /dev/null +++ b/lib/l10n/intl_pt_BR.arb @@ -0,0 +1,494 @@ +{ + "include_replies": "Incluir respostas", + "@include_replies": {}, + "you_have_not_saved_any_tweets_yet": "Você ainda não salvou nenhum tweet!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_list_of_follows": "Não foi possível carregar a lista de seguidores", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_follow_anyone": "Este usuário não segue ninguém!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Este usuário não tem nenhum seguidor!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Não foi possível carregar os tweets", + "@unable_to_load_the_tweets": {}, + "tweets_and_replies": "Tweets e Respostas", + "@tweets_and_replies": {}, + "media": "Mídia", + "@media": {}, + "tweets": "Tweets", + "@tweets": {}, + "followers": "Seguidores", + "@followers": {}, + "joined": "Ingressou em {date}", + "@joined": {}, + "export": "Exportar", + "@export": {}, + "data_exported_to_fullPath": "Dados exportados para {fullPath}", + "@data_exported_to_fullPath": {}, + "export_settings": "Exportar configurações?", + "@export_settings": {}, + "export_subscriptions": "Exportar inscrições?", + "@export_subscriptions": {}, + "export_subscription_groups": "Exportar grupos de inscrições?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Exportar membros do grupo de inscrições?", + "@export_subscription_group_members": {}, + "export_tweets": "Exportar tweets?", + "@export_tweets": {}, + "data_imported_successfully": "Dados importados com sucesso", + "@data_imported_successfully": {}, + "cancel": "Cancelar", + "@cancel": {}, + "thanks_for_helping_fritter": "Obrigado por ajudar o Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Não foi possível enviar o ping. O código de estado era {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Tempo esgotado tentando enviar o ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Não foi possível enviar o ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Enviar", + "@send": {}, + "say_hello_emoji": "Diga Olá 👋", + "@say_hello_emoji": {}, + "say_hello": "Diga Olá", + "@say_hello": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Envie um ping não identificável para me informar que você está usando o Quacker e para ajudar no desenvolvimento futuro", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Geral", + "@general": {}, + "media_size": "Tamanho da mídia", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Economize largura de banda com imagens menores", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Desativado", + "@disabled": {}, + "thumbnail": "Miniatura", + "@thumbnail": {}, + "small": "Pequena", + "@small": {}, + "medium": "Média", + "@medium": {}, + "large": "Grande", + "@large": {}, + "theme": "Tema", + "@theme": {}, + "system": "Sistema", + "@system": {}, + "true_black": "Preto Verdadeiro?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Use preto verdadeiro para o tema do modo escuro", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Dados", + "@data": {}, + "import": "Importar", + "@import": {}, + "import_data_from_another_device": "Importar dados de outro dispositivo", + "@import_data_from_another_device": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "O arquivo não existe. Certifique-se de que está localizado em {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Certifique-se de que os dados que deseja importar estão localizados lá e pressione o botão de importação abaixo.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Exportar seus dados", + "@export_your_data": {}, + "logging": "Criando Log", + "@logging": {}, + "enable_": "Ativar ?", + "@enable_": {}, + "whether_errors_should_be_reported_to_": "Se os erros devem ser relatados ao ", + "@whether_errors_should_be_reported_to_": {}, + "about": "Sobre", + "@about": {}, + "version": "Versão", + "@version": {}, + "copied_version_to_clipboard": "Versão copiada para a área de transferência", + "@copied_version_to_clipboard": {}, + "contribute": "Contribuir", + "@contribute": {}, + "report_a_bug": "Reportar um erro", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Deixe os desenvolvedores saberem se algo está quebrado", + "@let_the_developers_know_if_something_is_broken": {}, + "copied_address_to_clipboard": "Endereço copiado para a área de transferência", + "@copied_address_to_clipboard": {}, + "all_the_great_software_used_by_fritter": "Todo o ótimo software usado por Quacker", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "Quacker", + "@fritter": {}, + "feed": "Feed", + "@feed": {}, + "unable_to_find_your_saved_tweets": "Não foi possível encontrar seus tweets salvos.", + "@unable_to_find_your_saved_tweets": {}, + "unable_to_load_the_profile": "Não foi possível carregar o perfil", + "@unable_to_load_the_profile": {}, + "unable_to_load_the_search_results": "Não foi possível carregar os resultados da pesquisa.", + "@unable_to_load_the_search_results": {}, + "include_retweets": "Incluir retweets", + "@include_retweets": {}, + "saved": "Salvo", + "@saved": {}, + "data_exported_to_fileName": "Dados exportados para {fileName}", + "@data_exported_to_fileName": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Parece que você já disse olá desta versão do Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Aqui estão os dados que serão enviados. Ele será usado apenas para determinar quais dispositivos e idiomas serão suportados no Quacker no futuro.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "filters": "Filtros", + "@filters": {}, + "unable_to_load_the_next_page_of_follows": "Não foi possível carregar a próxima página de seguidores", + "@unable_to_load_the_next_page_of_follows": {}, + "following": "Seguindo", + "@following": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Parece que você já enviou um ping recentemente 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Observação: devido a uma limitação do Twitter, nem todos os tweets podem ser incluídos", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "no_results": "Nenhum resultado", + "@no_results": {}, + "trending": "Tendência", + "@trending": {}, + "subscriptions": "Inscrições", + "@subscriptions": {}, + "which_tab_is_shown_when_the_app_opens": "Qual aba é mostrada quando o aplicativo é aberto", + "@which_tab_is_shown_when_the_app_opens": {}, + "legacy_android_import": "Importação do Android antigo", + "@legacy_android_import": {}, + "prefix": "prefixo", + "@prefix": {}, + "donate": "Doar", + "@donate": {}, + "default_tab": "Aba padrão", + "@default_tab": {}, + "light": "Claro", + "@light": {}, + "dark": "Escuro", + "@dark": {}, + "help_make_fritter_even_better": "Ajude a deixar o Quacker ainda melhor", + "@help_make_fritter_even_better": {}, + "help_support_fritters_future": "Ajude a apoiar o futuro do Quacker", + "@help_support_fritters_future": {}, + "this_group_contains_no_subscriptions": "Este grupo não contém inscrições!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Não foi possível encontrar nenhum tweet deste usuário!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Não foi possível carregar a próxima página de respostas", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Não foi possível carregar o tweet", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Não foi possível carregar os grupos de inscrições", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Adicionar ao grupo", + "@add_to_group": {}, + "unsubscribe": "Cancelar inscrição", + "@unsubscribe": {}, + "subscribe": "Inscrever-se", + "@subscribe": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Algo deu errado no Quacker e um relatório de erro foi gerado. O relatório pode ser enviado aos desenvolvedores do Quacker para ajudar a corrigir o problema.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "reporting_an_error": "Relatar um erro", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "Deseja ativar o relatório automático de erros?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Seu relatório será enviado para o projeto do Quacker, e os detalhes de privacidade podem ser encontrados em:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Enviar uma vez", + "@send_once": {}, + "send_always": "Enviar sempre", + "@send_always": {}, + "don_not_send": "Não enviar", + "@don_not_send": {}, + "never_send": "Nunca enviar", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Um erro foi relatado ao . Obrigada!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Obrigado por relatar. Vamos tentar corrigi-lo o mais rápido possível!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Não foi possível carregar a próxima página de tweets", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Não foi possível carregar os tweets para o feed", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Não foi possível encontrar nenhum tweet dos últimos 7 dias!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Não foi possível carregar o grupo", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Não foi possível carregar as configurações do grupo", + "@unable_to_load_the_group_settings": {}, + "licenses": "Licenças", + "@licenses": {}, + "released_under_the_mit_license": "Lançado sob a licença MIT", + "@released_under_the_mit_license": {}, + "all": "Tudo", + "@all": {}, + "no": "Não", + "@no": {}, + "are_you_sure": "Tem certeza?", + "@are_you_sure": {}, + "toggle_all": "Alternar Tudo", + "@toggle_all": {}, + "delete": "Excluir", + "@delete": {}, + "ok": "OK", + "@ok": {}, + "name": "Nome", + "@name": {}, + "enter_your_twitter_username": "Digite seu nome de usuário do Twitter", + "@enter_your_twitter_username": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} usuários importados até agora", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Terminou com {snapshotData} usuários", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Nenhuma inscrição. Tente pesquisar ou importar alguns!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Importar do Twitter", + "@import_from_twitter": {}, + "groups": "Grupos", + "@groups": {}, + "date_subscribed": "Data de Inscrição", + "@date_subscribed": {}, + "date_created": "Data de Criação", + "@date_created": {}, + "unable_to_load_the_trends_for_widget_place_name": "Não foi possível carregar as tendências para {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "unable_to_find_the_available_trend_locations": "Não foi possível encontrar os locais de tendências disponíveis.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "País", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "Não é possível transmitir a preferência de localização da tendência", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Tendências", + "@trends": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Termina {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "tap_to_show_getMediaType_item_type": "Toque para mostrar {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "downloading_media": "Baixando mídia...", + "@downloading_media": {}, + "successfully_saved_the_media": "Salvou a mídia!", + "@successfully_saved_the_media": {}, + "unknown": "Desconhecido", + "@unknown": {}, + "playback_speed": "Velocidade de reprodução", + "@playback_speed": {}, + "subtitles": "Legendas", + "@subtitles": {}, + "live": "LIVE", + "@live": {}, + "download": "Download", + "@download": {}, + "sorry_the_replied_tweet_could_not_be_found": "Desculpe, o tweet respondido não foi encontrado!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "Respondendo a", + "@replying_to": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "O tweet não continha nenhum texto. Isso é inesperado", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Este tweet está indisponível. Provavelmente foi deletado.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Tweet fixado", + "@pinned_tweet": {}, + "thread": "Thread", + "@thread": {}, + "unsave": "Remover dos salvos", + "@unsave": {}, + "save": "Salvar", + "@save": {}, + "share_tweet_content": "Compartilhar conteúdo do tweet", + "@share_tweet_content": {}, + "share_tweet_link": "Compartilhar link do tweet", + "@share_tweet_link": {}, + "private_profile": "Perfil privado", + "@private_profile": {}, + "user_not_found": "Usuário não encontrado", + "@user_not_found": {}, + "catastrophic_failure": "Falha catastrófica", + "@catastrophic_failure": {}, + "back": "Voltar", + "@back": {}, + "retry": "Tentar novamente", + "@retry": {}, + "timed_out": "Tempo esgotado", + "@timed_out": {}, + "oops_something_went_wrong": "Ops! Algo deu errado 🥲", + "@oops_something_went_wrong": {}, + "updates": "Atualizações", + "@updates": {}, + "an_update_for_fritter_is_available": "Uma atualização para o Quacker está disponível! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Toque para baixar {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Atualizar para {releaseVersion} através do seu cliente F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker azul", + "@fritter_blue": {}, + "unable_to_run_the_database_migrations": "Não é possível executar as migrações de banco de dados", + "@unable_to_run_the_database_migrations": {}, + "import_subscriptions": "Importar inscrições", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Para importar assinaturas de uma conta existente do Twitter, digite seu nome de usuário abaixo.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Observe que o método que o Quacker usa para importar inscrições é fortemente limitado pelo Twitter, portanto, isso pode falhar se você estiver seguindo muitas contas.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "A seleção de contas individuais para importação e a atribuição de grupos já estão planejadas para o futuro!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "yes": "Sim", + "@yes": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Tem certeza de que deseja excluir o grupo de inscrições {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "pick_a_color": "Escolha uma cor!", + "@pick_a_color": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Se você tiver algum comentário sobre esse recurso, deixe-o em", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "username": "Nome de usuário", + "@username": {}, + "newTrans": "Novo", + "@newTrans": {}, + "please_enter_a_name": "Por favor, digite um nome", + "@please_enter_a_name": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Seu perfil deve ser público, caso contrário a importação não funcionará", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "unable_to_import": "Não foi possível importar", + "@unable_to_import": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Não houve tendências devolvidas. Isso é inesperado! Por favor, reporte como um bug, se possível.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Tema azul baseado no esquema de cores do Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "tweets_number": "{num, plural, zero{nenhum tweet} one{um tweet} two{dois tweets} few{{numFormatted} tweets} many{{numFormatted} tweet} other{{numFormatted} tweets}}", + "@tweets_number": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Finalizado {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "report": "Reportar", + "@report": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Nenhum voto} one{Um voto} two{Dois votos} few{{numFormatted} votos} many{{numFormatted} voto} other{{numFormatted} votos}}", + "@numberFormat_format_total_votes": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Não foi possível salvar a mídia. O Twitter retornou um status de {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} retweetado {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "when_a_new_app_update_is_available": "Quando uma nova atualização do aplicativo está disponível", + "@when_a_new_app_update_is_available": {}, + "account_suspended": "Conta suspensa", + "@account_suspended": {}, + "please_check_your_internet_connection_error_message": "Por favor, verifique sua conexão à internet.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "could_not_contact_twitter": "Não foi possível entrar em contato com o Twitter", + "@could_not_contact_twitter": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Isso demorou muito para carregar. Verifique sua conexão de rede!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Nenhum dado foi retornado, o que nunca deveria acontecer. Por favor, reporte um bug, se possível!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "something_broke_in_fritter": "Algo quebrou no Quacker.", + "@something_broke_in_fritter": {}, + "search": "Buscar", + "@search": {}, + "close": "Fechar", + "@close": {}, + "the_github_issue": "o problema do GitHub (#143)", + "@the_github_issue": {}, + "select": "Selecionar", + "@select": {}, + "pick_an_icon": "Escolher um ícone!", + "@pick_an_icon": {}, + "should_check_for_updates_label": "Verificar se há atualizações", + "@should_check_for_updates_label": {}, + "no_results_for": "Sem resultados para:", + "@no_results_for": {}, + "should_check_for_updates_description": "Verificar se há atualizações quando o Quacker iniciar", + "@should_check_for_updates_description": {}, + "download_handling_type_ask": "Sempre perguntar", + "@download_handling_type_ask": {}, + "download_handling_type_directory": "Salvar no diretório", + "@download_handling_type_directory": {}, + "download_path": "Caminho do download", + "@download_path": {}, + "permission_not_granted": "Permissão não concedida. Por favor, tente novamente após a concessão!", + "@permission_not_granted": {}, + "open_app_settings": "Abrir as configurações do aplicativo", + "@open_app_settings": {}, + "choose": "Escolher", + "@choose": {}, + "not_set": "Não configurado", + "@not_set": {}, + "share_tweet_content_and_link": "Compartilhar conteúdo e link do tweet", + "@share_tweet_content_and_link": {}, + "download_handling": "Manipulação de downloads", + "@download_handling": {}, + "download_handling_description": "Como o download deve funcionar", + "@download_handling_description": {}, + "bad_guest_token": "Twitter invalidou nosso token de acesso. Por favor tente reabrir o Quacker!", + "@bad_guest_token": {}, + "forbidden": "Twitter diz que o acesso a isso é proibido", + "@forbidden": {}, + "hide_sensitive_tweets": "Ocultar tweets sensíveis", + "@hide_sensitive_tweets": {}, + "yes_please": "Sim, por favor", + "@yes_please": {}, + "theme_mode": "Modo Tema", + "@theme_mode": {}, + "unable_to_refresh_the_subscriptions": "Incapaz de atualizar as inscrições", + "@unable_to_refresh_the_subscriptions": {}, + "disable_screenshots": "Desabilitar capturas de tela", + "@disable_screenshots": {}, + "download_media_no_url": "Incapaz de baixar. Esta mídia pode estar disponível apenas como uma transmissão, que Quacker ainda não pode baixar.", + "@download_media_no_url": {}, + "language": "Idioma", + "@language": {}, + "language_subtitle": "Requer um reinício", + "@language_subtitle": {}, + "disable_screenshots_hint": "Previne que sejam feitas capturas de tela. Isso pode não funcionar em todos os dispositivos.", + "@disable_screenshots_hint": {}, + "possibly_sensitive": "Potencialmente sensível", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "Este tweet contém conteúdo potencialmente sensível. Você gostaria de vê-lo?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "Este perfil pode conter imagens, idiomas, ou outros conteúdos potencialmente sensíveis. Você ainda quer vê-lo?", + "@possibly_sensitive_profile": {}, + "activate_non_confirmation_bias_mode_label": "Ativar modo de não-confirmação de viés", + "@activate_non_confirmation_bias_mode_label": {}, + "page_not_found": "Twitter diz que a página não existe, mas isso pode não ser verdade", + "@page_not_found": {}, + "activate_non_confirmation_bias_mode_description": "Esconda autores de tweets. Evitar confirmação de viés baseado em argumentos autoritários.", + "@activate_non_confirmation_bias_mode_description": {}, + "confirm_close_fritter": "Tem certeza de que deseja fechar o Quacker?", + "@confirm_close_fritter": {}, + "search_term": "Buscar termo", + "@search_term": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Se os tweets marcados como sensíveis devem ser ocultados", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "group_name": "Grupo: {name}", + "@group_name": {}, + "home": "Início", + "@home": {}, + "unable_to_load_home_pages": "Não foi possível carregar suas páginas iniciais", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Redefinir páginas para o padrão", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Você deve ter pelo menos 2 páginas de tela inicial", + "@you_must_have_at_least_2_home_screen_pages": {}, + "only_public_subscriptions_can_be_imported": "As inscrições só podem ser importadas de perfis públicos", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "URL não suportado", + "@unsupported_url": {}, + "saved_tweet_too_large": "Este tweet salvo não pôde ser exibido porque é muito grande para carregar. Por favor, denuncie aos desenvolvedores.", + "@saved_tweet_too_large": {}, + "missing_page": "Página ausente", + "@missing_page": {}, + "two_home_pages_required": "Você precisa ter pelo menos 2 páginas iniciais.", + "@two_home_pages_required": {}, + "choose_pages": "Escolha as páginas", + "@choose_pages": {}, + "mute_videos": "Silenciar vídeos", + "@mute_videos": {}, + "mute_video_description": "Se os vídeos devem ser silenciados por padrão", + "@mute_video_description": {}, + "share_base_url": "URL de compartilhamento personalizado", + "@share_base_url": {}, + "share_base_url_description": "Use um URL base personalizado ao compartilhar", + "@share_base_url_description": {}, + "next": "Próximo", + "@next": {}, + "finish": "Terminar", + "@finish": {}, + "add_subscriptions": "Adicionar inscrições", + "@add_subscriptions": {}, + "functionality_unsupported": "Esta funcionalidade não é mais suportada pelo Twitter!", + "@functionality_unsupported": {} +} diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb new file mode 100644 index 00000000..d3c8ce80 --- /dev/null +++ b/lib/l10n/intl_ro.arb @@ -0,0 +1,48 @@ +{ + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Ceva pur și simplu nu a mers bine în Quacker și a fost generat un raport de eroare. Raportul poate fi trimis dezvoltatorilor Quacker pentru a ajuta la remedierea problemei.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "this_group_contains_no_subscriptions": "Acest grup nu conține abonamente!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Nu a putut găsi orice tweets de către acest utilizator!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "Nu se poate încărca următoarea pagină de răspunsuri", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Nu se poate încărca tweet-ul", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Nu se pot încărca grupurile de abonament", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Adăugați la grup", + "@add_to_group": {}, + "select": "Selectați", + "@select": {}, + "unsubscribe": "Dezabonează-te", + "@unsubscribe": {}, + "subscribe": "Abonează-te", + "@subscribe": {}, + "reporting_an_error": "Raportarea unei erori", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "Doriți să activați raportarea automată a erorilor?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Raportul dvs. va fi trimis către proiectul Quacker's , iar detaliile de confidențialitate pot fi găsite la:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Trimite o dată", + "@send_once": {}, + "send_always": "Trimite mereu", + "@send_always": {}, + "don_not_send": "Nu trimite", + "@don_not_send": {}, + "never_send": "Nu trimite niciodată", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "O eroare a fost raportată la . Mulțumesc!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Mulțumesc pentru raportare. Vom încerca să o reparăm în cel mai scurt timp!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Nu se poate încărca următoarea pagină de tweet-uri", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Nu se pot încărca tweet-urile pentru feed", + "@unable_to_load_the_tweets_for_the_feed": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Nu am putut găsi niciun tweet din ultimele 7 zile!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Nu se poate încărca grupul", + "@unable_to_load_the_group": {} +} diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb new file mode 100644 index 00000000..166790c3 --- /dev/null +++ b/lib/l10n/intl_ru.arb @@ -0,0 +1,466 @@ +{ + "filters": "Фильтры", + "@filters": {}, + "include_replies": "Включая ответы", + "@include_replies": {}, + "include_retweets": "Включая ретвиты", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Не удаётся найти ваши сохранённые твиты.", + "@unable_to_find_your_saved_tweets": {}, + "saved": "Избранное", + "@saved": {}, + "trending": "Актуальное", + "@trending": {}, + "unable_to_load_the_tweets": "Не удаётся загрузить твиты", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Не удаётся загрузить профиль", + "@unable_to_load_the_profile": {}, + "tweets": "Твиты", + "@tweets": {}, + "tweets_and_replies": "Твиты и Ответы", + "@tweets_and_replies": {}, + "media": "Медиа", + "@media": {}, + "following": "Читает", + "@following": {}, + "this_user_does_not_have_anyone_following_them": "Этого пользователя никто не читает!", + "@this_user_does_not_have_anyone_following_them": {}, + "joined": "Регистрация: {date}", + "@joined": {}, + "export": "Экспортировать", + "@export": {}, + "data_exported_to_fileName": "Данные экспортируются в {fileName}", + "@data_exported_to_fileName": {}, + "export_settings": "Экспортировать настройки?", + "@export_settings": {}, + "export_subscription_groups": "Экспортировать группы подписок?", + "@export_subscription_groups": {}, + "export_tweets": "Экспортировать твиты?", + "@export_tweets": {}, + "data_imported_successfully": "Данные успешно импортированы", + "@data_imported_successfully": {}, + "thanks_for_helping_fritter": "Спасибо за помощь Quacker! 💖", + "@thanks_for_helping_fritter": {}, + "send": "Отправить", + "@send": {}, + "say_hello_emoji": "Сказать Привет 👋", + "@say_hello_emoji": {}, + "say_hello": "Сказать привет", + "@say_hello": {}, + "theme": "Тема", + "@theme": {}, + "dark": "Тёмная", + "@dark": {}, + "true_black": "Настоящий чёрный (AMOLED)?", + "@true_black": {}, + "logging": "Журнал", + "@logging": {}, + "contribute": "Поддержать", + "@contribute": {}, + "report_a_bug": "Сообщить об ошибке", + "@report_a_bug": {}, + "newTrans": "Новые", + "@newTrans": {}, + "are_you_sure": "Вы уверены?", + "@are_you_sure": {}, + "delete": "Удалить", + "@delete": {}, + "ok": "Ок", + "@ok": {}, + "name": "Имя", + "@name": {}, + "please_enter_a_name": "Пожалуйста, введите имя", + "@please_enter_a_name": {}, + "toggle_all": "Выбрать все", + "@toggle_all": {}, + "pick_a_color": "Выберите цвет!", + "@pick_a_color": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Если у вас есть отзывы об этой функции, пожалуйста, оставьте их на", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "username": "Имя пользователя", + "@username": {}, + "groups": "Группы", + "@groups": {}, + "country": "Страна", + "@country": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "Завершено {timeagoFormat}", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "tap_to_show_getMediaType_item_type": "Нажмите, чтобы показать {getMediaType}", + "@tap_to_show_getMediaType_item_type": {}, + "numberFormat_format_total_votes": "{num, plural, zero{нет голосов} one{голос} two{голоса} few{{numFormatted} голосов} many{{numFormatted} голосов} other{{numFormatted} голос}}", + "@numberFormat_format_total_votes": {}, + "trends": "Актуальные темы", + "@trends": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Завершится через {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "successfully_saved_the_media": "Файл сохранён!", + "@successfully_saved_the_media": {}, + "playback_speed": "Скорость воспроизведения", + "@playback_speed": {}, + "subtitles": "Субтитры", + "@subtitles": {}, + "download": "Скачать", + "@download": {}, + "sorry_the_replied_tweet_could_not_be_found": "Извините, ответ не удалось найти!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} ретвитнул(а) {timeAgo}", + "@this_tweet_user_name_retweeted": {}, + "pinned_tweet": "Закреплённый твит", + "@pinned_tweet": {}, + "thread": "Ветка", + "@thread": {}, + "unsave": "Отменить сохранение", + "@unsave": {}, + "save": "Сохранить", + "@save": {}, + "share_tweet_content": "Поделиться содержимым твита", + "@share_tweet_content": {}, + "share_tweet_link": "Поделиться ссылкой на твит", + "@share_tweet_link": {}, + "back": "Назад", + "@back": {}, + "retry": "Повторить", + "@retry": {}, + "oops_something_went_wrong": "Ой! Что-то пошло не так 🥲", + "@oops_something_went_wrong": {}, + "report": "Сообщить", + "@report": {}, + "timed_out": "Время вышло", + "@timed_out": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Никакие данные не были возвращены, чего никогда не должно происходить. Пожалуйста, сообщите об ошибке, если это возможно!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "updates": "Обновления", + "@updates": {}, + "when_a_new_app_update_is_available": "Когда новое обновление доступно", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Обновление Quacker доступно! 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "Нажмите, чтобы установить {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "Обновить до {releaseVersion} через клиент F-Droid", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker blue", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Синяя тема, основанная на цветовой схеме Twitter", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "unable_to_run_the_database_migrations": "Не удалось произвести перемещение базы данных", + "@unable_to_run_the_database_migrations": {}, + "something_broke_in_fritter": "Что-то пошло не так.", + "@something_broke_in_fritter": {}, + "media_size": "Размер медиа", + "@media_size": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Примечание: В связи с ограничением Twitter, не все твиты могут быть включены", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Похоже, что вы уже передали привет от этой версии Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Чтобы импортировать подписки из существующего аккаунта Twitter, введите свое имя пользователя ниже.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "enter_your_twitter_username": "Введите Ваше имя пользователя в Twitter", + "@enter_your_twitter_username": {}, + "unable_to_find_the_available_trend_locations": "Не удается найти доступные страны для актуального.", + "@unable_to_find_the_available_trend_locations": {}, + "unable_to_stream_the_trend_location_preference": "Невозможно выполнить передачу местных предпочтений", + "@unable_to_stream_the_trend_location_preference": {}, + "unable_to_send_the_ping_e_to_string": "Не удалось отправить ping. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "prefix": "префикс", + "@prefix": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Ваш профиль должен быть открытым, иначе импортирование не будет работать", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "timed_out_trying_to_send_the_ping": "Прервалась попытка отправить ping 😢", + "@timed_out_trying_to_send_the_ping": {}, + "copied_version_to_clipboard": "Версия скопирована в буфер обмена", + "@copied_version_to_clipboard": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "Опубликовано под лицензией MIT", + "@released_under_the_mit_license": {}, + "yes": "Да", + "@yes": {}, + "copied_address_to_clipboard": "Адрес скопирован в буфер обмена", + "@copied_address_to_clipboard": {}, + "you_have_not_saved_any_tweets_yet": "Вы ещё не сохранили ни одного твита!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Не удаётся загрузить результаты поиска.", + "@unable_to_load_the_search_results": {}, + "followers": "Читатели", + "@followers": {}, + "export_subscription_group_members": "Экспортировать участников групп подписок?", + "@export_subscription_group_members": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Не удалось отправить ping. Код состояния был {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Похоже, что вы уже отправляли пинг недавно 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "subscriptions": "Подписки", + "@subscriptions": {}, + "cancel": "Отмена", + "@cancel": {}, + "small": "Маленький", + "@small": {}, + "whether_errors_should_be_reported_to_": "Сообщать об ошибках в ", + "@whether_errors_should_be_reported_to_": {}, + "licenses": "Лицензии", + "@licenses": {}, + "all": "Все", + "@all": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Учтите, что метод, используемый Quacker для импорта подписок, сильно ограничен скоростью Twitter, поэтому при наличии большого количества подписок это может не сработать.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "live": "Прямой эфир", + "@live": {}, + "all_the_great_software_used_by_fritter": "Всё замечательное программное обеспечение, используемое Quacker", + "@all_the_great_software_used_by_fritter": {}, + "finished_with_snapshotData_users": "Завершена работа с аккаунтами {snapshotData}", + "@finished_with_snapshotData_users": {}, + "data_exported_to_fullPath": "Данные экспортируются в {fullPath}", + "@data_exported_to_fullPath": {}, + "export_subscriptions": "Экспортировать подписки?", + "@export_subscriptions": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Вот данные, которые будут отправлены. Они будут использованы только для определения того, какие устройства и языки будут поддерживаться в Quacker в будущем.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "default_tab": "Вкладка по умолчанию", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Какая вкладка отображается при открытии приложения", + "@which_tab_is_shown_when_the_app_opens": {}, + "save_bandwidth_using_smaller_images": "Экономьте место на экране, с изображениями меньшего размера", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Отключено", + "@disabled": {}, + "thumbnail": "Миниатюра", + "@thumbnail": {}, + "medium": "Средний", + "@medium": {}, + "large": "Большой", + "@large": {}, + "light": "Светлая", + "@light": {}, + "this_user_does_not_follow_anyone": "Этот пользователь никого не читает!", + "@this_user_does_not_follow_anyone": {}, + "system": "Системная", + "@system": {}, + "data": "Данные", + "@data": {}, + "import": "Импортировать", + "@import": {}, + "about": "О программе", + "@about": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Отправьте анонимный пинг, чтобы я знал, что вы используете Quacker, и чтобы помочь будущей разработке", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Основные", + "@general": {}, + "import_data_from_another_device": "Импортировать данные с другого устройства", + "@import_data_from_another_device": {}, + "legacy_android_import": "Импорт с устаревшей версии Android", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Файл не существует. Пожалуйста, убедитесь, что он находится по адресу {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Убедитесь, что данные, которые вы хотите импортировать, находятся там, затем нажмите кнопку импорта ниже.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Экспортировать ваши данные", + "@export_your_data": {}, + "enable_": "Активировать ?", + "@enable_": {}, + "version": "Версия", + "@version": {}, + "let_the_developers_know_if_something_is_broken": "Сообщите разработчикам если что-то пошло не так", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Поддержать проект", + "@donate": {}, + "help_support_fritters_future": "Поддержите Quacker", + "@help_support_fritters_future": {}, + "import_subscriptions": "Импортировать подписки", + "@import_subscriptions": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Выбор отдельных аккаунтов для импорта и назначение групп уже запланированы на будущее!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "import_from_twitter": "Импортировать из Twitter", + "@import_from_twitter": {}, + "date_subscribed": "Дата подписки", + "@date_subscribed": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Вы уверены, что хотите удалить группу подписок {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "no": "Нет", + "@no": {}, + "unable_to_import": "Не удаётся импортировать", + "@unable_to_import": {}, + "unable_to_load_the_trends_for_widget_place_name": "Невозможно загрузить актуальное для {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Не было возвращено ничего из актуального. Это неожиданно! Пожалуйста, сообщите об этом как об ошибке, если это возможно.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "no_subscriptions_try_searching_or_importing_some": "Нет подписок. Попробуйте поискать или импортировать некоторые!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "date_created": "Дата создания", + "@date_created": {}, + "catastrophic_failure": "Катастрофическая ошибка", + "@catastrophic_failure": {}, + "could_not_contact_twitter": "Не удаётся связаться с Twitter", + "@could_not_contact_twitter": {}, + "imported_snapshot_data_users_so_far": "Импортировано {snapshotData} аккаунтов на данный момент", + "@imported_snapshot_data_users_so_far": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Невозможно сохранить медиафайл. Twitter вернул статус {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "unknown": "Неизвестный", + "@unknown": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Твит не содержал никакого текста. Это неожиданно", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "private_profile": "Приватный профиль", + "@private_profile": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Загрузка заняла слишком много времени. Пожалуйста, проверьте ваше сетевое подключение!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "account_suspended": "Учётная запись приостановлена", + "@account_suspended": {}, + "replying_to": "Ответить", + "@replying_to": {}, + "this_tweet_is_unavailable": "Этот твит недоступен. Возможно он был удалён.", + "@this_tweet_is_unavailable": {}, + "user_not_found": "Пользователь не найден", + "@user_not_found": {}, + "please_check_your_internet_connection_error_message": "Пожалуйста, проверьте ваше сетевое подключение.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "tweets_number": "{num, plural, zero{нет твитов} one{твит} two{твита} few{{numFormatted} твитов} many{{numFormatted} твитов} other{{numFormatted} твит}}", + "@tweets_number": {}, + "no_results": "Ничего не найдено", + "@no_results": {}, + "unable_to_load_the_next_page_of_follows": "Не удаётся загрузить следующую страницу читаемых", + "@unable_to_load_the_next_page_of_follows": {}, + "unable_to_load_the_list_of_follows": "Не удаётся загрузить список читаемых", + "@unable_to_load_the_list_of_follows": {}, + "use_true_black_for_the_dark_mode_theme": "Использовать настоящий чёрный (AMOLED) для тёмной темы", + "@use_true_black_for_the_dark_mode_theme": {}, + "this_group_contains_no_subscriptions": "В этой группе нет подписок!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Не удалось найти ни одного твита этого пользователя!", + "@could_not_find_any_tweets_by_this_user": {}, + "add_to_group": "Добавить в группу", + "@add_to_group": {}, + "unable_to_load_the_next_page_of_replies": "Не удаётся загрузить следующую страницу ответов", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Не удаётся загрузить твит", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Не удаётся загрузить группы подписок", + "@unable_to_load_subscription_groups": {}, + "reporting_an_error": "Сообщить об ошибке", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Что-то пошло не так в Quacker, и был создан отчет об ошибке. Отчет можно отправить разработчикам Quacker, чтобы они могли устранить проблему.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Вы хотите включить автоматическое информирование об ошибках?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "send_once": "Отправить один раз", + "@send_once": {}, + "send_always": "Всегда отправлять", + "@send_always": {}, + "don_not_send": "Не отправлять", + "@don_not_send": {}, + "never_send": "Никогда не отправлять", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Ошибка была передана в . Спасибо!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Спасибо за сообщение. Мы постараемся исправить это в ближайшее время!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Не удаётся найти какие-либо твиты за последние 7 дней!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "Не удаётся загрузить группу", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Не удаётся загрузить настройки группы", + "@unable_to_load_the_group_settings": {}, + "feed": "Лента", + "@feed": {}, + "subscribe": "Читать", + "@subscribe": {}, + "unsubscribe": "Перестать читать", + "@unsubscribe": {}, + "your_report_will_be_sent_to_fritter__project": "Ваш отчет будет отправлен в Quacker, а информацию о конфиденциальности можно найти здесь:", + "@your_report_will_be_sent_to_fritter__project": {}, + "unable_to_load_the_next_page_of_tweets": "Не удаётся загрузить следующую страницу твитов", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_tweets_for_the_feed": "Не удаётся загрузить твиты для ленты", + "@unable_to_load_the_tweets_for_the_feed": {}, + "help_make_fritter_even_better": "Помогите сделать Quacker ещё лучше", + "@help_make_fritter_even_better": {}, + "downloading_media": "Загрузка медиа...", + "@downloading_media": {}, + "select": "Выбрать", + "@select": {}, + "download_path": "Путь для загрузки", + "@download_path": {}, + "should_check_for_updates_label": "Проверить обновления", + "@should_check_for_updates_label": {}, + "should_check_for_updates_description": "Проверять наличие обновлений при запуске", + "@should_check_for_updates_description": {}, + "download_handling_description": "Как должна работать загрузка", + "@download_handling_description": {}, + "download_handling_type_ask": "Всегда спрашивайте", + "@download_handling_type_ask": {}, + "download_handling": "Обработка загрузки", + "@download_handling": {}, + "download_handling_type_directory": "Сохранить в папку", + "@download_handling_type_directory": {}, + "permission_not_granted": "Разрешение не предоставлено. Пожалуйста, повторите попытку после предоставления!", + "@permission_not_granted": {}, + "open_app_settings": "Открыть настройки приложения", + "@open_app_settings": {}, + "choose": "Выбрать", + "@choose": {}, + "not_set": "Не установлено", + "@not_set": {}, + "the_github_issue": "предложение GitHub (#143)", + "@the_github_issue": {}, + "unable_to_refresh_the_subscriptions": "Невозможно обновить подписки", + "@unable_to_refresh_the_subscriptions": {}, + "theme_mode": "Тема", + "@theme_mode": {}, + "confirm_close_fritter": "Вы действительно хотите закрыть Quacker?", + "@confirm_close_fritter": {}, + "search_term": "Поисковый запрос", + "@search_term": {}, + "hide_sensitive_tweets": "Скрывать чувствительный контент", + "@hide_sensitive_tweets": {}, + "bad_guest_token": "Twitter признал недействительным наш маркер доступа. Пожалуйста, попробуйте снова открыть Quacker!", + "@bad_guest_token": {}, + "forbidden": "Twitter говорит, что доступ к этому запрещен", + "@forbidden": {}, + "possibly_sensitive_profile": "Этот профиль может содержать потенциально чувствительные изображения, высказывания или другое содержимое. Вы все еще хотите просмотреть его?", + "@possibly_sensitive_profile": {}, + "share_tweet_content_and_link": "Отправить содержимое и ссылку", + "@share_tweet_content_and_link": {}, + "search": "Поиск", + "@search": {}, + "no_results_for": "Результаты отсутствуют:", + "@no_results_for": {}, + "close": "Закрыть", + "@close": {}, + "page_not_found": "Twiiter говорит, что эта страница не существует, но это может оказаться неправдой", + "@page_not_found": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Следует ли скрывать твиты, помеченные как чувствительные", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "group_name": "Группа: {name}", + "@group_name": {}, + "download_media_no_url": "Невозможно загрузить. Это медиа может быть доступно только в виде потока, который Quacker пока не может загрузить.", + "@download_media_no_url": {}, + "language": "Язык", + "@language": {}, + "language_subtitle": "Необходим перезапуск", + "@language_subtitle": {}, + "home": "Главная", + "@home": {}, + "unable_to_load_home_pages": "Невозможно загрузить вашу главную страницу", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Сброс страниц к значениям по умолчанию", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "Вы должны установить как минимум две страницы для главного экрана", + "@you_must_have_at_least_2_home_screen_pages": {}, + "disable_screenshots": "Отключить скриншоты", + "@disable_screenshots": {}, + "disable_screenshots_hint": "Предотвращение создания скриншотов. Это может работать не на всех устройствах.", + "@disable_screenshots_hint": {}, + "possibly_sensitive_tweet": "Этот твит содержит потенциально чувствительный контент. Вы действительно хотите его посмотреть?", + "@possibly_sensitive_tweet": {}, + "activate_non_confirmation_bias_mode_label": "Включить режим смещения без подтверждения", + "@activate_non_confirmation_bias_mode_label": {}, + "yes_please": "Да, пожалуйста", + "@yes_please": {}, + "possibly_sensitive": "Возможно чувствительно", + "@possibly_sensitive": {}, + "pick_an_icon": "Выберите иконку!", + "@pick_an_icon": {}, + "activate_non_confirmation_bias_mode_description": "Скрывайте авторов твитов. Избегайте предубеждения подтверждения, основанного на авторитетных аргументах.", + "@activate_non_confirmation_bias_mode_description": {} +} diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb new file mode 100644 index 00000000..8dbbc3f8 --- /dev/null +++ b/lib/l10n/intl_tr.arb @@ -0,0 +1,494 @@ +{ + "include_replies": "Yanıtları dahil et", + "@include_replies": {}, + "include_retweets": "Retweet'leri dahil et", + "@include_retweets": {}, + "you_have_not_saved_any_tweets_yet": "Henüz tweet kaydetmediniz!", + "@you_have_not_saved_any_tweets_yet": {}, + "unable_to_load_the_search_results": "Arama sonuçları yüklenemiyor.", + "@unable_to_load_the_search_results": {}, + "trending": "Trendler", + "@trending": {}, + "saved": "Kaydedilmiş", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Aşağıdakilerin listesi yüklenemiyor", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "Takip edenlerin sonraki sayfası yüklenemiyor", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "Bu kullanıcı kimseyi takip etmiyor!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Bu kullanıcıyı takip eden kimse yok!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Tweet'ler yüklenemedi", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Profil yüklenemiyor", + "@unable_to_load_the_profile": {}, + "tweets": "Tweet'ler", + "@tweets": {}, + "following": "Takip ediyor", + "@following": {}, + "followers": "Takipçi", + "@followers": {}, + "joined": "{date} tarihinde katıldı", + "@joined": {}, + "export": "Dışa aktar", + "@export": {}, + "tweets_and_replies": "Tweet'ler & Yanıtlar", + "@tweets_and_replies": {}, + "media": "Medya", + "@media": {}, + "export_subscriptions": "Abonelikler aktarılsın mı?", + "@export_subscriptions": {}, + "export_settings": "Ayarlar aktarılsın mı?", + "@export_settings": {}, + "export_subscription_groups": "Abonelik grupları aktarılsın mı?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Abonelik grubu üyeleri aktarılsın mı?", + "@export_subscription_group_members": {}, + "export_tweets": "Tweet'ler aktarılsın mı?", + "@export_tweets": {}, + "data_imported_successfully": "Veriler başarıyla içe aktarıldı", + "@data_imported_successfully": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Ping gönderilemedi. Durum kodu {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "say_hello_emoji": "Merhaba de 👋", + "@say_hello_emoji": {}, + "say_hello": "Merhaba de", + "@say_hello": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Quacker kullandığınızı bildirmek ve gelecekteki geliştirmelere yardımcı olmak için tanımlayıcı olmayan bir ping gönderin", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "general": "Genel", + "@general": {}, + "media_size": "Medya boyutu", + "@media_size": {}, + "small": "Küçük", + "@small": {}, + "theme": "Tema", + "@theme": {}, + "light": "Açık", + "@light": {}, + "true_black": "Gerçek siyah olsun mu?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "Koyu tema için gerçek siyahı kullanın", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "Veriler", + "@data": {}, + "import": "İçe aktar", + "@import": {}, + "import_data_from_another_device": "Verileri başka bir cihazdan aktarın", + "@import_data_from_another_device": {}, + "legacy_android_import": "Eski Android için İçe Aktarma", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Dosya yok. Lütfen {filePath} konumunda olduğundan emin olun", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "about": "Hakkında", + "@about": {}, + "version": "Sürüm", + "@version": {}, + "copied_version_to_clipboard": "Sürüm panoya kopyalandı", + "@copied_version_to_clipboard": {}, + "report_a_bug": "Hata bildir", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "Yanlış giden şeyler varsa geliştiricilere bildirin", + "@let_the_developers_know_if_something_is_broken": {}, + "licenses": "Lisanslar", + "@licenses": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "MIT Lisansı altında yayınlandı", + "@released_under_the_mit_license": {}, + "are_you_sure": "Emin misiniz?", + "@are_you_sure": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "{name} abonelik grubunu silmek istediğinizden emin misiniz?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Bu özellikle ilgili herhangi bir görüşünüz varsa lütfen geri bildirim yapın", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "username": "Kullanıcı adı", + "@username": {}, + "imported_snapshot_data_users_so_far": "Şimdiye kadar {snapshotData} kullanıcı içe aktarıldı", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "{snapshotData} kullanıcı ile tamamlandı", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Abonelik yok. Bazılarını aramayı veya içe aktarmayı deneyin!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "groups": "Gruplar", + "@groups": {}, + "date_created": "Oluşturulma Tarihi", + "@date_created": {}, + "date_subscribed": "Abone Olunan Tarih", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "{widgetPlaceName} için trendler yüklenemiyor", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "unable_to_find_the_available_trend_locations": "Mevcut trend konumları bulunamadı.", + "@unable_to_find_the_available_trend_locations": {}, + "country": "Ülke", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "Trend konumu tercihi aktarılamıyor", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "Trendler", + "@trends": {}, + "tweets_number": "{num, plural, zero{tweet yok} one{bir tweet} two{iki tweet} few{{numFormatted} tweet} many{{numFormatted} tweet} other{{numFormatted} tweet}}", + "@tweets_number": {}, + "tap_to_show_getMediaType_item_type": "{getMediaType} göstermek için dokunun", + "@tap_to_show_getMediaType_item_type": {}, + "downloading_media": "Medya indiriliyor...", + "@downloading_media": {}, + "playback_speed": "Oynatma hızı", + "@playback_speed": {}, + "subtitles": "Altyazılar", + "@subtitles": {}, + "live": "CANLI", + "@live": {}, + "sorry_the_replied_tweet_could_not_be_found": "Üzgünüz, yanıtlanan tweet bulunamadı!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "replying_to": "Yanıtlıyor", + "@replying_to": {}, + "thread": "Başlık", + "@thread": {}, + "unsave": "Kaydetmeyi iptal et", + "@unsave": {}, + "save": "Kaydet", + "@save": {}, + "share_tweet_content": "Tweet içeriğini paylaş", + "@share_tweet_content": {}, + "share_tweet_link": "Tweet bağlantısını paylaş", + "@share_tweet_link": {}, + "user_not_found": "Kullanıcı bulunamadı", + "@user_not_found": {}, + "account_suspended": "Hesap askıya alındı", + "@account_suspended": {}, + "back": "Geri", + "@back": {}, + "please_check_your_internet_connection_error_message": "Lütfen internet bağlantınızı kontrol edin.\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "oops_something_went_wrong": "Hop! Bir şeyler ters gitti 🥲", + "@oops_something_went_wrong": {}, + "report": "Bildir", + "@report": {}, + "updates": "Güncellemeler", + "@updates": {}, + "when_a_new_app_update_is_available": "Yeni bir uygulama güncellemesi mevcut olduğunda", + "@when_a_new_app_update_is_available": {}, + "tap_to_download_release_version": "{releaseVersion} sürümünü indirmek için dokunun", + "@tap_to_download_release_version": {}, + "fritter_blue": "Quacker mavisi", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "Twitter renk şemasına dayalı mavi tema", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Quacker'da bir şey bozuldu.", + "@something_broke_in_fritter": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Görünüşe göre Quacker'ın bu versiyonundan çoktan merhaba demişsiniz!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Görünüşe göre yakın zamanda bir ping göndermişsin 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "cancel": "İptal et", + "@cancel": {}, + "thumbnail": "Küçük resim", + "@thumbnail": {}, + "timed_out_trying_to_send_the_ping": "Ping göndermeye çalışırken zaman aşımına uğradı 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Ping gönderilemiyor. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Gönder", + "@send": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "İşte gönderilecek veriler. Sadece gelecekte Quacker'da hangi cihazların ve dillerin destekleneceğini belirlemek için kullanılacaktır.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "which_tab_is_shown_when_the_app_opens": "Uygulama açıldığında hangi sekmenin gösterileceğini belirler", + "@which_tab_is_shown_when_the_app_opens": {}, + "save_bandwidth_using_smaller_images": "Daha küçük görüntülerle bant genişliğinden tasarruf edin", + "@save_bandwidth_using_smaller_images": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Not: Twitter sınırlaması nedeniyle, tüm tweet'ler dahil edilmeyebilir", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "unable_to_find_your_saved_tweets": "Kayıtlı tweet'leriniz bulunamıyor.", + "@unable_to_find_your_saved_tweets": {}, + "no_results": "Sonuç yok", + "@no_results": {}, + "feed": "Akış", + "@feed": {}, + "subscriptions": "Abonelikler", + "@subscriptions": {}, + "filters": "Filtreler", + "@filters": {}, + "export_your_data": "Verilerinizi dışa aktarın", + "@export_your_data": {}, + "default_tab": "Varsayılan sekme", + "@default_tab": {}, + "disabled": "Devre dışı", + "@disabled": {}, + "system": "Sistem", + "@system": {}, + "prefix": "ön ek", + "@prefix": {}, + "data_exported_to_fileName": "Veriler {fileName}'a aktarıldı", + "@data_exported_to_fileName": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Lütfen içe aktarmak istediğiniz verilerin orada olduğundan emin olun, ardından aşağıdaki içe aktar düğmesine basın.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "enable_": " etkinleştirilsin mi?", + "@enable_": {}, + "data_exported_to_fullPath": "Veriler {fullPath} konumuna aktarıldı", + "@data_exported_to_fullPath": {}, + "help_make_fritter_even_better": "Quacker'ın daha da iyi olmasına yardımcı olun", + "@help_make_fritter_even_better": {}, + "whether_errors_should_be_reported_to_": "Hataların 'ye bildirilip bildirilmeyeceği", + "@whether_errors_should_be_reported_to_": {}, + "medium": "Orta", + "@medium": {}, + "large": "Büyük", + "@large": {}, + "dark": "Koyu", + "@dark": {}, + "contribute": "Katkıda bulunun", + "@contribute": {}, + "thanks_for_helping_fritter": "Quacker'a yardım ettiğin için teşekkürler! 💖", + "@thanks_for_helping_fritter": {}, + "ok": "TAMAM", + "@ok": {}, + "help_support_fritters_future": "Quacker'ın geleceğini desteklemeye yardımcı olun", + "@help_support_fritters_future": {}, + "donate": "Bağış yapın", + "@donate": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Profiliniz herkese açık olmalıdır, aksi takdirde alma işlemi çalışmaz", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "copied_address_to_clipboard": "Adres panoya kopyalandı", + "@copied_address_to_clipboard": {}, + "all_the_great_software_used_by_fritter": "Quacker tarafından kullanılan tüm harika yazılımlar", + "@all_the_great_software_used_by_fritter": {}, + "all": "Hepsi", + "@all": {}, + "newTrans": "Yeni", + "@newTrans": {}, + "no": "Hayır", + "@no": {}, + "yes": "Evet", + "@yes": {}, + "toggle_all": "Tümünü Aç/Kapat", + "@toggle_all": {}, + "delete": "Sil", + "@delete": {}, + "name": "Ad", + "@name": {}, + "please_enter_a_name": "Lütfen bir ad girin", + "@please_enter_a_name": {}, + "pick_a_color": "Bir renk seçin!", + "@pick_a_color": {}, + "import_subscriptions": "Abonelikleri içe aktar", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Mevcut bir Twitter hesabından abonelikleri içe aktarmak için aşağıya kullanıcı adınızı girin.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Quacker'ın abonelikleri içe aktarmak için kullandığı yöntemin Twitter tarafından yüksek oranda sınırlandırıldığını, bu nedenle çok sayıda takip ettiğiniz hesap varsa bunun başarısız olabileceğini lütfen unutmayın.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "İçe aktarılacak bireysel hesapların seçilmesi ve grupların atanması şimdiden gelecek için planlanmıştır!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "enter_your_twitter_username": "Twitter kullanıcı adınızı girin", + "@enter_your_twitter_username": {}, + "unable_to_import": "İçe aktarılamıyor", + "@unable_to_import": {}, + "import_from_twitter": "Twitter'dan içe aktar", + "@import_from_twitter": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Geri dönen trend yoktu. Bu beklenmedik! Mümkünse lütfen bir hata olarak bildirin.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "{timeagoFormat} sona erdi", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "Bitiş {timeagoFormat}", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "Medya kaydedilemiyor. Twitter {responseStatusCode} durumuyla döndü", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "catastrophic_failure": "Feci arıza", + "@catastrophic_failure": {}, + "successfully_saved_the_media": "Medya kaydedildi!", + "@successfully_saved_the_media": {}, + "numberFormat_format_total_votes": "{num, plural, zero{Oy yok} one{Bir oy} two{İki oy} few{{numFormatted} oy} many{{numFormatted} oy} other{{numFormatted} oy}}", + "@numberFormat_format_total_votes": {}, + "unknown": "Bilinmeyen", + "@unknown": {}, + "download": "İndir", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} {timeAgo} retweet'ledi", + "@this_tweet_user_name_retweeted": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "Tweet'te herhangi bir metin yoktu. Bu beklenmedik bir şey", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "this_tweet_is_unavailable": "Bu tweete ulaşılamıyor. Muhtemelen silindi.", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "Sabitlenmiş tweet", + "@pinned_tweet": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "Hiçbir veri dönmedi, bu asla olmamalıydı. Mümkünse lütfen bir hata bildirin!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "private_profile": "Gizli profil", + "@private_profile": {}, + "could_not_contact_twitter": "Twitter ile iletişim kurulamadı", + "@could_not_contact_twitter": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "Bunun yüklenmesi çok uzun sürdü. Lütfen internet bağlantınızı kontrol edin!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "retry": "Yeniden dene", + "@retry": {}, + "timed_out": "Zaman aşımına uğradı", + "@timed_out": {}, + "an_update_for_fritter_is_available": "Quacker için bir güncelleme mevcut! 🚀", + "@an_update_for_fritter_is_available": {}, + "unable_to_run_the_database_migrations": "Veritabanı geçişleri çalıştırılamıyor", + "@unable_to_run_the_database_migrations": {}, + "this_group_contains_no_subscriptions": "Bu grup hiçbir abonelik içermiyor!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "Bu kullanıcının herhangi bir tweeti bulunamadı!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_subscription_groups": "Abonelik grupları yüklenemiyor", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "Gruba ekle", + "@add_to_group": {}, + "unsubscribe": "Abonelikten çık", + "@unsubscribe": {}, + "subscribe": "Abone ol", + "@subscribe": {}, + "reporting_an_error": "Hata bildirme", + "@reporting_an_error": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Quacker'da bir şeyler ters gitti ve bir hata raporu oluşturuldu. Rapor, sorunun çözülmesine yardımcı olmaları için Quacker geliştiricilerine gönderilebilir.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "would_you_like_to_enable_automatic_error_reporting": "Otomatik hata bildirimini etkinleştirmek ister misiniz?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Raporunuz Quacker'ın projesine gönderilecektir ve gizlilik detaylarını şu adreste bulabilirsiniz:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Bir kez gönder", + "@send_once": {}, + "send_always": "Her zaman gönder", + "@send_always": {}, + "don_not_send": "Gönderme", + "@don_not_send": {}, + "never_send": "Asla gönderme", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "Hata 'e bildirildi. Teşekkürler!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Bildirdiğiniz için teşekkürler. En kısa sürede düzeltmeye çalışacağız!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_next_page_of_tweets": "Tweet'lerin sonraki sayfası yüklenemiyor", + "@unable_to_load_the_next_page_of_tweets": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Son 7 güne ait herhangi bir tweet bulunamadı!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_next_page_of_replies": "Yanıtların bir sonraki sayfası yüklenemedi", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_the_tweet": "Tweet yüklenemedi", + "@unable_to_load_the_tweet": {}, + "unable_to_load_the_tweets_for_the_feed": "Akış için tweet'ler yüklenemiyor", + "@unable_to_load_the_tweets_for_the_feed": {}, + "unable_to_load_the_group": "Grup yüklenemedi", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Grup ayarları yüklenemedi", + "@unable_to_load_the_group_settings": {}, + "logging": "Günlük tutma", + "@logging": {}, + "update_to_release_version_through_your_fdroid_client": "F-Droid istemciniz aracılığıyla {releaseVersion} sürümüne güncelleyin", + "@update_to_release_version_through_your_fdroid_client": {}, + "should_check_for_updates_description": "Quacker başladığında güncellemeleri denetle", + "@should_check_for_updates_description": {}, + "no_results_for": "Sonuç bulunamadı:", + "@no_results_for": {}, + "close": "Kapat", + "@close": {}, + "the_github_issue": "GitHub sorunu (#143)", + "@the_github_issue": {}, + "select": "Seç", + "@select": {}, + "pick_an_icon": "Bir simge seçin!", + "@pick_an_icon": {}, + "search": "Ara", + "@search": {}, + "should_check_for_updates_label": "Güncellemeleri denetle", + "@should_check_for_updates_label": {}, + "download_handling_description": "İndirmeler nasıl ele alınmalı", + "@download_handling_description": {}, + "download_path": "İndirme yolu", + "@download_path": {}, + "open_app_settings": "Uygulama ayarlarını aç", + "@open_app_settings": {}, + "not_set": "Ayarlanmadı", + "@not_set": {}, + "share_tweet_content_and_link": "Tweet içeriğini ve bağlantısını paylaş", + "@share_tweet_content_and_link": {}, + "download_handling": "İndirmelerin ele alınması", + "@download_handling": {}, + "download_handling_type_directory": "Dizine kaydet", + "@download_handling_type_directory": {}, + "choose": "Seç", + "@choose": {}, + "download_handling_type_ask": "Her zaman sor", + "@download_handling_type_ask": {}, + "permission_not_granted": "İzin verilmedi. Lütfen verdikten sonra tekrar deneyin!", + "@permission_not_granted": {}, + "bad_guest_token": "Twitter erişim belirtecimizi geçersiz kıldı. Lütfen Quacker'ı yeniden açmayı deneyin!", + "@bad_guest_token": {}, + "forbidden": "Twitter buna erişimin yasak olduğunu söylüyor", + "@forbidden": {}, + "unable_to_refresh_the_subscriptions": "Abonelikler yenilenemiyor", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter sayfanın mevcut olmadığını söylüyor, ancak bu doğru olmayabilir", + "@page_not_found": {}, + "language_subtitle": "Yeniden başlatma gerektirir", + "@language_subtitle": {}, + "language": "Dil", + "@language": {}, + "download_media_no_url": "İndirilemiyor. Bu medya yalnızca Quacker'ın henüz indiremediği bir akış olarak mevcut olabilir.", + "@download_media_no_url": {}, + "theme_mode": "Tema Modu", + "@theme_mode": {}, + "yes_please": "Evet, lütfen", + "@yes_please": {}, + "possibly_sensitive_tweet": "Bu tweet olası hassas içerik barındırmaktadır. Görüntülemek ister misiniz?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive": "Hassas olabilir", + "@possibly_sensitive": {}, + "possibly_sensitive_profile": "Bu profil hassas olabilecek görüntüler, dil veya başka içerikler içerebilir. Yine de görüntülemek istiyor musunuz?", + "@possibly_sensitive_profile": {}, + "whether_to_hide_tweets_marked_as_sensitive": "Hassas olarak işaretlenen tweetlerin gizlenip gizlenmeyeceği", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "hide_sensitive_tweets": "Hassas tweetleri gizle", + "@hide_sensitive_tweets": {}, + "home": "Ana sayfa", + "@home": {}, + "unable_to_load_home_pages": "Ana sayfalarınız yüklenemiyor", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "Sayfaları öntanımlı olana sıfırla", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "En az 2 ana ekran sayfanız olmalıdır", + "@you_must_have_at_least_2_home_screen_pages": {}, + "disable_screenshots": "Ekran görüntülerini devre dışı bırak", + "@disable_screenshots": {}, + "disable_screenshots_hint": "Ekran görüntülerinin alınmasını engelleyin. Bu, tüm aygıtlarda çalışmayabilir.", + "@disable_screenshots_hint": {}, + "activate_non_confirmation_bias_mode_label": "Doğrulama yanlılığı kapalı modunu etkinleştir", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Tweet yazarlarını gizleyin. Yazarın argümanlara dayalı doğrulama yanlılığından kaçının.", + "@activate_non_confirmation_bias_mode_description": {}, + "confirm_close_fritter": "Quacker'ı kapatmak istediğinizden emin misiniz?", + "@confirm_close_fritter": {}, + "search_term": "Arama terimi", + "@search_term": {}, + "group_name": "Grup: {name}", + "@group_name": {}, + "only_public_subscriptions_can_be_imported": "Abonelikler yalnızca herkese açık profillerden içe aktarılabilir", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "Desteklenmeyen URL", + "@unsupported_url": {}, + "saved_tweet_too_large": "Kaydedilen bu tweet, yüklenemeyecek kadar büyük olduğu için görüntülenemedi. Lütfen bunu geliştiricilere bildirin.", + "@saved_tweet_too_large": {}, + "missing_page": "Eksik sayfa", + "@missing_page": {}, + "two_home_pages_required": "En az 2 ana ekran sayfanızın olması gerekir.", + "@two_home_pages_required": {}, + "choose_pages": "Sayfaları seçin", + "@choose_pages": {}, + "mute_videos": "Videoların sesini kapat", + "@mute_videos": {}, + "mute_video_description": "Videoların öntanımlı olarak sesinin kapatılıp kapatılmayacağı", + "@mute_video_description": {}, + "finish": "Bitir", + "@finish": {}, + "next": "İleri", + "@next": {}, + "share_base_url": "Özel paylaşım URL'si", + "@share_base_url": {}, + "share_base_url_description": "Paylaşırken özel bir temel URL kullanın", + "@share_base_url_description": {}, + "functionality_unsupported": "Bu işlev artık Twitter tarafından desteklenmiyor!", + "@functionality_unsupported": {}, + "add_subscriptions": "Abonelik ekle", + "@add_subscriptions": {} +} diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb new file mode 100644 index 00000000..817fdc2d --- /dev/null +++ b/lib/l10n/intl_uk.arb @@ -0,0 +1,304 @@ +{ + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Щойно у Quacker щось пішло не так, і було створено звіт про помилку. Звіт можна відправити розробникам Quacker, щоб вони допомогли розв'язати проблему.", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "unable_to_load_the_tweet": "Не вдається завантажити твіт", + "@unable_to_load_the_tweet": {}, + "unable_to_load_subscription_groups": "Не вдається завантажити групи підписників", + "@unable_to_load_subscription_groups": {}, + "this_group_contains_no_subscriptions": "Ця група не містить підписок!", + "@this_group_contains_no_subscriptions": {}, + "unable_to_load_the_tweets_for_the_feed": "Не вдається завантажити твіти для стрічки", + "@unable_to_load_the_tweets_for_the_feed": {}, + "unable_to_load_the_search_results": "Не вдається завантажити результати пошуку.", + "@unable_to_load_the_search_results": {}, + "media": "Медіа", + "@media": {}, + "could_not_find_any_tweets_from_the_last_7_days": "Не вдалося знайти жодного твіту за останні 7 днів!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "no_results": "Немає результатів", + "@no_results": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "Примітка: Через обмеження Twitter, не всі твіти можуть бути включені", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_replies": "Включити відповіді", + "@include_replies": {}, + "include_retweets": "Включити ретвіти", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "Не вдається знайти збережені твіти.", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "Ви ще не зберегли жодного твіту!", + "@you_have_not_saved_any_tweets_yet": {}, + "tweets_and_replies": "Твіти і відповіді", + "@tweets_and_replies": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "Схоже, що ви вже відправляли пінг нещодавно 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "export_subscriptions": "Експортувати підписки?", + "@export_subscriptions": {}, + "following": "Слідкує", + "@following": {}, + "export_subscription_groups": "Експортувати групи підписників?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "Експортувати членів групи підписників?", + "@export_subscription_group_members": {}, + "cancel": "Скасувати", + "@cancel": {}, + "thanks_for_helping_fritter": "Дякуємо за допомогу! 💖", + "@thanks_for_helping_fritter": {}, + "unable_to_load_the_next_page_of_tweets": "Не вдається завантажити наступну сторінку твітів", + "@unable_to_load_the_next_page_of_tweets": {}, + "unable_to_load_the_next_page_of_follows": "Не вдається завантажити наступну сторінку з підписниками", + "@unable_to_load_the_next_page_of_follows": {}, + "unsubscribe": "Відписатися", + "@unsubscribe": {}, + "subscribe": "Підписатися", + "@subscribe": {}, + "reporting_an_error": "Повідомити про помилку", + "@reporting_an_error": {}, + "general": "Головне", + "@general": {}, + "default_tab": "Вкладка за замовчуванням", + "@default_tab": {}, + "which_tab_is_shown_when_the_app_opens": "Яка вкладка відображатиметься під час відкриття додатка", + "@which_tab_is_shown_when_the_app_opens": {}, + "media_size": "Розмір медіа", + "@media_size": {}, + "save_bandwidth_using_smaller_images": "Економте трафік за допомогою менших зображень", + "@save_bandwidth_using_smaller_images": {}, + "disabled": "Вимкнено", + "@disabled": {}, + "thumbnail": "Ескіз", + "@thumbnail": {}, + "small": "Маленький", + "@small": {}, + "medium": "Середній", + "@medium": {}, + "large": "Великий", + "@large": {}, + "theme_mode": "Режим теми", + "@theme_mode": {}, + "use_true_black_for_the_dark_mode_theme": "Використовуйте справжній чорний колір для темної теми", + "@use_true_black_for_the_dark_mode_theme": {}, + "prefix": "префікс", + "@prefix": {}, + "help_support_fritters_future": "Допоможіть підтримати майбутнє Quacker", + "@help_support_fritters_future": {}, + "copied_version_to_clipboard": "Версія скопійована в буфер обміну", + "@copied_version_to_clipboard": {}, + "activate_non_confirmation_bias_mode_label": "Активувати режим зсуву без підтвердження", + "@activate_non_confirmation_bias_mode_label": {}, + "activate_non_confirmation_bias_mode_description": "Приховати авторів твітів. Уникайте підтвердження, заснованого на авторитетних аргументах.", + "@activate_non_confirmation_bias_mode_description": {}, + "whether_errors_should_be_reported_to_": "Чи потрібно повідомляти про помилки в ", + "@whether_errors_should_be_reported_to_": {}, + "version": "Версія", + "@version": {}, + "report_a_bug": "Повідомити про помилку", + "@report_a_bug": {}, + "help_make_fritter_even_better": "Допоможіть зробити Quacker ще кращим", + "@help_make_fritter_even_better": {}, + "let_the_developers_know_if_something_is_broken": "Повідомте розробників, якщо щось зламалося", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "Пожертвувати", + "@donate": {}, + "copied_address_to_clipboard": "Адресу скопійовано в буфер обміну", + "@copied_address_to_clipboard": {}, + "licenses": "Ліцензії", + "@licenses": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "Ви впевнені, що хочете видалити групу підписників {name}?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, + "could_not_find_any_tweets_by_this_user": "Не вдалося знайти жодного твіту цього користувача!", + "@could_not_find_any_tweets_by_this_user": {}, + "select": "Вибрати", + "@select": {}, + "unable_to_load_the_next_page_of_replies": "Не вдається завантажити наступну сторінку відповідей", + "@unable_to_load_the_next_page_of_replies": {}, + "add_to_group": "Додати до групи", + "@add_to_group": {}, + "would_you_like_to_enable_automatic_error_reporting": "Бажаєте увімкнути автоматичне повідомлення про помилки?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "Ваш звіт буде надіслано до проекту Quacker's , а деталі конфіденційності можна знайти за посиланням:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "Надіслати один раз", + "@send_once": {}, + "send_always": "Надсилати завжди", + "@send_always": {}, + "don_not_send": "Не надсилати", + "@don_not_send": {}, + "never_send": "Ніколи не надсилати", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "До надійшло повідомлення про помилку. Дякую!", + "@an_error_was_reported_to__thank_you": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "Дякуємо за повідомлення. Ми постараємося виправити це якнайшвидше!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "unable_to_load_the_group": "Не вдається завантажити групу", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "Не вдається завантажити налаштування групи", + "@unable_to_load_the_group_settings": {}, + "filters": "Фільтри", + "@filters": {}, + "feed": "Стрічка", + "@feed": {}, + "subscriptions": "Підписки", + "@subscriptions": {}, + "trending": "Тренди", + "@trending": {}, + "saved": "Збережено", + "@saved": {}, + "unable_to_load_the_list_of_follows": "Не вдається завантажити список підписників", + "@unable_to_load_the_list_of_follows": {}, + "this_user_does_not_follow_anyone": "Цей користувач ні за ким не стежить!", + "@this_user_does_not_follow_anyone": {}, + "this_user_does_not_have_anyone_following_them": "Цей користувач не має жодного підписника!", + "@this_user_does_not_have_anyone_following_them": {}, + "unable_to_load_the_tweets": "Не вдається завантажити твіти", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "Не вдається завантажити профіль", + "@unable_to_load_the_profile": {}, + "tweets": "Твіти", + "@tweets": {}, + "followers": "Підписники", + "@followers": {}, + "joined": "Приєднався {date}", + "@joined": {}, + "export": "Експорт", + "@export": {}, + "data_exported_to_fullPath": "Дані експортовано до {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "Дані експортовано до {fileName}", + "@data_exported_to_fileName": {}, + "export_settings": "Експортувати налаштування?", + "@export_settings": {}, + "export_tweets": "Експортувати твіти?", + "@export_tweets": {}, + "data_imported_successfully": "Дані успішно імпортовано", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "Схоже, ви вже привіталися з цією версією Quacker!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "Не вдається надіслати пінг. Код стану був {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Минув час очікування під час спроби надіслати запит пінг 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "Не вдалося надіслати пінг. {e}", + "@unable_to_send_the_ping_e_to_string": {}, + "send": "Надіслати", + "@send": {}, + "say_hello_emoji": "Скажіть привіт 👋", + "@say_hello_emoji": {}, + "say_hello": "Скажіть привіт", + "@say_hello": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "Ось дані, які будуть надіслані. Вони будуть використані лише для того, щоб визначити, які пристрої та мови підтримувати у Quacker в майбутньому.", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "Надішліть неідентифікуючий пінг, щоб повідомити мені, що ви використовуєте Quacker і допомогти в подальшій розробці", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "theme": "Тема", + "@theme": {}, + "system": "Система", + "@system": {}, + "light": "Світла", + "@light": {}, + "dark": "Темна", + "@dark": {}, + "true_black": "Справжній чорний?", + "@true_black": {}, + "data": "Дані", + "@data": {}, + "import": "Імпорт", + "@import": {}, + "import_data_from_another_device": "Імпортуйте дані з іншого пристрою", + "@import_data_from_another_device": {}, + "legacy_android_import": "Застарілий імпорт Android", + "@legacy_android_import": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "Файл не існує. Переконайтеся, що він знаходиться за адресою {filePath}", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "Будь ласка, переконайтеся, що дані, які ви хочете імпортувати, знаходяться там, а потім натисніть кнопку імпорту нижче.", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "Експортуйте свої дані", + "@export_your_data": {}, + "logging": "Логування", + "@logging": {}, + "enable_": "Увімкнути ?", + "@enable_": {}, + "about": "Про Quacker", + "@about": {}, + "contribute": "Зробити внесок", + "@contribute": {}, + "all_the_great_software_used_by_fritter": "Все чудове програмне забезпечення, яке використовує Quacker", + "@all_the_great_software_used_by_fritter": {}, + "fritter": "Quacker", + "@fritter": {}, + "released_under_the_mit_license": "Випущено за ліцензією MIT", + "@released_under_the_mit_license": {}, + "all": "Все", + "@all": {}, + "newTrans": "Нове", + "@newTrans": {}, + "no": "Ні", + "@no": {}, + "yes": "Так", + "@yes": {}, + "yes_please": "Так, будь ласка", + "@yes_please": {}, + "are_you_sure": "Ви впевнені?", + "@are_you_sure": {}, + "toggle_all": "Перемкнути все", + "@toggle_all": {}, + "enter_your_twitter_username": "Введіть своє ім'я користувача у Twitter", + "@enter_your_twitter_username": {}, + "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "Будь ласка, зверніть увагу, що метод, який використовує Quacker для імпорту підписок, сильно обмежений Twitter, тому він може не спрацювати, якщо у вас багато акаунтів, на які ви підписані.", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "Ваш профіль має бути публічним, інакше імпорт не спрацює", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "delete": "Видалити", + "@delete": {}, + "ok": "Добре", + "@ok": {}, + "please_enter_a_name": "Будь ласка, введіть ім'я", + "@please_enter_a_name": {}, + "name": "Ім'я", + "@name": {}, + "pick_a_color": "Вибери колір!", + "@pick_a_color": {}, + "pick_an_icon": "Вибери піктограму!", + "@pick_an_icon": {}, + "search": "Пошук", + "@search": {}, + "no_results_for": "Нічого не знайдено для:", + "@no_results_for": {}, + "close": "Закрити", + "@close": {}, + "import_subscriptions": "Імпорт підписок", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "Щоб імпортувати підписки з наявного облікового запису Twitter, введіть своє ім'я користувача нижче.", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "Якщо у вас є відгуки про цю функцію, будь ласка, залиште їх на", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "the_github_issue": "GitHub issue (#143)", + "@the_github_issue": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "Вибір окремих облікових записів для імпорту та призначення груп вже заплановано на майбутнє!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "username": "Ім'я користувача", + "@username": {}, + "unable_to_import": "Не вдалося імпортувати", + "@unable_to_import": {}, + "imported_snapshot_data_users_so_far": "{snapshotData} імпортованих користувачів", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "Завершено з {snapshotData} користувачами", + "@finished_with_snapshotData_users": {}, + "no_subscriptions_try_searching_or_importing_some": "Немає підписок. Спробуйте пошукати або імпортувати!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "import_from_twitter": "Імпортувати з Twitter", + "@import_from_twitter": {}, + "unable_to_refresh_the_subscriptions": "Не вдалося оновити підписки", + "@unable_to_refresh_the_subscriptions": {}, + "groups": "Групи", + "@groups": {}, + "date_created": "Дата створення", + "@date_created": {}, + "date_subscribed": "Дата підписки", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "Не вдалося завантажити тренди для {widgetPlaceName}", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "unable_to_find_the_available_trend_locations": "Не вдалося знайти доступні місцеположення трендів.", + "@unable_to_find_the_available_trend_locations": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "Немає повернених трендів. Це неочікувано! Будь ласка, повідомте про помилку, якщо можливо.", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {} +} diff --git a/lib/l10n/intl_zh_Hans.arb b/lib/l10n/intl_zh_Hans.arb new file mode 100644 index 00000000..6954b8d8 --- /dev/null +++ b/lib/l10n/intl_zh_Hans.arb @@ -0,0 +1,492 @@ +{ + "unsubscribe": "取消订阅", + "@unsubscribe": {}, + "subscribe": "订阅", + "@subscribe": {}, + "this_group_contains_no_subscriptions": "该组不包含任何订阅!", + "@this_group_contains_no_subscriptions": {}, + "could_not_find_any_tweets_by_this_user": "找不到该用户的任何推文!", + "@could_not_find_any_tweets_by_this_user": {}, + "unable_to_load_the_next_page_of_replies": "无法载入下一页回复", + "@unable_to_load_the_next_page_of_replies": {}, + "unable_to_load_subscription_groups": "无法载入订阅组", + "@unable_to_load_subscription_groups": {}, + "add_to_group": "添加到订阅组", + "@add_to_group": {}, + "unable_to_load_the_tweet": "无法载入这条推文", + "@unable_to_load_the_tweet": {}, + "reporting_an_error": "发送错误报告", + "@reporting_an_error": {}, + "would_you_like_to_enable_automatic_error_reporting": "您希望自动发送错误报告吗?", + "@would_you_like_to_enable_automatic_error_reporting": {}, + "your_report_will_be_sent_to_fritter__project": "您的报告将被发送至 Quacker 的 项目,隐私详情可在下述位置找到:", + "@your_report_will_be_sent_to_fritter__project": {}, + "send_once": "发送一次", + "@send_once": {}, + "send_always": "总是发送", + "@send_always": {}, + "don_not_send": "不要发送", + "@don_not_send": {}, + "never_send": "从不发送", + "@never_send": {}, + "an_error_was_reported_to__thank_you": "已向 报告了一个错误。感谢!", + "@an_error_was_reported_to__thank_you": {}, + "unable_to_load_the_next_page_of_tweets": "无法载入下一页的推文", + "@unable_to_load_the_next_page_of_tweets": {}, + "could_not_find_any_tweets_from_the_last_7_days": "找不到过去 7 天的任何推文!", + "@could_not_find_any_tweets_from_the_last_7_days": {}, + "unable_to_load_the_group": "无法加载该组", + "@unable_to_load_the_group": {}, + "unable_to_load_the_group_settings": "无法加载订阅组的设置", + "@unable_to_load_the_group_settings": {}, + "filters": "过滤器", + "@filters": {}, + "note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": "注:由于 Twitter 的限制,可能不会包含所有推文", + "@note_due_to_a_twitter_limitation_not_all_tweets_may_be_included": {}, + "include_retweets": "包括转推", + "@include_retweets": {}, + "unable_to_find_your_saved_tweets": "无法找到您保存的推文。", + "@unable_to_find_your_saved_tweets": {}, + "you_have_not_saved_any_tweets_yet": "您尚未保存任何推文!", + "@you_have_not_saved_any_tweets_yet": {}, + "no_results": "没有结果", + "@no_results": {}, + "subscriptions": "订阅", + "@subscriptions": {}, + "trending": "趋势", + "@trending": {}, + "unable_to_load_the_tweets_for_the_feed": "无法载入最新推文", + "@unable_to_load_the_tweets_for_the_feed": {}, + "feed": "最新", + "@feed": {}, + "saved": "书签", + "@saved": {}, + "unable_to_load_the_list_of_follows": "无法加载关注列表", + "@unable_to_load_the_list_of_follows": {}, + "unable_to_load_the_next_page_of_follows": "无法载入下一页关注列表", + "@unable_to_load_the_next_page_of_follows": {}, + "this_user_does_not_follow_anyone": "该用户没有关注任何人!", + "@this_user_does_not_follow_anyone": {}, + "unable_to_load_the_tweets": "无法载入推文", + "@unable_to_load_the_tweets": {}, + "unable_to_load_the_profile": "无法载入个人资料", + "@unable_to_load_the_profile": {}, + "tweets": "推文", + "@tweets": {}, + "tweets_and_replies": "推文和回复", + "@tweets_and_replies": {}, + "media": "媒体", + "@media": {}, + "following": "正在关注", + "@following": {}, + "followers": "关注者", + "@followers": {}, + "joined": "加入于 {date}", + "@joined": {}, + "export": "导出", + "@export": {}, + "data_exported_to_fullPath": "导出数据至路径 {fullPath}", + "@data_exported_to_fullPath": {}, + "data_exported_to_fileName": "导出数据至文件 {fileName}", + "@data_exported_to_fileName": {}, + "export_subscription_groups": "导出订阅组?", + "@export_subscription_groups": {}, + "export_subscription_group_members": "导出订阅组成员?", + "@export_subscription_group_members": {}, + "export_tweets": "导出推文?", + "@export_tweets": {}, + "data_imported_successfully": "数据导入成功", + "@data_imported_successfully": {}, + "it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": "看来你已用这个版本的 Quacker 打过招呼了!", + "@it_looks_like_you_have_already_said_hello_from_this_version_of_fritter": {}, + "thanks_for_helping_fritter": "感谢您帮助 Quacker!💖", + "@thanks_for_helping_fritter": {}, + "it_looks_like_you_have_already_sent_a_ping_recently": "您最近似乎已经 Ping 过一次了 🤔", + "@it_looks_like_you_have_already_sent_a_ping_recently": {}, + "unable_to_send_the_ping_the_status_code_was_response_statusCode": "无法发送 Ping。状态代码为 {statusCode}", + "@unable_to_send_the_ping_the_status_code_was_response_statusCode": {}, + "timed_out_trying_to_send_the_ping": "Ping 传输超时 😢", + "@timed_out_trying_to_send_the_ping": {}, + "unable_to_send_the_ping_e_to_string": "无法发送 Ping。{e}", + "@unable_to_send_the_ping_e_to_string": {}, + "say_hello_emoji": "打招呼👋", + "@say_hello_emoji": {}, + "say_hello": "打招呼", + "@say_hello": {}, + "general": "通用", + "@general": {}, + "media_size": "媒体尺寸", + "@media_size": {}, + "disabled": "不显示", + "@disabled": {}, + "something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": "Quacker 刚刚出了点问题,并生成了错误报告。可将该报告发送给 Quacker 开发者以帮助解决问题。", + "@something_just_went_wrong_in_fritter_and_an_error_report_has_been_generated": {}, + "thanks_for_reporting_we_will_try_and_fix_it_in_no_time": "感谢您的反馈。我们将尽快修复它!", + "@thanks_for_reporting_we_will_try_and_fix_it_in_no_time": {}, + "include_replies": "包括回复", + "@include_replies": {}, + "unable_to_load_the_search_results": "无法载入搜索结果。", + "@unable_to_load_the_search_results": {}, + "this_user_does_not_have_anyone_following_them": "该用户无人关注!", + "@this_user_does_not_have_anyone_following_them": {}, + "export_settings": "导出设置?", + "@export_settings": {}, + "export_subscriptions": "导出订阅?", + "@export_subscriptions": {}, + "cancel": "取消", + "@cancel": {}, + "here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": "这是将要发送的数据,仅用于识别 Quacker 未来应该支持的设备和语言。", + "@here_is_the_data_that_will_be_sent_it_will_only_be_used_to_determine_which_devices_and_languages_to_support_in_fritter_in_the_future": {}, + "send": "发送", + "@send": {}, + "send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": "向开发人员发送匿名 Ping 以表明您正在使用 Quacker,并支持未来的开发", + "@send_a_non_identifying_ping_to_let_me_know_you_are_using_fritter_and_to_help_future_development": {}, + "default_tab": "默认页面", + "@default_tab": {}, + "save_bandwidth_using_smaller_images": "使用较小的图像以节省带宽", + "@save_bandwidth_using_smaller_images": {}, + "which_tab_is_shown_when_the_app_opens": "打开应用时显示哪个页面", + "@which_tab_is_shown_when_the_app_opens": {}, + "thumbnail": "缩略图", + "@thumbnail": {}, + "medium": "中", + "@medium": {}, + "theme": "主题", + "@theme": {}, + "system": "跟随系统", + "@system": {}, + "light": "亮色主题", + "@light": {}, + "dark": "暗色主题", + "@dark": {}, + "true_black": "纯黑模式?", + "@true_black": {}, + "use_true_black_for_the_dark_mode_theme": "在暗色主题中使用纯黑", + "@use_true_black_for_the_dark_mode_theme": {}, + "data": "数据", + "@data": {}, + "import": "导入", + "@import": {}, + "legacy_android_import": "从旧的 Android 设备导入", + "@legacy_android_import": {}, + "prefix": "字首", + "@prefix": {}, + "please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": "请确保您要导入的数据位于此处,然后点击下方的导入按钮。", + "@please_make_sure_the_data_you_wish_to_import_is_located_there_then_press_the_import_button_below": {}, + "export_your_data": "导出您的数据", + "@export_your_data": {}, + "about": "关于", + "@about": {}, + "version": "版本", + "@version": {}, + "copied_version_to_clipboard": "已复制版本号", + "@copied_version_to_clipboard": {}, + "logging": "日志", + "@logging": {}, + "contribute": "贡献 💖", + "@contribute": {}, + "whether_errors_should_be_reported_to_": "是否向 发送错误?👀", + "@whether_errors_should_be_reported_to_": {}, + "enable_": "启用 ?", + "@enable_": {}, + "report_a_bug": "报告 Bug 🐞", + "@report_a_bug": {}, + "let_the_developers_know_if_something_is_broken": "有问题请告诉开发者🐦", + "@let_the_developers_know_if_something_is_broken": {}, + "donate": "捐赠", + "@donate": {}, + "help_support_fritters_future": "帮助支持 Quacker 的未来🍚", + "@help_support_fritters_future": {}, + "copied_address_to_clipboard": "已将地址复制到剪切板", + "@copied_address_to_clipboard": {}, + "licenses": "许可证", + "@licenses": {}, + "all_the_great_software_used_by_fritter": "Quacker 所使用的伟大项目😇", + "@all_the_great_software_used_by_fritter": {}, + "released_under_the_mit_license": "以 MIT 许可证发布", + "@released_under_the_mit_license": {}, + "all": "全部", + "@all": {}, + "newTrans": "新的", + "@newTrans": {}, + "no": "不", + "@no": {}, + "yes": "好", + "@yes": {}, + "fritter": "Quacker", + "@fritter": {}, + "toggle_all": "全选", + "@toggle_all": {}, + "delete": "删除", + "@delete": {}, + "ok": "确定", + "@ok": {}, + "name": "取个名字", + "@name": {}, + "please_enter_a_name": "请输入订阅组名称", + "@please_enter_a_name": {}, + "pick_a_color": "挑一种颜色吧!", + "@pick_a_color": {}, + "import_subscriptions": "导入订阅", + "@import_subscriptions": {}, + "to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": "要从现有的 Twitter 账号导入订阅,请在下方输入您的用户名。", + "@to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below": {}, + "if_you_have_any_feedback_on_this_feature_please_leave_it_on": "如果您对此功能有任何反馈,请留言于", + "@if_you_have_any_feedback_on_this_feature_please_leave_it_on": {}, + "enter_your_twitter_username": "输入您的 Twitter 用户名", + "@enter_your_twitter_username": {}, + "your_profile_must_be_public_otherwise_the_import_will_not_work": "你的个人资料必须是公开的,否则无法导入", + "@your_profile_must_be_public_otherwise_the_import_will_not_work": {}, + "username": "用户名", + "@username": {}, + "unable_to_import": "无法导入", + "@unable_to_import": {}, + "no_subscriptions_try_searching_or_importing_some": "没有订阅。尝试搜索或导入一些!", + "@no_subscriptions_try_searching_or_importing_some": {}, + "selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": "未来我们会支持导入单个账号到指定组!", + "@selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already": {}, + "import_from_twitter": "从 Twitter 导入", + "@import_from_twitter": {}, + "imported_snapshot_data_users_so_far": "已导入 {snapshotData} 名用户", + "@imported_snapshot_data_users_so_far": {}, + "finished_with_snapshotData_users": "{snapshotData} 个用户已导入完成", + "@finished_with_snapshotData_users": {}, + "groups": "订阅组", + "@groups": {}, + "date_created": "创建日期", + "@date_created": {}, + "date_subscribed": "订阅日期", + "@date_subscribed": {}, + "unable_to_load_the_trends_for_widget_place_name": "无法加载 {widgetPlaceName} 的趋势", + "@unable_to_load_the_trends_for_widget_place_name": {}, + "there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": "没有返回的趋势。这是出乎意料的!如果可能,请反馈错误。", + "@there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible": {}, + "unable_to_find_the_available_trend_locations": "无法找到可用的趋势位置。", + "@unable_to_find_the_available_trend_locations": {}, + "country": "国家", + "@country": {}, + "unable_to_stream_the_trend_location_preference": "无法传输趋势位置首选项", + "@unable_to_stream_the_trend_location_preference": {}, + "trends": "趋势", + "@trends": {}, + "ended_timeago_format_endsAt_allowFromNow_true": "{timeagoFormat} 已结束", + "@ended_timeago_format_endsAt_allowFromNow_true": {}, + "ends_timeago_format_endsAt_allowFromNow_true": "{timeagoFormat} 结束", + "@ends_timeago_format_endsAt_allowFromNow_true": {}, + "numberFormat_format_total_votes": "{num, plural, zero{0 票} one{1 票} two{2 票} few{{numFormatted} 票} many{{numFormatted} 票} other{{numFormatted} 票}}", + "@numberFormat_format_total_votes": {}, + "tap_to_show_getMediaType_item_type": "点击 {getMediaType} 显示", + "@tap_to_show_getMediaType_item_type": {}, + "unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": "无法保存媒体。Twitter 返回的状态是 {responseStatusCode}", + "@unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode": {}, + "downloading_media": "正在下载媒体...", + "@downloading_media": {}, + "unknown": "未知", + "@unknown": {}, + "playback_speed": "播放速度", + "@playback_speed": {}, + "subtitles": "字幕", + "@subtitles": {}, + "live": "LIVE", + "@live": {}, + "download": "下载", + "@download": {}, + "this_tweet_user_name_retweeted": "{thisTweetUserName} 于 {timeAgo} 前转推了", + "@this_tweet_user_name_retweeted": {}, + "replying_to": "回复", + "@replying_to": {}, + "this_tweet_is_unavailable": "此推文不可用。它可能已被删除。", + "@this_tweet_is_unavailable": {}, + "pinned_tweet": "置顶推文", + "@pinned_tweet": {}, + "thread": "时间线", + "@thread": {}, + "unsave": "取消保存", + "@unsave": {}, + "save": "保存", + "@save": {}, + "share_tweet_content": "分享推特内容", + "@share_tweet_content": {}, + "share_tweet_link": "分享推特链接", + "@share_tweet_link": {}, + "private_profile": "个人简介", + "@private_profile": {}, + "user_not_found": "未找到用户", + "@user_not_found": {}, + "account_suspended": "账号已被冻结", + "@account_suspended": {}, + "catastrophic_failure": "致命问题", + "@catastrophic_failure": {}, + "back": "返回", + "@back": {}, + "could_not_contact_twitter": "无法访问 Twitter", + "@could_not_contact_twitter": {}, + "timed_out": "超时", + "@timed_out": {}, + "this_took_too_long_to_load_please_check_your_network_connection": "加载时间太长了。 检查您的网络连接!", + "@this_took_too_long_to_load_please_check_your_network_connection": {}, + "oops_something_went_wrong": "哎呀!出了点问题 🥲", + "@oops_something_went_wrong": {}, + "report": "报告", + "@report": {}, + "updates": "更新", + "@updates": {}, + "when_a_new_app_update_is_available": "当有更新可用时", + "@when_a_new_app_update_is_available": {}, + "an_update_for_fritter_is_available": "Quacker 有新版本 🚀", + "@an_update_for_fritter_is_available": {}, + "tap_to_download_release_version": "点击下载 {releaseVersion}", + "@tap_to_download_release_version": {}, + "update_to_release_version_through_your_fdroid_client": "从 F-Droid 客户端更新 {releaseVersion}", + "@update_to_release_version_through_your_fdroid_client": {}, + "fritter_blue": "Quacker 蓝", + "@fritter_blue": {}, + "blue_theme_based_on_the_twitter_color_scheme": "基于 Twitter 配色方案的蓝色主题", + "@blue_theme_based_on_the_twitter_color_scheme": {}, + "something_broke_in_fritter": "Quacker 发生异常。", + "@something_broke_in_fritter": {}, + "unable_to_run_the_database_migrations": "无法进行数据迁移", + "@unable_to_run_the_database_migrations": {}, + "import_data_from_another_device": "从其他设备导入数据", + "@import_data_from_another_device": {}, + "small": "小", + "@small": {}, + "large": "大", + "@large": {}, + "the_file_does_not_exist_please_ensure_it_is_located_at_file_path": "文件不存在。请确保它位于 {filePath} 的位置", + "@the_file_does_not_exist_please_ensure_it_is_located_at_file_path": {}, + "help_make_fritter_even_better": "一起改进 Quacker,让它变得更好😉", + "@help_make_fritter_even_better": {}, + "are_you_sure": "你确定吗?", + "@are_you_sure": {}, "please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": "请注意,Quacker 用于导入订阅的方法受到 Twitter 严格的速率限制,因此如果您有很多关注账号,这可能会失败。", + "@please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts": {}, + "are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": "您确定要删除订阅组 {name} 吗?", + "@are_you_sure_you_want_to_delete_the_subscription_group_name_of_group": {}, "tweets_number": "{num, plural, zero{0 推文} one{1 推文} two{2 推文} few{{numFormatted} 推文} many{{numFormatted} 推文} other{{numFormatted}推文}}", + "@tweets_number": {}, + "successfully_saved_the_media": "已保存媒体文件!", + "@successfully_saved_the_media": {}, + "sorry_the_replied_tweet_could_not_be_found": "对不起,无法找到回复的推文!", + "@sorry_the_replied_tweet_could_not_be_found": {}, + "retry": "重试", + "@retry": {}, + "the_tweet_did_not_contain_any_text_this_is_unexpected": "该推文不包含任何文字", + "@the_tweet_did_not_contain_any_text_this_is_unexpected": {}, + "please_check_your_internet_connection_error_message": "请检查您的网络连接。\n\n{errorMessage}", + "@please_check_your_internet_connection_error_message": {}, + "no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": "没有返回任何数据,这不应该发生。如果可能,请反馈错误!", + "@no_data_was_returned_which_should_never_happen_please_report_a_bug_if_possible": {}, + "select": "选择", + "@select": {}, + "close": "关闭", + "@close": {}, + "share_tweet_content_and_link": "分享推文内容和链接", + "@share_tweet_content_and_link": {}, + "download_handling_type_ask": "始终询问", + "@download_handling_type_ask": {}, + "download_handling_type_directory": "保存到目录", + "@download_handling_type_directory": {}, + "download_path": "下载路径", + "@download_path": {}, + "permission_not_granted": "未授予权限。 请在授权后重试!", + "@permission_not_granted": {}, + "open_app_settings": "打开应用设置", + "@open_app_settings": {}, + "not_set": "未设置", + "@not_set": {}, + "should_check_for_updates_label": "检查更新", + "@should_check_for_updates_label": {}, + "download_handling_description": "下载应该如何工作", + "@download_handling_description": {}, + "pick_an_icon": "挑选图标!", + "@pick_an_icon": {}, + "search": "搜索", + "@search": {}, + "the_github_issue": "GitHub Issue (#143)", + "@the_github_issue": {}, + "choose": "选择", + "@choose": {}, + "no_results_for": "搜索词无结果:", + "@no_results_for": {}, + "should_check_for_updates_description": "Quacker 启动时检查更新", + "@should_check_for_updates_description": {}, + "download_handling": "下载处理", + "@download_handling": {}, + "unable_to_refresh_the_subscriptions": "无法刷新订阅", + "@unable_to_refresh_the_subscriptions": {}, + "page_not_found": "Twitter 说该页面不存在,但这可能不是真的", + "@page_not_found": {}, + "forbidden": "Twitter 表示禁止访问此内容", + "@forbidden": {}, + "bad_guest_token": "Twitter 使我们的访问令牌无效。请尝试重新打开 Quacker!", + "@bad_guest_token": {}, + "language": "语言", + "@language": {}, + "language_subtitle": "需要重启应用", + "@language_subtitle": {}, + "download_media_no_url": "无法下载。 此媒体可能仅作为在线流提供,Quacker 尚无法下载。", + "@download_media_no_url": {}, + "theme_mode": "主题模式", + "@theme_mode": {}, + "yes_please": "是,请让我看", + "@yes_please": {}, + "possibly_sensitive": "潜在敏感", + "@possibly_sensitive": {}, + "possibly_sensitive_tweet": "该推文包含潜在的敏感内容。是否浏览?", + "@possibly_sensitive_tweet": {}, + "possibly_sensitive_profile": "该个人资料可能包含潜在的敏感图像、语言或其他内容。是否仍要浏览?", + "@possibly_sensitive_profile": {}, + "hide_sensitive_tweets": "隐藏敏感推文", + "@hide_sensitive_tweets": {}, + "whether_to_hide_tweets_marked_as_sensitive": "是否隐藏被标记为敏感的推文", + "@whether_to_hide_tweets_marked_as_sensitive": {}, + "confirm_close_fritter": "确定要关闭 Quacker 吗?", + "@confirm_close_fritter": {}, + "search_term": "搜索词", + "@search_term": {}, + "activate_non_confirmation_bias_mode_description": "隐藏推文作者以避免基于权威论据的确认偏向。", + "@activate_non_confirmation_bias_mode_description": {}, + "activate_non_confirmation_bias_mode_label": "激活非确认偏向模式", + "@activate_non_confirmation_bias_mode_label": {}, + "group_name": "组:{name}", + "@group_name": {}, + "home": "主页", + "@home": {}, + "unable_to_load_home_pages": "无法加载主页", + "@unable_to_load_home_pages": {}, + "reset_home_pages": "将页面重置为默认值", + "@reset_home_pages": {}, + "you_must_have_at_least_2_home_screen_pages": "必须至少有 2 个主屏幕页面", + "@you_must_have_at_least_2_home_screen_pages": {}, + "disable_screenshots": "禁用截屏", + "@disable_screenshots": {}, + "disable_screenshots_hint": "防止截屏。可能不适用于所有设备。", + "@disable_screenshots_hint": {}, + "only_public_subscriptions_can_be_imported": "只能从公开的个人资料页导入订阅", + "@only_public_subscriptions_can_be_imported": {}, + "unsupported_url": "不受支持的 URL", + "@unsupported_url": {}, + "saved_tweet_too_large": "无法显示这条已保存的推文,因其太大导致难以加载。请将它报告给开发者。", + "@saved_tweet_too_large": {}, + "missing_page": "缺失的页面", + "@missing_page": {}, + "two_home_pages_required": "你需要有至少 2 个主屏页面。", + "@two_home_pages_required": {}, + "choose_pages": "选择页面", + "@choose_pages": {}, + "finish": "完毕", + "@finish": {}, + "share_base_url": "自定义分享 URL", + "@share_base_url": {}, + "share_base_url_description": "分享时使用自定义的基 URL", + "@share_base_url_description": {}, + "next": "下一条", + "@next": {}, + "mute_videos": "将视频静音", + "@mute_videos": {}, + "mute_video_description": "是否应默认将视频静音", + "@mute_video_description": {}, + "add_subscriptions": "添加订阅", + "@add_subscriptions": {}, + "functionality_unsupported": "Twitter 不再支持此功能!", + "@functionality_unsupported": {} +} diff --git a/lib/loading.dart b/lib/loading.dart new file mode 100644 index 00000000..d42a3f24 --- /dev/null +++ b/lib/loading.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +class LoadingStack extends StatelessWidget { + final bool loading; + final Widget child; + + const LoadingStack({Key? key, required this.loading, required this.child}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Stack( + fit: StackFit.loose, + children: [ + AnimatedOpacity( + opacity: loading ? 0.0 : 1.0, + duration: const Duration(milliseconds: 500), + child: child, + ), + Center( + child: Padding( + padding: const EdgeInsets.all(64), + child: AnimatedOpacity( + opacity: loading ? 1.0 : 0.0, + duration: const Duration(milliseconds: 200), + child: const CircularProgressIndicator(), + ), + ), + ), + ], + ); + } +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 00000000..ab20b751 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,576 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:developer'; +import 'dart:io'; + +import 'package:device_preview/device_preview.dart'; +import 'package:flex_color_scheme/flex_color_scheme.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_windowmanager/flutter_windowmanager.dart'; + +import 'package:quacker/constants.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/group/group_screen.dart'; +import 'package:quacker/home/home_model.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/import_data_model.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/saved/saved_tweet_model.dart'; +import 'package:quacker/search/search.dart'; +import 'package:quacker/search/search_model.dart'; +import 'package:quacker/settings/settings.dart'; +import 'package:quacker/settings/settings_export_screen.dart'; +import 'package:quacker/status.dart'; +import 'package:quacker/subscriptions/_import.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:quacker/trends/trends_model.dart'; +import 'package:quacker/tweet/_video.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:faker/faker.dart'; +import 'package:logging/logging.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:quacker/utils/urls.dart'; +import 'package:sqflite_common_ffi/sqflite_ffi.dart'; +import 'package:timeago/timeago.dart' as timeago; +import 'package:uni_links2/uni_links.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +Future checkForUpdates() async { + Logger.root.info('Checking for updates'); + + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + final client = HttpClient(); + client.userAgent = faker.internet.userAgent(); + + final request = await client.getUrl(Uri.parse("https://api.github.com/repos/thehcj/quacker/releases/latest")); + final response = await request.close(); + + if (response.statusCode == 200) { + final contentAsString = await utf8.decodeStream(response); + final Map map = json.decode(contentAsString); + if (map["tag_name"] != null) { + if (map["tag_name"] != 'v${packageInfo.version}') { + await FlutterLocalNotificationsPlugin().show( + 0, + 'An update for Quacker is available! 🚀', + 'View version ${map["tag_name"]} on Github', + const NotificationDetails( + android: AndroidNotificationDetails( + 'updates', + 'Updates', + channelDescription: 'When a new app update is available show a notification', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + )), + payload: map['html_url']); + } else if (map['html_url'].isEmpty) { + Logger.root.severe('Unable to check for updates'); + } + } + } +} + +class UnableToCheckForUpdatesException { + final String body; + + UnableToCheckForUpdatesException(this.body); + + @override + String toString() { + return 'Unable to check for updates: {body: $body}'; + } +} + +setTimeagoLocales() { + timeago.setLocaleMessages('ar', timeago.ArMessages()); + timeago.setLocaleMessages('az', timeago.AzMessages()); + timeago.setLocaleMessages('ca', timeago.CaMessages()); + timeago.setLocaleMessages('cs', timeago.CsMessages()); + timeago.setLocaleMessages('da', timeago.DaMessages()); + timeago.setLocaleMessages('de', timeago.DeMessages()); + timeago.setLocaleMessages('dv', timeago.DvMessages()); + timeago.setLocaleMessages('en', timeago.EnMessages()); + timeago.setLocaleMessages('es', timeago.EsMessages()); + timeago.setLocaleMessages('fa', timeago.FaMessages()); + timeago.setLocaleMessages('fr', timeago.FrMessages()); + timeago.setLocaleMessages('gr', timeago.GrMessages()); + timeago.setLocaleMessages('he', timeago.HeMessages()); + timeago.setLocaleMessages('he', timeago.HeMessages()); + timeago.setLocaleMessages('hi', timeago.HiMessages()); + timeago.setLocaleMessages('id', timeago.IdMessages()); + timeago.setLocaleMessages('it', timeago.ItMessages()); + timeago.setLocaleMessages('ja', timeago.JaMessages()); + timeago.setLocaleMessages('km', timeago.KmMessages()); + timeago.setLocaleMessages('ko', timeago.KoMessages()); + timeago.setLocaleMessages('ku', timeago.KuMessages()); + timeago.setLocaleMessages('mn', timeago.MnMessages()); + timeago.setLocaleMessages('ms_MY', timeago.MsMyMessages()); + timeago.setLocaleMessages('nb_NO', timeago.NbNoMessages()); + timeago.setLocaleMessages('nl', timeago.NlMessages()); + timeago.setLocaleMessages('nn_NO', timeago.NnNoMessages()); + timeago.setLocaleMessages('pl', timeago.PlMessages()); + timeago.setLocaleMessages('pt_BR', timeago.PtBrMessages()); + timeago.setLocaleMessages('ro', timeago.RoMessages()); + timeago.setLocaleMessages('ru', timeago.RuMessages()); + timeago.setLocaleMessages('sv', timeago.SvMessages()); + timeago.setLocaleMessages('ta', timeago.TaMessages()); + timeago.setLocaleMessages('th', timeago.ThMessages()); + timeago.setLocaleMessages('tr', timeago.TrMessages()); + timeago.setLocaleMessages('uk', timeago.UkMessages()); + timeago.setLocaleMessages('vi', timeago.ViMessages()); + timeago.setLocaleMessages('zh_CN', timeago.ZhCnMessages()); + timeago.setLocaleMessages('zh', timeago.ZhMessages()); +} + +Future main() async { + Logger.root.onRecord.listen((event) async { + log(event.message, error: event.error, stackTrace: event.stackTrace); + }); + + if (Platform.isLinux) { + sqfliteFfiInit(); + databaseFactory = databaseFactoryFfi; + } + + WidgetsFlutterBinding.ensureInitialized(); + + setTimeagoLocales(); + + final prefService = await PrefServiceShared.init(prefix: 'pref_', defaults: { + optionDisableScreenshots: false, + optionDownloadPath: '', + optionDownloadType: optionDownloadTypeAsk, + optionHomePages: defaultHomePages.map((e) => e.id).toList(), + optionLocale: optionLocaleDefault, + optionHomeInitialTab: 'feed', + optionMediaSize: 'medium', + optionMediaDefaultMute: true, + optionNonConfirmationBiasMode: false, + optionShouldCheckForUpdates: true, + optionSubscriptionGroupsOrderByAscending: true, + optionSubscriptionGroupsOrderByField: 'name', + optionSubscriptionOrderByAscending: true, + optionSubscriptionOrderByField: 'name', + optionThemeMode: 'system', + optionThemeTrueBlack: false, + optionThemeColorScheme: 'gold', + optionTweetsHideSensitive: true, + optionUserTrendsLocations: jsonEncode({ + 'active': {'name': 'Worldwide', 'woeid': 1}, + 'locations': [ + {'name': 'Worldwide', 'woeid': 1} + ] + }), + }); + + FlutterLocalNotificationsPlugin notifications = FlutterLocalNotificationsPlugin(); + + const InitializationSettings settings = + InitializationSettings(android: AndroidInitializationSettings('@drawable/ic_notification')); + + await notifications.initialize(settings, onDidReceiveNotificationResponse: (response) async { + var payload = response.payload; + if (payload != null && payload.startsWith('https://')) { + await openUri(payload); + } + }); + + var shouldCheckForUpdates = prefService.get(optionShouldCheckForUpdates); + if (shouldCheckForUpdates) { + // Don't check for updates if user disabled it. + checkForUpdates(); + } + + // Run the migrations early, so models work. We also do this later on so we can display errors to the user + try { + await Repository().migrate(); + } catch (_) { + // Ignore, as we'll catch it later instead + } + + var importDataModel = ImportDataModel(); + + var groupsModel = GroupsModel(prefService); + await groupsModel.reloadGroups(); + + var homeModel = HomeModel(prefService, groupsModel); + await homeModel.loadPages(); + + var subscriptionsModel = SubscriptionsModel(prefService, groupsModel); + await subscriptionsModel.reloadSubscriptions(); + + var trendLocationModel = UserTrendLocationModel(prefService); + + runApp(PrefService( + service: prefService, + child: MultiProvider( + providers: [ + Provider(create: (context) => groupsModel), + Provider(create: (context) => homeModel), + ChangeNotifierProvider(create: (context) => importDataModel), + Provider(create: (context) => subscriptionsModel), + Provider(create: (context) => SavedTweetModel()), + Provider(create: (context) => SearchTweetsModel()), + Provider(create: (context) => SearchUsersModel()), + Provider(create: (context) => trendLocationModel), + Provider(create: (context) => TrendLocationsModel()), + Provider(create: (context) => TrendsModel(trendLocationModel)), + ChangeNotifierProvider(create: (_) => VideoContextState(prefService.get(optionMediaDefaultMute))), + ], + child: DevicePreview( + enabled: !kReleaseMode, + builder: (context) => const FritterApp(), + ), + ))); +} + +class FritterApp extends StatefulWidget { + const FritterApp({Key? key}) : super(key: key); + + @override + State createState() => _FritterAppState(); +} + +class _FritterAppState extends State { + static final log = Logger('_MyAppState'); + + String _themeMode = 'system'; + bool _trueBlack = false; + FlexScheme _colorScheme = FlexScheme.gold; + Locale? _locale; + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + + var prefService = PrefService.of(context); + + void setLocale(String? locale) { + if (locale == null || locale == optionLocaleDefault) { + _locale = null; + } else { + var splitLocale = locale.split('-'); + if (splitLocale.length == 1) { + _locale = Locale(splitLocale[0]); + } else { + _locale = Locale(splitLocale[0], splitLocale[1]); + } + } + } + + void setColorScheme(String colorSchemeName) { + _colorScheme = FlexScheme.values.byName(colorSchemeName); + } + + // TODO: This doesn't work on iOS + void setDisableScreenshots(final bool secureModeEnabled) async { + if (secureModeEnabled) { + await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE); + } else { + await FlutterWindowManager.clearFlags(FlutterWindowManager.FLAG_SECURE); + } + } + + // Set any already-enabled preferences + setState(() { + setLocale(prefService.get(optionLocale)); + _themeMode = prefService.get(optionThemeMode); + _trueBlack = prefService.get(optionThemeTrueBlack); + setColorScheme(prefService.get(optionThemeColorScheme)); + setDisableScreenshots(prefService.get(optionDisableScreenshots)); + }); + + prefService.addKeyListener(optionShouldCheckForUpdates, () { + setState(() {}); + }); + + prefService.addKeyListener(optionLocale, () { + setState(() { + setLocale(prefService.get(optionLocale)); + }); + }); + + // Whenever the "true black" preference is toggled, apply the toggle + prefService.addKeyListener(optionThemeTrueBlack, () { + setState(() { + _trueBlack = prefService.get(optionThemeTrueBlack); + }); + }); + + prefService.addKeyListener(optionThemeMode, () { + setState(() { + _themeMode = prefService.get(optionThemeMode); + }); + }); + + prefService.addKeyListener(optionThemeColorScheme, () { + setState(() { + setColorScheme(prefService.get(optionThemeColorScheme)); + }); + }); + + prefService.addKeyListener(optionDisableScreenshots, () { + setState(() { + setDisableScreenshots(prefService.get(optionDisableScreenshots)); + }); + }); + } + + @override + Widget build(BuildContext context) { + ThemeMode themeMode; + switch (_themeMode) { + case 'dark': + themeMode = ThemeMode.dark; + break; + case 'light': + themeMode = ThemeMode.light; + break; + case 'system': + themeMode = ThemeMode.system; + break; + default: + log.warning('Unknown theme mode preference: $_themeMode'); + themeMode = ThemeMode.system; + break; + } + + return MaterialApp( + localeListResolutionCallback: (locales, supportedLocales) { + List supportedLocalesCountryCode = []; + for (var item in supportedLocales) { + supportedLocalesCountryCode.add(item.countryCode); + } + + List supportedLocalesLanguageCode = []; + for (var item in supportedLocales) { + supportedLocalesLanguageCode.add(item.languageCode); + } + + locales!; + List localesCountryCode = []; + for (var item in locales) { + localesCountryCode.add(item.countryCode); + } + + List localesLanguageCode = []; + for (var item in locales) { + localesLanguageCode.add(item.languageCode); + } + + for (var i = 0; i < locales.length; i++) { + if (supportedLocalesCountryCode.contains(localesCountryCode[i]) && + supportedLocalesLanguageCode.contains(localesLanguageCode[i])) { + log.info('Yes country: ${localesCountryCode[i]}, ${localesLanguageCode[i]}'); + return Locale(localesLanguageCode[i], localesCountryCode[i]); + } else if (supportedLocalesLanguageCode.contains(localesLanguageCode[i])) { + log.info('Yes language: ${localesLanguageCode[i]}'); + return Locale(localesLanguageCode[i]); + } else { + log.info('Nothing'); + } + } + return const Locale('en'); + }, + localizationsDelegates: const [ + L10n.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + supportedLocales: L10n.delegate.supportedLocales, + locale: _locale ?? DevicePreview.locale(context), + title: 'Quacker', + theme: FlexThemeData.light( + scheme: _colorScheme, + surfaceMode: FlexSurfaceMode.highScaffoldLowSurface, + blendLevel: 20, + appBarOpacity: 0.95, + tabBarStyle: FlexTabBarStyle.flutterDefault, + subThemesData: const FlexSubThemesData( + blendOnLevel: 20, + blendOnColors: false, + ), + visualDensity: FlexColorScheme.comfortablePlatformDensity, + useMaterial3: true, + appBarStyle: FlexAppBarStyle.primary, + ), + darkTheme: FlexThemeData.dark( + scheme: _colorScheme, + darkIsTrueBlack: _trueBlack, + surfaceMode: FlexSurfaceMode.highScaffoldLowSurface, + blendLevel: 20, + appBarOpacity: 0.95, + tabBarStyle: FlexTabBarStyle.flutterDefault, + subThemesData: const FlexSubThemesData( + blendOnLevel: 20, + blendOnColors: false, + ), + visualDensity: FlexColorScheme.comfortablePlatformDensity, + useMaterial3: true, + appBarStyle: _trueBlack ? FlexAppBarStyle.surface : FlexAppBarStyle.primary, + ), + themeMode: themeMode, + initialRoute: '/', + routes: { + routeHome: (context) => const DefaultPage(), + routeGroup: (context) => const GroupScreen(), + routeProfile: (context) => const ProfileScreen(), + routeSearch: (context) => const SearchScreen(), + routeSettings: (context) => const SettingsScreen(), + routeSettingsExport: (context) => const SettingsExportScreen(), + routeSettingsHome: (context) => const SettingsScreen(initialPage: 'home'), + routeStatus: (context) => const StatusScreen(), + routeSubscriptionsImport: (context) => const SubscriptionImportScreen() + }, + builder: (context, child) { + // Replace the default red screen of death with a slightly friendlier one + ErrorWidget.builder = (FlutterErrorDetails details) => FullPageErrorWidget( + error: details.exception, + stackTrace: details.stack, + prefix: L10n.of(context).something_broke_in_fritter, + ); + + return DevicePreview.appBuilder(context, child ?? Container()); + }, + ); + } +} + +class DefaultPage extends StatefulWidget { + const DefaultPage({Key? key}) : super(key: key); + + @override + State createState() => _DefaultPageState(); +} + +class _DefaultPageState extends State { + Object? _migrationError; + StackTrace? _migrationStackTrace; + StreamSubscription? _sub; + + void handleInitialLink(Uri link) { + // Assume it's a username if there's only one segment (or two segments with the second empty, meaning the URI ends with /) + if (link.pathSegments.length == 1 || (link.pathSegments.length == 2 && link.pathSegments.last.isEmpty)) { + Navigator.pushReplacementNamed(context, routeProfile, + arguments: ProfileScreenArguments.fromScreenName(link.pathSegments.first)); + return; + } + + if (link.pathSegments.length == 2) { + var secondSegment = link.pathSegments[1]; + + // https://twitter.com/i/redirect?url=https%3A%2F%2Ftwitter.com%2Fi%2Ftopics%2Ftweet%2F1447290060123033601 + if (secondSegment == 'redirect') { + // This is a redirect URL, so we should extract it and use that as our initial link instead + var redirect = link.queryParameters['url']; + if (redirect == null) { + // TODO + return; + } + + handleInitialLink(Uri.parse(redirect)); + return; + } + } + + if (link.pathSegments.length == 3) { + var segment2 = link.pathSegments[1]; + if (segment2 == 'status') { + // Assume it's a tweet + var username = link.pathSegments[0]; + var statusId = link.pathSegments[2]; + + Navigator.pushReplacementNamed(context, routeStatus, + arguments: StatusScreenArguments( + id: statusId, + username: username, + )); + return; + } + } + + if (link.pathSegments.length == 4) { + var segment2 = link.pathSegments[1]; + var segment3 = link.pathSegments[2]; + var segment4 = link.pathSegments[3]; + + // https://twitter.com/i/topics/tweet/1447290060123033601 + if (segment2 == 'topics' && segment3 == 'tweet') { + Navigator.pushReplacementNamed(context, routeStatus, + arguments: StatusScreenArguments(id: segment4, username: null)); + return; + } + } + } + + @override + void initState() { + super.initState(); + + // Run the database migrations + Repository().migrate().catchError((e, s) { + setState(() { + _migrationError = e; + _migrationStackTrace = s; + }); + }); + + getInitialUri().then((link) { + if (link != null) { + handleInitialLink(link); + } + + // Attach a listener to the stream + _sub = uriLinkStream.listen((link) => handleInitialLink(link!), onError: (err) { + // TODO: Handle exception by warning the user their action did not succeed + }); + }); + } + + @override + Widget build(BuildContext context) { + if (_migrationError != null || _migrationStackTrace != null) { + return ScaffoldErrorWidget( + error: _migrationError, + stackTrace: _migrationStackTrace, + prefix: L10n.of(context).unable_to_run_the_database_migrations); + } + + return WillPopScope( + onWillPop: () async { + var result = await showDialog( + context: context, + builder: (c) => AlertDialog( + title: Text(L10n.current.are_you_sure), + content: Text(L10n.current.confirm_close_fritter), + actions: [ + TextButton( + child: Text(L10n.current.no), + onPressed: () => Navigator.pop(c, false), + ), + TextButton( + child: Text(L10n.current.yes), + onPressed: () => Navigator.pop(c, true), + ), + ], + )); + + return result ?? false; + }, + child: const HomeScreen()); + } + + @override + void dispose() { + super.dispose(); + _sub?.cancel(); + } +} diff --git a/lib/models.dart b/lib/models.dart new file mode 100644 index 00000000..aa707e17 --- /dev/null +++ b/lib/models.dart @@ -0,0 +1,13 @@ +class Country { + final String flag; + final String name; + + Country(this.flag, this.name); +} + +class Instance { + final String hostname; + final String country; + + Instance(this.hostname, this.country); +} diff --git a/lib/profile/_follows.dart b/lib/profile/_follows.dart new file mode 100644 index 00000000..eb1128c1 --- /dev/null +++ b/lib/profile/_follows.dart @@ -0,0 +1,105 @@ +import 'package:flutter/material.dart'; + +import 'package:quacker/client.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/user.dart'; +import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; +import 'package:quacker/generated/l10n.dart'; + +class ProfileFollows extends StatefulWidget { + final UserWithExtra user; + final String type; + + const ProfileFollows({Key? key, required this.user, required this.type}) : super(key: key); + + @override + State createState() => _ProfileFollowsState(); +} + +class _ProfileFollowsState extends State with AutomaticKeepAliveClientMixin { + late PagingController _pagingController; + + final int _pageSize = 200; + + @override + bool get wantKeepAlive => true; + + @override + void initState() { + super.initState(); + + _pagingController = PagingController(firstPageKey: null); + _pagingController.addPageRequestListener((cursor) { + _loadFollows(cursor); + }); + } + + @override + void dispose() { + _pagingController.dispose(); + super.dispose(); + } + + Future _loadFollows(int? cursor) async { + try { + var result = await Twitter.getProfileFollows( + widget.user.screenName!, + widget.type, + cursor: cursor, + count: _pageSize, + ); + + if (!mounted) { + return; + } + + if (result.cursorBottom == _pagingController.nextPageKey) { + _pagingController.appendLastPage([]); + } else if (result.cursorBottom == 0) { + _pagingController.appendLastPage(result.users); + } else { + _pagingController.appendPage(result.users, result.cursorBottom); + } + } catch (e, stackTrace) { + if (mounted) { + _pagingController.error = [e, stackTrace]; + } + } + } + + @override + Widget build(BuildContext context) { + super.build(context); + + return PagedListView( + padding: EdgeInsets.zero, + pagingController: _pagingController, + addAutomaticKeepAlives: false, + builderDelegate: PagedChildBuilderDelegate( + itemBuilder: (context, user, index) => UserTile(user: UserSubscription.fromUser(user)), + firstPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_list_of_follows, + onRetry: () => _loadFollows(_pagingController.firstPageKey), + ), + newPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_next_page_of_follows, + onRetry: () => _loadFollows(_pagingController.nextPageKey), + ), + noItemsFoundIndicatorBuilder: (context) { + var text = widget.type == 'following' + ? L10n.of(context).this_user_does_not_follow_anyone + : L10n.of(context).this_user_does_not_have_anyone_following_them; + + return Center( + child: Text(text), + ); + }, + ), + ); + } +} diff --git a/lib/profile/_saved.dart b/lib/profile/_saved.dart new file mode 100644 index 00000000..cbdc3757 --- /dev/null +++ b/lib/profile/_saved.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/_saved.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/saved/saved_tweet_model.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/user.dart'; +import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; +import 'package:provider/provider.dart'; + +class ProfileSaved extends StatefulWidget { + final UserWithExtra user; + + const ProfileSaved({Key? key, required this.user}) : super(key: key); + + @override + State createState() => _ProfileSavedState(); +} + +class _ProfileSavedState extends State { + late final PagingController _pagingController; + + @override + void initState() { + super.initState(); + + _pagingController = PagingController(firstPageKey: null); + _pagingController.addPageRequestListener((cursor) { + _loadTweets(); + }); + } + + @override + void dispose() { + _pagingController.dispose(); + super.dispose(); + } + + Future _loadTweets() async { + var model = context.read(); + await model.listSavedTweets(); + + var savedTweets = model.state.where((tweet) => tweet.user == widget.user.idStr).toList(); + _pagingController.appendLastPage(savedTweets); + } + + @override + Widget build(BuildContext context) { + return Consumer(builder: (context, model, child) { + if (model.hideSensitive && (widget.user.possiblySensitive ?? false)) { + return EmojiErrorWidget( + emoji: '🍆🙈🍆', + message: L10n.current.possibly_sensitive, + errorMessage: L10n.current.possibly_sensitive_profile, + onRetry: () async => model.setHideSensitive(false), + retryText: L10n.current.yes_please, + ); + } + + return PagedListView( + padding: EdgeInsets.zero, + pagingController: _pagingController, + addAutomaticKeepAlives: false, + builderDelegate: PagedChildBuilderDelegate( + itemBuilder: (context, savedTweet, index) => SavedTweetTile(id: savedTweet.id, content: savedTweet.content), + firstPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_tweets, + onRetry: () => _loadTweets(), + ), + newPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_next_page_of_tweets, + onRetry: () => _loadTweets(), + ), + noItemsFoundIndicatorBuilder: (context) { + return Center( + child: Text( + L10n.of(context).you_have_not_saved_any_tweets_yet, + ), + ); + }, + ), + ); + }); + } +} diff --git a/lib/profile/_tweets.dart b/lib/profile/_tweets.dart new file mode 100644 index 00000000..75007031 --- /dev/null +++ b/lib/profile/_tweets.dart @@ -0,0 +1,121 @@ +import 'package:flutter/material.dart'; + +import 'package:quacker/client.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/tweet/conversation.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/user.dart'; +import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:provider/provider.dart'; + +class ProfileTweets extends StatefulWidget { + final UserWithExtra user; + final String type; + final bool includeReplies; + final List pinnedTweets; + + const ProfileTweets( + {Key? key, required this.user, required this.type, required this.includeReplies, required this.pinnedTweets}) + : super(key: key); + + @override + State createState() => _ProfileTweetsState(); +} + +class _ProfileTweetsState extends State with AutomaticKeepAliveClientMixin { + late PagingController _pagingController; + + static const int pageSize = 20; + + @override + bool get wantKeepAlive => true; + + @override + void initState() { + super.initState(); + + _pagingController = PagingController(firstPageKey: null); + _pagingController.addPageRequestListener((cursor) { + _loadTweets(cursor); + }); + } + + @override + void dispose() { + _pagingController.dispose(); + super.dispose(); + } + + Future _loadTweets(String? cursor) async { + try { + var result = await Twitter.getTweets(widget.user.idStr!, widget.type, widget.pinnedTweets, + cursor: cursor, count: pageSize, includeReplies: widget.includeReplies); + + if (!mounted) { + return; + } + + if (result.cursorBottom == _pagingController.nextPageKey) { + _pagingController.appendLastPage([]); + } else { + _pagingController.appendPage(result.chains, result.cursorBottom); + } + } catch (e, stackTrace) { + if (mounted) { + _pagingController.error = [e, stackTrace]; + } + } + } + + @override + Widget build(BuildContext context) { + super.build(context); + + return Consumer(builder: (context, model, child) { + if (model.hideSensitive && (widget.user.possiblySensitive ?? false)) { + return EmojiErrorWidget( + emoji: '🍆🙈🍆', + message: L10n.current.possibly_sensitive, + errorMessage: L10n.current.possibly_sensitive_profile, + onRetry: () async => model.setHideSensitive(false), + retryText: L10n.current.yes_please, + ); + } + + return RefreshIndicator( + onRefresh: () async => _pagingController.refresh(), + child: PagedListView( + padding: EdgeInsets.zero, + pagingController: _pagingController, + addAutomaticKeepAlives: false, + builderDelegate: PagedChildBuilderDelegate( + itemBuilder: (context, chain, index) { + return TweetConversation( + id: chain.id, tweets: chain.tweets, username: widget.user.screenName!, isPinned: chain.isPinned); + }, + firstPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_tweets, + onRetry: () => _loadTweets(_pagingController.firstPageKey), + ), + newPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_next_page_of_tweets, + onRetry: () => _loadTweets(_pagingController.nextPageKey), + ), + noItemsFoundIndicatorBuilder: (context) { + return Center( + child: Text( + L10n.of(context).could_not_find_any_tweets_by_this_user, + ), + ); + }, + ), + ), + ); + }); + } +} diff --git a/lib/profile/profile.dart b/lib/profile/profile.dart new file mode 100644 index 00000000..40103cc9 --- /dev/null +++ b/lib/profile/profile.dart @@ -0,0 +1,554 @@ +import 'package:extended_image/extended_image.dart'; +import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/profile/_follows.dart'; +import 'package:quacker/profile/_saved.dart'; +import 'package:quacker/profile/_tweets.dart'; +import 'package:quacker/profile/profile_model.dart'; +import 'package:quacker/search/search.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/ui/physics.dart'; +import 'package:quacker/user.dart'; +import 'package:quacker/utils/urls.dart'; +import 'package:intl/intl.dart'; +import 'package:measure_size/measure_size.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; + +class ProfileScreenArguments { + final String? id; + final String? screenName; + + ProfileScreenArguments(this.id, this.screenName); + + factory ProfileScreenArguments.fromId(String id) { + return ProfileScreenArguments(id, null); + } + + factory ProfileScreenArguments.fromScreenName(String screenName) { + return ProfileScreenArguments(null, screenName); + } +} + +class ProfileScreen extends StatelessWidget { + const ProfileScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final args = ModalRoute.of(context)!.settings.arguments as ProfileScreenArguments; + + return Provider( + create: (context) { + if (args.id != null) { + return ProfileModel()..loadProfileById(args.id!); + } else { + return ProfileModel()..loadProfileByScreenName(args.screenName!); + } + }, + child: _ProfileScreen(id: args.id, screenName: args.screenName)); + } +} + +class _ProfileScreen extends StatelessWidget { + final String? id; + final String? screenName; + + const _ProfileScreen({Key? key, required this.id, required this.screenName}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: ScopedBuilder.transition( + store: context.read(), + onError: (_, error) => FullPageErrorWidget( + error: error, + stackTrace: null, + prefix: L10n.of(context).unable_to_load_the_profile, + onRetry: () { + if (id != null) { + return context.read().loadProfileById(id!); + } else { + return context.read().loadProfileByScreenName(screenName!); + } + }, + ), + onLoading: (_) => const Center(child: CircularProgressIndicator()), + onState: (_, state) => ProfileScreenBody(profile: state), + ), + ); + } +} + +class ProfileScreenBody extends StatefulWidget { + final Profile profile; + + const ProfileScreenBody({Key? key, required this.profile}) : super(key: key); + + @override + State createState() => _ProfileScreenBodyState(); +} + +class _ProfileScreenBodyState extends State with TickerProviderStateMixin { + static const defaultHeight = 256.12345; + + final GlobalKey nestedScrollViewKey = GlobalKey(); + + late TabController _tabController; + + bool _showBackToTopButton = false; + + double descriptionHeight = defaultHeight; + double metadataHeight = defaultHeight; + + bool descriptionResized = false; + bool metadataResized = false; + + @override + void initState() { + super.initState(); + + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + var nestedScrollViewState = nestedScrollViewKey.currentState; + if (nestedScrollViewState == null) { + return; + } + + nestedScrollViewState.innerController.addListener(_listen); + }); + + _tabController = TabController(length: 6, vsync: this); + + var description = widget.profile.user.description; + if (description == null || description.isEmpty) { + descriptionHeight = 0; + descriptionResized = true; + } + } + + @override + void dispose() { + nestedScrollViewKey.currentState?.innerController.removeListener(_listen); + + super.dispose(); + } + + void _listen() { + var nestedScrollViewState = nestedScrollViewKey.currentState; + if (nestedScrollViewState == null) { + return; + } + + if (!nestedScrollViewState.innerController.hasClients) { + return; + } + + // Show the "scroll to top" button if we scroll down a bit, and hide it if we go back above + if (nestedScrollViewState.innerController.positions.any((element) => element.pixels >= 400)) { + if (!_showBackToTopButton) { + setState(() { + _showBackToTopButton = true; + }); + } + } else { + if (_showBackToTopButton) { + setState(() { + _showBackToTopButton = false; + }); + } + } + } + + void _scrollToTop() { + // We scroll the outer controller (the whole nested scroll view and children) to the top + // TODO: No animation due to Flutter crashing on huge lists (https://github.com/flutter/flutter/issues/52207) (#607) + nestedScrollViewKey.currentState?.outerController.jumpTo(0); + } + + List _addLinksToText(BuildContext context, String content) { + List contentWidgets = []; + + // Split the string by any mentions or hashtags, and turn those into links + content.splitMapJoin(RegExp(r'(#|(?<=\W|^)@)\w+'), onMatch: (match) { + var full = match.group(0); + var type = match.group(1); + if (type == null || full == null) { + return ''; + } + + var onTap = () async {}; + if (type == '#') { + onTap = () async { + Navigator.pushNamed(context, routeSearch, + arguments: SearchArguments(1, focusInputOnOpen: false, query: full)); + }; + } + + if (type == '@') { + onTap = () async { + Navigator.pushNamed(context, routeProfile, + arguments: ProfileScreenArguments.fromScreenName(full.substring(1))); + }; + } + + contentWidgets.add(TextSpan( + text: full, + style: TextStyle(color: Theme.of(context).colorScheme.secondary), + recognizer: TapGestureRecognizer()..onTap = onTap)); + + return type; + }, onNonMatch: (text) { + contentWidgets.add(TextSpan(text: text)); + + return text; + }); + + return contentWidgets; + } + + @override + Widget build(BuildContext context) { + // TODO: This shouldn't happen before the profile is loaded + var user = widget.profile.user; + if (user.idStr == null) { + return Container(); + } + + // Make the app bar height the correct aspect ratio based on the header image size (1500x500) + var mediaQuery = MediaQuery.of(context); + var deviceSize = mediaQuery.size; + var bannerHeight = deviceSize.width * (500 / 1500); + var avatarHeight = 80; + + var profileImageTop = bannerHeight + 16 - 36 - mediaQuery.padding.top; + var profileStuffTop = bannerHeight + 36; + + var theme = Theme.of(context); + + var banner = user.profileBannerUrl; + var bannerImage = banner == null + ? Container(height: bannerHeight, color: Colors.white) + : ExtendedImage.network(banner, fit: BoxFit.fitWidth, height: bannerHeight); + + // The height of the app bar should be all the inner components, plus any margins + var appBarHeight = profileStuffTop + avatarHeight + metadataHeight + 8 + descriptionHeight; + + var metadataTextStyle = const TextStyle(fontSize: 12.5); + var prefs = PrefService.of(context, listen: false); + + return Scaffold( + body: Stack(children: [ + ExtendedNestedScrollView( + key: nestedScrollViewKey, + onlyOneScrollInBody: true, + headerSliverBuilder: (context, innerBoxIsScrolled) { + return [ + SliverAppBar( + expandedHeight: appBarHeight, + floating: true, + pinned: true, + snap: false, + forceElevated: innerBoxIsScrolled, + bottom: TabBar( + controller: _tabController, + isScrollable: true, + tabs: [ + Tab( + child: Text( + L10n.of(context).tweets, + textAlign: TextAlign.center, + ), + ), + Tab( + child: Text( + L10n.of(context).tweets_and_replies, + textAlign: TextAlign.center, + ), + ), + Tab( + child: Text( + L10n.of(context).media, + textAlign: TextAlign.center, + ), + ), + Tab( + child: Text( + L10n.of(context).following, + textAlign: TextAlign.center, + ), + ), + Tab( + child: Text( + L10n.of(context).followers, + textAlign: TextAlign.center, + ), + ), + Tab( + child: Text( + L10n.of(context).saved, + textAlign: TextAlign.center, + ), + ), + ], + ), + flexibleSpace: FlexibleSpaceBar( + background: SafeArea( + top: false, + child: DefaultTextStyle.merge( + style: const TextStyle(color: Colors.white), + child: Stack(fit: StackFit.expand, children: [ + Container(alignment: Alignment.topCenter, child: bannerImage), + const DecoratedBox( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.bottomCenter, + end: Alignment.topCenter, + colors: [Color(0xDD000000), Color(0x80000000)], + ), + ), + ), + Container( + padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Flexible( + child: Container( + margin: EdgeInsets.fromLTRB(16, profileStuffTop, 16, 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Flexible( + child: Text(user.name!, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w700)), + ), + if (user.verified ?? false) const SizedBox(width: 6), + if (user.verified ?? false) + const Icon(Icons.verified_outlined, size: 24, color: Colors.blue) + ], + ), + Container( + margin: const EdgeInsets.only(bottom: 8), + child: Text('@${(user.screenName!)}', + style: const TextStyle(fontSize: 14, color: Colors.white70)), + ), + if (user.description != null && user.description!.isNotEmpty) + MeasureSize( + onChange: (size) { + setState(() { + descriptionHeight = size.height; + descriptionResized = true; + }); + }, + child: Container( + margin: const EdgeInsets.only(bottom: 8), + child: RichText( + maxLines: 3, + text: TextSpan( + style: const TextStyle(height: 1.4), + children: _addLinksToText(context, user.description!)))), + ), + MeasureSize( + onChange: (size) { + setState(() { + metadataHeight = size.height; + metadataResized = true; + }); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + if (user.friendsCount != null) + Padding( + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.person_outlined, size: 12, color: Colors.white), + const SizedBox(width: 4), + Text.rich(TextSpan(children: [ + TextSpan( + text: '${widget.profile.user.friendsCount}', + style: metadataTextStyle.copyWith( + fontWeight: FontWeight.w500)), + TextSpan( + text: ' ${L10n.current.following.toLowerCase()}', + style: metadataTextStyle) + ])), + ], + ), + ), + if (user.followersCount != null) + Padding( + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.person_outlined, size: 12, color: Colors.white), + const SizedBox(width: 4), + Text.rich(TextSpan(children: [ + TextSpan( + text: '${widget.profile.user.followersCount}', + style: metadataTextStyle.copyWith( + fontWeight: FontWeight.w500)), + TextSpan( + text: ' ${L10n.current.followers.toLowerCase()}', + style: metadataTextStyle) + ])), + ], + ), + ), + if (user.location != null && user.location!.isNotEmpty) + Padding( + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.location_on_outlined, + size: 12, color: Colors.white), + const SizedBox(width: 4), + Text(user.location!, style: metadataTextStyle), + ], + ), + ), + if (user.url != null && user.url!.isNotEmpty) + Padding( + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.link_rounded, size: 12, color: Colors.white), + const SizedBox(width: 4), + Builder(builder: (context) { + var url = user.entities?.url?.urls + ?.firstWhere((element) => element.url == user.url); + + if (url == null) { + return Container(); + } + + var displayUrl = url.displayUrl ?? url.url; + var expandedUrl = url.expandedUrl ?? url.url; + + var textStyle = metadataTextStyle; + if (displayUrl == null || expandedUrl == null) { + return Text(L10n.current.unsupported_url, + style: textStyle.copyWith(color: theme.hintColor)); + } + + return InkWell( + child: Text(displayUrl, + style: textStyle.copyWith(color: Colors.blue)), + onTap: () => openUri(expandedUrl), + ); + }), + ], + )), + if (user.createdAt != null) + Padding( + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.calendar_today_outlined, + size: 12, color: Colors.white), + const SizedBox(width: 4), + Text( + L10n.of(context) + .joined(DateFormat('MMMM yyyy').format(user.createdAt!)), + style: metadataTextStyle), + ], + ), + ), + ]), + ), + ], + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(128, profileImageTop + 64, 16, 16), + child: FollowButton(user: UserSubscription.fromUser(user), color: Colors.white), + ), + Container( + alignment: Alignment.topLeft, + margin: EdgeInsets.fromLTRB(16, profileImageTop, 16, 16), + child: CircleAvatar( + radius: 50, + backgroundColor: Colors.white, + child: UserAvatar(uri: user.profileImageUrlHttps, size: 96), + ), + ) + ]), + ), + ))) + ]; + }, + body: MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (_) => TweetContextState(prefs.get(optionTweetsHideSensitive))) + ], + child: TabBarView( + controller: _tabController, + physics: const LessSensitiveScrollPhysics(), + children: [ + ProfileTweets( + user: user, type: 'profile', includeReplies: false, pinnedTweets: widget.profile.pinnedTweets), + ProfileTweets( + user: user, type: 'profile', includeReplies: true, pinnedTweets: widget.profile.pinnedTweets), + ProfileTweets(user: user, type: 'media', includeReplies: false, pinnedTweets: const []), + ProfileFollows(user: user, type: 'following'), + ProfileFollows(user: user, type: 'followers'), + ProfileSaved(user: user), + ], + ), + ), + ), + + // If we haven't resized the description widget yet, display an overlay container so we don't see the resize + // TODO: This flickers + AnimatedSwitcher( + duration: const Duration(milliseconds: 150), + child: descriptionResized == true && metadataResized == true + ? Container(key: const Key('loaded')) + : Container( + key: const Key('waiting'), + height: double.infinity, + color: theme.colorScheme.background, + ), + ) + ]), + floatingActionButton: _showBackToTopButton == false + ? null + : FloatingActionButton( + onPressed: _scrollToTop, + child: const Icon(Icons.arrow_upward_rounded), + ), + ); + } +} + +class TweetContextState extends ChangeNotifier { + bool hideSensitive; + + TweetContextState(this.hideSensitive); + + void setHideSensitive(bool value) { + hideSensitive = value; + notifyListeners(); + } +} diff --git a/lib/profile/profile_model.dart b/lib/profile/profile_model.dart new file mode 100644 index 00000000..60ec76b8 --- /dev/null +++ b/lib/profile/profile_model.dart @@ -0,0 +1,22 @@ +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/user.dart'; + +class Profile { + final UserWithExtra user; + final List pinnedTweets; + + Profile(this.user, this.pinnedTweets); +} + +class ProfileModel extends Store { + ProfileModel() : super(Profile(UserWithExtra(), [])); + + Future loadProfileById(String id) async { + await execute(() async => await Twitter.getProfileById(id)); + } + + Future loadProfileByScreenName(String screenName) async { + await execute(() async => await Twitter.getProfileByScreenName(screenName)); + } +} diff --git a/lib/saved/saved_tweet_model.dart b/lib/saved/saved_tweet_model.dart new file mode 100644 index 00000000..8cb3e245 --- /dev/null +++ b/lib/saved/saved_tweet_model.dart @@ -0,0 +1,52 @@ +import 'dart:convert'; + +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:logging/logging.dart'; + +class SavedTweetModel extends Store> { + static final log = Logger('SavedTweetModel'); + + SavedTweetModel() : super([]); + + bool isSaved(String id) { + return state.any((e) => e.id == id); + } + + Future deleteSavedTweet(String id) async { + var database = await Repository.writable(); + + await database.delete(tableSavedTweet, where: 'id = ?', whereArgs: [id]); + state.removeWhere((e) => e.id == id); + + update(state, force: true); + } + + Future listSavedTweets() async { + log.info('Listing saved tweets'); + + await execute(() async { + var database = await Repository.readOnly(); + + return (await database.query(tableSavedTweet, orderBy: 'saved_at DESC')) + .map((e) => SavedTweet.fromMap(e)) + .toList(); + }); + } + + Future saveTweet(String id, String? user, Map content) async { + log.info('Saving tweet with the ID $id'); + + await execute(() async { + var database = await Repository.writable(); + + var encodedContent = jsonEncode(content); + + await database.insert(tableSavedTweet, {'id': id, 'user_id': user, 'content': encodedContent}); + state.add(SavedTweet(id: id, user: user, content: encodedContent)); + + return state; + }); + } +} diff --git a/lib/search/search.dart b/lib/search/search.dart new file mode 100644 index 00000000..ee927cd1 --- /dev/null +++ b/lib/search/search.dart @@ -0,0 +1,258 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/search/search_model.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:quacker/tweet/_video.dart'; +import 'package:quacker/tweet/tweet.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/user.dart'; +import 'package:quacker/utils/notifiers.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; + +class SearchArguments { + final int initialTab; + final String? query; + final bool focusInputOnOpen; + + SearchArguments(this.initialTab, {this.query, this.focusInputOnOpen = false}); +} + +class SearchScreen extends StatelessWidget { + const SearchScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final arguments = ModalRoute.of(context)!.settings.arguments as SearchArguments; + + return _SearchScreen( + initialTab: arguments.initialTab, query: arguments.query, focusInputOnOpen: arguments.focusInputOnOpen); + } +} + +class _SearchScreen extends StatefulWidget { + final int initialTab; + final String? query; + final bool focusInputOnOpen; + + const _SearchScreen({Key? key, required this.initialTab, this.query, this.focusInputOnOpen = false}) + : super(key: key); + + @override + State<_SearchScreen> createState() => _SearchScreenState(); +} + +class _SearchScreenState extends State<_SearchScreen> with SingleTickerProviderStateMixin { + final TextEditingController _queryController = TextEditingController(); + final FocusNode _focusNode = FocusNode(); + + late TabController _tabController; + late CombinedChangeNotifier _bothControllers; + + @override + void initState() { + super.initState(); + + _tabController = TabController(length: 2, vsync: this, initialIndex: widget.initialTab); + _bothControllers = CombinedChangeNotifier(_tabController, _queryController); + + if (widget.focusInputOnOpen) { + _focusNode.requestFocus(); + } + + _queryController.text = widget.query ?? ''; + + // TODO: Focussing makes the selection go to the start?! + } + + @override + Widget build(BuildContext context) { + var subscriptionsModel = context.read(); + + var prefs = PrefService.of(context, listen: false); + + var defaultTheme = Theme.of(context); + var searchTheme = defaultTheme.copyWith( + appBarTheme: AppBarTheme( + backgroundColor: defaultTheme.colorScheme.brightness == Brightness.dark ? Colors.grey[900] : Colors.white, + iconTheme: defaultTheme.primaryIconTheme.copyWith(color: Colors.grey), + ), + inputDecorationTheme: const InputDecorationTheme( + border: InputBorder.none, + ), + ); + + return Theme( + data: searchTheme, + child: Scaffold( + // Needed as we're nesting Scaffolds, which causes Flutter to calculate keyboard height incorrectly + resizeToAvoidBottomInset: false, + appBar: AppBar( + title: TextField( + controller: _queryController, + focusNode: _focusNode, + style: searchTheme.textTheme.titleLarge, + textInputAction: TextInputAction.search, + ), + actions: [ + IconButton(icon: const Icon(Icons.close_rounded), onPressed: () => _queryController.clear()), + ScopedBuilder>.transition( + store: subscriptionsModel, + onState: (_, state) { + return AnimatedBuilder( + animation: _bothControllers, + builder: (context, child) { + var id = _queryController.text; + + if (_tabController.index == 1) { + var currentlyFollowed = state.any((element) => element.id == id); + if (!currentlyFollowed) { + return IconButton( + icon: const Icon(Icons.save_outlined), + onPressed: () async { + await subscriptionsModel.toggleSubscribe( + SearchSubscription(id: id, createdAt: DateTime.now()), currentlyFollowed); + }); + } + } + + return Container(); + }, + ); + }, + ), + ], + ), + body: Column( + children: [ + Material( + color: Theme.of(context).appBarTheme.backgroundColor, + child: TabBar( + controller: _tabController, + tabs: const [ + Tab(icon: Icon(Icons.person_outlined)), + Tab(icon: Icon(Icons.comment_outlined)), + ], + labelColor: Theme.of(context).appBarTheme.foregroundColor, + indicatorColor: Theme.of(context).appBarTheme.foregroundColor, + ), + ), + MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (_) => TweetContextState(prefs.get(optionTweetsHideSensitive))), + ChangeNotifierProvider( + create: (_) => VideoContextState(prefs.get(optionMediaDefaultMute))), + ], + child: Expanded( + child: TabBarView(controller: _tabController, children: [ + TweetSearchResultList( + queryController: _queryController, + store: context.read(), + searchFunction: (q) => context.read().searchUsers(q), + itemBuilder: (context, user) => UserTile(user: UserSubscription.fromUser(user))), + TweetSearchResultList( + queryController: _queryController, + store: context.read(), + searchFunction: (q) => context.read().searchTweets(q), + itemBuilder: (context, item) { + return TweetTile(tweet: item, clickable: true); + }) + ])), + ) + ], + ), + ), + ); + } +} + +typedef ItemWidgetBuilder = Widget Function(BuildContext context, T item); + +class TweetSearchResultList>, T> extends StatefulWidget { + final TextEditingController queryController; + final S store; + final Future Function(String query) searchFunction; + final ItemWidgetBuilder itemBuilder; + + const TweetSearchResultList( + {Key? key, + required this.queryController, + required this.store, + required this.searchFunction, + required this.itemBuilder}) + : super(key: key); + + @override + State> createState() => _TweetSearchResultListState(); +} + +class _TweetSearchResultListState>, T> extends State> { + Timer? _debounce; + String? _previousQuery = ''; + + @override + void initState() { + super.initState(); + + widget.queryController.addListener(() { + var query = widget.queryController.text; + if (query == _previousQuery) { + return; + } + + // If the current query is different from the last render's query, search + if (_debounce?.isActive ?? false) { + _debounce?.cancel(); + } + + // Debounce the search, so we don't make a request per keystroke + _debounce = Timer(const Duration(milliseconds: 750), () async { + fetchResults(); + }); + }); + + fetchResults(); + } + + void fetchResults() { + if (mounted) { + var query = widget.queryController.text; + _previousQuery = query; + widget.searchFunction(query); + } + } + + @override + Widget build(BuildContext context) { + return ScopedBuilder>.transition( + store: widget.store, + onLoading: (_) => const Center(child: CircularProgressIndicator()), + onError: (_, error) => FullPageErrorWidget( + error: error, + stackTrace: null, + prefix: L10n.of(context).unable_to_load_the_search_results, + onRetry: () => fetchResults(), + ), + onState: (_, items) { + if (items.isEmpty) { + return Center(child: Text(L10n.of(context).no_results)); + } + + return ListView.builder( + itemCount: items.length, + itemBuilder: (context, index) { + return widget.itemBuilder(context, items[index]); + }, + ); + }, + ); + } +} diff --git a/lib/search/search_model.dart b/lib/search/search_model.dart new file mode 100644 index 00000000..d59f1bb8 --- /dev/null +++ b/lib/search/search_model.dart @@ -0,0 +1,36 @@ +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/user.dart'; + +class SearchTweetsModel extends Store> { + SearchTweetsModel() : super([]); + + Future searchTweets(String query) async { + await execute(() async { + if (query.isEmpty) { + return []; + } else { + // TODO: Is this right? + return (await Twitter.searchTweets(query, true)) + .chains + .map((e) => e.tweets) + .expand((element) => element) + .toList(); + } + }); + } +} + +class SearchUsersModel extends Store> { + SearchUsersModel() : super([]); + + Future searchUsers(String query) async { + await execute(() async { + if (query.isEmpty) { + return []; + } else { + return await Twitter.searchUsers(query); + } + }); + } +} diff --git a/lib/settings/_about.dart b/lib/settings/_about.dart new file mode 100644 index 00000000..cffa0fc3 --- /dev/null +++ b/lib/settings/_about.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/utils/urls.dart'; +import 'package:pref/pref.dart'; + +class SettingsAboutFragment extends StatelessWidget { + final String appVersion; + + const SettingsAboutFragment({Key? key, required this.appVersion}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text(L10n.current.about)), + body: Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: ListView(children: [ + PrefLabel( + leading: const Icon(Icons.info), + title: Text(L10n.of(context).version), + subtitle: Text(appVersion), + onTap: () async { + await Clipboard.setData(ClipboardData(text: appVersion)); + + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.of(context).copied_version_to_clipboard), + )); + }, + ), + PrefLabel( + leading: const Icon(Icons.favorite), + title: Text(L10n.of(context).contribute), + subtitle: Text(L10n.of(context).help_make_fritter_even_better), + onTap: () => openUri('https://github.com/thehcj/quacker'), + ), + PrefLabel( + leading: const Icon(Icons.bug_report), + title: Text(L10n.of(context).report_a_bug), + subtitle: Text( + L10n.of(context).let_the_developers_know_if_something_is_broken, + ), + onTap: () => openUri('https://github.com/thehcj/quacker/issues'), + ), + PrefLabel( + leading: const Icon(Icons.copyright), + title: Text(L10n.of(context).licenses), + subtitle: Text(L10n.of(context).all_the_great_software_used_by_fritter), + onTap: () => showLicensePage( + context: context, + applicationName: L10n.of(context).fritter, + applicationVersion: appVersion, + applicationLegalese: L10n.of(context).released_under_the_mit_license, + applicationIcon: Container( + margin: const EdgeInsets.all(12), + child: ClipRRect( + borderRadius: BorderRadius.circular(48.0), + child: Image.asset( + 'assets/icon.png', + height: 48.0, + width: 48.0, + ), + ), + )), + ), + ]), + ), + ); + } +} \ No newline at end of file diff --git a/lib/settings/_data.dart b/lib/settings/_data.dart new file mode 100644 index 00000000..f5c352e8 --- /dev/null +++ b/lib/settings/_data.dart @@ -0,0 +1,150 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_file_dialog/flutter_file_dialog.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/import_data_model.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:logging/logging.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; + +class SettingsData { + final Map? settings; + final List? searchSubscriptions; + final List? userSubscriptions; + final List? subscriptionGroups; + final List? subscriptionGroupMembers; + final List? tweets; + + SettingsData( + {required this.settings, + required this.searchSubscriptions, + required this.userSubscriptions, + required this.subscriptionGroups, + required this.subscriptionGroupMembers, + required this.tweets}); + + factory SettingsData.fromJson(Map json) { + return SettingsData( + settings: json['settings'], + searchSubscriptions: json['searchSubscriptions'] != null + ? List.from(json['searchSubscriptions']).map((e) => SearchSubscription.fromMap(e)).toList() + : null, + userSubscriptions: json['subscriptions'] != null + ? List.from(json['subscriptions']).map((e) => UserSubscription.fromMap(e)).toList() + : null, + subscriptionGroups: json['subscriptionGroups'] != null + ? List.from(json['subscriptionGroups']).map((e) => SubscriptionGroup.fromMap(e)).toList() + : null, + subscriptionGroupMembers: json['subscriptionGroupMembers'] != null + ? List.from(json['subscriptionGroupMembers']).map((e) => SubscriptionGroupMember.fromMap(e)).toList() + : null, + tweets: json['tweets'] != null ? List.from(json['tweets']).map((e) => SavedTweet.fromMap(e)).toList() : null); + } + + Map toJson() { + return { + 'settings': settings, + 'searchSubscriptions': searchSubscriptions?.map((e) => e.toMap()).toList(), + 'subscriptions': userSubscriptions?.map((e) => e.toMap()).toList(), + 'subscriptionGroups': subscriptionGroups?.map((e) => e.toMap()).toList(), + 'subscriptionGroupMembers': subscriptionGroupMembers?.map((e) => e.toMap()).toList(), + 'tweets': tweets?.map((e) => e.toMap()).toList() + }; + } +} + +class SettingsDataFragment extends StatelessWidget { + static final log = Logger('SettingsDataFragment'); + + final String legacyExportPath; + + const SettingsDataFragment({Key? key, required this.legacyExportPath}) : super(key: key); + + Future _importFromFile(BuildContext context, File file) async { + var content = jsonDecode(file.readAsStringSync()); + + var importModel = context.read(); + var groupModel = context.read(); + var prefs = PrefService.of(context); + + var data = SettingsData.fromJson(content); + + var settings = data.settings; + if (settings != null) { + prefs.fromMap(settings); + } + + var dataToImport = >{}; + + var searchSubscriptions = data.searchSubscriptions; + if (searchSubscriptions != null) { + dataToImport[tableSearchSubscription] = searchSubscriptions; + } + + var userSubscriptions = data.userSubscriptions; + if (userSubscriptions != null) { + dataToImport[tableSubscription] = userSubscriptions; + } + + var subscriptionGroups = data.subscriptionGroups; + if (subscriptionGroups != null) { + dataToImport[tableSubscriptionGroup] = subscriptionGroups; + } + + var subscriptionGroupMembers = data.subscriptionGroupMembers; + if (subscriptionGroupMembers != null) { + dataToImport[tableSubscriptionGroupMember] = subscriptionGroupMembers; + } + + var tweets = data.tweets; + if (tweets != null) { + dataToImport[tableSavedTweet] = tweets; + } + + await importModel.importData(dataToImport); + await groupModel.reloadGroups(); + await context.read().reloadSubscriptions(); + await context.read().refreshSubscriptionData(); + + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.of(context).data_imported_successfully), + )); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text(L10n.current.data)), + body: Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: ListView(children: [ + PrefLabel( + leading: const Icon(Icons.import_export), + title: Text(L10n.of(context).import), + subtitle: Text(L10n.of(context).import_data_from_another_device), + onTap: () async { + + var path = await FlutterFileDialog.pickFile(params: const OpenFileDialogParams()); + if (path != null) { + await _importFromFile(context, File(path)); + } + }, + ), + PrefLabel( + leading: const Icon(Icons.save), + title: Text(L10n.of(context).export), + subtitle: Text(L10n.of(context).export_your_data), + onTap: () => Navigator.pushNamed(context, routeSettingsExport), + ), + ]), + ), + ); + } +} diff --git a/lib/settings/_general.dart b/lib/settings/_general.dart new file mode 100644 index 00000000..db3b9b3f --- /dev/null +++ b/lib/settings/_general.dart @@ -0,0 +1,293 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_localized_locales/flutter_localized_locales.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:http/http.dart' as http; +import 'package:logging/logging.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:pref/pref.dart'; + +String getFlavor() { + const flavor = String.fromEnvironment('app.flavor'); + + if (flavor == '') { + return 'fdroid'; + } + + return flavor; +} + +class SettingLocale { + final String code; + final String name; + + SettingLocale(this.code, this.name); + + factory SettingLocale.fromLocale(Locale locale) { + var code = locale.toLanguageTag().replaceAll('-', '_'); + var name = LocaleNamesLocalizationsDelegate.nativeLocaleNames[code] ?? code; + + return SettingLocale(code, name); + } +} + +class SettingsGeneralFragment extends StatelessWidget { + static final log = Logger('SettingsGeneralFragment'); + + const SettingsGeneralFragment({Key? key}) : super(key: key); + + PrefDialog _createShareBaseDialog(BuildContext context) { + var prefService = PrefService.of(context); + var mediaQuery = MediaQuery.of(context); + + final controller = TextEditingController(text: prefService.get(optionShareBaseUrl)); + + return PrefDialog( + actions: [ + TextButton(onPressed: () => Navigator.pop(context), child: Text(L10n.of(context).cancel)), + TextButton( + onPressed: () async { + await prefService.set(optionShareBaseUrl, controller.text); + Navigator.pop(context); + }, + child: Text(L10n.of(context).save)) + ], + title: Text(L10n.of(context).share_base_url), + children: [ + SizedBox( + width: mediaQuery.size.width, + child: TextFormField( + controller: controller, + decoration: const InputDecoration(hintText: 'https://twitter.com'), + ), + ) + ]); + } + + Future _appInfo(BuildContext context) async { + var deviceInfo = DeviceInfoPlugin(); + var packageInfo = await PackageInfo.fromPlatform(); + var prefService = PrefService.of(context); + Map metadata; + + if (Platform.isAndroid) { + var info = await deviceInfo.androidInfo; + + metadata = { + 'abis': info.supportedAbis, + 'device': info.device, + 'flavor': getFlavor(), + 'locale': Localizations.localeOf(context).languageCode, + 'os': 'android', + 'system': info.version.sdkInt.toString(), + 'version': packageInfo.buildNumber, + }; + } else { + var info = await deviceInfo.iosInfo; + + metadata = { + 'abis': [], + 'device': info.utsname.machine, + 'flavor': getFlavor(), + 'locale': Localizations.localeOf(context).languageCode, + 'os': 'ios', + 'system': info.systemVersion, + 'version': packageInfo.buildNumber, + }; + } + + showDialog( + context: context, + builder: (context) { + var content = JsonEncoder.withIndent(' ' * 2).convert(metadata); + + return AlertDialog( + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text(L10n.of(context).ok)), + ], + title: Text(L10n.of(context).app_info), + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [const SizedBox(height: 16), Text(content, style: const TextStyle(fontFamily: 'monospace'))], + )); + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text(L10n.current.general)), + body: Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: ListView(children: [ + PrefButton( + title: Text(L10n.of(context).app_info), + onTap: () => _appInfo(context), + child: const Icon(Icons.info), + ), + PrefDropdown( + fullWidth: false, + title: Text(L10n.current.language), + subtitle: Text(L10n.current.language_subtitle), + pref: optionLocale, + items: [ + DropdownMenuItem(value: optionLocaleDefault, child: Text(L10n.current.system)), + ...L10n.delegate.supportedLocales + .map((e) => SettingLocale.fromLocale(e)) + .sorted((a, b) => a.name.toLowerCase().compareTo(b.name.toLowerCase())) + .map((e) => DropdownMenuItem(value: e.code, child: Text(e.name))) + ]), + if (getFlavor() != 'play') + PrefSwitch( + title: Text(L10n.of(context).should_check_for_updates_label), + pref: optionShouldCheckForUpdates, + subtitle: Text(L10n.of(context).should_check_for_updates_description), + ), + PrefDropdown( + fullWidth: false, + title: Text(L10n.of(context).default_tab), + subtitle: Text( + L10n.of(context).which_tab_is_shown_when_the_app_opens, + ), + pref: optionHomeInitialTab, + items: defaultHomePages + .map((e) => DropdownMenuItem(value: e.id, child: Text(e.titleBuilder(context)))) + .toList()), + PrefDropdown( + fullWidth: false, + title: Text(L10n.of(context).media_size), + subtitle: Text( + L10n.of(context).save_bandwidth_using_smaller_images, + ), + pref: optionMediaSize, + items: [ + DropdownMenuItem( + value: 'disabled', + child: Text(L10n.of(context).disabled), + ), + DropdownMenuItem( + value: 'thumb', + child: Text(L10n.of(context).thumbnail), + ), + DropdownMenuItem( + value: 'small', + child: Text(L10n.of(context).small), + ), + DropdownMenuItem( + value: 'medium', + child: Text(L10n.of(context).medium), + ), + DropdownMenuItem( + value: 'large', + child: Text(L10n.of(context).large), + ), + ]), + PrefSwitch( + pref: optionMediaDefaultMute, + title: Text(L10n.of(context).mute_videos), + subtitle: Text(L10n.of(context).mute_video_description), + ), + PrefCheckbox( + title: Text(L10n.of(context).hide_sensitive_tweets), + subtitle: Text(L10n.of(context).whether_to_hide_tweets_marked_as_sensitive), + pref: optionTweetsHideSensitive, + ), + PrefDialogButton( + title: Text(L10n.of(context).share_base_url), + subtitle: Text(L10n.of(context).share_base_url_description), + dialog: _createShareBaseDialog(context), + ), + PrefSwitch( + title: Text(L10n.of(context).disable_screenshots), + subtitle: Text(L10n.of(context).disable_screenshots_hint), + pref: optionDisableScreenshots, + ), + const DownloadTypeSetting(), + PrefSwitch( + title: Text(L10n.of(context).activate_non_confirmation_bias_mode_label), + pref: optionNonConfirmationBiasMode, + subtitle: Text(L10n.of(context).activate_non_confirmation_bias_mode_description), + ), + ]), + ), + ); + } +} + +class DownloadTypeSetting extends StatefulWidget { + const DownloadTypeSetting({Key? key}) : super(key: key); + + @override + DownloadTypeSettingState createState() => DownloadTypeSettingState(); +} + +class DownloadTypeSettingState extends State { + @override + Widget build(BuildContext context) { + var downloadPath = PrefService.of(context).get(optionDownloadPath) ?? ''; + + return Column( + children: [ + PrefDropdown( + onChange: (value) { + setState(() {}); + }, + fullWidth: false, + title: Text(L10n.current.download_handling), + subtitle: Text(L10n.current.download_handling_description), + pref: optionDownloadType, + items: [ + DropdownMenuItem(value: optionDownloadTypeAsk, child: Text(L10n.current.download_handling_type_ask)), + DropdownMenuItem( + value: optionDownloadTypeDirectory, child: Text(L10n.current.download_handling_type_directory)), + ], + ), + if (PrefService.of(context).get(optionDownloadType) == optionDownloadTypeDirectory) + PrefButton( + onTap: () async { + var storagePermission = await Permission.storage.request(); + if (storagePermission.isGranted) { + String? directoryPath = await FilePicker.platform.getDirectoryPath(); + if (directoryPath == null) { + return; + } + + // TODO: Gross. Figure out how to re-render automatically when the preference changes + setState(() { + PrefService.of(context).set(optionDownloadPath, directoryPath); + }); + } else if (storagePermission.isPermanentlyDenied) { + await openAppSettings(); + } else { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.current.permission_not_granted), + action: SnackBarAction( + label: L10n.current.open_app_settings, + onPressed: openAppSettings, + ))); + } + }, + title: Text(L10n.current.download_path), + subtitle: Text( + downloadPath.isEmpty ? L10n.current.not_set : downloadPath, + ), + child: Text(L10n.current.choose), + ) + ], + ); + } +} diff --git a/lib/settings/_home.dart b/lib/settings/_home.dart new file mode 100644 index 00000000..d0ba8356 --- /dev/null +++ b/lib/settings/_home.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/home_model.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:provider/provider.dart'; + +class SettingsHomeFragment extends StatelessWidget { + const SettingsHomeFragment({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + var model = context.read(); + + return Scaffold( + appBar: AppBar( + title: Text(L10n.current.home), + actions: [ + IconButton( + icon: const Icon(Icons.restart_alt), + tooltip: L10n.current.reset_home_pages, + onPressed: () async => await model.resetPages()) + ], + ), + body: Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: ScopedBuilder>.transition( + store: model, + onError: (_, e) => ScaffoldErrorWidget( + prefix: L10n.current.unable_to_load_home_pages, + error: e, + stackTrace: null, + onRetry: () async => await model.resetPages(), + retryText: L10n.current.reset_home_pages, + ), + onLoading: (_) => const Center(child: CircularProgressIndicator()), + onState: (_, data) { + return ReorderableListView.builder( + itemCount: data.length, + itemBuilder: (context, index) { + var page = data[index]; + + return CheckboxListTile( + key: Key(page.id), + secondary: const Icon(Icons.drag_handle), + title: Text(page.page.titleBuilder(context)), + value: page.selected, + onChanged: (value) async { + var selected = value ?? false; + if (selected == false && data.where((e) => e.selected).length == 2) { + showSnackBar(context, + icon: '🙊', message: L10n.current.you_must_have_at_least_2_home_screen_pages); + return; + } + + await model.selectPage(page.id, value ?? false); + await model.save(); + }, + ); + }, + onReorder: (oldIndex, newIndex) async { + await model.movePage(oldIndex, newIndex); + await model.save(); + }, + ); + }, + ), + ), + ); + } +} diff --git a/lib/settings/_theme.dart b/lib/settings/_theme.dart new file mode 100644 index 00000000..3f3c4cf1 --- /dev/null +++ b/lib/settings/_theme.dart @@ -0,0 +1,52 @@ +import 'package:flex_color_scheme/flex_color_scheme.dart'; +import 'package:flutter/material.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:pref/pref.dart'; + +class SettingsThemeFragment extends StatelessWidget { + const SettingsThemeFragment({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text(L10n.current.theme)), + body: Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: ListView(children: [ + PrefDropdown(fullWidth: false, title: Text(L10n.of(context).theme_mode), pref: optionThemeMode, items: [ + DropdownMenuItem( + value: 'system', + child: Text(L10n.of(context).system), + ), + DropdownMenuItem( + value: 'light', + child: Text(L10n.of(context).light), + ), + DropdownMenuItem( + value: 'dark', + child: Text(L10n.of(context).dark), + ), + ]), + PrefDropdown( + title: Text(L10n.of(context).theme), + fullWidth: false, + pref: optionThemeColorScheme, + items: FlexScheme.values + .getRange(0, FlexScheme.values.length - 1) + .sorted((a, b) => a.name.compareTo(b.name)) + .map((scheme) => DropdownMenuItem(value: scheme.name, child: Text(scheme.name.capitalize))) + .toList()), + PrefSwitch( + title: Text(L10n.of(context).true_black), + pref: optionThemeTrueBlack, + subtitle: Text( + L10n.of(context).use_true_black_for_the_dark_mode_theme, + ), + ), + ]), + ), + ); + } +} diff --git a/lib/settings/settings.dart b/lib/settings/settings.dart new file mode 100644 index 00000000..8ab49b8b --- /dev/null +++ b/lib/settings/settings.dart @@ -0,0 +1,70 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/settings/_about.dart'; +import 'package:quacker/settings/_data.dart'; +import 'package:quacker/settings/_general.dart'; +import 'package:quacker/settings/_home.dart'; +import 'package:quacker/settings/_theme.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +class SettingsScreen extends StatefulWidget { + final String? initialPage; + + const SettingsScreen({Key? key, this.initialPage}) : super(key: key); + + @override + State createState() => _SettingsScreenState(); +} + +class _SettingsScreenState extends State { + PackageInfo _packageInfo = PackageInfo(appName: '', packageName: '', version: '', buildNumber: ''); + String _legacyExportPath = ''; + + @override + void initState() { + super.initState(); + + Future.microtask(() async { + var packageInfo = await PackageInfo.fromPlatform(); + + setState(() { + _packageInfo = packageInfo; + }); + }); + } + + @override + Widget build(BuildContext context) { + var appVersion = 'v${_packageInfo.version}+${_packageInfo.buildNumber}'; + + var pages = [ + NavigationPage('general', (c) => L10n.of(c).general, Icons.settings), + NavigationPage('home', (c) => L10n.of(c).home, Icons.home), + NavigationPage('theme', (c) => L10n.of(c).theme, Icons.format_paint), + NavigationPage('data', (c) => L10n.of(c).data, Icons.storage), + NavigationPage('about', (c) => L10n.of(c).about, Icons.help), + ]; + + var initialPage = pages.indexWhere((element) => element.id == widget.initialPage); + if (initialPage == -1) { + initialPage = 0; + } + + return ScaffoldWithBottomNavigation( + initialPage: initialPage, + pages: pages, + builder: (scrollController) { + return [ + const SettingsGeneralFragment(), + const SettingsHomeFragment(), + const SettingsThemeFragment(), + SettingsDataFragment(legacyExportPath: _legacyExportPath), + SettingsAboutFragment(appVersion: appVersion) + ]; + }, + ); + } +} diff --git a/lib/settings/settings_export_screen.dart b/lib/settings/settings_export_screen.dart new file mode 100644 index 00000000..af390bd3 --- /dev/null +++ b/lib/settings/settings_export_screen.dart @@ -0,0 +1,178 @@ +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; +import 'package:flutter_file_dialog/flutter_file_dialog.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/saved/saved_tweet_model.dart'; +import 'package:quacker/settings/_data.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:intl/intl.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:quacker/generated/l10n.dart'; + +class SettingsExportScreen extends StatefulWidget { + const SettingsExportScreen({Key? key}) : super(key: key); + + @override + State createState() => _SettingsExportScreenState(); +} + +class _SettingsExportScreenState extends State { + bool _exportSettings = false; + bool _exportSubscriptions = false; + bool _exportSubscriptionGroups = false; + bool _exportSubscriptionGroupMembers = false; + bool _exportTweets = false; + + void toggleExportSubscriptionGroupMembersIfRequired() { + if (_exportSubscriptionGroupMembers && (!_exportSubscriptions || !_exportSubscriptionGroups)) { + setState(() { + _exportSubscriptionGroupMembers = false; + }); + } + } + + void toggleExportSettings() { + setState(() { + _exportSettings = !_exportSettings; + }); + } + + void toggleExportSubscriptions() { + setState(() { + _exportSubscriptions = !_exportSubscriptions; + }); + + toggleExportSubscriptionGroupMembersIfRequired(); + } + + void toggleExportSubscriptionGroups() { + setState(() { + _exportSubscriptionGroups = !_exportSubscriptionGroups; + }); + + toggleExportSubscriptionGroupMembersIfRequired(); + } + + void toggleExportSubscriptionGroupMembers() { + setState(() { + _exportSubscriptionGroupMembers = !_exportSubscriptionGroupMembers; + }); + } + + void toggleExportTweets() { + setState(() { + _exportTweets = !_exportTweets; + }); + } + + bool noExportOptionSelected() { + return !(_exportSettings || + _exportSubscriptions || + _exportSubscriptionGroups || + _exportSubscriptionGroupMembers || + _exportTweets); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).export), + ), + floatingActionButton: noExportOptionSelected() + ? null + : FloatingActionButton( + child: const Icon(Icons.save), + onPressed: () async { + var groupModel = context.read(); + await groupModel.reloadGroups(); + + var subscriptionsModel = context.read(); + await subscriptionsModel.reloadSubscriptions(); + + var savedTweetModel = context.read(); + await savedTweetModel.listSavedTweets(); + + var prefs = PrefService.of(context); + + // TODO: Check exporting + var settings = _exportSettings ? prefs.toMap() : null; + + var subscriptions = _exportSubscriptions ? subscriptionsModel.state : null; + + var subscriptionGroups = _exportSubscriptionGroups ? groupModel.state : null; + + var subscriptionGroupMembers = + _exportSubscriptionGroupMembers ? await groupModel.listGroupMembers() : null; + + var tweets = _exportTweets ? savedTweetModel.state : null; + + var data = SettingsData( + settings: settings, + searchSubscriptions: subscriptions?.whereType().toList(), + userSubscriptions: subscriptions?.whereType().toList(), + subscriptionGroups: subscriptionGroups, + subscriptionGroupMembers: subscriptionGroupMembers, + tweets: tweets); + + var exportData = jsonEncode(data.toJson()); + + + var dateFormat = DateFormat('yyyy-MM-dd'); + var fileName = 'quacker-${dateFormat.format(DateTime.now())}.json'; + + // This platform can support the directory picker, so display it + var path = await FlutterFileDialog.saveFile( + params: + SaveFileDialogParams(fileName: fileName, data: Uint8List.fromList(utf8.encode(exportData)))); + if (path != null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + L10n.of(context).data_exported_to_fileName(fileName), + ), + ), + ); + } + }, + ), + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: SingleChildScrollView( + child: Column( + children: [ + CheckboxListTile( + value: _exportSettings, + title: Text(L10n.of(context).export_settings), + onChanged: (v) => toggleExportSettings()), + CheckboxListTile( + value: _exportSubscriptions, + title: Text(L10n.of(context).export_subscriptions), + onChanged: (v) => toggleExportSubscriptions()), + CheckboxListTile( + value: _exportSubscriptionGroups, + title: Text(L10n.of(context).export_subscription_groups), + onChanged: (v) => toggleExportSubscriptionGroups()), + CheckboxListTile( + value: _exportSubscriptionGroupMembers, + title: Text(L10n.of(context).export_subscription_group_members), + onChanged: _exportSubscriptions && _exportSubscriptionGroups + ? (v) => toggleExportSubscriptionGroupMembers() + : null), + CheckboxListTile( + value: _exportTweets, + title: Text(L10n.of(context).export_tweets), + onChanged: (v) => toggleExportTweets()), + ], + ))), + ], + ), + ); + } +} diff --git a/lib/status.dart b/lib/status.dart new file mode 100644 index 00000000..0ab3ae22 --- /dev/null +++ b/lib/status.dart @@ -0,0 +1,149 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/tweet/conversation.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:scroll_to_index/scroll_to_index.dart'; + +class StatusScreenArguments { + final String id; + final String? username; + + StatusScreenArguments({required this.id, required this.username}); + + @override + String toString() { + return 'StatusScreenArguments{id: $id, username: $username}'; + } +} + +class StatusScreen extends StatelessWidget { + const StatusScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final args = ModalRoute.of(context)!.settings.arguments as StatusScreenArguments; + + return _StatusScreen(username: args.username, id: args.id); + } +} + +class _StatusScreen extends StatefulWidget { + final String? username; + final String id; + + const _StatusScreen({Key? key, required this.username, required this.id}) : super(key: key); + + @override + _StatusScreenState createState() => _StatusScreenState(); +} + +class _StatusScreenState extends State<_StatusScreen> { + final _pagingController = PagingController(firstPageKey: null); + final _scrollController = AutoScrollController(); + + final _seenAlready = {}; + + @override + void initState() { + super.initState(); + + _pagingController.addPageRequestListener((cursor) { + _loadTweet(cursor); + }); + } + + @override + void dispose() { + _pagingController.dispose(); + super.dispose(); + } + + Future _loadTweet(String? cursor) async { + try { + var isFirstPage = _pagingController.nextPageKey == null; + + var result = await Twitter.getTweet(widget.id, cursor: cursor); + if (!mounted) { + return; + } + + if (result.cursorBottom != null && result.cursorBottom == _pagingController.nextPageKey) { + _pagingController.appendLastPage([]); + } else { + // Twitter sometimes sends the original replies with all pages, so we need to manually exclude ones that we've already seen + var chains = result.chains.skipWhile((element) => _seenAlready.contains(element.id)).toList(); + + for (var chain in chains) { + _seenAlready.add(chain.id); + } + + _pagingController.appendPage(chains, result.cursorBottom); + + // If we're on the first page, we want to scroll to the selected status + if (isFirstPage) { + var statusIndex = chains.indexWhere((e) => e.id == widget.id); + + await _scrollController.scrollToIndex(statusIndex, preferPosition: AutoScrollPosition.begin); + await _scrollController.highlight(statusIndex); + } + } + } catch (e, stackTrace) { + if (mounted) { + _pagingController.error = [e, stackTrace]; + } + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: ChangeNotifierProvider( + create: (context) => TweetContextState(PrefService.of(context, listen: false).get(optionTweetsHideSensitive)), + child: PagedListView( + padding: EdgeInsets.zero, + pagingController: _pagingController, + scrollController: _scrollController, + addAutomaticKeepAlives: false, + shrinkWrap: true, + builderDelegate: PagedChildBuilderDelegate( + itemBuilder: (context, chain, index) { + return AutoScrollTag( + key: ValueKey(chain.id), + controller: _scrollController, + index: index, + highlightColor: Colors.white.withOpacity(1), + child: TweetConversation(id: chain.id, tweets: chain.tweets, username: null, isPinned: chain.isPinned), + ); + }, + firstPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_tweet, + onRetry: () => _loadTweet(_pagingController.firstPageKey), + ), + newPageErrorIndicatorBuilder: (context) => FullPageErrorWidget( + error: _pagingController.error[0], + stackTrace: _pagingController.error[1], + prefix: L10n.of(context).unable_to_load_the_next_page_of_replies, + onRetry: () => _loadTweet(_pagingController.nextPageKey), + ), + noItemsFoundIndicatorBuilder: (context) { + return Center( + child: Text( + L10n.of(context).could_not_find_any_tweets_by_this_user, + ), + ); + }, + ), + ), + ), + ); + } +} diff --git a/lib/subscriptions/_groups.dart b/lib/subscriptions/_groups.dart new file mode 100644 index 00000000..61bd91de --- /dev/null +++ b/lib/subscriptions/_groups.dart @@ -0,0 +1,401 @@ +import 'dart:convert'; + +import 'package:dotted_border/dotted_border.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_colorpicker/flutter_colorpicker.dart'; +import 'package:flutter_iconpicker_plus/IconPicker/Packs/Material.dart'; +import 'package:flutter_iconpicker_plus/flutter_iconpicker.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/group/group_screen.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:quacker/user.dart'; +import 'package:provider/provider.dart'; + +Future openSubscriptionGroupDialog(BuildContext context, String? id, String name, String icon) { + return showDialog( + context: context, + builder: (context) { + return SubscriptionGroupEditDialog(id: id, name: name, icon: icon); + }); +} + +class SubscriptionGroups extends StatefulWidget { + final ScrollController scrollController; + + const SubscriptionGroups({Key? key, required this.scrollController}) : super(key: key); + + @override + State createState() => _SubscriptionGroupsState(); +} + +class _SubscriptionGroupsState extends State { + Widget _createGroupCard( + String id, String name, String icon, Color? color, int? numberOfMembers, void Function()? onLongPress) { + var title = numberOfMembers == null ? name : '$name ($numberOfMembers)'; + + return Card( + child: InkWell( + onTap: () { + // Open page with the group's feed + Navigator.pushNamed(context, routeGroup, arguments: GroupScreenArguments(id: id, name: name)); + }, + onLongPress: onLongPress, + child: Column( + children: [ + Container( + color: color != null ? color.withOpacity(0.9) : Theme.of(context).highlightColor, + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 12), + child: Icon(deserializeIconData(icon), size: 24), + ), + Expanded( + child: Container( + alignment: Alignment.center, + color: color != null ? color.withOpacity(0.4) : Colors.white10, + width: double.infinity, + padding: const EdgeInsets.all(8), + child: Text(title, + textAlign: TextAlign.center, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle(fontSize: 13, fontWeight: FontWeight.bold)), + )) + ], + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + return ScopedBuilder>.transition( + store: context.read(), + // TODO: Error + onState: (_, state) { + return GridView.builder( + controller: widget.scrollController, + padding: const EdgeInsets.only(top: 4), + gridDelegate: + const SliverGridDelegateWithMaxCrossAxisExtent(maxCrossAxisExtent: 180, childAspectRatio: 200 / 150), + itemCount: state.length + 2, + itemBuilder: (context, index) { + var actualIndex = index - 1; + if (actualIndex == -1) { + return _createGroupCard('-1', L10n.of(context).all, defaultGroupIcon, null, null, null); + } + + if (actualIndex < state.length) { + var e = state[actualIndex]; + + return _createGroupCard(e.id, e.name, e.icon, e.color, e.numberOfMembers, + () => openSubscriptionGroupDialog(context, e.id, e.name, e.icon)); + } + + return Card( + child: InkWell( + onTap: () { + openSubscriptionGroupDialog(context, null, '', defaultGroupIcon); + }, + child: DottedBorder( + color: Theme.of(context).textTheme.bodySmall!.color!, + borderType: BorderType.RRect, + radius: const Radius.circular(12), + child: SizedBox( + width: double.infinity, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.add_rounded, size: 16), + const SizedBox(height: 4), + Text( + L10n.of(context).newTrans, + style: const TextStyle(fontSize: 13), + ) + ], + ), + ), + ), + ), + ); + }, + ); + }, + ); + } +} + +class SubscriptionGroupEditDialog extends StatefulWidget { + final String? id; + final String name; + final String icon; + + const SubscriptionGroupEditDialog({Key? key, required this.id, required this.name, required this.icon}) + : super(key: key); + + @override + State createState() => _SubscriptionGroupEditDialogState(); +} + +class _SubscriptionGroupEditDialogState extends State { + final GlobalKey _formKey = GlobalKey(); + + SubscriptionGroupEdit? _group; + + late String? id; + late String? name; + late String icon; + Color? color; + Set members = {}; + double breakpointScreenWidth1 = 200; + double breakpointScreenWidth2 = 400; + + @override + void initState() { + super.initState(); + + setState(() { + icon = widget.icon; + }); + + context.read().loadGroupEdit(widget.id).then((group) => setState(() { + _group = group; + + id = group.id; + name = group.name; + icon = group.icon; + color = group.color; + members = group.members; + })); + } + + void openDeleteSubscriptionGroupDialog(String id, String name) { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(L10n.of(context).no), + ), + TextButton( + onPressed: () async { + await context.read().deleteGroup(id); + + Navigator.pop(context); + Navigator.pop(context); + }, + child: Text(L10n.of(context).yes), + ), + ], + title: Text(L10n.of(context).are_you_sure), + content: Text( + L10n.of(context).are_you_sure_you_want_to_delete_the_subscription_group_name_of_group(name), + ), + ); + }); + } + + @override + Widget build(BuildContext context) { + var subscriptionsModel = context.read(); + + var group = _group; + if (group == null) { + return const Center(child: CircularProgressIndicator()); + } + + // Filter the Material icons to only the ones the app uses + var iconPack = icons.entries.where((value) => value.key.endsWith('_outlined') || value.key.endsWith('_outline')); + + List buttonsLst1 = [ + TextButton( + onPressed: () { + setState(() { + if (members.isEmpty) { + members = subscriptionsModel.state.map((e) => e.id).toSet(); + } else { + members.clear(); + } + }); + }, + child: Text(L10n.of(context).toggle_all), + ), + TextButton( + onPressed: id == null ? null : () => openDeleteSubscriptionGroupDialog(id!, name!), + child: Text(L10n.of(context).delete), + ), + ]; + List buttonsLst2 = [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(L10n.of(context).cancel), + ), + Builder(builder: (context) { + onPressed() async { + if (_formKey.currentState!.validate()) { + await context.read().saveGroup(id, name!, icon, color, members); + + Navigator.pop(context); + } + } + + return TextButton( + onPressed: onPressed, + child: Text(L10n.of(context).ok), + ); + }), + ]; + double screenWidth = MediaQuery.of(context).size.width; + + return AlertDialog( + actions: [ + SizedBox( + width: screenWidth, + child: screenWidth >= breakpointScreenWidth2 ? Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + ...buttonsLst1, + ...buttonsLst2, + ]) : screenWidth >= breakpointScreenWidth1 ? Column(mainAxisSize: MainAxisSize.min, children: [ + Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + ...buttonsLst1, + ]), + Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + ...buttonsLst2, + ]), + ]) : Column(mainAxisSize: MainAxisSize.min, children: [ + ...buttonsLst1, + ...buttonsLst2, + ]) + ), + ], + content: Form( + key: _formKey, + child: SizedBox( + width: double.maxFinite, + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: TextFormField( + initialValue: group.name, + decoration: InputDecoration( + border: const UnderlineInputBorder(), + hintText: L10n.of(context).name, + ), + onChanged: (value) => setState(() { + name = value; + }), + validator: (value) { + if (value == null || value.isEmpty) { + return L10n.of(context).please_enter_a_name; + } + + return null; + }, + ), + ), + IconButton( + icon: Icon(Icons.palette_outlined, color: color), + onPressed: () { + showDialog( + context: context, + builder: (context) { + var selectedColor = color; + + return AlertDialog( + title: Text(L10n.of(context).pick_a_color), + content: SingleChildScrollView( + child: MaterialPicker( + pickerColor: color ?? Colors.grey, + onColorChanged: (value) => setState(() { + selectedColor = value; + }), + enableLabel: true, + ), + ), + actions: [ + TextButton( + child: Text(L10n.of(context).cancel), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + TextButton( + child: Text(L10n.of(context).ok), + onPressed: () { + setState(() { + color = selectedColor; + }); + Navigator.of(context).pop(); + }, + ), + ], + ); + }); + }, + ), + IconButton( + icon: Icon(deserializeIconData(icon)), + onPressed: () async { + var selectedIcon = await FlutterIconPicker.showIconPicker(context, + iconPackModes: [IconPack.custom], + customIconPack: Map.fromEntries(iconPack), + title: Text(L10n.of(context).pick_an_icon), + closeChild: Text(L10n.of(context).close), + searchHintText: L10n.of(context).search, + noResultsText: L10n.of(context).no_results_for); + if (selectedIcon != null) { + setState(() { + icon = jsonEncode(serializeIcon(selectedIcon)); + }); + } + }, + ) + ], + ), + Expanded( + child: ListView.builder( + shrinkWrap: true, + itemCount: subscriptionsModel.state.length, + itemBuilder: (context, index) { + var subscription = subscriptionsModel.state[index]; + + var subtitle = + subscription is SearchSubscription ? L10n.current.search_term : '@${subscription.screenName}'; + + var icon = subscription is SearchSubscription + ? const SizedBox(width: 48, child: Icon(Icons.search_rounded)) + : UserAvatar(uri: subscription.profileImageUrlHttps); + + return CheckboxListTile( + dense: true, + secondary: icon, + title: Text(subscription.name), + subtitle: Text(subtitle), + selected: members.contains(subscription.id), + value: members.contains(subscription.id), + onChanged: (v) => setState(() { + if (v == null || v == false) { + members.remove(subscription.id); + } else { + members.add(subscription.id); + } + }), + ); + }, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/subscriptions/_import.dart b/lib/subscriptions/_import.dart new file mode 100644 index 00000000..6817e2e5 --- /dev/null +++ b/lib/subscriptions/_import.dart @@ -0,0 +1,211 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:quacker/client.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/import_data_model.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/utils/urls.dart'; +import 'package:provider/provider.dart'; +import 'package:quacker/generated/l10n.dart'; + +class SubscriptionImportScreen extends StatefulWidget { + const SubscriptionImportScreen({Key? key}) : super(key: key); + + @override + State createState() => _SubscriptionImportScreenState(); +} + +class _SubscriptionImportScreenState extends State { + String? _screenName; + StreamController? _streamController; + + Future importSubscriptions() async { + setState(() { + _streamController = StreamController(); + }); + + try { + var screenName = _screenName; + if (screenName == null || screenName.isEmpty) { + return; + } + + _streamController?.add(0); + + int? cursor; + int total = 0; + + // TODO: Test this still works + var importModel = context.read(); + var groupModel = context.read(); + + var createdAt = DateTime.now(); + + while (true) { + var response = await Twitter.getProfileFollows( + screenName, + 'following', + cursor: cursor, + ); + + cursor = response.cursorBottom; + total = total + response.users.length; + + await importModel.importData({ + tableSubscription: [ + ...response.users.map((e) => UserSubscription( + id: e.idStr!, + name: e.name!, + profileImageUrlHttps: e.profileImageUrlHttps, + screenName: e.screenName!, + verified: e.verified ?? false, + createdAt: createdAt)) + ] + }); + + _streamController?.add(total); + + if (cursor == 0 || cursor == -1) { + break; + } + } + + await groupModel.reloadGroups(); + await context.read().reloadSubscriptions(); + await context.read().refreshSubscriptionData(); + _streamController?.close(); + } catch (e, stackTrace) { + _streamController?.addError(e, stackTrace); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).import_subscriptions), + ), + body: Container( + margin: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 16), + child: Text( + L10n.of(context).to_import_subscriptions_from_an_existing_twitter_account_enter_your_username_below, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 16), + child: Text( + L10n.of(context) + .please_note_that_the_method_fritter_uses_to_import_subscriptions_is_heavily_rate_limited_by_twitter_so_this_may_fail_if_you_have_a_lot_of_followed_accounts, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 16), + child: Text.rich(TextSpan(children: [ + TextSpan(text: '${L10n.of(context).if_you_have_any_feedback_on_this_feature_please_leave_it_on} '), + WidgetSpan( + child: InkWell( + onTap: () => openUri('https://github.com/jonjomckay/fritter/issues/143'), + child: Text(L10n.of(context).the_github_issue, + style: const TextStyle( + color: Colors.blue, + )), + )), + TextSpan( + text: + '. ${L10n.of(context).selecting_individual_accounts_to_import_and_assigning_groups_are_both_planned_for_the_future_already}', + ) + ])), + ), + Padding( + padding: const EdgeInsets.only(bottom: 16), + child: TextFormField( + decoration: InputDecoration( + border: const UnderlineInputBorder(), + hintText: L10n.of(context).enter_your_twitter_username, + helperText: L10n.of(context).your_profile_must_be_public_otherwise_the_import_will_not_work, + prefixText: '@', + labelText: L10n.of(context).username, + ), + maxLength: 15, + inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'^[a-zA-Z0-9_]+'))], + onChanged: (value) { + setState(() { + _screenName = value; + }); + }, + ), + ), + Expanded( + child: Center( + child: StreamBuilder( + stream: _streamController?.stream, + builder: (context, snapshot) { + var error = snapshot.error; + if (error != null) { + return FullPageErrorWidget( + error: snapshot.error, + stackTrace: snapshot.stackTrace, + prefix: L10n.of(context).unable_to_import, + ); + } + + switch (snapshot.connectionState) { + case ConnectionState.none: + case ConnectionState.waiting: + return Container(); + case ConnectionState.active: + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Padding( + padding: EdgeInsets.all(16), + child: CircularProgressIndicator(), + ), + Text( + L10n.of(context).imported_snapshot_data_users_so_far( + snapshot.data.toString(), + ), + ) + ], + ); + default: + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Padding( + padding: EdgeInsets.all(16), + child: Icon(Icons.check_circle_outlined, size: 36, color: Colors.green), + ), + Text( + L10n.of(context).finished_with_snapshotData_users( + snapshot.data.toString(), + ), + ) + ], + ); + } + }, + ), + ), + ), + ], + ), + ), + floatingActionButton: FloatingActionButton( + child: const Icon(Icons.import_export_rounded), + onPressed: () async => await importSubscriptions(), + ), + ); + } +} diff --git a/lib/subscriptions/_list.dart b/lib/subscriptions/_list.dart new file mode 100644 index 00000000..6c27e06c --- /dev/null +++ b/lib/subscriptions/_list.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/search/search.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/user.dart'; +import 'package:provider/provider.dart'; +import 'package:quacker/generated/l10n.dart'; + +class SubscriptionUsers extends StatefulWidget { + const SubscriptionUsers({Key? key}) : super(key: key); + + @override + State createState() => _SubscriptionUsersState(); +} + +class _SubscriptionUsersState extends State { + @override + Widget build(BuildContext context) { + var model = context.read(); + + return ScopedBuilder>.transition( + store: model, + onLoading: (_) => const Center(child: CircularProgressIndicator()), + onError: (_, e) => + FullPageErrorWidget(error: e, stackTrace: null, prefix: L10n.of(context).unable_to_refresh_the_subscriptions), + onState: (_, state) { + if (state.isEmpty) { + return Container( + alignment: Alignment.center, + margin: const EdgeInsets.symmetric(horizontal: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + margin: const EdgeInsets.symmetric(vertical: 8), + child: const Text('¯\\_(ツ)_/¯', style: TextStyle(fontSize: 32)), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 8), + child: Text(L10n.of(context).no_subscriptions_try_searching_or_importing_some, + textAlign: TextAlign.center, + style: TextStyle( + color: Theme.of(context).hintColor, + )), + ), + Container( + margin: const EdgeInsets.symmetric(vertical: 8), + child: ElevatedButton( + child: Text(L10n.of(context).import_from_twitter), + onPressed: () => Navigator.pushNamed(context, routeSubscriptionsImport), + ), + ) + ])); + } + + return SubscriptionUsersList(subscriptions: state); + }, + ); + } +} + +class SubscriptionUsersList extends StatelessWidget { + final List subscriptions; + + const SubscriptionUsersList({Key? key, required this.subscriptions}) : super(key: key); + + @override + Widget build(BuildContext context) { + return ListView.builder( + padding: const EdgeInsets.symmetric(vertical: 8), + itemCount: subscriptions.length, + itemBuilder: (context, i) { + var user = subscriptions[i]; + if (user is UserSubscription) { + return UserTile(user: user); + } + + return ListTile( + dense: true, + leading: const SizedBox(width: 48, child: Icon(Icons.search_rounded)), + title: Text(user.name, maxLines: 1, overflow: TextOverflow.ellipsis), + subtitle: Text(L10n.current.search_term), + trailing: SizedBox( + width: 36, + child: FollowButton(user: user), + ), + onTap: () { + Navigator.pushNamed(context, routeSearch, + arguments: SearchArguments(1, focusInputOnOpen: false, query: user.id)); + }, + ); + }, + ); + } +} diff --git a/lib/subscriptions/subscriptions.dart b/lib/subscriptions/subscriptions.dart new file mode 100644 index 00000000..28fbd989 --- /dev/null +++ b/lib/subscriptions/subscriptions.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/home/home_screen.dart'; +import 'package:quacker/subscriptions/_list.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:provider/provider.dart'; + +class SubscriptionsScreen extends StatelessWidget { + const SubscriptionsScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.current.subscriptions), + actions: [ + IconButton( + icon: const Icon(Icons.import_export_rounded), + onPressed: () => Navigator.pushNamed(context, routeSubscriptionsImport), + ), + IconButton( + icon: const Icon(Icons.refresh_rounded), + onPressed: () => context.read().refreshSubscriptionData(), + ), + PopupMenuButton( + icon: const Icon(Icons.sort_rounded), + itemBuilder: (context) => [ + PopupMenuItem( + value: 'name', + child: Text(L10n.of(context).name), + ), + PopupMenuItem( + value: 'screen_name', + child: Text(L10n.of(context).username), + ), + PopupMenuItem( + value: 'created_at', + child: Text(L10n.of(context).date_subscribed), + ), + ], + onSelected: (value) => context.read().changeOrderSubscriptionsBy(value), + ), + IconButton( + icon: const Icon(Icons.sort_by_alpha_rounded), + onPressed: () => context.read().toggleOrderSubscriptionsAscending(), + ), + ...createCommonAppBarActions(context) + ], + ), + body: const SubscriptionUsers(), + ); + } +} diff --git a/lib/subscriptions/users_model.dart b/lib/subscriptions/users_model.dart new file mode 100644 index 00000000..c95ab12a --- /dev/null +++ b/lib/subscriptions/users_model.dart @@ -0,0 +1,150 @@ +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/database/repository.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:logging/logging.dart'; +import 'package:pref/pref.dart'; + +class SubscriptionsModel extends Store> { + static final log = Logger('SubscriptionsModel'); + + final BasePrefService prefs; + final GroupsModel groupModel; + + SubscriptionsModel(this.prefs, this.groupModel) : super([]); + + Future reloadSubscriptions() async { + log.info('Listing subscriptions'); + + await execute(() async { + var database = await Repository.readOnly(); + + var orderByAscending = prefs.get(optionSubscriptionOrderByAscending); + var orderByField = prefs.get(optionSubscriptionOrderByField); + + var users = (await database.query(tableSubscription)).map((e) => UserSubscription.fromMap(e)).toList(); + + var searches = (await database.query(tableSearchSubscription)).map((e) => SearchSubscription.fromMap(e)).toList(); + + return [...users, ...searches].sorted((a, b) { + var one = orderByAscending ? a : b; + var two = orderByAscending ? b : a; + + switch (orderByField) { + case 'name': + return one.name.toLowerCase().compareTo(two.name.toLowerCase()); + case 'screen_name': + return one.screenName.toLowerCase().compareTo(two.screenName.toLowerCase()); + case 'created_at': + return one.createdAt.compareTo(two.createdAt); + default: + return one.name.toLowerCase().compareTo(two.name.toLowerCase()); + } + }).toList(); + }); + } + + Future refreshSubscriptionData() async { + log.info('Refreshing subscription data'); + + await execute(() async { + var database = await Repository.writable(); + + var ids = (await database.query(tableSubscription, columns: ['id'])).map((e) => e['id'] as String).toList(); + + var users = await Twitter.getUsers(ids); + + var batch = database.batch(); + for (var user in users) { + batch.update( + tableSubscription, + { + 'screen_name': user.screenName, + 'name': user.name, + 'profile_image_url_https': user.profileImageUrlHttps, + 'verified': (user.verified ?? false) ? 1 : 0 + }, + where: 'id = ?', + whereArgs: [user.idStr]); + } + + await batch.commit(); + await reloadSubscriptions(); + + return state; + }); + } + + Future _toggleSearchSubscribe(SearchSubscription user, bool currentlyFollowed) async { + var database = await Repository.writable(); + + await execute(() async { + if (currentlyFollowed) { + await database.delete(tableSearchSubscription, where: 'id = ?', whereArgs: [user.id]); + await database.delete(tableSearchSubscriptionGroupMember, where: 'search_id = ?', whereArgs: [user.id]); + + state.removeWhere((e) => e.id == user.id); + } else { + database.insert(tableSearchSubscription, { + 'id': user.id, + }); + } + + // TODO: This is hardcore, but we need to resort the list and this is the easiest way + await reloadSubscriptions(); + + return state; + }); + } + + Future _toggleUserSubscribe(UserSubscription user, bool currentlyFollowed) async { + var database = await Repository.writable(); + + await execute(() async { + if (currentlyFollowed) { + await database.delete(tableSubscription, where: 'id = ?', whereArgs: [user.id]); + await database.delete(tableSubscriptionGroupMember, where: 'profile_id = ?', whereArgs: [user.id]); + + state.removeWhere((e) => e.id == user.id); + } else { + database.insert(tableSubscription, { + 'id': user.id, + 'screen_name': user.screenName, + 'name': user.name, + 'profile_image_url_https': user.profileImageUrlHttps, + 'verified': user.verified ? 1 : 0 + }); + } + + // TODO: This is hardcore, but we need to resort the list and this is the easiest way + await reloadSubscriptions(); + + return state; + }); + + await groupModel.reloadGroups(); + } + + Future toggleSubscribe(Subscription user, bool currentlyFollowed) async { + if (user is UserSubscription) { + await _toggleUserSubscribe(user, currentlyFollowed); + } else if (user is SearchSubscription) { + await _toggleSearchSubscribe(user, currentlyFollowed); + } + + await groupModel.reloadGroups(); + } + + void changeOrderSubscriptionsBy(String? value) async { + await prefs.set(optionSubscriptionOrderByField, value ?? 'name'); + await reloadSubscriptions(); + } + + void toggleOrderSubscriptionsAscending() async { + await prefs.set(optionSubscriptionOrderByAscending, !prefs.get(optionSubscriptionOrderByAscending)); + await reloadSubscriptions(); + } +} diff --git a/lib/trends/_list.dart b/lib/trends/_list.dart new file mode 100644 index 00000000..9f6791d1 --- /dev/null +++ b/lib/trends/_list.dart @@ -0,0 +1,85 @@ +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/search/search.dart'; +import 'package:quacker/trends/trends_model.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/ui/physics.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; + +class TrendsList extends StatefulWidget { + final ScrollController scrollController; + + const TrendsList({Key? key, required this.scrollController}) : super(key: key); + + @override + State createState() => _TrendsListState(); +} + +class _TrendsListState extends State { + @override + Widget build(BuildContext context) { + var model = context.read(); + + return ScopedBuilder>.transition( + store: model, + onError: (context, e) => TripleBuilder( + store: context.read(), + builder: (context, triple) { + return FullPageErrorWidget( + error: e, + stackTrace: null, + prefix: L10n.of(context).unable_to_load_the_trends_for_widget_place_name(""), + // triple.state.name!, + onRetry: () => model.loadTrends(), + ); + }, + ), + onLoading: (context) => const Center(child: CircularProgressIndicator()), + onState: (context, state) { + if (state.isEmpty) { + // TODO: Empty state + return Container(); + } + + var trends = state[0].trends; + if (trends == null) { + return Text( + L10n.of(context).there_were_no_trends_returned_this_is_unexpected_please_report_as_a_bug_if_possible, + ); + } + + var numberFormat = NumberFormat.compact(); + + return ListView.builder( + controller: widget.scrollController, + shrinkWrap: true, + physics: const LessSensitiveScrollPhysics(), + itemCount: trends.length, + itemBuilder: (context, index) { + var trend = trends[index]; + + return ListTile( + dense: true, + leading: Text('${++index}'), + title: Text(trend.name!), + subtitle: trend.tweetVolume == null + ? null + : Text( + L10n.of(context).tweets_number( + trend.tweetVolume!, + numberFormat.format(trend.tweetVolume), + ), + ), + onTap: () => Navigator.pushNamed(context, routeSearch, + arguments: + SearchArguments(1, focusInputOnOpen: false, query: Uri.decodeQueryComponent(trend.query!)))); + }, + ); + }, + ); + } +} diff --git a/lib/trends/_settings.dart b/lib/trends/_settings.dart new file mode 100644 index 00000000..54171832 --- /dev/null +++ b/lib/trends/_settings.dart @@ -0,0 +1,88 @@ +import 'dart:convert'; + +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/trends/trends_model.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/utils/iterables.dart'; + +class TrendsSettings extends StatefulWidget { + const TrendsSettings({Key? key}) : super(key: key); + + @override + State createState() => _TrendsSettingsState(); +} + +class _TrendsSettingsState extends State { + @override + void initState() { + super.initState(); + + context.read().loadLocations(); + } + + @override + Widget build(BuildContext context) { + var prefs = PrefService.of(context); + var model = context.read(); + + return AlertDialog( + content: ScopedBuilder>.transition( + store: model, + onError: (_, e) => FullPageErrorWidget( + error: e, + stackTrace: null, + prefix: L10n.of(context).unable_to_find_the_available_trend_locations, + onRetry: () => model.loadLocations(), + ), + onLoading: (_) => const Center(child: CircularProgressIndicator()), + onState: (_, state) { + var place = UserTrendLocations.fromJson(jsonDecode(prefs.get(optionUserTrendsLocations))).active; + + var countries = state.sorted((a, b) => a.name!.compareTo(b.name!)).groupBy((e) => e.country); + + var names = countries.keys.sorted((a, b) => a!.compareTo(b!)).toList(); + + createLocationTile(TrendLocation item) { + var subtitle = item.parentid == 1 ? Text(L10n.of(context).country) : null; + + return RadioListTile( + title: Text(item.name!), + subtitle: subtitle, + value: item.woeid, + selected: place.woeid == item.woeid, + groupValue: place.woeid, + onChanged: (value) async { + await context.read().set(item); + Navigator.pop(context); + }); + } + + return SizedBox( + width: double.maxFinite, + child: ListView.builder( + itemCount: countries.length, + itemBuilder: (context, index) { + var name = names[index]!; + if (name == '') { + // If there's no country name, assume it's "Worldwide" + return createLocationTile(TrendLocation.fromJson({'name': 'Worldwide', 'woeid': 1})); + } + + return ExpansionTile( + title: Text(name), + children: [...countries[name]!.map((item) => createLocationTile(item))], + ); + }, + ), + ); + }, + ), + ); + } +} diff --git a/lib/trends/_tabs.dart b/lib/trends/_tabs.dart new file mode 100644 index 00000000..3cd0266b --- /dev/null +++ b/lib/trends/_tabs.dart @@ -0,0 +1,140 @@ +import 'package:dart_twitter_api/api/trends/data/trend_location.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/trends/trends_model.dart'; +import 'package:provider/provider.dart'; + +class TrendsTabBar extends StatefulWidget implements PreferredSizeWidget { + const TrendsTabBar({Key? key}) : super(key: key); + + @override + State createState() => _TrendsTabBarState(); + + /// I needed to implement [PreferredSizeWidget], to add [TrendsTabBar] as an Scaffold AppBar. + /// unfortunately I'm not sure how to handle the [preferredSize] property correctly. + /// Documentation only says: + /// In many cases it's only necessary to define one preferred dimension. + /// For example the [Scaffold] only depends on its app bar's preferred + /// height. In that case implementations of this method can just return + /// `new Size.fromHeight(myAppBarHeight)`. + @override + Size get preferredSize => const Size.fromHeight(56.0); +} + +class _TrendsTabBarState extends State with TickerProviderStateMixin { + late TabController _tabController; + + List _tabs = []; + + @override + void initState() { + super.initState(); + var model = context.read(); + model.loadTrendLocation(); + + _tabs = []; + _tabController = getController(); + + model.observer(onState: (state) { + if (mounted) { + _tabs = getTabs(state.locations, onDelete: (location) async => await model.remove(location)); + _tabController = getController(); + _tabController.index = state.indexOfActive; + setState(() {}); + } + }); + } + + List getTabs(List locations, {required Function(TrendLocation) onDelete}) { + _tabs.clear(); + return [ + ...locations.map((location) { + return _LocationTab( + location, + onDelete: (location) => onDelete(location), + ); + }), + ]; + } + + TabController getController() => TabController(length: _tabs.length, vsync: this); + + @override + Widget build(BuildContext context) { + var model = context.read(); + + return ScopedBuilder( + store: context.read(), + onState: (context, state) { + return AppBar( + bottom: TabBar( + labelColor: Theme.of(context).appBarTheme.foregroundColor, + indicatorColor: Theme.of(context).appBarTheme.foregroundColor, + controller: _tabController, + isScrollable: true, + onTap: (index) async { + await model.change(state.locations[index]); + }, + tabs: _tabs), + ); + }, + ); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } +} + +class _LocationTab extends StatelessWidget { + final TrendLocation location; + final Function(TrendLocation) onDelete; + + const _LocationTab(this.location, {Key? key, required this.onDelete}) : super(key: key); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onLongPress: () async { + if (await removeTab(context, location)) { + onDelete(location); + } + }, + child: Tab( + text: location.name, + ), + ); + } + + Future removeTab(BuildContext context, TrendLocation location) async { + bool delete = false; + + if (location.woeid != 1) { + delete = await showMenu( + context: context, + position: _calcPosition(context), + items: [ + PopupMenuItem(value: true, child: Text(L10n.of(context).delete)), + ], + ) ?? + false; + } + return delete; + } + + RelativeRect _calcPosition(BuildContext context) { + final RenderBox tab = context.findRenderObject()! as RenderBox; + final RenderBox overlay = Navigator.of(context).overlay!.context.findRenderObject()! as RenderBox; + + return RelativeRect.fromRect( + Rect.fromPoints( + tab.localToGlobal(Offset.zero, ancestor: overlay), + tab.localToGlobal(tab.size.bottomRight(Offset.zero) + Offset.zero, ancestor: overlay), + ), + Offset.zero & overlay.size, + ); + } +} diff --git a/lib/trends/trends.dart b/lib/trends/trends.dart new file mode 100644 index 00000000..73afdbd5 --- /dev/null +++ b/lib/trends/trends.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/trends/_list.dart'; +import 'package:quacker/trends/_settings.dart'; +import 'package:quacker/trends/_tabs.dart'; + +class TrendsScreen extends StatefulWidget { + final ScrollController scrollController; + + const TrendsScreen({Key? key, required this.scrollController}) : super(key: key); + + @override + State createState() => _TrendsScreenState(); +} + +class _TrendsScreenState extends State with AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + + @override + Widget build(BuildContext context) { + super.build(context); + + return Scaffold( + appBar: const TrendsTabBar(), + floatingActionButton: FloatingActionButton( + child: const Icon(Icons.add_rounded), + onPressed: () async => showDialog( + context: context, + builder: (context) => const TrendsSettings(), + )), + body: TrendsList(scrollController: widget.scrollController), + ); + } +} diff --git a/lib/trends/trends_model.dart b/lib/trends/trends_model.dart new file mode 100644 index 00000000..8ca8b4fc --- /dev/null +++ b/lib/trends/trends_model.dart @@ -0,0 +1,126 @@ +import 'dart:convert'; + +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:pref/pref.dart'; + +class TrendLocationsModel extends Store> { + TrendLocationsModel() : super([]); + + Future loadLocations() async { + await execute(() async { + return (await Twitter.getTrendLocations())..sort((a, b) => a.name!.compareTo(b.name!)); + }); + } +} + +class TrendsModel extends Store> { + final UserTrendLocationModel userTrendLocationModel; + + TrendsModel(this.userTrendLocationModel) : super([]) { + // Ensure we reload trends when the saved location changes + userTrendLocationModel.observer(onState: (_) async { + await loadTrends(); + }); + } + + Future loadTrends() async { + await execute(() async { + return await Twitter.getTrends(userTrendLocationModel.state.active.woeid!); + }); + } +} + +class UserTrendLocationModel extends Store { + final BasePrefService _prefs; + + UserTrendLocationModel(this._prefs) : super(UserTrendLocations()); + + Future loadTrendLocation() async { + await execute(() async { + var locations = jsonDecode(_prefs.get(optionUserTrendsLocations)); + return UserTrendLocations.fromJson(locations); + }); + } + + Future save(UserTrendLocations item) async { + await execute(() async { + await _prefs.set(optionUserTrendsLocations, item.toJson()); + return item; + }); + } + + Future set(TrendLocation item) async { + state.addLocation(item); + await save(state); + } + + Future remove(TrendLocation location) async { + await execute(() async { + state.removeLocation(location); + await save(state); + return state; + }); + } + + Future change(TrendLocation location) async { + await execute(() async { + state.active = location; + await save(state); + return state; + }); + } +} + +class UserTrendLocations { + static final TrendLocation _default = TrendLocation.fromJson({'name': 'Worldwide', 'woeid': 1}); + + TrendLocation active = _default; + List locations = [_default]; + + UserTrendLocations(); + + UserTrendLocations.fromJson(Map userTrendLocations) { + active = TrendLocation.fromJson(userTrendLocations['active']); + locations = [...userTrendLocations['locations'].map((e) => TrendLocation.fromJson(e))]; + } + + int get indexOfActive { + int index = locations.indexWhere((e) => e.woeid == active.woeid); + return index >= 0 ? index : 0; + } + + void addLocation(TrendLocation location) { + active = location; + if (!locations.any((e) => e.woeid == location.woeid)) { + locations.add(location); + } + } + + void removeLocation(TrendLocation location) { + int index = locations.indexWhere((e) => e.woeid == location.woeid); + + //make sure list is not empty and 'worldwide' won't get removed + if (index > 0 && locations[index].woeid != 1) { + active = locations[index - 1]; + locations.removeAt(index); + } + } + + String toJson() { + return jsonEncode( + { + 'active': active.toJson(), + 'locations': locations.toJson(), + }, + ); + } +} + +extension Json on List { + List toJson() { + return [...map((e) => e.toJson())]; + } +} diff --git a/lib/tweet/_card.dart b/lib/tweet/_card.dart new file mode 100644 index 00000000..81f5b15e --- /dev/null +++ b/lib/tweet/_card.dart @@ -0,0 +1,449 @@ +import 'dart:convert'; + +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:extended_image/extended_image.dart'; +import 'package:flutter/material.dart'; + +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/tweet/_media.dart'; +import 'package:quacker/tweet/_video.dart'; +import 'package:quacker/utils/urls.dart'; +import 'package:intl/intl.dart'; +import 'package:logging/logging.dart'; +import 'package:pref/pref.dart'; +import 'package:timeago/timeago.dart' as timeago; + +class TweetCard extends StatelessWidget { + static final log = Logger('TweetCard'); + + final TweetWithCard tweet; + final Map? card; + + const TweetCard({Key? key, required this.tweet, required this.card}) : super(key: key); + + _createBaseCard(Widget child) { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 12), + width: double.infinity, + child: Card( + clipBehavior: Clip.antiAlias, + color: Colors.blue, + child: child, + )); + } + + _createCard(String? url, Widget child) { + return GestureDetector( + child: _createBaseCard(child), + onTap: () => url == null ? null : openUri(url), + ); + } + + _createImage(String size, Map? image, BoxFit fit, {double? aspectRatio}) { + if (image == null) { + return Container(); + } + + Widget child; + + if (size == 'disabled') { + child = Container(); + } else { + child = ExtendedImage.network( + image['url'], + cache: true, + fit: fit, + ); + } + + return AspectRatio( + aspectRatio: aspectRatio ?? image['width'] / image['height'], + child: child, + ); + } + + _createListTile(BuildContext context, String title, String? description, String? uri) { + return Container( + padding: const EdgeInsets.only(left: 12, right: 12, bottom: 4), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: const EdgeInsets.only(top: 4), + child: Text( + title, + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: Theme.of(context) + .textTheme + .titleMedium! + .copyWith(color: Colors.white, fontSize: 13, fontWeight: FontWeight.w500), + ), + ), + if (description != null) + Container( + margin: const EdgeInsets.only(top: 4), + child: Text( + description, + overflow: TextOverflow.ellipsis, + maxLines: 2, + style: Theme.of(context).textTheme.bodyMedium!.copyWith(color: Colors.white, fontSize: 12), + ), + ), + if (uri != null) + Container( + margin: EdgeInsets.only(top: description == null ? 4 : 8), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.link_rounded, size: 12, color: Colors.white), + const SizedBox(width: 4), + Text(uri, + style: Theme.of(context).textTheme.bodySmall!.copyWith( + color: Colors.white, + )), + ], + ), + ) + ], + ), + ); + } + + _createVoteBar(BuildContext context, Map card, double total, int choiceIndex) { + var choiceCount = double.parse(card['binding_values']['choice${choiceIndex}_count']['string_value']); + var choicePercent = total == 0 ? 0 : (100 / total) * choiceCount; + + var theme = Theme.of(context); + var textColor = theme.brightness == Brightness.light ? Colors.black : Colors.white; + + return Container( + margin: const EdgeInsets.symmetric(vertical: 4), + child: Stack(alignment: Alignment.center, children: [ + SizedBox( + height: 24, + child: LinearProgressIndicator( + value: choicePercent / 100, + color: + theme.brightness == Brightness.light ? Colors.blue.withOpacity(0.3) : Colors.blue.withOpacity(0.7)), + ), + Container( + alignment: Alignment.centerLeft, + margin: const EdgeInsets.symmetric(horizontal: 8), + child: RichText( + text: TextSpan(children: [ + TextSpan( + text: '${choicePercent.toStringAsFixed(1)}% ', + style: TextStyle(color: textColor, fontWeight: FontWeight.bold)), + TextSpan( + text: card['binding_values']['choice${choiceIndex}_label']['string_value'], + style: TextStyle( + color: textColor, + )) + ]), + )), + ]), + ); + } + + _createWebsiteCard( + BuildContext context, Map unifiedCard, String uri, String imageSize, Widget media) { + return _createCard( + uri, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + media, + Container( + padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 10), + child: _createListTile(context, unifiedCard['component_objects']['details_1']['data']['title']['content'], + unifiedCard['component_objects']['details_1']['data']['subtitle']['content'], null), + ), + ], + )); + } + + _createUnifiedCard(BuildContext context, Map card, String imageKey, String imageSize) { + var unifiedCard = jsonDecode(card['binding_values']['unified_card']['string_value']) as Map; + + switch (unifiedCard['type']) { + case 'image_website': + var media = unifiedCard['media_entities'][unifiedCard['component_objects']['media_1']['data']['id']]; + var uri = unifiedCard['destination_objects']['browser_1']['data']['url_data']['url']; + + var child = _createImage( + imageSize, + { + 'url': media['media_url_https'], + 'width': media['original_info']['width'], + 'height': media['original_info']['height'], + }, + BoxFit.contain); + return _createWebsiteCard(context, unifiedCard, uri, imageSize, child); + case 'video_website': + // https://twitter.com/yenisafak/status/1560244349451096064 + var media = unifiedCard['media_entities'][unifiedCard['component_objects']['media_1']['data']['id']]; + var uri = unifiedCard['destination_objects']['browser_with_docked_media_1']['data']['url_data']['url']; + + var child = TweetMedia(media: [Media.fromJson(media)], username: tweet.user!.screenName!, sensitive: false); + return _createWebsiteCard(context, unifiedCard, uri, imageSize, child); + default: + return Container(); + } + } + + _createVoteCard(BuildContext context, Map card, int numberOfChoices) { + var numberFormat = NumberFormat.decimalPattern(); + + var total = List.generate( + numberOfChoices, (index) => double.parse(card['binding_values']['choice${++index}_count']['string_value'])) + .reduce((value, element) => value + element); + + String endsAtText; + + var endsAt = DateTime.parse(card['binding_values']['end_datetime_utc']['string_value']); + if (endsAt.isBefore(DateTime.now())) { + endsAtText = L10n.of(context).ended_timeago_format_endsAt_allowFromNow_true( + timeago.format(endsAt, allowFromNow: true, locale: Intl.shortLocale(Intl.getCurrentLocale())), + ); + } else { + endsAtText = L10n.of(context).ends_timeago_format_endsAt_allowFromNow_true( + timeago.format(endsAt, allowFromNow: true, locale: Intl.shortLocale(Intl.getCurrentLocale())), + ); + } + + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + children: [ + ...List.generate(numberOfChoices, (index) => _createVoteBar(context, card, total, ++index)), + Container( + alignment: Alignment.centerRight, + margin: const EdgeInsets.only(top: 8), + child: RichText( + text: TextSpan(children: [ + TextSpan( + text: L10n.of(context).numberFormat_format_total_votes( + total, + numberFormat.format(total), + ), + ), + const TextSpan(text: ' • '), + TextSpan(text: endsAtText) + ]), + ), + ) + ], + )); + } + + String? _findCardUrl(Map card) { + var link = card['url']; + var urls = tweet.entities?.urls ?? []; + + // Match up the card's URL with the link in the tweet entities, otherwise just use the card's URL + var url = urls.firstWhere((element) => element.url == link, orElse: () => Url.fromJson({'expanded_url': link})); + + return url.expandedUrl; + } + + @override + Widget build(BuildContext context) { + var card = this.card; + if (card == null) { + return Container(); + } + + var imageKey = ''; + var imageSize = PrefService.of(context, listen: false).get(optionMediaSize); + if (imageSize == 'thumb') { + imageKey = '_small'; + } else if (imageSize == 'medium') { + imageKey = '_large'; + } else if (imageSize == 'large') { + imageKey = '_x_large'; + } + + switch (card['name']) { + case 'summary': + var image = card['binding_values']['thumbnail_image$imageKey']?['image_value']; + + return _createCard( + _findCardUrl(card), + Row( + children: [ + Expanded(flex: 1, child: _createImage(imageSize, image, BoxFit.contain)), + Expanded( + flex: 4, + child: _createListTile( + context, + card['binding_values']['title']['string_value'], + card['binding_values']?['description']?['string_value'], + card['binding_values']?['vanity_url']?['string_value'])) + ], + )); + case 'summary_large_image': + var image = card['binding_values']['thumbnail_image$imageKey']?['image_value']; + + return _createCard( + _findCardUrl(card), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _createImage(imageSize, image, BoxFit.contain), + Container( + padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 10), + child: _createListTile( + context, + card['binding_values']['title']['string_value'], + card['binding_values']?['description']?['string_value'], + card['binding_values']?['vanity_url']?['string_value']), + ), + ], + )); + case 'player': + var image = card['binding_values']['player_image$imageKey']?['image_value']; + + return _createCard( + _findCardUrl(card), + Row( + children: [ + Expanded(flex: 1, child: _createImage(imageSize, image, BoxFit.cover, aspectRatio: 1)), + Expanded( + flex: 4, + child: _createListTile( + context, + card['binding_values']['title']['string_value'], + card['binding_values']?['description']?['string_value'], + card['binding_values']?['vanity_url']?['string_value'])) + ], + )); + case 'poll2choice_text_only': + return _createVoteCard(context, card, 2); + case 'poll3choice_text_only': + return _createVoteCard(context, card, 3); + case 'poll4choice_text_only': + return _createVoteCard(context, card, 4); + case 'promo_website': + // https://twitter.com/CMEGroup/status/1573288572647612416 + var url = card['binding_values']['website_url']['string_value']; + var image = card['binding_values']['promo_image$imageKey']?['image_value']; + var title = card['binding_values']['title']['string_value']; + var vanityUrl = card['binding_values']['vanity_url']['string_value']; + + return _createCard( + url, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _createImage(imageSize, image, BoxFit.contain), + Container( + padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 10), + child: _createListTile(context, title, null, vanityUrl), + ), + ], + )); + case 'unified_card': + try { + return _createUnifiedCard(context, card, imageKey, imageSize); + } catch (e) { + log.severe('Unable to render the unified card'); + return Container(); + } + case '745291183405076480:live_event': + // https://twitter.com/Erdoanz11/status/1573765738032152577 + var url = card['binding_values']['card_url']['string_value']; + var image = card['binding_values']['event_thumbnail$imageKey']?['image_value']; + + var author = card['binding_values']['author']['user_value']['id_str']; + var user = card['users'][author]['screen_name']; + + // TODO: This opens the URL externally. Create a screen for it in Quacker + return _createCard( + url, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _createImage(imageSize, image, BoxFit.contain), + Container( + padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 10), + child: _createListTile(context, card['binding_values']['event_title']['string_value'], + card['binding_values']['event_subtitle']?['string_value'], '@$user'), + ), + ], + )); + case '745291183405076480:broadcast': + // https://twitter.com/KwasiKwarteng/status/1573229010779516929 + var uri = card['binding_values']['card_url']['string_value']; + var image = card['binding_values']['broadcast_thumbnail$imageKey']?['image_value']['url']; + var key = card['binding_values']['broadcast_media_key']['string_value']; + + var width = double.parse(card['binding_values']['broadcast_width']['string_value']); + var height = double.parse(card['binding_values']['broadcast_height']['string_value']); + + var aspectRatio = width / height; + + var child = TweetVideo( + username: 'username', + loop: false, + metadata: TweetVideoMetadata(aspectRatio, image, () async { + var broadcast = await Twitter.getBroadcastDetails(key); + + return TweetVideoUrls(broadcast['source']['noRedirectPlaybackUrl'], null); + })); + + var username = card['binding_values']['broadcaster_username']['string_value']; + var title = card['binding_values']['broadcast_title']['string_value']; + + // TODO: Figure out what states we can receive + //var state = card['binding_values']['broadcast_state']['string_value']; + + // TODO: This opens the URL externally. Create a screen for it in Quacker + return _createCard( + uri, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + child, + Container( + padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 10), + child: _createListTile(context, title, '@$username', null), + ), + ], + )); + default: + return Container(); + } + } +} + +class UnknownCardType implements Exception { + final String? tweet; + final String type; + + UnknownCardType(this.tweet, this.type); + + @override + String toString() { + return 'UnknownCardType{tweet: $tweet, type: $type}'; + } +} + +class UnknownUnifiedCardType implements Exception { + final String? tweet; + final String type; + + UnknownUnifiedCardType(this.tweet, this.type); + + @override + String toString() { + return 'UnknownUnifiedCardType{tweet: $tweet, type: $type}'; + } +} diff --git a/lib/tweet/_entities.dart b/lib/tweet/_entities.dart new file mode 100644 index 00000000..a954018f --- /dev/null +++ b/lib/tweet/_entities.dart @@ -0,0 +1,73 @@ +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; + +abstract class TweetEntity { + List? indices; + + TweetEntity(this.indices); + + InlineSpan getContent(); + + int getEntityStart() { + return indices![0]; + } + + int getEntityEnd() { + return indices![1]; + } +} + +class TweetHashtag extends TweetEntity { + final Hashtag hashtag; + final Function onTap; + + TweetHashtag(this.hashtag, this.onTap) : super(hashtag.indices); + + @override + InlineSpan getContent() { + return TextSpan( + text: '#${hashtag.text}', + style: const TextStyle(color: Colors.blue), + recognizer: TapGestureRecognizer() + ..onTap = () { + onTap(); + }); + } +} + +class TweetUserMention extends TweetEntity { + final UserMention mention; + final Function onTap; + + TweetUserMention(this.mention, this.onTap) : super(mention.indices); + + @override + InlineSpan getContent() { + return TextSpan( + text: '@${mention.screenName}', + style: const TextStyle(color: Colors.blue), + recognizer: TapGestureRecognizer() + ..onTap = () { + onTap(); + }); + } +} + +class TweetUrl extends TweetEntity { + final Url url; + final Function onTap; + + TweetUrl(this.url, this.onTap) : super(url.indices); + + @override + InlineSpan getContent() { + return TextSpan( + text: url.displayUrl, + style: const TextStyle(color: Colors.blue), + recognizer: TapGestureRecognizer() + ..onTap = () { + onTap(); + }); + } +} diff --git a/lib/tweet/_media.dart b/lib/tweet/_media.dart new file mode 100644 index 00000000..00c74f68 --- /dev/null +++ b/lib/tweet/_media.dart @@ -0,0 +1,334 @@ +import 'dart:io'; +import 'dart:math' as math; + +import 'package:async_button_builder/async_button_builder.dart'; +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:extended_image/extended_image.dart'; +import 'package:flutter/material.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/tweet/_photo.dart'; +import 'package:quacker/tweet/_video.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/ui/physics.dart'; +import 'package:quacker/utils/downloads.dart'; +import 'package:path/path.dart' as path; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:share_plus/share_plus.dart'; +import 'package:uuid/uuid.dart'; + +class _TweetMediaItem extends StatefulWidget { + final int index; + final int total; + final Media media; + final String username; + + const _TweetMediaItem( + {Key? key, required this.index, required this.total, required this.media, required this.username}) + : super(key: key); + + @override + State<_TweetMediaItem> createState() => _TweetMediaItemState(); +} + +class _TweetMediaItemState extends State<_TweetMediaItem> { + bool _showMedia = false; + + @override + void initState() { + super.initState(); + + var mediaSize = PrefService.of(context, listen: false).get(optionMediaSize); + if (mediaSize == 'disabled') { + // If the image is cached already, show the media + cachedImageExists(widget.media.mediaUrlHttps!).then((value) { + if (mounted) { + setState(() { + _showMedia = value; + }); + } + }); + } else { + setState(() { + _showMedia = true; + }); + } + } + + String getMediaType(String? type) { + switch (type) { + case 'animated_gif': + return 'GIF'; + case 'photo': + return 'photo'; + case 'video': + return 'video'; + default: + return 'media'; + } + } + + @override + Widget build(BuildContext context) { + var prefs = PrefService.of(context, listen: false); + var size = prefs.get(optionMediaSize); + if (size == 'disabled') { + size = 'medium'; + } + + Widget media; + + var item = widget.media; + + if (_showMedia) { + media = + _TweetMediaThing(item: item, username: widget.username, size: size, pullToClose: false, inPageView: false); + } else { + media = GestureDetector( + child: Container( + color: Colors.black26, + child: Center( + child: Text( + L10n.of(context).tap_to_show_getMediaType_item_type(getMediaType(item.type)), + ), + ), + ), + onTap: () => setState(() { + _showMedia = true; + }), + ); + } + + // If there's only one item in this media collection, don't show the page counter + if (widget.total == 1) { + return media; + } + + return Stack( + children: [ + Center(child: media), + Positioned( + right: 0, + child: Container( + alignment: Alignment.topRight, + color: Colors.black38, + margin: const EdgeInsets.all(8), + padding: const EdgeInsets.all(8), + child: Text('${widget.index} / ${widget.total}'), + ), + ) + ], + ); + } +} + +class TweetMedia extends StatefulWidget { + final bool? sensitive; + final List media; + final String username; + + const TweetMedia({Key? key, required this.sensitive, required this.media, required this.username}) : super(key: key); + + @override + State createState() => _TweetMediaState(); +} + +class _TweetMediaState extends State { + final PageController _controller = PageController(); + + @override + Widget build(BuildContext context) { + var largestAspectRatio = + widget.media.map((e) => ((e.sizes!.large!.w) ?? 1) / ((e.sizes!.large!.h) ?? 1)).reduce(math.max); + + return Consumer(builder: (context, model, child) { + if (model.hideSensitive && (widget.sensitive ?? false)) { + return Card( + child: Center( + child: EmojiErrorWidget( + emoji: '🍆🙈🍆', + message: L10n.current.possibly_sensitive, + errorMessage: L10n.current.possibly_sensitive_tweet, + retryText: L10n.current.yes_please, + onRetry: () async => model.setHideSensitive(false), + )), + ); + } + + return Container( + margin: const EdgeInsets.only(top: 8, left: 16, right: 16), + child: AspectRatio( + aspectRatio: largestAspectRatio, + child: PageView.builder( + controller: _controller, + physics: const LessSensitiveScrollPhysics(), + scrollDirection: Axis.horizontal, + itemCount: widget.media.length, + itemBuilder: (context, index) { + var item = widget.media[index]; + + return GestureDetector( + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + TweetMediaView(initialIndex: index, media: widget.media, username: widget.username))), + child: _TweetMediaItem( + media: item, index: index + 1, total: widget.media.length, username: widget.username), + ); + }, + ), + ), + ); + }); + } +} + +class TweetMediaView extends StatefulWidget { + final int initialIndex; + final List media; + final String username; + + const TweetMediaView({Key? key, required this.initialIndex, required this.media, required this.username}) + : super(key: key); + + @override + State createState() => _TweetMediaViewState(); +} + +class _TweetMediaViewState extends State { + late Media _media; + + @override + void initState() { + super.initState(); + + _media = widget.media[widget.initialIndex]; + } + + @override + Widget build(BuildContext context) { + var prefs = PrefService.of(context, listen: false); + var size = prefs.get(optionMediaSize); + if (size == 'disabled') { + size = 'medium'; + } + + return Scaffold( + appBar: AppBar( + actions: [ + AsyncButtonBuilder( + child: const Icon(Icons.download_outlined), + builder: (context, child, callback, buttonState) { + return IconButton(onPressed: callback, icon: child); + }, + onPressed: () async { + var url = path.basename(_media.mediaUrlHttps!); + var fileName = '${widget.username}-$url'; + var uri = Uri.parse('${_media.mediaUrlHttps}:orig'); + + await downloadUriToPickedFile( + context, + uri, + fileName, + onStart: () { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.of(context).downloading_media), + )); + }, + onSuccess: () { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.of(context).successfully_saved_the_media), + )); + }, + ); + }, + ), + AsyncButtonBuilder( + showSuccess: false, + builder: (context, child, callback, buttonState) { + return IconButton(onPressed: callback, icon: child); + }, + onPressed: () async { + var uri = Uri.parse('${_media.mediaUrlHttps}:orig'); + + var fileBytes = await downloadFile(context, uri); + + // The following is a workaround because of an issue with the share_plus package which uses the faulty mime_type library. + // When the issue is resolved (the PR https://github.com/dart-lang/mime/pull/81 is merged), + // then it should be replaced by the original code: + // Share.shareXFiles([XFile.fromData(fileBytes, mimeType: 'image/jpeg')]); + const uuid = Uuid(); + + final String tempPath = (await getTemporaryDirectory()).path; + final name = uuid.v4(); + final path = '$tempPath/$name.jpg'; + + final file = File(path); + await file.writeAsBytes(fileBytes); + + final xfile = XFile(path, mimeType: 'image/jpeg'); + + Share.shareXFiles([xfile]).then((value) => file.delete()); + }, + child: const Icon(Icons.share), + ), + ], + ), + body: ExtendedImageGesturePageView.builder( + scrollDirection: Axis.horizontal, + physics: const LessSensitiveScrollPhysics(), + itemCount: widget.media.length, + itemBuilder: (BuildContext context, int index) { + var item = widget.media[index]; + + return _TweetMediaThing( + item: item, username: widget.username, size: size, pullToClose: true, inPageView: true); + }, + controller: ExtendedPageController( + initialPage: widget.initialIndex, + ), + onPageChanged: (index) => setState(() { + _media = widget.media[index]; + }), + ), + ); + } +} + +class _TweetMediaThing extends StatelessWidget { + final Media item; + final String username; + final String size; + final bool pullToClose; + final bool inPageView; + + const _TweetMediaThing( + {Key? key, + required this.item, + required this.username, + required this.size, + required this.pullToClose, + required this.inPageView}) + : super(key: key); + + @override + Widget build(BuildContext context) { + Widget media; + if (item.type == 'animated_gif') { + media = TweetVideo(metadata: TweetVideoMetadata.fromMedia(item), loop: true, username: username); + } else if (item.type == 'video') { + media = TweetVideo(metadata: TweetVideoMetadata.fromMedia(item), loop: false, username: username); + } else if (item.type == 'photo') { + media = TweetPhoto( + size: size, uri: item.mediaUrlHttps!, fit: BoxFit.contain, pullToClose: pullToClose, inPageView: inPageView); + } else { + media = Text(L10n.of(context).unknown); + } + + return media; + } +} diff --git a/lib/tweet/_photo.dart b/lib/tweet/_photo.dart new file mode 100644 index 00000000..0ee833ff --- /dev/null +++ b/lib/tweet/_photo.dart @@ -0,0 +1,77 @@ +import 'package:extended_image/extended_image.dart'; +import 'package:flutter/material.dart'; + +List _doubleTapScales = [1.0, 4.0]; + +class TweetPhoto extends StatefulWidget { + final String uri; + final BoxFit fit; + final String size; + final bool pullToClose; + final bool inPageView; + + const TweetPhoto({Key? key, required this.uri, this.fit = BoxFit.fitWidth, required this.size, required this.pullToClose, required this.inPageView}) : super(key: key); + + @override + State createState() => _TweetPhotoState(); +} + +class _TweetPhotoState extends State with SingleTickerProviderStateMixin { + Animation? _doubleClickAnimation; + late void Function() _doubleClickAnimationListener; + late final AnimationController _doubleClickAnimationController = + AnimationController(duration: const Duration(milliseconds: 150), vsync: this); + + @override + Widget build(BuildContext context) { + return ExtendedImageSlidePage( + slideAxis: SlideAxis.vertical, + child: ExtendedImage.network( + '${widget.uri}:${widget.size}', + cache: true, + width: 5000, + height: 5000, + fit: widget.fit, + mode: ExtendedImageMode.gesture, + enableSlideOutPage: widget.pullToClose, + initGestureConfigHandler: (state) { + return GestureConfig( + inPageView: widget.inPageView, + minScale: 0.9, + animationMinScale: 0.7, + maxScale: 4.0, + animationMaxScale: 4.0, + speed: 1.0, + inertialSpeed: 100.0, + initialScale: 1.0, + initialAlignment: InitialAlignment.center, + ); + }, + onDoubleTap: (ExtendedImageGestureState state) { + final Offset? pointerDownPosition = state.pointerDownPosition; + final double? begin = state.gestureDetails!.totalScale; + double end; + + // Remove and stop any old animation + _doubleClickAnimation?.removeListener(_doubleClickAnimationListener); + _doubleClickAnimationController.stop(); + _doubleClickAnimationController.reset(); + + if (begin == _doubleTapScales[0]) { + end = _doubleTapScales[1]; + } else { + end = _doubleTapScales[0]; + } + + _doubleClickAnimationListener = () { + state.handleDoubleTap(scale: _doubleClickAnimation!.value, doubleTapPosition: pointerDownPosition); + }; + + _doubleClickAnimation = _doubleClickAnimationController.drive(Tween(begin: begin, end: end)); + _doubleClickAnimation!.addListener(_doubleClickAnimationListener); + _doubleClickAnimationController.forward(); + }, + ), + ); + } +} diff --git a/lib/tweet/_video.dart b/lib/tweet/_video.dart new file mode 100644 index 00000000..1e47be80 --- /dev/null +++ b/lib/tweet/_video.dart @@ -0,0 +1,242 @@ +import 'package:chewie/chewie.dart'; +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:extended_image/extended_image.dart'; +import 'package:flutter/material.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/tweet/_video_controls.dart'; +import 'package:quacker/utils/downloads.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:path/path.dart' as path; +import 'package:provider/provider.dart'; +import 'package:video_player/video_player.dart'; +import 'package:visibility_detector/visibility_detector.dart'; +import 'package:wakelock/wakelock.dart'; + +class TweetVideoUrls { + final String streamUrl; + final String? downloadUrl; + + TweetVideoUrls(this.streamUrl, this.downloadUrl); +} + +class TweetVideoMetadata { + final double aspectRatio; + final String imageUrl; + final Future Function() streamUrlsBuilder; + + TweetVideoMetadata(this.aspectRatio, this.imageUrl, this.streamUrlsBuilder); + + factory TweetVideoMetadata.fromMedia(Media media) { + var aspectRatio = media.videoInfo?.aspectRatio == null + ? 1.0 + : media.videoInfo!.aspectRatio![0] / media.videoInfo!.aspectRatio![1]; + + var variants = media.videoInfo?.variants ?? []; + var streamUrl = variants[0].url!; + var imageUrl = media.mediaUrlHttps!; + + // Find the MP4 video with the highest bitrate + var downloadUrl = variants + .where((e) => e.bitrate != null) + .where((e) => e.url != null) + .where((e) => e.contentType == 'video/mp4') + .sorted((a, b) => a.bitrate!.compareTo(b.bitrate!)) + .map((e) => e.url) + .firstWhereOrNull((e) => e != null); + + return TweetVideoMetadata(aspectRatio, imageUrl, () async => TweetVideoUrls(streamUrl, downloadUrl)); + } +} + +class TweetVideo extends StatefulWidget { + final String username; + final bool loop; + final TweetVideoMetadata metadata; + + const TweetVideo({Key? key, required this.username, required this.loop, required this.metadata}) : super(key: key); + + @override + State createState() => _TweetVideoState(); +} + +class _TweetVideoState extends State { + bool _showVideo = false; + + VideoPlayerController? _videoController; + ChewieController? _chewieController; + + Future _loadVideo() async { + var urls = await widget.metadata.streamUrlsBuilder(); + var streamUrl = urls.streamUrl; + var downloadUrl = urls.downloadUrl; + + _videoController = VideoPlayerController.network(streamUrl); + + var model = context.read(); + var volume = model.isMuted ? 0.0 : _videoController!.value.volume; + _videoController!.setVolume(volume); + + _videoController!.addListener(() { + model.setIsMuted(_videoController!.value.volume); + }); + + _chewieController = ChewieController( + aspectRatio: widget.metadata.aspectRatio, + autoInitialize: true, + autoPlay: true, + allowMuting: true, + allowedScreenSleep: false, + customControls: const FritterMaterialControls(), + additionalOptions: (context) => [ + OptionItem( + onTap: () async { + var video = downloadUrl; + if (video == null) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.current.download_media_no_url), + )); + return; + } + + var videoUri = Uri.parse(video); + var fileName = '${widget.username}-${path.basename(videoUri.path)}'; + + await downloadUriToPickedFile( + context, + videoUri, + fileName, + onStart: () { + Navigator.pop(context); + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.of(context).downloading_media), + )); + }, + onSuccess: () { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(L10n.of(context).successfully_saved_the_media), + )); + }, + ); + }, + iconData: Icons.download_outlined, + title: L10n.of(context).download, + ) + ], + looping: widget.loop, + videoPlayerController: _videoController!, + errorBuilder: (context, errorMessage) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon( + Icons.error_outline, + color: Colors.white, + size: 42, + ), + Text(errorMessage) + ], + ), + ); + }, + ); + + _videoController!.addListener(() { + // Change wake lock screen + if (_chewieController!.isPlaying) { + Wakelock.enable(); + } else { + Wakelock.disable(); + } + }); + } + + Future onTapPlay() async { + await _loadVideo(); + + setState(() { + _showVideo = true; + }); + } + + @override + Widget build(BuildContext context) { + // TODO: This is a bit flickery, but will do for now + return AspectRatio( + aspectRatio: widget.metadata.aspectRatio, + child: AnimatedSwitcher( + duration: const Duration(milliseconds: 150), + child: _showVideo + ? _Video(controller: _chewieController!) + : GestureDetector( + onTap: onTapPlay, + child: Stack(alignment: Alignment.center, children: [ + ExtendedImage.network(widget.metadata.imageUrl, width: double.infinity, fit: BoxFit.fitWidth), + Center( + child: FritterCenterPlayButton( + backgroundColor: Colors.black54, + iconColor: Colors.white, + isFinished: false, + isPlaying: false, + show: true, + onPressed: onTapPlay, + ), + ) + ]), + )), + ); + } + + @override + void dispose() { + // TODO: These now seem to get called when the video player goes fullscreen. They shouldn't though + _videoController?.dispose(); + _chewieController?.dispose(); + + Wakelock.disable(); + + super.dispose(); + } +} + +class _Video extends StatefulWidget { + final ChewieController controller; + + const _Video({Key? key, required this.controller}) : super(key: key); + + @override + State<_Video> createState() => _VideoState(); +} + +class _VideoState extends State<_Video> { + @override + Widget build(BuildContext context) { + return VisibilityDetector( + key: UniqueKey(), + onVisibilityChanged: (info) { + if (mounted) { + if (info.visibleFraction == 0 && !widget.controller.isFullScreen) { + widget.controller.pause(); + } + } + }, + child: Chewie( + controller: widget.controller, + ), + ); + } +} + +class VideoContextState extends ChangeNotifier { + bool isMuted; + + VideoContextState(this.isMuted); + + void setIsMuted(double volume) { + if (isMuted && volume > 0 || !isMuted && volume == 0) { + isMuted = !isMuted; + } + + notifyListeners(); + } +} diff --git a/lib/tweet/_video_controls.dart b/lib/tweet/_video_controls.dart new file mode 100644 index 00000000..3f93aade --- /dev/null +++ b/lib/tweet/_video_controls.dart @@ -0,0 +1,658 @@ +import 'dart:async'; +// ignore_for_file: implementation_imports +import 'package:chewie/src/animated_play_pause.dart'; +import 'package:chewie/src/chewie_player.dart'; +import 'package:chewie/src/chewie_progress_colors.dart'; +import 'package:chewie/src/helpers/utils.dart'; +import 'package:chewie/src/material/material_progress_bar.dart'; +import 'package:chewie/src/material/widgets/options_dialog.dart'; +import 'package:chewie/src/material/widgets/playback_speed_dialog.dart'; +import 'package:chewie/src/models/option_item.dart'; +import 'package:chewie/src/models/subtitle_model.dart'; +import 'package:chewie/src/notifiers/index.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:video_player/video_player.dart'; + +import 'package:quacker/generated/l10n.dart'; + +// This class is mostly taken directly from Chewie, which is released under the MIT License +// https://github.com/fluttercommunity/chewie/blob/0d997f8ded29ae2151a6935668d8654a6deb8fa6/lib/src/material/material_controls.dart +class FritterMaterialControls extends StatefulWidget { + const FritterMaterialControls({ + this.showPlayButton = true, + Key? key, + }) : super(key: key); + + final bool showPlayButton; + + @override + State createState() { + return _MaterialControlsState(); + } +} + +class _MaterialControlsState extends State with SingleTickerProviderStateMixin { + late PlayerNotifier notifier; + late VideoPlayerValue _latestValue; + double? _latestVolume; + Timer? _hideTimer; + Timer? _initTimer; + late var _subtitlesPosition = Duration.zero; + bool _subtitleOn = false; + Timer? _showAfterExpandCollapseTimer; + bool _dragging = false; + bool _displayTapped = false; + Timer? _bufferingDisplayTimer; + bool _displayBufferingIndicator = false; + + final barHeight = 48.0 * 1.5; + final marginSize = 5.0; + + late VideoPlayerController controller; + ChewieController? _chewieController; + + // We know that _chewieController is set in didChangeDependencies + ChewieController get chewieController => _chewieController!; + + @override + void initState() { + super.initState(); + notifier = Provider.of(context, listen: false); + } + + @override + Widget build(BuildContext context) { + if (_latestValue.hasError) { + return chewieController.errorBuilder?.call( + context, + chewieController.videoPlayerController.value.errorDescription!, + ) ?? + const Center( + child: Icon( + Icons.error_outline, + color: Colors.white, + size: 42, + ), + ); + } + + return MouseRegion( + onHover: (_) { + _cancelAndRestartTimer(); + }, + child: GestureDetector( + onTap: () => _cancelAndRestartTimer(), + child: AbsorbPointer( + absorbing: notifier.hideStuff, + child: Stack( + children: [ + if (_displayBufferingIndicator) + const Center( + child: CircularProgressIndicator(), + ) + else + _buildHitArea(), + _buildActionBar(), + Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + if (_subtitleOn) + Transform.translate( + offset: Offset( + 0.0, + notifier.hideStuff ? barHeight * 0.8 : 0.0, + ), + child: _buildSubtitles(context, chewieController.subtitle!), + ), + _buildBottomBar(context), + ], + ), + ], + ), + ), + ), + ); + } + + @override + void dispose() { + _dispose(); + super.dispose(); + } + + void _dispose() { + controller.removeListener(_updateState); + _hideTimer?.cancel(); + _initTimer?.cancel(); + _showAfterExpandCollapseTimer?.cancel(); + } + + @override + void didChangeDependencies() { + final oldController = _chewieController; + _chewieController = ChewieController.of(context); + controller = chewieController.videoPlayerController; + + if (oldController != chewieController) { + _dispose(); + _initialize(); + } + + super.didChangeDependencies(); + } + + Widget _buildActionBar() { + return Positioned( + top: 0, + right: 0, + // NOTE: Removed SafeArea so the options button appears correctly at the top right + child: AnimatedOpacity( + opacity: notifier.hideStuff ? 0.0 : 1.0, + duration: const Duration(milliseconds: 250), + child: Row( + children: [ + _buildSubtitleToggle(), + if (chewieController.showOptions) _buildOptionsButton(), + ], + ), + ), + ); + } + + Widget _buildOptionsButton() { + final options = [ + OptionItem( + onTap: () async { + Navigator.pop(context); + _onSpeedButtonTap(); + }, + iconData: Icons.speed_rounded, + title: L10n.of(context).playback_speed, + ) + ]; + + if (chewieController.additionalOptions != null && chewieController.additionalOptions!(context).isNotEmpty) { + options.addAll(chewieController.additionalOptions!(context)); + } + + return AnimatedOpacity( + opacity: notifier.hideStuff ? 0.0 : 1.0, + duration: const Duration(milliseconds: 250), + child: IconButton( + onPressed: () async { + _hideTimer?.cancel(); + + if (chewieController.optionsBuilder != null) { + await chewieController.optionsBuilder!(context, options); + } else { + await showModalBottomSheet( + context: context, + isScrollControlled: true, + useRootNavigator: chewieController.useRootNavigator, + builder: (context) => OptionsDialog( + options: options, + cancelButtonText: L10n.of(context).cancel, + ), + ); + } + + if (_latestValue.isPlaying) { + _startHideTimer(); + } + }, + icon: const Icon( + Icons.more_vert, + color: Colors.white, + ), + ), + ); + } + + Widget _buildSubtitles(BuildContext context, Subtitles subtitles) { + if (!_subtitleOn) { + return Container(); + } + final currentSubtitle = subtitles.getByPosition(_subtitlesPosition); + if (currentSubtitle.isEmpty) { + return Container(); + } + + if (chewieController.subtitleBuilder != null) { + return chewieController.subtitleBuilder!( + context, + currentSubtitle.first!.text, + ); + } + + return Padding( + padding: EdgeInsets.all(marginSize), + child: Container( + padding: const EdgeInsets.all(5), + decoration: BoxDecoration( + color: const Color(0x96000000), + borderRadius: BorderRadius.circular(10.0), + ), + child: Text( + currentSubtitle.first!.text.toString(), + style: const TextStyle( + fontSize: 18, + ), + textAlign: TextAlign.center, + ), + ), + ); + } + + AnimatedOpacity _buildBottomBar( + BuildContext context, + ) { + final iconColor = Theme.of(context).textTheme.labelLarge!.color; + + return AnimatedOpacity( + opacity: notifier.hideStuff ? 0.0 : 1.0, + duration: const Duration(milliseconds: 300), + child: Container( + height: barHeight + (chewieController.isFullScreen ? 10.0 : 0), + padding: EdgeInsets.only( + left: 20, + bottom: !chewieController.isFullScreen ? 10.0 : 0, + ), + // NOTE: Removed SafeArea so that controls don't disappear on smaller videos + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Flexible( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (chewieController.isLive) + Expanded(child: Text(L10n.of(context).live)) + else + _buildPosition(iconColor), + if (chewieController.allowMuting) _buildMuteButton(controller), + const Spacer(), + if (chewieController.allowFullScreen) _buildExpandButton(), + ], + ), + ), + SizedBox( + height: chewieController.isFullScreen ? 15.0 : 0, + ), + if (!chewieController.isLive) + Expanded( + child: Container( + padding: const EdgeInsets.only(right: 20), + child: Row( + children: [ + _buildProgressBar(), + ], + ), + ), + ), + ], + ), + ), + ); + } + + GestureDetector _buildMuteButton( + VideoPlayerController controller, + ) { + return GestureDetector( + onTap: () { + _cancelAndRestartTimer(); + + if (_latestValue.volume == 0) { + controller.setVolume(_latestVolume ?? 0.5); + } else { + _latestVolume = controller.value.volume; + controller.setVolume(0.0); + } + }, + child: AnimatedOpacity( + opacity: notifier.hideStuff ? 0.0 : 1.0, + duration: const Duration(milliseconds: 300), + child: ClipRect( + child: Container( + height: barHeight, + padding: const EdgeInsets.only( + left: 6.0, + ), + child: Icon( + _latestValue.volume > 0 ? Icons.volume_up_outlined : Icons.volume_off_outlined, + color: Colors.white, + ), + ), + ), + ), + ); + } + + GestureDetector _buildExpandButton() { + return GestureDetector( + onTap: _onExpandCollapse, + child: AnimatedOpacity( + opacity: notifier.hideStuff ? 0.0 : 1.0, + duration: const Duration(milliseconds: 300), + child: Container( + height: barHeight + (chewieController.isFullScreen ? 15.0 : 0), + margin: const EdgeInsets.only(right: 12.0), + padding: const EdgeInsets.only( + left: 8.0, + right: 8.0, + ), + child: Center( + child: Icon( + chewieController.isFullScreen ? Icons.fullscreen_exit_rounded : Icons.fullscreen_rounded, + color: Colors.white, + ), + ), + ), + ), + ); + } + + Widget _buildHitArea() { + final bool isFinished = _latestValue.position >= _latestValue.duration; + final bool showPlayButton = widget.showPlayButton && !_dragging && !notifier.hideStuff; + + return GestureDetector( + onTap: () { + // NOTE: This has the _playPause callback removed, so tapping outside the button only hides the controls + if (_latestValue.isPlaying) { + if (_displayTapped) { + setState(() { + notifier.hideStuff = true; + }); + } else { + _cancelAndRestartTimer(); + } + } else { + setState(() { + notifier.hideStuff = true; + }); + } + }, + child: FritterCenterPlayButton( + backgroundColor: Colors.black54, + iconColor: Colors.white, + isFinished: isFinished, + isPlaying: controller.value.isPlaying, + show: showPlayButton, + onPressed: _playPause, + ), + ); + } + + Future _onSpeedButtonTap() async { + _hideTimer?.cancel(); + + final chosenSpeed = await showModalBottomSheet( + context: context, + isScrollControlled: true, + useRootNavigator: chewieController.useRootNavigator, + builder: (context) => PlaybackSpeedDialog( + speeds: chewieController.playbackSpeeds, + selected: _latestValue.playbackSpeed, + ), + ); + + if (chosenSpeed != null) { + controller.setPlaybackSpeed(chosenSpeed); + } + + if (_latestValue.isPlaying) { + _startHideTimer(); + } + } + + Widget _buildPosition(Color? iconColor) { + final position = _latestValue.position; + final duration = _latestValue.duration; + + return RichText( + text: TextSpan( + text: '${formatDuration(position)} ', + children: [ + TextSpan( + text: '/ ${formatDuration(duration)}', + style: TextStyle( + fontSize: 14.0, + color: Colors.white.withOpacity(.75), + fontWeight: FontWeight.normal, + ), + ) + ], + style: const TextStyle( + fontSize: 14.0, + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ); + } + + Widget _buildSubtitleToggle() { + //if don't have subtitle hiden button + if (chewieController.subtitle?.isEmpty ?? true) { + return Container(); + } + return GestureDetector( + onTap: _onSubtitleTap, + child: Container( + height: barHeight, + color: Colors.transparent, + padding: const EdgeInsets.only( + left: 12.0, + right: 12.0, + ), + child: Icon( + _subtitleOn ? Icons.closed_caption_outlined : Icons.closed_caption_disabled_outlined, + color: _subtitleOn ? Colors.white : Colors.grey[700], + ), + ), + ); + } + + void _onSubtitleTap() { + setState(() { + _subtitleOn = !_subtitleOn; + }); + } + + void _cancelAndRestartTimer() { + _hideTimer?.cancel(); + _startHideTimer(); + + setState(() { + notifier.hideStuff = false; + _displayTapped = true; + }); + } + + Future _initialize() async { + _subtitleOn = chewieController.subtitle?.isNotEmpty ?? false; + controller.addListener(_updateState); + + _updateState(); + + if (controller.value.isPlaying || chewieController.autoPlay) { + _startHideTimer(); + } + + if (chewieController.showControlsOnInitialize) { + _initTimer = Timer(const Duration(milliseconds: 200), () { + setState(() { + notifier.hideStuff = false; + }); + }); + } + } + + void _onExpandCollapse() { + setState(() { + notifier.hideStuff = true; + + chewieController.toggleFullScreen(); + _showAfterExpandCollapseTimer = Timer(const Duration(milliseconds: 300), () { + setState(() { + _cancelAndRestartTimer(); + }); + }); + }); + } + + void _playPause() { + final isFinished = _latestValue.position >= _latestValue.duration; + + setState(() { + if (controller.value.isPlaying) { + notifier.hideStuff = false; + _hideTimer?.cancel(); + controller.pause(); + } else { + _cancelAndRestartTimer(); + + if (!controller.value.isInitialized) { + controller.initialize().then((_) { + controller.play(); + }); + } else { + if (isFinished) { + controller.seekTo(Duration.zero); + } + controller.play(); + } + } + }); + } + + void _startHideTimer() { + final hideControlsTimer = chewieController.hideControlsTimer.isNegative + ? ChewieController.defaultHideControlsTimer + : chewieController.hideControlsTimer; + _hideTimer = Timer(hideControlsTimer, () { + setState(() { + notifier.hideStuff = true; + }); + }); + } + + void _bufferingTimerTimeout() { + _displayBufferingIndicator = true; + if (mounted) { + setState(() {}); + } + } + + void _updateState() { + if (!mounted) return; + + // display the progress bar indicator only after the buffering delay if it has been set + if (chewieController.progressIndicatorDelay != null) { + if (controller.value.isBuffering) { + _bufferingDisplayTimer ??= Timer( + chewieController.progressIndicatorDelay!, + _bufferingTimerTimeout, + ); + } else { + _bufferingDisplayTimer?.cancel(); + _bufferingDisplayTimer = null; + _displayBufferingIndicator = false; + } + } else { + _displayBufferingIndicator = controller.value.isBuffering; + } + + setState(() { + _latestValue = controller.value; + _subtitlesPosition = controller.value.position; + }); + } + + Widget _buildProgressBar() { + return Expanded( + child: MaterialVideoProgressBar( + controller, + onDragStart: () { + setState(() { + _dragging = true; + }); + + _hideTimer?.cancel(); + }, + onDragEnd: () { + setState(() { + _dragging = false; + }); + + _startHideTimer(); + }, + colors: chewieController.materialProgressColors ?? + ChewieProgressColors( + playedColor: Theme.of(context).colorScheme.secondary, + handleColor: Theme.of(context).colorScheme.secondary, + bufferedColor: Theme.of(context).colorScheme.background.withOpacity(0.5), + backgroundColor: Theme.of(context).disabledColor.withOpacity(.5), + ), + ), + ); + } +} + +class FritterCenterPlayButton extends StatelessWidget { + const FritterCenterPlayButton({ + Key? key, + required this.backgroundColor, + this.iconColor, + required this.show, + required this.isPlaying, + required this.isFinished, + this.onPressed, + }) : super(key: key); + + final Color backgroundColor; + final Color? iconColor; + final bool show; + final bool isPlaying; + final bool isFinished; + final VoidCallback? onPressed; + + @override + Widget build(BuildContext context) { + return Container( + color: Colors.transparent, + child: Center( + child: AnimatedOpacity( + opacity: show ? 1.0 : 0.0, + duration: const Duration(milliseconds: 300), + // NOTE: GestureDetector added, so the padding around the button is tappable + child: GestureDetector( + onTap: onPressed, + child: Container( + // NOTE: Added specific sizes here, otherwise it fills the container on Flutter >3.3.2 + width: 64, + height: 64, + decoration: BoxDecoration( + color: backgroundColor, + shape: BoxShape.circle, + ), + child: IconButton( + iconSize: 32, + icon: isFinished + ? Icon(Icons.replay_rounded, color: iconColor) + : AnimatedPlayPause( + color: iconColor, + playing: isPlaying, + ), + onPressed: onPressed, + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/tweet/conversation.dart b/lib/tweet/conversation.dart new file mode 100644 index 00000000..392d5bd3 --- /dev/null +++ b/lib/tweet/conversation.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/tweet/tweet.dart'; +import 'package:quacker/utils/iterables.dart'; + +class TweetConversation extends StatefulWidget { + final String id; + final String? username; + final bool isPinned; + final List tweets; + + const TweetConversation( + {Key? key, required this.id, required this.username, required this.isPinned, required this.tweets}) + : super(key: key); + + @override + State createState() => _TweetConversationState(); +} + +class _TweetConversationState extends State { + @override + Widget build(BuildContext context) { + if (widget.tweets.length == 1) { + return TweetTile( + clickable: true, tweet: widget.tweets.first, currentUsername: widget.username, isPinned: widget.isPinned); + } + + var tiles = []; + var tweets = widget.tweets.sorted((a, b) => a.idStr!.compareTo(b.idStr!)).toList(growable: false); + + // We need to do a simple for loop so we can mark the first item as the thread start + for (var i = 0; i < tweets.length; i++) { + tiles.add(TweetTile( + clickable: true, + tweet: tweets[i], + currentUsername: widget.username, + isPinned: widget.isPinned, + isThread: i == 0)); + } + + return Container( + margin: const EdgeInsets.symmetric(horizontal: 4), + decoration: const BoxDecoration(border: Border(left: BorderSide(color: Colors.white, width: 4))), + child: Column( + children: [ + ...tiles, + ], + ), + ); + } +} diff --git a/lib/tweet/tweet.dart b/lib/tweet/tweet.dart new file mode 100644 index 00000000..548a60d0 --- /dev/null +++ b/lib/tweet/tweet.dart @@ -0,0 +1,677 @@ +import 'package:auto_direction/auto_direction.dart'; +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:flutter/material.dart'; +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/import_data_model.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/saved/saved_tweet_model.dart'; +import 'package:quacker/search/search.dart'; +import 'package:quacker/status.dart'; +import 'package:quacker/tweet/_card.dart'; +import 'package:quacker/tweet/_entities.dart'; +import 'package:quacker/tweet/_media.dart'; +import 'package:quacker/ui/dates.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:quacker/user.dart'; +import 'package:quacker/utils/iterables.dart'; +import 'package:quacker/utils/misc.dart'; +import 'package:quacker/utils/translation.dart'; +import 'package:quacker/utils/urls.dart'; +import 'package:html_unescape/html_unescape.dart'; +import 'package:intl/intl.dart'; +import 'package:logging/logging.dart'; +import 'package:pref/pref.dart'; +import 'package:provider/provider.dart'; +import 'package:share_plus/share_plus.dart'; + +class TweetTile extends StatefulWidget { + final bool clickable; + final String? currentUsername; + final TweetWithCard tweet; + final bool isPinned; + final bool isThread; + + const TweetTile( + {Key? key, + required this.clickable, + this.currentUsername, + required this.tweet, + this.isPinned = false, + this.isThread = false}) + : super(key: key); + + @override + TweetTileState createState() => TweetTileState(); +} + +class TweetTileState extends State with SingleTickerProviderStateMixin { + static final log = Logger('TweetTile'); + + late final bool clickable; + late final String? currentUsername; + late final TweetWithCard tweet; + late final bool isPinned; + late final bool isThread; + + TranslationStatus _translationStatus = TranslationStatus.original; + + List _originalParts = []; + List _displayParts = []; + List _translatedParts = []; + + static String? _convertRunesToText(Iterable runes, int start, [int? end]) { + var string = runes.getRange(start, end).map((e) => String.fromCharCode(e)).join(''); + if (string.isEmpty) { + return null; + } + + return HtmlUnescape().convert(string); + } + + static List _populateEntities( + {required List entities, List? source, required Function getNewEntity}) { + source = source ?? []; + + for (dynamic newEntity in source) { + entities.add(getNewEntity(newEntity)); + } + + return entities; + } + + static List _getEntities(BuildContext context, TweetWithCard tweet) { + List entities = []; + + entities = _populateEntities( + entities: entities, + source: tweet.entities?.hashtags, + getNewEntity: (Hashtag hashtag) { + return TweetHashtag( + hashtag, + () => Navigator.pushNamed(context, routeSearch, + arguments: SearchArguments(1, focusInputOnOpen: false, query: '#${hashtag.text}'))); + }); + + entities = _populateEntities( + entities: entities, + source: tweet.entities?.userMentions, + getNewEntity: (UserMention mention) { + return TweetUserMention(mention, () { + Navigator.pushNamed(context, routeProfile, + arguments: ProfileScreenArguments(mention.idStr, mention.screenName)); + }); + }); + + entities = _populateEntities( + entities: entities, + source: tweet.entities?.urls, + getNewEntity: (Url url) { + return TweetUrl(url, () async { + String? uri = url.expandedUrl; + if (uri == null || (uri.length > 33 && uri.substring(0, 33) == 'https://twitter.com/i/web/status/')) { + return; + } + + await openUri(uri); + }); + }); + + entities.sort((a, b) => a.getEntityStart().compareTo(b.getEntityStart())); + + return entities; + } + + Future onClickTranslate() async { + // If we've already translated this text before, use those results instead of translating again + if (_translatedParts.isNotEmpty) { + return setState(() { + _displayParts = _translatedParts; + _translationStatus = TranslationStatus.translated; + }); + } + + setState(() { + _translationStatus = TranslationStatus.translating; + }); + + try { + var systemLocale = getShortSystemLocale(); + + var isLanguageSupported = await isLanguageSupportedForTranslation(systemLocale); + if (!isLanguageSupported) { + return showTranslationError('Your system language ($systemLocale) is not supported for translation'); + } + } catch (e) { + log.severe('Unable to list the supported languages'); + + return showTranslationError( + 'Failed to get the list of supported languages. Please check your connection, or try again later!'); + } + + var originalText = _originalParts.map((e) => e.toString()).toList(); + + var res = await TranslationAPI.translate(tweet.idStr!, originalText, tweet.lang ?? ""); + if (res.success) { + var translatedParts = convertTextPartsToTweetEntities(List.from(res.body['translatedText'])); + + // We cache the translated parts in a property in case the user swaps back and forth + return setState(() { + _displayParts = translatedParts; + _translatedParts = translatedParts; + _translationStatus = TranslationStatus.translated; + }); + } else { + return showTranslationError(res.errorMessage ?? 'An unknown error occurred while translating'); + } + } + + void showTranslationError(String message) { + setState(() { + _translationStatus = TranslationStatus.translationFailed; + }); + + showSnackBar(context, icon: '💥', message: message); + } + + Future onClickShowOriginal() async { + setState(() { + _displayParts = _originalParts; + _translationStatus = TranslationStatus.original; + }); + } + + void onClickOpenTweet(TweetWithCard tweet) { + Navigator.pushNamed(context, routeStatus, + arguments: StatusScreenArguments(id: tweet.idStr!, username: tweet.user!.screenName!)); + } + + List convertTextPartsToTweetEntities(List parts) { + List translatedParts = []; + + for (var i = 0; i < parts.length; i++) { + var thing = _originalParts[i]; + if (thing.plainText != null) { + translatedParts.add(TweetTextPart(null, parts[i])); + } else { + translatedParts.add(TweetTextPart(thing.entity, null)); + } + } + + return translatedParts; + } + + @override + void initState() { + super.initState(); + + clickable = widget.clickable; + currentUsername = widget.currentUsername; + tweet = widget.tweet; + isPinned = widget.isPinned; + isThread = widget.isThread; + + // Get the text to display from the actual tweet, i.e. the retweet if there is one, otherwise we end up with "RT @" crap in our text + var actualTweet = tweet.retweetedStatusWithCard ?? tweet; + + // This is some super long text that I think only Twitter Blue users can write + var noteText = tweet.noteText; + + // Generate all the tweet entities (mentions, hashtags, etc.) from the tweet text + Runes tweetText = Runes(noteText ?? actualTweet.fullText ?? actualTweet.text!); + + // If we're not given a text display range, we just display the entire text + List displayTextRange; + if (noteText == null) { + displayTextRange = actualTweet.displayTextRange ?? [0, tweetText.length]; + } else { + displayTextRange = [0, noteText.length]; + } + + Iterable runes = tweetText.getRange(displayTextRange[0], displayTextRange[1]); + + List entities = _getEntities(context, actualTweet); + List things = []; + + int index = 0; + + for (var part in entities) { + // Generate new indices for the entity start and end, by subtracting the displayTextRange's start index, as we ignore text up until that point + int start = part.getEntityStart() - displayTextRange[0]; + int end = part.getEntityEnd() - displayTextRange[0]; + + // Only add entities that are after the displayTextRange's start index + if (start < 0) { + continue; + } + + // Add any text between the last entity's end and the start of this one + var textPart = _convertRunesToText(runes, index, start); + if (textPart != null) { + things.add(TweetTextPart(null, textPart)); + } + + // Then add the actual entity + things.add(TweetTextPart(part.getContent(), null)); + + // Then set our index in the tweet text as the end of our entity + index = end; + } + + var textPart = _convertRunesToText(runes, index); + if (textPart != null) { + things.add(TweetTextPart(null, textPart)); + } + + setState(() { + _displayParts = things; + _originalParts = things; + }); + } + + _createFooterIconButton(IconData icon, [Color? color, Function()? onPressed]) { + return TextButton.icon( + icon: Icon(icon, size: 14, color: color), + onPressed: onPressed, + label: Container(), + ); + } + + _createFooterTextButton(IconData icon, String label, [Color? color, Function()? onPressed]) { + return TextButton.icon( + icon: Icon(icon, size: 14, color: color), + onPressed: onPressed, + label: Text(label, style: TextStyle(color: color, fontSize: 12.5)), + ); + } + + @override + Widget build(BuildContext context) { + final prefs = PrefService.of(context, listen: false); + + var shareBaseUrlOption = prefs.get(optionShareBaseUrl); + var shareBaseUrl = + shareBaseUrlOption != null && shareBaseUrlOption.isNotEmpty ? shareBaseUrlOption : 'https://twitter.com'; + + TweetWithCard tweet = this.tweet.retweetedStatusWithCard == null ? this.tweet : this.tweet.retweetedStatusWithCard!; + + // If the user is on a profile, all the shown tweets are from that profile, so it makes no sense to hide it + final isTweetOnSameProfile = currentUsername != null && currentUsername == tweet.user!.screenName; + final hideAuthorInformation = !isTweetOnSameProfile && prefs.get(optionNonConfirmationBiasMode); + + var numberFormat = NumberFormat.compact(); + var theme = Theme.of(context); + + if (tweet.isTombstone ?? false) { + return SizedBox( + width: double.infinity, + child: Card( + child: Container( + padding: const EdgeInsets.all(16), + child: Text(tweet.text!, style: const TextStyle(fontStyle: FontStyle.italic))), + ), + ); + } + + Widget media = Container(); + if (tweet.extendedEntities?.media != null && tweet.extendedEntities!.media!.isNotEmpty) { + media = TweetMedia( + sensitive: tweet.possiblySensitive, + media: tweet.extendedEntities!.media!, + username: tweet.user!.screenName!, + ); + } + + Widget retweetBanner = Container(); + Widget retweetSidebar = Container(); + if (this.tweet.retweetedStatusWithCard != null) { + retweetBanner = _TweetTileLeading( + icon: Icons.repeat_rounded, + onTap: () => Navigator.pushNamed(context, routeProfile, arguments: this.tweet.user!.screenName!), + children: [ + TextSpan( + text: L10n.of(context) + .this_tweet_user_name_retweeted(this.tweet.user!.name!, createRelativeDate(this.tweet.createdAt!)), + style: theme.textTheme.bodySmall) + ], + ); + + retweetSidebar = Container(color: theme.secondaryHeaderColor, width: 4); + } + + Widget replyToTile = Container(); + var replyTo = tweet.inReplyToScreenName; + if (replyTo != null) { + replyToTile = _TweetTileLeading( + onTap: () { + var replyToId = tweet.inReplyToStatusIdStr; + if (replyToId == null) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text( + L10n.of(context).sorry_the_replied_tweet_could_not_be_found, + ), + )); + } else { + Navigator.pushNamed(context, routeStatus, + arguments: StatusScreenArguments(id: replyToId, username: replyTo)); + } + }, + icon: Icons.reply_rounded, + children: [ + TextSpan(text: '${L10n.of(context).replying_to} ', style: theme.textTheme.bodySmall), + TextSpan(text: '@$replyTo', style: theme.textTheme.bodySmall!.copyWith(fontWeight: FontWeight.bold)), + ], + ); + } + + var tweetText = tweet.fullText ?? tweet.text; + if (tweetText == null) { + return Text(L10n.of(context).the_tweet_did_not_contain_any_text_this_is_unexpected); + } + + var quotedTweet = Container(); + + if (tweet.isQuoteStatus ?? false) { + if (tweet.quotedStatusWithCard != null) { + quotedTweet = Container( + decoration: + BoxDecoration(border: Border.all(color: theme.primaryColor), borderRadius: BorderRadius.circular(8)), + margin: const EdgeInsets.all(8), + child: TweetTile( + clickable: true, + tweet: tweet.quotedStatusWithCard!, + currentUsername: currentUsername, + ), + ); + } + } + + // Only create the tweet content if the tweet contains text + Widget content = Container(); + + if (tweet.displayTextRange![1] != 0) { + content = Container( + // Fill the width so both RTL and LTR text are displayed correctly + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), + child: AutoDirection( + text: tweetText, + child: SelectableText.rich( + TextSpan(children: [ + ..._displayParts.map((e) { + if (e.plainText != null) { + return TextSpan(text: e.plainText); + } else { + return e.entity!; + } + }) + ]), + onTap: () => onClickOpenTweet(tweet), + )), + ); + } + + Widget translateButton; + switch (_translationStatus) { + case TranslationStatus.original: + translateButton = _createFooterIconButton(Icons.translate_rounded, Colors.blue, () async => onClickTranslate()); + break; + case TranslationStatus.translating: + translateButton = const Padding( + padding: EdgeInsets.symmetric(horizontal: 24), + child: SizedBox(width: 16, height: 16, child: CircularProgressIndicator()), + ); + break; + case TranslationStatus.translationFailed: + translateButton = _createFooterIconButton(Icons.translate_rounded, Colors.red, () async => onClickTranslate()); + break; + case TranslationStatus.translated: + translateButton = + _createFooterIconButton(Icons.translate_rounded, Colors.green, () async => onClickShowOriginal()); + break; + } + + DateTime? createdAt; + if (tweet.createdAt != null) { + createdAt = tweet.createdAt; + } + + return Consumer( + builder: (context, model, child) => Card( + child: Row( + children: [ + retweetSidebar, + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + retweetBanner, + replyToTile, + if (isPinned) + _TweetTileLeading(icon: Icons.push_pin_outlined, children: [ + TextSpan( + text: L10n.of(context).pinned_tweet, + style: theme.textTheme.bodySmall, + ) + ]), + if (isThread) + _TweetTileLeading(icon: Icons.forum_outlined, children: [ + TextSpan( + text: L10n.of(context).thread, + style: theme.textTheme.bodySmall, + ) + ]), + ListTile( + onTap: () { + // If the tweet is by the currently-viewed profile, don't allow clicks as it doesn't make sense + if (currentUsername != null && tweet.user!.screenName!.endsWith(currentUsername!)) { + return; + } + + Navigator.pushNamed(context, routeProfile, + arguments: ProfileScreenArguments(tweet.user!.idStr, tweet.user!.screenName)); + }, + title: Row( + children: [ + // Username + if (!hideAuthorInformation) + Flexible( + child: Row( + children: [ + Flexible( + child: Text(tweet.user!.name!, + overflow: TextOverflow.ellipsis, + style: const TextStyle(fontWeight: FontWeight.w500))), + if (tweet.user!.verified ?? false) const SizedBox(width: 4), + if (tweet.user!.verified ?? false) + Icon(Icons.verified_outlined, size: 18, color: Theme.of(context).primaryColor) + ], + ), + ), + const Spacer(), + InkWell( + child: const Icon(Icons.more_horiz), + onTap: () async { + createSheetButton(title, icon, onTap) => ListTile( + onTap: onTap, + leading: Icon(icon), + title: Text(title), + ); + + showModalBottomSheet( + context: context, + builder: (context) { + return SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Consumer(builder: (context, model, child) { + var isSaved = model.isSaved(tweet.idStr!); + if (isSaved) { + return createSheetButton( + L10n.of(context).unsave, + Icons.bookmark_border_rounded, + () async { + await model.deleteSavedTweet(tweet.idStr!); + Navigator.pop(context); + }, + ); + } else { + return createSheetButton( + L10n.of(context).save, Icons.bookmark_border_rounded, () async { + await model.saveTweet(tweet.idStr!, tweet.user?.idStr, tweet.toJson()); + Navigator.pop(context); + }); + } + }), + createSheetButton( + L10n.of(context).share_tweet_content, + Icons.share, + () async { + Share.share(tweetText); + Navigator.pop(context); + }, + ), + createSheetButton(L10n.of(context).share_tweet_link, Icons.share, () async { + Share.share( + '$shareBaseUrl/${tweet.user!.screenName}/status/${tweet.idStr}'); + Navigator.pop(context); + }), + createSheetButton(L10n.of(context).share_tweet_content_and_link, Icons.share, + () async { + Share.share( + '$tweetText\n\n$shareBaseUrl/${tweet.user!.screenName}/status/${tweet.idStr}'); + Navigator.pop(context); + }), + const Padding( + padding: EdgeInsets.symmetric(horizontal: 16), + child: Divider( + thickness: 1.0, + ), + ), + createSheetButton( + L10n.of(context).cancel, + Icons.close_rounded, + () => Navigator.pop(context), + ) + ], + )); + }); + }, + ) + ], + ), + subtitle: Row( + mainAxisAlignment: + hideAuthorInformation ? MainAxisAlignment.end : MainAxisAlignment.spaceBetween, + children: [ + // Twitter name + if (!hideAuthorInformation) ...[ + Flexible(child: Text('@${tweet.user!.screenName!}', overflow: TextOverflow.ellipsis)), + const SizedBox(width: 4), + ], + if (createdAt != null) + DefaultTextStyle( + style: theme.textTheme.bodySmall!, child: Timestamp(timestamp: createdAt)) + ], + ), + // Profile picture + leading: hideAuthorInformation + ? const Icon(Icons.account_circle_rounded, size: 48) + : ClipRRect( + borderRadius: BorderRadius.circular(64), + child: UserAvatar(uri: tweet.user!.profileImageUrlHttps), + ), + ), + content, + media, + quotedTweet, + TweetCard(tweet: tweet, card: tweet.card), + Container( + margin: const EdgeInsets.symmetric(horizontal: 8), + child: Scrollbar( + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + if (tweet.replyCount != null) + _createFooterTextButton(Icons.comment_outlined, numberFormat.format(tweet.replyCount), + null, () => onClickOpenTweet(tweet)), + if (tweet.retweetCount != null) + _createFooterTextButton( + Icons.repeat_rounded, numberFormat.format(tweet.retweetCount)), + if (tweet.quoteCount != null) + _createFooterTextButton(Icons.chat_outlined, numberFormat.format(tweet.quoteCount)), + if (tweet.favoriteCount != null) + _createFooterTextButton( + Icons.favorite_border, numberFormat.format(tweet.favoriteCount)), + translateButton, + ], + ), + ), + ), + ), + ], + )) + ], + ), + )); + } +} + +class TweetHasNoContentException { + final String? id; + + TweetHasNoContentException(this.id); + + @override + String toString() { + return 'The tweet has no content {id: $id}'; + } +} + +class _TweetTileLeading extends StatelessWidget { + final Function()? onTap; + final IconData icon; + final Iterable children; + + const _TweetTileLeading({Key? key, this.onTap, required this.icon, required this.children}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.only(top: 16), + child: InkWell( + onTap: onTap, + child: Container( + alignment: Alignment.centerLeft, + padding: const EdgeInsets.only(bottom: 0, left: 52, right: 16, top: 0), + child: RichText( + text: TextSpan(children: [ + WidgetSpan( + child: Icon(icon, size: 12, color: Theme.of(context).hintColor), + alignment: PlaceholderAlignment.middle), + const WidgetSpan(child: SizedBox(width: 16)), + ...children + ]), + ), + ), + ), + ); + } +} + +class TweetTextPart { + final InlineSpan? entity; + String? plainText; + + TweetTextPart(this.entity, this.plainText); + + @override + String toString() { + return plainText ?? ''; + } +} + +enum TranslationStatus { original, translating, translationFailed, translated } diff --git a/lib/tweet/tweet_exceptions.dart b/lib/tweet/tweet_exceptions.dart new file mode 100644 index 00000000..d028af5c --- /dev/null +++ b/lib/tweet/tweet_exceptions.dart @@ -0,0 +1,11 @@ +class TweetMissingDataException implements Exception { + final String? id; + final List missingFields; + + TweetMissingDataException(this.id, this.missingFields); + + @override + String toString() { + return 'TweetMissingDataException{id: $id, missingFields: $missingFields}'; + } +} diff --git a/lib/ui/dates.dart b/lib/ui/dates.dart new file mode 100644 index 00000000..7b3c4a9c --- /dev/null +++ b/lib/ui/dates.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:timeago/timeago.dart' as timeago; + +final absoluteDateFormat = DateFormat.yMMMd().add_Hms(); + +String createRelativeDate(DateTime dateTime) { + return timeago.format(dateTime, locale: Intl.shortLocale(Intl.getCurrentLocale())); +} + +class Timestamp extends StatefulWidget { + final DateTime? timestamp; + + const Timestamp({Key? key, required this.timestamp}) : super(key: key); + + @override + State createState() => _TimestampState(); +} + +class _TimestampState extends State { + bool _useRelativeTimestamp = true; + + String formattedTime = ''; + + @override + void initState() { + super.initState(); + + var timestamp = widget.timestamp; + if (timestamp != null) { + formattedTime = createRelativeDate(timestamp); + } + } + + @override + Widget build(BuildContext context) { + var timestamp = widget.timestamp; + if (timestamp == null) { + return Container(); + } + + return GestureDetector( + child: Text(formattedTime), + onTap: () { + setState(() { + if (_useRelativeTimestamp) { + formattedTime = createRelativeDate(timestamp); + } else { + formattedTime = absoluteDateFormat.format(timestamp); + } + + _useRelativeTimestamp = !_useRelativeTimestamp; + }); + }, + ); + } +} \ No newline at end of file diff --git a/lib/ui/errors.dart b/lib/ui/errors.dart new file mode 100644 index 00000000..9ac7ca01 --- /dev/null +++ b/lib/ui/errors.dart @@ -0,0 +1,303 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:async_button_builder/async_button_builder.dart'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:quacker/client.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; + +void showSnackBar(BuildContext context, {required String icon, required String message, bool clearBefore = true}) { + if (clearBefore) { + ScaffoldMessenger.of(context).clearSnackBars(); + } + + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible(child: Text(message, style: const TextStyle(height: 1.5))), + Text(icon), + ], + ), + )); +} + +abstract class FritterErrorWidget extends StatelessWidget { + const FritterErrorWidget({Key? key}) : super(key: key); +} + +class UnknownTwitterErrorCode implements Exception { + final int code; + final String message; + final String uri; + + UnknownTwitterErrorCode(this.code, this.message, this.uri); + + @override + String toString() { + return 'Unknown Twitter error code: {code: $code, message: $message, uri: $uri}'; + } +} + +EmojiErrorWidget createEmojiError(TwitterError error) { + String emoji; + String message; + + switch (error.code) { + case 22: + emoji = '🔒'; + message = L10n.current.private_profile; + break; + case 34: + emoji = '🤔'; + message = L10n.current.page_not_found; + break; + case 50: + emoji = '🕵️'; + message = L10n.current.user_not_found; + break; + case 63: + emoji = '👮'; + message = L10n.current.account_suspended; + break; + case 200: + emoji = '⛔'; + message = L10n.current.forbidden; + break; + case 239: + emoji = '💩'; + message = L10n.current.bad_guest_token; + break; + default: + emoji = '💥'; + message = L10n.current.catastrophic_failure; + break; + } + + return EmojiErrorWidget(emoji: emoji, message: message, errorMessage: error.message); +} + +class EmojiErrorWidget extends FritterErrorWidget { + final String emoji; + final String message; + final String errorMessage; + final Function? onRetry; + String retryText = ''; + final bool showBackButton; + + EmojiErrorWidget( + {Key? key, + required this.emoji, + required this.message, + required this.errorMessage, + this.onRetry, + String? retryText, + this.showBackButton = true}) + : super(key: key) { + this.retryText = retryText ?? L10n.current.retry; + } + + @override + Widget build(BuildContext context) { + var onRetry = this.onRetry; + + return Container( + alignment: Alignment.center, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + margin: const EdgeInsets.only(bottom: 16), + child: Text(emoji, style: const TextStyle(fontSize: 36)), + ), + Text(message, textAlign: TextAlign.center, style: const TextStyle(fontSize: 18)), + Container( + margin: const EdgeInsets.only(top: 12), + child: + Text(errorMessage, textAlign: TextAlign.center, style: TextStyle(color: Theme.of(context).hintColor)), + ), + Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + if (showBackButton) + Container( + margin: const EdgeInsets.only(top: 12), + child: ElevatedButton( + child: Text(L10n.of(context).back), + onPressed: () { + // Check if we can actually pop the last route, as we might have opened here directly from another app + if (Navigator.canPop(context)) { + Navigator.pop(context); + return; + } + + // If we're running on Android, close the app gracefully. Otherwise, return to the home screen + if (Platform.isAndroid) { + SystemNavigator.pop(); + } else { + Navigator.pushReplacementNamed(context, routeHome); + } + }, + ), + ), + if (onRetry != null) const SizedBox(width: 16), + if (onRetry != null) + Container( + margin: const EdgeInsets.only(top: 12), + child: AsyncButtonBuilder( + showError: false, + showSuccess: false, + builder: (context, child, callback, buttonState) { + return ElevatedButton( + onPressed: callback, + child: child, + ); + }, + child: Text(retryText), + onPressed: () => onRetry(), + ), + ) + ]) + ], + ), + ); + } +} + +class InlineErrorWidget extends FritterErrorWidget { + final Object? error; + + const InlineErrorWidget({Key? key, required this.error}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.all(16), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + margin: const EdgeInsets.only(right: 8), + child: const Icon(Icons.error_outline, color: Colors.red), + ), + Text('$error', textAlign: TextAlign.center, style: TextStyle(color: Theme.of(context).hintColor)), + ], + ), + ); + } +} + +class AlertErrorWidget extends FritterErrorWidget { + final Object? error; + final StackTrace? stackTrace; + final String prefix; + + const AlertErrorWidget({Key? key, required this.error, required this.stackTrace, required this.prefix}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return AlertDialog( + content: FullPageErrorWidget(error: error, prefix: prefix, stackTrace: stackTrace), + ); + } +} + +class ScaffoldErrorWidget extends FritterErrorWidget { + final Object? error; + final StackTrace? stackTrace; + final String prefix; + final Function? onRetry; + final String? retryText; + + const ScaffoldErrorWidget( + {Key? key, required this.error, required this.stackTrace, required this.prefix, this.onRetry, this.retryText}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: FullPageErrorWidget( + error: error, prefix: prefix, stackTrace: stackTrace, onRetry: onRetry, retryText: retryText), + ); + } +} + +class FullPageErrorWidget extends FritterErrorWidget { + final Object? error; + final StackTrace? stackTrace; + final String prefix; + final Function? onRetry; + final String? retryText; + + const FullPageErrorWidget( + {Key? key, required this.error, required this.stackTrace, required this.prefix, this.onRetry, this.retryText}) + : super(key: key); + + @override + Widget build(BuildContext context) { + var onRetry = this.onRetry; + + var error = this.error; + if (error is SocketException) { + return EmojiErrorWidget( + emoji: '🔌', + message: L10n.of(context).could_not_contact_twitter, + errorMessage: L10n.of(context).please_check_your_internet_connection_error_message(error.message), + onRetry: onRetry, + ); + } + + if (error is TwitterError) { + return createEmojiError(error); + } + + if (error is TimeoutException) { + return EmojiErrorWidget( + emoji: '⏱️', + message: L10n.of(context).timed_out, + errorMessage: L10n.of(context).this_took_too_long_to_load_please_check_your_network_connection, + onRetry: onRetry, + ); + } + + return Container( + alignment: Alignment.center, + margin: const EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + margin: const EdgeInsets.only(bottom: 16), + child: const Icon(Icons.error_outline, color: Colors.red, size: 36), + ), + Text( + L10n.of(context).oops_something_went_wrong, + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 18), + ), + Container( + margin: const EdgeInsets.only(top: 12), + child: Text(prefix, textAlign: TextAlign.center, style: TextStyle(color: Theme.of(context).hintColor)), + ), + Container( + alignment: Alignment.center, + margin: const EdgeInsets.only(top: 12), + child: Text('$error', textAlign: TextAlign.left, style: TextStyle(color: Theme.of(context).hintColor)), + ), + if (onRetry != null) + Container( + margin: const EdgeInsets.only(top: 12), + child: ElevatedButton( + child: Text(retryText ?? L10n.of(context).retry), + onPressed: () => onRetry(), + ), + ) + ], + ), + ); + } +} diff --git a/lib/ui/physics.dart b/lib/ui/physics.dart new file mode 100644 index 00000000..ea06b39b --- /dev/null +++ b/lib/ui/physics.dart @@ -0,0 +1,19 @@ +import 'package:flutter/material.dart'; + +/// The default PageView scroll physics are very sensitive, and easily swipe pages when you mean to scroll up and down +/// instead. This dampens the physics, by making the widget "heavy" (mass), so it's harder to swipe. +class LessSensitiveScrollPhysics extends ScrollPhysics { + const LessSensitiveScrollPhysics({ScrollPhysics? parent}) : super(parent: parent); + + @override + LessSensitiveScrollPhysics applyTo(ScrollPhysics? ancestor) { + return LessSensitiveScrollPhysics(parent: buildParent(ancestor)); + } + + @override + SpringDescription get spring => const SpringDescription( + mass: 50, + stiffness: 100, + damping: 1, + ); +} \ No newline at end of file diff --git a/lib/user.dart b/lib/user.dart new file mode 100644 index 00000000..cf97a3b7 --- /dev/null +++ b/lib/user.dart @@ -0,0 +1,243 @@ +import 'package:dart_twitter_api/src/utils/date_utils.dart'; +import 'package:dart_twitter_api/twitter_api.dart'; +import 'package:extended_image/extended_image.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_triple/flutter_triple.dart'; +import 'package:quacker/constants.dart'; +import 'package:quacker/database/entities.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/group/group_model.dart'; +import 'package:quacker/profile/profile.dart'; +import 'package:quacker/subscriptions/users_model.dart'; +import 'package:multi_select_flutter/multi_select_flutter.dart'; +import 'package:provider/provider.dart'; + +Widget _createUserAvatar(String? uri, double size) { + if (uri == null) { + return SizedBox(width: size, height: size); + } else { + return ExtendedImage.network( + // TODO: This can error if the profile image has changed... use SWR-like + uri.replaceAll('normal', '200x200'), + width: size, + height: size, + loadStateChanged: (state) { + switch (state.extendedImageLoadState) { + case LoadState.failed: + return const Icon(Icons.error_outline); + default: + return state.completedWidget; + } + }, + ); + } +} + +Widget _expandUserAvatar(String? uri, double size) { + if (uri == null) { + return SizedBox(width: size, height: size); + } else { + return ExtendedImage.network( + // TODO: This can error if the profile image has changed... use SWR-like + uri.replaceAll('normal', '400x400'), + width: size, + height: size, + loadStateChanged: (state) { + switch (state.extendedImageLoadState) { + case LoadState.failed: + return const Icon(Icons.error_outline); + default: + return state.completedWidget; + } + }, + ); + } +} + +class UserAvatar extends StatelessWidget { + final String? uri; + final double size; + + const UserAvatar({Key? key, required this.uri, this.size = 48}) : super(key: key); + + @override + Widget build(BuildContext context) { + return ClipRRect( + borderRadius: BorderRadius.circular(size), + child: _createUserAvatar(uri, size), + ); + } +} + +class UserTile extends StatelessWidget { + final Subscription user; + + const UserTile({Key? key, required this.user}) : super(key: key); + + @override + Widget build(BuildContext context) { + return ListTile( + dense: true, + leading: UserAvatar(uri: user.profileImageUrlHttps), + title: Row( + children: [ + Flexible(child: Text(user.name, maxLines: 1, overflow: TextOverflow.ellipsis)), + if (user.verified) const SizedBox(width: 6), + if (user.verified) const Icon(Icons.verified_outlined, size: 14, color: Colors.blue) + ], + ), + subtitle: Text('@${user.screenName}', maxLines: 1, overflow: TextOverflow.ellipsis), + trailing: SizedBox( + width: 36, + child: FollowButton(user: user), + ), + onTap: () { + Navigator.pushNamed(context, routeProfile, arguments: ProfileScreenArguments(user.id, user.screenName)); + }, + ); + } +} + +class FollowButtonSelectGroupDialog extends StatefulWidget { + final Subscription user; + final bool followed; + final List groupsForUser; + + const FollowButtonSelectGroupDialog( + {Key? key, required this.user, required this.followed, required this.groupsForUser}) + : super(key: key); + + @override + State createState() => _FollowButtonSelectGroupDialogState(); +} + +class _FollowButtonSelectGroupDialogState extends State { + @override + Widget build(BuildContext context) { + var groupModel = context.read(); + var subscriptionsModel = context.read(); + + var color = Theme.of(context).brightness == Brightness.dark ? Colors.white70 : Colors.black54; + + return MultiSelectDialog( + title: Text(L10n.of(context).select), + searchHint: L10n.of(context).search, + confirmText: Text(L10n.of(context).ok), + cancelText: Text(L10n.of(context).cancel), + searchIcon: Icon(Icons.search_rounded, color: color), + closeSearchIcon: Icon(Icons.close_rounded, color: color), + itemsTextStyle: Theme.of(context).textTheme.bodyLarge, + selectedColor: Theme.of(context).colorScheme.secondary, + unselectedColor: color, + selectedItemsTextStyle: Theme.of(context).textTheme.bodyLarge, + items: groupModel.state.map((e) => MultiSelectItem(e.id, e.name)).toList(), + initialValue: widget.groupsForUser, + onConfirm: (List memberships) async { + // If we're not currently following the user, follow them first + if (widget.followed == false) { + await subscriptionsModel.toggleSubscribe(widget.user, widget.followed); + } + + // Then add them to all the selected groups + await groupModel.saveUserGroupMembership(widget.user.id, memberships); + }, + ); + } +} + +class FollowButton extends StatelessWidget { + final Subscription user; + final Color? color; + + const FollowButton({Key? key, required this.user, this.color}) : super(key: key); + + @override + Widget build(BuildContext context) { + var model = context.read(); + + return ScopedBuilder>( + store: model, + onState: (_, state) { + var followed = state.any((element) => element.id == user.id); + + var icon = + followed ? Icon(Icons.person_remove_outlined, color: color) : Icon(Icons.person_add_outlined, color: color); + var text = followed ? L10n.of(context).unsubscribe : L10n.of(context).subscribe; + + return PopupMenuButton( + icon: icon, + itemBuilder: (context) => [ + PopupMenuItem(value: 'toggle_subscribe', child: Text(text)), + PopupMenuItem( + value: 'add_to_group', + child: Text(L10n.of(context).add_to_group), + ), + ], + onSelected: (value) async { + switch (value) { + case 'add_to_group': + var groups = await context.read().listGroupsForUser(user.id); + showDialog( + context: context, + builder: (_) => FollowButtonSelectGroupDialog( + user: user, + followed: followed, + groupsForUser: groups, + )); + break; + case 'toggle_subscribe': + await model.toggleSubscribe(user, followed); + break; + } + }, + ); + }, + ); + } +} + +class UserWithExtra extends User { + Map? card; + bool? possiblySensitive; + + UserWithExtra(); + + @override + Map toJson() { + var json = super.toJson(); + json['potentiallySensitive'] = possiblySensitive; + + return json; + } + + factory UserWithExtra.fromJson(Map json) { + var userWithExtra = UserWithExtra() + ..idStr = json['id_str'] as String? + ..name = json['name'] as String? + ..screenName = json['screen_name'] as String? + ..location = json['location'] as String? + ..derived = json['derived'] == null ? null : Derived.fromJson(json['derived'] as Map) + ..url = json['url'] as String? + ..entities = json['entities'] == null ? null : UserEntities.fromJson(json['entities'] as Map) + ..description = json['description'] as String? + ..protected = json['protected'] as bool? + ..verified = json['ext_is_blue_verified'] ?? json['verified'] as bool? + ..status = json['status'] == null ? null : Tweet.fromJson(json['status'] as Map) + ..followersCount = json['followers_count'] as int? + ..friendsCount = json['friends_count'] as int? + ..listedCount = json['listed_count'] as int? + ..favoritesCount = json['favorites_count'] as int? + ..statusesCount = json['statuses_count'] as int? + ..createdAt = convertTwitterDateTime(json['created_at'] as String?) + ..profileBannerUrl = json['profile_banner_url'] as String? + ..profileImageUrlHttps = json['profile_image_url_https'] as String? + ..defaultProfile = json['default_profile'] as bool? + ..defaultProfileImage = json['default_profile_image'] as bool? + ..withheldInCountries = (json['withheld_in_countries'] as List?)?.map((e) => e as String).toList() + ..withheldScope = json['withheld_scope'] as String?; + + userWithExtra.possiblySensitive = json['possibly_sensitive'] as bool?; + + return userWithExtra; + } +} diff --git a/lib/utils/cache.dart b/lib/utils/cache.dart new file mode 100644 index 00000000..d4a37a28 --- /dev/null +++ b/lib/utils/cache.dart @@ -0,0 +1,23 @@ +import 'package:ffcache/ffcache.dart'; +import 'package:logging/logging.dart'; + +extension CacheHelper on FFCache { + static final log = Logger('CacheHelper'); + + Future getOrCreateAsJSON(String key, Duration expiry, Future Function() create) async { + var exists = await has(key); + if (exists) { + log.info('Loading $key from the cache'); + + return await getJSON(key); + } + + log.info('Loading $key from the source'); + + var result = await create(); + + await setJSONWithTimeout(key, result, expiry); + + return result; + } +} diff --git a/lib/utils/debounce.dart b/lib/utils/debounce.dart new file mode 100644 index 00000000..2e959efd --- /dev/null +++ b/lib/utils/debounce.dart @@ -0,0 +1,30 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +// Based on easy_debounce by magnuswikihog, released under the MIT License: https://github.com/magnuswikhog/easy_debounce +typedef DebounceCallback = VoidCallback; + +class _DebounceTask { + Timer timer; + DebounceCallback callback; + + _DebounceTask(this.callback, this.timer); +} + +class Debouncer { + static final Map _tasks = {}; + + static void debounce(String id, Duration duration, DebounceCallback callback) { + _tasks[id]?.timer.cancel(); + + _tasks[id] = _DebounceTask( + callback, + Timer(duration, () { + _tasks[id]?.timer.cancel(); + _tasks.remove(id); + + callback(); + })); + } +} diff --git a/lib/utils/downloads.dart b/lib/utils/downloads.dart new file mode 100644 index 00000000..37b845cc --- /dev/null +++ b/lib/utils/downloads.dart @@ -0,0 +1,94 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_file_dialog/flutter_file_dialog.dart'; + +import 'package:quacker/constants.dart'; +import 'package:quacker/generated/l10n.dart'; +import 'package:quacker/ui/errors.dart'; +import 'package:http/http.dart' as http; +import 'package:path/path.dart' as p; +import 'package:permission_handler/permission_handler.dart'; +import 'package:pref/pref.dart'; + +Future downloadUriToPickedFile(BuildContext context, Uri uri, String fileName, + {required Function() onStart, required Function() onSuccess}) async { + var sanitizedFilename = fileName.split("?")[0]; + + try { + onStart(); + var responseTask = downloadFile(context, uri); + + var storagePermission = await Permission.storage.request(); + + var response = await responseTask; + if (response == null) { + return; + } + + final downloadType = PrefService.of(context).get(optionDownloadType); + final downloadPath = PrefService.of(context).get(optionDownloadPath); + + // If the user wants to pick a file every time a download happens + if (downloadType == optionDownloadTypeAsk || downloadPath == '') { + var fileInfo = + await FlutterFileDialog.saveFile(params: SaveFileDialogParams(fileName: sanitizedFilename, data: response)); + if (fileInfo == null) { + return; + } + + onSuccess(); + return; + } + + // Otherwise, check we have the storage permission + if (!storagePermission.isGranted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(L10n.current.permission_not_granted), + action: SnackBarAction( + label: L10n.current.open_app_settings, + onPressed: openAppSettings, + ), + ), + ); + + await openAppSettings(); + return; + } + + // Finally, save to the user-defined directory + var savedFile = p.join(downloadPath, sanitizedFilename); + await File(savedFile).writeAsBytes(response); + onSuccess(); + } catch (e) { + showSnackBar(context, icon: '🙊', message: e.toString()); + } +} + +class UnableToSaveMedia { + final Uri uri; + final Object e; + + UnableToSaveMedia(this.uri, this.e); + + @override + String toString() { + return 'Unable to save the media {uri: $uri, e: $e}'; + } +} + +Future downloadFile(BuildContext context, Uri uri) async { + var response = await http.get(uri); + if (response.statusCode == 200) { + return response.bodyBytes; + } + + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text( + L10n.of(context).unable_to_save_the_media_twitter_returned_a_status_of_response_statusCode(response.statusCode), + ), + )); + + return null; +} diff --git a/lib/utils/iterables.dart b/lib/utils/iterables.dart new file mode 100644 index 00000000..b5b3ba91 --- /dev/null +++ b/lib/utils/iterables.dart @@ -0,0 +1,38 @@ +extension Iterables on Iterable { + E? get firstOrNull { + if (isEmpty) { + return null; + } + + return first; + } + + E? firstWhereOrNull(bool Function(E element) test) { + for (var element in this) { + if (test(element)) { + return element; + } + } + return null; + } + + Map> groupBy(K Function(E) keyFunction) => fold(>{}, + (Map> map, E element) => map..putIfAbsent(keyFunction(element), () => []).add(element)); + + Iterable getRange(int start, [int? end]) { + return (end != null ? take(end) : this).skip(start); + } + + Iterable sorted(int Function(E a, E b) compare) => [...this]..sort(compare); +} + +extension MapWithIndex on List { + List mapWithIndex(R Function(T, int i) callback) { + List result = []; + for (int i = 0; i < length; i++) { + R item = callback(this[i], i); + result.add(item); + } + return result; + } +} \ No newline at end of file diff --git a/lib/utils/misc.dart b/lib/utils/misc.dart new file mode 100644 index 00000000..dc83fdee --- /dev/null +++ b/lib/utils/misc.dart @@ -0,0 +1,27 @@ +import 'dart:io'; + +bool findInJSONArray(List arr, String key, String value) { + for (var item in arr) { + if (item[key] == value) { + return true; + } + } + return false; +} + +bool isTranslatable(String? lang, String? text) { + if (lang == null || lang == 'und') { + return false; + } + + if (lang != getShortSystemLocale()) { + return true; + } + + return false; +} + +String getShortSystemLocale() { + // TODO: Cache + return Platform.localeName.split("_")[0]; +} diff --git a/lib/utils/notifiers.dart b/lib/utils/notifiers.dart new file mode 100644 index 00000000..06d5d22b --- /dev/null +++ b/lib/utils/notifiers.dart @@ -0,0 +1,11 @@ +import 'package:flutter/material.dart'; + +class CombinedChangeNotifier extends ChangeNotifier { + final ChangeNotifier one; + final ChangeNotifier two; + + CombinedChangeNotifier(this.one, this.two) { + one.addListener(() => notifyListeners()); + two.addListener(() => notifyListeners()); + } +} diff --git a/lib/utils/translation.dart b/lib/utils/translation.dart new file mode 100644 index 00000000..d465246a --- /dev/null +++ b/lib/utils/translation.dart @@ -0,0 +1,126 @@ +import 'dart:convert'; + +import 'package:flutter_cache/flutter_cache.dart' as cache; +import 'package:quacker/utils/iterables.dart'; +import 'package:quacker/utils/misc.dart'; +import 'package:http/http.dart' as http; +import 'package:logging/logging.dart'; + +Future isLanguageSupportedForTranslation(String lang) async { + // TODO: Cache this response, per host, for x amount of time + var res = await TranslationAPI.getSupportedLanguages(); + if (res.success) { + return findInJSONArray(res.body, 'code', getShortSystemLocale()); + } + + throw res; +} + +class TranslationAPIResult { + final bool success; + final dynamic body; + final String? errorMessage; + + TranslationAPIResult({required this.success, required this.body, this.errorMessage}); +} + +// TODO +class TranslationAPI { + static final log = Logger('TranslationAPI'); + + static Future getSupportedLanguages() async { + var key = 'translation.supported_languages'; + + return cacheRequest(key, () async { + var response = await http.get(Uri.https('libretranslate.de', '/languages')); + return await parseResponse(response, 'Unable to get supported languages'); + }); + } + + static Future translate(String id, List text, String sourceLanguage) async { + var hasTextOrNot = text.map((e) => e.isNotEmpty ? true : false).toList(); + + var formData = { + // We need to strip out any empty parts, as the API barfs on them sometimes + 'q': text.where((e) => e.isNotEmpty).toList(), + 'source': sourceLanguage, + 'target': getShortSystemLocale(), + 'format': 'text' + }; + + var key = 'translation.$sourceLanguage.$id'; + + var res = await cacheRequest(key, () async { + var response = await http.post(Uri.https('libretranslate.de', '/translate'), + body: jsonEncode(formData), headers: {'Content-Type': 'application/json'}); + + return await parseResponse(response, 'Unable to send translation request'); + }); + + if (res.success) { + // We need to rehydrate the empty text parts that we stripped out earlier + var translatedTexts = List.from(res.body['translatedText']); + + var translatedIndex = 0; + var result = + hasTextOrNot.mapWithIndex((hasText, i) => hasText ? translatedTexts[translatedIndex++] : text[i]).toList(); + + return TranslationAPIResult(success: res.success, body: {'translatedText': result}); + } + + return res; + } + + static Future cacheRequest( + String key, Future Function() makeRequest) async { + var result = await cache.load(key); + if (result != null && result == true) { + return TranslationAPIResult(success: true, body: jsonDecode(result)); + } + + // Otherwise, make the request + var response = await makeRequest(); + if (response.success) { + // Cache the response if it's a successful one + await cache.write(key, jsonEncode(response.body)); + + return TranslationAPIResult(success: true, body: response.body); + } + + // Otherwise, we always want to return the error without caching + return response; + } + + static Future parseResponse(http.Response response, String errorUnableTo) async { + var body = jsonDecode(response.body); + if (response.statusCode == 200) { + return TranslationAPIResult(success: true, body: body); + } + + String message = ''; + + switch (response.statusCode) { + case 400: + RegExp languageNotSupported = RegExp(r"^\w+\ is\ not\ supported$"); + + var error = body['error']; + if (languageNotSupported.hasMatch(error)) { + message = 'Language $error'; + } else { + message = error; + } + break; + case 403: + message = 'Error: Banned from translation API'; + break; + case 429: + message = 'Error: Sending too many frequent translation requests'; + break; + case 500: + message = 'Error: The translation API failed to translate the tweet'; + break; + } + + return TranslationAPIResult(success: false, body: body, errorMessage: message); + } +} diff --git a/lib/utils/urls.dart b/lib/utils/urls.dart new file mode 100644 index 00000000..74a029c4 --- /dev/null +++ b/lib/utils/urls.dart @@ -0,0 +1,5 @@ +import 'package:url_launcher/url_launcher_string.dart'; + +Future openUri(String uri) async { + await launchUrlString(uri, mode: LaunchMode.externalApplication); +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 00000000..36595ffd --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,1399 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + url: "https://pub.dev" + source: hosted + version: "61.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + url: "https://pub.dev" + source: hosted + version: "5.13.0" + archive: + dependency: transitive + description: + name: archive + sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" + url: "https://pub.dev" + source: hosted + version: "3.3.7" + args: + dependency: transitive + description: + name: args + sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a + url: "https://pub.dev" + source: hosted + version: "2.4.1" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + async_button_builder: + dependency: "direct main" + description: + name: async_button_builder + sha256: "51221ec05e48b14c2c346071e2fb968207f6120cc9fe5d727b251987bbafe869" + url: "https://pub.dev" + source: hosted + version: "3.0.0+1" + auto_direction: + dependency: "direct main" + description: + name: auto_direction + sha256: "5486041d6fae1cd9ca431217a3fa4699f9237a4218d295b421d384d9710f2ad4" + url: "https://pub.dev" + source: hosted + version: "0.0.6" + barcode_scan2: + dependency: "direct main" + description: + name: barcode_scan2 + sha256: "0b0625d27841a21e36e896195d86b2aada335e3c486f63647cce701495718e16" + url: "https://pub.dev" + source: hosted + version: "4.2.4" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + chewie: + dependency: "direct main" + description: + name: chewie + sha256: "745e81e84c6d7f3835f89f85bb49771c0a66099e4caf8f8e9e9a372bc66fb2c1" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 + url: "https://pub.dev" + source: hosted + version: "0.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" + source: hosted + version: "1.17.1" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" + url: "https://pub.dev" + source: hosted + version: "0.3.3+4" + crypto: + dependency: "direct main" + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + csslib: + dependency: transitive + description: + name: csslib + sha256: "831883fb353c8bdc1d71979e5b342c7d88acfbc643113c14ae51e2442ea0f20f" + url: "https://pub.dev" + source: hosted + version: "0.17.3" + cupertino_icons: + dependency: transitive + description: + name: cupertino_icons + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" + source: hosted + version: "1.0.5" + dart_pubspec_licenses: + dependency: transitive + description: + name: dart_pubspec_licenses + sha256: "38680e2d2fc41df3a0d435d0955b91acc382aeefcb89ef4738f8167c8288a29d" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad + url: "https://pub.dev" + source: hosted + version: "2.3.1" + dart_twitter_api: + dependency: "direct main" + description: + name: dart_twitter_api + sha256: "5c021a1e3aa386db711340bb4b233a676f05f29be3ba353fef74d9f31d30f628" + url: "https://pub.dev" + source: hosted + version: "0.5.8" + dbus: + dependency: transitive + description: + name: dbus + sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" + url: "https://pub.dev" + source: hosted + version: "0.7.8" + device_frame: + dependency: transitive + description: + name: device_frame + sha256: afe76182aec178d171953d9b4a50a43c57c7cf3c77d8b09a48bf30c8fa04dd9d + url: "https://pub.dev" + source: hosted + version: "1.1.0" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + sha256: "2c35b6d1682b028e42d07b3aee4b98fa62996c10bc12cb651ec856a80d6a761b" + url: "https://pub.dev" + source: hosted + version: "9.0.2" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 + url: "https://pub.dev" + source: hosted + version: "7.0.0" + device_preview: + dependency: "direct main" + description: + name: device_preview + sha256: "2f097bf31b929e15e6756dbe0ec1bcb63952ab9ed51c25dc5a2c722d2b21fdaf" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + dotted_border: + dependency: "direct main" + description: + name: dotted_border + sha256: "07a5c5e8d4e6e992279e190e0352be8faa5b8f96d81c77a78b2d42f060279840" + url: "https://pub.dev" + source: hosted + version: "2.0.0+3" + extended_image: + dependency: "direct main" + description: + name: extended_image + sha256: e77d18f956649ba6e5ecebd0cb68542120886336a75ee673788145bd4c3f0767 + url: "https://pub.dev" + source: hosted + version: "8.0.2" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + sha256: f2eba5c8500c5a7ce1f0db703b787756cb3bc65cd3818636d5fe9a9ace011ee3 + url: "https://pub.dev" + source: hosted + version: "3.5.1" + extended_nested_scroll_view: + dependency: "direct main" + description: + name: extended_nested_scroll_view + sha256: adb98e3a92c16245789699f9ddd3cbaa47f14f744b5bbd8d7fef54b7e86089a2 + url: "https://pub.dev" + source: hosted + version: "6.1.0" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + faker: + dependency: "direct main" + description: + name: faker + sha256: "746e59f91d8b06a389e74cf76e909a05ed69c12691768e2f93557fdf29200fd0" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + ffcache: + dependency: "direct main" + description: + name: ffcache + sha256: a4e018bfdceb5e5dff274346c2f62a774c41cab923596eee00b571b3f4aff11c + url: "https://pub.dev" + source: hosted + version: "1.1.0" + ffi: + dependency: transitive + description: + name: ffi + sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + url: "https://pub.dev" + source: hosted + version: "2.0.2" + file: + dependency: "direct overridden" + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + file_picker: + dependency: "direct main" + description: + name: file_picker + sha256: b1729fc96627dd44012d0a901558177418818d6bd428df59dcfeb594e5f66432 + url: "https://pub.dev" + source: hosted + version: "5.3.2" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + flex_color_scheme: + dependency: "direct main" + description: + name: flex_color_scheme + sha256: "5be124fa61821a684c0628ca5f687a8512db06738f784516278688eb727a3ef1" + url: "https://pub.dev" + source: hosted + version: "7.1.2" + flex_seed_scheme: + dependency: transitive + description: + name: flex_seed_scheme + sha256: e4168a6fc88a3e5bc3d6b7a748c6a6083eedc193d343ddc26bbad7fb1b258555 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_cache: + dependency: "direct main" + description: + name: flutter_cache + sha256: c13d1d9037fcd14793cf7570573529358f5532fd03ba3c430a8d0ccd10a847d9 + url: "https://pub.dev" + source: hosted + version: "0.1.0" + flutter_colorpicker: + dependency: "direct main" + description: + name: flutter_colorpicker + sha256: "458a6ed8ea480eb16ff892aedb4b7092b2804affd7e046591fb03127e8d8ef8b" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + flutter_file_dialog: + dependency: "direct main" + description: + name: flutter_file_dialog + sha256: "5a1507833473b38839056d63c5125750a6d12e904f78131324fa4632504de513" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + flutter_iconpicker_plus: + dependency: "direct main" + description: + name: flutter_iconpicker_plus + sha256: "29f22d4efbb2e29e7a15b3e159857791b6b75600d80c43bcc780c81c8c776c98" + url: "https://pub.dev" + source: hosted + version: "3.2.3" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + url: "https://pub.dev" + source: hosted + version: "2.0.1" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + sha256: "812791d43ccfc1b443a0d39fa02a206fc228c597e28ff9337e09e3ca8d370391" + url: "https://pub.dev" + source: hosted + version: "14.1.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" + url: "https://pub.dev" + source: hosted + version: "4.0.0+1" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef" + url: "https://pub.dev" + source: hosted + version: "7.0.0+1" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_localized_locales: + dependency: "direct main" + description: + name: flutter_localized_locales + sha256: f219350dffcfd56692b4e41953710c2975888dd9c507d977ec6853d7ea140336 + url: "https://pub.dev" + source: hosted + version: "2.0.4" + flutter_oss_licenses: + dependency: "direct dev" + description: + name: flutter_oss_licenses + sha256: eb15e1146b101dca063a177f6d339dfb85b639a9e2d2b71c18188d5fb2144869 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" + url: "https://pub.dev" + source: hosted + version: "2.0.15" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_triple: + dependency: "direct main" + description: + name: flutter_triple + sha256: "044d9951abd2c8da1d915437167832319ca6aaf8dac13b5a7fc3761c88dc29a6" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_windowmanager: + dependency: "direct main" + description: + name: flutter_windowmanager + sha256: b4d0bc06f6777952b729c0cdb7ce9ad1ecabd8b8b1cb0acb57a36621457dab1b + url: "https://pub.dev" + source: hosted + version: "0.2.0" + font_awesome_flutter: + dependency: transitive + description: + name: font_awesome_flutter + sha256: "959ef4add147753f990b4a7c6cccb746d5792dbdc81b1cde99e62e7edb31b206" + url: "https://pub.dev" + source: hosted + version: "10.4.0" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 + url: "https://pub.dev" + source: hosted + version: "2.2.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + html: + dependency: transitive + description: + name: html + sha256: "58e3491f7bf0b6a4ea5110c0c688877460d1a6366731155c4a4580e7ded773e8" + url: "https://pub.dev" + source: hosted + version: "0.15.3" + html_unescape: + dependency: "direct main" + description: + name: html_unescape + sha256: "15362d7a18f19d7b742ef8dcb811f5fd2a2df98db9f80ea393c075189e0b61e3" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + http: + dependency: "direct main" + description: + name: http + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + url: "https://pub.dev" + source: hosted + version: "0.13.6" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + sha256: "14c6e756644339f561321dab021215475ba4779aa962466f59ccb3ecf66b36c3" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + idb_shim: + dependency: transitive + description: + name: idb_shim + sha256: e22cbec15c3732ce53ad79927f106e7be7d4a66f836eb6270b51450c15bd7b84 + url: "https://pub.dev" + source: hosted + version: "2.3.1" + image: + dependency: transitive + description: + name: image + sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf + url: "https://pub.dev" + source: hosted + version: "4.0.17" + infinite_scroll_pagination: + dependency: "direct main" + description: + name: infinite_scroll_pagination + sha256: "9517328f4e373f08f57dbb11c5aac5b05554142024d6b60c903f3b73476d52db" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + intl: + dependency: "direct main" + description: + name: intl + sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + url: "https://pub.dev" + source: hosted + version: "0.17.0" + intl_utils: + dependency: "direct dev" + description: + name: intl_utils + sha256: db392393fbf891e3eb32f6beb1928b00cdb33e3c54597fd5f5dc5c43e5ba601c + url: "https://pub.dev" + source: hosted + version: "2.8.2" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" + source: hosted + version: "4.8.1" + lints: + dependency: transitive + description: + name: lints + sha256: "6b0206b0bf4f04961fc5438198ccb3a885685cd67d4d4a32cc20ad7f8adbe015" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + logging: + dependency: "direct main" + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" + source: hosted + version: "0.12.15" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" + source: hosted + version: "0.2.0" + measure_size: + dependency: "direct main" + description: + name: measure_size + sha256: "5faef74474db7bbcd8c6f301d8a09abc69b8e999b85167825e532f1a55c38ae6" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + meta: + dependency: transitive + description: + name: meta + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + mime: + dependency: transitive + description: + name: mime + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" + source: hosted + version: "1.0.4" + multi_select_flutter: + dependency: "direct main" + description: + name: multi_select_flutter + sha256: "503857b415d390d29159df8a9d92d83c6aac17aaf1c307fb7bcfc77d097d20ed" + url: "https://pub.dev" + source: hosted + version: "4.1.3" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + oauth1: + dependency: transitive + description: + name: oauth1 + sha256: bc23d3d5d36ba1cb39ba0f9ad18d29ab08a7c4e06f1d0fa7b2fb9b0225622873 + url: "https://pub.dev" + source: hosted + version: "2.0.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + sha256: ceb027f6bc6a60674a233b4a90a7658af1aebdea833da0b5b53c1e9821a78c7b + url: "https://pub.dev" + source: hosted + version: "4.0.2" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + path: + dependency: "direct main" + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + path_drawing: + dependency: transitive + description: + name: path_drawing + sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977 + url: "https://pub.dev" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" + source: hosted + version: "1.0.1" + path_provider: + dependency: "direct main" + description: + name: path_provider + sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" + url: "https://pub.dev" + source: hosted + version: "2.0.15" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + url: "https://pub.dev" + source: hosted + version: "2.0.27" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3" + url: "https://pub.dev" + source: hosted + version: "2.2.3" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 + url: "https://pub.dev" + source: hosted + version: "2.1.11" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.dev" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 + url: "https://pub.dev" + source: hosted + version: "2.1.6" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: "33c6a1253d1f95fd06fa74b65b7ba907ae9811f9d5c1d3150e51417d04b8d6a8" + url: "https://pub.dev" + source: hosted + version: "10.2.0" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: d8cc6a62ded6d0f49c6eac337e080b066ee3bce4d405bd9439a61e1f1927bfe8 + url: "https://pub.dev" + source: hosted + version: "10.2.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: ee96ac32f5a8e6f80756e25b25b9f8e535816c8e6665a96b6d70681f8c4f7e85 + url: "https://pub.dev" + source: hosted + version: "9.0.8" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: "68abbc472002b5e6dfce47fe9898c6b7d8328d58b5d2524f75e277c07a97eb84" + url: "https://pub.dev" + source: hosted + version: "3.9.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: f67cab14b4328574938ecea2db3475dad7af7ead6afab6338772c5f88963e38b + url: "https://pub.dev" + source: hosted + version: "0.1.2" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" + source: hosted + version: "5.4.0" + platform: + dependency: transitive + description: + name: platform + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" + source: hosted + version: "3.7.3" + pref: + dependency: "direct main" + description: + name: pref + sha256: "0d20346ebb662ac3b1bc26c5e75adf02e2646d93ac0b4e41d0cdd173d7ba298d" + url: "https://pub.dev" + source: hosted + version: "2.7.1" + process: + dependency: transitive + description: + name: process + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" + source: hosted + version: "4.2.4" + protobuf: + dependency: transitive + description: + name: protobuf + sha256: "01dd9bd0fa02548bf2ceee13545d4a0ec6046459d847b6b061d8a27237108a08" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + provider: + dependency: "direct main" + description: + name: provider + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.dev" + source: hosted + version: "6.0.5" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + qr: + dependency: transitive + description: + name: qr + sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + qr_flutter: + dependency: "direct main" + description: + name: qr_flutter + sha256: "5095f0fc6e3f71d08adef8feccc8cea4f12eec18a2e31c2e8d82cb6019f4b097" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + quiver: + dependency: "direct main" + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" + rx_notifier: + dependency: transitive + description: + name: rx_notifier + sha256: "3b474464a5f0aa8f6e4a4791cbd970c159cc2c5d5d1eb54ba1f053cab2dc2d6a" + url: "https://pub.dev" + source: hosted + version: "2.2.3" + rx_notifier_annotation: + dependency: transitive + description: + name: rx_notifier_annotation + sha256: "362496563d617aa6fa21ab9c131f66348f3266b6580d69ecc23d2c23a52070a2" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + scroll_bars_common: + dependency: transitive + description: + name: scroll_bars_common + sha256: "9a46b430ca602b4fb6c15c6f021d85fd00e561b0b698f11cb13c9e032ee9d93e" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + scroll_bottom_navigation_bar: + dependency: "direct main" + description: + name: scroll_bottom_navigation_bar + sha256: "916c3889c349044a03339020dcaf7ca6d9c14662e84f030f4c57b37df498aca9" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + scroll_to_index: + dependency: "direct main" + description: + name: scroll_to_index + sha256: b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176 + url: "https://pub.dev" + source: hosted + version: "3.0.1" + sembast: + dependency: transitive + description: + name: sembast + sha256: "74f6c57e2d230c55287372830239701286628b81ceb06a5507d7686a6d7d4b44" + url: "https://pub.dev" + source: hosted + version: "3.4.5" + share_plus: + dependency: "direct main" + description: + name: share_plus + sha256: ed3fcea4f789ed95913328e629c0c53e69e80e08b6c24542f1b3576046c614e8 + url: "https://pub.dev" + source: hosted + version: "7.0.2" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + shared_preferences: + dependency: transitive + description: + name: shared_preferences + sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "6478c6bbbecfe9aced34c483171e90d7c078f5883558b30ec3163cf18402c749" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: e014107bb79d6d3297196f4f2d0db54b5d1f85b8ea8ff63b8e8b391a02700feb + url: "https://pub.dev" + source: hosted + version: "2.2.2" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d + url: "https://pub.dev" + source: hosted + version: "2.2.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + sliver_tools: + dependency: transitive + description: + name: sliver_tools + sha256: ccdc502098a8bfa07b3ec582c282620031481300035584e1bb3aca296a505e8c + url: "https://pub.dev" + source: hosted + version: "0.2.10" + source_span: + dependency: transitive + description: + name: source_span + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" + source: hosted + version: "1.9.1" + sqflite: + dependency: "direct main" + description: + name: sqflite + sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9 + url: "https://pub.dev" + source: hosted + version: "2.2.8+4" + sqflite_common: + dependency: "direct main" + description: + name: sqflite_common + sha256: e77abf6ff961d69dfef41daccbb66b51e9983cdd5cb35bf30733598057401555 + url: "https://pub.dev" + source: hosted + version: "2.4.5" + sqflite_common_ffi: + dependency: "direct dev" + description: + name: sqflite_common_ffi + sha256: f86de82d37403af491b21920a696b19f01465b596f545d1acd4d29a0a72418ad + url: "https://pub.dev" + source: hosted + version: "2.2.5" + sqflite_migration_plan: + dependency: "direct main" + description: + name: sqflite_migration_plan + sha256: dcb3ad46ff92a312171acab796a8dc88fc0f2686a2281a3b3275a5e6bc4434dc + url: "https://pub.dev" + source: hosted + version: "1.0.0" + sqlite3: + dependency: transitive + description: + name: sqlite3 + sha256: "2cef47b59d310e56f8275b13734ee80a9cf4a48a43172020cb55a620121fbf66" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" + source: hosted + version: "1.11.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" + source: hosted + version: "0.5.1" + timeago: + dependency: "direct main" + description: + name: timeago + sha256: a415b9a05ef64b845c859a91161fc9f689f88eaaa4c04759517d201891b99e90 + url: "https://pub.dev" + source: hosted + version: "3.4.0" + timezone: + dependency: transitive + description: + name: timezone + sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" + url: "https://pub.dev" + source: hosted + version: "0.9.2" + triple: + dependency: transitive + description: + name: triple + sha256: "210eb1298db3d09465c6ea128413ffcb4859cb1140009f895d69efe439f9367c" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + uni_links2: + dependency: "direct main" + description: + name: uni_links2 + sha256: e39fc8d1760750cd99a87dc8e870247b136132803e2e0bac53db6890292755c7 + url: "https://pub.dev" + source: hosted + version: "0.6.0+2" + uni_links2_platform_interface: + dependency: transitive + description: + name: uni_links2_platform_interface + sha256: "3d8db90639b7fb07c0e11b44bdc29c77deec9d9f22a389144fa95f67bd273975" + url: "https://pub.dev" + source: hosted + version: "1.0.0+2" + uni_links_web2: + dependency: transitive + description: + name: uni_links_web2 + sha256: "7cdeddbca7b004f84f1f01e8e3f6225c49717b18f7be58c079e479ae6e654067" + url: "https://pub.dev" + source: hosted + version: "0.1.0+2" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + url: "https://pub.dev" + source: hosted + version: "6.1.11" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: eed4e6a1164aa9794409325c3b707ff424d4d1c2a785e7db67f8bbda00e36e51 + url: "https://pub.dev" + source: hosted + version: "6.0.35" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "6bb1e5d7fe53daf02a8fee85352432a40b1f868a81880e99ec7440113d5cfcab" + url: "https://pub.dev" + source: hosted + version: "2.0.17" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + uuid: + dependency: "direct main" + description: + name: uuid + sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + url: "https://pub.dev" + source: hosted + version: "3.0.7" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + video_player: + dependency: "direct main" + description: + name: video_player + sha256: de95f0e9405f29b5582573d4166132e71f83b3158aac14e8ee5767a54f4f1fbd + url: "https://pub.dev" + source: hosted + version: "2.6.1" + video_player_android: + dependency: transitive + description: + name: video_player_android + sha256: ae1c7d9a71c236a1bf9e567bd7ed4c90887e389a5f233b2192593f7f7395005c + url: "https://pub.dev" + source: hosted + version: "2.4.8" + video_player_avfoundation: + dependency: transitive + description: + name: video_player_avfoundation + sha256: "4c274e439f349a0ee5cb3c42978393ede173a443b98f50de6ffe6900eaa19216" + url: "https://pub.dev" + source: hosted + version: "2.4.6" + video_player_platform_interface: + dependency: transitive + description: + name: video_player_platform_interface + sha256: a8c4dcae2a7a6e7cc1d7f9808294d968eca1993af34a98e95b9bdfa959bec684 + url: "https://pub.dev" + source: hosted + version: "6.1.0" + video_player_web: + dependency: transitive + description: + name: video_player_web + sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c" + url: "https://pub.dev" + source: hosted + version: "2.0.16" + visibility_detector: + dependency: "direct main" + description: + name: visibility_detector + sha256: "15c54a459ec2c17b4705450483f3d5a2858e733aee893dcee9d75fd04814940d" + url: "https://pub.dev" + source: hosted + version: "0.3.3" + wakelock: + dependency: "direct main" + description: + name: wakelock + sha256: "769ecf42eb2d07128407b50cb93d7c10bd2ee48f0276ef0119db1d25cc2f87db" + url: "https://pub.dev" + source: hosted + version: "0.6.2" + wakelock_macos: + dependency: transitive + description: + name: wakelock_macos + sha256: "047c6be2f88cb6b76d02553bca5a3a3b95323b15d30867eca53a19a0a319d4cd" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + wakelock_platform_interface: + dependency: transitive + description: + name: wakelock_platform_interface + sha256: "1f4aeb81fb592b863da83d2d0f7b8196067451e4df91046c26b54a403f9de621" + url: "https://pub.dev" + source: hosted + version: "0.3.0" + wakelock_web: + dependency: transitive + description: + name: wakelock_web + sha256: "1b256b811ee3f0834888efddfe03da8d18d0819317f20f6193e2922b41a501b5" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + wakelock_windows: + dependency: transitive + description: + name: wakelock_windows + sha256: "857f77b3fe6ae82dd045455baa626bc4b93cb9bb6c86bf3f27c182167c3a5567" + url: "https://pub.dev" + source: hosted + version: "0.2.1" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + win32: + dependency: "direct overridden" + description: + name: win32 + sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4 + url: "https://pub.dev" + source: hosted + version: "3.1.4" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9 + url: "https://pub.dev" + source: hosted + version: "1.1.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + xml: + dependency: transitive + description: + name: xml + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + url: "https://pub.dev" + source: hosted + version: "6.3.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.10.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 00000000..a0a64048 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,140 @@ +name: quacker +description: A better way to browse Twitter + +# The following line prevents the package from being accidentally published to +# pub.dev using `pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html + +version: 2.2.2+7 + +environment: + sdk: ">=2.18.0 <3.0.0" + +dependency_overrides: + win32: ^3.0.0 + intl: ^0.17.0 + # Required until device_info_plus updates, as it transitively depends on an old version + file: ^6.1.4 + +dependencies: + flutter: + sdk: flutter + + async_button_builder: ^3.0.0+1 + auto_direction: ^0.0.6 + chewie: ^1.3.6 + crypto: ^3.0.3 + dart_twitter_api: ^0.5.7+1 + device_info_plus: ^9.0.2 + device_preview: ^1.1.0 + dotted_border: ^2.0.0+3 + extended_image: ^8.0.2 + extended_nested_scroll_view: ^6.0.0 + faker: ^2.1.0 + ffcache: ^1.1.0 + flex_color_scheme: ^7.1.2 + flutter_cache: ^0.1.0 + file_picker: ^5.2.3 + flutter_colorpicker: ^1.0.3 + flutter_file_dialog: ^3.0.1 + flutter_iconpicker_plus: ^3.2.3 + flutter_localized_locales: ^2.0.3 + flutter_triple: ^2.0.1 + flutter_windowmanager: ^0.2.0 + html_unescape: ^2.0.0 + http: ^0.13.5 + infinite_scroll_pagination: ^3.2.0 + intl: ^0.17.0 + logging: ^1.1.0 + measure_size: ^4.0.0 + multi_select_flutter: ^4.1.3 + package_info_plus: ^4.0.2 + qr_flutter: ^4.1.0 + barcode_scan2: ^4.2.4 + path: ^1.8.2 + path_provider: ^2.0.11 + permission_handler: ^10.2.0 + pref: ^2.7.0 + provider: ^6.0.4 + quiver: ^3.1.0 + scroll_bottom_navigation_bar: ^4.0.0 + scroll_to_index: ^3.0.1 + share_plus: ^7.0.2 + sqflite: ^2.2.2 + sqflite_common: ^2.4.0+2 + sqflite_migration_plan: ^1.0.0 + timeago: ^3.3.0 + uni_links2: ^0.6.0+2 + url_launcher: ^6.1.7 + uuid: ^3.0.7 + video_player: ^2.4.9 + visibility_detector: ^0.3.3 + wakelock: ^0.6.2 + + flutter_localizations: + sdk: flutter + flutter_local_notifications: ^14.1.1 + +dev_dependencies: + flutter_test: + sdk: flutter + + flutter_launcher_icons: ^0.13.1 + flutter_lints: + flutter_oss_licenses: ^2.0.1 + intl_utils: ^2.8.1 + sqflite_common_ffi: ^2.2.0+1 + +flutter_MaterialSymbols: + android: "launcher_icon" + ios: true + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec +# The following section is specific to Flutter. +flutter: + + # The following line ensures that the Material MaterialSymbols font is + # included with your application, so that you can use the MaterialSymbols in + # the material MaterialSymbols class. + uses-material-design: true + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages + generate: true + +flutter_intl: + enabled: true + class_name: L10n diff --git a/release.sh b/release.sh new file mode 100755 index 00000000..cab66763 --- /dev/null +++ b/release.sh @@ -0,0 +1,145 @@ +#!/usr/bin/env sh + +set -e + +if [ -z "$1" ]; then + echo "No version name was supplied" + exit 1 +fi + +if git diff --quiet; then + echo "No unstashed changes, so continuing" +else + echo "You have unstashed or uncommitted changes. Please commit changes before running this!" + exit 1 +fi + +VERSION_BASE=300000000 + +VERSION_NUMBER="" + +generate_version_number() { + commit_number=$(git rev-list HEAD --count) + + VERSION_NUMBER="$((VERSION_BASE+commit_number))" + + if [ -e fastlane/metadata/android/en-US/changelogs/"$VERSION_NUMBER.txt" ]; then + echo "The version $VERSION_NUMBER already exists" + exit 1 + fi +} + +generate_version_number + +VERSION_NUMBER_FDROID_ABI_1="$((VERSION_NUMBER+00000000))" +VERSION_NUMBER_FDROID_ABI_2="$((VERSION_NUMBER+10000000))" +VERSION_NUMBER_FDROID_ABI_3="$((VERSION_NUMBER+20000000))" + +VERSION_NAME=$1 +VERSION_FLUTTER="3.7.8" + +FULL_VERSION="$VERSION_NAME"+"$VERSION_NUMBER" + +# Set the new version in pubspec.yaml +sed -i "s/version: .*/version: $FULL_VERSION/g" pubspec.yaml + +# Rename the draft changelog with the new version number +if [ -e fastlane/metadata/android/en-US/changelogs/next.txt ]; then + cp fastlane/metadata/android/en-US/changelogs/next.txt fastlane/metadata/android/en-US/changelogs/"$VERSION_NUMBER".txt + cp fastlane/metadata/android/en-US/changelogs/next.txt fastlane/metadata/android/en-US/changelogs/"$VERSION_NUMBER_FDROID_ABI_1".txt + cp fastlane/metadata/android/en-US/changelogs/next.txt fastlane/metadata/android/en-US/changelogs/"$VERSION_NUMBER_FDROID_ABI_2".txt + cp fastlane/metadata/android/en-US/changelogs/next.txt fastlane/metadata/android/en-US/changelogs/"$VERSION_NUMBER_FDROID_ABI_3".txt +fi + +# Create a new draft changelog for the next release +echo "" > fastlane/metadata/android/en-US/changelogs/next.txt + +# Commit the changes +git add pubspec.yaml fastlane/metadata/android/en-US/changelogs/next.txt fastlane/metadata/android/en-US/changelogs/3*.txt +git commit -m "Tagging v$VERSION_NAME" +git tag v"$VERSION_NAME" + +VERSION_COMMIT=$(git rev-parse HEAD) + +echo "F-Droid metadata:" +echo "" + +FDROID_METADATA=$(cat << EOF +- versionName: $VERSION_NAME + versionCode: $VERSION_NUMBER_FDROID_ABI_1 + commit: $VERSION_COMMIT + output: build/app/outputs/flutter-apk/app-x86_64-release.apk + srclibs: + - flutter@$VERSION_FLUTTER + rm: + - ios + - test + prebuild: + # Change pub cache location so that the dart packages are scanned by the scanner + - export PUB_CACHE=$(pwd)/.pub-cache + - \$\$flutter\$\$/bin/flutter config --no-analytics + - \$\$flutter\$\$/bin/flutter pub get + build: + - export PUB_CACHE=$(pwd)/.pub-cache + - \$\$flutter\$\$/bin/flutter packages pub run flutter_oss_licenses:generate.dart + - \$\$flutter\$\$/bin/flutter packages pub run intl_utils:generate + - \$\$flutter\$\$/bin/flutter build apk --release --no-tree-shake-icons --split-per-abi + --target-platform=android-x64 --build-number=\$\$VERCODE\$\$ + scandelete: + - .pub-cache + +- versionName: $VERSION_NAME + versionCode: $VERSION_NUMBER_FDROID_ABI_2 + commit: $VERSION_COMMIT + output: build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk + srclibs: + - flutter@$VERSION_FLUTTER + rm: + - ios + - test + prebuild: + # Change pub cache location so that the dart packages are scanned by the scanner + - export PUB_CACHE=$(pwd)/.pub-cache + - \$\$flutter\$\$/bin/flutter config --no-analytics + - \$\$flutter\$\$/bin/flutter pub get + build: + - export PUB_CACHE=$(pwd)/.pub-cache + - \$\$flutter\$\$/bin/flutter packages pub run flutter_oss_licenses:generate.dart + - \$\$flutter\$\$/bin/flutter packages pub run intl_utils:generate + - \$\$flutter\$\$/bin/flutter build apk --release --no-tree-shake-icons --split-per-abi + --target-platform=android-arm --build-number=\$\$VERCODE\$\$ + scandelete: + - .pub-cache + +- versionName: $VERSION_NAME + versionCode: $VERSION_NUMBER_FDROID_ABI_3 + commit: $VERSION_COMMIT + output: build/app/outputs/flutter-apk/app-arm64-v8a-release.apk + srclibs: + - flutter@$VERSION_FLUTTER + rm: + - ios + - test + prebuild: + # Change pub cache location so that the dart packages are scanned by the scanner + - export PUB_CACHE=$(pwd)/.pub-cache + - \$\$flutter\$\$/bin/flutter config --no-analytics + - \$\$flutter\$\$/bin/flutter pub get + build: + - export PUB_CACHE=$(pwd)/.pub-cache + - \$\$flutter\$\$/bin/flutter packages pub run flutter_oss_licenses:generate.dart + - \$\$flutter\$\$/bin/flutter packages pub run intl_utils:generate + - \$\$flutter\$\$/bin/flutter build apk --release --no-tree-shake-icons --split-per-abi + --target-platform=android-arm64 --build-number=\$\$VERCODE\$\$ + scandelete: + - .pub-cache +EOF +) + +echo "$FDROID_METADATA" + +# Build the Play Store version +./build-play.sh + +git push +git push --tags diff --git a/test/thread_test.dart b/test/thread_test.dart new file mode 100644 index 00000000..4871fea6 --- /dev/null +++ b/test/thread_test.dart @@ -0,0 +1,267 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:quacker/client.dart'; + +void main() { + testWidgets('Converting a list of tweets and replies to a list of threads', (WidgetTester tester) async { + var content = jsonDecode(File('test/tweets-carmack-replies.json').readAsStringSync()); + + var tweets = Twitter.createUnconversationedChains(content, 'tweet', ['1296180686215417856'], false, true); + + // Ensure we have the previous and next page cursors + expect(tweets.cursorBottom, equals('HBaMgL2dt42W+SYAAA==')); + expect(tweets.cursorTop, equals('HCaAgICkv9/9/SYAAA==')); + + expect(tweets.chains.length, equals(19)); + + // TODO: Quoted tweets, cards + + expect(tweets.chains[0].isPinned, equals(true)); + expect(tweets.chains[0].id, equals('1296180686215417856')); + expect(tweets.chains[0].tweets.length, equals(1)); + expect(tweets.chains[0].tweets[0].fullText, contains('I still feel pretty good')); + expect(tweets.chains[0].tweets[0].idStr, contains('1296180686215417856')); + + expect(tweets.chains[1].isPinned, equals(false)); + expect(tweets.chains[1].id, equals('1404513382238232577')); + expect(tweets.chains[1].tweets.length, equals(1)); + expect(tweets.chains[1].tweets[0].fullText, contains('RT @80Level: 1/2 A Reddit user')); + expect(tweets.chains[1].tweets[0].idStr, contains('1404513382238232577')); + + expect(tweets.chains[2].isPinned, equals(false)); + expect(tweets.chains[2].id, equals('1404500471012855808')); + expect(tweets.chains[2].tweets.length, equals(1)); + expect(tweets.chains[2].tweets[0].fullText, contains('@iNCEPTIONALNEWS I generally agree')); + expect(tweets.chains[2].tweets[0].idStr, contains('1404500471012855808')); + + expect(tweets.chains[3].isPinned, equals(false)); + expect(tweets.chains[3].id, equals('1404500144691859459')); + expect(tweets.chains[3].tweets.length, equals(1)); + expect(tweets.chains[3].tweets[0].fullText, contains('@hmltn I\'m rather fond of')); + expect(tweets.chains[3].tweets[0].idStr, contains('1404500144691859459')); + + expect(tweets.chains[4].isPinned, equals(false)); + expect(tweets.chains[4].id, equals('1404496541969268737')); + expect(tweets.chains[4].tweets.length, equals(1)); + expect(tweets.chains[4].tweets[0].fullText, contains('2021 App Review #1')); + expect(tweets.chains[4].tweets[0].idStr, contains('1404496541969268737')); + + expect(tweets.chains[5].isPinned, equals(false)); + expect(tweets.chains[5].id, equals('1404496150045016072')); + expect(tweets.chains[5].tweets.length, equals(1)); + expect(tweets.chains[5].tweets[0].fullText, contains('My public app reviews are back!')); + expect(tweets.chains[5].tweets[0].idStr, contains('1404496150045016072')); + + expect(tweets.chains[6].isPinned, equals(false)); + expect(tweets.chains[6].id, equals('1404469358269767682')); + expect(tweets.chains[6].tweets.length, equals(1)); + expect(tweets.chains[6].tweets[0].fullText, contains('@BattleAxeVR I am generally opposed to platform')); + expect(tweets.chains[6].tweets[0].idStr, contains('1404469358269767682')); + + expect(tweets.chains[7].isPinned, equals(false)); + expect(tweets.chains[7].id, equals('1404309950386610181')); + expect(tweets.chains[7].tweets.length, equals(1)); + expect(tweets.chains[7].tweets[0].fullText, contains('A number of VR developers')); + expect(tweets.chains[7].tweets[0].idStr, contains('1404309950386610181')); + + expect(tweets.chains[8].isPinned, equals(false)); + expect(tweets.chains[8].id, equals('1403555349190352897')); + expect(tweets.chains[8].tweets.length, equals(1)); + expect(tweets.chains[8].tweets[0].fullText, + contains('@SeargeDP @FeerQuinte @martens_samuel That will give t-junction')); + expect(tweets.chains[8].tweets[0].idStr, contains('1403555349190352897')); + + expect(tweets.chains[9].isPinned, equals(false)); + expect(tweets.chains[9].id, equals('1403554973300973569')); + expect(tweets.chains[9].tweets.length, equals(1)); + expect(tweets.chains[9].tweets[0].fullText, + contains('@SeargeDP @_tomcc @FeerQuinte @martens_samuel You need invariant')); + expect(tweets.chains[9].tweets[0].idStr, contains('1403554973300973569')); + + expect(tweets.chains[10].isPinned, equals(false)); + expect(tweets.chains[10].id, equals('1403527704473972744')); + expect(tweets.chains[10].tweets.length, equals(1)); + expect(tweets.chains[10].tweets[0].fullText, + contains('@SeargeDP @FeerQuinte @martens_samuel The “invariant” qualifier')); + expect(tweets.chains[10].tweets[0].idStr, contains('1403527704473972744')); + + expect(tweets.chains[11].isPinned, equals(false)); + expect(tweets.chains[11].id, equals('1403513985912164353')); + expect(tweets.chains[11].tweets.length, equals(1)); + expect(tweets.chains[11].tweets[0].fullText, contains('Relative raw mouse movement')); + expect(tweets.chains[11].tweets[0].idStr, contains('1403513985912164353')); + + expect(tweets.chains[12].isPinned, equals(false)); + expect(tweets.chains[12].id, equals('1403427901438107653')); + expect(tweets.chains[12].tweets.length, equals(1)); + expect(tweets.chains[12].tweets[0].fullText, contains('@FeerQuinte @martens_samuel It should only')); + expect(tweets.chains[12].tweets[0].idStr, contains('1403427901438107653')); + + expect(tweets.chains[13].isPinned, equals(false)); + expect(tweets.chains[13].id, equals('1403422554040279049')); + expect(tweets.chains[13].tweets.length, equals(1)); + expect(tweets.chains[13].tweets[0].fullText, contains('@Xilefian @atorstling Better to be')); + expect(tweets.chains[13].tweets[0].idStr, contains('1403422554040279049')); + + expect(tweets.chains[14].isPinned, equals(false)); + expect(tweets.chains[14].id, equals('1403378126751678464')); + expect(tweets.chains[14].tweets.length, equals(1)); + expect(tweets.chains[14].tweets[0].fullText, contains('@Xilefian @atorstling Is it rendering')); + expect(tweets.chains[14].tweets[0].idStr, contains('1403378126751678464')); + + expect(tweets.chains[15].isPinned, equals(false)); + expect(tweets.chains[15].id, equals('1403376751863123969')); + expect(tweets.chains[15].tweets.length, equals(1)); + expect(tweets.chains[15].tweets[0].fullText, contains('@martens_samuel That\'s not the best')); + expect(tweets.chains[15].tweets[0].idStr, contains('1403376751863123969')); + + expect(tweets.chains[16].isPinned, equals(false)); + expect(tweets.chains[16].id, equals('1403248024361517057')); + expect(tweets.chains[16].tweets.length, equals(1)); + expect(tweets.chains[16].tweets[0].fullText, contains('@martens_samuel So what was')); + expect(tweets.chains[16].tweets[0].idStr, contains('1403248024361517057')); + + expect(tweets.chains[17].isPinned, equals(false)); + expect(tweets.chains[17].id, equals('1403247773252734978')); + expect(tweets.chains[17].tweets.length, equals(1)); + expect(tweets.chains[17].tweets[0].fullText, contains('@atorstling Yes')); + expect(tweets.chains[17].tweets[0].idStr, contains('1403247773252734978')); + + expect(tweets.chains[18].isPinned, equals(false)); + expect(tweets.chains[18].id, equals('1403201368165425158')); + expect(tweets.chains[18].tweets.length, equals(1)); + expect(tweets.chains[18].tweets[0].fullText, contains('Flawless graphics is not the appeal of Minecraft')); + expect(tweets.chains[18].tweets[0].idStr, contains('1403201368165425158')); + }); + + testWidgets('Converting a list of tweets to a list of threads', (WidgetTester tester) async { + var content = jsonDecode(File('test/tweets-carmack.json').readAsStringSync()); + + var tweets = Twitter.createUnconversationedChains(content, 'tweet', ['1296180686215417856'], true, true); + + // Ensure we have the previous and next page cursors + expect(tweets.cursorBottom, equals('HBaEwLDBmpX46yYAAA==')); + expect(tweets.cursorTop, equals('HCaAgIDkneTC+SYAAA==')); + + expect(tweets.chains.length, equals(14)); + + // TODO: Quoted tweets, cards + + // 1. Pinned tweet + expect(tweets.chains[0].isPinned, equals(true)); + expect(tweets.chains[0].id, equals('1296180686215417856')); + expect(tweets.chains[0].tweets.length, equals(1)); + expect(tweets.chains[0].tweets[0].fullText, contains('I still feel pretty good')); + expect(tweets.chains[0].tweets[0].idStr, contains('1296180686215417856')); + + // 2. Flawless graphics + image + expect(tweets.chains[1].isPinned, equals(false)); + expect(tweets.chains[1].id, equals('1403201368165425158')); + expect(tweets.chains[1].tweets.length, equals(1)); + expect(tweets.chains[1].tweets[0].fullText, contains('Flawless graphics')); + expect(tweets.chains[1].tweets[0].idStr, contains('1403201368165425158')); + + // 3. I wonder + expect(tweets.chains[2].isPinned, equals(false)); + expect(tweets.chains[2].id, equals('1403078945847660545')); + expect(tweets.chains[2].tweets.length, equals(1)); + expect(tweets.chains[2].tweets[0].fullText, contains('I wonder')); + + // 4. Much is made + expect(tweets.chains[3].isPinned, equals(false)); + expect(tweets.chains[3].id, equals('1402496694940536834')); + expect(tweets.chains[3].tweets.length, equals(1)); + expect(tweets.chains[3].tweets[0].fullText, contains('Much is made')); + expect(tweets.chains[3].tweets[0].idStr, contains('1402496694940536834')); + + // 5. Thread + // 5a. Bezos + URL card + // 5b. I'm all for + expect(tweets.chains[4].isPinned, equals(false)); + expect(tweets.chains[4].id, equals('1402046370501046277')); + expect(tweets.chains[4].tweets.length, equals(2)); + expect(tweets.chains[4].tweets[0].fullText, contains('Bezos is definitely')); + expect(tweets.chains[4].tweets[0].idStr, contains('1402046370501046277')); + expect(tweets.chains[4].tweets[1].fullText, contains('I\'m all for people')); + expect(tweets.chains[4].tweets[1].idStr, contains('1402050538510897158')); + + // 6. Here are a few + expect(tweets.chains[5].isPinned, equals(false)); + expect(tweets.chains[5].id, equals('1402035761063641090')); + expect(tweets.chains[5].tweets.length, equals(1)); + expect(tweets.chains[5].tweets[0].fullText, contains('Here are a few')); + expect(tweets.chains[5].tweets[0].idStr, contains('1402035761063641090')); + + // 7. It is interesting + expect(tweets.chains[6].isPinned, equals(false)); + expect(tweets.chains[6].id, equals('1401959248507047948')); + expect(tweets.chains[6].tweets.length, equals(1)); + expect(tweets.chains[6].tweets[0].fullText, contains('It is interesting')); + expect(tweets.chains[6].tweets[0].idStr, contains('1401959248507047948')); + + // 8. Thread + // 8a. The vast majority + // 8b. a good path + // 8c. external image + expect(tweets.chains[7].isPinned, equals(false)); + expect(tweets.chains[7].id, equals('1400930510671601666')); + expect(tweets.chains[7].tweets.length, equals(3)); + expect(tweets.chains[7].tweets[0].fullText, contains('The vast majority')); + expect(tweets.chains[7].tweets[0].idStr, contains('1400930510671601666')); + expect(tweets.chains[7].tweets[1].fullText, contains('a good path')); + expect(tweets.chains[7].tweets[1].idStr, contains('1400930512491909121')); + expect(tweets.chains[7].tweets[2].fullText, contains('external image')); + expect(tweets.chains[7].tweets[2].idStr, contains('1400930514073182208')); + + // 9. Doing some work + expect(tweets.chains[8].isPinned, equals(false)); + expect(tweets.chains[8].id, equals('1400683014229839874')); + expect(tweets.chains[8].tweets.length, equals(1)); + expect(tweets.chains[8].tweets[0].fullText, contains('Doing some work')); + expect(tweets.chains[8].tweets[0].idStr, contains('1400683014229839874')); + + // 10. Thread + // 10a. Tile based rasterization + // 10b. getting into the datacenter + // 10c. postprocess. A "smart monitor" + expect(tweets.chains[9].isPinned, equals(false)); + expect(tweets.chains[9].id, equals('1399949152545611778')); + expect(tweets.chains[9].tweets.length, equals(3)); + expect(tweets.chains[9].tweets[0].fullText, contains('Tile based rasterization')); + expect(tweets.chains[9].tweets[0].idStr, contains('1399949152545611778')); + expect(tweets.chains[9].tweets[1].fullText, contains('getting into the datacenter')); + expect(tweets.chains[9].tweets[1].idStr, contains('1399949153547993088')); + expect(tweets.chains[9].tweets[2].fullText, contains('postprocess. A "smart monitor"')); + expect(tweets.chains[9].tweets[2].idStr, contains('1399949154412118029')); + + // 11. On top of my recurring + quoted tweet + expect(tweets.chains[10].isPinned, equals(false)); + expect(tweets.chains[10].id, equals('1399827603654066187')); + expect(tweets.chains[10].tweets.length, equals(1)); + expect(tweets.chains[10].tweets[0].fullText, contains('On top of my recurring')); + expect(tweets.chains[10].tweets[0].idStr, contains('1399827603654066187')); + + // 12. State of the art + quoted tweet + expect(tweets.chains[11].isPinned, equals(false)); + expect(tweets.chains[11].id, equals('1399722752047730691')); + expect(tweets.chains[11].tweets.length, equals(1)); + expect(tweets.chains[11].tweets[0].fullText, contains('State of the art')); + expect(tweets.chains[11].tweets[0].idStr, contains('1399722752047730691')); + + // 13. Has there been any + URL card + expect(tweets.chains[12].isPinned, equals(false)); + expect(tweets.chains[12].id, equals('1399584217030348803')); + expect(tweets.chains[12].tweets.length, equals(1)); + expect(tweets.chains[12].tweets[0].fullText, contains('Has there been any')); + expect(tweets.chains[12].tweets[0].idStr, contains('1399584217030348803')); + + // 14. The flexibility to add + expect(tweets.chains[13].isPinned, equals(false)); + expect(tweets.chains[13].id, equals('1399476356354805762')); + expect(tweets.chains[13].tweets.length, equals(1)); + expect(tweets.chains[13].tweets[0].fullText, contains('The flexibility to add')); + expect(tweets.chains[13].tweets[0].idStr, contains('1399476356354805762')); + }); +} diff --git a/test/tweets-carmack-replies.json b/test/tweets-carmack-replies.json new file mode 100644 index 00000000..f1f98b4c --- /dev/null +++ b/test/tweets-carmack-replies.json @@ -0,0 +1,3433 @@ +{ + "globalObjects": { + "tweets": { + "1404490362329047046": { + "created_at": "Mon Jun 14 17:26:11 +0000 2021", + "id_str": "1404490362329047046", + "full_text": "Carmack\u2019s App Reviews are back. In his first review in his new series, @ID_AA_Carmack shares his feedback on Space Shooter, an arcade shooting game that recently launched on App Lab: https:\/\/t.co\/twBFDmmnD5 https:\/\/t.co\/5SmKXX5zzW", + "display_text_range": [ + 0, + 206 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "ID_AA_Carmack", + "name": "John Carmack", + "id_str": "175624200", + "indices": [ + 71, + 85 + ] + } + ], + "urls": [ + { + "url": "https:\/\/t.co\/twBFDmmnD5", + "expanded_url": "http:\/\/ocul.us\/SpaceShooter", + "display_url": "ocul.us\/SpaceShooter", + "indices": [ + 183, + 206 + ] + } + ], + "media": [ + { + "id_str": "1404490322650943493", + "indices": [ + 207, + 230 + ], + "media_url": "http:\/\/pbs.twimg.com\/media\/E33AgdQVUAU5CN7.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/media\/E33AgdQVUAU5CN7.jpg", + "url": "https:\/\/t.co\/5SmKXX5zzW", + "display_url": "pic.twitter.com\/5SmKXX5zzW", + "expanded_url": "https:\/\/twitter.com\/Oculus_Dev\/status\/1404490362329047046\/photo\/1", + "type": "photo", + "original_info": { + "width": 2994, + "height": 1606, + "focus_rects": [ + { + "x": 126, + "y": 0, + "h": 1606, + "w": 2868 + }, + { + "x": 1213, + "y": 0, + "h": 1606, + "w": 1606 + }, + { + "x": 1312, + "y": 0, + "h": 1606, + "w": 1409 + }, + { + "x": 1615, + "y": 0, + "h": 1606, + "w": 803 + }, + { + "x": 0, + "y": 0, + "h": 1606, + "w": 2994 + } + ] + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 2048, + "h": 1099, + "resize": "fit" + }, + "small": { + "w": 680, + "h": 365, + "resize": "fit" + }, + "medium": { + "w": 1200, + "h": 644, + "resize": "fit" + } + } + } + ] + }, + "extended_entities": { + "media": [ + { + "id_str": "1404490322650943493", + "indices": [ + 207, + 230 + ], + "media_url": "http:\/\/pbs.twimg.com\/media\/E33AgdQVUAU5CN7.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/media\/E33AgdQVUAU5CN7.jpg", + "url": "https:\/\/t.co\/5SmKXX5zzW", + "display_url": "pic.twitter.com\/5SmKXX5zzW", + "expanded_url": "https:\/\/twitter.com\/Oculus_Dev\/status\/1404490362329047046\/photo\/1", + "type": "photo", + "original_info": { + "width": 2994, + "height": 1606, + "focus_rects": [ + { + "x": 126, + "y": 0, + "h": 1606, + "w": 2868 + }, + { + "x": 1213, + "y": 0, + "h": 1606, + "w": 1606 + }, + { + "x": 1312, + "y": 0, + "h": 1606, + "w": 1409 + }, + { + "x": 1615, + "y": 0, + "h": 1606, + "w": 803 + }, + { + "x": 0, + "y": 0, + "h": 1606, + "w": 2994 + } + ] + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 2048, + "h": 1099, + "resize": "fit" + }, + "small": { + "w": 680, + "h": 365, + "resize": "fit" + }, + "medium": { + "w": 1200, + "h": 644, + "resize": "fit" + } + }, + "media_key": "3_1404490322650943493", + "ext_media_availability": { + "status": "available" + }, + "ext_alt_text": null, + "ext": { + "mediaStats": { + "r": "Missing", + "ttl": -1 + } + } + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "863103045378260992", + "retweet_count": 13, + "favorite_count": 104, + "reply_count": 10, + "quote_count": 7, + "conversation_id_str": "1404490362329047046", + "possibly_sensitive_editable": true, + "lang": "en" + }, + "1404309950386610181": { + "created_at": "Mon Jun 14 05:29:17 +0000 2021", + "id_str": "1404309950386610181", + "full_text": "A number of VR developers are still small enough that they don't wind up with a left handed person continuously involved in the development process, resulting in fragile or non-existent support for left handed play. 10% of the population is left handed.", + "display_text_range": [ + 0, + 253 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 97, + "favorite_count": 1007, + "reply_count": 65, + "quote_count": 20, + "conversation_id_str": "1404309950386610181", + "lang": "en" + }, + "1403201368165425158": { + "created_at": "Fri Jun 11 04:04:11 +0000 2021", + "id_str": "1403201368165425158", + "full_text": "Flawless graphics is not the appeal of Minecraft, but the pixel cracks and depth fighting on held items bugs me. Not sure if they both derive from a mesh optimization issue, or if there is also a failure to use invariant calculations for multi-pass. https:\/\/t.co\/bXu1tHATq7", + "display_text_range": [ + 0, + 249 + ], + "entities": { + "media": [ + { + "id_str": "1403201291329970176", + "indices": [ + 250, + 273 + ], + "media_url": "http:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "url": "https:\/\/t.co\/bXu1tHATq7", + "display_url": "pic.twitter.com\/bXu1tHATq7", + "expanded_url": "https:\/\/twitter.com\/ID_AA_Carmack\/status\/1403201368165425158\/photo\/1", + "type": "photo", + "original_info": { + "width": 912, + "height": 914, + "focus_rects": [ + { + "x": 0, + "y": 403, + "h": 511, + "w": 912 + }, + { + "x": 0, + "y": 2, + "h": 912, + "w": 912 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 802 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 457 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 912 + } + ] + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 912, + "h": 914, + "resize": "fit" + }, + "small": { + "w": 679, + "h": 680, + "resize": "fit" + }, + "medium": { + "w": 912, + "h": 914, + "resize": "fit" + } + } + } + ] + }, + "extended_entities": { + "media": [ + { + "id_str": "1403201291329970176", + "indices": [ + 250, + 273 + ], + "media_url": "http:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "url": "https:\/\/t.co\/bXu1tHATq7", + "display_url": "pic.twitter.com\/bXu1tHATq7", + "expanded_url": "https:\/\/twitter.com\/ID_AA_Carmack\/status\/1403201368165425158\/photo\/1", + "type": "photo", + "original_info": { + "width": 912, + "height": 914, + "focus_rects": [ + { + "x": 0, + "y": 403, + "h": 511, + "w": 912 + }, + { + "x": 0, + "y": 2, + "h": 912, + "w": 912 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 802 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 457 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 912 + } + ] + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 912, + "h": 914, + "resize": "fit" + }, + "small": { + "w": 679, + "h": 680, + "resize": "fit" + }, + "medium": { + "w": 912, + "h": 914, + "resize": "fit" + } + }, + "media_key": "3_1403201291329970176", + "ext_media_availability": { + "status": "available" + }, + "ext_alt_text": null, + "ext": { + "mediaStats": { + "r": "Missing", + "ttl": -1 + } + } + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 35, + "favorite_count": 612, + "reply_count": 46, + "quote_count": 5, + "conversation_id_str": "1403201368165425158", + "possibly_sensitive_editable": true, + "lang": "en" + }, + "1404482835663183872": { + "created_at": "Mon Jun 14 16:56:16 +0000 2021", + "id_str": "1404482835663183872", + "full_text": "1\/2 A Reddit user found out Valve reused the code for flickering lights in Alyx 22 years after the release of the original Half-Life:\n\nhttps:\/\/t.co\/2rrYt2guEO\n\n#valve #halflife #HalfLifeAlyx #gamedev #gamedevelopment #lighting https:\/\/t.co\/2fJPPRjpb8", + "display_text_range": [ + 0, + 226 + ], + "entities": { + "hashtags": [ + { + "text": "valve", + "indices": [ + 160, + 166 + ] + }, + { + "text": "halflife", + "indices": [ + 167, + 176 + ] + }, + { + "text": "HalfLifeAlyx", + "indices": [ + 177, + 190 + ] + }, + { + "text": "gamedev", + "indices": [ + 191, + 199 + ] + }, + { + "text": "gamedevelopment", + "indices": [ + 200, + 216 + ] + }, + { + "text": "lighting", + "indices": [ + 217, + 226 + ] + } + ], + "urls": [ + { + "url": "https:\/\/t.co\/2rrYt2guEO", + "expanded_url": "https:\/\/80.lv\/articles\/valve-reused-the-code-for-flickering-lights-in-alyx-22-years-later\/", + "display_url": "80.lv\/articles\/valve\u2026", + "indices": [ + 135, + 158 + ] + } + ], + "media": [ + { + "id_str": "1404482733481598987", + "indices": [ + 227, + 250 + ], + "media_url": "http:\/\/pbs.twimg.com\/ext_tw_video_thumb\/1404482733481598987\/pu\/img\/uPFwxwXK4tM-N2Xl.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/ext_tw_video_thumb\/1404482733481598987\/pu\/img\/uPFwxwXK4tM-N2Xl.jpg", + "url": "https:\/\/t.co\/2fJPPRjpb8", + "display_url": "pic.twitter.com\/2fJPPRjpb8", + "expanded_url": "https:\/\/twitter.com\/80Level\/status\/1404482835663183872\/video\/1", + "type": "photo", + "original_info": { + "width": 960, + "height": 1080 + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 960, + "h": 1080, + "resize": "fit" + }, + "medium": { + "w": 960, + "h": 1080, + "resize": "fit" + }, + "small": { + "w": 604, + "h": 680, + "resize": "fit" + } + } + } + ] + }, + "extended_entities": { + "media": [ + { + "id_str": "1404482733481598987", + "indices": [ + 227, + 250 + ], + "media_url": "http:\/\/pbs.twimg.com\/ext_tw_video_thumb\/1404482733481598987\/pu\/img\/uPFwxwXK4tM-N2Xl.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/ext_tw_video_thumb\/1404482733481598987\/pu\/img\/uPFwxwXK4tM-N2Xl.jpg", + "url": "https:\/\/t.co\/2fJPPRjpb8", + "display_url": "pic.twitter.com\/2fJPPRjpb8", + "expanded_url": "https:\/\/twitter.com\/80Level\/status\/1404482835663183872\/video\/1", + "type": "video", + "original_info": { + "width": 960, + "height": 1080 + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 960, + "h": 1080, + "resize": "fit" + }, + "medium": { + "w": 960, + "h": 1080, + "resize": "fit" + }, + "small": { + "w": 604, + "h": 680, + "resize": "fit" + } + }, + "video_info": { + "aspect_ratio": [ + 8, + 9 + ], + "duration_millis": 14967, + "variants": [ + { + "bitrate": 632000, + "content_type": "video\/mp4", + "url": "https:\/\/video.twimg.com\/ext_tw_video\/1404482733481598987\/pu\/vid\/320x360\/PwjHRsQ9Zrunx1A1.mp4?tag=12" + }, + { + "bitrate": 2176000, + "content_type": "video\/mp4", + "url": "https:\/\/video.twimg.com\/ext_tw_video\/1404482733481598987\/pu\/vid\/720x810\/Jt-m9oQrwMejPCN2.mp4?tag=12" + }, + { + "bitrate": 950000, + "content_type": "video\/mp4", + "url": "https:\/\/video.twimg.com\/ext_tw_video\/1404482733481598987\/pu\/vid\/480x540\/DjdG5H-BvK1ENnSe.mp4?tag=12" + }, + { + "content_type": "application\/x-mpegURL", + "url": "https:\/\/video.twimg.com\/ext_tw_video\/1404482733481598987\/pu\/pl\/aodVPxXhb9AyvOiZ.m3u8?tag=12&container=fmp4" + } + ] + }, + "media_key": "7_1404482733481598987", + "ext_media_availability": { + "status": "available" + }, + "ext_alt_text": null, + "ext": { + "mediaStats": { + "r": { + "ok": { + "viewCount": "26303" + } + }, + "ttl": -1 + } + }, + "additional_media_info": { + "monetizable": false + } + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "2913699628", + "retweet_count": 365, + "favorite_count": 1632, + "reply_count": 31, + "quote_count": 54, + "conversation_id_str": "1404482835663183872", + "possibly_sensitive_editable": true, + "lang": "en", + "self_thread": { + "id_str": "1404482835663183872" + } + }, + "1403378126751678464": { + "created_at": "Fri Jun 11 15:46:33 +0000 2021", + "id_str": "1403378126751678464", + "full_text": "@Xilefian @atorstling Is it rendering one giant sprite for the entire \"face\" of the weapon, then separate quads for the sides? If so, the transparent overdraw is very likely slower than the geometry would be.", + "display_text_range": [ + 22, + 209 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "Xilefian", + "name": "Felix \"Xilefian\"", + "id_str": "199272119", + "indices": [ + 0, + 9 + ] + }, + { + "screen_name": "atorstling", + "name": "Alexander Torstling", + "id_str": "491431191", + "indices": [ + 10, + 21 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403277405284864000", + "in_reply_to_user_id_str": "199272119", + "in_reply_to_screen_name": "Xilefian", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 6, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1403201368165425158", + "lang": "en" + }, + "1403247773252734978": { + "created_at": "Fri Jun 11 07:08:34 +0000 2021", + "id_str": "1403247773252734978", + "full_text": "@atorstling Yes", + "display_text_range": [ + 12, + 15 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "atorstling", + "name": "Alexander Torstling", + "id_str": "491431191", + "indices": [ + 0, + 11 + ] + } + ] + }, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403246355208888323", + "in_reply_to_user_id_str": "491431191", + "in_reply_to_screen_name": "atorstling", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 10, + "reply_count": 2, + "quote_count": 0, + "conversation_id_str": "1403201368165425158", + "lang": "und" + }, + "1404500144691859459": { + "created_at": "Mon Jun 14 18:05:03 +0000 2021", + "id_str": "1404500144691859459", + "full_text": "@hmltn I'm rather fond of @boztank calling me the \"Consulting CTO\", but \"Executive Advisor\" is the more accurate description. Note that I never did have any executive authority even when I was formally the CTO of Oculus, because I didn't actually have direct reports (by choice).", + "display_text_range": [ + 7, + 280 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "hmltn", + "name": "Ian Hamilton", + "id_str": "54501212", + "indices": [ + 0, + 6 + ] + }, + { + "screen_name": "boztank", + "name": "Boz", + "id_str": "20643907", + "indices": [ + 26, + 34 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1404498584616128522", + "in_reply_to_user_id_str": "54501212", + "in_reply_to_screen_name": "hmltn", + "user_id_str": "175624200", + "retweet_count": 2, + "favorite_count": 21, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1404498584616128522", + "lang": "en" + }, + "1404496541969268737": { + "created_at": "Mon Jun 14 17:50:44 +0000 2021", + "id_str": "1404496541969268737", + "full_text": "2021 App Review #1", + "display_text_range": [ + 0, + 18 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "is_quote_status": true, + "quoted_status_id_str": "1404490362329047046", + "quoted_status_permalink": { + "url": "https:\/\/t.co\/RLh0qL7fkz", + "expanded": "https:\/\/twitter.com\/Oculus_Dev\/status\/1404490362329047046", + "display": "twitter.com\/Oculus_Dev\/sta\u2026" + }, + "retweet_count": 11, + "favorite_count": 184, + "reply_count": 5, + "quote_count": 1, + "conversation_id_str": "1404496541969268737", + "lang": "en" + }, + "1403248024361517057": { + "created_at": "Fri Jun 11 07:09:34 +0000 2021", + "id_str": "1403248024361517057", + "full_text": "@martens_samuel So what was the previous culprit?", + "display_text_range": [ + 16, + 49 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "martens_samuel", + "name": "Sam Martens", + "id_str": "3769514477", + "indices": [ + 0, + 15 + ] + } + ] + }, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403245857911164928", + "in_reply_to_user_id_str": "3769514477", + "in_reply_to_screen_name": "martens_samuel", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 97, + "reply_count": 3, + "quote_count": 0, + "conversation_id_str": "1403245857911164928", + "lang": "en" + }, + "1404469358269767682": { + "created_at": "Mon Jun 14 16:02:43 +0000 2021", + "id_str": "1404469358269767682", + "full_text": "@BattleAxeVR I am generally opposed to platform requirements, even when well intentioned. Strong guidelines, sure, but individual developers should be the best judge of tradeoffs if they are well informed.", + "display_text_range": [ + 13, + 206 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "BattleAxeVR", + "name": "BattleAxeVR", + "id_str": "925815838594207744", + "indices": [ + 0, + 12 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1404426104853647366", + "in_reply_to_user_id_str": "925815838594207744", + "in_reply_to_screen_name": "BattleAxeVR", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 6, + "reply_count": 2, + "quote_count": 0, + "conversation_id_str": "1404309950386610181", + "lang": "en" + }, + "1403527704473972744": { + "created_at": "Sat Jun 12 01:40:55 +0000 2021", + "id_str": "1403527704473972744", + "full_text": "@SeargeDP @FeerQuinte @martens_samuel The \u201cinvariant\u201d qualifier on position in vertex shaders will fix this for multi-pass. How about the cracks? I can see T-junctions causing sub-pixel cracks along mismatched edges, but If all the cube corners are integer values, single cubes should be perfect.", + "display_text_range": [ + 38, + 297 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "SeargeDP", + "name": "Searge", + "id_str": "381007605", + "indices": [ + 0, + 9 + ] + }, + { + "screen_name": "FeerQuinte", + "name": "Fernando Quinteros", + "id_str": "488569991", + "indices": [ + 10, + 21 + ] + }, + { + "screen_name": "martens_samuel", + "name": "Sam Martens", + "id_str": "3769514477", + "indices": [ + 22, + 37 + ] + } + ] + }, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403520845952212992", + "in_reply_to_user_id_str": "381007605", + "in_reply_to_screen_name": "SeargeDP", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 5, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1403245857911164928", + "lang": "en" + }, + "1403376751863123969": { + "created_at": "Fri Jun 11 15:41:05 +0000 2021", + "id_str": "1403376751863123969", + "full_text": "@martens_samuel That's not the best solution -- you want to use the \"invariant\" qualifier on position outputs from the vertex shaders.", + "display_text_range": [ + 16, + 134 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "martens_samuel", + "name": "Sam Martens", + "id_str": "3769514477", + "indices": [ + 0, + 15 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403358580338692104", + "in_reply_to_user_id_str": "3769514477", + "in_reply_to_screen_name": "martens_samuel", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 16, + "reply_count": 2, + "quote_count": 0, + "conversation_id_str": "1403245857911164928", + "lang": "en" + }, + "1403554973300973569": { + "created_at": "Sat Jun 12 03:29:17 +0000 2021", + "id_str": "1403554973300973569", + "full_text": "@SeargeDP @_tomcc @FeerQuinte @martens_samuel You need invariant on position in every shader that could be used together, so both the base surface and all the effects. Not a bad idea to just put it on every position. The actual matrix multiply also has to be identical code, of course.", + "display_text_range": [ + 46, + 285 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "SeargeDP", + "name": "Searge", + "id_str": "381007605", + "indices": [ + 0, + 9 + ] + }, + { + "screen_name": "_tomcc", + "name": "Tommaso Checchi", + "id_str": "248414574", + "indices": [ + 10, + 17 + ] + }, + { + "screen_name": "FeerQuinte", + "name": "Fernando Quinteros", + "id_str": "488569991", + "indices": [ + 18, + 29 + ] + }, + { + "screen_name": "martens_samuel", + "name": "Sam Martens", + "id_str": "3769514477", + "indices": [ + 30, + 45 + ] + } + ] + }, + "source": "\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403553953321820161", + "in_reply_to_user_id_str": "381007605", + "in_reply_to_screen_name": "SeargeDP", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 4, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1403245857911164928", + "lang": "en" + }, + "1404500471012855808": { + "created_at": "Mon Jun 14 18:06:21 +0000 2021", + "id_str": "1404500471012855808", + "full_text": "@iNCEPTIONALNEWS I generally agree, which is why I am opposed to most platform mandates -- let each developer, given all the available information, choose their own market.", + "display_text_range": [ + 17, + 172 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "iNCEPTIONALNEWS", + "name": "iNCEPTIONAL", + "id_str": "707369274", + "indices": [ + 0, + 16 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1404499384113508371", + "in_reply_to_user_id_str": "707369274", + "in_reply_to_screen_name": "iNCEPTIONALNEWS", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 3, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1404309950386610181", + "lang": "en" + }, + "1403422554040279049": { + "created_at": "Fri Jun 11 18:43:05 +0000 2021", + "id_str": "1403422554040279049", + "full_text": "@Xilefian @atorstling Better to be wildly successful than flawlessly implemented!", + "display_text_range": [ + 22, + 81 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "Xilefian", + "name": "Felix \"Xilefian\"", + "id_str": "199272119", + "indices": [ + 0, + 9 + ] + }, + { + "screen_name": "atorstling", + "name": "Alexander Torstling", + "id_str": "491431191", + "indices": [ + 10, + 21 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403387457706598406", + "in_reply_to_user_id_str": "199272119", + "in_reply_to_screen_name": "Xilefian", + "user_id_str": "175624200", + "retweet_count": 3, + "favorite_count": 32, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1403201368165425158", + "lang": "en" + }, + "1404513382238232577": { + "created_at": "Mon Jun 14 18:57:39 +0000 2021", + "id_str": "1404513382238232577", + "full_text": "RT @80Level: 1\/2 A Reddit user found out Valve reused the code for flickering lights in Alyx 22 years after the release of the original Hal\u2026", + "display_text_range": [ + 0, + 140 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "80Level", + "name": "80 LEVEL", + "id_str": "2913699628", + "indices": [ + 3, + 11 + ] + } + ] + }, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "user_id_str": "175624200", + "retweeted_status_id_str": "1404482835663183872", + "retweet_count": 365, + "favorite_count": 0, + "reply_count": 0, + "quote_count": 0, + "conversation_id_str": "1404513382238232577", + "lang": "en" + }, + "1403427901438107653": { + "created_at": "Fri Jun 11 19:04:20 +0000 2021", + "id_str": "1403427901438107653", + "full_text": "@FeerQuinte @martens_samuel It should only make a difference when the shaders differ, but drivers might make optimized versions of shaders for particular texture \/ blend \/ enables behind your back. *Something* is certainly different to get the depth fighting. Maybe multiple matrix math paths?", + "display_text_range": [ + 28, + 294 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "FeerQuinte", + "name": "Fernando Quinteros", + "id_str": "488569991", + "indices": [ + 0, + 11 + ] + }, + { + "screen_name": "martens_samuel", + "name": "Sam Martens", + "id_str": "3769514477", + "indices": [ + 12, + 27 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403426111724437509", + "in_reply_to_user_id_str": "488569991", + "in_reply_to_screen_name": "FeerQuinte", + "user_id_str": "175624200", + "retweet_count": 1, + "favorite_count": 8, + "reply_count": 2, + "quote_count": 0, + "conversation_id_str": "1403245857911164928", + "lang": "en" + }, + "1403513985912164353": { + "created_at": "Sat Jun 12 00:46:24 +0000 2021", + "id_str": "1403513985912164353", + "full_text": "Relative raw mouse movement is often convenient and better than anything window clamped, but it doesn\u2019t play well when there might be multiple callers to a retrieval function. Unclamped accumulated values play nicer in that case.", + "display_text_range": [ + 0, + 229 + ], + "entities": {}, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 6, + "favorite_count": 147, + "reply_count": 13, + "quote_count": 6, + "conversation_id_str": "1403513985912164353", + "lang": "en" + }, + "1404496150045016072": { + "created_at": "Mon Jun 14 17:49:11 +0000 2021", + "id_str": "1404496150045016072", + "full_text": "My public app reviews are back! I'm going to try to do one of these a month, so submit your app if you want to be considered for a review. I'm open to reviewing everything from App-Lab to Beat Saber.", + "display_text_range": [ + 0, + 200 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "is_quote_status": true, + "quoted_status_id_str": "1404490074578853894", + "quoted_status_permalink": { + "url": "https:\/\/t.co\/SvF04Wzk8C", + "expanded": "https:\/\/twitter.com\/Oculus_Dev\/status\/1404490074578853894", + "display": "twitter.com\/Oculus_Dev\/sta\u2026" + }, + "retweet_count": 17, + "favorite_count": 129, + "reply_count": 6, + "quote_count": 1, + "conversation_id_str": "1404496150045016072", + "lang": "en" + }, + "1403555349190352897": { + "created_at": "Sat Jun 12 03:30:46 +0000 2021", + "id_str": "1403555349190352897", + "full_text": "@SeargeDP @FeerQuinte @martens_samuel That will give t-junction cracks for sure, but those should be smaller and more subtle than what is there, and it wouldn\u2019t account for the single cube issues. I might pull a renderdoc if I get motivated.", + "display_text_range": [ + 38, + 241 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "SeargeDP", + "name": "Searge", + "id_str": "381007605", + "indices": [ + 0, + 9 + ] + }, + { + "screen_name": "FeerQuinte", + "name": "Fernando Quinteros", + "id_str": "488569991", + "indices": [ + 10, + 21 + ] + }, + { + "screen_name": "martens_samuel", + "name": "Sam Martens", + "id_str": "3769514477", + "indices": [ + 22, + 37 + ] + } + ] + }, + "source": "\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e", + "in_reply_to_status_id_str": "1403536214771261449", + "in_reply_to_user_id_str": "381007605", + "in_reply_to_screen_name": "SeargeDP", + "user_id_str": "175624200", + "retweet_count": 0, + "favorite_count": 4, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1403245857911164928", + "lang": "en" + }, + "1296180686215417856": { + "created_at": "Wed Aug 19 20:22:12 +0000 2020", + "id_str": "1296180686215417856", + "full_text": "I still feel pretty good about the commencement speech I gave a few years ago: https:\/\/t.co\/Oy0W7K1Bqt", + "display_text_range": [ + 0, + 102 + ], + "entities": { + "urls": [ + { + "url": "https:\/\/t.co\/Oy0W7K1Bqt", + "expanded_url": "https:\/\/youtu.be\/YOZnqjHkULc?t=138", + "display_url": "youtu.be\/YOZnqjHkULc?t=\u2026", + "indices": [ + 79, + 102 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 109, + "favorite_count": 1097, + "reply_count": 90, + "quote_count": 27, + "conversation_id_str": "1296180686215417856", + "possibly_sensitive_editable": true, + "card": { + "name": "player", + "url": "https:\/\/t.co\/Oy0W7K1Bqt", + "card_type_url": "http:\/\/card-type-url-is-deprecated.invalid", + "binding_values": { + "vanity_url": { + "type": "STRING", + "string_value": "youtube.com", + "scribe_key": "vanity_url" + }, + "player_url": { + "type": "STRING", + "string_value": "https:\/\/www.youtube.com\/embed\/YOZnqjHkULc?start=138" + }, + "app_is_free": { + "type": "STRING", + "string_value": "true" + }, + "app_price_currency": { + "type": "STRING", + "string_value": "USD" + }, + "app_price_amount": { + "type": "STRING", + "string_value": "0.0" + }, + "domain": { + "type": "STRING", + "string_value": "www.youtube.com" + }, + "app_num_ratings": { + "type": "STRING", + "string_value": "20,877,001" + }, + "app_star_rating": { + "type": "STRING", + "string_value": "4.6905" + }, + "app_name": { + "type": "STRING", + "string_value": "YouTube: Watch, Listen, Stream" + }, + "player_width": { + "type": "STRING", + "string_value": "1280" + }, + "player_height": { + "type": "STRING", + "string_value": "720" + }, + "site": { + "type": "USER", + "user_value": { + "id_str": "10228272", + "path": [] + }, + "scribe_key": "publisher_id" + }, + "title": { + "type": "STRING", + "string_value": "John Carmack Receives Honorary Degree" + }, + "player_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402386392576106504\/RsOKbLrG?format=jpg&name=144x144", + "width": 144, + "height": 81 + } + }, + "player_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402386392576106504\/RsOKbLrG?format=jpg&name=280x280", + "width": 280, + "height": 158 + } + }, + "player_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402386392576106504\/RsOKbLrG?format=jpg&name=800x320_1", + "width": 569, + "height": 320 + } + }, + "player_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402386392576106504\/RsOKbLrG?format=png&name=2048x2048_2_exp", + "width": 1280, + "height": 720 + } + }, + "player_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402386392576106504\/RsOKbLrG?format=jpg&name=orig", + "width": 1280, + "height": 720 + } + }, + "card_url": { + "type": "STRING", + "string_value": "https:\/\/t.co\/Oy0W7K1Bqt", + "scribe_key": "card_url" + } + }, + "users": { + "10228272": { + "id_str": "10228272", + "name": "YouTube", + "screen_name": "YouTube", + "location": "San Bruno, CA", + "description": "Like and subscribe.", + "url": "https:\/\/t.co\/qkVaJFk2CG", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/qkVaJFk2CG", + "expanded_url": "https:\/\/www.youtube.com\/", + "display_url": "youtube.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 72825258, + "fast_followers_count": 0, + "normal_followers_count": 72825258, + "friends_count": 1203, + "listed_count": 79217, + "created_at": "Tue Nov 13 21:43:46 +0000 2007", + "favourites_count": 5584, + "verified": true, + "statuses_count": 33927, + "media_count": 12787, + "is_translation_enabled": true, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1398259947847233538\/JXNWY7iv_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/10228272\/1622213815", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "C9191D", + "pinned_tweet_ids": [], + "pinned_tweet_ids_str": [], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "dso", + "dso", + "dso", + "dso", + "dso" + ], + "business_profile_state": "none", + "translator_type": "regular", + "withheld_in_countries": [] + } + }, + "card_platform": { + "platform": { + "device": { + "name": "Swift", + "version": "12" + }, + "audience": { + "name": "production" + } + } + } + }, + "lang": "en" + }, + "1404490074578853894": { + "created_at": "Mon Jun 14 17:25:02 +0000 2021", + "id_str": "1404490074578853894", + "full_text": "Don\u2019t call it a comeback. @ID_AA_Carmack is bringing back his signature app reviews in a new series of recorded videos and written posts. Learn more and submit your app for review: https:\/\/t.co\/HvYie8TQdh", + "display_text_range": [ + 0, + 204 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "ID_AA_Carmack", + "name": "John Carmack", + "id_str": "175624200", + "indices": [ + 26, + 40 + ] + } + ], + "urls": [ + { + "url": "https:\/\/t.co\/HvYie8TQdh", + "expanded_url": "http:\/\/ocul.us\/CarmacksAppReviews", + "display_url": "ocul.us\/CarmacksAppRev\u2026", + "indices": [ + 181, + 204 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "863103045378260992", + "retweet_count": 1, + "favorite_count": 28, + "reply_count": 2, + "quote_count": 1, + "conversation_id_str": "1404490074578853894", + "possibly_sensitive_editable": true, + "lang": "en" + } + }, + "users": { + "175624200": { + "id_str": "175624200", + "name": "John Carmack", + "screen_name": "ID_AA_Carmack", + "location": "Dallas, TX", + "description": "Independent AI researcher,\nConsulting CTO Oculus VR,\nFounder Id Software and Armadillo Aerospace", + "url": "https:\/\/t.co\/c0ndp2bkKs", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/c0ndp2bkKs", + "expanded_url": "http:\/\/www.oculus.com", + "display_url": "oculus.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 916045, + "fast_followers_count": 0, + "normal_followers_count": 916045, + "friends_count": 235, + "listed_count": 6208, + "created_at": "Sat Aug 07 03:40:11 +0000 2010", + "favourites_count": 3527, + "verified": true, + "statuses_count": 14789, + "media_count": 197, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1106497789\/aa_icon_option_2_normal.jpg", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "1DA1F2", + "default_profile": true, + "pinned_tweet_ids": [ + 1296180686215417856 + ], + "pinned_tweet_ids_str": [ + "1296180686215417856" + ], + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "analytics" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + }, + "2913699628": { + "id_str": "2913699628", + "name": "80 LEVEL", + "screen_name": "80Level", + "location": "Los Angeles", + "description": "https:\/\/t.co\/TxSqrhGe2F is the best place for game developers, digital artists, animators, video game enthusiasts, CGI and VFX talents.", + "url": "http:\/\/t.co\/TxSqrhGe2F", + "entities": { + "url": { + "urls": [ + { + "url": "http:\/\/t.co\/TxSqrhGe2F", + "expanded_url": "http:\/\/80.lv", + "display_url": "80.lv", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "https:\/\/t.co\/TxSqrhGe2F", + "expanded_url": "http:\/\/80.lv", + "display_url": "80.lv", + "indices": [ + 0, + 23 + ] + } + ] + } + }, + "followers_count": 79929, + "fast_followers_count": 0, + "normal_followers_count": 79929, + "friends_count": 1595, + "listed_count": 965, + "created_at": "Wed Dec 10 12:06:32 +0000 2014", + "favourites_count": 5721, + "geo_enabled": true, + "verified": true, + "statuses_count": 9831, + "media_count": 8001, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1179033238792093698\/7iZDiQf2_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/2913699628\/1569917503", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "94D487", + "pinned_tweet_ids": [ + 1404482835663183872 + ], + "pinned_tweet_ids_str": [ + "1404482835663183872" + ], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "smb" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + }, + "863103045378260992": { + "id_str": "863103045378260992", + "name": "Oculus Developers", + "screen_name": "Oculus_Dev", + "location": "", + "description": "Oculus developer news and updates, tips and best practices that will assist you throughout your VR development cycle", + "url": "https:\/\/t.co\/moSB2AgtQe", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/moSB2AgtQe", + "expanded_url": "http:\/\/developer.oculus.com", + "display_url": "developer.oculus.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 29101, + "fast_followers_count": 0, + "normal_followers_count": 29101, + "friends_count": 456, + "listed_count": 319, + "created_at": "Fri May 12 18:46:16 +0000 2017", + "favourites_count": 1497, + "geo_enabled": true, + "verified": true, + "statuses_count": 1764, + "media_count": 575, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1267881925538004992\/kzZkVCEf_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/863103045378260992\/1604010321", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "ABB8C2", + "pinned_tweet_ids": [ + 1377337396564422657 + ], + "pinned_tweet_ids_str": [ + "1377337396564422657" + ], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "dso", + "subscription" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + } + }, + "moments": {}, + "cards": {}, + "places": {}, + "media": {}, + "broadcasts": {}, + "topics": { + "731226219002265600": { + "id": "731226219002265600", + "name": "Liverpool FC", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_10.png" + }, + "854701577994616832": { + "id": "854701577994616832", + "name": "Formula 1", + "following": false, + "description": "Racing league", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "898262889378619392": { + "id": "898262889378619392", + "name": "Artificial intelligence", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_07.png" + }, + "1291344241956855808": { + "id": "1291344241956855808", + "name": "Massachusetts Institute of Technology", + "following": false, + "description": "Research university", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_16.png" + }, + "1300480431905673216": { + "id": "1300480431905673216", + "name": "Carnegie Mellon University", + "following": false, + "description": "Research university", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_02.png" + }, + "847900493514891265": { + "id": "847900493514891265", + "name": "Sports", + "following": false, + "description": "All about sports", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "898672147031146496": { + "id": "898672147031146496", + "name": "Augmented reality", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "731226241894752257": { + "id": "731226241894752257", + "name": "Arsenal", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_06.png" + }, + "1070028159964262400": { + "id": "1070028159964262400", + "name": "Video games", + "following": false, + "description": "Gaming", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_14.png" + }, + "733756536430809088": { + "id": "733756536430809088", + "name": "Football", + "following": false, + "description": "Sport", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_11.png" + }, + "1220854205558034432": { + "id": "1220854205558034432", + "name": "Oculus", + "following": false, + "description": "Gaming console", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_06.png" + }, + "849075881653846016": { + "id": "849075881653846016", + "name": "Startups", + "following": false, + "description": "Business & finance", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_10.png" + }, + "1100397500890996736": { + "id": "1100397500890996736", + "name": "Men's national football teams", + "following": false, + "description": "Soccer", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "988798454049652736": { + "id": "988798454049652736", + "name": "Valve Corporation", + "following": false, + "description": "Video game publisher", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_01.png" + }, + "898670051594649601": { + "id": "898670051594649601", + "name": "Virtual reality", + "following": false, + "description": "Technology and computing", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_06.png" + }, + "849075430715936768": { + "id": "849075430715936768", + "name": "Open source", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_06.png" + }, + "898661583827615744": { + "id": "898661583827615744", + "name": "Machine learning", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_08.png" + }, + "731226163788402688": { + "id": "731226163788402688", + "name": "England", + "following": false, + "description": "Men's national soccer team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_02.png" + }, + "1007360414114435072": { + "id": "1007360414114435072", + "name": "Bitcoin cryptocurrency", + "following": false, + "description": "Cryptocurrency", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_09.png" + }, + "1237094778463858688": { + "id": "1237094778463858688", + "name": "FinTech", + "following": false, + "description": "Business & finance", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "733756526872006656": { + "id": "733756526872006656", + "name": "Premier League", + "following": false, + "description": "Soccer league", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_17.png" + }, + "898648511855550464": { + "id": "898648511855550464", + "name": "Cloud platforms", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_01.png" + }, + "1301079398305558529": { + "id": "1301079398305558529", + "name": "No man's sky", + "following": false, + "description": "Video game", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_12.png" + }, + "847894353708068864": { + "id": "847894353708068864", + "name": "Investing", + "following": false, + "description": "Business & finance", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_05.png" + }, + "10045326731": { + "id": "10045326731", + "name": "DOOM", + "following": false, + "description": "Video game", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_12.png" + }, + "731226183572934657": { + "id": "731226183572934657", + "name": "Manchester United", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_07.png" + }, + "1164893579346452483": { + "id": "1164893579346452483", + "name": "Men's boxing", + "following": false, + "description": "Sport", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_16.png" + }, + "1046567715022856192": { + "id": "1046567715022856192", + "name": "Venture capital", + "following": false, + "description": "Business & finance", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_17.png" + }, + "1291673117010534401": { + "id": "1291673117010534401", + "name": "Funny Tweets", + "following": false, + "description": "Tweets making people laugh", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_08.png" + }, + "731226204225708033": { + "id": "731226204225708033", + "name": "Chelsea", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + } + }, + "lists": {} + }, + "timeline": { + "id": "ProfileAll-175624200", + "instructions": [ + { + "addEntries": { + "entries": [ + { + "entryId": "tweet-1404513382238232577", + "sortIndex": "1404513382238232577", + "content": { + "item": { + "content": { + "tweet": { + "id": "1404513382238232577", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1404500471012855808", + "sortIndex": "1404500471012855808", + "content": { + "item": { + "content": { + "tweet": { + "id": "1404500471012855808", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1404500144691859459", + "sortIndex": "1404500144691859459", + "content": { + "item": { + "content": { + "tweet": { + "id": "1404500144691859459", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1404496541969268737", + "sortIndex": "1404496541969268737", + "content": { + "item": { + "content": { + "tweet": { + "id": "1404496541969268737", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1404496150045016072", + "sortIndex": "1404496150045016072", + "content": { + "item": { + "content": { + "tweet": { + "id": "1404496150045016072", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "TopicsModule-1404496150045016071", + "sortIndex": "1404496150045016071", + "content": { + "timelineModule": { + "items": [ + { + "entryId": "1070028159964262400", + "item": { + "content": { + "topic": { + "topicId": "1070028159964262400", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAAAAAAAKAAIO2YDxNlWwAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1873180131" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898670051594649601", + "item": { + "content": { + "topic": { + "topicId": "898670051594649601", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAAAAAAAKAAIMeLemi5TAAQoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1201833728" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1220854205558034432", + "item": { + "content": { + "topic": { + "topicId": "1220854205558034432", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIQ8VhufNQQAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1997357653" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "733756536430809088", + "item": { + "content": { + "topic": { + "topicId": "733756536430809088", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKLtOuqZRQAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1705860764" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "847900493514891265", + "item": { + "content": { + "topic": { + "topicId": "847900493514891265", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAILxFkBqNVgAQoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1380434504" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898672147031146496", + "item": { + "content": { + "topic": { + "topicId": "898672147031146496", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMeLmObVRAAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1896949979" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1046567715022856192", + "item": { + "content": { + "topic": { + "topicId": "1046567715022856192", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIOhifKt1RgAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "935966287" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1291673117010534401", + "item": { + "content": { + "topic": { + "topicId": "1291673117010534401", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIR7PHbOVWgAQoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "306205287" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1291344241956855808", + "item": { + "content": { + "topic": { + "topicId": "1291344241956855808", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIR68a/CJWgAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-2120497719" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226163788402688", + "item": { + "content": { + "topic": { + "topicId": "731226163788402688", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZSXxRQAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1727926307" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1301079398305558529", + "item": { + "content": { + "topic": { + "topicId": "1301079398305558529", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAISDlzRwJTwAQoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1102295470" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1100397500890996736", + "item": { + "content": { + "topic": { + "topicId": "1100397500890996736", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIPRWWyaFXgAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1061548516" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "849075881653846016", + "item": { + "content": { + "topic": { + "topicId": "849075881653846016", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAILyIYECVRAAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1928365984" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "849075430715936768", + "item": { + "content": { + "topic": { + "topicId": "849075430715936768", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAILyIWbC1XQAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "984739231" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226183572934657", + "item": { + "content": { + "topic": { + "topicId": "731226183572934657", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZW+lRQAQoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1409041390" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "988798454049652736", + "item": { + "content": { + "topic": { + "topicId": "988798454049652736", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAINuOr0gBXAAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1117731496" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1007360414114435072", + "item": { + "content": { + "topic": { + "topicId": "1007360414114435072", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIN+tz1nBTQAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-69557615" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898661583827615744", + "item": { + "content": { + "topic": { + "topicId": "898661583827615744", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMeK/y/VXAAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "350597429" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "733756526872006656", + "item": { + "content": { + "topic": { + "topicId": "733756526872006656", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKLtOsb9SQAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "911793610" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1237094778463858688", + "item": { + "content": { + "topic": { + "topicId": "1237094778463858688", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIRKwslh9QwAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "694238984" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "854701577994616832", + "item": { + "content": { + "topic": { + "topicId": "854701577994616832", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIL3IKOiVXAAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1850786315" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "10045326731", + "item": { + "content": { + "topic": { + "topicId": "10045326731", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIAAAACVr+FiwoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-919270680" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226219002265600", + "item": { + "content": { + "topic": { + "topicId": "731226219002265600", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZfOhUAAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-815937283" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898648511855550464", + "item": { + "content": { + "topic": { + "topicId": "898648511855550464", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMeKQPbxVgAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1346370287" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226241894752257", + "item": { + "content": { + "topic": { + "topicId": "731226241894752257", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZkjpSgAQoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-862734977" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1300480431905673216", + "item": { + "content": { + "topic": { + "topicId": "1300480431905673216", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAISDDwQBRWQAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1712944677" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226204225708033", + "item": { + "content": { + "topic": { + "topicId": "731226204225708033", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZbyVSgAQoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1460394955" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "847894353708068864", + "item": { + "content": { + "topic": { + "topicId": "847894353708068864", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAILxFNsH9QwAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-950349671" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898262889378619392", + "item": { + "content": { + "topic": { + "topicId": "898262889378619392", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMd0VWtFQgAAoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1927471410" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1164893579346452483", + "item": { + "content": { + "topic": { + "topicId": "1164893579346452483", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIQKoiJ3hQgAwoAA/ZnJhpMe7egAAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "287709570" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + } + ], + "displayType": "GridCarousel", + "header": { + "text": "Topics to follow", + "sticky": false, + "socialContext": { + "generalContext": { + "contextType": "Topic", + "text": "Sign up to get Tweets about the Topics you follow in your Home timeline." + } + } + }, + "clientEventInfo": { + "component": "suggest_topics_module" + }, + "metadata": { + "gridCarouselMetadata": { + "numRows": 3 + } + } + } + } + }, + { + "entryId": "tweet-1404469358269767682", + "sortIndex": "1404469358269767682", + "content": { + "item": { + "content": { + "tweet": { + "id": "1404469358269767682", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1404309950386610181", + "sortIndex": "1404309950386610181", + "content": { + "item": { + "content": { + "tweet": { + "id": "1404309950386610181", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403555349190352897", + "sortIndex": "1403555349190352897", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403555349190352897", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403554973300973569", + "sortIndex": "1403554973300973569", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403554973300973569", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403527704473972744", + "sortIndex": "1403527704473972744", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403527704473972744", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403513985912164353", + "sortIndex": "1403513985912164353", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403513985912164353", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403427901438107653", + "sortIndex": "1403427901438107653", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403427901438107653", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403422554040279049", + "sortIndex": "1403422554040279049", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403422554040279049", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403378126751678464", + "sortIndex": "1403378126751678464", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403378126751678464", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403376751863123969", + "sortIndex": "1403376751863123969", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403376751863123969", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403248024361517057", + "sortIndex": "1403248024361517057", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403248024361517057", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403247773252734978", + "sortIndex": "1403247773252734978", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403247773252734978", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403201368165425158", + "sortIndex": "1403201368165425158", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403201368165425158", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "cursor-top-1404555177297444865", + "sortIndex": "1404555177297444865", + "content": { + "operation": { + "cursor": { + "value": "HCaAgICkv9/9/SYAAA==", + "cursorType": "Top" + } + } + } + }, + { + "entryId": "cursor-bottom-1403201368165425157", + "sortIndex": "1403201368165425157", + "content": { + "operation": { + "cursor": { + "value": "HBaMgL2dt42W+SYAAA==", + "cursorType": "Bottom", + "stopOnEmptyResponse": true + } + } + } + } + ] + } + }, + { + "pinEntry": { + "entry": { + "entryId": "tweet-1296180686215417856", + "sortIndex": "1404555177293250560", + "content": { + "item": { + "content": { + "tweet": { + "id": "1296180686215417856", + "displayType": "Tweet", + "socialContext": { + "generalContext": { + "contextType": "Pin", + "text": "Pinned Tweet" + } + } + } + }, + "clientEventInfo": { + "component": "suggest_pinned_tweet", + "details": { + "timelinesDetails": { + "injectionType": "PinnedTweet" + } + } + } + } + } + } + } + } + ], + "responseObjects": { + "feedbackActions": { + "911793610": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "733756526872006656" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1460394955": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226204225708033" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1873180131": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1070028159964262400" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1061548516": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1100397500890996736" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1712944677": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1300480431905673216" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "984739231": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "849075430715936768" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "350597429": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898661583827615744" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "287709570": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1164893579346452483" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1927471410": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898262889378619392" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1102295470": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1301079398305558529" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1117731496": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "988798454049652736" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "694238984": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1237094778463858688" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1346370287": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898648511855550464" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1409041390": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226183572934657" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-919270680": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "10045326731" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1896949979": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898672147031146496" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "306205287": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1291673117010534401" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "935966287": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1046567715022856192" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1201833728": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898670051594649601" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-69557615": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1007360414114435072" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1705860764": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "733756536430809088" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-815937283": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226219002265600" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1727926307": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226163788402688" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-862734977": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226241894752257" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1928365984": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "849075881653846016" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-950349671": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "847894353708068864" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-2120497719": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1291344241956855808" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1997357653": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1220854205558034432" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1850786315": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "854701577994616832" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1380434504": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "847900493514891265" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + } + } + } + } +} \ No newline at end of file diff --git a/test/tweets-carmack.json b/test/tweets-carmack.json new file mode 100644 index 00000000..e57dbb44 --- /dev/null +++ b/test/tweets-carmack.json @@ -0,0 +1,3858 @@ +{ + "globalObjects": { + "tweets": { + "1399949153547993088": { + "created_at": "Wed Jun 02 04:41:02 +0000 2021", + "id_str": "1399949153547993088", + "full_text": "getting into the datacenter networking space, I could see it being a strong play for them, although it would be nice to also work on conventional home systems as well. For maximum win you want the bulk of the rendering effort in the final pass, rather than having it be a cheap \\", + "display_text_range": [ + 0, + 279 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1399949152545611778", + "in_reply_to_user_id_str": "175624200", + "in_reply_to_screen_name": "ID_AA_Carmack", + "user_id_str": "175624200", + "retweet_count": 3, + "favorite_count": 60, + "reply_count": 1, + "quote_count": 0, + "conversation_id_str": "1399949152545611778", + "lang": "en", + "self_thread": { + "id_str": "1399949152545611778" + } + }, + "1403201368165425158": { + "created_at": "Fri Jun 11 04:04:11 +0000 2021", + "id_str": "1403201368165425158", + "full_text": "Flawless graphics is not the appeal of Minecraft, but the pixel cracks and depth fighting on held items bugs me. Not sure if they both derive from a mesh optimization issue, or if there is also a failure to use invariant calculations for multi-pass. https:\/\/t.co\/bXu1tHATq7", + "display_text_range": [ + 0, + 249 + ], + "entities": { + "media": [ + { + "id_str": "1403201291329970176", + "indices": [ + 250, + 273 + ], + "media_url": "http:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "url": "https:\/\/t.co\/bXu1tHATq7", + "display_url": "pic.twitter.com\/bXu1tHATq7", + "expanded_url": "https:\/\/twitter.com\/ID_AA_Carmack\/status\/1403201368165425158\/photo\/1", + "type": "photo", + "original_info": { + "width": 912, + "height": 914, + "focus_rects": [ + { + "x": 0, + "y": 403, + "h": 511, + "w": 912 + }, + { + "x": 0, + "y": 2, + "h": 912, + "w": 912 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 802 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 457 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 912 + } + ] + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 912, + "h": 914, + "resize": "fit" + }, + "small": { + "w": 679, + "h": 680, + "resize": "fit" + }, + "medium": { + "w": 912, + "h": 914, + "resize": "fit" + } + } + } + ] + }, + "extended_entities": { + "media": [ + { + "id_str": "1403201291329970176", + "indices": [ + 250, + 273 + ], + "media_url": "http:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "media_url_https": "https:\/\/pbs.twimg.com\/media\/E3ksI9YXoAAlOxD.jpg", + "url": "https:\/\/t.co\/bXu1tHATq7", + "display_url": "pic.twitter.com\/bXu1tHATq7", + "expanded_url": "https:\/\/twitter.com\/ID_AA_Carmack\/status\/1403201368165425158\/photo\/1", + "type": "photo", + "original_info": { + "width": 912, + "height": 914, + "focus_rects": [ + { + "x": 0, + "y": 403, + "h": 511, + "w": 912 + }, + { + "x": 0, + "y": 2, + "h": 912, + "w": 912 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 802 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 457 + }, + { + "x": 0, + "y": 0, + "h": 914, + "w": 912 + } + ] + }, + "sizes": { + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 912, + "h": 914, + "resize": "fit" + }, + "small": { + "w": 679, + "h": 680, + "resize": "fit" + }, + "medium": { + "w": 912, + "h": 914, + "resize": "fit" + } + }, + "media_key": "3_1403201291329970176", + "ext_media_availability": { + "status": "available" + }, + "ext_alt_text": null, + "ext": { + "mediaStats": { + "r": "Missing", + "ttl": -1 + } + } + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 22, + "favorite_count": 402, + "reply_count": 37, + "quote_count": 4, + "conversation_id_str": "1403201368165425158", + "possibly_sensitive_editable": true, + "lang": "en" + }, + "1399722752047730691": { + "created_at": "Tue Jun 01 13:41:24 +0000 2021", + "id_str": "1399722752047730691", + "full_text": "State of the art computer graphics from 35 years ago. I remember stills from many of these clips in old books, but I never saw most of them in motion. All done on computers millions of times slower than today.", + "display_text_range": [ + 0, + 209 + ], + "entities": {}, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "user_id_str": "175624200", + "is_quote_status": true, + "quoted_status_id_str": "1399682134630076422", + "quoted_status_permalink": { + "url": "https:\/\/t.co\/vyF2YWgQRb", + "expanded": "https:\/\/twitter.com\/pbwinston\/status\/1399682134630076422", + "display": "twitter.com\/pbwinston\/stat\u2026" + }, + "retweet_count": 54, + "favorite_count": 439, + "reply_count": 23, + "quote_count": 4, + "conversation_id_str": "1399722752047730691", + "lang": "en" + }, + "1399949152545611778": { + "created_at": "Wed Jun 02 04:41:02 +0000 2021", + "id_str": "1399949152545611778", + "full_text": "Tile based rasterization on PC GPUs (https:\/\/t.co\/GaZ9mu8kzZ) offers the possibility of very efficiently overlapping video compression and network traffic with frame rendering on a tile basis, which could be significant for cloud\/remote rendering latency. Especially with Nvidia \\", + "display_text_range": [ + 0, + 280 + ], + "entities": { + "urls": [ + { + "url": "https:\/\/t.co\/GaZ9mu8kzZ", + "expanded_url": "https:\/\/www.realworldtech.com\/tile-based-rasterization-nvidia-gpus\/", + "display_url": "realworldtech.com\/tile-based-ras\u2026", + "indices": [ + 37, + 60 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 16, + "favorite_count": 196, + "reply_count": 7, + "quote_count": 0, + "conversation_id_str": "1399949152545611778", + "possibly_sensitive_editable": true, + "lang": "en", + "self_thread": { + "id_str": "1399949152545611778" + } + }, + "1400683014229839874": { + "created_at": "Fri Jun 04 05:17:08 +0000 2021", + "id_str": "1400683014229839874", + "full_text": "Doing some work with perceptual image hashes made me run an interesting calculation: a 64 bit number could easily index every still image ever made, but millions of security cameras have probably pushed the total of created video frames beyond 64 bits.", + "display_text_range": [ + 0, + 252 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 25, + "favorite_count": 396, + "reply_count": 18, + "quote_count": 2, + "conversation_id_str": "1400683014229839874", + "lang": "en" + }, + "1400930510671601666": { + "created_at": "Fri Jun 04 21:40:36 +0000 2021", + "id_str": "1400930510671601666", + "full_text": "The vast majority of images are jpegs, which are internally 420 YUV, but they get converted to 32 bit RGB for use in apps. Using native YUV formats would save half the memory and rendering bandwidth, speed loading, and provide a tiny quality improvement. It would also be \\", + "display_text_range": [ + 0, + 274 + ], + "entities": {}, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 130, + "favorite_count": 1009, + "reply_count": 25, + "quote_count": 50, + "conversation_id_str": "1400930510671601666", + "lang": "en", + "self_thread": { + "id_str": "1400930510671601666" + } + }, + "1402046370501046277": { + "created_at": "Mon Jun 07 23:34:38 +0000 2021", + "id_str": "1402046370501046277", + "full_text": "Bezos is definitely taking a non-trivial risk here -- 15 successful test flights of a novel suborbital vehicle backed by all the analysis money can buy, still isn't going to give high confidence of even 99.9% survivability.\nhttps:\/\/t.co\/GwVE3L4qJl", + "display_text_range": [ + 0, + 247 + ], + "entities": { + "urls": [ + { + "url": "https:\/\/t.co\/GwVE3L4qJl", + "expanded_url": "https:\/\/apnews.com\/article\/technology-business-9ac5c4668d9ff8d209889ca089572571", + "display_url": "apnews.com\/article\/techno\u2026", + "indices": [ + 224, + 247 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 74, + "favorite_count": 1176, + "reply_count": 90, + "quote_count": 23, + "conversation_id_str": "1402046370501046277", + "possibly_sensitive_editable": true, + "card": { + "name": "summary_large_image", + "url": "https:\/\/t.co\/GwVE3L4qJl", + "card_type_url": "http:\/\/card-type-url-is-deprecated.invalid", + "binding_values": { + "vanity_url": { + "type": "STRING", + "string_value": "apnews.com", + "scribe_key": "vanity_url" + }, + "domain": { + "type": "STRING", + "string_value": "apnews.com" + }, + "site": { + "type": "USER", + "user_value": { + "id_str": "51241574", + "path": [] + }, + "scribe_key": "publisher_id" + }, + "title": { + "type": "STRING", + "string_value": "Bezos plans to go to space aboard Blue Origin flight in July" + }, + "description": { + "type": "STRING", + "string_value": "Jeff Bezos will be aboard for Blue Origin's first human space flight next month. In an Instagram post early Monday, Bezos said he, his brother, and the winner of an ongoing auction, will be aboard..." + }, + "thumbnail_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=100x100", + "width": 100, + "height": 66 + } + }, + "thumbnail_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=280x150", + "width": 226, + "height": 150 + } + }, + "thumbnail_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=800x320_1", + "width": 482, + "height": 320 + } + }, + "thumbnail_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=png&name=2048x2048_2_exp", + "width": 2048, + "height": 1359 + } + }, + "thumbnail_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=orig", + "width": 3000, + "height": 1991 + } + }, + "summary_photo_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=386x202", + "width": 386, + "height": 202 + } + }, + "summary_photo_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=600x314", + "width": 600, + "height": 314 + } + }, + "summary_photo_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=800x419", + "width": 800, + "height": 419 + } + }, + "summary_photo_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=png&name=2048x2048_2_exp", + "width": 2048, + "height": 1359 + } + }, + "summary_photo_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=orig", + "width": 3000, + "height": 1991 + } + }, + "photo_image_full_size_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=386x202", + "width": 386, + "height": 202 + } + }, + "photo_image_full_size": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=600x314", + "width": 600, + "height": 314 + } + }, + "photo_image_full_size_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=800x419", + "width": 800, + "height": 419 + } + }, + "photo_image_full_size_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=png&name=2048x2048_2_exp", + "width": 2048, + "height": 1359 + } + }, + "photo_image_full_size_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1401875945615671298\/SfnNlpnM?format=jpg&name=orig", + "width": 3000, + "height": 1991 + } + }, + "card_url": { + "type": "STRING", + "string_value": "https:\/\/t.co\/GwVE3L4qJl", + "scribe_key": "card_url" + } + }, + "users": { + "51241574": { + "id_str": "51241574", + "name": "The Associated Press", + "screen_name": "AP", + "location": "Global", + "description": "News from The Associated Press, and a taste of the great journalism produced by AP members and customers.", + "url": "https:\/\/t.co\/48pFaJVRcr", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/48pFaJVRcr", + "expanded_url": "https:\/\/apnews.com\/", + "display_url": "apnews.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 15158966, + "fast_followers_count": 0, + "normal_followers_count": 15158966, + "friends_count": 6878, + "listed_count": 100303, + "created_at": "Fri Jun 26 21:48:52 +0000 2009", + "favourites_count": 3371, + "verified": true, + "statuses_count": 292431, + "media_count": 5281, + "is_translation_enabled": true, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/461964160838803457\/8z9FImcv_normal.png", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/51241574\/1605555656", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "CC3300", + "pinned_tweet_ids": [], + "pinned_tweet_ids_str": [], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "dso", + "mms", + "media_studio" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + } + }, + "card_platform": { + "platform": { + "device": { + "name": "Swift", + "version": "12" + }, + "audience": { + "name": "production" + } + } + } + }, + "lang": "en", + "self_thread": { + "id_str": "1402046370501046277" + } + }, + "1399682134630076422": { + "created_at": "Tue Jun 01 11:00:00 +0000 2021", + "id_str": "1399682134630076422", + "full_text": "What's new in Computer Graphics, from 1986! https:\/\/t.co\/2Mn56ENvYK @ID_AA_Carmack", + "display_text_range": [ + 0, + 82 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "ID_AA_Carmack", + "name": "John Carmack", + "id_str": "175624200", + "indices": [ + 68, + 82 + ] + } + ], + "urls": [ + { + "url": "https:\/\/t.co\/2Mn56ENvYK", + "expanded_url": "https:\/\/youtu.be\/Z2IaFCCyed4", + "display_url": "youtu.be\/Z2IaFCCyed4", + "indices": [ + 44, + 67 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "430965753", + "retweet_count": 60, + "favorite_count": 253, + "reply_count": 7, + "quote_count": 8, + "conversation_id_str": "1399682134630076422", + "possibly_sensitive_editable": true, + "card": { + "name": "player", + "url": "https:\/\/t.co\/2Mn56ENvYK", + "card_type_url": "http:\/\/card-type-url-is-deprecated.invalid", + "binding_values": { + "vanity_url": { + "type": "STRING", + "string_value": "youtube.com", + "scribe_key": "vanity_url" + }, + "player_url": { + "type": "STRING", + "string_value": "https:\/\/www.youtube.com\/embed\/Z2IaFCCyed4" + }, + "app_is_free": { + "type": "STRING", + "string_value": "true" + }, + "app_price_currency": { + "type": "STRING", + "string_value": "USD" + }, + "app_price_amount": { + "type": "STRING", + "string_value": "0.0" + }, + "domain": { + "type": "STRING", + "string_value": "www.youtube.com" + }, + "app_num_ratings": { + "type": "STRING", + "string_value": "20,812,194" + }, + "app_star_rating": { + "type": "STRING", + "string_value": "4.69061" + }, + "app_name": { + "type": "STRING", + "string_value": "YouTube: Watch, Listen, Stream" + }, + "player_width": { + "type": "STRING", + "string_value": "960" + }, + "player_height": { + "type": "STRING", + "string_value": "720" + }, + "site": { + "type": "USER", + "user_value": { + "id_str": "10228272", + "path": [] + }, + "scribe_key": "publisher_id" + }, + "title": { + "type": "STRING", + "string_value": "Computer Graphics Special (1986 High Quality 60FPS Laserdisc CG Demo..." + }, + "description": { + "type": "STRING", + "string_value": "This is the 1986 Laserdisc \"Computer Graphics Special\" (SS098-6022) which is a very early CG demonstration disc with behind-the-scenes video & some very inte..." + }, + "player_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402989782490247168\/dNKaWbWI?format=jpg&name=144x144", + "width": 144, + "height": 81 + } + }, + "player_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402989782490247168\/dNKaWbWI?format=jpg&name=280x280", + "width": 280, + "height": 158 + } + }, + "player_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402989782490247168\/dNKaWbWI?format=jpg&name=800x320_1", + "width": 569, + "height": 320 + } + }, + "player_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402989782490247168\/dNKaWbWI?format=png&name=2048x2048_2_exp", + "width": 1280, + "height": 720 + } + }, + "player_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402989782490247168\/dNKaWbWI?format=jpg&name=orig", + "width": 1280, + "height": 720 + } + }, + "card_url": { + "type": "STRING", + "string_value": "https:\/\/t.co\/2Mn56ENvYK", + "scribe_key": "card_url" + } + }, + "users": { + "10228272": { + "id_str": "10228272", + "name": "YouTube", + "screen_name": "YouTube", + "location": "San Bruno, CA", + "description": "Like and subscribe.", + "url": "https:\/\/t.co\/qkVaJFk2CG", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/qkVaJFk2CG", + "expanded_url": "https:\/\/www.youtube.com\/", + "display_url": "youtube.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 72822914, + "fast_followers_count": 0, + "normal_followers_count": 72822914, + "friends_count": 1203, + "listed_count": 79217, + "created_at": "Tue Nov 13 21:43:46 +0000 2007", + "favourites_count": 5576, + "verified": true, + "statuses_count": 33827, + "media_count": 12759, + "is_translation_enabled": true, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1398259947847233538\/JXNWY7iv_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/10228272\/1622213815", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "C9191D", + "pinned_tweet_ids": [], + "pinned_tweet_ids_str": [], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "dso", + "dso", + "dso", + "dso", + "dso" + ], + "business_profile_state": "none", + "translator_type": "regular", + "withheld_in_countries": [] + } + }, + "card_platform": { + "platform": { + "device": { + "name": "Swift", + "version": "12" + }, + "audience": { + "name": "production" + } + } + } + }, + "lang": "en" + }, + "1399584217030348803": { + "created_at": "Tue Jun 01 04:30:55 +0000 2021", + "id_str": "1399584217030348803", + "full_text": "Has there been any notable work with Gym Retro since the original OpenAI contest? https:\/\/t.co\/ZBwIGD2eaw", + "display_text_range": [ + 0, + 105 + ], + "entities": { + "urls": [ + { + "url": "https:\/\/t.co\/ZBwIGD2eaw", + "expanded_url": "https:\/\/openai.com\/blog\/first-retro-contest-retrospective\/", + "display_url": "openai.com\/blog\/first-ret\u2026", + "indices": [ + 82, + 105 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 5, + "favorite_count": 108, + "reply_count": 5, + "quote_count": 0, + "conversation_id_str": "1399584217030348803", + "possibly_sensitive_editable": true, + "card": { + "name": "summary_large_image", + "url": "https:\/\/t.co\/ZBwIGD2eaw", + "card_type_url": "http:\/\/card-type-url-is-deprecated.invalid", + "binding_values": { + "vanity_url": { + "type": "STRING", + "string_value": "openai.com", + "scribe_key": "vanity_url" + }, + "domain": { + "type": "STRING", + "string_value": "openai.com" + }, + "site": { + "type": "USER", + "user_value": { + "id_str": "4398626122", + "path": [] + }, + "scribe_key": "publisher_id" + }, + "title": { + "type": "STRING", + "string_value": "Retro Contest: Results" + }, + "description": { + "type": "STRING", + "string_value": "The first run of our Retro Contest\u2014exploring the development of algorithms that can generalize from previous experience\u2014is now complete. Though many approaches were tried, top results all came from..." + }, + "thumbnail_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=100x100", + "width": 100, + "height": 84 + } + }, + "thumbnail_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=280x150", + "width": 178, + "height": 150 + } + }, + "thumbnail_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=800x320_1", + "width": 379, + "height": 320 + } + }, + "thumbnail_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=2048x2048_2_exp", + "width": 642, + "height": 542 + } + }, + "thumbnail_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=orig", + "width": 642, + "height": 542 + } + }, + "summary_photo_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=386x202", + "width": 386, + "height": 202 + } + }, + "summary_photo_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=600x314", + "width": 600, + "height": 314 + } + }, + "summary_photo_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=800x419", + "width": 642, + "height": 336 + } + }, + "summary_photo_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=2048x2048_2_exp", + "width": 642, + "height": 542 + } + }, + "summary_photo_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=orig", + "width": 642, + "height": 542 + } + }, + "photo_image_full_size_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=386x202", + "width": 386, + "height": 202 + } + }, + "photo_image_full_size": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=600x314", + "width": 600, + "height": 314 + } + }, + "photo_image_full_size_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=800x419", + "width": 642, + "height": 336 + } + }, + "photo_image_full_size_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=2048x2048_2_exp", + "width": 642, + "height": 542 + } + }, + "photo_image_full_size_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1402155512590868505\/YBqP6zhl?format=png&name=orig", + "width": 642, + "height": 542 + } + }, + "card_url": { + "type": "STRING", + "string_value": "https:\/\/t.co\/ZBwIGD2eaw", + "scribe_key": "card_url" + } + }, + "users": { + "4398626122": { + "id_str": "4398626122", + "name": "OpenAI", + "screen_name": "OpenAI", + "location": "", + "description": "OpenAI\u2019s mission is to ensure that artificial general intelligence benefits all of humanity. We\u2019re hiring: https:\/\/t.co\/XxM7UoAwz9", + "url": "https:\/\/t.co\/KYLbA8TmsC", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/KYLbA8TmsC", + "expanded_url": "https:\/\/openai.com", + "display_url": "openai.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "https:\/\/t.co\/XxM7UoAwz9", + "expanded_url": "http:\/\/openai.com\/jobs", + "display_url": "openai.com\/jobs", + "indices": [ + 107, + 130 + ] + } + ] + } + }, + "followers_count": 576195, + "fast_followers_count": 0, + "normal_followers_count": 576195, + "friends_count": 0, + "listed_count": 5635, + "created_at": "Sun Dec 06 22:51:08 +0000 2015", + "favourites_count": 387, + "verified": true, + "statuses_count": 499, + "media_count": 91, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1002240475556823040\/lb_Q04CY_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/4398626122\/1611774817", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "1DA1F2", + "default_profile": true, + "pinned_tweet_ids": [], + "pinned_tweet_ids_str": [], + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "analytics" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + } + }, + "card_platform": { + "platform": { + "device": { + "name": "Swift", + "version": "12" + }, + "audience": { + "name": "production" + } + } + } + }, + "lang": "en" + }, + "1402050538510897158": { + "created_at": "Mon Jun 07 23:51:11 +0000 2021", + "id_str": "1402050538510897158", + "full_text": "I'm all for people taking informed risks. This is probably less risky today than taking up wingsuiting, and it should eventually get to the level of skydiving.", + "display_text_range": [ + 0, + 160 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1402046370501046277", + "in_reply_to_user_id_str": "175624200", + "in_reply_to_screen_name": "ID_AA_Carmack", + "user_id_str": "175624200", + "retweet_count": 6, + "favorite_count": 311, + "reply_count": 14, + "quote_count": 1, + "conversation_id_str": "1402046370501046277", + "lang": "en", + "self_thread": { + "id_str": "1402046370501046277" + } + }, + "1399949154412118029": { + "created_at": "Wed Jun 02 04:41:02 +0000 2021", + "id_str": "1399949154412118029", + "full_text": "postprocess. A \"smart monitor\" that could do direct block pixel writes from a codec could wind up with some cloud app latencies lower than today's desktops.", + "display_text_range": [ + 0, + 156 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "in_reply_to_status_id_str": "1399949153547993088", + "in_reply_to_user_id_str": "175624200", + "in_reply_to_screen_name": "ID_AA_Carmack", + "user_id_str": "175624200", + "retweet_count": 5, + "favorite_count": 87, + "reply_count": 7, + "quote_count": 0, + "conversation_id_str": "1399949152545611778", + "lang": "en", + "self_thread": { + "id_str": "1399949152545611778" + } + }, + "1402496694940536834": { + "created_at": "Wed Jun 09 05:24:03 +0000 2021", + "id_str": "1402496694940536834", + "full_text": "Much is made of the serendipity of proximity in Silicon Valley. A while back there was a loose collection of companies sometimes referred to as the \"Dallas Gaming Mafia\". In hindsight, I could have been a more positive force if I got out of hermit mode and socialized some.", + "display_text_range": [ + 0, + 273 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 19, + "favorite_count": 601, + "reply_count": 26, + "quote_count": 1, + "conversation_id_str": "1402496694940536834", + "lang": "en" + }, + "1398368382412410882": { + "created_at": "Fri May 28 19:59:37 +0000 2021", + "id_str": "1398368382412410882", + "full_text": "\ud83d\udce3ON SALE: Tix for 6\/23 @internetarchive fundraiser Game Not Over! featuring fireside chat w\/ @ID_AA_Carmack & panelists @kitchengarry @kelslewin @katewillaert. Hosted by our own @textfiles. \n\ud83c\udfaeSupport software preservation & universal access to knowledge! https:\/\/t.co\/CwegP6f1Bi", + "display_text_range": [ + 0, + 286 + ], + "entities": { + "user_mentions": [ + { + "screen_name": "internetarchive", + "name": "Internet Archive", + "id_str": "18957805", + "indices": [ + 23, + 39 + ] + }, + { + "screen_name": "ID_AA_Carmack", + "name": "John Carmack", + "id_str": "175624200", + "indices": [ + 93, + 107 + ] + }, + { + "screen_name": "kitchengarry", + "name": "Garry Kitchen", + "id_str": "593834225", + "indices": [ + 124, + 137 + ] + }, + { + "screen_name": "kelslewin", + "name": "kelsey lewin", + "id_str": "1565827656", + "indices": [ + 138, + 148 + ] + }, + { + "screen_name": "katewillaert", + "name": "\"Critical Kate\" Will\u00e6rt \ud83e\udd18\ud83c\udffb", + "id_str": "60245374", + "indices": [ + 149, + 162 + ] + }, + { + "screen_name": "textfiles", + "name": "Jason Scott", + "id_str": "1465481", + "indices": [ + 182, + 192 + ] + } + ], + "urls": [ + { + "url": "https:\/\/t.co\/CwegP6f1Bi", + "expanded_url": "https:\/\/internet-archive-game-not-over.eventbrite.com", + "display_url": "\u2026-archive-game-not-over.eventbrite.com", + "indices": [ + 263, + 286 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "18957805", + "retweet_count": 21, + "favorite_count": 107, + "reply_count": 0, + "quote_count": 3, + "conversation_id_str": "1398368382412410882", + "possibly_sensitive_editable": true, + "card": { + "name": "summary_large_image", + "url": "https:\/\/t.co\/CwegP6f1Bi", + "card_type_url": "http:\/\/card-type-url-is-deprecated.invalid", + "binding_values": { + "vanity_url": { + "type": "STRING", + "string_value": "eventbrite.com", + "scribe_key": "vanity_url" + }, + "app_is_free": { + "type": "STRING", + "string_value": "true" + }, + "app_price_currency": { + "type": "STRING", + "string_value": "USD" + }, + "app_price_amount": { + "type": "STRING", + "string_value": "0.0" + }, + "domain": { + "type": "STRING", + "string_value": "www.eventbrite.com" + }, + "app_num_ratings": { + "type": "STRING", + "string_value": "389,109" + }, + "app_star_rating": { + "type": "STRING", + "string_value": "4.86211" + }, + "app_name": { + "type": "STRING", + "string_value": "Eventbrite" + }, + "site": { + "type": "USER", + "user_value": { + "id_str": "5625972", + "path": [] + }, + "scribe_key": "publisher_id" + }, + "title": { + "type": "STRING", + "string_value": "Game Not Over! A Fireside Chat With John Carmack" + }, + "description": { + "type": "STRING", + "string_value": "Virtual fireside chat with John Carmack + panel discussion with Garry Kitchen, Kelsey Lewin, Kate Will\u00e6rt and Jason Scott" + }, + "thumbnail_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=144x144", + "width": 144, + "height": 72 + } + }, + "thumbnail_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=400x400", + "width": 400, + "height": 200 + } + }, + "thumbnail_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=600x600", + "width": 600, + "height": 300 + } + }, + "thumbnail_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=png&name=2048x2048_2_exp", + "width": 1000, + "height": 500 + } + }, + "thumbnail_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=orig", + "width": 1000, + "height": 500 + } + }, + "summary_photo_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=386x202", + "width": 386, + "height": 202 + } + }, + "summary_photo_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=600x314", + "width": 600, + "height": 314 + } + }, + "summary_photo_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=800x419", + "width": 800, + "height": 419 + } + }, + "summary_photo_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=png&name=2048x2048_2_exp", + "width": 1000, + "height": 500 + } + }, + "summary_photo_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=orig", + "width": 1000, + "height": 500 + } + }, + "photo_image_full_size_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=386x202", + "width": 386, + "height": 202 + } + }, + "photo_image_full_size": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=600x314", + "width": 600, + "height": 314 + } + }, + "photo_image_full_size_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=800x419", + "width": 800, + "height": 419 + } + }, + "photo_image_full_size_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=png&name=2048x2048_2_exp", + "width": 1000, + "height": 500 + } + }, + "photo_image_full_size_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400838572475924481\/jNeoo8Ma?format=jpg&name=orig", + "width": 1000, + "height": 500 + } + }, + "card_url": { + "type": "STRING", + "string_value": "https:\/\/t.co\/CwegP6f1Bi", + "scribe_key": "card_url" + } + }, + "users": { + "5625972": { + "id_str": "5625972", + "name": "Eventbrite", + "screen_name": "eventbrite", + "location": "San Francisco, CA", + "description": "A global platform that allows anyone to create, share, find and attend events that fuel their passions. Tweet @EventbriteHelp for support.", + "url": "https:\/\/t.co\/eMkeQa65LH", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/eMkeQa65LH", + "expanded_url": "https:\/\/eventbrite.com", + "display_url": "eventbrite.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 271236, + "fast_followers_count": 0, + "normal_followers_count": 271236, + "friends_count": 38474, + "listed_count": 3551, + "created_at": "Sun Apr 29 07:04:09 +0000 2007", + "favourites_count": 24266, + "geo_enabled": true, + "verified": true, + "statuses_count": 41734, + "media_count": 12581, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1138511131482345473\/7hMdWJFQ_normal.png", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/5625972\/1622651080", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "EE6700", + "pinned_tweet_ids": [], + "pinned_tweet_ids_str": [], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "dso", + "subscription" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + } + }, + "card_platform": { + "platform": { + "device": { + "name": "Swift", + "version": "12" + }, + "audience": { + "name": "production" + } + } + } + }, + "lang": "en" + }, + "1403078945847660545": { + "created_at": "Thu Jun 10 19:57:43 +0000 2021", + "id_str": "1403078945847660545", + "full_text": "I wonder how a completely transparent, cache-only consumer file system backed by something like Dropbox would work out as an intermediate step between local and cloud hosted apps. Tiny SSD drives could feel unlimited, and the de-duplication benefits on the back end would be huge.", + "display_text_range": [ + 0, + 280 + ], + "entities": {}, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 13, + "favorite_count": 204, + "reply_count": 40, + "quote_count": 0, + "conversation_id_str": "1403078945847660545", + "lang": "en" + }, + "1400930514073182208": { + "created_at": "Fri Jun 04 21:40:37 +0000 2021", + "id_str": "1400930514073182208", + "full_text": "external image support on Android could make it much more of a drop-in. Even doing it the hard way seems like it would be worthwhile for web browsers today.", + "display_text_range": [ + 0, + 156 + ], + "entities": {}, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "in_reply_to_status_id_str": "1400930512491909121", + "in_reply_to_user_id_str": "175624200", + "in_reply_to_screen_name": "ID_AA_Carmack", + "user_id_str": "175624200", + "retweet_count": 5, + "favorite_count": 291, + "reply_count": 16, + "quote_count": 1, + "conversation_id_str": "1400930510671601666", + "lang": "en", + "self_thread": { + "id_str": "1400930510671601666" + } + }, + "1399827603654066187": { + "created_at": "Tue Jun 01 20:38:02 +0000 2021", + "id_str": "1399827603654066187", + "full_text": "On top of my recurring monthly donation, I volunteered to let the Internet Archive exploit me for their fundraiser. Save it all.", + "display_text_range": [ + 0, + 128 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "is_quote_status": true, + "quoted_status_id_str": "1398368382412410882", + "quoted_status_permalink": { + "url": "https:\/\/t.co\/734wX1S5aq", + "expanded": "https:\/\/twitter.com\/internetarchive\/status\/1398368382412410882", + "display": "twitter.com\/internetarchiv\u2026" + }, + "retweet_count": 49, + "favorite_count": 487, + "reply_count": 10, + "quote_count": 1, + "conversation_id_str": "1399827603654066187", + "lang": "en" + }, + "1402035761063641090": { + "created_at": "Mon Jun 07 22:52:28 +0000 2021", + "id_str": "1402035761063641090", + "full_text": "Here are a few more free codes for the Beat Saber Interscope music pack: \nTNEGF-9QA3X-MN6HN-G9FQA-9RWYG,\nT4NWR-FTHXJ-NTE6Y-RWE4J-FX3HM,\nK7A6A-HTPXF-JNQ4R-KWY7A-46A4A,\nJ9EH7-GFKMM-T63GN-6HFJW-FKM6H\nTo test the bots-grabbing-codes hypothesis, please reply if you get one to work!", + "display_text_range": [ + 0, + 277 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 7, + "favorite_count": 144, + "reply_count": 23, + "quote_count": 2, + "conversation_id_str": "1402035761063641090", + "lang": "en" + }, + "1296180686215417856": { + "created_at": "Wed Aug 19 20:22:12 +0000 2020", + "id_str": "1296180686215417856", + "full_text": "I still feel pretty good about the commencement speech I gave a few years ago: https:\/\/t.co\/Oy0W7K1Bqt", + "display_text_range": [ + 0, + 102 + ], + "entities": { + "urls": [ + { + "url": "https:\/\/t.co\/Oy0W7K1Bqt", + "expanded_url": "https:\/\/youtu.be\/YOZnqjHkULc?t=138", + "display_url": "youtu.be\/YOZnqjHkULc?t=\u2026", + "indices": [ + 79, + 102 + ] + } + ] + }, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 109, + "favorite_count": 1090, + "reply_count": 89, + "quote_count": 27, + "conversation_id_str": "1296180686215417856", + "possibly_sensitive_editable": true, + "card": { + "name": "player", + "url": "https:\/\/t.co\/Oy0W7K1Bqt", + "card_type_url": "http:\/\/card-type-url-is-deprecated.invalid", + "binding_values": { + "vanity_url": { + "type": "STRING", + "string_value": "youtube.com", + "scribe_key": "vanity_url" + }, + "player_url": { + "type": "STRING", + "string_value": "https:\/\/www.youtube.com\/embed\/YOZnqjHkULc?start=138" + }, + "app_is_free": { + "type": "STRING", + "string_value": "true" + }, + "app_price_currency": { + "type": "STRING", + "string_value": "USD" + }, + "app_price_amount": { + "type": "STRING", + "string_value": "0.0" + }, + "domain": { + "type": "STRING", + "string_value": "www.youtube.com" + }, + "app_num_ratings": { + "type": "STRING", + "string_value": "20,815,744" + }, + "app_star_rating": { + "type": "STRING", + "string_value": "4.6906" + }, + "app_name": { + "type": "STRING", + "string_value": "YouTube: Watch, Listen, Stream" + }, + "player_width": { + "type": "STRING", + "string_value": "1280" + }, + "player_height": { + "type": "STRING", + "string_value": "720" + }, + "site": { + "type": "USER", + "user_value": { + "id_str": "10228272", + "path": [] + }, + "scribe_key": "publisher_id" + }, + "title": { + "type": "STRING", + "string_value": "John Carmack Receives Honorary Degree" + }, + "player_image_small": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400949789378826242\/c_jb4siz?format=jpg&name=144x144", + "width": 144, + "height": 81 + } + }, + "player_image": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400949789378826242\/c_jb4siz?format=jpg&name=280x280", + "width": 280, + "height": 158 + } + }, + "player_image_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400949789378826242\/c_jb4siz?format=jpg&name=800x320_1", + "width": 569, + "height": 320 + } + }, + "player_image_x_large": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400949789378826242\/c_jb4siz?format=png&name=2048x2048_2_exp", + "width": 1280, + "height": 720 + } + }, + "player_image_original": { + "type": "IMAGE", + "image_value": { + "url": "https:\/\/pbs.twimg.com\/card_img\/1400949789378826242\/c_jb4siz?format=jpg&name=orig", + "width": 1280, + "height": 720 + } + }, + "card_url": { + "type": "STRING", + "string_value": "https:\/\/t.co\/Oy0W7K1Bqt", + "scribe_key": "card_url" + } + }, + "users": { + "10228272": { + "id_str": "10228272", + "name": "YouTube", + "screen_name": "YouTube", + "location": "San Bruno, CA", + "description": "Like and subscribe.", + "url": "https:\/\/t.co\/qkVaJFk2CG", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/qkVaJFk2CG", + "expanded_url": "https:\/\/www.youtube.com\/", + "display_url": "youtube.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 72822914, + "fast_followers_count": 0, + "normal_followers_count": 72822914, + "friends_count": 1203, + "listed_count": 79217, + "created_at": "Tue Nov 13 21:43:46 +0000 2007", + "favourites_count": 5576, + "verified": true, + "statuses_count": 33827, + "media_count": 12759, + "is_translation_enabled": true, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1398259947847233538\/JXNWY7iv_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/10228272\/1622213815", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "C9191D", + "pinned_tweet_ids": [], + "pinned_tweet_ids_str": [], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "dso", + "dso", + "dso", + "dso", + "dso" + ], + "business_profile_state": "none", + "translator_type": "regular", + "withheld_in_countries": [] + } + }, + "card_platform": { + "platform": { + "device": { + "name": "Swift", + "version": "12" + }, + "audience": { + "name": "production" + } + } + } + }, + "lang": "en" + }, + "1399476356354805762": { + "created_at": "Mon May 31 21:22:19 +0000 2021", + "id_str": "1399476356354805762", + "full_text": "The flexibility to add underscore separators in numeric literals (1_000_000), seems like an unalloyed good -- is there any argument against having them in every language? Also 0b prefix for binary literals.", + "display_text_range": [ + 0, + 207 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 61, + "favorite_count": 957, + "reply_count": 60, + "quote_count": 6, + "conversation_id_str": "1399476356354805762", + "lang": "en" + }, + "1401959248507047948": { + "created_at": "Mon Jun 07 17:48:26 +0000 2021", + "id_str": "1401959248507047948", + "full_text": "It is interesting that multi dimensional arrays were a core part of Fortran in the 50's, but disappeared from generations of system programing languages, before levelling up with the powerful tensor operations of numpy and the ML frameworks.", + "display_text_range": [ + 0, + 241 + ], + "entities": {}, + "source": "\u003ca href=\"https:\/\/mobile.twitter.com\" rel=\"nofollow\"\u003eTwitter Web App\u003c\/a\u003e", + "user_id_str": "175624200", + "retweet_count": 96, + "favorite_count": 1033, + "reply_count": 52, + "quote_count": 15, + "conversation_id_str": "1401959248507047948", + "lang": "en" + }, + "1400930512491909121": { + "created_at": "Fri Jun 04 21:40:36 +0000 2021", + "id_str": "1400930512491909121", + "full_text": "a good path to supporting better video codec still image formats and 10 bit components. You can do it today, but you need to do the color conversion manually in a shader, which can be a big ask for some devs. Defining a FMT_JPEG_YUV that does driver injection akin to the \\", + "display_text_range": [ + 0, + 273 + ], + "entities": {}, + "source": "\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e", + "in_reply_to_status_id_str": "1400930510671601666", + "in_reply_to_user_id_str": "175624200", + "in_reply_to_screen_name": "ID_AA_Carmack", + "user_id_str": "175624200", + "retweet_count": 6, + "favorite_count": 302, + "reply_count": 3, + "quote_count": 1, + "conversation_id_str": "1400930510671601666", + "lang": "en", + "self_thread": { + "id_str": "1400930510671601666" + } + } + }, + "users": { + "175624200": { + "id_str": "175624200", + "name": "John Carmack", + "screen_name": "ID_AA_Carmack", + "location": "Dallas, TX", + "description": "Independent AI researcher,\nConsulting CTO Oculus VR,\nFounder Id Software and Armadillo Aerospace", + "url": "https:\/\/t.co\/c0ndp2bkKs", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/c0ndp2bkKs", + "expanded_url": "http:\/\/www.oculus.com", + "display_url": "oculus.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 915987, + "fast_followers_count": 0, + "normal_followers_count": 915987, + "friends_count": 235, + "listed_count": 6205, + "created_at": "Sat Aug 07 03:40:11 +0000 2010", + "favourites_count": 3520, + "verified": true, + "statuses_count": 14774, + "media_count": 197, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1106497789\/aa_icon_option_2_normal.jpg", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "1DA1F2", + "default_profile": true, + "pinned_tweet_ids": [ + 1296180686215417856 + ], + "pinned_tweet_ids_str": [ + "1296180686215417856" + ], + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "analytics" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + }, + "430965753": { + "id_str": "430965753", + "name": "Philip Winston", + "screen_name": "pbwinston", + "location": "Virginia, USA", + "description": "Writer at https:\/\/t.co\/ZsDrCJqRvR and programmer at https:\/\/t.co\/S40Uostpe6.\nFun and easy way to make music: https:\/\/t.co\/afFLzVeHEa", + "url": "https:\/\/t.co\/Tp6CKQhgLG", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/Tp6CKQhgLG", + "expanded_url": "https:\/\/tobeva.com", + "display_url": "tobeva.com", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "https:\/\/t.co\/ZsDrCJqRvR", + "expanded_url": "http:\/\/kmeme.com", + "display_url": "kmeme.com", + "indices": [ + 10, + 33 + ] + }, + { + "url": "https:\/\/t.co\/S40Uostpe6", + "expanded_url": "http:\/\/tobeva.com", + "display_url": "tobeva.com", + "indices": [ + 52, + 75 + ] + }, + { + "url": "https:\/\/t.co\/afFLzVeHEa", + "expanded_url": "http:\/\/tonestone.com", + "display_url": "tonestone.com", + "indices": [ + 109, + 132 + ] + } + ] + } + }, + "followers_count": 158, + "fast_followers_count": 0, + "normal_followers_count": 158, + "friends_count": 534, + "listed_count": 6, + "created_at": "Wed Dec 07 19:24:55 +0000 2011", + "favourites_count": 690, + "statuses_count": 1337, + "media_count": 291, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/1394642122515566593\/AMrswD2g_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/430965753\/1596396850", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "1DA1F2", + "default_profile": true, + "pinned_tweet_ids": [], + "pinned_tweet_ids_str": [], + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "smb" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + }, + "18957805": { + "id_str": "18957805", + "name": "Internet Archive", + "screen_name": "internetarchive", + "location": "San Francisco, CA", + "description": "Internet Archive is a non-profit digital library offering millions of free books, movies, & audio files, plus billions of saved web pages in the Wayback Machine", + "url": "https:\/\/t.co\/gFtuG5SqUT", + "entities": { + "url": { + "urls": [ + { + "url": "https:\/\/t.co\/gFtuG5SqUT", + "expanded_url": "https:\/\/archive.org", + "display_url": "archive.org", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": {} + }, + "followers_count": 183819, + "fast_followers_count": 0, + "normal_followers_count": 183819, + "friends_count": 974, + "listed_count": 4228, + "created_at": "Tue Jan 13 23:06:00 +0000 2009", + "favourites_count": 7373, + "geo_enabled": true, + "verified": true, + "statuses_count": 9391, + "media_count": 1699, + "profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/717127559134056448\/BYGRuZmj_normal.jpg", + "profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/18957805\/1459811234", + "profile_image_extensions_media_availability": null, + "profile_image_extensions_alt_text": null, + "profile_image_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_banner_extensions_media_availability": null, + "profile_banner_extensions_alt_text": null, + "profile_banner_extensions": { + "mediaStats": { + "r": { + "missing": null + }, + "ttl": -1 + } + }, + "profile_link_color": "706870", + "pinned_tweet_ids": [ + 1358090982189719552 + ], + "pinned_tweet_ids_str": [ + "1358090982189719552" + ], + "has_custom_timelines": true, + "advertiser_account_type": "promotable_user", + "advertiser_account_service_levels": [ + "analytics" + ], + "business_profile_state": "none", + "translator_type": "none", + "withheld_in_countries": [] + } + }, + "moments": {}, + "cards": {}, + "places": {}, + "media": {}, + "broadcasts": {}, + "topics": { + "731226219002265600": { + "id": "731226219002265600", + "name": "Liverpool FC", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_10.png" + }, + "898645455344517120": { + "id": "898645455344517120", + "name": "Cloud computing", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_08.png" + }, + "854701577994616832": { + "id": "854701577994616832", + "name": "Formula 1", + "following": false, + "description": "Racing league", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "898262889378619392": { + "id": "898262889378619392", + "name": "Artificial intelligence", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_07.png" + }, + "1291344241956855808": { + "id": "1291344241956855808", + "name": "Massachusetts Institute of Technology", + "following": false, + "description": "Research university", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_16.png" + }, + "848959431836487680": { + "id": "848959431836487680", + "name": "Linux", + "following": false, + "description": "Operating system", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_12.png" + }, + "1300480431905673216": { + "id": "1300480431905673216", + "name": "Carnegie Mellon University", + "following": false, + "description": "Research university", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_02.png" + }, + "847900493514891265": { + "id": "847900493514891265", + "name": "Sports", + "following": false, + "description": "All about sports", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "731226239709515778": { + "id": "731226239709515778", + "name": "Tottenham Hotspur", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_02.png" + }, + "898672147031146496": { + "id": "898672147031146496", + "name": "Augmented reality", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + }, + "1357402587947913217": { + "id": "1357402587947913217", + "name": "Data visualisation", + "following": false, + "description": "Data science", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_11.png" + }, + "930484568305541120": { + "id": "930484568305541120", + "name": "Data science", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_10.png" + }, + "731226241894752257": { + "id": "731226241894752257", + "name": "Arsenal", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_06.png" + }, + "1070028159964262400": { + "id": "1070028159964262400", + "name": "Video games", + "following": false, + "description": "Gaming", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_14.png" + }, + "733756536430809088": { + "id": "733756536430809088", + "name": "Football", + "following": false, + "description": "Sport", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_11.png" + }, + "1294355384874889216": { + "id": "1294355384874889216", + "name": "California Institute of Technology", + "following": false, + "description": "Research university", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_08.png" + }, + "1357506193879486469": { + "id": "1357506193879486469", + "name": "Python", + "following": false, + "description": "Computer programming", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_07.png" + }, + "898670051594649601": { + "id": "898670051594649601", + "name": "Virtual reality", + "following": false, + "description": "Technology and computing", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_06.png" + }, + "849075430715936768": { + "id": "849075430715936768", + "name": "Open source", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_06.png" + }, + "898661583827615744": { + "id": "898661583827615744", + "name": "Machine learning", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_08.png" + }, + "731226163788402688": { + "id": "731226163788402688", + "name": "England", + "following": false, + "description": "Men's national soccer team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_02.png" + }, + "1007360414114435072": { + "id": "1007360414114435072", + "name": "Bitcoin cryptocurrency", + "following": false, + "description": "Cryptocurrency", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_09.png" + }, + "733756526872006656": { + "id": "733756526872006656", + "name": "Premier League", + "following": false, + "description": "Soccer league", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_17.png" + }, + "898648511855550464": { + "id": "898648511855550464", + "name": "Cloud platforms", + "following": false, + "description": "Technology", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_01.png" + }, + "731226183572934657": { + "id": "731226183572934657", + "name": "Manchester United", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_07.png" + }, + "1164893579346452483": { + "id": "1164893579346452483", + "name": "Men's boxing", + "following": false, + "description": "Sport", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_16.png" + }, + "1237095288671596545": { + "id": "1237095288671596545", + "name": "Mathematics", + "following": false, + "description": "Field of study", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_03.png" + }, + "1291139053174153217": { + "id": "1291139053174153217", + "name": "Stanford University", + "following": false, + "description": "Research university", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_09.png" + }, + "1291673117010534401": { + "id": "1291673117010534401", + "name": "Funny Tweets", + "following": false, + "description": "Tweets making people laugh", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_08.png" + }, + "731226204225708033": { + "id": "731226204225708033", + "name": "Chelsea", + "following": false, + "description": "Football team", + "not_interested": false, + "icon_url": "https:\/\/ton.twimg.com\/topics\/topic_icon\/default_v3_13.png" + } + }, + "lists": {} + }, + "timeline": { + "id": "ProfileBest-175624200", + "instructions": [ + { + "addEntries": { + "entries": [ + { + "entryId": "tweet-1403201368165425158", + "sortIndex": "1403201368165425158", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403201368165425158", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1403078945847660545", + "sortIndex": "1403078945847660545", + "content": { + "item": { + "content": { + "tweet": { + "id": "1403078945847660545", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1402496694940536834", + "sortIndex": "1402496694940536834", + "content": { + "item": { + "content": { + "tweet": { + "id": "1402496694940536834", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1402050538510897158", + "sortIndex": "1402050538510897158", + "content": { + "item": { + "content": { + "tweet": { + "id": "1402050538510897158", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1402046370501046277", + "sortIndex": "1402046370501046277", + "content": { + "item": { + "content": { + "tweet": { + "id": "1402046370501046277", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "TopicsModule-1402046370501046276", + "sortIndex": "1402046370501046276", + "content": { + "timelineModule": { + "items": [ + { + "entryId": "1070028159964262400", + "item": { + "content": { + "topic": { + "topicId": "1070028159964262400", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAAAAAAAKAAIO2YDxNlWwAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1873180131" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898670051594649601", + "item": { + "content": { + "topic": { + "topicId": "898670051594649601", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAAAAAAAKAAIMeLemi5TAAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1201833728" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1300480431905673216", + "item": { + "content": { + "topic": { + "topicId": "1300480431905673216", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAISDDwQBRWQAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1712944677" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "847900493514891265", + "item": { + "content": { + "topic": { + "topicId": "847900493514891265", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAILxFkBqNVgAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1380434504" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1291344241956855808", + "item": { + "content": { + "topic": { + "topicId": "1291344241956855808", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIR68a/CJWgAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-2120497719" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "733756536430809088", + "item": { + "content": { + "topic": { + "topicId": "733756536430809088", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKLtOuqZRQAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1705860764" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898661583827615744", + "item": { + "content": { + "topic": { + "topicId": "898661583827615744", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMeK/y/VXAAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "350597429" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1291673117010534401", + "item": { + "content": { + "topic": { + "topicId": "1291673117010534401", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIR7PHbOVWgAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "306205287" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1291139053174153217", + "item": { + "content": { + "topic": { + "topicId": "1291139053174153217", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIR6wwgzBRgAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1559930588" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1294355384874889216", + "item": { + "content": { + "topic": { + "topicId": "1294355384874889216", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIR9nldYJTwAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1016325263" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "930484568305541120", + "item": { + "content": { + "topic": { + "topicId": "930484568305541120", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIM6b7I8tWgAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "344852091" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1007360414114435072", + "item": { + "content": { + "topic": { + "topicId": "1007360414114435072", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIN+tz1nBTQAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-69557615" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "849075430715936768", + "item": { + "content": { + "topic": { + "topicId": "849075430715936768", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAILyIWbC1XQAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "984739231" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226183572934657", + "item": { + "content": { + "topic": { + "topicId": "731226183572934657", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZW+lRQAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1409041390" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898262889378619392", + "item": { + "content": { + "topic": { + "topicId": "898262889378619392", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMd0VWtFQgAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1927471410" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226163788402688", + "item": { + "content": { + "topic": { + "topicId": "731226163788402688", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZSXxRQAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1727926307" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1357506193879486469", + "item": { + "content": { + "topic": { + "topicId": "1357506193879486469", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIS1tSw4pRQBQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1155665108" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "733756526872006656", + "item": { + "content": { + "topic": { + "topicId": "733756526872006656", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKLtOsb9SQAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "911793610" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898672147031146496", + "item": { + "content": { + "topic": { + "topicId": "898672147031146496", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMeLmObVRAAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1896949979" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "854701577994616832", + "item": { + "content": { + "topic": { + "topicId": "854701577994616832", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIL3IKOiVXAAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1850786315" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "848959431836487680", + "item": { + "content": { + "topic": { + "topicId": "848959431836487680", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAILyBwa81TQAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1962623123" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226241894752257", + "item": { + "content": { + "topic": { + "topicId": "731226241894752257", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZkjpSgAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-862734977" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1357402587947913217", + "item": { + "content": { + "topic": { + "topicId": "1357402587947913217", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIS1nZ2P9TQAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "100888550" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226219002265600", + "item": { + "content": { + "topic": { + "topicId": "731226219002265600", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZfOhUAAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-815937283" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898645455344517120", + "item": { + "content": { + "topic": { + "topicId": "898645455344517120", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMeKFHyNRAAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-446408758" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226204225708033", + "item": { + "content": { + "topic": { + "topicId": "731226204225708033", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZbyVSgAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1460394955" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "898648511855550464", + "item": { + "content": { + "topic": { + "topicId": "898648511855550464", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIMeKQPbxVgAAoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-1346370287" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "731226239709515778", + "item": { + "content": { + "topic": { + "topicId": "731226239709515778", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIKJdZkDFSQAgoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "-717775588" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1237095288671596545", + "item": { + "content": { + "topic": { + "topicId": "1237095288671596545", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAABAAAAAAKAAIRKwucUpRwAQoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "1721030819" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + }, + { + "entryId": "1164893579346452483", + "item": { + "content": { + "topic": { + "topicId": "1164893579346452483", + "topicFunctionalityType": "Recommendation", + "topicDisplayType": "Pill" + } + }, + "clientEventInfo": { + "component": "suggest_topics_module", + "element": "topic", + "details": { + "timelinesDetails": { + "controllerData": "DAACDAAHDAABCgABAAAAAgAAAAAKAAIQKoiJ3hQgAwoAA6zn8/fmVIs+AAAAAA==" + } + } + }, + "feedbackInfo": { + "feedbackKeys": [ + "287709570" + ], + "feedbackMetadata": "FcQBOQwA" + } + } + } + ], + "displayType": "GridCarousel", + "header": { + "text": "Topics to follow", + "sticky": false, + "socialContext": { + "generalContext": { + "contextType": "Topic", + "text": "Sign up to get Tweets about the Topics you follow in your Home timeline." + } + } + }, + "clientEventInfo": { + "component": "suggest_topics_module" + }, + "metadata": { + "gridCarouselMetadata": { + "numRows": 3 + } + } + } + } + }, + { + "entryId": "tweet-1402035761063641090", + "sortIndex": "1402035761063641090", + "content": { + "item": { + "content": { + "tweet": { + "id": "1402035761063641090", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1401959248507047948", + "sortIndex": "1401959248507047948", + "content": { + "item": { + "content": { + "tweet": { + "id": "1401959248507047948", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1400930514073182208", + "sortIndex": "1400930514073182208", + "content": { + "item": { + "content": { + "tweet": { + "id": "1400930514073182208", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1400930512491909121", + "sortIndex": "1400930512491909121", + "content": { + "item": { + "content": { + "tweet": { + "id": "1400930512491909121", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1400930510671601666", + "sortIndex": "1400930510671601666", + "content": { + "item": { + "content": { + "tweet": { + "id": "1400930510671601666", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1400683014229839874", + "sortIndex": "1400683014229839874", + "content": { + "item": { + "content": { + "tweet": { + "id": "1400683014229839874", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1399949154412118029", + "sortIndex": "1399949154412118029", + "content": { + "item": { + "content": { + "tweet": { + "id": "1399949154412118029", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1399949153547993088", + "sortIndex": "1399949153547993088", + "content": { + "item": { + "content": { + "tweet": { + "id": "1399949153547993088", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1399949152545611778", + "sortIndex": "1399949152545611778", + "content": { + "item": { + "content": { + "tweet": { + "id": "1399949152545611778", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1399827603654066187", + "sortIndex": "1399827603654066187", + "content": { + "item": { + "content": { + "tweet": { + "id": "1399827603654066187", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1399722752047730691", + "sortIndex": "1399722752047730691", + "content": { + "item": { + "content": { + "tweet": { + "id": "1399722752047730691", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1399584217030348803", + "sortIndex": "1399584217030348803", + "content": { + "item": { + "content": { + "tweet": { + "id": "1399584217030348803", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "tweet-1399476356354805762", + "sortIndex": "1399476356354805762", + "content": { + "item": { + "content": { + "tweet": { + "id": "1399476356354805762", + "displayType": "Tweet" + } + } + } + } + }, + { + "entryId": "cursor-top-1403299616421576705", + "sortIndex": "1403299616421576705", + "content": { + "operation": { + "cursor": { + "value": "HCaAgIDkneTC+SYAAA==", + "cursorType": "Top" + } + } + } + }, + { + "entryId": "cursor-bottom-1399476356354805761", + "sortIndex": "1399476356354805761", + "content": { + "operation": { + "cursor": { + "value": "HBaEwLDBmpX46yYAAA==", + "cursorType": "Bottom", + "stopOnEmptyResponse": true + } + } + } + } + ] + } + }, + { + "pinEntry": { + "entry": { + "entryId": "tweet-1296180686215417856", + "sortIndex": "1403299616413188096", + "content": { + "item": { + "content": { + "tweet": { + "id": "1296180686215417856", + "displayType": "Tweet", + "socialContext": { + "generalContext": { + "contextType": "Pin", + "text": "Pinned Tweet" + } + } + } + }, + "clientEventInfo": { + "component": "suggest_pinned_tweet", + "details": { + "timelinesDetails": { + "injectionType": "PinnedTweet" + } + } + } + } + } + } + } + } + ], + "responseObjects": { + "feedbackActions": { + "911793610": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "733756526872006656" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1460394955": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226204225708033" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1721030819": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1237095288671596545" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1873180131": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1070028159964262400" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1712944677": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1300480431905673216" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1155665108": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1357506193879486469" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1016325263": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1294355384874889216" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "984739231": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "849075430715936768" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "350597429": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898661583827615744" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-446408758": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898645455344517120" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "287709570": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1164893579346452483" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1927471410": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898262889378619392" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1962623123": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "848959431836487680" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1346370287": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898648511855550464" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1409041390": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226183572934657" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1896949979": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898672147031146496" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "306205287": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1291673117010534401" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "1201833728": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "898670051594649601" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1559930588": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1291139053174153217" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-69557615": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1007360414114435072" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1705860764": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "733756536430809088" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-815937283": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226219002265600" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1727926307": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226163788402688" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-862734977": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226241894752257" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "344852091": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "930484568305541120" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "100888550": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1357402587947913217" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-2120497719": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "1291344241956855808" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-717775588": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "731226239709515778" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1850786315": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "854701577994616832" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + }, + "-1380434504": { + "feedbackType": "RichBehavior", + "feedbackUrl": "/2/timeline/feedback.json?feedback_type=RichBehavior&action_metadata=FcQBOQwA", + "hasUndoAction": true, + "richBehavior": { + "markNotInterestedTopic": { + "topicId": "847900493514891265" + } + }, + "encodedFeedbackRequest": "LBUeHBXEATkMAAAA" + } + } + } + } +} \ No newline at end of file