Various updates
This commit is contained in:
parent
ad719bc561
commit
7d1d749977
|
@ -32,7 +32,7 @@ jobs:
|
|||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: 3.24.5
|
||||
flutter-version: 3.29.0
|
||||
- name: Get flutter version
|
||||
id: version
|
||||
uses: mikefarah/yq@master
|
||||
|
|
16
.metadata
16
.metadata
|
@ -4,7 +4,7 @@
|
|||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
|
||||
revision: "35c388afb57ef061d06a39b537336c87e0e3d1b1"
|
||||
channel: "stable"
|
||||
|
||||
project_type: app
|
||||
|
@ -13,17 +13,11 @@ project_type: app
|
|||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
|
||||
base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
|
||||
- platform: android
|
||||
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
- platform: web
|
||||
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
- platform: windows
|
||||
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
|
||||
create_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
|
||||
base_revision: 35c388afb57ef061d06a39b537336c87e0e3d1b1
|
||||
|
||||
# User provided section
|
||||
|
||||
|
|
|
@ -5,9 +5,10 @@ gradle-wrapper.jar
|
|||
/gradlew.bat
|
||||
/local.properties
|
||||
GeneratedPluginRegistrant.java
|
||||
.cxx/
|
||||
|
||||
# Remember to never publicly share your keystore.
|
||||
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
||||
# See https://flutter.dev/to/reference-keystore
|
||||
key.properties
|
||||
**/*.keystore
|
||||
**/*.jks
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
plugins {
|
||||
id "com.android.application"
|
||||
id "kotlin-android"
|
||||
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
|
||||
id "dev.flutter.flutter-gradle-plugin"
|
||||
}
|
||||
|
||||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file("local.properties")
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader("UTF-8") { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = "1"
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty("flutter.versionName")
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = "1.0"
|
||||
}
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.freakurl.apps.ollama"
|
||||
compileSdk = flutter.compileSdkVersion
|
||||
ndkVersion = flutter.ndkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.freakurl.apps.ollama"
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||
minSdk = flutter.minSdkVersion
|
||||
targetSdk = flutter.targetSdkVersion
|
||||
versionCode = flutterVersionCode.toInteger()
|
||||
versionName = flutterVersionName
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
keyAlias keystoreProperties['keyAlias']
|
||||
keyPassword keystoreProperties['keyPassword']
|
||||
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
|
||||
storePassword keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
source = "../.."
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
import java.util.Properties
|
||||
import java.io.FileInputStream
|
||||
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
id("kotlin-android")
|
||||
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
|
||||
id("dev.flutter.flutter-gradle-plugin")
|
||||
}
|
||||
|
||||
val keystoreProperties = Properties()
|
||||
val keystorePropertiesFile = rootProject.file("key.properties")
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.freakurl.apps.ollama"
|
||||
compileSdk = flutter.compileSdkVersion
|
||||
ndkVersion = "27.0.12077973" // flutter.ndkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = JavaVersion.VERSION_11.toString()
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.freakurl.apps.ollama"
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://flutter.dev/to/review-gradle-config.
|
||||
minSdk = flutter.minSdkVersion
|
||||
targetSdk = flutter.targetSdkVersion
|
||||
versionCode = flutter.versionCode
|
||||
versionName = flutter.versionName
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
create("release") {
|
||||
keyAlias = keystoreProperties["keyAlias"] as String
|
||||
keyPassword = keystoreProperties["keyPassword"] as String
|
||||
storeFile = keystoreProperties["storeFile"]?.let { file(it) }
|
||||
storePassword = keystoreProperties["storePassword"] as String
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig = signingConfigs.getByName("release")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
source = "../.."
|
||||
}
|
|
@ -2,4 +2,4 @@ package com.freakurl.apps.ollama
|
|||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity()
|
||||
class MainActivity : FlutterActivity()
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
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
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
|
||||
val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
|
||||
rootProject.layout.buildDirectory.value(newBuildDir)
|
||||
|
||||
subprojects {
|
||||
val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
|
||||
project.layout.buildDirectory.value(newSubprojectBuildDir)
|
||||
}
|
||||
subprojects {
|
||||
project.evaluationDependsOn(":app")
|
||||
}
|
||||
|
||||
tasks.register<Delete>("clean") {
|
||||
delete(rootProject.layout.buildDirectory)
|
||||
}
|
|
@ -1,3 +1,3 @@
|
|||
org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
|
||||
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
|
|
@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
pluginManagement {
|
||||
def flutterSdkPath = {
|
||||
def properties = new Properties()
|
||||
file("local.properties").withInputStream { properties.load(it) }
|
||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||
return flutterSdkPath
|
||||
}()
|
||||
|
||||
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
id "com.android.application" version "7.3.0" apply false
|
||||
id "org.jetbrains.kotlin.android" version "1.9.10" apply false
|
||||
}
|
||||
|
||||
include ":app"
|
|
@ -0,0 +1,25 @@
|
|||
pluginManagement {
|
||||
val flutterSdkPath = run {
|
||||
val properties = java.util.Properties()
|
||||
file("local.properties").inputStream().use { properties.load(it) }
|
||||
val flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||
require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
|
||||
flutterSdkPath
|
||||
}
|
||||
|
||||
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
|
||||
id("com.android.application") version "8.7.0" apply false
|
||||
id("org.jetbrains.kotlin.android") version "1.8.22" apply false
|
||||
}
|
||||
|
||||
include(":app")
|
|
@ -0,0 +1,3 @@
|
|||
description: This file stores settings for Dart & Flutter DevTools.
|
||||
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
||||
extensions:
|
|
@ -3,3 +3,5 @@ template-arb-file: app_en.arb
|
|||
preferred-supported-locales: en
|
||||
output-localization-file: app_localizations.dart
|
||||
untranslated-messages-file: untranslated_messages.json
|
||||
synthetic-package: false
|
||||
output-dir: lib/l10n/gen
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,484 @@
|
|||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for German (`de`).
|
||||
class AppLocalizationsDe extends AppLocalizations {
|
||||
AppLocalizationsDe([String locale = 'de']) : super(locale);
|
||||
|
||||
@override
|
||||
String get appTitle => 'Ollama';
|
||||
|
||||
@override
|
||||
String get optionNewChat => 'Neuer Chat';
|
||||
|
||||
@override
|
||||
String get optionSettings => 'Einstellungen';
|
||||
|
||||
@override
|
||||
String get optionInstallPwa => 'Webapp installieren';
|
||||
|
||||
@override
|
||||
String get optionNoChatFound => 'Keine Chats gefunden';
|
||||
|
||||
@override
|
||||
String get tipPrefix => 'Tipp: ';
|
||||
|
||||
@override
|
||||
String get tip0 => 'Bearbeite Nachrichten durch langes Tippen';
|
||||
|
||||
@override
|
||||
String get tip1 => 'Lösche Nachrichten durch Doppeltippen';
|
||||
|
||||
@override
|
||||
String get tip2 => 'Das Thema kann in den Einstellungen geändert werden';
|
||||
|
||||
@override
|
||||
String get tip3 => 'Wähle ein multimodales Modell zum Anhängen von Bildern';
|
||||
|
||||
@override
|
||||
String get tip4 => 'Chats werden automatisch gespeichert';
|
||||
|
||||
@override
|
||||
String get deleteChat => 'Löschen';
|
||||
|
||||
@override
|
||||
String get renameChat => 'Umbenennen';
|
||||
|
||||
@override
|
||||
String get takeImage => 'Bild Aufnehmen';
|
||||
|
||||
@override
|
||||
String get uploadImage => 'Bild Hochladen';
|
||||
|
||||
@override
|
||||
String get notAValidImage => 'Kein gültiges Bild';
|
||||
|
||||
@override
|
||||
String get imageOnlyConversation => 'Nur Bild Unterhaltung';
|
||||
|
||||
@override
|
||||
String get messageInputPlaceholder => 'Nachricht';
|
||||
|
||||
@override
|
||||
String get tooltipAttachment => 'Anhang hinzufügen';
|
||||
|
||||
@override
|
||||
String get tooltipSend => 'Senden';
|
||||
|
||||
@override
|
||||
String get tooltipSave => 'Speichern';
|
||||
|
||||
@override
|
||||
String get tooltipLetAIThink => 'Lass KI denken';
|
||||
|
||||
@override
|
||||
String get tooltipAddHostHeaders => 'Host-Header festlegen';
|
||||
|
||||
@override
|
||||
String get tooltipReset => 'Aktuellen Chat zurücksetzen';
|
||||
|
||||
@override
|
||||
String get tooltipOptions => 'Optionen anzeigen';
|
||||
|
||||
@override
|
||||
String get noModelSelected => 'Kein Modell ausgewählt';
|
||||
|
||||
@override
|
||||
String get noHostSelected => 'Kein Host ausgewählt, öffne zum Auswählen die Einstellungen';
|
||||
|
||||
@override
|
||||
String get noSelectedModel => '<selektor>';
|
||||
|
||||
@override
|
||||
String get newChatTitle => 'Unbenannter Chat';
|
||||
|
||||
@override
|
||||
String get modelDialogAddModel => 'Hinzufügen';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptTitle => 'Neues Modell hinzufügen';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptDescription => 'Das kann entweder ein normaler Name (z.B. \'llama3\') oder Name und Tag (z.B. \'llama3:70b\') sein.';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptAlreadyExists => 'Modell existiert bereits';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptInvalid => 'Ungültiger Modellname';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceTitle => 'Proxy erlauben';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDescription => 'Ollama App muss überprüfen, ob das eingegebene Modell gültig ist. Dafür senden wir normalerweise eine Webanfrage an die Ollama-Modellliste und überprüfen den Statuscode, aber da gerade der Webclient verwendet wird, können wir das nicht direkt tun. Stattdessen sendet die App die Anfrage an eine andere API, gehostet von JHubi1, um dies für uns zu überprüfen.\nDies ist eine einmalige Anfrage und wird nur gesendet, wenn du ein neues Modell hinzufügst.\nIhre IP-Adresse wird mit der Anfrage gesendet und kann bis zu zehn Minuten gespeichert werden, um Spamming mit potenziell schädlichen Absichten zu verhindern.\nWenn du zustimmst, wird deine Auswahl für die Zukunft gespeichert; wenn nicht, wird nichts gesendet und das Modell wird nicht hinzugefügt.';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceAllow => 'Erlauben';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDeny => 'Ablehnen';
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceTitle(String model) {
|
||||
return '$model hinzufügen?';
|
||||
}
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceDescription(String model) {
|
||||
return 'Durch Drücken von \'Hinzufügen\' wird das Modell \'$model\' direkt vom Ollama-Server auf deinen Host heruntergeladen.\nJe nach Internetverbindung kann dies eine Weile dauern. Der Vorgang kann nicht abgebrochen werden.\nWenn die App während des Downloads geschlossen wird, wird der Download fortgesetzt, wenn du den Namen erneut in den Modelldialog eingibst.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceAdd => 'Hinzufügen';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceCancel => 'Abbrechen';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadPercentLoading => 'lade Fortschritt';
|
||||
|
||||
@override
|
||||
String modelDialogAddDownloadPercent(String percent) {
|
||||
return 'Download bei $percent%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadFailed => 'Getrennt, versuche es erneut';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadSuccess => 'Download erfolgreich';
|
||||
|
||||
@override
|
||||
String get deleteDialogTitle => 'Chat löschen';
|
||||
|
||||
@override
|
||||
String get deleteDialogDescription => 'Bist du sicher, dass du fortfahren möchtest? Dies wird alle Erinnerungen dieses Chats löschen und kann nicht rückgängig gemacht werden.\nUm diesen Dialog zu deaktivieren, besuche die Einstellungen.';
|
||||
|
||||
@override
|
||||
String get deleteDialogDelete => 'Löschen';
|
||||
|
||||
@override
|
||||
String get deleteDialogCancel => 'Abbrechen';
|
||||
|
||||
@override
|
||||
String get dialogEnterNewTitle => 'Gib bitte einen neuen Titel ein';
|
||||
|
||||
@override
|
||||
String get dialogEditMessageTitle => 'Nachricht bearbeiten';
|
||||
|
||||
@override
|
||||
String get settingsTitleBehavior => 'Verhalten';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionBehavior => 'Ändere das Verhalten der KI nach deinen Wünschen.';
|
||||
|
||||
@override
|
||||
String get settingsTitleInterface => 'Oberfläche';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionInterface => 'Bearbeite das Aussehen und Verhalten von Ollama App.';
|
||||
|
||||
@override
|
||||
String get settingsTitleVoice => 'Voice';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionVoice => 'Voice Mode aktivieren und Spracheinstellungen anpassen.';
|
||||
|
||||
@override
|
||||
String get settingsTitleExport => 'Exportieren';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionExport => 'Exportiere und importiere deinen Chat-Verlauf.';
|
||||
|
||||
@override
|
||||
String get settingsTitleAbout => 'Über';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionAbout => 'Suche nach Updates und erfahre mehr über Ollama App.';
|
||||
|
||||
@override
|
||||
String get settingsSavedAutomatically => 'Einstellungen werden automatisch gespeichert';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlpha => 'alpha';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaDescription => 'Diese Funktion befindet sich im Alpha-Status und funktioniert möglicherweise nicht wie beabsichtigt oder erwartet.\nKritische Probleme und/oder dauerhafte kritische Schäden am Gerät und/oder den verwendeten Diensten können nicht ausgeschlossen werden.\nBenutzung auf eigene Gefahr. Keine Haftung seitens des App-Autors.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaFeature => 'Alpha-Funktion, halte, um mehr zu erfahren';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBeta => 'beta';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaDescription => 'Diese Funktion befindet sich im Beta-Test und funktioniert möglicherweise nicht wie beabsichtigt oder erwartet.\nWeniger schwerwiegende Probleme können auftreten oder auch nicht. Schäden sollten nicht kritisch sein.\nVerwendung auf eigene Gefahr.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaFeature => 'Beta-Funktion, halte, um mehr zu erfahren';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecated => 'veraltet';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedDescription => 'Diese Funktion ist veraltet und wird in einer zukünftigen Version entfernt werden.\nEs funktioniert möglicherweise nicht wie beabsichtigt oder erwartet. Benutzung auf eigenes Gefahr.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedFeature => 'Veraltete Funktion, halte, um mehr zu erfahren';
|
||||
|
||||
@override
|
||||
String get settingsHost => 'Host';
|
||||
|
||||
@override
|
||||
String get settingsHostValid => 'Gültiger Host';
|
||||
|
||||
@override
|
||||
String get settingsHostChecking => 'Host wird Überprüft';
|
||||
|
||||
@override
|
||||
String settingsHostInvalid(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'Ungültige URL',
|
||||
'host': 'Ungültiger Host',
|
||||
'timeout': 'Request Fehlgeschlagen. Server Fehler',
|
||||
'ratelimit': 'Zu viele Anfragen',
|
||||
'other': 'Request Fehlgeschlagen',
|
||||
},
|
||||
);
|
||||
return 'Fehler: $_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderTitle => 'Host-Header festlegen';
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderInvalid => 'Der eingegebene Text ist kein gültiges Header-JSON-Objekt';
|
||||
|
||||
@override
|
||||
String settingsHostInvalidDetailed(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'Die eingegebene URL ist ungültig. Es handelt sich nicht um ein standardisiertes URL-Format.',
|
||||
'other': 'Der eingegebene Host ist ungültig. Er kann nicht erreicht werden. Bitte überprüfe den Host und versuche es erneut.',
|
||||
},
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsSystemMessage => 'Systemnachricht';
|
||||
|
||||
@override
|
||||
String get settingsUseSystem => 'Systemnachricht verwenden';
|
||||
|
||||
@override
|
||||
String get settingsUseSystemDescription => 'Deaktiviere das Setzen der obigen Systemnachricht und benutze stattdessen die des Modells. Kann nützlich für Modelle mit Model-Files sein';
|
||||
|
||||
@override
|
||||
String get settingsDisableMarkdown => 'Markdown deaktivieren';
|
||||
|
||||
@override
|
||||
String get settingsBehaviorNotUpdatedForOlderChats => 'Verhaltenseinstellungen werden nicht für ältere Chats aktualisiert';
|
||||
|
||||
@override
|
||||
String get settingsShowModelTags => 'Model-Tags anzeigen';
|
||||
|
||||
@override
|
||||
String get settingsPreloadModels => 'Modelle vorladen';
|
||||
|
||||
@override
|
||||
String get settingsResetOnModelChange => 'Zurücksetzen bei Modelländerung';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeStream => 'Stream';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeRequest => 'Request';
|
||||
|
||||
@override
|
||||
String get settingsGenerateTitles => 'Titel generieren';
|
||||
|
||||
@override
|
||||
String get settingsEnableEditing => 'Nachrichtenbearbeitung aktivieren';
|
||||
|
||||
@override
|
||||
String get settingsAskBeforeDelete => 'Vor Löschung des Chats fragen';
|
||||
|
||||
@override
|
||||
String get settingsShowTips => 'Tipps in der Seitenleiste anzeigen';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedAlways => 'Modell immer geladen lassen';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedNever => 'Modell nicht dauerhaft laden';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedFor => 'Bestimmte Modell-Ladedauer festlegen';
|
||||
|
||||
@override
|
||||
String settingsKeepModelLoadedSet(String minutes) {
|
||||
return 'Modell für $minutes Minuten geladen behalten';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplier => 'Timeout Multiplikator';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierDescription => 'Wähle den Multiplikator aus, der auf jeden Timeout-Wert in der App angewendet wird. Kann bei einer langsamen Internetverbindung oder einem langsamen Host nützlich sein.';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierExample => 'Z.b. Nachrichten-Timeout:';
|
||||
|
||||
@override
|
||||
String get settingsEnableHapticFeedback => 'Haptisches Feedback aktivieren';
|
||||
|
||||
@override
|
||||
String get settingsMaximizeOnStart => 'Maximiert starten';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessSystem => 'System';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessLight => 'Hell';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessDark => 'Dunkel';
|
||||
|
||||
@override
|
||||
String get settingsThemeDevice => 'Gerät';
|
||||
|
||||
@override
|
||||
String get settingsThemeOllama => 'Ollama';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixes => 'Temporäre Interface Korrekturen';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesDescription => 'Temporäre Korrekturen für Interface-Probleme aktivieren.\nDrücke lange auf die einzelnen Optionen, um mehr zu erfahren.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesInstructions => 'Aktiviere keine dieser Einstellungen, solltest du nicht wissen, was sie machen! Die gegebene Lösung funktioniert möglicherweise nicht wie erwartet.\nSie können nicht als final gesehen werden und sollten nicht als dieses bewertet werden. Probleme können auftreten.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesNoFixes => 'Keine Korrekturen verfügbar';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionLoading => 'Lade Sprachberechtigungen ...';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupported => 'Sprachausgabe nicht unterstützt';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupportedDescription => 'Sprachausgabedienste sind nicht für die ausgewählte Sprache verfügbar. Wähle eine andere Sprache im Sprachwähler, um diese wieder zu aktivieren.\nAndere Dienste, wie Spracherkennung und KI-Denken werden noch immer wie gewohnt funktionieren, doch die Interaktion könnte möglicherweise nicht gleich fließend sein.';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionNot => 'Berechtigungen nicht erteilt';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotEnabled => 'Voice Mode nicht aktiviert';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotSupported => 'Voice-Modus wird nicht unterstützt';
|
||||
|
||||
@override
|
||||
String get settingsVoiceEnable => 'Voice-Modus aktivieren';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNoLanguage => 'Keine Sprache ausgewählt';
|
||||
|
||||
@override
|
||||
String get settingsVoiceLimitLanguage => 'Auf gewählte Sprache beschränken';
|
||||
|
||||
@override
|
||||
String get settingsVoicePunctuation => 'KI Satzzeichen aktivieren';
|
||||
|
||||
@override
|
||||
String get settingsExportChats => 'Chats exportieren';
|
||||
|
||||
@override
|
||||
String get settingsExportChatsSuccess => 'Chats erfolgreich exportiert';
|
||||
|
||||
@override
|
||||
String get settingsImportChats => 'Chats importieren';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsTitle => 'Importieren';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsDescription => 'Der folgende Schritt importiert die Chats aus der ausgewählten Datei. Dadurch werden alle aktuell verfügbaren Chats überschrieben.\nMöchtest du fortfahren?';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsImport => 'Importieren und Löschen';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsCancel => 'Abbrechen';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsSuccess => 'Chats erfolgreich importiert';
|
||||
|
||||
@override
|
||||
String get settingsExportInfo => 'Diese Optionen ermöglichen es dir, deinen Chat-Verlauf zu exportieren und zu importieren. Dies kann nützlich sein, wenn du deinen Chat-Verlauf auf ein anderes Gerät übertragen oder deinen Chat-Verlauf sichern möchtest';
|
||||
|
||||
@override
|
||||
String get settingsExportWarning => 'Mehrere Chatverläufe werden nicht zusammengeführt! Du verlierst deinen aktuellen Chatverlauf, wenn du einen neuen importierst';
|
||||
|
||||
@override
|
||||
String get settingsUpdateCheck => 'Nach Updates suchen';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChecking => 'Suchen nach Updates ...';
|
||||
|
||||
@override
|
||||
String get settingsUpdateLatest => 'Du verwendest die neueste Version';
|
||||
|
||||
@override
|
||||
String settingsUpdateAvailable(String version) {
|
||||
return 'Update verfügbar (v$version)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsUpdateRateLimit => 'Kann nicht überprüfen, API-Limit';
|
||||
|
||||
@override
|
||||
String get settingsUpdateIssue => 'Ein Problem ist aufgetreten';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogTitle => 'Neue Version verfügbar';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogDescription => 'Eine neue Version von Ollama ist verfügbar. Möchtest du sie jetzt herunterladen und installieren?';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChangeLog => 'Versionshinweise';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogUpdate => 'Aktualisieren';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogCancel => 'Abbrechen';
|
||||
|
||||
@override
|
||||
String get settingsCheckForUpdates => 'Beim Öffnen nach Updates suchen';
|
||||
|
||||
@override
|
||||
String get settingsGithub => 'GitHub';
|
||||
|
||||
@override
|
||||
String get settingsReportIssue => 'Einen Fehler melden';
|
||||
|
||||
@override
|
||||
String get settingsLicenses => 'Lizenzen';
|
||||
|
||||
@override
|
||||
String settingsVersion(String version) {
|
||||
return 'Ollama App v$version';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,484 @@
|
|||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for English (`en`).
|
||||
class AppLocalizationsEn extends AppLocalizations {
|
||||
AppLocalizationsEn([String locale = 'en']) : super(locale);
|
||||
|
||||
@override
|
||||
String get appTitle => 'Ollama';
|
||||
|
||||
@override
|
||||
String get optionNewChat => 'New Chat';
|
||||
|
||||
@override
|
||||
String get optionSettings => 'Settings';
|
||||
|
||||
@override
|
||||
String get optionInstallPwa => 'Install Webapp';
|
||||
|
||||
@override
|
||||
String get optionNoChatFound => 'No chats found';
|
||||
|
||||
@override
|
||||
String get tipPrefix => 'Tip: ';
|
||||
|
||||
@override
|
||||
String get tip0 => 'Edit messages by long taping on them';
|
||||
|
||||
@override
|
||||
String get tip1 => 'Delete messages by double tapping on them';
|
||||
|
||||
@override
|
||||
String get tip2 => 'You can change the theme in settings';
|
||||
|
||||
@override
|
||||
String get tip3 => 'Select a multimodal model to input images';
|
||||
|
||||
@override
|
||||
String get tip4 => 'Chats are automatically saved';
|
||||
|
||||
@override
|
||||
String get deleteChat => 'Delete';
|
||||
|
||||
@override
|
||||
String get renameChat => 'Rename';
|
||||
|
||||
@override
|
||||
String get takeImage => 'Take Image';
|
||||
|
||||
@override
|
||||
String get uploadImage => 'Upload Image';
|
||||
|
||||
@override
|
||||
String get notAValidImage => 'Not a valid image';
|
||||
|
||||
@override
|
||||
String get imageOnlyConversation => 'Image Only Conversation';
|
||||
|
||||
@override
|
||||
String get messageInputPlaceholder => 'Message';
|
||||
|
||||
@override
|
||||
String get tooltipAttachment => 'Add attachment';
|
||||
|
||||
@override
|
||||
String get tooltipSend => 'Send';
|
||||
|
||||
@override
|
||||
String get tooltipSave => 'Save';
|
||||
|
||||
@override
|
||||
String get tooltipLetAIThink => 'Let AI think';
|
||||
|
||||
@override
|
||||
String get tooltipAddHostHeaders => 'Add host headers';
|
||||
|
||||
@override
|
||||
String get tooltipReset => 'Reset current chat';
|
||||
|
||||
@override
|
||||
String get tooltipOptions => 'Show options';
|
||||
|
||||
@override
|
||||
String get noModelSelected => 'No model selected';
|
||||
|
||||
@override
|
||||
String get noHostSelected => 'No host selected, open setting to set one';
|
||||
|
||||
@override
|
||||
String get noSelectedModel => '<selector>';
|
||||
|
||||
@override
|
||||
String get newChatTitle => 'Unnamed Chat';
|
||||
|
||||
@override
|
||||
String get modelDialogAddModel => 'Add';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptTitle => 'Add new model';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptDescription => 'This can have either be a normal name (e.g. \'llama3\') or name and tag (e.g. \'llama3:70b\').';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptAlreadyExists => 'Model already exists';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptInvalid => 'Invalid model name';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceTitle => 'Allow Proxy';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDescription => 'Ollama App must check if the entered model is valid. For that, we normally send a web request to the Ollama model list and check the status code, but because you\'re using the web client, we can\'t do that directly. Instead, the app will send the request to a different api, hosted by JHubi1, to check for us.\nThis is a one-time request and will only be sent when you add a new model.\nYour IP address will be sent with the request and might be stored for up to ten minutes to prevent spamming with potential harmful intentions.\nIf you accept, your selection will be remembered in the future; if not, nothing will be sent and the model won\'t be added.';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceAllow => 'Allow';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDeny => 'Deny';
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceTitle(String model) {
|
||||
return 'Add $model?';
|
||||
}
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceDescription(String model) {
|
||||
return 'Pressing \'Add\' will download the model \'$model\' directly from the Ollama server to your host.\nThis can take a while depending on your internet connection. The action cannot be canceled.\nIf the app is closed during the download, it\'ll resume if you enter the name into the model dialog again.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceAdd => 'Add';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadPercentLoading => 'loading progress';
|
||||
|
||||
@override
|
||||
String modelDialogAddDownloadPercent(String percent) {
|
||||
return 'download at $percent%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadFailed => 'Disconnected, try again';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadSuccess => 'Download successful';
|
||||
|
||||
@override
|
||||
String get deleteDialogTitle => 'Delete Chat';
|
||||
|
||||
@override
|
||||
String get deleteDialogDescription => 'Are you sure you want to continue? This will wipe all memory of this chat and cannot be undone.\nTo disable this dialog, visit the settings.';
|
||||
|
||||
@override
|
||||
String get deleteDialogDelete => 'Delete';
|
||||
|
||||
@override
|
||||
String get deleteDialogCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get dialogEnterNewTitle => 'Enter new title';
|
||||
|
||||
@override
|
||||
String get dialogEditMessageTitle => 'Edit message';
|
||||
|
||||
@override
|
||||
String get settingsTitleBehavior => 'Behavior';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionBehavior => 'Change the behavior of the AI to your liking.';
|
||||
|
||||
@override
|
||||
String get settingsTitleInterface => 'Interface';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionInterface => 'Edit how Ollama App looks and behaves.';
|
||||
|
||||
@override
|
||||
String get settingsTitleVoice => 'Voice';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionVoice => 'Enable voice mode and configure voice settings.';
|
||||
|
||||
@override
|
||||
String get settingsTitleExport => 'Export';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionExport => 'Export and import your chat history.';
|
||||
|
||||
@override
|
||||
String get settingsTitleAbout => 'About';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionAbout => 'Check for updates and learn more about Ollama App.';
|
||||
|
||||
@override
|
||||
String get settingsSavedAutomatically => 'Settings are saved automatically';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlpha => 'alpha';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaDescription => 'This feature is in alpha and may not work as intended or expected.\nCritical issues and/or permanent critical damage to device and/or used services cannot be ruled out.\nUse at your own risk. No liability on the part of the app author.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaFeature => 'Alpha feature, hold to learn more';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBeta => 'beta';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaDescription => 'This feature is in beta and may not work intended or expected.\nLess severe issues may or may not occur. Damage shouldn\'t be critical.\nUse at your own risk.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaFeature => 'Beta feature, hold to learn more';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecated => 'deprecated';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedDescription => 'This feature is deprecated and will be removed in a future version.\nIt may not work as intended or expected. Use at your own risk.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedFeature => 'Deprecated feature, hold to learn more';
|
||||
|
||||
@override
|
||||
String get settingsHost => 'Host';
|
||||
|
||||
@override
|
||||
String get settingsHostValid => 'Valid Host';
|
||||
|
||||
@override
|
||||
String get settingsHostChecking => 'Checking Host';
|
||||
|
||||
@override
|
||||
String settingsHostInvalid(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'Invalid URL',
|
||||
'host': 'Invalid Host',
|
||||
'timeout': 'Request Failed. Server issues',
|
||||
'ratelimit': 'Too many requests',
|
||||
'other': 'Request Failed',
|
||||
},
|
||||
);
|
||||
return 'Issue: $_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderTitle => 'Set host header';
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderInvalid => 'The entered text isn\'t a valid header JSON object';
|
||||
|
||||
@override
|
||||
String settingsHostInvalidDetailed(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'The URL you entered is invalid. It isn\'t an a standardized URL format.',
|
||||
'other': 'The host you entered is invalid. It cannot be reached. Please check the host and try again.',
|
||||
},
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsSystemMessage => 'System message';
|
||||
|
||||
@override
|
||||
String get settingsUseSystem => 'Use system message';
|
||||
|
||||
@override
|
||||
String get settingsUseSystemDescription => 'Disables setting the system message above and use the one of the model instead. Can be useful for models with model files';
|
||||
|
||||
@override
|
||||
String get settingsDisableMarkdown => 'Disable markdown';
|
||||
|
||||
@override
|
||||
String get settingsBehaviorNotUpdatedForOlderChats => 'Behavior settings are not updated for older chats';
|
||||
|
||||
@override
|
||||
String get settingsShowModelTags => 'Show model tags';
|
||||
|
||||
@override
|
||||
String get settingsPreloadModels => 'Preload models';
|
||||
|
||||
@override
|
||||
String get settingsResetOnModelChange => 'Reset on model change';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeStream => 'Stream';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeRequest => 'Request';
|
||||
|
||||
@override
|
||||
String get settingsGenerateTitles => 'Generate titles';
|
||||
|
||||
@override
|
||||
String get settingsEnableEditing => 'Message editing';
|
||||
|
||||
@override
|
||||
String get settingsAskBeforeDelete => 'Ask before chat deletion';
|
||||
|
||||
@override
|
||||
String get settingsShowTips => 'Show tips in sidebar';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedAlways => 'Keep model always loaded';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedNever => 'Don\'t keep model loaded';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedFor => 'Set specific time to keep model loaded';
|
||||
|
||||
@override
|
||||
String settingsKeepModelLoadedSet(String minutes) {
|
||||
return 'Keep model loaded for $minutes minutes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplier => 'Timeout multiplier';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierDescription => 'Select the multiplier that is applied to every timeout value in the app. Can be useful with a slow internet connection or a slow host.';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierExample => 'E.g. message timeout:';
|
||||
|
||||
@override
|
||||
String get settingsEnableHapticFeedback => 'Enable haptic feedback';
|
||||
|
||||
@override
|
||||
String get settingsMaximizeOnStart => 'Start maximized';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessSystem => 'System';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessLight => 'Light';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessDark => 'Dark';
|
||||
|
||||
@override
|
||||
String get settingsThemeDevice => 'Device';
|
||||
|
||||
@override
|
||||
String get settingsThemeOllama => 'Ollama';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixes => 'Temporary interface fixes';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesDescription => 'Enable temporary fixes for interface issues.\nLong press on the individual options to learn more.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesInstructions => 'Do not toggle any of these settings unless you know what you are doing! The given solutions might not work as expected.\nThey cannot be seen as final or should be judged as such. Issues might occur.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesNoFixes => 'No fixes available';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionLoading => 'Loading voice permissions ...';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupported => 'Text-to-speech not supported';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupportedDescription => 'Text-to-speech services are not supported for the selected language. Select a different language in the language drawer to reenable them.\nOther services like voice recognition and AI thinking will still work as usual, but interaction might not be as fluent.';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionNot => 'Permissions not granted';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotEnabled => 'Voice mode not enabled';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotSupported => 'Voice mode not supported';
|
||||
|
||||
@override
|
||||
String get settingsVoiceEnable => 'Enable voice mode';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNoLanguage => 'No language selected';
|
||||
|
||||
@override
|
||||
String get settingsVoiceLimitLanguage => 'Limit to selected language';
|
||||
|
||||
@override
|
||||
String get settingsVoicePunctuation => 'Enable AI punctuation';
|
||||
|
||||
@override
|
||||
String get settingsExportChats => 'Export chats';
|
||||
|
||||
@override
|
||||
String get settingsExportChatsSuccess => 'Chats exported successfully';
|
||||
|
||||
@override
|
||||
String get settingsImportChats => 'Import chats';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsTitle => 'Import';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsDescription => 'The following step will import the chats from the selected file. This will overwrite all currently available chats.\nDo you want to continue?';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsImport => 'Import and Erase';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsSuccess => 'Chats imported successfully';
|
||||
|
||||
@override
|
||||
String get settingsExportInfo => 'This options allows you to export and import your chat history. This can be useful if you want to transfer your chat history to another device or backup your chat history';
|
||||
|
||||
@override
|
||||
String get settingsExportWarning => 'Multiple chat histories won\'t be merged! You\'ll loose your current chat history if you import a new one';
|
||||
|
||||
@override
|
||||
String get settingsUpdateCheck => 'Check for updates';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChecking => 'Checking for updates ...';
|
||||
|
||||
@override
|
||||
String get settingsUpdateLatest => 'You are on the latest version';
|
||||
|
||||
@override
|
||||
String settingsUpdateAvailable(String version) {
|
||||
return 'Update available (v$version)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsUpdateRateLimit => 'Can\'t check, API rate limit exceeded';
|
||||
|
||||
@override
|
||||
String get settingsUpdateIssue => 'An issue occurred';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogTitle => 'New version available';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogDescription => 'A new version of Ollama is available. Do you want to download and install it now?';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChangeLog => 'Change Log';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogUpdate => 'Update';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get settingsCheckForUpdates => 'Check for updates on open';
|
||||
|
||||
@override
|
||||
String get settingsGithub => 'GitHub';
|
||||
|
||||
@override
|
||||
String get settingsReportIssue => 'Report Issue';
|
||||
|
||||
@override
|
||||
String get settingsLicenses => 'Licenses';
|
||||
|
||||
@override
|
||||
String settingsVersion(String version) {
|
||||
return 'Ollama App v$version';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,484 @@
|
|||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for Persian (`fa`).
|
||||
class AppLocalizationsFa extends AppLocalizations {
|
||||
AppLocalizationsFa([String locale = 'fa']) : super(locale);
|
||||
|
||||
@override
|
||||
String get appTitle => 'Ollama';
|
||||
|
||||
@override
|
||||
String get optionNewChat => 'New Chat';
|
||||
|
||||
@override
|
||||
String get optionSettings => 'Settings';
|
||||
|
||||
@override
|
||||
String get optionInstallPwa => 'Install Webapp';
|
||||
|
||||
@override
|
||||
String get optionNoChatFound => 'No chats found';
|
||||
|
||||
@override
|
||||
String get tipPrefix => 'Tip: ';
|
||||
|
||||
@override
|
||||
String get tip0 => 'Edit messages by long taping on them';
|
||||
|
||||
@override
|
||||
String get tip1 => 'Delete messages by double tapping on them';
|
||||
|
||||
@override
|
||||
String get tip2 => 'You can change the theme in settings';
|
||||
|
||||
@override
|
||||
String get tip3 => 'Select a multimodal model to input images';
|
||||
|
||||
@override
|
||||
String get tip4 => 'Chats are automatically saved';
|
||||
|
||||
@override
|
||||
String get deleteChat => 'Delete';
|
||||
|
||||
@override
|
||||
String get renameChat => 'Rename';
|
||||
|
||||
@override
|
||||
String get takeImage => 'Take Image';
|
||||
|
||||
@override
|
||||
String get uploadImage => 'Upload Image';
|
||||
|
||||
@override
|
||||
String get notAValidImage => 'Not a valid image';
|
||||
|
||||
@override
|
||||
String get imageOnlyConversation => 'Image Only Conversation';
|
||||
|
||||
@override
|
||||
String get messageInputPlaceholder => 'Message';
|
||||
|
||||
@override
|
||||
String get tooltipAttachment => 'Add attachment';
|
||||
|
||||
@override
|
||||
String get tooltipSend => 'Send';
|
||||
|
||||
@override
|
||||
String get tooltipSave => 'Save';
|
||||
|
||||
@override
|
||||
String get tooltipLetAIThink => 'Let AI think';
|
||||
|
||||
@override
|
||||
String get tooltipAddHostHeaders => 'Add host headers';
|
||||
|
||||
@override
|
||||
String get tooltipReset => 'Reset current chat';
|
||||
|
||||
@override
|
||||
String get tooltipOptions => 'Show options';
|
||||
|
||||
@override
|
||||
String get noModelSelected => 'No model selected';
|
||||
|
||||
@override
|
||||
String get noHostSelected => 'No host selected, open setting to set one';
|
||||
|
||||
@override
|
||||
String get noSelectedModel => '<selector>';
|
||||
|
||||
@override
|
||||
String get newChatTitle => 'Unnamed Chat';
|
||||
|
||||
@override
|
||||
String get modelDialogAddModel => 'Add';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptTitle => 'Add new model';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptDescription => 'This can have either be a normal name (e.g. \'llama3\') or name and tag (e.g. \'llama3:70b\').';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptAlreadyExists => 'Model already exists';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptInvalid => 'Invalid model name';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceTitle => 'Allow Proxy';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDescription => 'Ollama App must check if the entered model is valid. For that, we normally send a web request to the Ollama model list and check the status code, but because you\'re using the web client, we can\'t do that directly. Instead, the app will send the request to a different api, hosted by JHubi1, to check for us.\nThis is a one-time request and will only be sent when you add a new model.\nYour IP address will be sent with the request and might be stored for up to ten minutes to prevent spamming with potential harmful intentions.\nIf you accept, your selection will be remembered in the future; if not, nothing will be sent and the model won\'t be added.';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceAllow => 'Allow';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDeny => 'Deny';
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceTitle(String model) {
|
||||
return 'Add $model?';
|
||||
}
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceDescription(String model) {
|
||||
return 'Pressing \'Add\' will download the model \'$model\' directly from the Ollama server to your host.\nThis can take a while depending on your internet connection. The action cannot be canceled.\nIf the app is closed during the download, it\'ll resume if you enter the name into the model dialog again.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceAdd => 'Add';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadPercentLoading => 'loading progress';
|
||||
|
||||
@override
|
||||
String modelDialogAddDownloadPercent(String percent) {
|
||||
return 'download at $percent%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadFailed => 'Disconnected, try again';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadSuccess => 'Download successful';
|
||||
|
||||
@override
|
||||
String get deleteDialogTitle => 'Delete Chat';
|
||||
|
||||
@override
|
||||
String get deleteDialogDescription => 'Are you sure you want to continue? This will wipe all memory of this chat and cannot be undone.\nTo disable this dialog, visit the settings.';
|
||||
|
||||
@override
|
||||
String get deleteDialogDelete => 'Delete';
|
||||
|
||||
@override
|
||||
String get deleteDialogCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get dialogEnterNewTitle => 'Enter new title';
|
||||
|
||||
@override
|
||||
String get dialogEditMessageTitle => 'Edit message';
|
||||
|
||||
@override
|
||||
String get settingsTitleBehavior => 'Behavior';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionBehavior => 'Change the behavior of the AI to your liking.';
|
||||
|
||||
@override
|
||||
String get settingsTitleInterface => 'Interface';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionInterface => 'Edit how Ollama App looks and behaves.';
|
||||
|
||||
@override
|
||||
String get settingsTitleVoice => 'Voice';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionVoice => 'Enable voice mode and configure voice settings.';
|
||||
|
||||
@override
|
||||
String get settingsTitleExport => 'Export';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionExport => 'Export and import your chat history.';
|
||||
|
||||
@override
|
||||
String get settingsTitleAbout => 'About';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionAbout => 'Check for updates and learn more about Ollama App.';
|
||||
|
||||
@override
|
||||
String get settingsSavedAutomatically => 'Settings are saved automatically';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlpha => 'alpha';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaDescription => 'This feature is in alpha and may not work as intended or expected.\nCritical issues and/or permanent critical damage to device and/or used services cannot be ruled out.\nUse at your own risk. No liability on the part of the app author.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaFeature => 'Alpha feature, hold to learn more';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBeta => 'beta';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaDescription => 'This feature is in beta and may not work intended or expected.\nLess severe issues may or may not occur. Damage shouldn\'t be critical.\nUse at your own risk.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaFeature => 'Beta feature, hold to learn more';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecated => 'deprecated';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedDescription => 'This feature is deprecated and will be removed in a future version.\nIt may not work as intended or expected. Use at your own risk.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedFeature => 'Deprecated feature, hold to learn more';
|
||||
|
||||
@override
|
||||
String get settingsHost => 'Host';
|
||||
|
||||
@override
|
||||
String get settingsHostValid => 'Valid Host';
|
||||
|
||||
@override
|
||||
String get settingsHostChecking => 'Checking Host';
|
||||
|
||||
@override
|
||||
String settingsHostInvalid(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'Invalid URL',
|
||||
'host': 'Invalid Host',
|
||||
'timeout': 'Request Failed. Server issues',
|
||||
'ratelimit': 'Too many requests',
|
||||
'other': 'Request Failed',
|
||||
},
|
||||
);
|
||||
return 'Issue: $_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderTitle => 'Set host header';
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderInvalid => 'The entered text isn\'t a valid header JSON object';
|
||||
|
||||
@override
|
||||
String settingsHostInvalidDetailed(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'The URL you entered is invalid. It isn\'t an a standardized URL format.',
|
||||
'other': 'The host you entered is invalid. It cannot be reached. Please check the host and try again.',
|
||||
},
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsSystemMessage => 'System message';
|
||||
|
||||
@override
|
||||
String get settingsUseSystem => 'Use system message';
|
||||
|
||||
@override
|
||||
String get settingsUseSystemDescription => 'Disables setting the system message above and use the one of the model instead. Can be useful for models with model files';
|
||||
|
||||
@override
|
||||
String get settingsDisableMarkdown => 'Disable markdown';
|
||||
|
||||
@override
|
||||
String get settingsBehaviorNotUpdatedForOlderChats => 'Behavior settings are not updated for older chats';
|
||||
|
||||
@override
|
||||
String get settingsShowModelTags => 'Show model tags';
|
||||
|
||||
@override
|
||||
String get settingsPreloadModels => 'Preload models';
|
||||
|
||||
@override
|
||||
String get settingsResetOnModelChange => 'Reset on model change';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeStream => 'Stream';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeRequest => 'Request';
|
||||
|
||||
@override
|
||||
String get settingsGenerateTitles => 'Generate titles';
|
||||
|
||||
@override
|
||||
String get settingsEnableEditing => 'Enable editing of messages';
|
||||
|
||||
@override
|
||||
String get settingsAskBeforeDelete => 'Ask before chat deletion';
|
||||
|
||||
@override
|
||||
String get settingsShowTips => 'Show tips in sidebar';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedAlways => 'Keep model always loaded';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedNever => 'Don\'t keep model loaded';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedFor => 'Set specific time to keep model loaded';
|
||||
|
||||
@override
|
||||
String settingsKeepModelLoadedSet(String minutes) {
|
||||
return 'Keep model loaded for $minutes minutes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplier => 'Timeout multiplier';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierDescription => 'Select the multiplier that is applied to every timeout value in the app. Can be useful with a slow internet connection or a slow host.';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierExample => 'E.g. message timeout:';
|
||||
|
||||
@override
|
||||
String get settingsEnableHapticFeedback => 'Enable haptic feedback';
|
||||
|
||||
@override
|
||||
String get settingsMaximizeOnStart => 'Start maximized';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessSystem => 'System';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessLight => 'Light';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessDark => 'Dark';
|
||||
|
||||
@override
|
||||
String get settingsThemeDevice => 'Device';
|
||||
|
||||
@override
|
||||
String get settingsThemeOllama => 'Ollama';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixes => 'Temporary interface fixes';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesDescription => 'Enable temporary fixes for interface issues.\nLong press on the individual options to learn more.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesInstructions => 'Do not toggle any of these settings unless you know what you are doing! The given solutions might not work as expected.\nThey cannot be seen as final or should be judged as such. Issues might occur.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesNoFixes => 'No fixes available';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionLoading => 'Loading voice permissions ...';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupported => 'Text-to-speech not supported';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupportedDescription => 'Text-to-speech services are not supported for the selected language. Select a different language in the language drawer to reenable them.\nOther services like voice recognition and AI thinking will still work as usual, but interaction might not be as fluent.';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionNot => 'Permissions not granted';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotEnabled => 'Voice mode not enabled';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotSupported => 'Voice mode not supported';
|
||||
|
||||
@override
|
||||
String get settingsVoiceEnable => 'Enable voice mode';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNoLanguage => 'No language selected';
|
||||
|
||||
@override
|
||||
String get settingsVoiceLimitLanguage => 'Limit to selected language';
|
||||
|
||||
@override
|
||||
String get settingsVoicePunctuation => 'Enable AI punctuation';
|
||||
|
||||
@override
|
||||
String get settingsExportChats => 'Export chats';
|
||||
|
||||
@override
|
||||
String get settingsExportChatsSuccess => 'Chats exported successfully';
|
||||
|
||||
@override
|
||||
String get settingsImportChats => 'Import chats';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsTitle => 'Import';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsDescription => 'The following step will import the chats from the selected file. This will overwrite all currently available chats.\nDo you want to continue?';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsImport => 'Import and Erase';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsSuccess => 'Chats imported successfully';
|
||||
|
||||
@override
|
||||
String get settingsExportInfo => 'This options allows you to export and import your chat history. This can be useful if you want to transfer your chat history to another device or backup your chat history';
|
||||
|
||||
@override
|
||||
String get settingsExportWarning => 'Multiple chat histories won\'t be merged! You\'ll loose your current chat history if you import a new one';
|
||||
|
||||
@override
|
||||
String get settingsUpdateCheck => 'Check for updates';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChecking => 'Checking for updates ...';
|
||||
|
||||
@override
|
||||
String get settingsUpdateLatest => 'You are on the latest version';
|
||||
|
||||
@override
|
||||
String settingsUpdateAvailable(String version) {
|
||||
return 'Update available (v$version)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsUpdateRateLimit => 'Can\'t check, API rate limit exceeded';
|
||||
|
||||
@override
|
||||
String get settingsUpdateIssue => 'An issue occurred';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogTitle => 'New version available';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogDescription => 'A new version of Ollama is available. Do you want to download and install it now?';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChangeLog => 'Change Log';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogUpdate => 'Update';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get settingsCheckForUpdates => 'Check for updates on open';
|
||||
|
||||
@override
|
||||
String get settingsGithub => 'GitHub';
|
||||
|
||||
@override
|
||||
String get settingsReportIssue => 'Report Issue';
|
||||
|
||||
@override
|
||||
String get settingsLicenses => 'Licenses';
|
||||
|
||||
@override
|
||||
String settingsVersion(String version) {
|
||||
return 'Ollama App v$version';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,484 @@
|
|||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for Italian (`it`).
|
||||
class AppLocalizationsIt extends AppLocalizations {
|
||||
AppLocalizationsIt([String locale = 'it']) : super(locale);
|
||||
|
||||
@override
|
||||
String get appTitle => 'Ollama';
|
||||
|
||||
@override
|
||||
String get optionNewChat => 'Nuova Chat';
|
||||
|
||||
@override
|
||||
String get optionSettings => 'Impostazioni';
|
||||
|
||||
@override
|
||||
String get optionInstallPwa => 'Installa Webapp';
|
||||
|
||||
@override
|
||||
String get optionNoChatFound => 'Nessuna Chat trovata';
|
||||
|
||||
@override
|
||||
String get tipPrefix => 'Suggerimento: ';
|
||||
|
||||
@override
|
||||
String get tip0 => 'Modifica il messaggio tenendo premuto su di esso';
|
||||
|
||||
@override
|
||||
String get tip1 => 'Elimina il messaggio premendo due volte su di esso';
|
||||
|
||||
@override
|
||||
String get tip2 => 'Puoi cambiare il tema dalle impostazioni';
|
||||
|
||||
@override
|
||||
String get tip3 => 'Seleziona un modello multimodale per inserire le immagini';
|
||||
|
||||
@override
|
||||
String get tip4 => 'Le chat sono state automaticamente salvate';
|
||||
|
||||
@override
|
||||
String get deleteChat => 'Elimina';
|
||||
|
||||
@override
|
||||
String get renameChat => 'Rinomina';
|
||||
|
||||
@override
|
||||
String get takeImage => 'Seleziona immagine';
|
||||
|
||||
@override
|
||||
String get uploadImage => 'Carica immagine';
|
||||
|
||||
@override
|
||||
String get notAValidImage => 'Immagine non valida';
|
||||
|
||||
@override
|
||||
String get imageOnlyConversation => 'Conversazione di sole immagini';
|
||||
|
||||
@override
|
||||
String get messageInputPlaceholder => 'Messaggio';
|
||||
|
||||
@override
|
||||
String get tooltipAttachment => 'Aggiungi allegato';
|
||||
|
||||
@override
|
||||
String get tooltipSend => 'Invia';
|
||||
|
||||
@override
|
||||
String get tooltipSave => 'Salva';
|
||||
|
||||
@override
|
||||
String get tooltipLetAIThink => 'Lasciamo che sia IA a pensare';
|
||||
|
||||
@override
|
||||
String get tooltipAddHostHeaders => 'Aggiungi host headers';
|
||||
|
||||
@override
|
||||
String get tooltipReset => 'Reimposta la chat corrente';
|
||||
|
||||
@override
|
||||
String get tooltipOptions => 'Mostra opzioni';
|
||||
|
||||
@override
|
||||
String get noModelSelected => 'Nessun modello selezionato';
|
||||
|
||||
@override
|
||||
String get noHostSelected => 'Nessun host selezionato, apri le impostazioni per farlo';
|
||||
|
||||
@override
|
||||
String get noSelectedModel => '<modelli>';
|
||||
|
||||
@override
|
||||
String get newChatTitle => 'Chat senza nome';
|
||||
|
||||
@override
|
||||
String get modelDialogAddModel => 'Aggiungi';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptTitle => 'Aggiungi nuovo modello';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptDescription => 'Questo può essere un nome normale (ad es. \'llama3\') o nome e tag (ad es. \'llama3:70b\').';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptAlreadyExists => 'Il modello esiste già';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptInvalid => 'Nome del modello non valido';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceTitle => 'Abilita Proxy';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDescription => 'Ollama App deve controllare se il modello inserito è valido. Per questo, normalmente inviamo una richiesta web alla lista dei modelli Ollama e controlliamo il codice di stato, ma perché stai usando il web client, non possiamo farlo direttamente. Invece, l\'app invierà la richiesta a un altro api, ospitato da JHubi1, per eseguire il controllo.\nQuesta è una richiesta verrà inviata solo quando aggiungi un nuovo modello.\nIl tuo indirizzo IP verrà inviato con la richiesta e potrebbe essere memorizzato per un massimo di dieci minuti per evitare lo spamming con potenziali intenzioni nocive.\nSe accetti, la tua selezione sarà ricordata in futuro; in caso contrario, non verrà inviato nulla e il modello non verrà aggiunto.';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceAllow => 'Consenti';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDeny => 'Nega';
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceTitle(String model) {
|
||||
return 'Aggiungi $model?';
|
||||
}
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceDescription(String model) {
|
||||
return 'Premendo \'Aggiungi\' scaricherà il modello \'$model\' direttamente dal server Ollama al tuo host.\nQuesto può richiedere un po\' di tempo a seconda della tua connessione internet. L\'azione non può essere annullata.\nSe l\'app è chiusa durante il download, riprenderà se inserisci di nuovo il nome nella finestra del modello.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceAdd => 'Aggiungi';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceCancel => 'Annulla';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadPercentLoading => 'Caricamento in corso';
|
||||
|
||||
@override
|
||||
String modelDialogAddDownloadPercent(String percent) {
|
||||
return 'scarica al $percent%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadFailed => 'Disconnesso, riprova';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadSuccess => 'Download completato con successo';
|
||||
|
||||
@override
|
||||
String get deleteDialogTitle => 'Elimina Chat';
|
||||
|
||||
@override
|
||||
String get deleteDialogDescription => 'Sei sicuro di voler continuare? Tale operazione cancellerà tutta questa chat e non potrà essere annullata.\nPer disattivare questa finestra di dialogo, vai alle impostazioni.';
|
||||
|
||||
@override
|
||||
String get deleteDialogDelete => 'Elimina';
|
||||
|
||||
@override
|
||||
String get deleteDialogCancel => 'Annulla';
|
||||
|
||||
@override
|
||||
String get dialogEnterNewTitle => 'Immetti nuovo titolo';
|
||||
|
||||
@override
|
||||
String get dialogEditMessageTitle => 'Modifica Messaggio';
|
||||
|
||||
@override
|
||||
String get settingsTitleBehavior => 'Comportamento';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionBehavior => 'Modifica il comportamento dell\'AI a tuo piacimento.';
|
||||
|
||||
@override
|
||||
String get settingsTitleInterface => 'Interfaccia';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionInterface => 'Modifica l\'aspetto e il comportamento dell\'app Ollama.';
|
||||
|
||||
@override
|
||||
String get settingsTitleVoice => 'Voce';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionVoice => 'Abilita la modalità vocale e configura le impostazioni vocali.';
|
||||
|
||||
@override
|
||||
String get settingsTitleExport => 'Esporta';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionExport => 'Esporta e importa la cronologia delle tue chat.';
|
||||
|
||||
@override
|
||||
String get settingsTitleAbout => 'Informazioni';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionAbout => 'Controlla gli aggiornamenti e scopri di più su Ollama App.';
|
||||
|
||||
@override
|
||||
String get settingsSavedAutomatically => 'Le impostazioni vengono salvate automaticamente';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlpha => 'alpha';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaDescription => 'Questa funzionalità è in versione alpha e potrebbe non funzionare come previsto o previsto.\nNon si possono escludere problemi critici e/o danni critici permanenti al dispositivo e/o ai servizi utilizzati.\nL\'utilizzo è a proprio rischio. Nessuna responsabilità da parte dell\'autore dell\'app.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaFeature => 'Funzione Alpha, tieni premuto per saperne di più';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBeta => 'beta';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaDescription => 'Questa funzionalità è in versione beta e potrebbe non funzionare come previsto o previsto.\nPotrebbero verificarsi o meno problemi meno gravi. I danni non dovrebbero essere critici.\nUtilizza a tuo rischio e pericolo.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaFeature => 'Funzione Beta, tieni premuto per saperne di più';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecated => 'deprecato';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedDescription => 'Questa funzionalità è deprecata e verrà rimossa in una versione futura.\nPotrebbe non funzionare come previsto o atteso. Usare a proprio rischio.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedFeature => 'Funzionalità deprecata, tenere premuto per saperne di più';
|
||||
|
||||
@override
|
||||
String get settingsHost => 'Host';
|
||||
|
||||
@override
|
||||
String get settingsHostValid => 'Host valido';
|
||||
|
||||
@override
|
||||
String get settingsHostChecking => 'Controllo Host';
|
||||
|
||||
@override
|
||||
String settingsHostInvalid(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'URL invalido',
|
||||
'host': 'Host invalido',
|
||||
'timeout': 'Richiesta fallita. Problema col server',
|
||||
'ratelimit': 'Troppe richieste',
|
||||
'other': 'Richiesta fallita',
|
||||
},
|
||||
);
|
||||
return 'Problema: $_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderTitle => 'Imposta header host';
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderInvalid => 'Il testo immesso non è un valido oggetto JSON';
|
||||
|
||||
@override
|
||||
String settingsHostInvalidDetailed(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'L\'URL inserito non è valido. Non è un formato URL standardizzato.',
|
||||
'other': 'L\'host inserito non è valido. Non può essere raggiunto. Controlla l\'host e riprova.',
|
||||
},
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsSystemMessage => 'Messaggio di sistema';
|
||||
|
||||
@override
|
||||
String get settingsUseSystem => 'Usa Messaggio di sistema';
|
||||
|
||||
@override
|
||||
String get settingsUseSystemDescription => 'Disabilita l\'impostazione del messaggio di sistema sopra e utilizza invece quello del modello. Può essere utile per i modelli con file di modello';
|
||||
|
||||
@override
|
||||
String get settingsDisableMarkdown => 'Disabilita markdown';
|
||||
|
||||
@override
|
||||
String get settingsBehaviorNotUpdatedForOlderChats => 'Le impostazioni sul comportamento non vengono aggiornate per le chat meno recenti';
|
||||
|
||||
@override
|
||||
String get settingsShowModelTags => 'Visualizza tags modello';
|
||||
|
||||
@override
|
||||
String get settingsPreloadModels => 'Precarica modello';
|
||||
|
||||
@override
|
||||
String get settingsResetOnModelChange => 'Reimposta al cambio modello';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeStream => 'Stream';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeRequest => 'Request';
|
||||
|
||||
@override
|
||||
String get settingsGenerateTitles => 'Genera titoli';
|
||||
|
||||
@override
|
||||
String get settingsEnableEditing => 'Abilita modifica di messaggi';
|
||||
|
||||
@override
|
||||
String get settingsAskBeforeDelete => 'Chiedi prima di eliminare la chat';
|
||||
|
||||
@override
|
||||
String get settingsShowTips => 'Mostra suggerimenti nella barra laterale';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedAlways => 'Mantieni modello sempre caricato';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedNever => 'Non mantenere modello sempre caricato';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedFor => 'Imposta un tempo specifico per mantenere il modello caricato';
|
||||
|
||||
@override
|
||||
String settingsKeepModelLoadedSet(String minutes) {
|
||||
return 'Mantieni modello caricato per $minutes minuti';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplier => 'Moltiplicatore di timeout';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierDescription => 'Seleziona il moltiplicatore che viene applicato a ogni valore di timeout nell\'applicazione. Può essere utile con una connessione internet lenta o un host lento.';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierExample => 'Es. messaggio di timeout:';
|
||||
|
||||
@override
|
||||
String get settingsEnableHapticFeedback => 'Abilita il feedback tattile';
|
||||
|
||||
@override
|
||||
String get settingsMaximizeOnStart => 'Inizzia massimizzato';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessSystem => 'Sistema';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessLight => 'Chiaro';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessDark => 'Scuro';
|
||||
|
||||
@override
|
||||
String get settingsThemeDevice => 'Dispositivo';
|
||||
|
||||
@override
|
||||
String get settingsThemeOllama => 'Ollama';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixes => 'Aggiustamenti temporanei dell\'interfaccia';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesDescription => 'Abilita correzioni temporanee per problemi dell\'interfaccia.\nPremi a lungo sulle opzioni individuali per saperne di più.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesInstructions => 'Non attivare nessuna di queste impostazioni a meno che tu non sappia cosa stai facendo! Le soluzioni fornite potrebbero non funzionare come previsto. \nNon possono essere considerate definitive o giudicate come tali. Potrebbero verificarsi problemi.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesNoFixes => 'Nessuna correzione disponibile';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionLoading => 'Caricamento permessi voce ...';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupported => 'Text-to-speech non supportato';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupportedDescription => 'I servizi di text-to-speech non sono supportati per la lingua selezionata. Seleziona una lingua diversa nel menu a discesa delle lingue per riattivarli.\nAltri servizi come il riconoscimento vocale e il pensiero dell\'IA funzioneranno comunque normalmente, ma l\'interazione potrebbe non essere fluida.';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionNot => 'Permessi non concessi';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotEnabled => 'Modalità vocale non abilitata';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotSupported => 'Modalità vocale non supportata';
|
||||
|
||||
@override
|
||||
String get settingsVoiceEnable => 'Abilita modalità vocale';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNoLanguage => 'Nessuna lingua selezionata';
|
||||
|
||||
@override
|
||||
String get settingsVoiceLimitLanguage => 'Limita alla lingua selezionata';
|
||||
|
||||
@override
|
||||
String get settingsVoicePunctuation => 'Abilita la punteggiatura AI';
|
||||
|
||||
@override
|
||||
String get settingsExportChats => 'Esporta chats';
|
||||
|
||||
@override
|
||||
String get settingsExportChatsSuccess => 'Chat esportate con successo';
|
||||
|
||||
@override
|
||||
String get settingsImportChats => 'Importa chats';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsTitle => 'Importa';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsDescription => 'Il passaggio successivo importerà le chat dal file selezionato. Ciò sovrascriverà tutte le chat attualmente disponibili.\nVuoi continuare?';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsImport => 'Importa e cancella';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsCancel => 'Annulla';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsSuccess => 'Chats importate con successo';
|
||||
|
||||
@override
|
||||
String get settingsExportInfo => 'Questa opzione ti consente di esportare e importare la cronologia chat. Questo può essere utile se desideri trasferire la cronologia chat su un altro dispositivo o eseguire il backup della cronologia chat';
|
||||
|
||||
@override
|
||||
String get settingsExportWarning => 'Più cronologie di chat non verranno unite! Perderai la cronologia chat attuale se ne importi una nuova';
|
||||
|
||||
@override
|
||||
String get settingsUpdateCheck => 'Controlla aggiornamenti';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChecking => 'Sto cercando aggiornamenti ...';
|
||||
|
||||
@override
|
||||
String get settingsUpdateLatest => 'Hai l\'ultima versione';
|
||||
|
||||
@override
|
||||
String settingsUpdateAvailable(String version) {
|
||||
return 'Aggiornamento disponibile (v$version)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsUpdateRateLimit => 'Impossibile verificare, limite di accesso API superato';
|
||||
|
||||
@override
|
||||
String get settingsUpdateIssue => 'Si è verificato un errore';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogTitle => 'Nuova versione disponibile';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogDescription => 'È disponibile una nuova versione di Ollama. Vuoi scaricarla e installarla adesso?';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChangeLog => 'Cambiamenti';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogUpdate => 'Aggiorna';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogCancel => 'Annulla';
|
||||
|
||||
@override
|
||||
String get settingsCheckForUpdates => 'Controlla gli aggiornamenti all\'apertura';
|
||||
|
||||
@override
|
||||
String get settingsGithub => 'GitHub';
|
||||
|
||||
@override
|
||||
String get settingsReportIssue => 'Riporta problema';
|
||||
|
||||
@override
|
||||
String get settingsLicenses => 'Licenze';
|
||||
|
||||
@override
|
||||
String settingsVersion(String version) {
|
||||
return 'Ollama App v$version';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,484 @@
|
|||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for Turkish (`tr`).
|
||||
class AppLocalizationsTr extends AppLocalizations {
|
||||
AppLocalizationsTr([String locale = 'tr']) : super(locale);
|
||||
|
||||
@override
|
||||
String get appTitle => 'Ollama';
|
||||
|
||||
@override
|
||||
String get optionNewChat => 'Yeni Sohbet';
|
||||
|
||||
@override
|
||||
String get optionSettings => 'Ayarlar';
|
||||
|
||||
@override
|
||||
String get optionInstallPwa => 'Web Uygulamasını Yükle';
|
||||
|
||||
@override
|
||||
String get optionNoChatFound => 'Sohbet bulunamadı';
|
||||
|
||||
@override
|
||||
String get tipPrefix => 'İpucu: ';
|
||||
|
||||
@override
|
||||
String get tip0 => 'Mesajları düzenlemek için üzerlerine uzun basın';
|
||||
|
||||
@override
|
||||
String get tip1 => 'Mesajları silmek için üzerlerine çift dokunun';
|
||||
|
||||
@override
|
||||
String get tip2 => 'Temayı ayarlardan değiştirebilirsiniz';
|
||||
|
||||
@override
|
||||
String get tip3 => 'Görsel girmek için çoklu modlu bir model seçin';
|
||||
|
||||
@override
|
||||
String get tip4 => 'Sohbetler otomatik olarak kaydedilir';
|
||||
|
||||
@override
|
||||
String get deleteChat => 'Sil';
|
||||
|
||||
@override
|
||||
String get renameChat => 'Yeniden adlandır';
|
||||
|
||||
@override
|
||||
String get takeImage => 'Fotoğraf Çek';
|
||||
|
||||
@override
|
||||
String get uploadImage => 'Görsel Yükle';
|
||||
|
||||
@override
|
||||
String get notAValidImage => 'Geçerli bir görsel değil';
|
||||
|
||||
@override
|
||||
String get imageOnlyConversation => 'Sadece Görsel İçeren Konuşma';
|
||||
|
||||
@override
|
||||
String get messageInputPlaceholder => 'Mesaj';
|
||||
|
||||
@override
|
||||
String get tooltipAttachment => 'Ek ekle';
|
||||
|
||||
@override
|
||||
String get tooltipSend => 'Gönder';
|
||||
|
||||
@override
|
||||
String get tooltipSave => 'Kaydet';
|
||||
|
||||
@override
|
||||
String get tooltipLetAIThink => 'AI\'\'nın düşünmesine izin ver';
|
||||
|
||||
@override
|
||||
String get tooltipAddHostHeaders => 'Ana bilgisayar başlıkları ekle';
|
||||
|
||||
@override
|
||||
String get tooltipReset => 'Mevcut sohbeti sıfırla';
|
||||
|
||||
@override
|
||||
String get tooltipOptions => 'Seçenekleri göster';
|
||||
|
||||
@override
|
||||
String get noModelSelected => 'Model seçilmedi';
|
||||
|
||||
@override
|
||||
String get noHostSelected => 'Ana bilgisayar seçilmedi, ayarları açıp bir tane belirleyin';
|
||||
|
||||
@override
|
||||
String get noSelectedModel => '<seçici>';
|
||||
|
||||
@override
|
||||
String get newChatTitle => 'İsimsiz Sohbet';
|
||||
|
||||
@override
|
||||
String get modelDialogAddModel => 'Ekle';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptTitle => 'Yeni model ekle';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptDescription => 'Bu normal bir isim (örneğin \'llama3\') ya da isim ve etiket (örneğin \'llama3:70b\') olabilir.';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptAlreadyExists => 'Model zaten mevcut';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptInvalid => 'Geçersiz model adı';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceTitle => 'Proxy\'e İzin Ver';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDescription => 'Ollama Uygulaması, girilen modelin geçerli olup olmadığını kontrol etmelidir. Bunun için normalde Ollama model listesine bir web isteği gönderir ve durum kodunu kontrol ederiz, ancak siz web istemcisini kullandığınız için bunu doğrudan yapamayız. Bunun yerine, uygulama bizim için kontrol etmek amacıyla JHubi1 tarafından barındırılan farklı bir API\'ye istek gönderecek. \nBu, yalnızca bir kez yapılan bir istektir ve yalnızca yeni bir model eklediğinizde gönderilecektir. \nIP adresiniz istekle birlikte gönderilecek ve olası zararlı niyetlerle spam yapılmasını önlemek amacıyla on dakikaya kadar saklanabilir. \nKabul ederseniz, seçiminiz gelecekte hatırlanacaktır; kabul etmezseniz, hiçbir şey gönderilmeyecek ve model eklenmeyecektir.';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceAllow => 'İzin ver';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDeny => 'Reddet';
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceTitle(String model) {
|
||||
return '$model Ekle?';
|
||||
}
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceDescription(String model) {
|
||||
return '\'Ekle\' tuşuna basmak, \'$model\' modelini doğrudan Ollama sunucusundan bilgisayarınıza indirecektir. İnternet bağlantınıza bağlı olarak bu işlem biraz zaman alabilir. Bu işlem iptal edilemez. Uygulama indirme sırasında kapatılırsa, model adını tekrar model diyaloguna girerseniz indirme işlemi kaldığı yerden devam eder.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceAdd => 'Ekle';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceCancel => 'İptal';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadPercentLoading => 'yükleme ilerleme durumu';
|
||||
|
||||
@override
|
||||
String modelDialogAddDownloadPercent(String percent) {
|
||||
return '%$percent oranında indir';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadFailed => 'Bağlantı kesildi, yeniden deneyin';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadSuccess => 'İndirme tamamlandı';
|
||||
|
||||
@override
|
||||
String get deleteDialogTitle => 'Sohbeti Sil';
|
||||
|
||||
@override
|
||||
String get deleteDialogDescription => 'Devam etmek istediğinizden emin misiniz? Bu işlem, bu sohbetin tüm hafızasını silecek ve geri alınamaz.\nBu dialogu devre dışı bırakmak için ayarları ziyaret edin.';
|
||||
|
||||
@override
|
||||
String get deleteDialogDelete => 'Sil';
|
||||
|
||||
@override
|
||||
String get deleteDialogCancel => 'İptal';
|
||||
|
||||
@override
|
||||
String get dialogEnterNewTitle => 'Yeni başlık girin';
|
||||
|
||||
@override
|
||||
String get dialogEditMessageTitle => 'Mesajı düzenle';
|
||||
|
||||
@override
|
||||
String get settingsTitleBehavior => 'Davranış';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionBehavior => 'Yapay zekanın davranışını istediğiniz gibi değiştirin.';
|
||||
|
||||
@override
|
||||
String get settingsTitleInterface => 'Arayüz';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionInterface => 'Ollama Uygulamasının görünümünü ve davranışını düzenleyin.';
|
||||
|
||||
@override
|
||||
String get settingsTitleVoice => 'Ses';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionVoice => 'Ses modunu etkinleştirin ve ses ayarlarını yapılandırın.';
|
||||
|
||||
@override
|
||||
String get settingsTitleExport => 'Dışa Aktar';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionExport => 'Sohbet geçmişinizi dışa ve içe aktarın.';
|
||||
|
||||
@override
|
||||
String get settingsTitleAbout => 'Hakkında';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionAbout => 'Güncellemeleri kontrol edin ve Ollama Uygulaması hakkında daha fazla bilgi edinin.';
|
||||
|
||||
@override
|
||||
String get settingsSavedAutomatically => 'Ayarlar otomatik olarak kaydedilir';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlpha => 'alfa';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaDescription => 'Bu özellik alfa aşamasındadır ve beklendiği gibi çalışmayabilir.\nKritik sorunlar ve/veya cihaza ve/veya kullanılan hizmetlere kalıcı kritik hasar verilebilme ihtimali göz ardı edilemez.\nKendi sorumluluğunuzda kullanın. Uygulama yazarının hiçbir sorumluluğu yoktur.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaFeature => 'Alfa özelliği, daha fazla bilgi için basılı tutun';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBeta => 'beta';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaDescription => 'Bu özellik beta aşamasındadır ve beklendiği gibi çalışmayabilir.\nDaha az ciddi sorunlar ortaya çıkabilir. Hasar kritik olmamalıdır.\nKendi sorumluluğunuzda kullanın.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaFeature => 'Beta özelliği, daha fazla bilgi için basılı tutun';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecated => 'kullanım dışı';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedDescription => 'Bu özellik kullanımdan kaldırılmıştır ve gelecekteki bir sürümde kaldırılacaktır.\nAmaçlandığı veya beklendiği gibi çalışmayabilir. Kullanım riski size aittir.';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedFeature => 'Kullanımdan kaldırılan özellik, daha fazla bilgi için bekleyin';
|
||||
|
||||
@override
|
||||
String get settingsHost => 'Ana bilgisayar';
|
||||
|
||||
@override
|
||||
String get settingsHostValid => 'Geçerli Ana Bilgisayar';
|
||||
|
||||
@override
|
||||
String get settingsHostChecking => 'Ana Bilgisayar Kontrol Ediliyor';
|
||||
|
||||
@override
|
||||
String settingsHostInvalid(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'Geçersiz URL',
|
||||
'host': 'Geçersiz Ana Bilgisayar',
|
||||
'timeout': 'İstek Başarısız. Sunucu sorunları',
|
||||
'ratelimit': 'Çok fazla istek',
|
||||
'other': 'İstek Başarısız',
|
||||
},
|
||||
);
|
||||
return 'Sorun: $_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderTitle => 'Ana bilgisayar başlığını ayarla';
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderInvalid => 'Girilen metin geçerli bir başlık JSON nesnesi değil';
|
||||
|
||||
@override
|
||||
String settingsHostInvalidDetailed(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': 'Girdiğiniz URL geçersiz. Standart bir URL formatında değil.',
|
||||
'other': 'Girdiğiniz ana bilgisayar geçersiz. Ulaşılamıyor. Lütfen ana bilgisayarı kontrol edin ve tekrar deneyin.',
|
||||
},
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsSystemMessage => 'Sistem mesajı';
|
||||
|
||||
@override
|
||||
String get settingsUseSystem => 'Sistem mesajını kullan';
|
||||
|
||||
@override
|
||||
String get settingsUseSystemDescription => 'Yukarıdaki sistem mesajını ayarlamayı devre dışı bırakır ve bunun yerine modelin mesajını kullanır. Model dosyaları olan modeller için yararlı olabilir';
|
||||
|
||||
@override
|
||||
String get settingsDisableMarkdown => 'Markdown\'\'ı devre dışı bırak';
|
||||
|
||||
@override
|
||||
String get settingsBehaviorNotUpdatedForOlderChats => 'Davranış ayarları eski sohbetler için güncellenmez';
|
||||
|
||||
@override
|
||||
String get settingsShowModelTags => 'Model etiketlerini göster';
|
||||
|
||||
@override
|
||||
String get settingsPreloadModels => 'Ön yükleme modelleri';
|
||||
|
||||
@override
|
||||
String get settingsResetOnModelChange => 'Model değiştiğinde sıfırla';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeStream => 'Akış';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeRequest => 'İstek';
|
||||
|
||||
@override
|
||||
String get settingsGenerateTitles => 'Başlıklar oluştur';
|
||||
|
||||
@override
|
||||
String get settingsEnableEditing => 'Mesaj düzenlemeyi etkinleştir';
|
||||
|
||||
@override
|
||||
String get settingsAskBeforeDelete => 'Sohbet silmeden önce sor';
|
||||
|
||||
@override
|
||||
String get settingsShowTips => 'Kenar çubuğunda ipuçlarını göster';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedAlways => 'Modeli her zaman yüklü tut';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedNever => 'Modeli yüklü tutma';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedFor => 'Modelin yüklü kalacağı belirli bir süre ayarla';
|
||||
|
||||
@override
|
||||
String settingsKeepModelLoadedSet(String minutes) {
|
||||
return 'Modeli $minutes dakika boyunca yüklü tut';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplier => 'Zaman aşımı çarpanı';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierDescription => 'Uygulamadaki her zaman aşımı değerine uygulanacak çarpanı seçin. Yavaş bir internet bağlantısı veya yavaş bir ana bilgisayar ile yararlı olabilir.';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierExample => 'Örn. mesaj zaman aşımı:';
|
||||
|
||||
@override
|
||||
String get settingsEnableHapticFeedback => 'Dokunsal geri bildirimi etkinleştir';
|
||||
|
||||
@override
|
||||
String get settingsMaximizeOnStart => 'Başlangıçta maksimize et';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessSystem => 'Sistem';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessLight => 'Açık';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessDark => 'Koyu';
|
||||
|
||||
@override
|
||||
String get settingsThemeDevice => 'Cihaz';
|
||||
|
||||
@override
|
||||
String get settingsThemeOllama => 'Ollama';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixes => 'Geçici arayüz düzeltmeleri';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesDescription => 'Arayüz sorunları için geçici düzeltmeleri etkinleştirin. \nDaha fazla bilgi edinmek için tek tek seçeneklere uzun basın.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesInstructions => 'Ne yaptığınızı bilmiyorsanız bu ayarlardan herhangi birini değiştirmeyin! Verilen çözümler beklendiği gibi çalışmayabilir.\nBunlar nihai olarak görülemez veya bu şekilde değerlendirilmemelidir. Sorunlar ortaya çıkabilir.';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesNoFixes => 'Herhangi bir düzeltme mevcut değil';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionLoading => 'Ses izinleri yükleniyor ...';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupported => 'Metinden sese desteklenmiyor';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupportedDescription => 'Metinden sese hizmetleri seçilen dil için desteklenmiyor. Bunları yeniden etkinleştirmek için dil çekmecesinde farklı bir dil seçin.\nSes tanıma ve yapay zeka ile düşünme gibi diğer hizmetler her zamanki gibi çalışmaya devam eder, ancak etkileşim o kadar akıcı olmayabilir.';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionNot => 'İzinler verilmedi';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotEnabled => 'Ses modu etkin değil';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotSupported => 'Ses modu desteklenmiyor';
|
||||
|
||||
@override
|
||||
String get settingsVoiceEnable => 'Ses modunu etkinleştir';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNoLanguage => 'Dil seçilmedi';
|
||||
|
||||
@override
|
||||
String get settingsVoiceLimitLanguage => 'Seçili dille sınırla';
|
||||
|
||||
@override
|
||||
String get settingsVoicePunctuation => 'Yapay zeka noktalama işaretlerini etkinleştir';
|
||||
|
||||
@override
|
||||
String get settingsExportChats => 'Sohbetleri dışa aktar';
|
||||
|
||||
@override
|
||||
String get settingsExportChatsSuccess => 'Sohbetler başarıyla dışa aktarıldı';
|
||||
|
||||
@override
|
||||
String get settingsImportChats => 'Sohbetleri içe aktar';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsTitle => 'İçe Aktar';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsDescription => 'Sonraki adım, seçilen dosyadan sohbetleri içe aktaracaktır. Bu işlem, şu anda mevcut olan tüm sohbetlerin üzerine yazacaktır.\nDevam etmek istiyor musunuz?';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsImport => 'İçe Aktar ve Sil';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsCancel => 'İptal';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsSuccess => 'Sohbetler başarıyla içe aktarıldı';
|
||||
|
||||
@override
|
||||
String get settingsExportInfo => 'Bu seçenekler, sohbet geçmişinizi dışa ve içe aktarmanıza olanak tanır. Bu, sohbet geçmişinizi başka bir cihaza aktarmak veya yedeklemek istediğinizde kullanışlı olabilir';
|
||||
|
||||
@override
|
||||
String get settingsExportWarning => 'Birden fazla sohbet geçmişi birleştirilmeyecek! Yeni bir sohbet geçmişi içe aktarırsanız mevcut sohbet geçmişinizi kaybedeceksiniz';
|
||||
|
||||
@override
|
||||
String get settingsUpdateCheck => 'Güncellemeleri kontrol et';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChecking => 'Güncellemeler kontrol ediliyor ...';
|
||||
|
||||
@override
|
||||
String get settingsUpdateLatest => 'En son sürümü kullanıyorsunuz';
|
||||
|
||||
@override
|
||||
String settingsUpdateAvailable(String version) {
|
||||
return 'Güncelleme mevcut (v$version)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsUpdateRateLimit => 'Kontrol edilemiyor, API hız sınırı aşıldı';
|
||||
|
||||
@override
|
||||
String get settingsUpdateIssue => 'Bir sorun oluştu';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogTitle => 'Yeni sürüm mevcut';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogDescription => 'Ollama\'\'nın yeni bir sürümü mevcut. Şimdi indirip kurmak istiyor musunuz?';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChangeLog => 'Değişiklik Günlüğü';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogUpdate => 'Güncelle';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogCancel => 'İptal';
|
||||
|
||||
@override
|
||||
String get settingsCheckForUpdates => 'Açılışta güncellemeleri kontrol et';
|
||||
|
||||
@override
|
||||
String get settingsGithub => 'GitHub';
|
||||
|
||||
@override
|
||||
String get settingsReportIssue => 'Sorun Bildir';
|
||||
|
||||
@override
|
||||
String get settingsLicenses => 'Lisanslar';
|
||||
|
||||
@override
|
||||
String settingsVersion(String version) {
|
||||
return 'Ollama App v$version';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,483 @@
|
|||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for Chinese (`zh`).
|
||||
class AppLocalizationsZh extends AppLocalizations {
|
||||
AppLocalizationsZh([String locale = 'zh']) : super(locale);
|
||||
|
||||
@override
|
||||
String get appTitle => 'Ollama';
|
||||
|
||||
@override
|
||||
String get optionNewChat => '新建聊天';
|
||||
|
||||
@override
|
||||
String get optionSettings => '设置';
|
||||
|
||||
@override
|
||||
String get optionInstallPwa => '安装 Webapp';
|
||||
|
||||
@override
|
||||
String get optionNoChatFound => '暂无聊天消息';
|
||||
|
||||
@override
|
||||
String get tipPrefix => '提示: ';
|
||||
|
||||
@override
|
||||
String get tip0 => '长按编辑消息';
|
||||
|
||||
@override
|
||||
String get tip1 => '双击删除消息';
|
||||
|
||||
@override
|
||||
String get tip2 => '您可以在设置中更改主题';
|
||||
|
||||
@override
|
||||
String get tip3 => '选择一个多模态模型来输入图像';
|
||||
|
||||
@override
|
||||
String get tip4 => '聊天记录会自动保存';
|
||||
|
||||
@override
|
||||
String get deleteChat => '删除';
|
||||
|
||||
@override
|
||||
String get renameChat => '重命名';
|
||||
|
||||
@override
|
||||
String get takeImage => '拍摄图像';
|
||||
|
||||
@override
|
||||
String get uploadImage => '上传图像';
|
||||
|
||||
@override
|
||||
String get notAValidImage => '不是一个有效的图片文件.';
|
||||
|
||||
@override
|
||||
String get imageOnlyConversation => '仅图片对话';
|
||||
|
||||
@override
|
||||
String get messageInputPlaceholder => '消息';
|
||||
|
||||
@override
|
||||
String get tooltipAttachment => '添加附件';
|
||||
|
||||
@override
|
||||
String get tooltipSend => '发送';
|
||||
|
||||
@override
|
||||
String get tooltipSave => '保存';
|
||||
|
||||
@override
|
||||
String get tooltipLetAIThink => '让AI思考';
|
||||
|
||||
@override
|
||||
String get tooltipAddHostHeaders => '设置主机请求头';
|
||||
|
||||
@override
|
||||
String get tooltipReset => '重置当前聊天';
|
||||
|
||||
@override
|
||||
String get tooltipOptions => '显示选项';
|
||||
|
||||
@override
|
||||
String get noModelSelected => '未选择模型';
|
||||
|
||||
@override
|
||||
String get noHostSelected => '没有填写主机地址,请打开设置以进行设置';
|
||||
|
||||
@override
|
||||
String get noSelectedModel => '<模型选择>';
|
||||
|
||||
@override
|
||||
String get newChatTitle => '未命名的聊天';
|
||||
|
||||
@override
|
||||
String get modelDialogAddModel => '添加';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptTitle => '添加新模型';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptDescription => '可以是一个普通名称(如:\'llama3\'),也可以是名称加标签(如:\'llama3:70b\')。';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptAlreadyExists => '模型已存在';
|
||||
|
||||
@override
|
||||
String get modelDialogAddPromptInvalid => '无效的模型名称';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceTitle => '允许代理服务器';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDescription => 'Ollama 应用程序必须检查输入的模型是否有效。 为此,我们通常向Ollama模型列表发送一个网络请求并检查状态。 由于您正在使用 Web 客户端,我们不能直接做到这一点。 因此,应用将把请求发送到另一个由 JHubi 1 部署的api 上进行检查。\n这是一个一次性请求,只有当您添加一个新模型时才会发送。\n您的IP地址将与请求一起发送,可能会被存储长达10分钟,以防止潜在的有害故障。\n如果您接受,您的选择将在将来被记住;如果不接受,将不会发送任何内容,也不会添加模型。';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceAllow => '允许';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAllowanceDeny => '拒绝';
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceTitle(String model) {
|
||||
return '添加$model?';
|
||||
}
|
||||
|
||||
@override
|
||||
String modelDialogAddAssuranceDescription(String model) {
|
||||
return '按下“添加”将直接从 Ollama 服务器下载模型“$model”到您的主机。\n这可能需要一些时间,取决于您的互联网连接。该操作不能被取消。\n如果在下载过程中关闭应用,当您再次在模型对话框中输入名称,它将恢复之前的下载。';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceAdd => '添加';
|
||||
|
||||
@override
|
||||
String get modelDialogAddAssuranceCancel => '取消';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadPercentLoading => '加载进度';
|
||||
|
||||
@override
|
||||
String modelDialogAddDownloadPercent(String percent) {
|
||||
return '已下载 $percent%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadFailed => '连接断开,请重试';
|
||||
|
||||
@override
|
||||
String get modelDialogAddDownloadSuccess => '下载成功';
|
||||
|
||||
@override
|
||||
String get deleteDialogTitle => '删除聊天';
|
||||
|
||||
@override
|
||||
String get deleteDialogDescription => '您确定要继续吗?这将删除此聊天的所有记录,且无法撤消。\n要禁用此对话框,请访问设置。';
|
||||
|
||||
@override
|
||||
String get deleteDialogDelete => '删除';
|
||||
|
||||
@override
|
||||
String get deleteDialogCancel => '取消';
|
||||
|
||||
@override
|
||||
String get dialogEnterNewTitle => '输入新标题';
|
||||
|
||||
@override
|
||||
String get dialogEditMessageTitle => '编辑消息';
|
||||
|
||||
@override
|
||||
String get settingsTitleBehavior => '行为';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionBehavior => '根据您的喜好修改AI的行为';
|
||||
|
||||
@override
|
||||
String get settingsTitleInterface => '界面';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionInterface => '修改 Ollama App的外观和行为';
|
||||
|
||||
@override
|
||||
String get settingsTitleVoice => '语音';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionVoice => '启用语音模式并进行设置。';
|
||||
|
||||
@override
|
||||
String get settingsTitleExport => '导出';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionExport => '导出和导入您的聊天记录。';
|
||||
|
||||
@override
|
||||
String get settingsTitleAbout => '关于';
|
||||
|
||||
@override
|
||||
String get settingsDescriptionAbout => '检查更新并了解更多关于Ollama App的信息。';
|
||||
|
||||
@override
|
||||
String get settingsSavedAutomatically => '设置已自动保存';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlpha => 'alpha';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaDescription => '此功能处于 Alpha 测试阶段,可能无法按预期工作。\n无法排除会对设备、服务造成严重问题或永久性重大损害。\n使用需自行承担风险。应用作者不承担任何责任。';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalAlphaFeature => 'Alpha功能,按住以了解更多';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBeta => 'beta';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaDescription => '此功能处于 Beta 测试阶段,可能无法按预期工作。\n可能会出现较轻微的问题,损害预期不严重。\n使用需自行承担风险。';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalBetaFeature => 'Beta测试版功能,按住以了解更多';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecated => '已弃用';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedDescription => '此功能已被弃用,并将在将来的版本中删除。\n它可能无法像预期的那样工作。请自行承担风险。';
|
||||
|
||||
@override
|
||||
String get settingsExperimentalDeprecatedFeature => '已弃用的功能,按住以了解更多';
|
||||
|
||||
@override
|
||||
String get settingsHost => '主机地址';
|
||||
|
||||
@override
|
||||
String get settingsHostValid => '有效主机地址';
|
||||
|
||||
@override
|
||||
String get settingsHostChecking => '正在检查主机地址';
|
||||
|
||||
@override
|
||||
String settingsHostInvalid(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': '无效的URL',
|
||||
'host': '无效的主机地址',
|
||||
'timeout': '请求失败。服务器问题',
|
||||
'other': '请求失败',
|
||||
},
|
||||
);
|
||||
return '问题:$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderTitle => '设置主机请求头';
|
||||
|
||||
@override
|
||||
String get settingsHostHeaderInvalid => '输入的文本不是有效的标题 JSON 对象';
|
||||
|
||||
@override
|
||||
String settingsHostInvalidDetailed(String type) {
|
||||
String _temp0 = intl.Intl.selectLogic(
|
||||
type,
|
||||
{
|
||||
'url': '您输入的 URL 无效。它不是一个标准的 URL 格式。',
|
||||
'other': '您输入的主机地址无效。无法连接。请检查主机地址并再试一次',
|
||||
},
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsSystemMessage => '系统信息';
|
||||
|
||||
@override
|
||||
String get settingsUseSystem => '使用系统信息';
|
||||
|
||||
@override
|
||||
String get settingsUseSystemDescription => '使用模型内嵌代替系统级别的消息。对于具有模型描述文件的模型可能会有用。';
|
||||
|
||||
@override
|
||||
String get settingsDisableMarkdown => '禁用Markdown';
|
||||
|
||||
@override
|
||||
String get settingsBehaviorNotUpdatedForOlderChats => '行为设置未针对旧聊天进行更新';
|
||||
|
||||
@override
|
||||
String get settingsShowModelTags => '显示模型标签';
|
||||
|
||||
@override
|
||||
String get settingsPreloadModels => '预加载模型';
|
||||
|
||||
@override
|
||||
String get settingsResetOnModelChange => '模型更改时重置';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeStream => '流式';
|
||||
|
||||
@override
|
||||
String get settingsRequestTypeRequest => '请求';
|
||||
|
||||
@override
|
||||
String get settingsGenerateTitles => '生成标题';
|
||||
|
||||
@override
|
||||
String get settingsEnableEditing => '启用消息编辑';
|
||||
|
||||
@override
|
||||
String get settingsAskBeforeDelete => '删除聊天前确认';
|
||||
|
||||
@override
|
||||
String get settingsShowTips => '在侧边栏显示提示';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedAlways => '始终保持模型加载';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedNever => '不保持模型加载';
|
||||
|
||||
@override
|
||||
String get settingsKeepModelLoadedFor => '设置模型加载的时间';
|
||||
|
||||
@override
|
||||
String settingsKeepModelLoadedSet(String minutes) {
|
||||
return '保持模型加载 $minutes 分钟';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplier => '超时时间倍倍数';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierDescription => '选择应用程序中每个超时时间的倍数。适用于较慢的网络连接或远程主机。';
|
||||
|
||||
@override
|
||||
String get settingsTimeoutMultiplierExample => '例如:消息超时:';
|
||||
|
||||
@override
|
||||
String get settingsEnableHapticFeedback => '启用触觉反馈';
|
||||
|
||||
@override
|
||||
String get settingsMaximizeOnStart => '最大化';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessSystem => '系统';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessLight => '明亮';
|
||||
|
||||
@override
|
||||
String get settingsBrightnessDark => '黑暗';
|
||||
|
||||
@override
|
||||
String get settingsThemeDevice => '设备主题';
|
||||
|
||||
@override
|
||||
String get settingsThemeOllama => 'Ollama主题';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixes => '临时界面修复';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesDescription => '启用界面问题的临时修复。\n长按选项以了解更多信息。';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesInstructions => '不要切换这些设置,除非你知道自己在做什么!描述的行为可能不会按照预期工作。\n它们不能被视为最终结果。可能会导致一些问题。';
|
||||
|
||||
@override
|
||||
String get settingsTemporaryFixesNoFixes => '没有可用的修复';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionLoading => '加载语音权限...';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupported => '不支持文本转语音';
|
||||
|
||||
@override
|
||||
String get settingsVoiceTtsNotSupportedDescription => '所选的语言不支持文字转语音服务,您可能需要选择其他语言以启用该功能。\n语音识别和 AI 等其他服务仍可正常工作,但交互可能无法流畅运行。';
|
||||
|
||||
@override
|
||||
String get settingsVoicePermissionNot => '未授予权限';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotEnabled => '语音模式未启用';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNotSupported => '不支持语音模式';
|
||||
|
||||
@override
|
||||
String get settingsVoiceEnable => '启用语音模式';
|
||||
|
||||
@override
|
||||
String get settingsVoiceNoLanguage => '未选择语言';
|
||||
|
||||
@override
|
||||
String get settingsVoiceLimitLanguage => '限制为所选语言';
|
||||
|
||||
@override
|
||||
String get settingsVoicePunctuation => '启用AI标点';
|
||||
|
||||
@override
|
||||
String get settingsExportChats => '导出聊天记录';
|
||||
|
||||
@override
|
||||
String get settingsExportChatsSuccess => '聊天记录导出成功';
|
||||
|
||||
@override
|
||||
String get settingsImportChats => '导入聊天记录';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsTitle => '导入';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsDescription => '以下步骤将从所选文件导入聊天记录。这将覆盖所有当前的聊天记录。\n您要继续吗?';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsImport => '导入并删除';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsCancel => '取消';
|
||||
|
||||
@override
|
||||
String get settingsImportChatsSuccess => '聊天记录导入成功';
|
||||
|
||||
@override
|
||||
String get settingsExportInfo => '这个选项允许您导出和导入您的聊天记录。如果您想将聊天记录转移到另一台设备或备份您的聊天记录,这可能会很有用。';
|
||||
|
||||
@override
|
||||
String get settingsExportWarning => '多个聊天记录将不会合并!如果导入新的聊天记录,您将丢失当前的聊天记录';
|
||||
|
||||
@override
|
||||
String get settingsUpdateCheck => '检查更新';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChecking => '检查更新中...';
|
||||
|
||||
@override
|
||||
String get settingsUpdateLatest => '当前为最新版本';
|
||||
|
||||
@override
|
||||
String settingsUpdateAvailable(String version) {
|
||||
return '有可用更新 (v$version)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get settingsUpdateRateLimit => '无法检查,API使用已超过速率限制';
|
||||
|
||||
@override
|
||||
String get settingsUpdateIssue => '更新服务出错';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogTitle => '有可用的新版本';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogDescription => 'Ollama有新版本可用。是否下载并安装?';
|
||||
|
||||
@override
|
||||
String get settingsUpdateChangeLog => '更新日志';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogUpdate => '更新';
|
||||
|
||||
@override
|
||||
String get settingsUpdateDialogCancel => '取消';
|
||||
|
||||
@override
|
||||
String get settingsCheckForUpdates => '启动时检查更新';
|
||||
|
||||
@override
|
||||
String get settingsGithub => 'GitHub';
|
||||
|
||||
@override
|
||||
String get settingsReportIssue => '问题反馈';
|
||||
|
||||
@override
|
||||
String get settingsLicenses => '开源许可证';
|
||||
|
||||
@override
|
||||
String settingsVersion(String version) {
|
||||
return 'Ollama App v$version';
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@ import 'package:file_picker/file_picker.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'screen_settings.dart';
|
||||
import 'screen_voice.dart';
|
||||
|
@ -496,7 +496,9 @@ class _MainAppState extends State<MainApp> {
|
|||
: () async {
|
||||
selectionHaptic();
|
||||
if (!chatAllowed &&
|
||||
chatUuid == jsonDecode(item)["uuid"]) return;
|
||||
chatUuid == jsonDecode(item)["uuid"]) {
|
||||
return;
|
||||
}
|
||||
if (!allowSettings) return;
|
||||
String oldTitle = jsonDecode(item)["title"];
|
||||
var newTitle = await prompt(context,
|
||||
|
@ -770,10 +772,6 @@ class _MainAppState extends State<MainApp> {
|
|||
}
|
||||
|
||||
if (!(allowSettings || useHost)) {
|
||||
// ignore: use_build_context_synchronously
|
||||
resetSystemNavigation(context,
|
||||
statusBarColor: Colors.black,
|
||||
systemNavigationBarColor: Colors.black);
|
||||
showDialog(
|
||||
// ignore: use_build_context_synchronously
|
||||
context: context,
|
||||
|
@ -836,8 +834,6 @@ class _MainAppState extends State<MainApp> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
resetSystemNavigation(context);
|
||||
|
||||
Widget selector = InkWell(
|
||||
onTap: !useModel
|
||||
? () {
|
||||
|
|
|
@ -8,7 +8,8 @@ import 'worker/haptic.dart';
|
|||
import 'worker/update.dart';
|
||||
import 'worker/desktop.dart';
|
||||
import 'worker/setter.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'settings/behavior.dart';
|
||||
import 'settings/interface.dart';
|
||||
|
|
|
@ -5,7 +5,7 @@ import 'package:speech_to_text/speech_to_text.dart' as stt;
|
|||
import 'package:ollama_dart/ollama_dart.dart' as llama;
|
||||
import 'package:datetime_loop/datetime_loop.dart';
|
||||
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'main.dart';
|
||||
import 'worker/sender.dart';
|
||||
|
@ -185,11 +185,6 @@ class _ScreenVoiceState extends State<ScreenVoice> {
|
|||
updateScrollState();
|
||||
});
|
||||
|
||||
resetSystemNavigation(context,
|
||||
statusBarColor: themeDark().colorScheme.surface,
|
||||
systemNavigationBarColor: themeDark().colorScheme.surface,
|
||||
delay: const Duration(milliseconds: 10));
|
||||
|
||||
void load() async {
|
||||
var tmp = await speech.locales();
|
||||
languageOptionIds = tmp.map((e) => e.localeId);
|
||||
|
@ -222,7 +217,6 @@ class _ScreenVoiceState extends State<ScreenVoice> {
|
|||
}
|
||||
settingsOpen = false;
|
||||
logoVisible = true;
|
||||
resetSystemNavigation(context);
|
||||
},
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
|
@ -260,7 +254,6 @@ class _ScreenVoiceState extends State<ScreenVoice> {
|
|||
MaterialPageRoute(
|
||||
builder: (context) =>
|
||||
const ScreenSettingsVoice()));
|
||||
resetSystemNavigation(context);
|
||||
},
|
||||
icon: const Icon(
|
||||
Icons.settings_rounded,
|
||||
|
@ -268,144 +261,142 @@ class _ScreenVoiceState extends State<ScreenVoice> {
|
|||
))
|
||||
]),
|
||||
body: SafeArea(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(mainAxisSize: MainAxisSize.max, children: [
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 16, right: 16),
|
||||
child: Center(
|
||||
child: Text(text,
|
||||
textAlign: TextAlign.center,
|
||||
overflow: TextOverflow.fade,
|
||||
style: const TextStyle(
|
||||
color: Colors.grey,
|
||||
fontFamily: "monospace"))),
|
||||
))
|
||||
]),
|
||||
),
|
||||
Expanded(
|
||||
child: Column(mainAxisSize: MainAxisSize.max, children: [
|
||||
Expanded(
|
||||
child: Column(mainAxisSize: MainAxisSize.max, children: [
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 16, right: 16),
|
||||
child: Center(
|
||||
child: DateTimeLoopBuilder(
|
||||
timeUnit: TimeUnit.seconds,
|
||||
builder: (context, dateTime, child) {
|
||||
return SizedBox(
|
||||
height: 96,
|
||||
width: 96,
|
||||
child: AnimatedScale(
|
||||
scale: speaking
|
||||
? aiThinking
|
||||
? (dateTime.second).isEven
|
||||
? 2.4
|
||||
: 2
|
||||
: 2
|
||||
: dateTime.second
|
||||
.toString()
|
||||
.endsWith("1")
|
||||
? 1.6
|
||||
: 1.4,
|
||||
duration: aiThinking
|
||||
? const Duration(seconds: 1)
|
||||
: const Duration(milliseconds: 200),
|
||||
curve: Curves.easeInOut,
|
||||
child: InkWell(
|
||||
borderRadius:
|
||||
BorderRadius.circular(48),
|
||||
onTap: () {
|
||||
if (speaking && !aiThinking) {
|
||||
intendedStop = true;
|
||||
speaking = false;
|
||||
voice.stop();
|
||||
return;
|
||||
}
|
||||
process();
|
||||
},
|
||||
child: CircleAvatar(
|
||||
backgroundColor: themeDark()
|
||||
.colorScheme
|
||||
.primary
|
||||
child: Text(text,
|
||||
textAlign: TextAlign.center,
|
||||
overflow: TextOverflow.fade,
|
||||
style: const TextStyle(
|
||||
color: Colors.grey,
|
||||
fontFamily: "monospace"))),
|
||||
))
|
||||
]),
|
||||
),
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: DateTimeLoopBuilder(
|
||||
timeUnit: TimeUnit.seconds,
|
||||
builder: (context, dateTime, child) {
|
||||
return SizedBox(
|
||||
height: 96,
|
||||
width: 96,
|
||||
child: AnimatedScale(
|
||||
scale: speaking
|
||||
? aiThinking
|
||||
? (dateTime.second).isEven
|
||||
? 2.4
|
||||
: 2
|
||||
: 2
|
||||
: dateTime.second
|
||||
.toString()
|
||||
.endsWith("1")
|
||||
? 1.6
|
||||
: 1.4,
|
||||
duration: aiThinking
|
||||
? const Duration(seconds: 1)
|
||||
: const Duration(milliseconds: 200),
|
||||
curve: Curves.easeInOut,
|
||||
child: InkWell(
|
||||
borderRadius:
|
||||
BorderRadius.circular(48),
|
||||
onTap: () {
|
||||
if (speaking && !aiThinking) {
|
||||
intendedStop = true;
|
||||
speaking = false;
|
||||
voice.stop();
|
||||
return;
|
||||
}
|
||||
process();
|
||||
},
|
||||
child: CircleAvatar(
|
||||
backgroundColor: themeDark()
|
||||
.colorScheme
|
||||
.primary
|
||||
.withAlpha(
|
||||
!speaking ? 200 : 255),
|
||||
child: AnimatedSwitcher(
|
||||
duration: const Duration(
|
||||
milliseconds: 200),
|
||||
child: speaking
|
||||
? aiThinking
|
||||
? Icon(Icons.auto_awesome_rounded,
|
||||
color: themeDark()
|
||||
.colorScheme
|
||||
.secondary,
|
||||
key: const ValueKey(
|
||||
"aiThinking"))
|
||||
: sttDone
|
||||
? Icon(Icons.volume_up_rounded,
|
||||
color: themeDark()
|
||||
.colorScheme
|
||||
.secondary,
|
||||
key: const ValueKey(
|
||||
"tts"))
|
||||
: Icon(Icons.mic_rounded,
|
||||
color: themeDark()
|
||||
.colorScheme
|
||||
.secondary,
|
||||
key: const ValueKey("stt"))
|
||||
: null)))),
|
||||
);
|
||||
}))),
|
||||
Expanded(
|
||||
child: Column(mainAxisSize: MainAxisSize.max, children: [
|
||||
Expanded(
|
||||
child: Stack(
|
||||
children: [
|
||||
ShaderMask(
|
||||
shaderCallback: (Rect bounds) {
|
||||
return LinearGradient(
|
||||
begin: Alignment.bottomCenter,
|
||||
end: Alignment.topCenter,
|
||||
colors: const [
|
||||
Colors.transparent,
|
||||
Colors.black
|
||||
],
|
||||
stops: [0.0, atScrollEnd ? 0.0 : 0.1],
|
||||
).createShader(bounds);
|
||||
},
|
||||
blendMode: BlendMode.dstIn,
|
||||
child: SingleChildScrollView(
|
||||
controller: scrollController,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 16, right: 16),
|
||||
child: Center(
|
||||
child: Text(aiText,
|
||||
textAlign: TextAlign.center,
|
||||
overflow: TextOverflow.fade,
|
||||
style: const TextStyle(
|
||||
fontFamily:
|
||||
"monospace")))))),
|
||||
if (!atScrollEnd)
|
||||
Positioned(
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
child: IconButton(
|
||||
icon: const Icon(
|
||||
Icons.arrow_downward_rounded,
|
||||
color: Colors.grey),
|
||||
onPressed: () {
|
||||
scrollController.animateTo(
|
||||
scrollController
|
||||
.position.maxScrollExtent,
|
||||
duration: const Duration(
|
||||
milliseconds: 500),
|
||||
curve: Curves.easeInOut);
|
||||
}),
|
||||
)
|
||||
],
|
||||
))
|
||||
]),
|
||||
)
|
||||
]),
|
||||
child: AnimatedSwitcher(
|
||||
duration: const Duration(
|
||||
milliseconds: 200),
|
||||
child: speaking
|
||||
? aiThinking
|
||||
? Icon(Icons.auto_awesome_rounded,
|
||||
color: themeDark()
|
||||
.colorScheme
|
||||
.secondary,
|
||||
key: const ValueKey(
|
||||
"aiThinking"))
|
||||
: sttDone
|
||||
? Icon(Icons.volume_up_rounded,
|
||||
color: themeDark()
|
||||
.colorScheme
|
||||
.secondary,
|
||||
key: const ValueKey(
|
||||
"tts"))
|
||||
: Icon(Icons.mic_rounded,
|
||||
color: themeDark()
|
||||
.colorScheme
|
||||
.secondary,
|
||||
key: const ValueKey("stt"))
|
||||
: null)))),
|
||||
);
|
||||
}))),
|
||||
Expanded(
|
||||
child: Column(mainAxisSize: MainAxisSize.max, children: [
|
||||
Expanded(
|
||||
child: Stack(
|
||||
children: [
|
||||
ShaderMask(
|
||||
shaderCallback: (Rect bounds) {
|
||||
return LinearGradient(
|
||||
begin: Alignment.bottomCenter,
|
||||
end: Alignment.topCenter,
|
||||
colors: const [
|
||||
Colors.transparent,
|
||||
Colors.black
|
||||
],
|
||||
stops: [0.0, atScrollEnd ? 0.0 : 0.1],
|
||||
).createShader(bounds);
|
||||
},
|
||||
blendMode: BlendMode.dstIn,
|
||||
child: SingleChildScrollView(
|
||||
controller: scrollController,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 16, right: 16),
|
||||
child: Center(
|
||||
child: Text(aiText,
|
||||
textAlign: TextAlign.center,
|
||||
overflow: TextOverflow.fade,
|
||||
style: const TextStyle(
|
||||
fontFamily:
|
||||
"monospace")))))),
|
||||
if (!atScrollEnd)
|
||||
Positioned(
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
child: IconButton(
|
||||
icon: const Icon(
|
||||
Icons.arrow_downward_rounded,
|
||||
color: Colors.grey),
|
||||
onPressed: () {
|
||||
scrollController.animateTo(
|
||||
scrollController
|
||||
.position.maxScrollExtent,
|
||||
duration:
|
||||
const Duration(milliseconds: 500),
|
||||
curve: Curves.easeInOut);
|
||||
}),
|
||||
)
|
||||
],
|
||||
))
|
||||
]),
|
||||
)
|
||||
]),
|
||||
))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,19 +26,6 @@ class _ScreenWelcomeState extends State<ScreenWelcome> {
|
|||
precacheImage(const AssetImage("assets/welcome/2dark.png"), context);
|
||||
precacheImage(const AssetImage("assets/welcome/3dark.png"), context);
|
||||
|
||||
resetSystemNavigation(context,
|
||||
systemNavigationBarColor:
|
||||
(prefs!.getString("brightness") ?? "system") == "system"
|
||||
// ignore: use_build_context_synchronously
|
||||
? ((MediaQuery.of(context).platformBrightness ==
|
||||
Brightness.light)
|
||||
? Colors.grey[100]
|
||||
: Colors.grey[900])
|
||||
: (prefs!.getString("brightness") == "dark"
|
||||
? Colors.grey[900]
|
||||
: Colors.grey[100]),
|
||||
delay: const Duration(milliseconds: 10));
|
||||
|
||||
return Scaffold(
|
||||
bottomNavigationBar: BottomSheet(
|
||||
enableDrag: false,
|
||||
|
|
|
@ -5,7 +5,8 @@ import '../screen_settings.dart';
|
|||
import '../worker/haptic.dart';
|
||||
import '../worker/update.dart';
|
||||
import '../worker/desktop.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
||||
import 'package:simple_icons/simple_icons.dart';
|
||||
|
|
|
@ -4,7 +4,8 @@ import '../main.dart';
|
|||
import '../worker/haptic.dart';
|
||||
import '../worker/desktop.dart';
|
||||
import '../screen_settings.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
||||
import 'package:dynamic_color/dynamic_color.dart';
|
||||
|
|
|
@ -8,9 +8,9 @@ import 'package:flutter/foundation.dart';
|
|||
import '../main.dart';
|
||||
import '../worker/haptic.dart';
|
||||
import '../worker/desktop.dart';
|
||||
import '../worker/theme.dart';
|
||||
import '../screen_settings.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
|
@ -104,10 +104,6 @@ class _ScreenSettingsExportState extends State<ScreenSettingsExport> {
|
|||
AppLocalizations.of(context)!.settingsImportChats,
|
||||
Icons.download_rounded, () async {
|
||||
selectionHaptic();
|
||||
resetSystemNavigation(context,
|
||||
systemNavigationBarColor: Color.alphaBlend(
|
||||
Colors.black54,
|
||||
Theme.of(context).colorScheme.surface));
|
||||
await showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
|
@ -219,8 +215,6 @@ class _ScreenSettingsExportState extends State<ScreenSettingsExport> {
|
|||
.settingsImportChatsImport))
|
||||
]);
|
||||
});
|
||||
// ignore: use_build_context_synchronously
|
||||
resetSystemNavigation(context);
|
||||
})
|
||||
: const SizedBox.shrink()
|
||||
]),
|
||||
|
|
|
@ -5,7 +5,8 @@ import '../worker/haptic.dart';
|
|||
import '../worker/desktop.dart';
|
||||
import '../worker/theme.dart';
|
||||
import '../screen_settings.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
||||
import 'package:dartx/dartx.dart';
|
||||
|
@ -190,10 +191,6 @@ class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
|
|||
.settingsKeepModelLoadedFor,
|
||||
Icons.snooze_rounded, () async {
|
||||
selectionHaptic();
|
||||
resetSystemNavigation(context,
|
||||
systemNavigationBarColor: Color.alphaBlend(
|
||||
Colors.black54,
|
||||
Theme.of(context).colorScheme.surface));
|
||||
bool loaded = false;
|
||||
await showDialog(
|
||||
context: context,
|
||||
|
@ -283,8 +280,6 @@ class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
|
|||
);
|
||||
}));
|
||||
});
|
||||
// ignore: use_build_context_synchronously
|
||||
resetSystemNavigation(context);
|
||||
}),
|
||||
titleDivider(context: context),
|
||||
button(
|
||||
|
|
|
@ -5,9 +5,9 @@ import 'package:ollama_app/worker/haptic.dart';
|
|||
import 'package:ollama_app/worker/theme.dart';
|
||||
|
||||
import '../main.dart';
|
||||
// import '../worker/haptic.dart';
|
||||
import '../screen_settings.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
|
@ -212,7 +212,8 @@ class _ScreenSettingsVoiceState extends State<ScreenSettingsVoice> {
|
|||
}
|
||||
|
||||
return PopScope(
|
||||
onPopInvokedWithResult: (didPop, result) {
|
||||
onPopInvokedWithResult:
|
||||
(didPop, result) {
|
||||
if (usedIndex == -1) return;
|
||||
prefs!.setString(
|
||||
"voiceLanguage",
|
||||
|
|
|
@ -7,7 +7,8 @@ import 'package:ollama_app/worker/clients.dart';
|
|||
import 'haptic.dart';
|
||||
import 'setter.dart';
|
||||
import '../main.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_dart/ollama_dart.dart' as llama;
|
||||
import 'package:dartx/dartx.dart';
|
||||
|
|
|
@ -4,7 +4,6 @@ import 'dart:io';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import 'package:ollama_app/worker/clients.dart';
|
||||
import 'desktop.dart';
|
||||
import 'haptic.dart';
|
||||
|
@ -12,6 +11,8 @@ import '../main.dart';
|
|||
import 'sender.dart';
|
||||
import 'theme.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import 'package:dartx/dartx.dart';
|
||||
import 'package:ollama_dart/ollama_dart.dart' as llama;
|
||||
// ignore: depend_on_referenced_packages
|
||||
|
@ -397,9 +398,6 @@ void addModel(BuildContext context, Function setState) async {
|
|||
}
|
||||
if (response.statusCode == 200) {
|
||||
bool returnValue = false;
|
||||
resetSystemNavigation(mainContext!,
|
||||
systemNavigationBarColor: Color.alphaBlend(
|
||||
Colors.black54, Theme.of(mainContext!).colorScheme.surface));
|
||||
await showDialog(
|
||||
context: mainContext!,
|
||||
barrierDismissible: false,
|
||||
|
@ -429,7 +427,6 @@ void addModel(BuildContext context, Function setState) async {
|
|||
.modelDialogAddAssuranceAdd))
|
||||
]);
|
||||
});
|
||||
resetSystemNavigation(mainContext!);
|
||||
return returnValue;
|
||||
}
|
||||
if (response.statusCode == 429) {
|
||||
|
@ -707,12 +704,6 @@ Future<bool> deleteChatDialog(BuildContext context, Function setState,
|
|||
}
|
||||
|
||||
if ((prefs!.getBool("askBeforeDeletion") ?? false) && additionalCondition) {
|
||||
// ignore: use_build_context_synchronously
|
||||
resetSystemNavigation(context,
|
||||
systemNavigationBarColor: Color.alphaBlend(
|
||||
Colors.black54,
|
||||
// ignore: use_build_context_synchronously
|
||||
Theme.of(context).colorScheme.surface));
|
||||
await showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
|
@ -741,8 +732,6 @@ Future<bool> deleteChatDialog(BuildContext context, Function setState,
|
|||
]);
|
||||
});
|
||||
});
|
||||
// ignore: use_build_context_synchronously
|
||||
resetSystemNavigation(context);
|
||||
} else {
|
||||
delete(context);
|
||||
}
|
||||
|
|
|
@ -1,53 +1,19 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
import '../main.dart';
|
||||
|
||||
ColorScheme? colorSchemeLight;
|
||||
ColorScheme? colorSchemeDark;
|
||||
|
||||
void resetSystemNavigation(BuildContext context,
|
||||
{Color? color,
|
||||
Color? statusBarColor,
|
||||
Color? systemNavigationBarColor,
|
||||
Duration? delay}) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
if (delay != null) {
|
||||
await Future.delayed(delay);
|
||||
}
|
||||
// ignore: use_build_context_synchronously
|
||||
color ??= themeCurrent(context).colorScheme.surface;
|
||||
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
|
||||
statusBarIconBrightness:
|
||||
(((statusBarColor != null) ? statusBarColor : color)!
|
||||
.computeLuminance() >
|
||||
0.179)
|
||||
? Brightness.dark
|
||||
: Brightness.light,
|
||||
statusBarColor:
|
||||
((((statusBarColor != null) ? statusBarColor : color)!.value !=
|
||||
// ignore: use_build_context_synchronously
|
||||
themeCurrent(context).colorScheme.surface.value) ||
|
||||
kIsWeb)
|
||||
? (statusBarColor != null)
|
||||
? statusBarColor
|
||||
: color
|
||||
: Colors.transparent,
|
||||
systemNavigationBarColor:
|
||||
(systemNavigationBarColor != null) ? systemNavigationBarColor : color,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
ThemeData themeModifier(ThemeData theme) {
|
||||
return theme.copyWith(
|
||||
// https://docs.flutter.dev/platform-integration/android/predictive-back#set-up-your-app
|
||||
pageTransitionsTheme: const PageTransitionsTheme(
|
||||
builders: <TargetPlatform, PageTransitionsBuilder>{
|
||||
TargetPlatform.android: PredictiveBackPageTransitionsBuilder(),
|
||||
},
|
||||
));
|
||||
builders: <TargetPlatform, PageTransitionsBuilder>{
|
||||
TargetPlatform.android: PredictiveBackPageTransitionsBuilder(),
|
||||
},
|
||||
),
|
||||
sliderTheme: theme.sliderTheme.copyWith(year2023: false));
|
||||
}
|
||||
|
||||
ThemeData themeCurrent(BuildContext context) {
|
||||
|
|
|
@ -6,12 +6,12 @@ import 'package:ollama_app/worker/clients.dart';
|
|||
import 'package:ollama_app/worker/desktop.dart';
|
||||
|
||||
import 'haptic.dart';
|
||||
import 'theme.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:ollama_app/l10n/gen/app_localizations.dart';
|
||||
|
||||
import '../main.dart';
|
||||
|
||||
import 'package:install_referrer/install_referrer.dart';
|
||||
import 'package:flutter_install_referrer/flutter_install_referrer.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
@ -128,9 +128,6 @@ Future<bool> checkUpdate(Function setState) async {
|
|||
}
|
||||
|
||||
void updateDialog(BuildContext context, Function title) async {
|
||||
resetSystemNavigation(context,
|
||||
systemNavigationBarColor: Color.alphaBlend(
|
||||
Colors.black54, Theme.of(context).colorScheme.surface));
|
||||
await showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
|
@ -170,6 +167,4 @@ void updateDialog(BuildContext context, Function title) async {
|
|||
AppLocalizations.of(context)!.settingsUpdateDialogUpdate))
|
||||
]);
|
||||
});
|
||||
// ignore: use_build_context_synchronously
|
||||
resetSystemNavigation(context);
|
||||
}
|
||||
|
|
330
pubspec.lock
330
pubspec.lock
|
@ -5,26 +5,26 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: animated_text_kit
|
||||
sha256: "37392a5376c9a1a503b02463c38bc0342ef814ddbb8f9977bc90f2a84b22fa92"
|
||||
sha256: adba517adb7e6adeb1eb5e1c8a147dd7bc664dfdf2f5e92226b572a91393a93d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.2"
|
||||
version: "4.2.3"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: args
|
||||
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
|
||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.0"
|
||||
version: "2.6.0"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.11.0"
|
||||
version: "2.12.0"
|
||||
bitsdojo_window:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -69,42 +69,42 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: boolean_selector
|
||||
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.1.2"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: characters
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.4.0"
|
||||
charcode:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: charcode
|
||||
sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306
|
||||
sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
version: "1.4.0"
|
||||
clock:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: clock
|
||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
version: "1.1.2"
|
||||
collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
version: "1.19.1"
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -117,18 +117,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: crypto
|
||||
sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
|
||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
version: "3.0.6"
|
||||
csslib:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: csslib
|
||||
sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
|
||||
sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.0.2"
|
||||
dartx:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -141,10 +141,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: datetime_loop
|
||||
sha256: "5b7b694879e505368e6d0e04ac8bb55a1e7d2e493dd0b851e08db08e1ba784e2"
|
||||
sha256: "147afacf3102b41ceb5dee07c187731d978726476f51642a3f741ee69acea77c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.2.1"
|
||||
diffutil_dart:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -173,18 +173,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: equatable
|
||||
sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2
|
||||
sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.5"
|
||||
version: "2.0.7"
|
||||
fake_async:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
version: "1.3.2"
|
||||
fetch_api:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -205,26 +205,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
||||
sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
version: "2.1.4"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file
|
||||
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.0"
|
||||
version: "7.0.1"
|
||||
file_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: "167bb619cdddaa10ef2907609feb8a79c16dfa479d3afaf960f8e223f754bf12"
|
||||
sha256: ab13ae8ef5580a411c458d6207b6774a6c237d77ac37011b13994879f68a8810
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.1.2"
|
||||
version: "8.3.7"
|
||||
file_selector:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -237,34 +237,34 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_android
|
||||
sha256: "77f23eb5916fd0875946720d1f286f809a28a867d4882db6ac2cf053e2d5f7c6"
|
||||
sha256: "98ac58e878b05ea2fdb204e7f4fc4978d90406c9881874f901428e01d3b18fbc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.1+6"
|
||||
version: "0.5.1+12"
|
||||
file_selector_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_ios
|
||||
sha256: "38ebf91ecbcfa89a9639a0854ccaed8ab370c75678938eebca7d34184296f0bb"
|
||||
sha256: "94b98ad950b8d40d96fee8fa88640c2e4bd8afcdd4817993bd04e20310f45420"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.3"
|
||||
version: "0.5.3+1"
|
||||
file_selector_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_linux
|
||||
sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492"
|
||||
sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.2+1"
|
||||
version: "0.9.3+2"
|
||||
file_selector_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_macos
|
||||
sha256: f42eacb83b318e183b1ae24eead1373ab1334084404c8c16e0354f9a3e55d385
|
||||
sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.4"
|
||||
version: "0.9.4+2"
|
||||
file_selector_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -285,18 +285,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_windows
|
||||
sha256: "2ad726953f6e8affbc4df8dc78b77c3b4a060967a291e528ef72ae846c60fb69"
|
||||
sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.3+2"
|
||||
version: "0.9.3+4"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fixnum
|
||||
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.1.1"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
@ -326,6 +326,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.0"
|
||||
flutter_install_referrer:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_install_referrer
|
||||
sha256: "8f994ff0653be0483303af0a6f4ecbe2fc643a61456e5bd3bf5e28e38b035c77"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
flutter_link_previewer:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -359,10 +367,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_markdown
|
||||
sha256: a23c41ee57573e62fc2190a1f36a0480c4d90bde3a8a8d7126e5d5992fb53fb7
|
||||
sha256: e7bbc718adc9476aa14cfddc1ef048d2e21e4e8f18311aaac723266db9f9e7b5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.3+1"
|
||||
version: "0.7.6+2"
|
||||
flutter_parsed_text:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -375,10 +383,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "9d98bd47ef9d34e803d438f17fd32b116d31009f534a6fa5ce3a1167f189a6de"
|
||||
sha256: "5a1e6fb2c0561958d7e4c33574674bda7b77caaca7a33b758876956f2902eea3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.21"
|
||||
version: "2.0.27"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
|
@ -388,10 +396,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_tts
|
||||
sha256: aed2a00c48c43af043ed81145fd8503ddd793dafa7088ab137dbef81a703e53d
|
||||
sha256: baa3cb6b4990318460fe28bfa8c7869399e97223971532c02bd97c5e876aa3c5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "4.2.2"
|
||||
flutter_web_plugins:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
@ -409,26 +417,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: html
|
||||
sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
|
||||
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.15.4"
|
||||
version: "0.15.5"
|
||||
http:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: http
|
||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
||||
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.3.0"
|
||||
http_parser:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http_parser
|
||||
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
|
||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "4.1.2"
|
||||
image_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -441,26 +449,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_android
|
||||
sha256: "8c5abf0dcc24fe6e8e0b4a5c0b51a5cf30cefdf6407a3213dae61edc75a70f56"
|
||||
sha256: "82652a75e3dd667a91187769a6a2cc81bd8c111bbead698d8e938d2b63e5e89a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.12+12"
|
||||
version: "0.8.12+21"
|
||||
image_picker_for_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_for_web
|
||||
sha256: "65d94623e15372c5c51bebbcb820848d7bcb323836e12dfdba60b5d3a8b39e50"
|
||||
sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
version: "3.0.6"
|
||||
image_picker_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_ios
|
||||
sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447"
|
||||
sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.12"
|
||||
version: "0.8.12+2"
|
||||
image_picker_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -473,18 +481,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_macos
|
||||
sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62"
|
||||
sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1+1"
|
||||
version: "0.2.1+2"
|
||||
image_picker_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_platform_interface
|
||||
sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80"
|
||||
sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.10.0"
|
||||
version: "2.10.1"
|
||||
image_picker_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -493,14 +501,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1+1"
|
||||
install_referrer:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: install_referrer
|
||||
sha256: "901c56d24ee3c3010dfd0bbebf305ed6b4b0f3fe969192081c167590a64cd78b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
intl:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -513,10 +513,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: js
|
||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
||||
sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.7"
|
||||
version: "0.7.2"
|
||||
json_annotation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -529,18 +529,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.5"
|
||||
version: "10.0.8"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
||||
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
version: "3.0.9"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -569,18 +569,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: markdown
|
||||
sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051
|
||||
sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.2.2"
|
||||
version: "7.3.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.16+1"
|
||||
version: "0.12.17"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -593,50 +593,50 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
||||
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
version: "1.16.0"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: mime
|
||||
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
|
||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.5"
|
||||
version: "2.0.0"
|
||||
ollama_dart:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: ollama_dart
|
||||
sha256: f65e60c61c91f625df76b4435474bfacc315b4b4eaa8b53e2385679da121dee4
|
||||
sha256: "4e40bc499b6fe46ba54a004d2da601c40bd73d66e3f18cf7b03225ccf3d481a6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
version: "0.2.2+1"
|
||||
package_info_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: package_info_plus
|
||||
sha256: a75164ade98cb7d24cfd0a13c6408927c6b217fa60dee5a7ff5c116a58f28918
|
||||
sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.0.2"
|
||||
version: "8.3.0"
|
||||
package_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_info_plus_platform_interface
|
||||
sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66
|
||||
sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.2.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.0"
|
||||
version: "1.9.1"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -673,42 +673,42 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb"
|
||||
sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.3.1"
|
||||
version: "11.4.0"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_android
|
||||
sha256: "76e4ab092c1b240d31177bb64d2b0bea43f43d0e23541ec866151b9f7b2490fa"
|
||||
sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.0.12"
|
||||
version: "12.1.0"
|
||||
permission_handler_apple:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0
|
||||
sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.4.5"
|
||||
version: "9.4.6"
|
||||
permission_handler_html:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_html
|
||||
sha256: af26edbbb1f2674af65a8f4b56e1a6f526156bc273d0e65dd8075fab51c78851
|
||||
sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3+2"
|
||||
version: "0.1.3+5"
|
||||
permission_handler_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_platform_interface
|
||||
sha256: fe0ffe274d665be8e34f9c59705441a7d248edebbe5d9e3ec2665f88b79358ea
|
||||
sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.2"
|
||||
version: "4.3.0"
|
||||
permission_handler_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -729,10 +729,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: platform
|
||||
sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
|
||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.5"
|
||||
version: "3.1.6"
|
||||
plugin_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -745,10 +745,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: pwa_install
|
||||
sha256: "79a6c38e67db12da98489258ead7e025ce4860c9010cde226d0b53ad6d403fd9"
|
||||
sha256: "77fbb93d064d0cda0657f61386958562a13a7e57a2ce2a8b6da707d3bcef43c5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.5"
|
||||
version: "0.0.6"
|
||||
scroll_to_index:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -761,26 +761,26 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
|
||||
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
version: "2.5.2"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974
|
||||
sha256: a768fc8ede5f0c8e6150476e14f38e2417c0864ca36bb4582be8e21925a03c22
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.1"
|
||||
version: "2.4.6"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_foundation
|
||||
sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f
|
||||
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.2"
|
||||
version: "2.5.4"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -801,10 +801,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_web
|
||||
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
|
||||
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.3"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -825,23 +825,23 @@ packages:
|
|||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.99"
|
||||
version: "0.0.0"
|
||||
smooth_page_indicator:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: smooth_page_indicator
|
||||
sha256: "3b28b0c545fa67ed9e5997d9f9720d486f54c0c607e056a1094544e36934dff3"
|
||||
sha256: b21ebb8bc39cf72d11c7cfd809162a48c3800668ced1c9da3aade13a32cf6c1c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0+3"
|
||||
version: "1.2.1"
|
||||
source_span:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: source_span
|
||||
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.10.0"
|
||||
version: "1.10.1"
|
||||
speech_to_text:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -854,10 +854,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: speech_to_text_platform_interface
|
||||
sha256: a0df1a907091ea09880077dc25aae02af9f79811264e6e97ddb08639b7f771c2
|
||||
sha256: a1935847704e41ee468aad83181ddd2423d0833abe55d769c59afca07adb5114
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "2.3.0"
|
||||
sprintf:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -870,50 +870,50 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "1.12.1"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: stream_channel
|
||||
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.4"
|
||||
string_scanner:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: string_scanner
|
||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.4.1"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: term_glyph
|
||||
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.2.2"
|
||||
test_api:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
||||
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.2"
|
||||
version: "0.7.4"
|
||||
time:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: time
|
||||
sha256: ad8e018a6c9db36cb917a031853a1aae49467a93e0d464683e029537d848c221
|
||||
sha256: "370572cf5d1e58adcb3e354c47515da3f7469dac3a95b447117e728e7be6f461"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
version: "2.1.5"
|
||||
transparent_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -926,10 +926,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: typed_data
|
||||
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.2"
|
||||
version: "1.4.0"
|
||||
universal_html:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -950,42 +950,42 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
|
||||
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.0"
|
||||
version: "6.3.1"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: f0c73347dfcfa5b3db8bc06e1502668265d39c08f310c29bff4e28eea9699f79
|
||||
sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.9"
|
||||
version: "6.3.14"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e
|
||||
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.1"
|
||||
version: "6.3.2"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_linux
|
||||
sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af
|
||||
sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.0"
|
||||
version: "3.2.1"
|
||||
url_launcher_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
|
||||
sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.0"
|
||||
version: "3.2.2"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -998,26 +998,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
|
||||
sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.3"
|
||||
version: "2.4.0"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185"
|
||||
sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
version: "3.1.4"
|
||||
uuid:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: uuid
|
||||
sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90"
|
||||
sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.4.2"
|
||||
version: "4.5.1"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1046,10 +1046,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.2.5"
|
||||
version: "14.3.1"
|
||||
volume_controller:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1062,26 +1062,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
|
||||
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.1.1"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a"
|
||||
sha256: b89e6e24d1454e149ab20fbb225af58660f0c0bf4475544650700d8e2da54aef
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.5.4"
|
||||
version: "5.11.0"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xdg_directories
|
||||
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
|
||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
version: "1.1.0"
|
||||
sdks:
|
||||
dart: ">=3.4.0 <4.0.0"
|
||||
flutter: ">=3.22.0"
|
||||
dart: ">=3.7.0 <4.0.0"
|
||||
flutter: ">=3.29.0"
|
||||
|
|
|
@ -5,6 +5,7 @@ version: 1.2.0+9
|
|||
|
||||
environment:
|
||||
sdk: '>=3.3.4 <4.0.0'
|
||||
flutter: 3.29.0
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
@ -30,7 +31,7 @@ dependencies:
|
|||
file_picker: ^8.0.3
|
||||
file_selector: ^1.0.3
|
||||
bitsdojo_window: ^0.1.6
|
||||
install_referrer: ^1.2.1
|
||||
flutter_install_referrer: ^2.0.2
|
||||
package_info_plus: ^8.0.0
|
||||
version: ^3.0.2
|
||||
flutter_displaymode: ^0.6.0
|
||||
|
|
|
@ -4,4 +4,4 @@ import 'dart:convert';
|
|||
|
||||
void main(List<String> args) {
|
||||
print(base64Encode(utf8.encode(args.join(" "))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,4 +7,4 @@ String random(int length) {
|
|||
});
|
||||
|
||||
return String.fromCharCodes(codeUnits);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue