From d4d8246db93779178586f3caf65a7c58f4e0c1b1 Mon Sep 17 00:00:00 2001 From: Domai Date: Sun, 6 Apr 2025 13:56:27 +0200 Subject: [PATCH 1/9] upgrade AGP --- android/.gitignore | 3 +- android/app/build.gradle | 83 ----------------- android/app/build.gradle.kts | 89 +++++++++++++++++++ android/build.gradle | 18 ---- android/build.gradle.kts | 21 +++++ android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 5 +- android/settings.gradle | 26 ------ android/settings.gradle.kts | 26 ++++++ 9 files changed, 142 insertions(+), 131 deletions(-) delete mode 100644 android/app/build.gradle create mode 100644 android/app/build.gradle.kts delete mode 100644 android/build.gradle create mode 100644 android/build.gradle.kts delete mode 100644 android/settings.gradle create mode 100644 android/settings.gradle.kts diff --git a/android/.gitignore b/android/.gitignore index 6f568019..be3943c9 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -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 diff --git a/android/app/build.gradle b/android/app/build.gradle deleted file mode 100644 index cbd9ea8f..00000000 --- a/android/app/build.gradle +++ /dev/null @@ -1,83 +0,0 @@ -plugins { - id "com.android.application" - id "kotlin-android" - id "dev.flutter.flutter-gradle-plugin" - id "com.google.gms.google-services" -} - -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 { - compileSdk 34 - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "de.asta_bochum.campus_app" - minSdkVersion 26 - targetSdkVersion 34 - targetSdkVersion 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 - } - } - namespace 'de.asta_bochum.campus_app' -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20" - implementation('androidx.appcompat:appcompat:1.6.1') - implementation("androidx.appcompat:appcompat-resources:1.6.1") -} diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 00000000..6c31750a --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,89 @@ +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") + id("com.google.gms.google-services") +} + +val localProperties = Properties().apply { + val localPropertiesFile = rootProject.file("local.properties") + if (localPropertiesFile.exists()) { + localPropertiesFile.reader(Charsets.UTF_8).use { load(it) } + } +} + +val flutterVersionCode = localProperties.getProperty("flutter.versionCode") ?: "1" +val flutterVersionName = localProperties.getProperty("flutter.versionName") ?: "1.0" + +val keystoreProperties = Properties() +val keystorePropertiesFile = rootProject.file("key.properties") +if (keystorePropertiesFile.exists()) { + FileInputStream(keystorePropertiesFile).use { keystoreProperties.load(it) } +} + +android { + compileSdk = 35 + + namespace = "de.asta_bochum.campus_app" + + compileOptions { + // Flag to enable support for the new language APIs + isCoreLibraryDesugaringEnabled = true + // Sets Java compatibility to Java 11 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "de.asta_bochum.campus_app" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 26 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + + multiDexEnabled = true + + // Add the Dart define flag for Cronet HTTP without Play Services + applicationVariants.all { + mergedFlavor.manifestPlaceholders["cronetHttpNoPlay"] = "true" + } + } + + signingConfigs { + create("release") { + keyAlias = keystoreProperties["keyAlias"] as? String + keyPassword = keystoreProperties["keyPassword"] as? String + storeFile = keystoreProperties["storeFile"]?.toString()?.let { file(it) } + storePassword = keystoreProperties["storePassword"] as? String + } + } + + buildTypes { + getByName("release") { + // TODO: Add your own signing config for the release build. + signingConfig = signingConfigs.getByName("release") + } + } +} + +flutter { + source = "../.." +} + +dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20") + implementation("androidx.appcompat:appcompat:1.6.1") + implementation("androidx.appcompat:appcompat-resources:1.6.1") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") +} \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index bc157bd1..00000000 --- a/android/build.gradle +++ /dev/null @@ -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 -} diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 00000000..89176ef4 --- /dev/null +++ b/android/build.gradle.kts @@ -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("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/android/gradle.properties b/android/gradle.properties index 4d3226ab..24863d21 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3a84c269..79eb9d00 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Mon Jul 24 21:37:27 CEST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/settings.gradle b/android/settings.gradle deleted file mode 100644 index 43f1da8d..00000000 --- a/android/settings.gradle +++ /dev/null @@ -1,26 +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.20" apply false - id "com.google.gms.google-services" version "4.4.0" apply false -} - -include ":app" diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 00000000..98512944 --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,26 @@ +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 + id("com.google.gms.google-services") version "4.4.0" apply false +} + +include(":app") From 1568d88bef497394ac1fa71ebe8a0e18e2134001 Mon Sep 17 00:00:00 2001 From: Domai Date: Sun, 6 Apr 2025 13:58:21 +0200 Subject: [PATCH 2/9] upgrade packages --- lib/pages/feed/widgets/feed_item.dart | 10 +- lib/pages/feed/widgets/video_player.dart | 6 +- pubspec.lock | 633 +++++++++++++---------- pubspec.yaml | 199 +++---- 4 files changed, 459 insertions(+), 389 deletions(-) diff --git a/lib/pages/feed/widgets/feed_item.dart b/lib/pages/feed/widgets/feed_item.dart index 904821d9..a90d7015 100644 --- a/lib/pages/feed/widgets/feed_item.dart +++ b/lib/pages/feed/widgets/feed_item.dart @@ -8,7 +8,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:intl/intl.dart'; import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; -import 'package:video_thumbnail/video_thumbnail.dart'; +import 'package:get_thumbnail_video/video_thumbnail.dart'; import 'package:campus_app/core/themes.dart'; import 'package:campus_app/pages/calendar/calendar_detail_page.dart'; @@ -113,11 +113,9 @@ class FeedItemState extends State with AutomaticKeepAliveClientMixin { quality: 80, ); - if (file != null) { - setState(() { - videoThumbnailFile = File(file); - }); - } + setState(() { + videoThumbnailFile = File(file.path); + }); } @override diff --git a/lib/pages/feed/widgets/video_player.dart b/lib/pages/feed/widgets/video_player.dart index 99eb4838..1b610904 100644 --- a/lib/pages/feed/widgets/video_player.dart +++ b/lib/pages/feed/widgets/video_player.dart @@ -1,4 +1,4 @@ -import 'package:appinio_video_player/appinio_video_player.dart'; +import 'package:flutter_videoplayer/flutter_videoplayer.dart'; import 'package:provider/provider.dart'; import 'package:campus_app/core/themes.dart'; import 'package:flutter/material.dart'; @@ -30,7 +30,7 @@ class FeedVideoPlayer extends StatefulWidget { class _FeedVideoPlayerState extends State { /// The controller object to handle video player - late CachedVideoPlayerController _videoPlayerController; + late CachedVideoPlayerPlusController _videoPlayerController; late CustomVideoPlayerController _customVideoPlayerController; // Show replay instead of pause / play button @@ -39,7 +39,7 @@ class _FeedVideoPlayerState extends State { @override void initState() { super.initState(); - _videoPlayerController = CachedVideoPlayerController.network(widget.url)..initialize(); + _videoPlayerController = CachedVideoPlayerPlusController.networkUrl(Uri.parse(widget.url))..initialize(); _customVideoPlayerController = CustomVideoPlayerController( context: context, videoPlayerController: _videoPlayerController, diff --git a/pubspec.lock b/pubspec.lock index c06952c0..4268e45d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,31 +5,31 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834 + sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" url: "https://pub.dev" source: hosted - version: "72.0.0" + version: "76.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: "5a0296da7ae717ffb7444dee8439ca25ac80e162a345b933aa57f0a4a48dca2c" + sha256: de9ecbb3ddafd446095f7e833c853aff2fa1682b017921fe63a833f9d6f0e422 url: "https://pub.dev" source: hosted - version: "1.3.45" + version: "1.3.54" _macros: dependency: transitive description: dart source: sdk - version: "0.3.2" + version: "0.3.3" analyzer: dependency: transitive description: name: analyzer - sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139 + sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" url: "https://pub.dev" source: hosted - version: "6.7.0" + version: "6.11.0" animations: dependency: "direct main" description: @@ -50,10 +50,10 @@ packages: dependency: "direct main" description: name: app_links - sha256: ae5f9a1b7d40d26178f605414be81ed4260350b4fae8259fe5ca4f89fe70c4af + sha256: "85ed8fc1d25a76475914fff28cc994653bd900bc2c26e4b57a49e097febb54ba" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.4.0" app_links_linux: dependency: transitive description: @@ -78,102 +78,94 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" - appinio_video_player: - dependency: "direct main" - description: - name: appinio_video_player - sha256: "43b5a269d461a8ec37394ee12c6e3461e8348b9127f9928e49b84adb90c5cf86" - url: "https://pub.dev" - source: hosted - version: "1.3.0" appwrite: dependency: "direct main" description: name: appwrite - sha256: "0d12a8aa778e4748de068bcdacda7adca181b888b14c698389b7b03364526a10" + sha256: "20fbe2bf739480dfd0f59c1d1fe635b509bd7d8606e937277d4f50da048f4c51" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "15.0.0" archive: dependency: transitive description: name: archive - sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + sha256: "7dcbd0f87fe5f61cb28da39a1a8b70dbc106e2fe0516f7836eb7bb2948481a12" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "4.0.5" args: dependency: transitive description: name: args - sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" async: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: name: build - sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" build_config: dependency: transitive description: name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" build_daemon: dependency: transitive description: name: build_daemon - sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" + sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.0.4" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.4" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d" + sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99" url: "https://pub.dev" source: hosted - version: "2.4.13" + version: "2.4.15" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 + sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" url: "https://pub.dev" source: hosted - version: "7.3.2" + version: "8.0.0" built_collection: dependency: transitive description: @@ -186,10 +178,10 @@ packages: dependency: transitive description: name: built_value - sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4 url: "https://pub.dev" source: hosted - version: "8.9.2" + version: "8.9.5" cached_network_image: dependency: "direct main" description: @@ -214,22 +206,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" - cached_video_player: + cached_video_player_plus: dependency: transitive description: - name: cached_video_player - sha256: "13c25fc1af3bb239da83d9e965d119463a67a782fd9af3714ed86a1182ded20c" + name: cached_video_player_plus + sha256: "451ee48bdbd28fac3d49b4389929c44d259b1def5be6dab0c5bfd3ae1f05e8b5" url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "3.0.3" characters: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -250,10 +242,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -266,10 +258,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.1" convert: dependency: transitive description: @@ -290,10 +282,10 @@ packages: dependency: transitive description: name: cronet_http - sha256: "3af9c4d57bf07ef4b307e77b22be4ad61bea19ee6ff65e62184863f3a09f1415" + sha256: "0b98ef6d6fee016915276bf1486761cdd1671a5588fe9c9e5183b31bf98ad9f5" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.3" cross_file: dependency: transitive description: @@ -314,26 +306,26 @@ packages: dependency: transitive description: name: csslib - sha256: "831883fb353c8bdc1d71979e5b342c7d88acfbc643113c14ae51e2442ea0f20f" + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" url: "https://pub.dev" source: hosted - version: "0.17.3" + version: "1.0.2" cupertino_http: dependency: transitive description: name: cupertino_http - sha256: "7e75c45a27cc13a886ab0a1e4d8570078397057bd612de9d24fe5df0d9387717" + sha256: "5a043ec21fd7f56b24c549fd293a7fc60bba899509246cd0ffc2a91cb78c9be2" url: "https://pub.dev" source: hosted - version: "1.5.1" + version: "2.1.0" dart_style: dependency: transitive description: name: dart_style - sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" + sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820" url: "https://pub.dev" source: hosted - version: "2.3.7" + version: "2.3.8" dartz: dependency: "direct main" description: @@ -346,10 +338,18 @@ packages: dependency: transitive description: name: dbus - sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" + url: "https://pub.dev" + source: hosted + version: "0.7.11" + desktop_webview_window: + dependency: transitive + description: + name: desktop_webview_window + sha256: "57cf20d81689d5cbb1adfd0017e96b669398a669d927906073b0e42fc64111c0" url: "https://pub.dev" source: hosted - version: "0.7.10" + version: "0.2.3" device_info_plus: dependency: transitive description: @@ -362,34 +362,34 @@ packages: dependency: transitive description: name: device_info_plus_platform_interface - sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" + sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "7.0.2" dio: dependency: "direct main" description: name: dio - sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260" + sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9" url: "https://pub.dev" source: hosted - version: "5.7.0" + version: "5.8.0+1" dio_cookie_manager: dependency: "direct main" description: name: dio_cookie_manager - sha256: e79498b0f632897ff0c28d6e8178b4bc6e9087412401f618c31fa0904ace050d + sha256: "47cacbf6a783c263bfa7cd7d08101e93127d87760ddb003ba289162f7be0f679" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.2.0" dio_web_adapter: dependency: transitive description: name: dio_web_adapter - sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8" + sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.1" dismissible_page: dependency: "direct main" description: @@ -402,42 +402,42 @@ packages: dependency: "direct main" description: name: envied - sha256: bbff9c76120e4dc5e2e36a46690cf0a26feb65e7765633f4e8d916bcd173a450 + sha256: a4e2b1d0caa479b5d61332ae516518c175a6d09328a35a0bc0a53894cc5d7e4d url: "https://pub.dev" source: hosted - version: "0.5.4+1" + version: "1.1.1" envied_generator: dependency: "direct dev" description: name: envied_generator - sha256: "517b70de08d13dcd40e97b4e5347e216a0b1c75c99e704f3c85c0474a392d14a" + sha256: "894f6c5eb624c60a1ce6f642b6fd7ec68bc3440aa6f1881837aa9acbbeade0c8" url: "https://pub.dev" source: hosted - version: "0.5.4+1" + version: "1.1.1" equatable: 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: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: 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: @@ -450,50 +450,50 @@ packages: dependency: "direct main" description: name: firebase_core - sha256: e59141ff83e70a9ba571a1f8733c5598cf57e6e68037ab185581d7fc0a436738 + sha256: "017d17d9915670e6117497e640b2859e0b868026ea36bf3a57feb28c3b97debe" url: "https://pub.dev" source: hosted - version: "3.7.0" + version: "3.13.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: e30da58198a6d4b49d5bce4e852f985c32cb10db329ebef9473db2b9f09ce810 + sha256: d7253d255ff10f85cfd2adaba9ac17bae878fa3ba577462451163bd9f1d1f0bf url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "5.4.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: f967a7138f5d2ffb1ce15950e2a382924239eaa521150a8f144af34e68b3b3e5 + sha256: "129a34d1e0fb62e2b488d988a1fc26cc15636357e50944ffee2862efe8929b23" url: "https://pub.dev" source: hosted - version: "2.18.1" + version: "2.22.0" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: a988c6ab37fa5a6abf2f8087a44b765e058848ace6f3253fb1602d1d44a63747 + sha256: "5f8918848ee0c8eb172fc7698619b2bcd7dda9ade8b93522c6297dd8f9178356" url: "https://pub.dev" source: hosted - version: "15.1.4" + version: "15.2.5" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "66aa477277baf2430904096234dd2095ad2e0248d0bfefc1b11695e68bf1790e" + sha256: "0bbea00680249595fc896e7313a2bd90bd55be6e0abbe8b9a39d81b6b306acb6" url: "https://pub.dev" source: hosted - version: "4.5.47" + version: "4.6.5" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "8b590d8c421dc4f63a28c6b9690a050424c28b99a54886ded4510c0806237130" + sha256: ffb392ce2a7e8439cd0a9a80e3c702194e73c927e5c7b4f0adf6faa00b245b17 url: "https://pub.dev" source: hosted - version: "3.9.3" + version: "3.10.5" fixnum: dependency: transitive description: @@ -527,10 +527,10 @@ packages: dependency: "direct main" description: name: flutter_html - sha256: "02ad69e813ecfc0728a455e4bf892b9379983e050722b1dce00192ee2e41d1ee" + sha256: "38a2fd702ffdf3243fb7441ab58aa1bc7e6922d95a50db76534de8260638558d" url: "https://pub.dev" source: hosted - version: "3.0.0-beta.2" + version: "3.0.0" flutter_inappwebview: dependency: "direct main" description: @@ -551,10 +551,10 @@ packages: dependency: transitive description: name: flutter_inappwebview_internal_annotations - sha256: "5f80fd30e208ddded7dbbcd0d569e7995f9f63d45ea3f548d8dd4c0b473fb4c8" + sha256: "787171d43f8af67864740b6f04166c13190aa74a1468a1f1f1e9ee5b90c359cd" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" flutter_inappwebview_ios: dependency: transitive description: @@ -599,10 +599,10 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: "619817c4b65b322b5104b6bb6dfe6cda62d9729bd7ad4303ecc8b4e690a67a77" + sha256: bfa04787c85d80ecb3f8777bde5fc10c3de809240c48fa061a2c2bf15ea5211c url: "https://pub.dev" source: hosted - version: "0.14.1" + version: "0.14.3" flutter_lints: dependency: "direct dev" description: @@ -615,26 +615,34 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: ef41ae901e7529e52934feba19ed82827b11baa67336829564aeab3129460610 + sha256: d59eeafd6df92174b1d5f68fc9d66634c97ce2e7cfe2293476236547bb19bbbd url: "https://pub.dev" source: hosted - version: "18.0.1" + version: "19.0.0" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux - sha256: "8f685642876742c941b29c32030f6f4f6dacd0e4eaecb3efbb187d6a3812ca01" + sha256: e3c277b2daab8e36ac5a6820536668d07e83851aeeb79c446e525a70710770a5 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "6.0.0" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "6c5b83c86bf819cdb177a9247a3722067dd8cc6313827ce7c77a4b238a26fd52" + sha256: "2569b973fc9d1f63a37410a9f7c1c552081226c597190cb359ef5d5762d1631c" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "9.0.0" + flutter_local_notifications_windows: + dependency: transitive + description: + name: flutter_local_notifications_windows + sha256: f8fc0652a601f83419d623c85723a3e82ad81f92b33eaa9bcc21ea1b94773e6e + url: "https://pub.dev" + source: hosted + version: "1.0.0" flutter_localizations: dependency: "direct main" description: flutter @@ -644,18 +652,18 @@ packages: dependency: "direct main" description: name: flutter_native_splash - sha256: ee5c9bd2b74ea8676442fd4ab876b5d41681df49276488854d6c81a5377c0ef1 + sha256: edb09c35ee9230c4b03f13dd45bb3a276d0801865f0a4650b7e2a3bba61a803a url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.5" flutter_nfc_kit: dependency: "direct main" description: name: flutter_nfc_kit - sha256: fe0b86f4883e4a0ebeb6d1fbbc5a86123b95969a4d225bc5a760acda5e3f42e8 + sha256: "3cc4059626fa672031261512299458dd274de4ccb57a7f0ee0951ddd70a048e5" url: "https://pub.dev" source: hosted - version: "3.5.2" + version: "3.6.0" flutter_onboarding: dependency: "direct main" description: @@ -669,26 +677,26 @@ packages: dependency: "direct main" description: name: flutter_secure_storage - sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0" + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" url: "https://pub.dev" source: hosted - version: "9.2.2" + version: "9.2.4" flutter_secure_storage_linux: dependency: transitive description: name: flutter_secure_storage_linux - sha256: "4d91bfc23047422cbcd73ac684bc169859ee766482517c22172c86596bf1464b" + sha256: bf7404619d7ab5c0a1151d7c4e802edad8f33535abfbeff2f9e1fe1274e2d705 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" flutter_secure_storage_macos: dependency: transitive description: name: flutter_secure_storage_macos - sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81" + sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" flutter_secure_storage_platform_interface: dependency: transitive description: @@ -717,31 +725,40 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: "578bd8c508144fdaffd4f77b8ef2d8c523602275cd697cc3db284dbd762ef4ce" + sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b url: "https://pub.dev" source: hosted - version: "2.0.14" + version: "2.0.17" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_videoplayer: + dependency: "direct main" + description: + path: "." + ref: "v2.0" + resolved-ref: "093d3c02f67beb553e586570f599442af18c2bd6" + url: "https://github.com/astarub/flutter_videoplayer" + source: git + version: "0.0.1" flutter_web_auth_2: - dependency: transitive + dependency: "direct overridden" description: name: flutter_web_auth_2 - sha256: "4d3d2fd3d26bf1a26b3beafd4b4b899c0ffe10dc99af25abc58ffe24e991133c" + sha256: "3c14babeaa066c371f3a743f204dd0d348b7d42ffa6fae7a9847a521aff33696" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "4.1.0" flutter_web_auth_2_platform_interface: dependency: transitive description: name: flutter_web_auth_2_platform_interface - sha256: e8669e262005a8354389ba2971f0fc1c36188481234ff50d013aaf993f30f739 + sha256: c63a472c8070998e4e422f6b34a17070e60782ac442107c70000dd1bed645f4d url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.1.0" flutter_web_plugins: dependency: transitive description: flutter @@ -751,10 +768,10 @@ packages: dependency: "direct main" description: name: fluttertoast - sha256: "95f349437aeebe524ef7d6c9bde3e6b4772717cf46a0eb6a3ceaddc740b297cc" + sha256: "25e51620424d92d3db3832464774a6143b5053f15e382d8ffbfd40b6e795dcf1" url: "https://pub.dev" source: hosted - version: "8.2.8" + version: "8.2.12" frontend_server_client: dependency: transitive description: @@ -763,30 +780,54 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + get: + dependency: transitive + description: + name: get + sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425 + url: "https://pub.dev" + source: hosted + version: "4.7.2" get_it: dependency: "direct main" description: name: get_it - sha256: c49895c1ecb0ee2a0ec568d39de882e2c299ba26355aa6744ab1001f98cebd15 + sha256: f126a3e286b7f5b578bf436d5592968706c4c1de28a228b870ce375d9f743103 url: "https://pub.dev" source: hosted - version: "8.0.2" + version: "8.0.3" + get_storage: + dependency: transitive + description: + name: get_storage + sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + get_thumbnail_video: + dependency: "direct main" + description: + name: get_thumbnail_video + sha256: ff61495b42051765d2a9e93bd14dac7ede5853033837bde71c27575a192c53fc + url: "https://pub.dev" + source: hosted + version: "0.7.3" glob: dependency: transitive description: name: glob - sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" graphs: dependency: transitive description: name: graphs - sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" gtk: dependency: transitive description: @@ -823,34 +864,34 @@ packages: dependency: "direct main" 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_multi_server: dependency: transitive description: name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" 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" http_profile: dependency: transitive description: @@ -863,10 +904,10 @@ packages: dependency: "direct main" description: name: image - sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "4.5.4" intl: dependency: "direct main" description: @@ -879,26 +920,26 @@ packages: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" jni: dependency: transitive description: name: jni - sha256: f377c585ea9c08d48b427dc2e03780af2889d1bb094440da853c6883c1acba4b + sha256: "459727a9daf91bdfb39b014cf3c186cf77f0136124a274ac83c186e12262ac4e" url: "https://pub.dev" source: hosted - version: "0.10.1" + version: "0.12.2" js: dependency: "direct overridden" description: name: js - sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" url: "https://pub.dev" source: hosted - version: "0.7.1" + version: "0.7.2" json_annotation: dependency: transitive description: @@ -911,18 +952,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: @@ -935,10 +976,10 @@ packages: dependency: transitive description: name: lints - sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.1" list_counter: dependency: transitive description: @@ -959,26 +1000,26 @@ packages: dependency: "direct main" description: name: lottie - sha256: "7afc60865a2429d994144f7d66ced2ae4305fe35d82890b8766e3359872d872c" + sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.3.1" macros: dependency: transitive description: name: macros - sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" url: "https://pub.dev" source: hosted - version: "0.1.2-main.4" + version: "0.1.3-main.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: @@ -991,10 +1032,10 @@ 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: @@ -1007,26 +1048,26 @@ packages: dependency: "direct dev" description: name: mockito - sha256: "6841eed20a7befac0ce07df8116c8b8233ed1f4486a7647c7fc5a02ae6163917" + sha256: f99d8d072e249f719a5531735d146d8cf04c580d93920b04de75bef6dfb2daf6 url: "https://pub.dev" source: hosted - version: "5.4.4" + version: "5.4.5" native_dio_adapter: dependency: "direct main" description: name: native_dio_adapter - sha256: "4c925ba15a44478be0eb6e97b62a1c1d07e56b28e566283dbcb15e58418bdaae" + sha256: "7420bc9517b2abe09810199a19924617b45690a44ecfb0616ac9babc11875c03" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" ndef: dependency: transitive description: name: ndef - sha256: "634d2b5c6f2c186e953218bac9905f3f5e1824b15e30bd1ed6e03a91cdbc7293" + sha256: "5083507cff4bb823b2a198a27ea2c70c4d6bc27a97b66097d966a250e1615d54" url: "https://pub.dev" source: hosted - version: "0.3.3" + version: "0.3.4" nested: dependency: transitive description: @@ -1035,6 +1076,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "49e569fac1202d7fee1655fbbdfbf228840e11416be592bce2a6797b23de8231" + url: "https://pub.dev" + source: hosted + version: "7.0.0" octo_image: dependency: transitive description: @@ -1047,42 +1096,42 @@ packages: dependency: transitive description: name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" package_info_plus: dependency: transitive description: name: package_info_plus - sha256: da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce + sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" url: "https://pub.dev" source: hosted - version: "8.1.1" + 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" page_transition: dependency: "direct main" description: name: page_transition - sha256: dee976b1f23de9bbef5cd512fe567e9f6278caee11f5eaca9a2115c19dc49ef6 + sha256: "9d2a780d7d68b53ae82fbcc43e06a16195e6775e9aae40e55dc0cbb593460f9d" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.1" 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_parsing: dependency: transitive description: @@ -1103,18 +1152,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a + sha256: "0ca7359dad67fd7063cb2892ab0c0737b2daafd807cf1acecd62374c8fae6c12" url: "https://pub.dev" source: hosted - version: "2.2.12" + version: "2.2.16" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" path_provider_linux: dependency: transitive description: @@ -1143,10 +1192,10 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" platform: dependency: transitive description: @@ -1171,30 +1220,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a + url: "https://pub.dev" + source: hosted + version: "6.0.1" provider: dependency: "direct main" description: name: provider - sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + sha256: "489024f942069c2920c844ee18bb3d467c69e48955a4f32d1677f71be103e310" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.4" pub_semver: dependency: transitive description: name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.5.0" recase: dependency: transitive description: @@ -1215,103 +1272,103 @@ packages: dependency: "direct main" description: name: screen_brightness - sha256: a43fdbccd5b90044f68057412dde7715cd7499a4c24f5d5da7e01ed4cf41e0af + sha256: eca7bd9d2c3c688bcad14855361cab7097839400b6b4a56f62b7ae511c709958 url: "https://pub.dev" source: hosted - version: "2.0.0+2" + version: "2.1.2" screen_brightness_android: dependency: transitive description: name: screen_brightness_android - sha256: "74455f9901ab8a1a45c9097b83855dbbb7498110cc2bc249cb5a86570dd1cf7c" + sha256: "6ba1b5812f66c64e9e4892be2d36ecd34210f4e0da8bdec6a2ea34f1aa42683e" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.1" screen_brightness_ios: dependency: transitive description: name: screen_brightness_ios - sha256: caee02b34e0089b138a7aee35c461bd2d7c78446dd417f07613def192598ca08 + sha256: bfd9bfd0ac852e7aa170e7e356cc27195b2a75037b72c8c6336cf6fb2115cffb url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.1" screen_brightness_macos: dependency: transitive description: name: screen_brightness_macos - sha256: "84fc8ffcbcf19c03d76b7673b0f2c2a2663c09aa2bc37c76ea83ab049294a97a" + sha256: "4edf330ad21078686d8bfaf89413325fbaf571dcebe1e89254d675a3f288b5b9" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.1" screen_brightness_platform_interface: dependency: transitive description: name: screen_brightness_platform_interface - sha256: "321e9455b0057e3647fd37700931e063739d94a8aa1b094f98133c01cb56c27b" + sha256: "737bd47b57746bc4291cab1b8a5843ee881af499514881b0247ec77447ee769c" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" screen_brightness_windows: dependency: transitive description: name: screen_brightness_windows - sha256: fa97ae838c42f762f04d2d70adb3d957350d6a84e3598ec800e269e7c466eedd + sha256: d3518bf0f5d7a884cee2c14449ae0b36803802866de09f7ef74077874b6b2448 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" sentry: - dependency: transitive + dependency: "direct main" description: name: sentry - sha256: "2440763ae96fa8fd1bcdfc224f5232e1b7a09af76a72f4e626ee313a261faf6f" + sha256: "077b03f9ee44cfb1eaadbf8af58255e670de62b3f240ca154ce96a5591dc3885" url: "https://pub.dev" source: hosted - version: "8.10.1" + version: "8.14.1" sentry_flutter: dependency: "direct main" description: name: sentry_flutter - sha256: "3b30038b3b9303540a8b2c8b1c8f0bb93a207f8e4b25691c59d969ddeb4734fd" + sha256: a348e2a365a8ad7682dd09db54f50f19f1c87180b8278f088bc393c511aea5e0 url: "https://pub.dev" source: hosted - version: "8.10.1" + version: "8.14.1" share_plus: dependency: "direct main" description: name: share_plus - sha256: "9c9bafd4060728d7cdb2464c341743adbd79d327cb067ec7afb64583540b47c8" + sha256: fce43200aa03ea87b91ce4c3ac79f0cecd52e2a7a56c7a4185023c271fbfa6da url: "https://pub.dev" source: hosted - version: "10.1.2" + version: "10.1.4" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: c57c0bbfec7142e3a0f55633be504b796af72e60e3c791b44d5a017b985f7a48 + sha256: cc012a23fc2d479854e6c80150696c4a5f5bb62cb89af4de1c505cf78d0a5d0b url: "https://pub.dev" source: hosted - version: "5.0.1" + version: "5.0.2" shelf: dependency: transitive description: name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.2" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" slugid: dependency: "direct main" description: @@ -1324,10 +1381,10 @@ packages: dependency: transitive description: name: smooth_page_indicator - sha256: "3b28b0c545fa67ed9e5997d9f9720d486f54c0c607e056a1094544e36934dff3" + sha256: b21ebb8bc39cf72d11c7cfd809162a48c3800668ced1c9da3aade13a32cf6c1c url: "https://pub.dev" source: hosted - version: "1.2.0+3" + version: "1.2.1" snapping_sheet_2: dependency: "direct main" description: @@ -1348,18 +1405,18 @@ packages: dependency: transitive description: name: source_helper - sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" + sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c" url: "https://pub.dev" source: hosted - version: "1.3.4" + version: "1.3.5" 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" sprintf: dependency: transitive description: @@ -1372,34 +1429,34 @@ packages: dependency: transitive description: name: sqflite - sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" sqflite_android: dependency: transitive description: name: sqflite_android - sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "4468b24876d673418a7b7147e5a08a715b4998a7ae69227acafaab762e0e5490" + sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b" url: "https://pub.dev" source: hosted - version: "2.5.4+5" + version: "2.5.5" sqflite_darwin: dependency: transitive description: name: sqflite_darwin - sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474" + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" sqflite_platform_interface: dependency: transitive description: @@ -1412,58 +1469,58 @@ 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" stream_transform: dependency: transitive description: name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" 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" synchronized: dependency: transitive description: name: synchronized - sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" + sha256: "0669c70faae6270521ee4f05bffd2919892d42d1276e6c495be80174b6bc0ef6" url: "https://pub.dev" source: hosted - version: "3.3.0+3" + version: "3.3.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" timezone: dependency: transitive description: @@ -1476,10 +1533,10 @@ packages: dependency: transitive description: name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.2" typed_data: dependency: transitive description: @@ -1508,18 +1565,18 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193" + sha256: "1d0eae19bd7606ef60fe69ef3b312a437a16549476c42321d5dc1506c9ca3bf4" url: "https://pub.dev" source: hosted - version: "6.3.14" + version: "6.3.15" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e + sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.3" url_launcher_linux: dependency: transitive description: @@ -1532,10 +1589,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_platform_interface: dependency: transitive description: @@ -1548,18 +1605,18 @@ 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: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.1.4" uuid: dependency: transitive description: @@ -1572,26 +1629,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "773c9522d66d523e1c7b25dfb95cc91c26a1e17b107039cfe147285e92de7878" + sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de" url: "https://pub.dev" source: hosted - version: "1.1.14" + version: "1.1.18" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "2430b973a4ca3c4dbc9999b62b8c719a160100dcbae5c819bae0cacce32c9cdb" + sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" url: "https://pub.dev" source: hosted - version: "1.1.12" + version: "1.1.13" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: ab9ff38fc771e9ee1139320adbe3d18a60327370c218c60752068ebee4b49ab1 + sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" url: "https://pub.dev" source: hosted - version: "1.1.15" + version: "1.1.16" vector_math: dependency: transitive description: @@ -1600,30 +1657,38 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + video_player_android: + dependency: transitive + description: + name: video_player_android + sha256: ae7d4f1b41e3ac6d24dd9b9d5d6831b52d74a61bdd90a7a6262a33d8bb97c29a + url: "https://pub.dev" + source: hosted + version: "2.8.2" + video_player_avfoundation: + dependency: transitive + description: + name: video_player_avfoundation + sha256: "84b4752745eeccb6e75865c9aab39b3d28eb27ba5726d352d45db8297fbd75bc" + url: "https://pub.dev" + source: hosted + version: "2.7.0" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: "318a6d20577e1c78cf0bf40670883cc571ea860c72a4f7426d7dacce4bdd4343" + sha256: df534476c341ab2c6a835078066fc681b8265048addd853a1e3c78740316a844 url: "https://pub.dev" source: hosted - version: "5.1.4" + version: "6.3.0" video_player_web: dependency: transitive description: name: video_player_web - sha256: fb3bbeaf0302cb0c31340ebd6075487939aa1fe3b379d1a8784ef852b679940e - url: "https://pub.dev" - source: hosted - version: "2.0.15" - video_thumbnail: - dependency: "direct main" - description: - name: video_thumbnail - sha256: "3455c189d3f0bb4e3fc2236475aa84fe598b9b2d0e08f43b9761f5bc44210016" + sha256: "3ef40ea6d72434edbfdba4624b90fd3a80a0740d260667d91e7ecd2d79e13476" url: "https://pub.dev" source: hosted - version: "0.5.3" + version: "2.3.4" visibility_detector: dependency: "direct main" description: @@ -1636,26 +1701,26 @@ 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" watcher: dependency: transitive description: name: watcher - sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web: dependency: transitive description: name: web - sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web_socket: dependency: transitive description: @@ -1668,18 +1733,18 @@ packages: dependency: transitive description: name: web_socket_channel - sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" + sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" win32: dependency: transitive description: name: win32 - sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2" + sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f url: "https://pub.dev" source: hosted - version: "5.8.0" + version: "5.12.0" win32_registry: dependency: transitive description: @@ -1716,10 +1781,10 @@ packages: dependency: transitive description: name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" sdks: - dart: ">=3.5.0 <4.0.0" - flutter: ">=3.24.0" + dart: ">=3.7.2 <4.0.0" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml index 64cc53b1..beda45a3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,77 +1,84 @@ name: campus_app description: Simplifie, improve and facilitate everyday students life. -publish_to: 'none' -version: 2.3.4 +publish_to: "none" +version: 2.3.2 environment: - sdk: ">=3.5.0 <4.0.0" + sdk: ">=3.2.0 <4.0.0" dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter - envied: ^0.5.4+1 - flutter_native_splash: ^2.4.2 + envied: ^1.1.1 + flutter_native_splash: ^2.4.0 flutter_html: ^3.0.0-alpha.5 flutter_secure_storage: ^9.2.2 provider: ^6.1.1 - flutter_svg: ^2.0.14 + flutter_svg: ^2.0.9 xml: ^6.3.0 animations: ^2.0.8 page_transition: ^2.1.0 - cached_network_image: ^3.4.1 + cached_network_image: ^3.3.1 cookie_jar: ^4.0.8 dartz: ^0.10.1 - dio: ^5.7.0 + dio: ^5.4.3+1 dio_cookie_manager: ^3.1.1 native_dio_adapter: ^1.3.0 - get_it: ^8.0.2 + get_it: ^8.0.3 html: ^0.15.4 - http: ^1.2.2 + http: ^1.2.1 intl: ^0.19.0 - path_provider: ^2.1.5 + path_provider: ^2.1.2 snapping_sheet_2: ^3.1.5 flutter_displaymode: ^0.6.0 hive: ^2.2.3 hive_flutter: ^1.1.0 hive_generator: ^2.0.1 - url_launcher: ^6.3.1 + url_launcher: ^6.2.3 flutter_inappwebview: ^6.1.5 - firebase_core: ^3.7.0 - firebase_messaging: ^15.1.4 - flutter_local_notifications: ^18.0.1 - share_plus: ^10.1.2 + firebase_core: ^3.12.1 + firebase_messaging: ^15.2.4 + flutter_local_notifications: ^19.0.0 + share_plus: ^10.1.4 flutter_onboarding: git: url: https://github.com/C4s4r/flutter_onboarding ref: 9d74464 flutter_nfc_kit: ^3.5.2 - lottie: ^3.1.3 - screen_brightness: ^2.0.0+2 - fluttertoast: ^8.2.8 - appwrite: ^13.0.0 + lottie: ^3.0.0 + screen_brightness: ^2.1.2 + fluttertoast: ^8.2.5 + appwrite: ^15.0.0 slugid: ^1.1.2 visibility_detector: ^0.4.0+2 - appinio_video_player: ^1.2.2 - sentry_flutter: ^8.10.1 - video_thumbnail: ^0.5.3 - image: ^4.3.0 + flutter_videoplayer: + git: + url: https://github.com/astarub/flutter_videoplayer + ref: v2.0 + sentry_flutter: ^8.2.0 + sentry: ^8.2.0 + get_thumbnail_video: ^0.7.3 + image: ^4.2.0 dismissible_page: ^1.0.2 - app_links: ^6.1.4 - + app_links: ^6.4.0 + dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.13 + build_runner: ^2.4.10 flutter_lints: ^5.0.0 mockito: ^5.4.3 - envied_generator: ^0.5.3 - flutter_launcher_icons: ^0.14.1 + envied_generator: ^1.1.1 + flutter_launcher_icons: ^0.14.3 -# Override js version as flutter_inappwebview depends on flutter_inappwebview_web which uses js version ^0.6.4 but as the web package is not used, this is risk-free dependency_overrides: - js: ^0.7.1 + # AppWrite depends on outdated package. + # - https://github.com/appwrite/sdk-for-flutter/issues/214#issuecomment-2278577156 + flutter_web_auth_2: ^4.1.0 + # Override js version as flutter_inappwebview depends on flutter_inappwebview_web which uses js version ^0.6.4 but as the web package is not used, this is risk-free + js: ^0.7.2 flutter_native_splash: image: "assets/img/Android-RUB_Campus_App_Logo.png" @@ -102,70 +109,70 @@ flutter_icons: flutter: assets: - - assets/img/SplashScreen-logo.png - - assets/img/SplashScreen-AStA-branding.png - - assets/img/asta_logo.png - - assets/img/mensa.png - - assets/img/qwest.png - - assets/img/rotebeete.png - - assets/img/asta-gaming-hub.png - - assets/img/icons/hochschulsport_icon.png - - assets/img/icons/home-outlined.png - - assets/img/icons/home-filled.png - - assets/img/icons/calendar-outlined.png - - assets/img/icons/calendar-filled.png - - assets/img/icons/mensa-outlined.png - - assets/img/icons/mensa-filled.png - - assets/img/icons/help-outlined.png - - assets/img/icons/help-filled.png - - assets/img/icons/wallet-outlined.png - - assets/img/icons/wallet-filled.png - - assets/img/icons/vote.svg - - assets/img/icons/error.svg - - assets/img/icons/more.png - - assets/img/icons/settings.svg - - assets/img/icons/info.svg - - assets/img/icons/instagram.svg - - assets/img/icons/facebook.svg - - assets/img/icons/twitch.svg - - assets/img/icons/website.svg - - assets/img/icons/mail.svg - - assets/img/icons/search.svg - - assets/img/icons/filter.svg - - assets/img/icons/arrow-left.svg - - assets/img/icons/arrow-right.svg - - assets/img/icons/info-message.svg - - assets/img/icons/x.svg - - assets/img/icons/map-outlined.png - - assets/img/icons/map-filled.png - - assets/img/icons/mensa-alcohol.png - - assets/img/icons/mensa-beef.png - - assets/img/icons/mensa-chicken.png - - assets/img/icons/mensa-fish.png - - assets/img/icons/mensa-halal.png - - assets/img/icons/mensa-lamm.png - - assets/img/icons/mensa-pork.png - - assets/img/icons/mensa-vegan.png - - assets/img/icons/mensa-vegetarian.png - - assets/img/icons/mensa-venison.png - - assets/img/icons/chevron-right.svg - - assets/img/icons/external-link.svg - - assets/img/icons/mail-link.png - - assets/img/icons/moodle-link.png - - assets/img/icons/flexnow-link.png - - assets/img/icons/rub-link.png - - assets/img/icons/siren.svg - - assets/img/icons/message-square.svg - - assets/img/icons/share.svg - - assets/img/icons/discord-filled.svg - - assets/img/icons/github.svg - - assets/img/icons/help-circle.svg - - assets/img/icons/euro.svg - - assets/animations/nfc-light.json - - assets/animations/nfc-dark.json - - assets/animations/coin-flip.json - - assets/img/bogestra-logo.svg - - assets/img/icons/file-plus.svg + - assets/img/SplashScreen-logo.png + - assets/img/SplashScreen-AStA-branding.png + - assets/img/asta_logo.png + - assets/img/mensa.png + - assets/img/qwest.png + - assets/img/rotebeete.png + - assets/img/asta-gaming-hub.png + - assets/img/icons/hochschulsport_icon.png + - assets/img/icons/home-outlined.png + - assets/img/icons/home-filled.png + - assets/img/icons/calendar-outlined.png + - assets/img/icons/calendar-filled.png + - assets/img/icons/mensa-outlined.png + - assets/img/icons/mensa-filled.png + - assets/img/icons/help-outlined.png + - assets/img/icons/help-filled.png + - assets/img/icons/wallet-outlined.png + - assets/img/icons/wallet-filled.png + - assets/img/icons/vote.svg + - assets/img/icons/error.svg + - assets/img/icons/more.png + - assets/img/icons/settings.svg + - assets/img/icons/info.svg + - assets/img/icons/instagram.svg + - assets/img/icons/facebook.svg + - assets/img/icons/twitch.svg + - assets/img/icons/website.svg + - assets/img/icons/mail.svg + - assets/img/icons/search.svg + - assets/img/icons/filter.svg + - assets/img/icons/arrow-left.svg + - assets/img/icons/arrow-right.svg + - assets/img/icons/info-message.svg + - assets/img/icons/x.svg + - assets/img/icons/map-outlined.png + - assets/img/icons/map-filled.png + - assets/img/icons/mensa-alcohol.png + - assets/img/icons/mensa-beef.png + - assets/img/icons/mensa-chicken.png + - assets/img/icons/mensa-fish.png + - assets/img/icons/mensa-halal.png + - assets/img/icons/mensa-lamm.png + - assets/img/icons/mensa-pork.png + - assets/img/icons/mensa-vegan.png + - assets/img/icons/mensa-vegetarian.png + - assets/img/icons/mensa-venison.png + - assets/img/icons/chevron-right.svg + - assets/img/icons/external-link.svg + - assets/img/icons/mail-link.png + - assets/img/icons/moodle-link.png + - assets/img/icons/flexnow-link.png + - assets/img/icons/rub-link.png + - assets/img/icons/siren.svg + - assets/img/icons/message-square.svg + - assets/img/icons/share.svg + - assets/img/icons/discord-filled.svg + - assets/img/icons/github.svg + - assets/img/icons/help-circle.svg + - assets/img/icons/euro.svg + - assets/animations/nfc-light.json + - assets/animations/nfc-dark.json + - assets/animations/coin-flip.json + - assets/img/bogestra-logo.svg + - assets/img/icons/file-plus.svg fonts: - family: SF-Pro @@ -186,4 +193,4 @@ flutter: weight: 900 uses-material-design: true - generate: true \ No newline at end of file + generate: true From f7d8e15be53991fcee9754be8e8f319243183fca Mon Sep 17 00:00:00 2001 From: Domai Date: Sun, 6 Apr 2025 13:58:32 +0200 Subject: [PATCH 3/9] regenerate mocks --- .../calendar_datasource_test.mocks.dart | 56 ++++++++++++++++++- .../calendar_repository_test.mocks.dart | 3 +- .../calendar_usecases_test.mocks.dart | 3 +- .../mensa/mensa_datasource_test.mocks.dart | 56 ++++++++++++++++++- .../mensa/mensa_repository_test.mocks.dart | 3 +- .../mensa/mensa_usecases_test.mocks.dart | 3 +- .../news/news_repository_test.mocks.dart | 3 +- test/pages/news/news_usecases_test.mocks.dart | 3 +- .../news/rubnews_datasource_test.mocks.dart | 56 ++++++++++++++++++- 9 files changed, 171 insertions(+), 15 deletions(-) diff --git a/test/pages/calendar/calendar_datasource_test.mocks.dart b/test/pages/calendar/calendar_datasource_test.mocks.dart index 1f4fda77..ffb2175c 100644 --- a/test/pages/calendar/calendar_datasource_test.mocks.dart +++ b/test/pages/calendar/calendar_datasource_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/calendar/calendar_datasource_test.dart. // Do not manually edit this file. @@ -24,6 +24,7 @@ import 'package:mockito/src/dummies.dart' as _i11; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types @@ -80,6 +81,16 @@ class _FakeResponse_4 extends _i1.SmartFake implements _i6.Response { ); } +class _FakeDio_5 extends _i1.SmartFake implements _i7.Dio { + _FakeDio_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + /// A class which mocks [Dio]. /// /// See the documentation for Mockito's code generation for more information. @@ -602,7 +613,8 @@ class MockDio extends _i1.Mock implements _i7.Dio { Map? queryParameters, _i9.CancelToken? cancelToken, bool? deleteOnError = true, - String? lengthHeader = r'content-length', + _i2.FileAccessMode? fileAccessMode = _i2.FileAccessMode.write, + String? lengthHeader = 'content-length', Object? data, _i2.Options? options, }) => @@ -618,6 +630,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #queryParameters: queryParameters, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -637,6 +650,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #queryParameters: queryParameters, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -652,7 +666,8 @@ class MockDio extends _i1.Mock implements _i7.Dio { _i2.ProgressCallback? onReceiveProgress, _i9.CancelToken? cancelToken, bool? deleteOnError = true, - String? lengthHeader = r'content-length', + _i2.FileAccessMode? fileAccessMode = _i2.FileAccessMode.write, + String? lengthHeader = 'content-length', Object? data, _i2.Options? options, }) => @@ -667,6 +682,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #onReceiveProgress: onReceiveProgress, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -685,6 +701,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #onReceiveProgress: onReceiveProgress, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -785,6 +802,39 @@ class MockDio extends _i1.Mock implements _i7.Dio { ), )), ) as _i8.Future<_i6.Response>); + + @override + _i7.Dio clone({ + _i2.BaseOptions? options, + _i5.Interceptors? interceptors, + _i3.HttpClientAdapter? httpClientAdapter, + _i4.Transformer? transformer, + }) => + (super.noSuchMethod( + Invocation.method( + #clone, + [], + { + #options: options, + #interceptors: interceptors, + #httpClientAdapter: httpClientAdapter, + #transformer: transformer, + }, + ), + returnValue: _FakeDio_5( + this, + Invocation.method( + #clone, + [], + { + #options: options, + #interceptors: interceptors, + #httpClientAdapter: httpClientAdapter, + #transformer: transformer, + }, + ), + ), + ) as _i7.Dio); } /// A class which mocks [Box]. diff --git a/test/pages/calendar/calendar_repository_test.mocks.dart b/test/pages/calendar/calendar_repository_test.mocks.dart index 140ff6dd..f2b775e3 100644 --- a/test/pages/calendar/calendar_repository_test.mocks.dart +++ b/test/pages/calendar/calendar_repository_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/calendar/calendar_repository_test.dart. // Do not manually edit this file. @@ -19,6 +19,7 @@ import 'package:mockito/mockito.dart' as _i1; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types diff --git a/test/pages/calendar/calendar_usecases_test.mocks.dart b/test/pages/calendar/calendar_usecases_test.mocks.dart index 36aef855..72498722 100644 --- a/test/pages/calendar/calendar_usecases_test.mocks.dart +++ b/test/pages/calendar/calendar_usecases_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/calendar/calendar_usecases_test.dart. // Do not manually edit this file. @@ -20,6 +20,7 @@ import 'package:mockito/mockito.dart' as _i1; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types diff --git a/test/pages/mensa/mensa_datasource_test.mocks.dart b/test/pages/mensa/mensa_datasource_test.mocks.dart index 96157f6b..aee62f40 100644 --- a/test/pages/mensa/mensa_datasource_test.mocks.dart +++ b/test/pages/mensa/mensa_datasource_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/mensa/mensa_datasource_test.dart. // Do not manually edit this file. @@ -24,6 +24,7 @@ import 'package:mockito/src/dummies.dart' as _i11; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types @@ -80,6 +81,16 @@ class _FakeResponse_4 extends _i1.SmartFake implements _i6.Response { ); } +class _FakeDio_5 extends _i1.SmartFake implements _i7.Dio { + _FakeDio_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + /// A class which mocks [Dio]. /// /// See the documentation for Mockito's code generation for more information. @@ -602,7 +613,8 @@ class MockDio extends _i1.Mock implements _i7.Dio { Map? queryParameters, _i9.CancelToken? cancelToken, bool? deleteOnError = true, - String? lengthHeader = r'content-length', + _i2.FileAccessMode? fileAccessMode = _i2.FileAccessMode.write, + String? lengthHeader = 'content-length', Object? data, _i2.Options? options, }) => @@ -618,6 +630,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #queryParameters: queryParameters, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -637,6 +650,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #queryParameters: queryParameters, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -652,7 +666,8 @@ class MockDio extends _i1.Mock implements _i7.Dio { _i2.ProgressCallback? onReceiveProgress, _i9.CancelToken? cancelToken, bool? deleteOnError = true, - String? lengthHeader = r'content-length', + _i2.FileAccessMode? fileAccessMode = _i2.FileAccessMode.write, + String? lengthHeader = 'content-length', Object? data, _i2.Options? options, }) => @@ -667,6 +682,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #onReceiveProgress: onReceiveProgress, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -685,6 +701,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #onReceiveProgress: onReceiveProgress, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -785,6 +802,39 @@ class MockDio extends _i1.Mock implements _i7.Dio { ), )), ) as _i8.Future<_i6.Response>); + + @override + _i7.Dio clone({ + _i2.BaseOptions? options, + _i5.Interceptors? interceptors, + _i3.HttpClientAdapter? httpClientAdapter, + _i4.Transformer? transformer, + }) => + (super.noSuchMethod( + Invocation.method( + #clone, + [], + { + #options: options, + #interceptors: interceptors, + #httpClientAdapter: httpClientAdapter, + #transformer: transformer, + }, + ), + returnValue: _FakeDio_5( + this, + Invocation.method( + #clone, + [], + { + #options: options, + #interceptors: interceptors, + #httpClientAdapter: httpClientAdapter, + #transformer: transformer, + }, + ), + ), + ) as _i7.Dio); } /// A class which mocks [Box]. diff --git a/test/pages/mensa/mensa_repository_test.mocks.dart b/test/pages/mensa/mensa_repository_test.mocks.dart index aebb00e1..4ebed507 100644 --- a/test/pages/mensa/mensa_repository_test.mocks.dart +++ b/test/pages/mensa/mensa_repository_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/mensa/mensa_repository_test.dart. // Do not manually edit this file. @@ -19,6 +19,7 @@ import 'package:mockito/mockito.dart' as _i1; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types diff --git a/test/pages/mensa/mensa_usecases_test.mocks.dart b/test/pages/mensa/mensa_usecases_test.mocks.dart index 2eaae348..786f9899 100644 --- a/test/pages/mensa/mensa_usecases_test.mocks.dart +++ b/test/pages/mensa/mensa_usecases_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/mensa/mensa_usecases_test.dart. // Do not manually edit this file. @@ -20,6 +20,7 @@ import 'package:mockito/mockito.dart' as _i1; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types diff --git a/test/pages/news/news_repository_test.mocks.dart b/test/pages/news/news_repository_test.mocks.dart index ff0c5c8c..214c0911 100644 --- a/test/pages/news/news_repository_test.mocks.dart +++ b/test/pages/news/news_repository_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/news/news_repository_test.dart. // Do not manually edit this file. @@ -20,6 +20,7 @@ import 'package:xml/xml.dart' as _i4; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types diff --git a/test/pages/news/news_usecases_test.mocks.dart b/test/pages/news/news_usecases_test.mocks.dart index cf7fbbed..c2157f72 100644 --- a/test/pages/news/news_usecases_test.mocks.dart +++ b/test/pages/news/news_usecases_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/news/news_usecases_test.dart. // Do not manually edit this file. @@ -20,6 +20,7 @@ import 'package:mockito/mockito.dart' as _i1; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types diff --git a/test/pages/news/rubnews_datasource_test.mocks.dart b/test/pages/news/rubnews_datasource_test.mocks.dart index d852a4fd..62147a8a 100644 --- a/test/pages/news/rubnews_datasource_test.mocks.dart +++ b/test/pages/news/rubnews_datasource_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.4 from annotations +// Mocks generated by Mockito 5.4.5 from annotations // in campus_app/test/pages/news/rubnews_datasource_test.dart. // Do not manually edit this file. @@ -24,6 +24,7 @@ import 'package:mockito/src/dummies.dart' as _i11; // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable // ignore_for_file: prefer_const_constructors // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types @@ -80,6 +81,16 @@ class _FakeResponse_4 extends _i1.SmartFake implements _i6.Response { ); } +class _FakeDio_5 extends _i1.SmartFake implements _i7.Dio { + _FakeDio_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + /// A class which mocks [Dio]. /// /// See the documentation for Mockito's code generation for more information. @@ -602,7 +613,8 @@ class MockDio extends _i1.Mock implements _i7.Dio { Map? queryParameters, _i9.CancelToken? cancelToken, bool? deleteOnError = true, - String? lengthHeader = r'content-length', + _i2.FileAccessMode? fileAccessMode = _i2.FileAccessMode.write, + String? lengthHeader = 'content-length', Object? data, _i2.Options? options, }) => @@ -618,6 +630,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #queryParameters: queryParameters, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -637,6 +650,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #queryParameters: queryParameters, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -652,7 +666,8 @@ class MockDio extends _i1.Mock implements _i7.Dio { _i2.ProgressCallback? onReceiveProgress, _i9.CancelToken? cancelToken, bool? deleteOnError = true, - String? lengthHeader = r'content-length', + _i2.FileAccessMode? fileAccessMode = _i2.FileAccessMode.write, + String? lengthHeader = 'content-length', Object? data, _i2.Options? options, }) => @@ -667,6 +682,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #onReceiveProgress: onReceiveProgress, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -685,6 +701,7 @@ class MockDio extends _i1.Mock implements _i7.Dio { #onReceiveProgress: onReceiveProgress, #cancelToken: cancelToken, #deleteOnError: deleteOnError, + #fileAccessMode: fileAccessMode, #lengthHeader: lengthHeader, #data: data, #options: options, @@ -785,6 +802,39 @@ class MockDio extends _i1.Mock implements _i7.Dio { ), )), ) as _i8.Future<_i6.Response>); + + @override + _i7.Dio clone({ + _i2.BaseOptions? options, + _i5.Interceptors? interceptors, + _i3.HttpClientAdapter? httpClientAdapter, + _i4.Transformer? transformer, + }) => + (super.noSuchMethod( + Invocation.method( + #clone, + [], + { + #options: options, + #interceptors: interceptors, + #httpClientAdapter: httpClientAdapter, + #transformer: transformer, + }, + ), + returnValue: _FakeDio_5( + this, + Invocation.method( + #clone, + [], + { + #options: options, + #interceptors: interceptors, + #httpClientAdapter: httpClientAdapter, + #transformer: transformer, + }, + ), + ), + ) as _i7.Dio); } /// A class which mocks [Box]. From f0be4fb2ab381fe1c36daa9a981b8a3e08a323e4 Mon Sep 17 00:00:00 2001 From: Domai Date: Sun, 6 Apr 2025 14:06:11 +0200 Subject: [PATCH 4/9] handle analyze options --- analysis_options.yaml | 10 +++++----- lib/main.dart | 2 ++ lib/utils/widgets/campus_segmented_control.dart | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 5cec895a..6204d2fa 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -6,6 +6,7 @@ analyzer: close_sinks: ignore missing_required_param: error missing_return: error + no_default_cases: ignore strong-mode: implicit-casts: true @@ -18,7 +19,7 @@ dart_code_metrics: maximum-nesting-level: 5 source-lines-of-code: 50 maintainability-index: 40 - + rules: - no-boolean-literal-compare - no-empty-block @@ -38,13 +39,13 @@ dart_code_metrics: - prefer-single-widget-per-file: ignore-private-widgets: true - prefer-extracting-callbacks - + metrics-exclude: - test/** - + rules-exclude: - test/** - + anti-patterns: - long-method - long-parameter-list @@ -124,7 +125,6 @@ linter: - one_member_abstracts - only_throw_errors - overridden_fields - - package_api_docs - package_names - package_prefixed_library_names - parameter_assignments diff --git a/lib/main.dart b/lib/main.dart index 041fda26..69da3f74 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -345,6 +345,8 @@ class CampusAppState extends State with WidgetsBindingObserver { alignment: Alignment.center, ); } + + return null; }, navigatorKey: mainNavigatorKey, debugShowCheckedModeBanner: false, diff --git a/lib/utils/widgets/campus_segmented_control.dart b/lib/utils/widgets/campus_segmented_control.dart index f6fe067d..86900529 100644 --- a/lib/utils/widgets/campus_segmented_control.dart +++ b/lib/utils/widgets/campus_segmented_control.dart @@ -5,6 +5,7 @@ import 'package:campus_app/core/themes.dart'; /// This widget allows the user to pick between two options. /// It is a linear set of two segments, each of which functions as a button. +// ignore: must_be_immutable class CampusSegmentedControl extends StatefulWidget { /// The displayed text on the left button of the SegmentedControl final String leftTitle; From 7a365149f5cff38f270c8cdb77e6428ca7dc50cd Mon Sep 17 00:00:00 2001 From: Domai Date: Sun, 6 Apr 2025 14:21:22 +0200 Subject: [PATCH 5/9] fix package upgrades manually --- pubspec.yaml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index beda45a3..4f3e9b35 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: campus_app description: Simplifie, improve and facilitate everyday students life. publish_to: "none" -version: 2.3.2 +version: 2.3.4 environment: - sdk: ">=3.2.0 <4.0.0" + sdk: ">=3.5.0 <4.0.0" dependencies: flutter: @@ -12,31 +12,31 @@ dependencies: flutter_localizations: sdk: flutter envied: ^1.1.1 - flutter_native_splash: ^2.4.0 + flutter_native_splash: ^2.4.2 flutter_html: ^3.0.0-alpha.5 flutter_secure_storage: ^9.2.2 provider: ^6.1.1 - flutter_svg: ^2.0.9 + flutter_svg: ^2.0.14 xml: ^6.3.0 animations: ^2.0.8 page_transition: ^2.1.0 - cached_network_image: ^3.3.1 + cached_network_image: ^3.4.1 cookie_jar: ^4.0.8 dartz: ^0.10.1 - dio: ^5.4.3+1 + dio: ^5.7.0 dio_cookie_manager: ^3.1.1 native_dio_adapter: ^1.3.0 get_it: ^8.0.3 html: ^0.15.4 - http: ^1.2.1 + http: ^1.2.2 intl: ^0.19.0 - path_provider: ^2.1.2 + path_provider: ^2.1.5 snapping_sheet_2: ^3.1.5 flutter_displaymode: ^0.6.0 hive: ^2.2.3 hive_flutter: ^1.1.0 hive_generator: ^2.0.1 - url_launcher: ^6.2.3 + url_launcher: ^6.3.1 flutter_inappwebview: ^6.1.5 firebase_core: ^3.12.1 firebase_messaging: ^15.2.4 @@ -47,9 +47,9 @@ dependencies: url: https://github.com/C4s4r/flutter_onboarding ref: 9d74464 flutter_nfc_kit: ^3.5.2 - lottie: ^3.0.0 + lottie: ^3.1.3 screen_brightness: ^2.1.2 - fluttertoast: ^8.2.5 + fluttertoast: ^8.2.8 appwrite: ^15.0.0 slugid: ^1.1.2 visibility_detector: ^0.4.0+2 @@ -57,17 +57,17 @@ dependencies: git: url: https://github.com/astarub/flutter_videoplayer ref: v2.0 - sentry_flutter: ^8.2.0 + sentry_flutter: ^8.10.1 sentry: ^8.2.0 get_thumbnail_video: ^0.7.3 - image: ^4.2.0 + image: ^4.3.0 dismissible_page: ^1.0.2 app_links: ^6.4.0 dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.10 + build_runner: ^2.4.13 flutter_lints: ^5.0.0 mockito: ^5.4.3 envied_generator: ^1.1.1 From cbb0caaff15ae77a6de9ac22528bac3f538565e2 Mon Sep 17 00:00:00 2001 From: Domai Date: Sun, 6 Apr 2025 14:58:03 +0200 Subject: [PATCH 6/9] do not use synthetic package --- l10n.yaml | 2 +- lib/l10n/l10n.dart | 33 +++++++++++++++++++-------------- lib/l10n/l10n_de.dart | 8 +++++--- lib/l10n/l10n_en.dart | 8 +++++--- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/l10n.yaml b/l10n.yaml index 798c757e..23f9d2f7 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -2,4 +2,4 @@ arb-dir: assets/l10n template-arb-file: l10n_en.arb output-localization-file: l10n.dart output-dir: lib/l10n -synthetic-package: true \ No newline at end of file +synthetic-package: false diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart index f30d8976..a77d2286 100644 --- a/lib/l10n/l10n.dart +++ b/lib/l10n/l10n.dart @@ -1,5 +1,3 @@ -// ignore_for_file: non_constant_identifier_names - import 'dart:async'; import 'package:flutter/foundation.dart'; @@ -7,8 +5,10 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:intl/intl.dart' as intl; -import 'package:campus_app/l10n/l10n_de.dart'; -import 'package:campus_app/l10n/l10n_en.dart'; +import 'l10n_de.dart'; +import 'l10n_en.dart'; + +// ignore_for_file: type=lint /// Callers can lookup localized strings with an instance of AppLocalizations /// returned by `AppLocalizations.of(context)`. @@ -62,7 +62,7 @@ import 'package:campus_app/l10n/l10n_en.dart'; /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { - AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale); + AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; @@ -90,7 +90,10 @@ abstract class AppLocalizations { ]; /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [Locale('de'), Locale('en')]; + static const List supportedLocales = [ + Locale('de'), + Locale('en') + ]; /// No description provided for @helloWorld. /// @@ -211,16 +214,18 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate } AppLocalizations lookupAppLocalizations(Locale locale) { + + // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'de': - return AppLocalizationsDe(); - case 'en': - return AppLocalizationsEn(); + case 'de': return AppLocalizationsDe(); + case 'en': return AppLocalizationsEn(); } - throw FlutterError('AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); + throw FlutterError( + 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.' + ); } diff --git a/lib/l10n/l10n_de.dart b/lib/l10n/l10n_de.dart index b4ddcb50..0a700abc 100644 --- a/lib/l10n/l10n_de.dart +++ b/lib/l10n/l10n_de.dart @@ -1,10 +1,12 @@ -// ignore_for_file: non_constant_identifier_names +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'l10n.dart'; -import 'package:campus_app/l10n/l10n.dart'; +// ignore_for_file: type=lint /// The translations for German (`de`). class AppLocalizationsDe extends AppLocalizations { - AppLocalizationsDe([super.locale = 'de']); + AppLocalizationsDe([String locale = 'de']) : super(locale); @override String get helloWorld => 'Hallo Welt!'; diff --git a/lib/l10n/l10n_en.dart b/lib/l10n/l10n_en.dart index 48e01e79..f57a9b47 100644 --- a/lib/l10n/l10n_en.dart +++ b/lib/l10n/l10n_en.dart @@ -1,10 +1,12 @@ -// ignore_for_file: non_constant_identifier_names +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'l10n.dart'; -import 'package:campus_app/l10n/l10n.dart'; +// ignore_for_file: type=lint /// The translations for English (`en`). class AppLocalizationsEn extends AppLocalizations { - AppLocalizationsEn([super.locale = 'en']); + AppLocalizationsEn([String locale = 'en']) : super(locale); @override String get helloWorld => 'Hello World!'; From d4ab2f1065d79dc786b433b34521a2de4b2c5522 Mon Sep 17 00:00:00 2001 From: Domai Date: Sun, 6 Apr 2025 14:59:21 +0200 Subject: [PATCH 7/9] remove duplicated sentry dependency --- pubspec.lock | 2 +- pubspec.yaml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 4268e45d..49cbde0c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1317,7 +1317,7 @@ packages: source: hosted version: "2.1.0" sentry: - dependency: "direct main" + dependency: transitive description: name: sentry sha256: "077b03f9ee44cfb1eaadbf8af58255e670de62b3f240ca154ce96a5591dc3885" diff --git a/pubspec.yaml b/pubspec.yaml index 4f3e9b35..dccb73b5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -58,7 +58,6 @@ dependencies: url: https://github.com/astarub/flutter_videoplayer ref: v2.0 sentry_flutter: ^8.10.1 - sentry: ^8.2.0 get_thumbnail_video: ^0.7.3 image: ^4.3.0 dismissible_page: ^1.0.2 From 7f0a8999219a1ebf0a4c9199324dfa9e8e088291 Mon Sep 17 00:00:00 2001 From: Fatemamahmoud-MH Date: Sun, 11 May 2025 00:14:54 +0200 Subject: [PATCH 8/9] Add translations and localization support --- .vscode/settings.json | 2 +- assets/img/icons/translate.png | Bin 0 -> 3875 bytes assets/img/icons/translation-icon.svg | 1 + assets/l10n/l10n_ar.arb | 43 ++++++ assets/l10n/l10n_de.arb | 26 +++- assets/l10n/l10n_en.arb | 24 +++- devtools_options.yaml | 3 + lib/core/settings.dart | 27 +++- lib/l10n/l10n.dart | 125 +++++++++++++++++- lib/l10n/l10n_ar.dart | 121 +++++++++++++++++ lib/l10n/l10n_de.dart | 60 +++++++++ lib/l10n/l10n_en.dart | 60 +++++++++ lib/main.dart | 1 + lib/pages/home/widgets/bottom_nav_bar.dart | 11 +- lib/pages/more/more_page.dart | 15 +++ lib/pages/more/translation.dart | 104 +++++++++++++++ lib/pages/wallet/mensa_balance_page.dart | 25 ++-- lib/pages/wallet/widgets/wallet.dart | 6 +- pubspec.lock | 8 +- pubspec.yaml | 2 + .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 2 + 22 files changed, 640 insertions(+), 29 deletions(-) create mode 100644 assets/img/icons/translate.png create mode 100644 assets/img/icons/translation-icon.svg create mode 100644 assets/l10n/l10n_ar.arb create mode 100644 devtools_options.yaml create mode 100644 lib/l10n/l10n_ar.dart create mode 100644 lib/pages/more/translation.dart diff --git a/.vscode/settings.json b/.vscode/settings.json index c42b7b94..a3f93fe0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "debug.openDebug": "openOnDebugBreak", - "files.autoSave": "onFocusChange", + "files.autoSave": "afterDelay", "explorer.confirmDragAndDrop": false, "explorer.confirmDelete": false, diff --git a/assets/img/icons/translate.png b/assets/img/icons/translate.png new file mode 100644 index 0000000000000000000000000000000000000000..183f7de4738777e9ce8e72b184c3c2aec9c3997a GIT binary patch literal 3875 zcmaJ^c{J1w_y5ie#**xmU6vtB7+cmUiZR(j_N6dP*~y+}kR{n=$rh%FtV3aXm?(*n zQjc|*L3vD;W*&RQ&->r+ocEmfp7Xh%bC+}OU-#Vm$*{FH=jIgU1OR{=X<>H#gt7kt zJKKpLFupl*LM#!Nkq+!9mcZ_teiCzpTDU|20QmiX0LqxS|LY`qHu8#dqEkuZZmszao^@chC;L$pgO0!F~?K zV#a+N!3UB@_%c~|L3X?pC&AE*<~f{6YwabFq#?Upt0cutPO~rR^)Q^YnZr4S_K&^( z`}-f(VViLc{&DkLnwvd+5x?bHdY-RZ|6S4WvmrjDRPJ`e2x1!itq|1&2-V%dKD1Xx zyni9|bnzRfZP;zrdc97tL%A#Hy!HPppPgHWkOPCf`CEm(Jx~skV;~eZOAKZOG1Usk9Xk85HVmCTs!mqp0J+T_!{NeaH#^TIsr+Ni1ABt=5*&E zvjyjF`8M+lKPt@{g!RC&$+&HS_GVzGI5Nnt{l{D0lkUgZizG3Df5)Jw#gyi}49J0Z zX)3hV6qPY>$m2+-ud;3M55`z7K|Hy zL{IVWLt$U|joldO#b%JQIPPxEwf|WCsVePC+vjQxLYVIqMw&Leo*|K+L!<_T7?H?b zK~+<6xEq%<@KS`>DL8d?ocgf10d;OY(d6c6rQ>)@&}xZzCf3gH*!A4>4zj*cdAKM@ zZ;~cXtH%Z#0tq_M3e*5!Tc0l5ykn|#n4AaHoxiKIs?j-&pN zad2E=Wo35}s0u{iIel~!O$5Oq`=2lx?%(iFMFeSwh#7qn5mE4tGo% z7eb7Wl3Kv8vo#44VYP*-kX@VNEr;fQN9;HZ$M<1@cqeQAJ)1jwApg*@6peiNUUdIV zZ=4Pb@&PfnZ2AQren}v>KF;UUIqtXQ31B|0td3h#U^h4TI}9prdToDF;k&^LsOVk2$xaf!*B0;& zqLeqz73*g{N?-})SsC=d0HYn}*qBMtacmNwI?qJYxh5{zTmz2=D!DHFgXT_lt=1T?fv$Z zWS&8x5Oe*u+r>0$^(A-`pi;w^x3}e5{pg(7UqAmeUKucEd($Ly43p)y9yWo#9t?6? zp2cYo2iJptMvDfoOEfh0ePJkE*+OOdixwAn3*b<*k?XtQGMEUc)r97T;I zVx-4l!@*CJ3cbVobC#KJ<0PfmAi0840nTP4^^-IsMEXD2G2qwr%o5Z5jX@!dFz$76 zx&)3(^vGC0w~oKeB42o6ThxDaaBBoJkvr!1GNX)b_{^JNKi3Ek8sA*N?$--}3+28cR|bw336*s#BX+*A9iPYpBpgNJ&;-)=LR z2r)1106sy^s8)dm4zoV>jO8C+-sgL&*rrN>p_<=H?y5)@$_jc(+Z+j6%zE2`KFJ*F zFtP$FdZni2a$nWg_t%CJWlSe7?Whwd9#dlMoxkuPAXfcB3smzFRBin$BE6ar^mXaIdGh$i zoKs$Of$=%Zn|~qF6$qioh+6d~r-cJ@*aXxXWUWCsU|{ok7TmIE#DrptIF%+|^eetl zU?F2Rl*7uipeTo+@U1=vGWI#pRuiIkAvz;JfH~hKzwn??YcliQPK8?`JY%QK%*8`Q zgwbmx8nPBMZL;v#=uwP^m12PE(-+qKM#*w>nISL9{UWydH^qD3m8Zfj=H-5xM-A$_ zEm8zM!Uh*iuPSv!au;ls;A@%BCcGl|);`~v;w1;(d9x~ol*^(gtA)z=PmC{vUL-)| zRdcl@q-sslW-DHc*?cXR*?QKYxy4sK=&p##!^1+83-#hlU5F76!>eVfi2b8~F(k|v zmn5+z%QofEK$Qc5rb<6_%iCh)l6%%K)5sBre!eT=1LRjAPl>L(_G`!XKD(3s#q%K} z$PTmAb@B7`SW3dGC%lYzD1QoK26ZUE8j<_c9LsYa(&7a_09ciQj~=n^px$!Ebia^v zXRd2&YQg>L$M{)KX_s|RmPyxtDX96MGHT3 z`3gzb{NUx4FpZb&Efin8hKzvcKU2vU4H1FQ8Wt5r{{DEX=Cj_FyvJaclVNa5`?=zsndBzaew<>j!U(`f&IX|)U zLTC5oHA!xz2f2^I3EaB!As>WDH}chn>nWbz=NIfROBQPN{>^%*!RUS*kX`vitW*(; zH^2(G`tA#D>}V5)IIJ(>UH+hIwkF?_b#BR3B$ZwANE6E-57c6VVHjN`=DZwgSnCM8 zA?RHd&}|s4$t|daIla+HP!K&fEi+NZdOeSM_bW`fdhaazD$vM$_}Fo> zWcoJld!6~rjX>G%sudxtTYVB;+D_MJ*BJpWd&{Jz&A!%Fal}M>B zBIoF<=qRIJTBq1ik-*G4YLO6=(`MXj9$Jg1qE%rFv>Ta0EN?PcGuDJEt79t*=+z~E zl1lHTEn9VEUR~qmomNgcT|d(j;1ZYe`Qx%~jx%dIdj)JOFCd~pvt&9Rt9t7r3RmT1 z2U1w7{&pT$YQ@qk(xq)aZZGQ!lAE)MDf)90K3f|QYq{u7>Adi1nwQmC{G*xL)cxnN zntRgfS3FY7*8Rw9(uQW9<=y%7VA(M_A_sDlf#43)0XJ(AdiB>0RMD?Qj#hcX4v&wW zQc%~YMS^jJ^j6}O4~g9FM`jS4Q$spo-5)9pL<#fRHcRhp8A6zgTvi$g6XWHG1n_ zCf+>Fur{sFOU=w@DF-u;`mDuJZsQ7Co9)%K=~M-ZXYkX16<6bc0pItATY= zB6ASh0B3pEGpwbNw%J>hcjR7WL{$7It%Lo@XpsuOJmhn_Pg3`7Vzr#c)x4wcUwOEf z_IE+?D1C?P`TH)~LI7gCAV2$qYSCC-IWTTuW_sN~pDBK%oY>nhh@5;q;@*7`!T;s# z`(MD$dmi^Gz+~ur$dNRCG{~38yXQ@t2&Yl^$`>a|kMlR^ct&0z&u6~yrAIP$hBe7G z69e4Z1aJMsE+1KgC(|4M!V3%7FV0A&=*HB2aZ9yTMsU@%!3irh=vTZ|qkS4ttM2f4 z0{&PbLCe=et7mpFjdKh%j2P#n322GE3_g9R^)u{pN*wmuBG&|`t$H|Y3QwbmC?u$S zgM8!s{2_tQWCZp}1|1bEi0R171*aIc8$7>(<p<|(PzIEkme@cEl}Sa%IVM4zi_%))AfJ^3tyaD6H-ZyK%$MAGv}Wtc+OxOW*wu`L}6O Y#OG>5WwGZv5wrmEinUquW$&c_12X|HhX4Qo literal 0 HcmV?d00001 diff --git a/assets/img/icons/translation-icon.svg b/assets/img/icons/translation-icon.svg new file mode 100644 index 00000000..8b205e86 --- /dev/null +++ b/assets/img/icons/translation-icon.svg @@ -0,0 +1 @@ +translation \ No newline at end of file diff --git a/assets/l10n/l10n_ar.arb b/assets/l10n/l10n_ar.arb new file mode 100644 index 00000000..45fc5718 --- /dev/null +++ b/assets/l10n/l10n_ar.arb @@ -0,0 +1,43 @@ +{ + "@@locale": "ar", + + "helloWorld": "مرحباً بالعالم!", + + "serverFailureMessage": "تعذر تحميل بيانات الخادم.", + "generalFailureMessage": "حدث خطأ.", + "errorMessage": "خطأ.", + "unexpectedError": "حدث خطأ غير متوقع...", + "invalid2FATokenFailureMessage": "رمز المصادقة (TOTP) غير صحيح. حاول مرة أخرى!", + "invalidLoginIDAndPasswordFailureMessage": "بيانات الاعتماد غير صحيحة!", + "welcome": "أهلاً وسهلاً!", + "login_prompt": "يرجى تسجيل الدخول باستخدام معرف RUB وكلمة المرور الخاصة بك.", + "rubid": "معرف تسجيل الدخول لحساب RUB الخاص بك", + "password": "كلمة المرور", + "login": "تسجيل الدخول", + "empty_input_field": "يرجى إدخال بيانات الاعتماد الخاصة بك!", + "login_error": "إدخال غير صالح!", + "login_success": "تم تسجيل الدخول بنجاح!", + "login_already": "تم تسجيل الدخول مسبقاً.", + "enter_totp": "يرجى إدخال رمز المصادقة لمرة واحدة (TOTP).", + "walletTitle": "المحفظة", + "addSemesterTicket": "أضف تذكرة الفصل الدراسي الخاصة بك", + "rubEmergencyButton": "مركز طوارئ RUB", + "rubEmergencyNote": "متوفر 24/7 لجميع حالات الطوارئ", + "germanySemesterTicket": "تذكرة الفصل الدراسي في ألمانيا", + "mensaBalanceTitle": "رصيد الكافيتيريا", + "balanceLabel": "الرصيد", + "euroSymbol": "€", + "lastTransactionLabel": "آخر خصم", + "scanCardTitle": "امسح بطاقتك", + "scanCardText": "ضع بطاقة الطالب بالقرب من هاتفك لمسحها.", + "nfcDisabledTitle": "NFC غير مفعل", + "nfcDisabledText": "يجب تفعيل NFC لقراءة رصيد الكافيتيريا (AKAFÖ).", + "lastSavedBalance": "آخر رصيد محفوظ", + "lastSavedTransaction": "آخر خصم ممسوح", + "navFeed": "الخلاصات", + "navEvents": "الفعاليات", + "navMensa": "المقصف", + "navWallet": "المحفظة", + "navMore": "المزيد" + +} diff --git a/assets/l10n/l10n_de.arb b/assets/l10n/l10n_de.arb index df523430..99bb8d5d 100644 --- a/assets/l10n/l10n_de.arb +++ b/assets/l10n/l10n_de.arb @@ -2,7 +2,7 @@ "@@locale": "de", "helloWorld": "Hallo Welt!", - + "serverFailureMessage": "Serverdaten konnten nicht geladen werden.", "generalFailureMessage": "Ein Fehler ist aufgetreten.", "errorMessage": "Fehler.", @@ -18,5 +18,27 @@ "login_error": "Ungültige Eingabe!", "login_success": "Erfolgreich angemeldet!", "login_already": "Du bist bereits angemeldet.", - "enter_totp": "Bitte gib deinen Einmalcode (TOTP) ein." + "enter_totp": "Bitte gib deinen Einmalcode (TOTP) ein.", + "walletTitle": "Wallet", + "addSemesterTicket": "Füge dein Semesterticket hinzu", + "rubEmergencyButton": "Leitwarte der RUB", + "rubEmergencyNote": "24/7 besetzt, für jegliche Notfälle", + "germanySemesterTicket": "Deutschlandsemesterticket", + "mensaBalanceTitle": "Mensa Guthaben", + "balanceLabel": "Guthaben", + "euroSymbol": "€", + "lastTransactionLabel": "Letzte Abbuchung", + "scanCardTitle": "Karte scannen", + "scanCardText": "Halte deinen Studierendenausweis an dein Smartphone, um ihn zu scannen.", + "nfcDisabledTitle": "NFC deaktiviert", + "nfcDisabledText": "Um dein AKAFÖ Guthaben auslesen zu können, muss NFC aktiviert sein.", + "lastSavedBalance": "Letztes Guthaben", + "lastSavedTransaction": "Letzte gescannte Abbuchung", + "navFeed": "Feed", + "navEvents": "Veranstaltungen", + "navMensa": "Mensa", + "navWallet": "Wallet", + "navMore": "Mehr" + + } diff --git a/assets/l10n/l10n_en.arb b/assets/l10n/l10n_en.arb index 562caeff..3a308694 100644 --- a/assets/l10n/l10n_en.arb +++ b/assets/l10n/l10n_en.arb @@ -18,5 +18,27 @@ "login_error": "Invalid input!", "login_success": "Successfully logged in!", "login_already": "Allready logged in.", - "enter_totp": "Please enter your TOTP." + "enter_totp": "Please enter your TOTP.", + "walletTitle": "Wallet", + "addSemesterTicket": "Add your semester ticket", + "rubEmergencyButton": "RUB Emergency Center", + "rubEmergencyNote": "Available 24/7 for any emergency", + "germanySemesterTicket": "Germany Semester Ticket", + "mensaBalanceTitle": "Mensa Balance", + "balanceLabel": "Balance", + "euroSymbol": "€", + "lastTransactionLabel": "Last transaction", + "scanCardTitle": "Scan your card", + "scanCardText": "Hold your student ID near your smartphone to scan it.", + "nfcDisabledTitle": "NFC disabled", + "nfcDisabledText": "To read your AKAFÖ balance, NFC must be enabled.", + "lastSavedBalance": "Last saved balance", + "lastSavedTransaction": "Last scanned transaction", + "navFeed": "Feed", + "navEvents": "Events", + "navMensa": "Mensa", + "navWallet": "Wallet", + "navMore": "More" + + } diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 00000000..fa0b357c --- /dev/null +++ b/devtools_options.yaml @@ -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: diff --git a/lib/core/settings.dart b/lib/core/settings.dart index c2d8d23d..5f798396 100644 --- a/lib/core/settings.dart +++ b/lib/core/settings.dart @@ -41,6 +41,26 @@ class SettingsHandler with ChangeNotifier { settingsJsonFile.writeAsString(json.encode(newSettings.toJson())); } } + //i add this for translation + Locale get appLocale => Locale(_currentSettings.appLocale); + +void setLocale(String languageCode) { + _currentSettings = _currentSettings.copyWith(appLocale: languageCode); + notifyListeners(); + + // Save updated settings + if (_directoryPath == '') { + getApplicationDocumentsDirectory().then((Directory directory) { + _directoryPath = directory.path; + final File settingsJsonFile = File('$_directoryPath/settings.json'); + settingsJsonFile.writeAsString(json.encode(_currentSettings.toJson())); + }); + } else { + final File settingsJsonFile = File('$_directoryPath/settings.json'); + settingsJsonFile.writeAsString(json.encode(_currentSettings.toJson())); + } +} +// hier end Settings get currentSettings => _currentSettings; } @@ -67,7 +87,7 @@ class Settings { final double? lastMensaBalance; final double? lastMensaTransaction; final List>? mensaRestaurantConfig; - + final String appLocale; //i add this for translation Settings({ this.useSystemDarkmode = true, this.useDarkmode = false, @@ -90,6 +110,7 @@ class Settings { this.displayFullscreenTicket = false, this.lastMensaBalance, this.lastMensaTransaction, + this.appLocale = 'en',//i add this for translation }); Settings copyWith({ @@ -114,6 +135,7 @@ class Settings { bool? displayFullscreenTicket, double? lastMensaBalance, double? lastMensaTransaction, + String? appLocale, //i add this for translation }) => Settings( useSystemDarkmode: useSystemDarkmode ?? this.useSystemDarkmode, @@ -137,6 +159,7 @@ class Settings { lastMensaBalance: lastMensaBalance ?? this.lastMensaBalance, lastMensaTransaction: lastMensaTransaction ?? this.lastMensaTransaction, mensaRestaurantConfig: mensaRestaurantConfig ?? this.mensaRestaurantConfig, + appLocale: appLocale ?? this.appLocale,//i add this for translation ); factory Settings.fromJson(Map json) { @@ -185,6 +208,7 @@ class Settings { displayFullscreenTicket: json['displayFullscreenTicket'] ?? false, lastMensaBalance: json['lastMensaBalance'], lastMensaTransaction: json['lastMensaTransaction'], + appLocale: json['appLocale'] ?? 'en',//i add this for translation ); } @@ -215,6 +239,7 @@ class Settings { 'displayFullscreenTicket': displayFullscreenTicket, 'lastMensaBalance': lastMensaBalance, 'lastMensaTransaction': lastMensaTransaction, + 'appLocale': appLocale,//i add this for translation }; } } diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart index a77d2286..dbf35105 100644 --- a/lib/l10n/l10n.dart +++ b/lib/l10n/l10n.dart @@ -5,6 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:intl/intl.dart' as intl; +import 'l10n_ar.dart'; import 'l10n_de.dart'; import 'l10n_en.dart'; @@ -91,6 +92,7 @@ abstract class AppLocalizations { /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ + Locale('ar'), Locale('de'), Locale('en') ]; @@ -196,6 +198,126 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Please enter your TOTP.'** String get enter_totp; + + /// No description provided for @walletTitle. + /// + /// In en, this message translates to: + /// **'Wallet'** + String get walletTitle; + + /// No description provided for @addSemesterTicket. + /// + /// In en, this message translates to: + /// **'Add your semester ticket'** + String get addSemesterTicket; + + /// No description provided for @rubEmergencyButton. + /// + /// In en, this message translates to: + /// **'RUB Emergency Center'** + String get rubEmergencyButton; + + /// No description provided for @rubEmergencyNote. + /// + /// In en, this message translates to: + /// **'Available 24/7 for any emergency'** + String get rubEmergencyNote; + + /// No description provided for @germanySemesterTicket. + /// + /// In en, this message translates to: + /// **'Germany Semester Ticket'** + String get germanySemesterTicket; + + /// No description provided for @mensaBalanceTitle. + /// + /// In en, this message translates to: + /// **'Mensa Balance'** + String get mensaBalanceTitle; + + /// No description provided for @balanceLabel. + /// + /// In en, this message translates to: + /// **'Balance'** + String get balanceLabel; + + /// No description provided for @euroSymbol. + /// + /// In en, this message translates to: + /// **'€'** + String get euroSymbol; + + /// No description provided for @lastTransactionLabel. + /// + /// In en, this message translates to: + /// **'Last transaction'** + String get lastTransactionLabel; + + /// No description provided for @scanCardTitle. + /// + /// In en, this message translates to: + /// **'Scan your card'** + String get scanCardTitle; + + /// No description provided for @scanCardText. + /// + /// In en, this message translates to: + /// **'Hold your student ID near your smartphone to scan it.'** + String get scanCardText; + + /// No description provided for @nfcDisabledTitle. + /// + /// In en, this message translates to: + /// **'NFC disabled'** + String get nfcDisabledTitle; + + /// No description provided for @nfcDisabledText. + /// + /// In en, this message translates to: + /// **'To read your AKAFÖ balance, NFC must be enabled.'** + String get nfcDisabledText; + + /// No description provided for @lastSavedBalance. + /// + /// In en, this message translates to: + /// **'Last saved balance'** + String get lastSavedBalance; + + /// No description provided for @lastSavedTransaction. + /// + /// In en, this message translates to: + /// **'Last scanned transaction'** + String get lastSavedTransaction; + + /// No description provided for @navFeed. + /// + /// In en, this message translates to: + /// **'Feed'** + String get navFeed; + + /// No description provided for @navEvents. + /// + /// In en, this message translates to: + /// **'Events'** + String get navEvents; + + /// No description provided for @navMensa. + /// + /// In en, this message translates to: + /// **'Mensa'** + String get navMensa; + + /// No description provided for @navWallet. + /// + /// In en, this message translates to: + /// **'Wallet'** + String get navWallet; + + /// No description provided for @navMore. + /// + /// In en, this message translates to: + /// **'More'** + String get navMore; } class _AppLocalizationsDelegate extends LocalizationsDelegate { @@ -207,7 +329,7 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate } @override - bool isSupported(Locale locale) => ['de', 'en'].contains(locale.languageCode); + bool isSupported(Locale locale) => ['ar', 'de', 'en'].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; @@ -218,6 +340,7 @@ AppLocalizations lookupAppLocalizations(Locale locale) { // Lookup logic when only language code is specified. switch (locale.languageCode) { + case 'ar': return AppLocalizationsAr(); case 'de': return AppLocalizationsDe(); case 'en': return AppLocalizationsEn(); } diff --git a/lib/l10n/l10n_ar.dart b/lib/l10n/l10n_ar.dart new file mode 100644 index 00000000..4df6ebde --- /dev/null +++ b/lib/l10n/l10n_ar.dart @@ -0,0 +1,121 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'l10n.dart'; + +// ignore_for_file: type=lint + +/// The translations for Arabic (`ar`). +class AppLocalizationsAr extends AppLocalizations { + AppLocalizationsAr([String locale = 'ar']) : super(locale); + + @override + String get helloWorld => 'مرحباً بالعالم!'; + + @override + String get serverFailureMessage => 'تعذر تحميل بيانات الخادم.'; + + @override + String get generalFailureMessage => 'حدث خطأ.'; + + @override + String get errorMessage => 'خطأ.'; + + @override + String get unexpectedError => 'حدث خطأ غير متوقع...'; + + @override + String get invalid2FATokenFailureMessage => 'رمز المصادقة (TOTP) غير صحيح. حاول مرة أخرى!'; + + @override + String get invalidLoginIDAndPasswordFailureMessage => 'بيانات الاعتماد غير صحيحة!'; + + @override + String get welcome => 'أهلاً وسهلاً!'; + + @override + String get login_prompt => 'يرجى تسجيل الدخول باستخدام معرف RUB وكلمة المرور الخاصة بك.'; + + @override + String get rubid => 'معرف تسجيل الدخول لحساب RUB الخاص بك'; + + @override + String get password => 'كلمة المرور'; + + @override + String get login => 'تسجيل الدخول'; + + @override + String get empty_input_field => 'يرجى إدخال بيانات الاعتماد الخاصة بك!'; + + @override + String get login_error => 'إدخال غير صالح!'; + + @override + String get login_success => 'تم تسجيل الدخول بنجاح!'; + + @override + String get login_already => 'تم تسجيل الدخول مسبقاً.'; + + @override + String get enter_totp => 'يرجى إدخال رمز المصادقة لمرة واحدة (TOTP).'; + + @override + String get walletTitle => 'المحفظة'; + + @override + String get addSemesterTicket => 'أضف تذكرة الفصل الدراسي الخاصة بك'; + + @override + String get rubEmergencyButton => 'مركز طوارئ RUB'; + + @override + String get rubEmergencyNote => 'متوفر 24/7 لجميع حالات الطوارئ'; + + @override + String get germanySemesterTicket => 'تذكرة الفصل الدراسي في ألمانيا'; + + @override + String get mensaBalanceTitle => 'رصيد الكافيتيريا'; + + @override + String get balanceLabel => 'الرصيد'; + + @override + String get euroSymbol => '€'; + + @override + String get lastTransactionLabel => 'آخر خصم'; + + @override + String get scanCardTitle => 'امسح بطاقتك'; + + @override + String get scanCardText => 'ضع بطاقة الطالب بالقرب من هاتفك لمسحها.'; + + @override + String get nfcDisabledTitle => 'NFC غير مفعل'; + + @override + String get nfcDisabledText => 'يجب تفعيل NFC لقراءة رصيد الكافيتيريا (AKAFÖ).'; + + @override + String get lastSavedBalance => 'آخر رصيد محفوظ'; + + @override + String get lastSavedTransaction => 'آخر خصم ممسوح'; + + @override + String get navFeed => 'الخلاصات'; + + @override + String get navEvents => 'الفعاليات'; + + @override + String get navMensa => 'المقصف'; + + @override + String get navWallet => 'المحفظة'; + + @override + String get navMore => 'المزيد'; +} diff --git a/lib/l10n/l10n_de.dart b/lib/l10n/l10n_de.dart index 0a700abc..8549ce82 100644 --- a/lib/l10n/l10n_de.dart +++ b/lib/l10n/l10n_de.dart @@ -58,4 +58,64 @@ class AppLocalizationsDe extends AppLocalizations { @override String get enter_totp => 'Bitte gib deinen Einmalcode (TOTP) ein.'; + + @override + String get walletTitle => 'Wallet'; + + @override + String get addSemesterTicket => 'Füge dein Semesterticket hinzu'; + + @override + String get rubEmergencyButton => 'Leitwarte der RUB'; + + @override + String get rubEmergencyNote => '24/7 besetzt, für jegliche Notfälle'; + + @override + String get germanySemesterTicket => 'Deutschlandsemesterticket'; + + @override + String get mensaBalanceTitle => 'Mensa Guthaben'; + + @override + String get balanceLabel => 'Guthaben'; + + @override + String get euroSymbol => '€'; + + @override + String get lastTransactionLabel => 'Letzte Abbuchung'; + + @override + String get scanCardTitle => 'Karte scannen'; + + @override + String get scanCardText => 'Halte deinen Studierendenausweis an dein Smartphone, um ihn zu scannen.'; + + @override + String get nfcDisabledTitle => 'NFC deaktiviert'; + + @override + String get nfcDisabledText => 'Um dein AKAFÖ Guthaben auslesen zu können, muss NFC aktiviert sein.'; + + @override + String get lastSavedBalance => 'Letztes Guthaben'; + + @override + String get lastSavedTransaction => 'Letzte gescannte Abbuchung'; + + @override + String get navFeed => 'Feed'; + + @override + String get navEvents => 'Veranstaltungen'; + + @override + String get navMensa => 'Mensa'; + + @override + String get navWallet => 'Wallet'; + + @override + String get navMore => 'Mehr'; } diff --git a/lib/l10n/l10n_en.dart b/lib/l10n/l10n_en.dart index f57a9b47..9e8458d8 100644 --- a/lib/l10n/l10n_en.dart +++ b/lib/l10n/l10n_en.dart @@ -58,4 +58,64 @@ class AppLocalizationsEn extends AppLocalizations { @override String get enter_totp => 'Please enter your TOTP.'; + + @override + String get walletTitle => 'Wallet'; + + @override + String get addSemesterTicket => 'Add your semester ticket'; + + @override + String get rubEmergencyButton => 'RUB Emergency Center'; + + @override + String get rubEmergencyNote => 'Available 24/7 for any emergency'; + + @override + String get germanySemesterTicket => 'Germany Semester Ticket'; + + @override + String get mensaBalanceTitle => 'Mensa Balance'; + + @override + String get balanceLabel => 'Balance'; + + @override + String get euroSymbol => '€'; + + @override + String get lastTransactionLabel => 'Last transaction'; + + @override + String get scanCardTitle => 'Scan your card'; + + @override + String get scanCardText => 'Hold your student ID near your smartphone to scan it.'; + + @override + String get nfcDisabledTitle => 'NFC disabled'; + + @override + String get nfcDisabledText => 'To read your AKAFÖ balance, NFC must be enabled.'; + + @override + String get lastSavedBalance => 'Last saved balance'; + + @override + String get lastSavedTransaction => 'Last scanned transaction'; + + @override + String get navFeed => 'Feed'; + + @override + String get navEvents => 'Events'; + + @override + String get navMensa => 'Mensa'; + + @override + String get navWallet => 'Wallet'; + + @override + String get navMore => 'More'; } diff --git a/lib/main.dart b/lib/main.dart index 69da3f74..34775c7a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -324,6 +324,7 @@ class CampusAppState extends State with WidgetsBindingObserver { @override Widget build(BuildContext context) { return MaterialApp( + locale: Provider.of(context).appLocale, //i add this for translation localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales, theme: Provider.of(context, listen: false).currentThemeData, diff --git a/lib/pages/home/widgets/bottom_nav_bar.dart b/lib/pages/home/widgets/bottom_nav_bar.dart index fb82f6c2..e9b4cd82 100644 --- a/lib/pages/home/widgets/bottom_nav_bar.dart +++ b/lib/pages/home/widgets/bottom_nav_bar.dart @@ -1,5 +1,6 @@ import 'dart:io' show Platform; +import 'package:campus_app/l10n/l10n.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -47,7 +48,7 @@ class _BottomNavBarState extends State { children: [ // News Feed BottomNavBarItem( - title: 'Feed', + title: AppLocalizations.of(context)!.navFeed, imagePathActive: 'assets/img/icons/home-filled.png', imagePathInactive: 'assets/img/icons/home-outlined.png', onTap: () => widget.onSelectedPage(PageItem.feed), @@ -55,7 +56,7 @@ class _BottomNavBarState extends State { ), // Calendar BottomNavBarItem( - title: 'Events', + title: AppLocalizations.of(context)!.navFeed, imagePathActive: 'assets/img/icons/calendar-filled.png', imagePathInactive: 'assets/img/icons/calendar-outlined.png', onTap: () => widget.onSelectedPage(PageItem.events), @@ -63,7 +64,7 @@ class _BottomNavBarState extends State { ), // Mensa BottomNavBarItem( - title: 'Mensa', + title: AppLocalizations.of(context)!.navEvents, imagePathActive: 'assets/img/icons/mensa-filled.png', imagePathInactive: 'assets/img/icons/mensa-outlined.png', onTap: () => widget.onSelectedPage(PageItem.mensa), @@ -71,7 +72,7 @@ class _BottomNavBarState extends State { ), // Wallet BottomNavBarItem( - title: 'Wallet', + title: AppLocalizations.of(context)!.navMensa, imagePathActive: 'assets/img/icons/wallet-filled.png', imagePathInactive: 'assets/img/icons/wallet-outlined.png', onTap: () => widget.onSelectedPage(PageItem.wallet), @@ -79,7 +80,7 @@ class _BottomNavBarState extends State { ), // More BottomNavBarItem( - title: 'Mehr', + title: AppLocalizations.of(context)!.navWallet, imagePathActive: 'assets/img/icons/more.png', imagePathInactive: 'assets/img/icons/more.png', onTap: () => widget.onSelectedPage(PageItem.more), diff --git a/lib/pages/more/more_page.dart b/lib/pages/more/more_page.dart index 802e5cbe..b913d91e 100644 --- a/lib/pages/more/more_page.dart +++ b/lib/pages/more/more_page.dart @@ -12,6 +12,7 @@ import 'package:campus_app/pages/more/widgets/button_group.dart'; import 'package:campus_app/pages/more/in_app_web_view_page.dart'; import 'package:campus_app/pages/more/settings_page.dart'; import 'package:campus_app/pages/more/imprint_page.dart'; +import 'package:campus_app/pages/more/translation.dart'; class MorePage extends StatefulWidget { final GlobalKey mainNavigatorKey; @@ -209,6 +210,18 @@ class MorePageState extends State with AutomaticKeepAliveClientMixin const Translation()), + ); + }, + ), // Privacy ExternalLinkButton( title: 'Datenschutz', @@ -241,6 +254,8 @@ class MorePageState extends State with AutomaticKeepAliveClientMixin showLicensePage(context: context), ), + + // Feedback ExternalLinkButton( title: 'Feedback', diff --git a/lib/pages/more/translation.dart b/lib/pages/more/translation.dart new file mode 100644 index 00000000..13f6f409 --- /dev/null +++ b/lib/pages/more/translation.dart @@ -0,0 +1,104 @@ +import 'package:campus_app/core/settings.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import 'package:campus_app/core/themes.dart'; +import 'package:campus_app/utils/widgets/campus_icon_button.dart'; + +class Translation extends StatefulWidget { + const Translation({super.key}); + + @override + State createState() => _TranslationState(); +} + +class _TranslationState extends State { + String _selectedLanguage = 'en'; // Standard: Englisch + + final Map _languageOptions = { + 'en': 'English', + 'de': 'Deutsch', + 'ar': 'Arabic', + //add hier more languages + }; + + @override + Widget build(BuildContext context) { + final theme = Provider.of(context).currentThemeData; + + return Scaffold( + backgroundColor: theme.colorScheme.surface, + body: Padding( + padding: const EdgeInsets.only(top: 20), + child: Column( + children: [ + // Back button & page title + Padding( + padding: const EdgeInsets.only(bottom: 20, left: 20, right: 20), + child: SizedBox( + width: double.infinity, + child: Stack( + children: [ + CampusIconButton( + iconPath: 'assets/img/icons/arrow-left.svg', + onTap: () { + Navigator.pop(context); + }, + ), + Align( + child: Text( + 'Languages', + style: theme.textTheme.displayMedium, + ), + ), + ], + ), + ), + ), + + // Language selection UI + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + children: [ + DropdownButtonFormField( + value: _selectedLanguage, + decoration: InputDecoration( + labelText: 'Select Language', + border: OutlineInputBorder(), + ), + items: _languageOptions.entries + .map( + (entry) => DropdownMenuItem( + value: entry.key, + child: Text(entry.value), + ), + ) + .toList(), + onChanged: (value) { + setState(() { + _selectedLanguage = value!; + }); + }, + ), + const SizedBox(height: 20), + ElevatedButton( + onPressed: () { + // TODO: implement language switching logic here + Provider.of(context, listen: false).setLocale(_selectedLanguage);// i added this for translation + + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Language changed to ${_languageOptions[_selectedLanguage]}')), + ); + }, + child: const Text('Apply'), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/wallet/mensa_balance_page.dart b/lib/pages/wallet/mensa_balance_page.dart index d1795ee0..729d183f 100644 --- a/lib/pages/wallet/mensa_balance_page.dart +++ b/lib/pages/wallet/mensa_balance_page.dart @@ -1,5 +1,6 @@ import 'dart:io' show Platform; import 'dart:convert'; +import 'package:campus_app/l10n/l10n.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; @@ -209,7 +210,7 @@ class _MensaBalancePageState extends State with TickerProvider ), Align( child: Text( - 'Mensa Guthaben', + AppLocalizations.of(context)!.mensaBalanceTitle , style: Provider.of(context).currentThemeData.textTheme.displayMedium, ), ), @@ -244,7 +245,7 @@ class _MensaBalancePageState extends State with TickerProvider mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - 'Guthaben: ', + AppLocalizations.of(context)!.balanceLabel + ": ", style: Provider.of(context).currentThemeData.textTheme.headlineSmall, ), @@ -260,7 +261,7 @@ class _MensaBalancePageState extends State with TickerProvider }, ), Text( - ' €', + " ${AppLocalizations.of(context)!.euroSymbol}", style: Provider.of(context).currentThemeData.textTheme.headlineSmall, ), @@ -269,7 +270,7 @@ class _MensaBalancePageState extends State with TickerProvider // Last transaction Padding( padding: const EdgeInsets.only(top: 10), - child: Text('Letzte Abbuchung: -${lastTransaction.toStringAsFixed(2)} €'), + child: Text("${AppLocalizations.of(context)!.lastTransactionLabel}: -${lastTransaction.toStringAsFixed(2)} ${AppLocalizations.of(context)!.euroSymbol}"), ), ], ), @@ -292,9 +293,9 @@ class _MensaBalancePageState extends State with TickerProvider ) else Lottie.asset('assets/animations/nfc-dark.json'), - const EmptyStatePlaceholder( - title: 'Karte scannen', - text: 'Halte deinen Studierendenausweis an dein Smartphone, um ihn zu scannen.', + EmptyStatePlaceholder( + title: AppLocalizations.of(context)!.scanCardTitle, + text: AppLocalizations.of(context)!.scanCardText, ), ], ), @@ -302,9 +303,9 @@ class _MensaBalancePageState extends State with TickerProvider ], ], ) - : const EmptyStatePlaceholder( - title: 'NFC deaktiviert', - text: 'Um dein AKAFÖ Guthaben auslesen zu können, muss NFC aktiviert sein.', + : EmptyStatePlaceholder( + title: AppLocalizations.of(context)!.nfcDisabledTitle, + text: AppLocalizations.of(context)!.nfcDisabledText, ), ), if (Provider.of(context).currentSettings.lastMensaBalance != null && @@ -315,10 +316,10 @@ class _MensaBalancePageState extends State with TickerProvider child: Column( children: [ Text( - 'Letztes Guthaben: ${Provider.of(context).currentSettings.lastMensaBalance} €', + "${AppLocalizations.of(context)!.lastSavedBalance}: ${Provider.of(context).currentSettings.lastMensaBalance} ${AppLocalizations.of(context)!.euroSymbol}", ), Text( - 'Letzte gescannte Abbuchung: -${Provider.of(context).currentSettings.lastMensaTransaction} €', + "${AppLocalizations.of(context)!.lastSavedTransaction}: -${Provider.of(context).currentSettings.lastMensaTransaction} ${AppLocalizations.of(context)!.euroSymbol}", ), ], ), diff --git a/lib/pages/wallet/widgets/wallet.dart b/lib/pages/wallet/widgets/wallet.dart index 42fe457f..3b0915cf 100644 --- a/lib/pages/wallet/widgets/wallet.dart +++ b/lib/pages/wallet/widgets/wallet.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:campus_app/l10n/l10n.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -16,6 +17,7 @@ import 'package:campus_app/pages/wallet/ticket_fullscreen.dart'; import 'package:campus_app/pages/wallet/widgets/stacked_card_carousel.dart'; import 'package:campus_app/utils/widgets/custom_button.dart'; + class CampusWallet extends StatelessWidget { const CampusWallet({super.key}); @@ -179,7 +181,7 @@ class _BogestraTicketState extends State with AutomaticKeepAlive crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Deutschlandsemesterticket', + AppLocalizations.of(context)!.germanySemesterTicket, style: Provider.of(context) .currentThemeData .textTheme @@ -259,7 +261,7 @@ class _BogestraTicketState extends State with AutomaticKeepAlive Padding( padding: const EdgeInsets.only(top: 8), child: Text( - 'Füge dein Semesterticket hinzu', + AppLocalizations.of(context)!.addSemesterTicket, style: Provider.of(context).currentThemeData.textTheme.bodyMedium, ), ), diff --git a/pubspec.lock b/pubspec.lock index 49cbde0c..adc22cf1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -106,10 +106,10 @@ packages: dependency: transitive description: name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.12.0" boolean_selector: dependency: transitive description: @@ -426,10 +426,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.3" + version: "1.3.2" ffi: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index dccb73b5..99237cf2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -108,6 +108,8 @@ flutter_icons: flutter: assets: + - assets/img/icons/translate.png + - assets/img/icons/translation-icon.svg - assets/img/SplashScreen-logo.png - assets/img/SplashScreen-AStA-branding.png - assets/img/asta_logo.png diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 61655f97..2e52ad8b 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,6 +7,7 @@ #include "generated_plugin_registrant.h" #include +#include #include #include #include @@ -19,6 +20,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { AppLinksPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("AppLinksPluginCApi")); + DesktopWebviewWindowPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DesktopWebviewWindowPlugin")); FirebaseCorePluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d7bb58ad..f9579c55 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST app_links + desktop_webview_window firebase_core flutter_inappwebview_windows flutter_secure_storage_windows @@ -15,6 +16,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + flutter_local_notifications_windows jni ) From 2602a4fec48f0c9b503c0536eb33e4c63c1f33ac Mon Sep 17 00:00:00 2001 From: Fatemamahmoud-MH Date: Mon, 19 May 2025 15:30:41 +0200 Subject: [PATCH 9/9] adding new translation --- assets/l10n/l10n_ar.arb | 33 +- assets/l10n/l10n_de.arb | 107 +++- assets/l10n/l10n_en.arb | 202 ++++++- lib/l10n/l10n.dart | 1134 +++++++++++++++++++++++++++++++++++++++ lib/l10n/l10n_ar.dart | 569 +++++++++++++++++++- lib/l10n/l10n_de.dart | 567 ++++++++++++++++++++ lib/l10n/l10n_en.dart | 567 ++++++++++++++++++++ 7 files changed, 3161 insertions(+), 18 deletions(-) diff --git a/assets/l10n/l10n_ar.arb b/assets/l10n/l10n_ar.arb index 45fc5718..9a2b1f3e 100644 --- a/assets/l10n/l10n_ar.arb +++ b/assets/l10n/l10n_ar.arb @@ -38,6 +38,33 @@ "navEvents": "الفعاليات", "navMensa": "المقصف", "navWallet": "المحفظة", - "navMore": "المزيد" - -} + "navMore": "المزيد", + "faqEmergencyNumberText": "تمتلك جامعة الرور في بوخوم غرفة مراقبة تعمل على مدار الساعة ويمكن الوصول إليها دائمًا عبر الهاتف. في حالات الطوارئ، يتم إخطار خدمات الإطفاء أو الإسعاف أو الشرطة وكذلك الجهات المعنية في الجامعة. من الأفضل حفظ رقم الطوارئ على هاتفك: 0234 3223333", + "controlRoomButton": "غرفة التحكم في جامعة بوخوم", + "balanceMultipleTags": "تم العثور على عدة بطاقات NFC! حاول مرة أخرى.", + "balanceIOSScanCard": "امسح بطاقتك.", + "balanceMensaBalance": "رصيد الكافتيريا", + "balanceBalance": "الرصيد: ", + "balanceLastTransaction": "آخر عملية:", + "balanceScanCard": "امسح البطاقة", + "balanceScanCardDetailed": "ضع بطاقة الطالب الخاصة بك قرب هاتفك لمسحها.", + "balanceNFCOff": "تم تعطيل NFC", + "balanceNFCOffDetailed": "يجب تفعيل NFC لقراءة رصيد بطاقة AKAFÖ الخاصة بك.", + "balanceLastBalance": "آخر رصيد: ", + "balanceLastScanned": "آخر عملية ممسوحة: ", + "ticketLoginLoginID": "معرف تسجيل الدخول إلى RUB", + "ticketLoginPasswort": "كلمة مرور RUB", + "ticketLoginLogin": "تسجيل الدخول", + "ticketLoginBothFieldsError": "يرجى ملء كلا الحقلين!", + "ticketLoginInternetError": "تحقق من اتصالك بالإنترنت!", + "ticketLoginWrongDataError": "معرف الدخول أو كلمة المرور غير صحيحة!", + "ticketLoginLoadingError": "حدث خطأ أثناء تحميل التذكرة!", + "ticketLoginEncryptedInfo": "يتم تشفير بياناتك وتخزينها محليًا. يتم إرسالها فقط إلى خوادم RUB عند تسجيل الدخول.", + "walletAddStudentTicket": "أضف تذكرة الفصل الدراسي الخاصة بك", + "walletPageWallet": "المحفظة", + "walletPageBalance": "رصيد الكافتيريا", + "walletPageCampusABC": "قاموس الحرم الجامعي ABC", + "walletPageComingInFuture": "سيتم توسيع هذا القسم في الإصدارات المستقبلية لدمج أدلة مفيدة.", + "controlRoomButtonDescription": "متواجدون دائمًا، لأي حالة طارئة", + "possibleDeviationsNotice": "قد تحدث تغييرات! يرجى الانتباه إلى الإشعارات في الموقع." +} \ No newline at end of file diff --git a/assets/l10n/l10n_de.arb b/assets/l10n/l10n_de.arb index 99bb8d5d..a99ffd61 100644 --- a/assets/l10n/l10n_de.arb +++ b/assets/l10n/l10n_de.arb @@ -24,7 +24,104 @@ "rubEmergencyButton": "Leitwarte der RUB", "rubEmergencyNote": "24/7 besetzt, für jegliche Notfälle", "germanySemesterTicket": "Deutschlandsemesterticket", - "mensaBalanceTitle": "Mensa Guthaben", + + "navFeed": "Feed", + "navEvents": "Veranstaltungen", + "navMensa": "Mensa", + "navWallet": "Wallet", + "navMore": "Mehr", + "privacyPolicyPrivacy": "Datenschutz", + "privacyPolicyText": "

Verantwortliche Stelle im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:


\n
\nAStA an der Ruhr-Universität Bochum
\nPaul Hoffstiepel (Vorsitzender)
\n
\nStudierendenhaus 0/11
\nUniversitätsstr. 150
\n44801 Bochum
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\n
\nSie können Sie sich jederzeit mit einer Beschwerde an die zuständige Aufsichtsbehörde wenden. Diese ist:\n
\nLandesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen
\nPostfach 20 04 44
\n40102 Düsseldorf
\nTel.: +49 211 384240
\nFax: +49 211 3842410
\nE-Mail: poststelle@ldi.nrw.de
\nInternet: poststelle@ldi.nrw.dehttps://ldi.nrw.de
\n
\n

Datenverarbeitung durch die Nutzung der Campus App


\nBei der Nutzung der Campus App werden Daten erhoben und ausgetauscht, die zur Verwendung des Angebotes erforderlich sind. Dies sind:
\n- IP-Adresse
\n- Verwendetes Betriebssystem
\n- Uhrzeit der Serveranfrage
\n- Übertragene Datenmenge
\n- Standortdaten
\n
\nDiese Daten werden bei der Nutzung der Campus App ebenfalls in Log-Dateien über den Zeitpunkt des Besuches hinaus auf einem Server, welcher durch den AStA betrieben wird und ggf. auf einem Server einer besuchten Seite gespeichert.
\nUnsere App stellt Neuigkeiten verschiedener Internetseiten bereit, die nicht von der verfassten Studierendenschaft der Ruhr-Universität Bochum betrieben werden. \nEin Einfluss auf die Verarbeitung der dort erhobenen Daten besteht nicht. \nDie oben genannten Nutzungsdaten werden dabei an folgende Anbieter übermittelt:
\n- ruhr-uni-bochum.de, Universitätsstraße 150, 44801 Bochum. Datenschutzerklärung: https://www.ruhr-uni-bochum.de/de/datenschutz
\n
\nBei der Installation der App werden Benutzer:innen danach gefragt, ob sie Push Notifications zu bestimmten Themen bekommen möchten. \nWenn Nutzer:innen in den Bezug von Push Notifications Einwilligen werden personenbezogene Daten wie z.B. IP Adresse und die gewählten Themen an Server der Firma Google Inc. übertragen. \nDie Daten werden die Daten ohne angemessenes Schutzniveau im Sinne von Art 46 DSGVO an Server von Google in die USA übertragen. \nSiehe dazu auch „Schrems II-Urteil“ (Az.: C-311/18 vom 16.07.2020) des EuGH. \nEs besteht das Risiko, dass US-Sicherheitsbehörden auf die Daten zugreifen ohne dass Betroffene darüber Informiert werden und ohne dass Rechtsbehelfe eingelegt werden können. \nDie Übermittlung erfolgt daher nur auf der ausdrücklichen Einwilligung nach Art. 49 Abs 1 a der DSGVO.\n
\nDie Einwilligung kann jederzeit in der Campus App unter dem Menupunkt „Mehr“, im Untermenü „Einstellungen“ widerrufen werden.
\n
\nWeitere Informationen in den Datenschutzhinweisen zu Firebase von Google:
\n„Schrems II“ – Urteil des EuGH:
https://curia.europa.eu/juris/liste.jsf?language=de&num=C-311/18
\n
\nDie Campus App enthält Links zu Webseiten anderer Anbieter.
\nWir haben keinen Einfluss darauf, dass diese Anbieter die Datenschutzbestimmungen einhalten.
\nEine permanente Überprüfung der Links ist ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar.
\nBei Bekanntwerden von Rechtsverstößen werden betroffene Links unverzüglich gelöscht.
\n
\nBei der Nutzung des Raumfinders der Campus App, werden die aktuellen Standortdaten des Endgerätes verabeitet und bis zum Schließen der App zwischengespeichert.
\nEine Einwilligung wird hierfür vom Betriebssystem eingeholt und kann jederzeit durch den Nutzer widerrufen werden.
\n
\nBei der Nutzung der Funktion zum Anzeigen des Semestertickets werden die RUB Logindaten (LoginID, Passwort) lokal auf dem Gerät gespeichert, dies ist zum Abrufen des Tickets unabdingbar. Eine Übermittlung der Daten erfolgt nur an den offizielen SSO Provider der RUB.\n
\n

Zweck der Datenverarbeitung


\nDie Verarbeitung der personenbezogenen Daten der Nutzer ist für den ordnungsgemäßen Betrieb der App erforderlich.
\nDabei ist es unerlässlich, dass beispielsweise beim Abrufen der Speisepläne durch einen Server des AStAs personenbezogene Daten erhoben werden.
\nDes Weiteren werden beim Laden der Artikel im Newsfeed, Daten an die oben genannten Seiten übermittelt.
\n
\n

Löschung bzw. Sperrung der Daten


\nNach den Grundsätzen der Datenvermeidung und der Datensparsamkeit speichern wir alle Daten, die wir für die in dieser Datenschutzerklärung genannten bzw. anderen rechtlich vorgeschriebenen Gründe erhoben haben nur so lange, wie dies für den jeweiligen Zweck notwendig ist. Nach Wegfall des Zweckes bzw. nach Ablauf der Fristen werden die Daten entsprechend der gesetzlichen Vorgaben gelöscht, vernichtet oder gesperrt.
\n
\nGesetzliche Grundlagen für die Aufbewahrungsfristen werden in der Abgabenordnung §§ 147 und 257 geregelt.
\n
\n

Rechtsgrundlagen (nach Art. 13 DSGVO)


\nWir speichern Ihre Daten nur lange, wie es notwendig ist. Wir verarbeiten Ihre Daten auf den folgenden Rechtsgrundlagen:
\n
\nArtikel 6 Absatz 1 und Artikel 7 DSGVO für die Erfüllung von Leistungen und rechtlicher Verpflichtungen.
\nArtikel 28 DSGVO für die Verarbeitung von personenbezogen Daten im Auftrag.
\nNach Ablauf der Fristen werden Ihre Daten routinemäßig gelöscht.
\n
\n

Ihre Rechte


\nDie Datenschutzgrundverordnung räumt Ihnen folgende Rechte ein:
\n
\nVerlangen einer Bestätigung über die Verarbeitung Sie betreffender personenbezogener Daten (Art. 15)
\nVerlangen einer Kopie der Daten (Art. 15)
\nRecht auf Korrektur unrichtiger Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Vervollständigung unvollständiger, Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Löschung Sie betreffender personenbezogener Daten („Recht auf Vergessenwerden“ Art. 17)
\nRecht auf Einschränkung Sie betreffender personenbezogener Daten (Art. 18)
\nRecht auf die Übertragung der Daten an einen Dritten (Art. 20)
\nBeschwerde bei der oben genannten Aufsichtsbehörde (Art. 77)
\nErteilte Einwilligungen können Sie mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3)
\nRecht auf Widerspruch der Verarbeitung Sie betreffender personenbezogener Daten (Art. 21)
\nSollten Sie Fragen zu einzelnen Punkten haben oder eines Ihrer Rechte ausüben wollen, wenden Sie sich an die oben angegebene verantwortliche Stelle oder an unseren Datenschutzbeauftragten unter datenschutz@asta-bochum.de.
\n
", + "settingsSettings": "Einstellungen", + "settingsHeadlineTheming": "Theming", + "settingsSystemDarkmode": "System Darkmode", + "settingsDarkmode": "Darkmode", + "settingsHeadlineCoreData": "Stammdaten", + "settingsStudyProgram": "Studiengang", + "settingsLanguage": "Sprache", + "settingsStudyProgramChange": "Ändern", + "settingsHeadlineBehaviour": "Verhalten", + "settingsUseExternalBrowser": "Verwende externen Browser für Links", + "settingsTextSize": "Verwende Textgröße des Systems", + "settingsTicketFullscreen": "Vollbildschirmmodus QR-Code Semesterticket", + "settingsHeadlinePrivacy": "Datenschutz", + "settingsGoogleServices": "Google Services für Benachrichtigungen", + "settingsHeadlinePushNotifications": "Push-Benachrichtigungen", + "settingsPushNotificationsEvents": "Benachrichtigungen für gespeicherte Events", + "controlRoomButton": "Leitwarte der RUB", + "controlRoomButtonDescription": " 24/7 besetzt, für jegliche Notfälle", + "walletAddStudentTicket": "Füge dein Semesterticket hinzu", + "faqCampusABC": "Campus ABC", + "faqMandatoryAttendance": "Anwesenheitspflicht", + "faqMandatoryAttendanceText": "Unabhängig von digitalen Semestern, was historisch betrachtet eine Ausnahmefallregelung an der RUB darstellt, \ngilt in einigen Ausnahmefällen und bestimmten Kursformaten eine Anwesenheitspflicht. Die Anwesenheitspflicht, \ndie früher bestand, ist mit Inkrafttreten des Hochschulzukunftsgesetzes NRW zum Oktober 2014 abgeschafft worden. \nDanach ist es grundsätzlich verboten die Erbringung und Eintragung einer Leistung von der Anwesenheit in einer \nLehrveranstaltung abhängig zu machen. Davon ausgenommen sind jedoch vor allem Exkursionen, Sprachkurse, Praktika, \npraktische Übungen und vergleichbare Lehrveranstaltungen. Sollte in einer deiner Veranstaltungen trotz des Verbotes \neine Anwesenheitspflicht verlangt werden, kannst du dich hier melden: \nhttps://asta-bochum.de/anwesenheitspflicht", + "faqAStAMessenger": "AStA-Messenger", + "faqAStAMessengerText": "Ab sofort sind wir unter der Mobilfunknummer +49 152 22614240 für \nallgemeine Fragen bei Whatsapp erreichbar.", + "faqAccessibility": "Barrierefreiheit", + "faqAccessibilityText": "Barrierefreiheit bedeutet die Umwelt und Infrastruktur in dem Sinne zu gestalten, dass sie auch von Menschen mit \nBeeinträchtigungen ohne zusätzliche Hilfe in Anspruch genommen werden kann. Das Studium für Menschen mit \nBeeinträchtigungen ist in vielerlei Hinsicht erschwert. Die RUB besitzt jedoch Initiativen den Studienalltag so \nweit wie möglich zu vereinfachen und jeder bzw. jedem Studierenden zugänglich zu machen. Unserer „Autonomes \nReferat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ und das BZI des AkaFö sind dabei eure \nerste Anlaufstelle für einen Einblick in die Angebote. So bietet die Universitätsbibliothek (UB) z.B. einen \nService zur Literaturbeschaffung an, um Barrierefreiheit zu ermöglichen. Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion \nsind weitergehende Informationen für euch aufgelistet.", + "faqLibraries": "Bibliotheken", + "faqLibrariesText": "Das Bibliothekssystem der RUB setzt sich aus der Universitätsbibliothek (UB), dem zentralen Gebäude des Campus \nund den in den Gebäuden verteilten Fachbibliotheken zusammen. Diese bieten dir einen Raum zum Lernen und \nRecherchieren für Hausarbeiten und Referate oder zum Lernen für Klausuren. Für jede einzelne Bibliothek bestehen \ngesonderte Regeln, was eine mögliche Ausleihe und die Öffnungszeiten betrifft. Die UB ist in den Zeiten von MO-FR: \n8.00 bis 23.00 Uhr und SA-SO: von 10.00 bis 19.00 Uhr geöffnet. Die UB stellt eine große Zahl an Arbeitsplätzen mit \nund ohne PC bereit. Für die Benutzung der Schließfächer ist eine 2€-Münze erforderlich! Erfahrt alle auf Corona \nbezogenen und alle aktualisierten Informationen auf der Internetseite der UB. Im Servicereferat des AStA kannst du \nauch kostenfrei einen AStA-Chip erhalten, der in die UB-Schließfächer passt. Eine Auflistung aller Fachbibliotheken \nund weitere Informationen: https://www.ub.rub.de", + "faqCreditPoints": "Credit Points", + "faqCreditPointsText": "Credit Points (CP) werden für jede erbrachte Prüfungsleistung vergeben. Du brauchst eine gewisse Anzahl von CP, \num Module abzuschließen und dich letztlich für deine Abschlussprüfungen anzumelden. Dabei soll 1 CP einem \nArbeitsaufwand von 30 Semesterwochenstunden entsprechen. Dieser umfasst die Vor- und Nachbereitung sowie die \nWochenstunden der Veranstaltung. Wie viele CP für eine Lehrveranstaltung vergeben werden kannst du deiner \nPrüfungsordnung entnehmen.", + "faqeECampus": "eCampus", + "faqeECampusText": "eCampus ist ein zentrales Verwaltungsportal für Studenten. Dort kann nach der Anmedlung das Semesterticket abgerufen \nwerden oder auch der zu zahlende Semesterbeitrag eingesehen werden. Weitere Informationen findne sich unter \n\nhttps://www.it-services.ruhr-uni-bochum.de/services/ecampus.html.de", + "faqECTS": "ECTS", + "faqECTSText": "Das „European Credit Transfer System“ (Europäisches System zur Übertragung und Akkumulierung von Studienleistungen), \nkurz ECTS, bietet die Möglichkeit, die an einer Hochschuleinrichtung erworbenen Leistungspunkte auf ein Studium an \neiner anderen Hochschuleinrichtung anzurechnen. ECTS-Leistungspunkte entsprechen dem Lernen auf der Grundlage von \ndefinierten Lernzielen und dem damit verbundenen Arbeitspensum. Es soll Studierende bei einem Umzug von einem Land \nin ein anderes behilflich sein und sie dabei unterstützen, ihre akademischen Qualifikationen und Studienzeiten im \nAusland anerkennen zu lassen. Mehr Infos findet ihr unter: \n\nhttps://education.ec.europa.eu/de/europaeisches-system-zur-uebertragung-und-akkumulierung-von-studienleistungen-ects", + "faqInclusion": "Inklusion", + "faqInclusionText": "Unter Inklusion verstehen wir die Teilhabe aller Menschen an der Gesellschaft. Konnotiert ist dieser Begriff \ninsbesondere durch die Berücksichtigung benachteiligter Personengruppen, denen eine soziale Ungleichheit und mangelnde \nChancengleichheit infolge einer studienerschwerenden gesundheitlichen Beeinträchtigung vorausgeht. Wir an der RUB sind \nbestrebt die Chancen und das Recht auf Bildung für alle Menschen gleich zu gestalten. An der RUB gibt es diverse Initiativen, \ndie euch in diesen Belangen mit Rat und Tat zu Seite stehen. Unser „Autonomes Referat für Menschen mit Behinderungen und \nsämtlichen Beeinträchtigungen“ ist hierzu neben dem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure \nerste Anlaufstelle. Neu ist das Förderprojekt „Inklusive Hochschule“, das sich dem Ziel verschrieben hat, Studierenden \nmit Behinderung oder chronischer Erkrankung die gleichberechtigte Teilhabe am Studium zu ermöglichen. Dorthin könnt \nIhr Euch auch mit Kritik, Lob und Euren Wünschen zum Thema Inklusion an der RUB wenden (z.B. per Mail an \ninklusion@rub.de). Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion sind Informationen \nzum BZI für euch aufgelistet. Auch die zentrale Studienberatung (ZSB) kann euch eine erste Hilfestellung in diesen \nBelangen geben.", + "faqLabInternships": "Labor-Praktika", + "faqLabInternshipsText": "Das Absolvieren von Labor-Praktika wird vor allem in naturwissenschaftlichen und ingenieurswissenschaftlichen \nStudiengängen sowie in der Medizin von dir erwartet. Es werden vorbereitende Einführungsveranstaltungen und Sicherheitsbelehrungen \nangeboten. Außerdem musst du weitere Anforderungen erfüllen. Diese kannst du auf den Webseiten der Lehrstühle erfahren.", + "faqCompensation": "Nachteilsausgleich", + "faqCompensationText": "Ein „Nachteilsausgleich“ bezeichnet im sozialrechtlichen Sinne die Ansprüche auf Hilfe und Ausgleich, die einem \njeden Studierenden mit Beeinträchtigungen unter bestimmten Voraussetzungen zustehen. Umfasst werden hinsichtlich \ndes Studiums an der RUB dabei Lehr- und Prüfungsbedingungen des jeweiligen Studiengangs. Neben der Verlängerung \nder Schreibzeit bei Klausuren können insbesondere flexible Pausenregelungen, die Notwendigkeit bestimmter technischer, \nelektronischer oder sonstiger apparativer Hilfen sowie einer Veränderung der Arbeitsplatzorganisation berücksichtigt \nwerden. Unser „Autonomes Referat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ ist hierzu neben \ndem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure erste Anlaufstelle. Hier erhaltet ihr \nBeratungsangebote und eine erste Hilfe und Information zu euren Möglichkeiten an der RUB.", + "faqOptional": "Optionalbereich", + "faqOptionalText": "Neben den Lehrveranstaltungen deines spezifischen Bachelor-Studienganges musst du zudem eine gewisse Anzahl von Kursen \nbelegen, in denen der Erwerb von fächerübergreifenden Kenntnissen und Kompetenzen im Vordergrund steht. Diese kannst \ndu weitestgehend nach Interesse aus verschiedenen geistes-, gesellschafts- und naturwissenschaftlichen Bereichen auswählen. \nZudem erhältst du Einblicke in Fremdsprachen, Präsentations- und Kommunikationstechniken, Informationstechnologien \nund interdisziplinäre oder schul- und unterrichtsbezogene Module. \nhttps://rub.de/optionalbereich/", + "faqExamWork": "Prüfungsleistungen", + "faqExamWorkText": "Welche Leistungen von dir im Rahmen einer Lehrveranstaltung erbracht werden müssen kannst du dem Modulhandbuch deines \nStudienfaches, dem Vorlesungsverzeichnis oder eCampus entnehmen. Es gibt sowohl benotete als auch unbenotete \nVeranstaltungen. Die meisten Prüfungsleistungen bestehen aus Klausuren, Referaten und/oder Hausarbeiten.", + "faqExamRegulations": "Prüfungsordnungen", + "faqExamRegulationsText": "In der Prüfungsordnung deines Studienganges sind diejenigen Prüfungsleistungen aufgeführt, die du für deinen Abschluss \nerbringen musst. Auch ist dort geregelt, ob und wie oft du eine nicht bestandene Prüfung wiederholen bzw. verschieben \nkannst. Schon allein im Hinblick auf deinen Studienverlauf und deinen Abschluss ist ein Blick in die Prüfungsordnung \ndringend zu empfehlen!", + "faqRoomOfSilence": "Raum der Stille", + "faqRoomOfSilenceText": "Der „Raum der Stille“ soll zu Beginn des Wintersemesters am 11.10. eingeweiht werden und religionsübergreifend spirituellen \nBedürfnissen und dem individuellen Gebet Raum geben. Er wird aber auch für Menschen da sein, die aus nicht-religiösen \nGründen die Stille suchen, um etwas für ihre Gesundheit und ihr Wohlbefinden zu tun. Die Anerkennung und Förderung \nreligiöser Vielfalt schafft eine Atmosphäre der gegenseitigen Verbundenheit und Wertschätzung. Der Raum befindet sich \nim Gebäude der Mensa auf der Ebene der Roten Beete.", + "faqSemesterTicket": "Semesterticket", + "faqSemesterTicketText": "Der Geltungsbereich des Semestertickets erstreckt sich auf den gesamten VRR-Bereich und mittlerweile auch nach Venlo. \nZudem ist das Ticket in ganz NRW gültig. Beachte hierbei, dass es nur ausgedruckt oder per PDF mit einem amtlichen \nLichtbildausweis (Perso oder Reisepass) gültig ist. Das Ticket kann über eCampus abgerufen werden.\nFür einen Aufschlag von 12,33 € kannst du dein Semesterticket zu einem Deutschlandticket aufwerten. Beachte, dass\ndu bei Nutzung des Deutschlandtickets, den QR-Code des Deutschlandtickets, dein Semesterticket und ein Lichtbildausweis\nmitführen musst. \nBuchung/Infos", + "faqSozialbeitrag": "Sozialbeitrag", + "faqSozialbeitragText": "Der Sozialbeitrag ist ein von jedem Studierenden für jedes Semester erneut zu entrichtender Pflichtbeitrag. \nDer Betrag beläuft sich im Sommersemester 2023 auf insgesamt 362,62 €. \nEnthalten sind 120 € für das Akademische Förderungswerk (AKAFÖ), welches z.B. für die Mensa und Wohnheime zuständig \nist, 220,02 € (regulär) für das Semesterticket sowie 20,1 € für die Studierendenschaft der RUB (AStA).", + "faqStudentSecretariat": "Studierendensekretariat", + "faqStudentSecretariatText": "Das Studierendensekretariat (Gebäude SSC, Ebene 0, Raum 229) sowie die Infopoints, die über den Campus verteilt \nsind, sind Anlaufstellen für Studierende zur Information rund um die Organisation des Studiums. Für weitere \nInformationen und den einzelnen Standorten verweisen wir auf folgende Links: \nStandorte und \nStudierendensekretariat", + "faqTeamspeak": "Teamspeak", + "faqTeamspeakText": "Der Teamspeak-Server des AStA (TS³) bietet zu Zeiten von Corona eine persönliche Kontaktmöglichkeit des AStA zur \nStudierendenschaft. Meldet euch hierzu einfach unter \"AStARUB\" an.", + "faqUNIC": "UNIC", + "faqUNICText": "Die Ruhr-Universität Bochum ist Teil des internationalen Universitätskonsortiums UNIC - „European University of \nPost-Industrial Cities“. Es ist ein Verbund von acht Universitäten, der sich der Förderung von studentischer Mobilität \nund gesellschaftlicher Integration widmet. Mit der Schaffung einer europäischen Universität soll der Austausch und \ndie Kooperation von Lehre, Forschung und Transfer gesteigert werden. Studierende, Forschende, Lehrende und das Personal \naus der Verwaltung sollen von den Möglichkeiten eines europäischen Campus profitieren. Zu UNIC gehören neben der RUB \ndie Universitäten aus Bilbao, Cork, Istanbul, Liège, Oulu, Rotterdam und Zagreb.", + "faqEvents": "Veranstaltungen", + "faqEventsText": "Die Veranstaltungen deines Studienganges können sich von denen anderer Studienfächer unterscheiden. Die gängigsten \nFormen und Bezeichnungen haben wir für euch aufgeführt. Vorlesungen sind dadurch gekennzeichnet, dass ein:e Dozierende:r \nmeistens frontal oder unter Einbeziehung des oft großen Auditoriums den Stoff vermittelt. Arbeitsgemeinschaften, \nÜbungen, Tutorien und Seminare sind in der Regel auf eine geringere Anzahl an Teilnehmer:innen begrenzt. In diesen \nsteht oftmals das Erlernen der wissenschaftlichen Arbeitsweise des Studienganges im Vordergrund. Tutorien zeichnen \nzudem aus, dass sie von erfahrenen Studierenden geführt werden und den Übergang von der Schule zur Universität \nerleichtern sollen. Welche Leistungen du erbringen musst, hängt auch hier von deiner Studienordnung ab. Falls du \ndeine Dozierenden \"bewerten\" möchtest, die Didaktik nicht angemessen findest oder eine Meinung zur Digitalisierung \nabgeben möchtest, benutze den Melder des AStAs auf der Homepage: \n\nhttps://asta-bochum.de/melder-fuer-probleme-mit-digitaler-lehre/", + "faqAccomodation": "Wohnungen", + "faqAccomodationText": "Für alle Studierende, die nicht mehr zu Hause wohnen möchten oder denen dieses aufgrund eines studienbedingten \nOrtswechsels nicht mehr möglich ist, stellt sich zwangsläufig die Frage wo sie eine neue Bleibe finden. Abhilfe \nkönnen die 21 Wohnheime des Akademischen Förderungswerkes (AKAFÖ) schaffen. Diese sind auf studentisches Wohnen \nausgerichtet und in der Nähe der RUB angesiedelt. Es gibt sowohl die Möglichkeit in Apartments oder Einzelzimmern \nauf einer Gemeinschaftsetage als auch in Wohngemeinschaften zu leben. Zudem gibt es Wohnheime in privater \nTrägerschaft. Doch auch abseits von Wohnheimen ist der Wohnungsmarkt in Bochum nicht so belastet wie in anderen \nUniversitätsstädten, sodass du in der Umgebung Bochums leicht eine passende Wohnung oder eine WG finden wirst. \nAuch dabei bietet dir der AStA gerne eine Orientierungshilfe. AStA Wohnen findet sich unter:\nhttps://akafoe.de/wohnen bzw. \nhttps://asta-bochum.de/wohnungsboerse", + "faqZoom": "Zoom", + "faqZoomText": "Zoom stellt eine Möglichkeit dar, virtuell an Veranstaltungen teilzunehmen. Welche Plattformen eure Dozierenden \npräferieren, erfahrt ihr von eurer Fakultät. Informationen zur Teilnahme und Erstellung einer Zoom Videokonferenz \nfindet ihr unter \nhttps://it-services.ruhr-uni-bochum.de/bk/zoom.html.de", + "faqEmergencyNumber": "Zentrale Notrufnummer RUB", + "faqEmergencyNumberText": "Die Ruhr-Universität verfügt über eine Leitwarte, die 24 Stunden besetzt und über die Nummer durchgehend erreichbar \nist. Bei Notfällen alarmiert sie Feuerwehr, Notarzt oder Polizei und zuständige Stellen innerhalb der Universität. \nSpeichert euch die Notruf-Nummer am besten in euer Handy ein: 0234 3223333", + "balanceMultipleTags": "Mehrere NFC-Tags gefunden! Versuche es noch einmal.", + "balanceIOSScanCard": "Scanne deine Karte.", + "balanceMensaBalance": "Mensa Guthaben", + "balanceBalance": "Guthaben: ", + "balanceLastTransaction": "Letzte Abbuchung: ", + "balanceScanCard": "Karte scannen", + "balanceScanCardDetailed": "Halte deinen Studierendenausweis an dein Smartphone, um ihn zu scannen.", + "balanceNFCOff": "NFC deaktiviert", + "balanceNFCOffDetailed": "Um dein AKAFÖ Guthaben auslesen zu können, muss NFC aktiviert sein.", + "balanceLastBalance": "Letztes Guthaben: ", + "balanceLastScanned": "Letzte gescannte Abbuchung: ", + "ticketLoginLoginID": "RUB LoginID", + "ticketLoginPasswort": "RUB Passwort", + "ticketLoginLogin": "Login", + "ticketLoginBothFieldsError": "Bitte fülle beide Felder aus!", + "ticketLoginInternetError": "Überprüfe deine Internetverbindung!", + "ticketLoginWrongDataError": "Falsche LoginID und/oder Passwort!", + "ticketLoginLoadingError": "Fehler beim Laden des Tickets!", + "ticketLoginEncryptedInfo": "Deine Daten werden verschlüsselt auf deinem Gerät gespeichert und nur bei der Anmeldung an die RUB gesendet.", + "walletPageWallet": "Wallet", + "walletPageBalance": "Mensa Guthaben", + "walletPageCampusABC": "Campus ABC", + "walletPageComingInFuture": "Dieser Bereich wird in zukünftigen Versionen stetig ergänzt und um nützliche Hilfen in die App zu integrieren.", + "mensaBalanceTitle": "Mensa Guthaben", "balanceLabel": "Guthaben", "euroSymbol": "€", "lastTransactionLabel": "Letzte Abbuchung", @@ -34,11 +131,5 @@ "nfcDisabledText": "Um dein AKAFÖ Guthaben auslesen zu können, muss NFC aktiviert sein.", "lastSavedBalance": "Letztes Guthaben", "lastSavedTransaction": "Letzte gescannte Abbuchung", - "navFeed": "Feed", - "navEvents": "Veranstaltungen", - "navMensa": "Mensa", - "navWallet": "Wallet", - "navMore": "Mehr" - - + "possibleDeviationsNotice": "Abweichungen möglich! Bitte beachte die Aushänge vor Ort." } diff --git a/assets/l10n/l10n_en.arb b/assets/l10n/l10n_en.arb index 3a308694..52b795e7 100644 --- a/assets/l10n/l10n_en.arb +++ b/assets/l10n/l10n_en.arb @@ -23,8 +23,202 @@ "addSemesterTicket": "Add your semester ticket", "rubEmergencyButton": "RUB Emergency Center", "rubEmergencyNote": "Available 24/7 for any emergency", + "navFeed": "Feed", + "navEvents": "Events", + "navMensa": "Mensa", + "navWallet": "Wallet", + "navMore": "More", + "navBarCalendar": "Calendar", + "firebaseDecisionPopup": "To show you notifactions about spontaneous Events and Dates around campus, we currently use the \nGoogle service Firebase.\n\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.", + "firebaseDecisionPopupSlim": "To show you notifactions about spontaneous Events and Dates around campus, \nwe currently use the Google service Firebase.\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.", + "firebaseDecisionAccept": "Yes, I don't mind.", + "firebaseDecisionDecline": "No, I don't want that.", + "chooseStudyProgram": "Choose your study program.", + "onboardingAppName": "Campus App", + "onboardingPresentedBy": "Presented by your AStA", + "onboardingLanguage": "Language", + "onboardingLanguageDetailed": "Choose your preferred language.", + "onboardingStudyProgram": "Study Program", + "onboardingStudyProgramDetailed": "Choose your study program to see curated events and news.", + "onboardingPrivacy": "Privacy", + "onboardingNotifications": "Activate push notifications", + "onboardingConfirm": "Yes, I agree", + "onboardingDeny": "No, I do not agree", + "onboardingTheme": "Theme", + "onboardingThemeDescription": "Contrast-rich or subdued. Day or Night.\nChoose your design.", + "onboardingThemeSystem": "System", + "onboardingThemeLight": "Light", + "onboardingThemeDark": "Dark", + "onboardingFeedback": "Feedback", + "allergens": "Allergens", + "allergensAvoid": "Avoid", + "allergensGluten": "Gluten", + "allergensWheat": "Wheat", + "allergensRye": "Rye", + "allergensBarley": "Barley", + "allergensOats": "Oats", + "allergensSpelt": "Spelt", + "allergensKamut": "Kamut", + "allergensCrustaceans": "Crustaceans", + "allergensEggs": "Eggs", + "allergensFish": "Fish", + "allergensPeanuts": "Peanuts", + "allergensSoybeans": "Soybeans", + "allergensMilk": "Milk", + "allergensNuts": "Nuts", + "allergensAlmond": "Almond", + "allergensHazelnut": "Hazelnut", + "allergensWalnut": "Walnut", + "allergensCashewnut": "Cashewnut", + "allergensPecan": "Pecan", + "allergensBrazilNut": "BrazilNut", + "allergensPistachio": "Pistachio", + "allergensMacadamia": "Macadamia", + "allergensCelery": "Celery", + "allergensMustard": "Mustard", + "allergensSesame": "Sesame", + "allergensSulfur": "Sulfur", + "allergensLupins": "Lupins", + "allergensMolluscs": "Molluscs", + "mondayShort": "Mon", + "tuesdayShort": "Tue", + "wednesdayShort": "Wed", + "thursdayShort": "Thu", + "fridayShort": "Fri", + "saturdayShort": "Sat", + "sundayShort": "Sun", + "mealPreferences": "Preferences", + "preferencesExclusive": "Exclusively", + "preferencesVegetarian": "Vegetarian", + "preferencesVegan": "Vegan", + "preferencesHalal": "Halal", + "preferencesAvoid": "Avoid", + "preferencesAlcohol": "Alcohol", + "preferencesFish": "Fish", + "preferencesPoultry": "Poultry", + "preferencesLamb": "Lamb", + "preferencesBeef": "Beef", + "preferencesPork": "Pork", + "preferencesGame": "Game", + "mensaPageTitle": "Dining Hall", + "mensaPagePreferences": "Preferences", + "mensaPageAllergens": "Allergens", + "imprintPageLegalNotice": "Legal Notice", + "imprintPageLegalNoticeText": "

Inhaltlich Verantwortliche gemäß § 10 Absatz 3 MDStV:

\nStudierendenschaft der Ruhr-Universität Bochum
\nAllgemeiner Studierendenausschuss
\nSH 0/11
\nUniversitätsstr. 150
\n44780 Bochum
\n
\nInhaltlich Verantwortlich:
\nHanife Demir (Vorsitzende)
\n
\nVertretungsberechtigter Vorstand:
\nRon Agethen
\nEren Yavuz
\nElisabeth Tilbürger
\nHenry Herrmann
\nAli Sait Kücük
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\nInternet: https://www.asta-bochum.de
\n
\nDie Studierendenschaft ist eine Teilkörperschaft öffentlichen Rechts.\n
\n

Inhalte


\nDie Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. \nAls Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. \nNach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. \nVerpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt.
Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. \nBei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\n

Haftungshinweis

\nUnser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. \nDeshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. \nFür die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. \nDie verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. \nRechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. \nEine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. \nBei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.", + "morePageTitle": "Settings & More", + "morePageAstaA": "AstA", + "morePageKulturCafe": "KulturCafé", + "morePageBikeWorkshop": "Bike Workshop", + "morePageRepairCafe": "Repair Café", + "morePageSocialCounseling": "Social Counseling", + "morePageDancingGroup": "Dancing Group", + "morePageGamingHub": "Gaming Hub", + "morePageUsefulLinks": "Useful Links", + "morePageRubMail": "RubMail", + "morePageMoodle": "Moodle", + "morePageECampus": "eCampus", + "morePageFlexNow": "FlexNow", + "morePageUniSports": "University Sports", + "morePageOther": "Other", + "morePageSettings": "Settings", + "morePagePrivacy": "Privacy", + "morePageLegalNotice": "Legal Notice", + "morePageUsedResources": "Used Resources", + "morePageFeedback": "Feedback", + "privacyPolicyPrivacy": "Datenschutz", + "privacyPolicyText": "

Verantwortliche Stelle im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:


\n
\nAStA an der Ruhr-Universität Bochum
\nPaul Hoffstiepel (Vorsitzender)
\n
\nStudierendenhaus 0/11
\nUniversitätsstr. 150
\n44801 Bochum
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\n
\nSie können Sie sich jederzeit mit einer Beschwerde an die zuständige Aufsichtsbehörde wenden. Diese ist:\n
\nLandesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen
\nPostfach 20 04 44
\n40102 Düsseldorf
\nTel.: +49 211 384240
\nFax: +49 211 3842410
\nE-Mail: poststelle@ldi.nrw.de
\nInternet: poststelle@ldi.nrw.dehttps://ldi.nrw.de
\n
\n

Datenverarbeitung durch die Nutzung der Campus App


\nBei der Nutzung der Campus App werden Daten erhoben und ausgetauscht, die zur Verwendung des Angebotes erforderlich sind. Dies sind:
\n- IP-Adresse
\n- Verwendetes Betriebssystem
\n- Uhrzeit der Serveranfrage
\n- Übertragene Datenmenge
\n- Standortdaten
\n
\nDiese Daten werden bei der Nutzung der Campus App ebenfalls in Log-Dateien über den Zeitpunkt des Besuches hinaus auf einem Server, welcher durch den AStA betrieben wird und ggf. auf einem Server einer besuchten Seite gespeichert.
\nUnsere App stellt Neuigkeiten verschiedener Internetseiten bereit, die nicht von der verfassten Studierendenschaft der Ruhr-Universität Bochum betrieben werden. \nEin Einfluss auf die Verarbeitung der dort erhobenen Daten besteht nicht. \nDie oben genannten Nutzungsdaten werden dabei an folgende Anbieter übermittelt:
\n- ruhr-uni-bochum.de, Universitätsstraße 150, 44801 Bochum. Datenschutzerklärung: https://www.ruhr-uni-bochum.de/de/datenschutz
\n
\nBei der Installation der App werden Benutzer:innen danach gefragt, ob sie Push Notifications zu bestimmten Themen bekommen möchten. \nWenn Nutzer:innen in den Bezug von Push Notifications Einwilligen werden personenbezogene Daten wie z.B. IP Adresse und die gewählten Themen an Server der Firma Google Inc. übertragen. \nDie Daten werden die Daten ohne angemessenes Schutzniveau im Sinne von Art 46 DSGVO an Server von Google in die USA übertragen. \nSiehe dazu auch „Schrems II-Urteil“ (Az.: C-311/18 vom 16.07.2020) des EuGH. \nEs besteht das Risiko, dass US-Sicherheitsbehörden auf die Daten zugreifen ohne dass Betroffene darüber Informiert werden und ohne dass Rechtsbehelfe eingelegt werden können. \nDie Übermittlung erfolgt daher nur auf der ausdrücklichen Einwilligung nach Art. 49 Abs 1 a der DSGVO.\n
\nDie Einwilligung kann jederzeit in der Campus App unter dem Menupunkt „Mehr“, im Untermenü „Einstellungen“ widerrufen werden.
\n
\nWeitere Informationen in den Datenschutzhinweisen zu Firebase von Google: https://firebase.google.com/support/privacy
\n„Schrems II“ – Urteil des EuGH: https://curia.europa.eu/juris/liste.jsf?language=de&num=C-311/18
\n
\nDie Campus App enthält Links zu Webseiten anderer Anbieter.
\nWir haben keinen Einfluss darauf, dass diese Anbieter die Datenschutzbestimmungen einhalten.
\nEine permanente Überprüfung der Links ist ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar.
\nBei Bekanntwerden von Rechtsverstößen werden betroffene Links unverzüglich gelöscht.
\n
\nBei der Nutzung des Raumfinders der Campus App, werden die aktuellen Standortdaten des Endgerätes verabeitet und bis zum Schließen der App zwischengespeichert.
\nEine Einwilligung wird hierfür vom Betriebssystem eingeholt und kann jederzeit durch den Nutzer widerrufen werden.
\n
\nBei der Nutzung der Funktion zum Anzeigen des Semestertickets werden die RUB Logindaten (LoginID, Passwort) lokal auf dem Gerät gespeichert, dies ist zum Abrufen des Tickets unabdingbar. Eine Übermittlung der Daten erfolgt nur an den offizielen SSO Provider der RUB.\n
\n

Zweck der Datenverarbeitung


\nDie Verarbeitung der personenbezogenen Daten der Nutzer ist für den ordnungsgemäßen Betrieb der App erforderlich.
\nDabei ist es unerlässlich, dass beispielsweise beim Abrufen der Speisepläne durch einen Server des AStAs personenbezogene Daten erhoben werden.
\nDes Weiteren werden beim Laden der Artikel im Newsfeed, Daten an die oben genannten Seiten übermittelt.
\n
\n

Löschung bzw. Sperrung der Daten


\nNach den Grundsätzen der Datenvermeidung und der Datensparsamkeit speichern wir alle Daten, die wir für die in dieser Datenschutzerklärung genannten bzw. anderen rechtlich vorgeschriebenen Gründe erhoben haben nur so lange, wie dies für den jeweiligen Zweck notwendig ist. Nach Wegfall des Zweckes bzw. nach Ablauf der Fristen werden die Daten entsprechend der gesetzlichen Vorgaben gelöscht, vernichtet oder gesperrt.
\n
\nGesetzliche Grundlagen für die Aufbewahrungsfristen werden in der Abgabenordnung §§ 147 und 257 geregelt.
\n
\n

Rechtsgrundlagen (nach Art. 13 DSGVO)


\nWir speichern Ihre Daten nur lange, wie es notwendig ist. Wir verarbeiten Ihre Daten auf den folgenden Rechtsgrundlagen:
\n
\nArtikel 6 Absatz 1 und Artikel 7 DSGVO für die Erfüllung von Leistungen und rechtlicher Verpflichtungen.
\nArtikel 28 DSGVO für die Verarbeitung von personenbezogen Daten im Auftrag.
\nNach Ablauf der Fristen werden Ihre Daten routinemäßig gelöscht.
\n
\n

Ihre Rechte


\nDie Datenschutzgrundverordnung räumt Ihnen folgende Rechte ein:
\n
\nVerlangen einer Bestätigung über die Verarbeitung Sie betreffender personenbezogener Daten (Art. 15)
\nVerlangen einer Kopie der Daten (Art. 15)
\nRecht auf Korrektur unrichtiger Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Vervollständigung unvollständiger, Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Löschung Sie betreffender personenbezogener Daten („Recht auf Vergessenwerden“ Art. 17)
\nRecht auf Einschränkung Sie betreffender personenbezogener Daten (Art. 18)
\nRecht auf die Übertragung der Daten an einen Dritten (Art. 20)
\nBeschwerde bei der oben genannten Aufsichtsbehörde (Art. 77)
\nErteilte Einwilligungen können Sie mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3)
\nRecht auf Widerspruch der Verarbeitung Sie betreffender personenbezogener Daten (Art. 21)
\nSollten Sie Fragen zu einzelnen Punkten haben oder eines Ihrer Rechte ausüben wollen, wenden Sie sich an die oben angegebene verantwortliche Stelle oder an unseren Datenschutzbeauftragten unter datenschutz@asta-bochum.de.
\n
", + "settingsSettings": "Settings", + "settingsHeadlineTheming": "Theming", + "settingsSystemDarkmode": "System Dark Mode", + "settingsDarkmode": "Dark Mode", + "settingsHeadlineCoreData": "Core Data", + "settingsStudyProgram": "Study Program", + "settingsLanguage": "Language", + "settingsStudyProgramChange": "Change", + "settingsHeadlineBehaviour": "Behaviour", + "settingsUseExternalBrowser": "Use External Browser for Links", + "settingsTextSize": "Use System Text Size", + "settingsTicketFullscreen": "Use Full-Screen for Semesterticket QR-Code", + "settingsHeadlinePrivacy": "Privacy", + "settingsGoogleServices": "Google Services for Notifications", + "settingsHeadlinePushNotifications": "Push-Notifications", + "settingsPushNotificationsEvents": "Push-Notifications for saved Events", + "controlRoomButton": "RUB Control Room", + "controlRoomButtonDescription": "Always in service, for any emergency", + "walletAddStudentTicket": "Add your semester ticket", + "faqCampusABC": "Campus ABC", + "faqMandatoryAttendance": "Anwesenheitspflicht", + "faqMandatoryAttendanceText": "Unabhängig von digitalen Semestern, was historisch betrachtet eine Ausnahmefallregelung an der RUB darstellt, \ngilt in einigen Ausnahmefällen und bestimmten Kursformaten eine Anwesenheitspflicht. Die Anwesenheitspflicht, \ndie früher bestand, ist mit Inkrafttreten des Hochschulzukunftsgesetzes NRW zum Oktober 2014 abgeschafft worden. \nDanach ist es grundsätzlich verboten die Erbringung und Eintragung einer Leistung von der Anwesenheit in einer \nLehrveranstaltung abhängig zu machen. Davon ausgenommen sind jedoch vor allem Exkursionen, Sprachkurse, Praktika, \npraktische Übungen und vergleichbare Lehrveranstaltungen. Sollte in einer deiner Veranstaltungen trotz des Verbotes \neine Anwesenheitspflicht verlangt werden, kannst du dich hier melden: \nhttps://asta-bochum.de/anwesenheitspflicht", + "faqAStAMessenger": "AStA-Messenger", + "faqAStAMessengerText": "Ab sofort sind wir unter der Mobilfunknummer +49 152 22614240 für \nallgemeine Fragen bei Whatsapp erreichbar.", + "faqAccessibility": "Barrierefreiheit", + "faqAccessibilityText": "Barrierefreiheit bedeutet die Umwelt und Infrastruktur in dem Sinne zu gestalten, dass sie auch von Menschen mit \nBeeinträchtigungen ohne zusätzliche Hilfe in Anspruch genommen werden kann. Das Studium für Menschen mit \nBeeinträchtigungen ist in vielerlei Hinsicht erschwert. Die RUB besitzt jedoch Initiativen den Studienalltag so \nweit wie möglich zu vereinfachen und jeder bzw. jedem Studierenden zugänglich zu machen. Unserer „Autonomes \nReferat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ und das BZI des AkaFö sind dabei eure \nerste Anlaufstelle für einen Einblick in die Angebote. So bietet die Universitätsbibliothek (UB) z.B. einen \nService zur Literaturbeschaffung an, um Barrierefreiheit zu ermöglichen. Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion \nsind weitergehende Informationen für euch aufgelistet.", + "faqLibraries": "Bibliotheken", + "faqLibrariesText": "Das Bibliothekssystem der RUB setzt sich aus der Universitätsbibliothek (UB), dem zentralen Gebäude des Campus \nund den in den Gebäuden verteilten Fachbibliotheken zusammen. Diese bieten dir einen Raum zum Lernen und \nRecherchieren für Hausarbeiten und Referate oder zum Lernen für Klausuren. Für jede einzelne Bibliothek bestehen \ngesonderte Regeln, was eine mögliche Ausleihe und die Öffnungszeiten betrifft. Die UB ist in den Zeiten von MO-FR: \n8.00 bis 23.00 Uhr und SA-SO: von 10.00 bis 19.00 Uhr geöffnet. Die UB stellt eine große Zahl an Arbeitsplätzen mit \nund ohne PC bereit. Für die Benutzung der Schließfächer ist eine 2€-Münze erforderlich! Erfahrt alle auf Corona \nbezogenen und alle aktualisierten Informationen auf der Internetseite der UB. Im Servicereferat des AStA kannst du \nauch kostenfrei einen AStA-Chip erhalten, der in die UB-Schließfächer passt. Eine Auflistung aller Fachbibliotheken \nund weitere Informationen: https://www.ub.rub.de", + "faqCreditPoints": "Credit Points", + "faqCreditPointsText": "Credit Points (CP) werden für jede erbrachte Prüfungsleistung vergeben. Du brauchst eine gewisse Anzahl von CP, \num Module abzuschließen und dich letztlich für deine Abschlussprüfungen anzumelden. Dabei soll 1 CP einem \nArbeitsaufwand von 30 Semesterwochenstunden entsprechen. Dieser umfasst die Vor- und Nachbereitung sowie die \nWochenstunden der Veranstaltung. Wie viele CP für eine Lehrveranstaltung vergeben werden kannst du deiner \nPrüfungsordnung entnehmen.", + "faqeECampus": "eCampus", + "faqeECampusText": "eCampus ist ein zentrales Verwaltungsportal für Studenten. Dort kann nach der Anmedlung das Semesterticket abgerufen werden oder auch der zu zahlende Semesterbeitrag eingesehen werden. Weitere Informationen findne sich unter https://www.it-services.ruhr-uni-bochum.de/services/ecampus.html.de", + "faqECTS": "ECTS", + "faqECTSText": "Das „European Credit Transfer System“ (Europäisches System zur Übertragung und Akkumulierung von Studienleistungen), \nkurz ECTS, bietet die Möglichkeit, die an einer Hochschuleinrichtung erworbenen Leistungspunkte auf ein Studium an \neiner anderen Hochschuleinrichtung anzurechnen. ECTS-Leistungspunkte entsprechen dem Lernen auf der Grundlage von \ndefinierten Lernzielen und dem damit verbundenen Arbeitspensum. Es soll Studierende bei einem Umzug von einem Land \nin ein anderes behilflich sein und sie dabei unterstützen, ihre akademischen Qualifikationen und Studienzeiten im \nAusland anerkennen zu lassen. Mehr Infos findet ihr unter: \n\nhttps://education.ec.europa.eu/de/europaeisches-system-zur-uebertragung-und-akkumulierung-von-studienleistungen-ects", + "faqInclusion": "Inklusion", + "faqInclusionText": "Unter Inklusion verstehen wir die Teilhabe aller Menschen an der Gesellschaft. Konnotiert ist dieser Begriff \ninsbesondere durch die Berücksichtigung benachteiligter Personengruppen, denen eine soziale Ungleichheit und mangelnde \nChancengleichheit infolge einer studienerschwerenden gesundheitlichen Beeinträchtigung vorausgeht. Wir an der RUB sind \nbestrebt die Chancen und das Recht auf Bildung für alle Menschen gleich zu gestalten. An der RUB gibt es diverse Initiativen, \ndie euch in diesen Belangen mit Rat und Tat zu Seite stehen. Unser „Autonomes Referat für Menschen mit Behinderungen und \nsämtlichen Beeinträchtigungen“ ist hierzu neben dem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure \nerste Anlaufstelle. Neu ist das Förderprojekt „Inklusive Hochschule“, das sich dem Ziel verschrieben hat, Studierenden \nmit Behinderung oder chronischer Erkrankung die gleichberechtigte Teilhabe am Studium zu ermöglichen. Dorthin könnt \nIhr Euch auch mit Kritik, Lob und Euren Wünschen zum Thema Inklusion an der RUB wenden (z.B. per Mail an \ninklusion@rub.de). Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion sind Informationen \nzum BZI für euch aufgelistet. Auch die zentrale Studienberatung (ZSB) kann euch eine erste Hilfestellung in diesen \nBelangen geben.", + "faqLabInternships": "Labor-Praktika", + "faqLabInternshipsText": "Das Absolvieren von Labor-Praktika wird vor allem in naturwissenschaftlichen und ingenieurswissenschaftlichen \nStudiengängen sowie in der Medizin von dir erwartet. Es werden vorbereitende Einführungsveranstaltungen und Sicherheitsbelehrungen \nangeboten. Außerdem musst du weitere Anforderungen erfüllen. Diese kannst du auf den Webseiten der Lehrstühle erfahren.", + "faqCompensation": "Nachteilsausgleich", + "faqCompensationText": "Ein „Nachteilsausgleich“ bezeichnet im sozialrechtlichen Sinne die Ansprüche auf Hilfe und Ausgleich, die einem \njeden Studierenden mit Beeinträchtigungen unter bestimmten Voraussetzungen zustehen. Umfasst werden hinsichtlich \ndes Studiums an der RUB dabei Lehr- und Prüfungsbedingungen des jeweiligen Studiengangs. Neben der Verlängerung \nder Schreibzeit bei Klausuren können insbesondere flexible Pausenregelungen, die Notwendigkeit bestimmter technischer, \nelektronischer oder sonstiger apparativer Hilfen sowie einer Veränderung der Arbeitsplatzorganisation berücksichtigt \nwerden. Unser „Autonomes Referat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ ist hierzu neben \ndem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure erste Anlaufstelle. Hier erhaltet ihr \nBeratungsangebote und eine erste Hilfe und Information zu euren Möglichkeiten an der RUB.", + "faqOptional": "Optionalbereich", + "faqOptionalText": "Neben den Lehrveranstaltungen deines spezifischen Bachelor-Studienganges musst du zudem eine gewisse Anzahl von Kursen \nbelegen, in denen der Erwerb von fächerübergreifenden Kenntnissen und Kompetenzen im Vordergrund steht. Diese kannst \ndu weitestgehend nach Interesse aus verschiedenen geistes-, gesellschafts- und naturwissenschaftlichen Bereichen auswählen. \nZudem erhältst du Einblicke in Fremdsprachen, Präsentations- und Kommunikationstechniken, Informationstechnologien \nund interdisziplinäre oder schul- und unterrichtsbezogene Module. \nhttps://rub.de/optionalbereich/", + "faqExamWork": "Prüfungsleistungen", + "faqExamWorkText": "Welche Leistungen von dir im Rahmen einer Lehrveranstaltung erbracht werden müssen kannst du dem Modulhandbuch deines \nStudienfaches, dem Vorlesungsverzeichnis oder eCampus entnehmen. Es gibt sowohl benotete als auch unbenotete \nVeranstaltungen. Die meisten Prüfungsleistungen bestehen aus Klausuren, Referaten und/oder Hausarbeiten.", + "faqExamRegulations": "Prüfungsordnungen", + "faqExamRegulationsText": "In der Prüfungsordnung deines Studienganges sind diejenigen Prüfungsleistungen aufgeführt, die du für deinen Abschluss \nerbringen musst. Auch ist dort geregelt, ob und wie oft du eine nicht bestandene Prüfung wiederholen bzw. verschieben \nkannst. Schon allein im Hinblick auf deinen Studienverlauf und deinen Abschluss ist ein Blick in die Prüfungsordnung \ndringend zu empfehlen!", + "faqRoomOfSilence": "Raum der Stille", + "faqRoomOfSilenceText": "Der „Raum der Stille“ soll zu Beginn des Wintersemesters am 11.10. eingeweiht werden und religionsübergreifend spirituellen \nBedürfnissen und dem individuellen Gebet Raum geben. Er wird aber auch für Menschen da sein, die aus nicht-religiösen \nGründen die Stille suchen, um etwas für ihre Gesundheit und ihr Wohlbefinden zu tun. Die Anerkennung und Förderung \nreligiöser Vielfalt schafft eine Atmosphäre der gegenseitigen Verbundenheit und Wertschätzung. Der Raum befindet sich \nim Gebäude der Mensa auf der Ebene der Roten Beete.", + "faqSemesterTicket": "Semesterticket", + "faqSemesterTicketText": "Der Geltungsbereich des Semestertickets erstreckt sich auf den gesamten VRR-Bereich und mittlerweile auch nach Venlo. \nZudem ist das Ticket in ganz NRW gültig. Beachte hierbei, dass es nur ausgedruckt oder per PDF mit einem amtlichen \nLichtbildausweis (Perso oder Reisepass) gültig ist. Das Ticket kann über eCampus abgerufen werden.\nFür einen Aufschlag von 12,33 € kannst du dein Semesterticket zu einem Deutschlandticket aufwerten. Beachte, dass\ndu bei Nutzung des Deutschlandtickets, den QR-Code des Deutschlandtickets, dein Semesterticket und ein Lichtbildausweis\nmitführen musst. \nBuchung/Infos", + "faqSozialbeitrag": "Sozialbeitrag", + "faqSozialbeitragText": "Der Sozialbeitrag ist ein von jedem Studierenden für jedes Semester erneut zu entrichtender Pflichtbeitrag. \nDer Betrag beläuft sich im Sommersemester 2023 auf insgesamt 362,62 €. \nEnthalten sind 120 € für das Akademische Förderungswerk (AKAFÖ), welches z.B. für die Mensa und Wohnheime zuständig \nist, 220,02 € (regulär) für das Semesterticket sowie 20,1 € für die Studierendenschaft der RUB (AStA).", + "faqStudentSecretariat": "Studierendensekretariat", + "faqStudentSecretariatText": "Das Studierendensekretariat (Gebäude SSC, Ebene 0, Raum 229) sowie die Infopoints, die über den Campus verteilt \nsind, sind Anlaufstellen für Studierende zur Information rund um die Organisation des Studiums. Für weitere \nInformationen und den einzelnen Standorten verweisen wir auf folgende Links: \nStandorte und \nStudierendensekretariat", + "faqTeamspeak": "Teamspeak", + "faqTeamspeakText": "Der Teamspeak-Server des AStA (TS³) bietet zu Zeiten von Corona eine persönliche Kontaktmöglichkeit des AStA zur \nStudierendenschaft. Meldet euch hierzu einfach unter \"AStARUB\" an.", + "faqUNIC": "UNIC", + "faqUNICText": "Die Ruhr-Universität Bochum ist Teil des internationalen Universitätskonsortiums UNIC - „European University of \nPost-Industrial Cities“. Es ist ein Verbund von acht Universitäten, der sich der Förderung von studentischer Mobilität \nund gesellschaftlicher Integration widmet. Mit der Schaffung einer europäischen Universität soll der Austausch und \ndie Kooperation von Lehre, Forschung und Transfer gesteigert werden. Studierende, Forschende, Lehrende und das Personal \naus der Verwaltung sollen von den Möglichkeiten eines europäischen Campus profitieren. Zu UNIC gehören neben der RUB \ndie Universitäten aus Bilbao, Cork, Istanbul, Liège, Oulu, Rotterdam und Zagreb.", + "faqEvents": "Veranstaltungen", + "faqEventsText": "Die Veranstaltungen deines Studienganges können sich von denen anderer Studienfächer unterscheiden. Die gängigsten \nFormen und Bezeichnungen haben wir für euch aufgeführt. Vorlesungen sind dadurch gekennzeichnet, dass ein:e Dozierende:r \nmeistens frontal oder unter Einbeziehung des oft großen Auditoriums den Stoff vermittelt. Arbeitsgemeinschaften, \nÜbungen, Tutorien und Seminare sind in der Regel auf eine geringere Anzahl an Teilnehmer:innen begrenzt. In diesen \nsteht oftmals das Erlernen der wissenschaftlichen Arbeitsweise des Studienganges im Vordergrund. Tutorien zeichnen \nzudem aus, dass sie von erfahrenen Studierenden geführt werden und den Übergang von der Schule zur Universität \nerleichtern sollen. Welche Leistungen du erbringen musst, hängt auch hier von deiner Studienordnung ab. Falls du \ndeine Dozierenden \"bewerten\" möchtest, die Didaktik nicht angemessen findest oder eine Meinung zur Digitalisierung \nabgeben möchtest, benutze den Melder des AStAs auf der Homepage: \n\nhttps://asta-bochum.de/melder-fuer-probleme-mit-digitaler-lehre/", + "faqAccomodation": "Wohnungen", + "faqAccomodationText": "Für alle Studierende, die nicht mehr zu Hause wohnen möchten oder denen dieses aufgrund eines studienbedingten \nOrtswechsels nicht mehr möglich ist, stellt sich zwangsläufig die Frage wo sie eine neue Bleibe finden. Abhilfe \nkönnen die 21 Wohnheime des Akademischen Förderungswerkes (AKAFÖ) schaffen. Diese sind auf studentisches Wohnen \nausgerichtet und in der Nähe der RUB angesiedelt. Es gibt sowohl die Möglichkeit in Apartments oder Einzelzimmern \nauf einer Gemeinschaftsetage als auch in Wohngemeinschaften zu leben. Zudem gibt es Wohnheime in privater \nTrägerschaft. Doch auch abseits von Wohnheimen ist der Wohnungsmarkt in Bochum nicht so belastet wie in anderen \nUniversitätsstädten, sodass du in der Umgebung Bochums leicht eine passende Wohnung oder eine WG finden wirst. \nAuch dabei bietet dir der AStA gerne eine Orientierungshilfe. AStA Wohnen findet sich unter:\nhttps://akafoe.de/wohnen bzw. \nhttps://asta-bochum.de/wohnungsboerse", + "faqZoom": "Zoom", + "faqZoomText": "Zoom stellt eine Möglichkeit dar, virtuell an Veranstaltungen teilzunehmen. Welche Plattformen eure Dozierenden \npräferieren, erfahrt ihr von eurer Fakultät. Informationen zur Teilnahme und Erstellung einer Zoom Videokonferenz \nfindet ihr unter \nhttps://it-services.ruhr-uni-bochum.de/bk/zoom.html.de", + "faqEmergencyNumber": "Zentrale Notrufnummer RUB", + "faqEmergencyNumberText": "Die Ruhr-Universität verfügt über eine Leitwarte, die 24 Stunden besetzt und über die Nummer durchgehend erreichbar \nist. Bei Notfällen alarmiert sie Feuerwehr, Notarzt oder Polizei und zuständige Stellen innerhalb der Universität. \nSpeichert euch die Notruf-Nummer am besten in euer Handy ein: 0234 3223333", + "balanceMultipleTags": "Multiple NFC-Tags found! Try again.", + "balanceIOSScanCard": "Scan your card.", + "balanceMensaBalance": "Mensa Balance", + "balanceBalance": "Balance: ", + "balanceLastTransaction": "Last Transaction: ", + "balanceScanCard": "Scan Card", + "balanceScanCardDetailed": "Hold your student ID to your phone to scan it.", + "balanceNFCOff": "NFC deactivated", + "balanceNFCOffDetailed": "Your NFC needs to be activated to read your AKAFÖ balance.", + "balanceLastBalance": "Last Balance: ", + "balanceLastScanned": "Last scanned Transaction: ", + "ticketLoginLoginID": "RUB LoginID", + "ticketLoginPasswort": "RUB Password", + "ticketLoginLogin": "Login", + "ticketLoginBothFieldsError": "Please fill in both fields!", + "ticketLoginInternetError": "Check your internet connection!", + "ticketLoginWrongDataError": "Wrong LoginID or Password!", + "ticketLoginLoadingError": "Error while loading the ticket!", + "ticketLoginEncryptedInfo": + "Your data is encrypted and saved locally. It is only sent to the RUB servers when logging in.", + "walletPageWallet": "Wallet", + "walletPageBalance": "Dining Hall Balance", + "walletPageCampusABC": "Campus ABC", + "walletPageComingInFuture": "This area will be expanded in future versions to integrate useful guides.", "germanySemesterTicket": "Germany Semester Ticket", - "mensaBalanceTitle": "Mensa Balance", + "mensaBalanceTitle": "Mensa Balance", "balanceLabel": "Balance", "euroSymbol": "€", "lastTransactionLabel": "Last transaction", @@ -34,11 +228,7 @@ "nfcDisabledText": "To read your AKAFÖ balance, NFC must be enabled.", "lastSavedBalance": "Last saved balance", "lastSavedTransaction": "Last scanned transaction", - "navFeed": "Feed", - "navEvents": "Events", - "navMensa": "Mensa", - "navWallet": "Wallet", - "navMore": "More" + "possibleDeviationsNotice": "Deviations possible! Please check the notices on site." } diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart index dbf35105..99eced72 100644 --- a/lib/l10n/l10n.dart +++ b/lib/l10n/l10n.dart @@ -318,6 +318,1140 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'More'** String get navMore; + + /// No description provided for @navBarCalendar. + /// + /// In en, this message translates to: + /// **'Calendar'** + String get navBarCalendar; + + /// No description provided for @firebaseDecisionPopup. + /// + /// In en, this message translates to: + /// **'To show you notifactions about spontaneous Events and Dates around campus, we currently use the \nGoogle service Firebase.\n\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'** + String get firebaseDecisionPopup; + + /// No description provided for @firebaseDecisionPopupSlim. + /// + /// In en, this message translates to: + /// **'To show you notifactions about spontaneous Events and Dates around campus, \nwe currently use the Google service Firebase.\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'** + String get firebaseDecisionPopupSlim; + + /// No description provided for @firebaseDecisionAccept. + /// + /// In en, this message translates to: + /// **'Yes, I don\'t mind.'** + String get firebaseDecisionAccept; + + /// No description provided for @firebaseDecisionDecline. + /// + /// In en, this message translates to: + /// **'No, I don\'t want that.'** + String get firebaseDecisionDecline; + + /// No description provided for @chooseStudyProgram. + /// + /// In en, this message translates to: + /// **'Choose your study program.'** + String get chooseStudyProgram; + + /// No description provided for @onboardingAppName. + /// + /// In en, this message translates to: + /// **'Campus App'** + String get onboardingAppName; + + /// No description provided for @onboardingPresentedBy. + /// + /// In en, this message translates to: + /// **'Presented by your AStA'** + String get onboardingPresentedBy; + + /// No description provided for @onboardingLanguage. + /// + /// In en, this message translates to: + /// **'Language'** + String get onboardingLanguage; + + /// No description provided for @onboardingLanguageDetailed. + /// + /// In en, this message translates to: + /// **'Choose your preferred language.'** + String get onboardingLanguageDetailed; + + /// No description provided for @onboardingStudyProgram. + /// + /// In en, this message translates to: + /// **'Study Program'** + String get onboardingStudyProgram; + + /// No description provided for @onboardingStudyProgramDetailed. + /// + /// In en, this message translates to: + /// **'Choose your study program to see curated events and news.'** + String get onboardingStudyProgramDetailed; + + /// No description provided for @onboardingPrivacy. + /// + /// In en, this message translates to: + /// **'Privacy'** + String get onboardingPrivacy; + + /// No description provided for @onboardingNotifications. + /// + /// In en, this message translates to: + /// **'Activate push notifications'** + String get onboardingNotifications; + + /// No description provided for @onboardingConfirm. + /// + /// In en, this message translates to: + /// **'Yes, I agree'** + String get onboardingConfirm; + + /// No description provided for @onboardingDeny. + /// + /// In en, this message translates to: + /// **'No, I do not agree'** + String get onboardingDeny; + + /// No description provided for @onboardingTheme. + /// + /// In en, this message translates to: + /// **'Theme'** + String get onboardingTheme; + + /// No description provided for @onboardingThemeDescription. + /// + /// In en, this message translates to: + /// **'Contrast-rich or subdued. Day or Night.\nChoose your design.'** + String get onboardingThemeDescription; + + /// No description provided for @onboardingThemeSystem. + /// + /// In en, this message translates to: + /// **'System'** + String get onboardingThemeSystem; + + /// No description provided for @onboardingThemeLight. + /// + /// In en, this message translates to: + /// **'Light'** + String get onboardingThemeLight; + + /// No description provided for @onboardingThemeDark. + /// + /// In en, this message translates to: + /// **'Dark'** + String get onboardingThemeDark; + + /// No description provided for @onboardingFeedback. + /// + /// In en, this message translates to: + /// **'Feedback'** + String get onboardingFeedback; + + /// No description provided for @allergens. + /// + /// In en, this message translates to: + /// **'Allergens'** + String get allergens; + + /// No description provided for @allergensAvoid. + /// + /// In en, this message translates to: + /// **'Avoid'** + String get allergensAvoid; + + /// No description provided for @allergensGluten. + /// + /// In en, this message translates to: + /// **'Gluten'** + String get allergensGluten; + + /// No description provided for @allergensWheat. + /// + /// In en, this message translates to: + /// **'Wheat'** + String get allergensWheat; + + /// No description provided for @allergensRye. + /// + /// In en, this message translates to: + /// **'Rye'** + String get allergensRye; + + /// No description provided for @allergensBarley. + /// + /// In en, this message translates to: + /// **'Barley'** + String get allergensBarley; + + /// No description provided for @allergensOats. + /// + /// In en, this message translates to: + /// **'Oats'** + String get allergensOats; + + /// No description provided for @allergensSpelt. + /// + /// In en, this message translates to: + /// **'Spelt'** + String get allergensSpelt; + + /// No description provided for @allergensKamut. + /// + /// In en, this message translates to: + /// **'Kamut'** + String get allergensKamut; + + /// No description provided for @allergensCrustaceans. + /// + /// In en, this message translates to: + /// **'Crustaceans'** + String get allergensCrustaceans; + + /// No description provided for @allergensEggs. + /// + /// In en, this message translates to: + /// **'Eggs'** + String get allergensEggs; + + /// No description provided for @allergensFish. + /// + /// In en, this message translates to: + /// **'Fish'** + String get allergensFish; + + /// No description provided for @allergensPeanuts. + /// + /// In en, this message translates to: + /// **'Peanuts'** + String get allergensPeanuts; + + /// No description provided for @allergensSoybeans. + /// + /// In en, this message translates to: + /// **'Soybeans'** + String get allergensSoybeans; + + /// No description provided for @allergensMilk. + /// + /// In en, this message translates to: + /// **'Milk'** + String get allergensMilk; + + /// No description provided for @allergensNuts. + /// + /// In en, this message translates to: + /// **'Nuts'** + String get allergensNuts; + + /// No description provided for @allergensAlmond. + /// + /// In en, this message translates to: + /// **'Almond'** + String get allergensAlmond; + + /// No description provided for @allergensHazelnut. + /// + /// In en, this message translates to: + /// **'Hazelnut'** + String get allergensHazelnut; + + /// No description provided for @allergensWalnut. + /// + /// In en, this message translates to: + /// **'Walnut'** + String get allergensWalnut; + + /// No description provided for @allergensCashewnut. + /// + /// In en, this message translates to: + /// **'Cashewnut'** + String get allergensCashewnut; + + /// No description provided for @allergensPecan. + /// + /// In en, this message translates to: + /// **'Pecan'** + String get allergensPecan; + + /// No description provided for @allergensBrazilNut. + /// + /// In en, this message translates to: + /// **'BrazilNut'** + String get allergensBrazilNut; + + /// No description provided for @allergensPistachio. + /// + /// In en, this message translates to: + /// **'Pistachio'** + String get allergensPistachio; + + /// No description provided for @allergensMacadamia. + /// + /// In en, this message translates to: + /// **'Macadamia'** + String get allergensMacadamia; + + /// No description provided for @allergensCelery. + /// + /// In en, this message translates to: + /// **'Celery'** + String get allergensCelery; + + /// No description provided for @allergensMustard. + /// + /// In en, this message translates to: + /// **'Mustard'** + String get allergensMustard; + + /// No description provided for @allergensSesame. + /// + /// In en, this message translates to: + /// **'Sesame'** + String get allergensSesame; + + /// No description provided for @allergensSulfur. + /// + /// In en, this message translates to: + /// **'Sulfur'** + String get allergensSulfur; + + /// No description provided for @allergensLupins. + /// + /// In en, this message translates to: + /// **'Lupins'** + String get allergensLupins; + + /// No description provided for @allergensMolluscs. + /// + /// In en, this message translates to: + /// **'Molluscs'** + String get allergensMolluscs; + + /// No description provided for @mondayShort. + /// + /// In en, this message translates to: + /// **'Mon'** + String get mondayShort; + + /// No description provided for @tuesdayShort. + /// + /// In en, this message translates to: + /// **'Tue'** + String get tuesdayShort; + + /// No description provided for @wednesdayShort. + /// + /// In en, this message translates to: + /// **'Wed'** + String get wednesdayShort; + + /// No description provided for @thursdayShort. + /// + /// In en, this message translates to: + /// **'Thu'** + String get thursdayShort; + + /// No description provided for @fridayShort. + /// + /// In en, this message translates to: + /// **'Fri'** + String get fridayShort; + + /// No description provided for @saturdayShort. + /// + /// In en, this message translates to: + /// **'Sat'** + String get saturdayShort; + + /// No description provided for @sundayShort. + /// + /// In en, this message translates to: + /// **'Sun'** + String get sundayShort; + + /// No description provided for @mealPreferences. + /// + /// In en, this message translates to: + /// **'Preferences'** + String get mealPreferences; + + /// No description provided for @preferencesExclusive. + /// + /// In en, this message translates to: + /// **'Exclusively'** + String get preferencesExclusive; + + /// No description provided for @preferencesVegetarian. + /// + /// In en, this message translates to: + /// **'Vegetarian'** + String get preferencesVegetarian; + + /// No description provided for @preferencesVegan. + /// + /// In en, this message translates to: + /// **'Vegan'** + String get preferencesVegan; + + /// No description provided for @preferencesHalal. + /// + /// In en, this message translates to: + /// **'Halal'** + String get preferencesHalal; + + /// No description provided for @preferencesAvoid. + /// + /// In en, this message translates to: + /// **'Avoid'** + String get preferencesAvoid; + + /// No description provided for @preferencesAlcohol. + /// + /// In en, this message translates to: + /// **'Alcohol'** + String get preferencesAlcohol; + + /// No description provided for @preferencesFish. + /// + /// In en, this message translates to: + /// **'Fish'** + String get preferencesFish; + + /// No description provided for @preferencesPoultry. + /// + /// In en, this message translates to: + /// **'Poultry'** + String get preferencesPoultry; + + /// No description provided for @preferencesLamb. + /// + /// In en, this message translates to: + /// **'Lamb'** + String get preferencesLamb; + + /// No description provided for @preferencesBeef. + /// + /// In en, this message translates to: + /// **'Beef'** + String get preferencesBeef; + + /// No description provided for @preferencesPork. + /// + /// In en, this message translates to: + /// **'Pork'** + String get preferencesPork; + + /// No description provided for @preferencesGame. + /// + /// In en, this message translates to: + /// **'Game'** + String get preferencesGame; + + /// No description provided for @mensaPageTitle. + /// + /// In en, this message translates to: + /// **'Dining Hall'** + String get mensaPageTitle; + + /// No description provided for @mensaPagePreferences. + /// + /// In en, this message translates to: + /// **'Preferences'** + String get mensaPagePreferences; + + /// No description provided for @mensaPageAllergens. + /// + /// In en, this message translates to: + /// **'Allergens'** + String get mensaPageAllergens; + + /// No description provided for @imprintPageLegalNotice. + /// + /// In en, this message translates to: + /// **'Legal Notice'** + String get imprintPageLegalNotice; + + /// No description provided for @imprintPageLegalNoticeText. + /// + /// In en, this message translates to: + /// **'

Inhaltlich Verantwortliche gemäß § 10 Absatz 3 MDStV:

\nStudierendenschaft der Ruhr-Universität Bochum
\nAllgemeiner Studierendenausschuss
\nSH 0/11
\nUniversitätsstr. 150
\n44780 Bochum
\n
\nInhaltlich Verantwortlich:
\nHanife Demir (Vorsitzende)
\n
\nVertretungsberechtigter Vorstand:
\nRon Agethen
\nEren Yavuz
\nElisabeth Tilbürger
\nHenry Herrmann
\nAli Sait Kücük
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\nInternet: https://www.asta-bochum.de
\n
\nDie Studierendenschaft ist eine Teilkörperschaft öffentlichen Rechts.\n
\n

Inhalte


\nDie Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. \nAls Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. \nNach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. \nVerpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt.
Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. \nBei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\n

Haftungshinweis

\nUnser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. \nDeshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. \nFür die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. \nDie verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. \nRechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. \nEine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. \nBei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.'** + String get imprintPageLegalNoticeText; + + /// No description provided for @morePageTitle. + /// + /// In en, this message translates to: + /// **'Settings & More'** + String get morePageTitle; + + /// No description provided for @morePageAstaA. + /// + /// In en, this message translates to: + /// **'AstA'** + String get morePageAstaA; + + /// No description provided for @morePageKulturCafe. + /// + /// In en, this message translates to: + /// **'KulturCafé'** + String get morePageKulturCafe; + + /// No description provided for @morePageBikeWorkshop. + /// + /// In en, this message translates to: + /// **'Bike Workshop'** + String get morePageBikeWorkshop; + + /// No description provided for @morePageRepairCafe. + /// + /// In en, this message translates to: + /// **'Repair Café'** + String get morePageRepairCafe; + + /// No description provided for @morePageSocialCounseling. + /// + /// In en, this message translates to: + /// **'Social Counseling'** + String get morePageSocialCounseling; + + /// No description provided for @morePageDancingGroup. + /// + /// In en, this message translates to: + /// **'Dancing Group'** + String get morePageDancingGroup; + + /// No description provided for @morePageGamingHub. + /// + /// In en, this message translates to: + /// **'Gaming Hub'** + String get morePageGamingHub; + + /// No description provided for @morePageUsefulLinks. + /// + /// In en, this message translates to: + /// **'Useful Links'** + String get morePageUsefulLinks; + + /// No description provided for @morePageRubMail. + /// + /// In en, this message translates to: + /// **'RubMail'** + String get morePageRubMail; + + /// No description provided for @morePageMoodle. + /// + /// In en, this message translates to: + /// **'Moodle'** + String get morePageMoodle; + + /// No description provided for @morePageECampus. + /// + /// In en, this message translates to: + /// **'eCampus'** + String get morePageECampus; + + /// No description provided for @morePageFlexNow. + /// + /// In en, this message translates to: + /// **'FlexNow'** + String get morePageFlexNow; + + /// No description provided for @morePageUniSports. + /// + /// In en, this message translates to: + /// **'University Sports'** + String get morePageUniSports; + + /// No description provided for @morePageOther. + /// + /// In en, this message translates to: + /// **'Other'** + String get morePageOther; + + /// No description provided for @morePageSettings. + /// + /// In en, this message translates to: + /// **'Settings'** + String get morePageSettings; + + /// No description provided for @morePagePrivacy. + /// + /// In en, this message translates to: + /// **'Privacy'** + String get morePagePrivacy; + + /// No description provided for @morePageLegalNotice. + /// + /// In en, this message translates to: + /// **'Legal Notice'** + String get morePageLegalNotice; + + /// No description provided for @morePageUsedResources. + /// + /// In en, this message translates to: + /// **'Used Resources'** + String get morePageUsedResources; + + /// No description provided for @morePageFeedback. + /// + /// In en, this message translates to: + /// **'Feedback'** + String get morePageFeedback; + + /// No description provided for @privacyPolicyPrivacy. + /// + /// In en, this message translates to: + /// **'Datenschutz'** + String get privacyPolicyPrivacy; + + /// No description provided for @privacyPolicyText. + /// + /// In en, this message translates to: + /// **'

Verantwortliche Stelle im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:


\n
\nAStA an der Ruhr-Universität Bochum
\nPaul Hoffstiepel (Vorsitzender)
\n
\nStudierendenhaus 0/11
\nUniversitätsstr. 150
\n44801 Bochum
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\n
\nSie können Sie sich jederzeit mit einer Beschwerde an die zuständige Aufsichtsbehörde wenden. Diese ist:\n
\nLandesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen
\nPostfach 20 04 44
\n40102 Düsseldorf
\nTel.: +49 211 384240
\nFax: +49 211 3842410
\nE-Mail: poststelle@ldi.nrw.de
\nInternet: poststelle@ldi.nrw.dehttps://ldi.nrw.de
\n
\n

Datenverarbeitung durch die Nutzung der Campus App


\nBei der Nutzung der Campus App werden Daten erhoben und ausgetauscht, die zur Verwendung des Angebotes erforderlich sind. Dies sind:
\n- IP-Adresse
\n- Verwendetes Betriebssystem
\n- Uhrzeit der Serveranfrage
\n- Übertragene Datenmenge
\n- Standortdaten
\n
\nDiese Daten werden bei der Nutzung der Campus App ebenfalls in Log-Dateien über den Zeitpunkt des Besuches hinaus auf einem Server, welcher durch den AStA betrieben wird und ggf. auf einem Server einer besuchten Seite gespeichert.
\nUnsere App stellt Neuigkeiten verschiedener Internetseiten bereit, die nicht von der verfassten Studierendenschaft der Ruhr-Universität Bochum betrieben werden. \nEin Einfluss auf die Verarbeitung der dort erhobenen Daten besteht nicht. \nDie oben genannten Nutzungsdaten werden dabei an folgende Anbieter übermittelt:
\n- ruhr-uni-bochum.de, Universitätsstraße 150, 44801 Bochum. Datenschutzerklärung: https://www.ruhr-uni-bochum.de/de/datenschutz
\n
\nBei der Installation der App werden Benutzer:innen danach gefragt, ob sie Push Notifications zu bestimmten Themen bekommen möchten. \nWenn Nutzer:innen in den Bezug von Push Notifications Einwilligen werden personenbezogene Daten wie z.B. IP Adresse und die gewählten Themen an Server der Firma Google Inc. übertragen. \nDie Daten werden die Daten ohne angemessenes Schutzniveau im Sinne von Art 46 DSGVO an Server von Google in die USA übertragen. \nSiehe dazu auch „Schrems II-Urteil“ (Az.: C-311/18 vom 16.07.2020) des EuGH. \nEs besteht das Risiko, dass US-Sicherheitsbehörden auf die Daten zugreifen ohne dass Betroffene darüber Informiert werden und ohne dass Rechtsbehelfe eingelegt werden können. \nDie Übermittlung erfolgt daher nur auf der ausdrücklichen Einwilligung nach Art. 49 Abs 1 a der DSGVO.\n
\nDie Einwilligung kann jederzeit in der Campus App unter dem Menupunkt „Mehr“, im Untermenü „Einstellungen“ widerrufen werden.
\n
\nWeitere Informationen in den Datenschutzhinweisen zu Firebase von Google: https://firebase.google.com/support/privacy
\n„Schrems II“ – Urteil des EuGH: https://curia.europa.eu/juris/liste.jsf?language=de&num=C-311/18
\n
\nDie Campus App enthält Links zu Webseiten anderer Anbieter.
\nWir haben keinen Einfluss darauf, dass diese Anbieter die Datenschutzbestimmungen einhalten.
\nEine permanente Überprüfung der Links ist ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar.
\nBei Bekanntwerden von Rechtsverstößen werden betroffene Links unverzüglich gelöscht.
\n
\nBei der Nutzung des Raumfinders der Campus App, werden die aktuellen Standortdaten des Endgerätes verabeitet und bis zum Schließen der App zwischengespeichert.
\nEine Einwilligung wird hierfür vom Betriebssystem eingeholt und kann jederzeit durch den Nutzer widerrufen werden.
\n
\nBei der Nutzung der Funktion zum Anzeigen des Semestertickets werden die RUB Logindaten (LoginID, Passwort) lokal auf dem Gerät gespeichert, dies ist zum Abrufen des Tickets unabdingbar. Eine Übermittlung der Daten erfolgt nur an den offizielen SSO Provider der RUB.\n
\n

Zweck der Datenverarbeitung


\nDie Verarbeitung der personenbezogenen Daten der Nutzer ist für den ordnungsgemäßen Betrieb der App erforderlich.
\nDabei ist es unerlässlich, dass beispielsweise beim Abrufen der Speisepläne durch einen Server des AStAs personenbezogene Daten erhoben werden.
\nDes Weiteren werden beim Laden der Artikel im Newsfeed, Daten an die oben genannten Seiten übermittelt.
\n
\n

Löschung bzw. Sperrung der Daten


\nNach den Grundsätzen der Datenvermeidung und der Datensparsamkeit speichern wir alle Daten, die wir für die in dieser Datenschutzerklärung genannten bzw. anderen rechtlich vorgeschriebenen Gründe erhoben haben nur so lange, wie dies für den jeweiligen Zweck notwendig ist. Nach Wegfall des Zweckes bzw. nach Ablauf der Fristen werden die Daten entsprechend der gesetzlichen Vorgaben gelöscht, vernichtet oder gesperrt.
\n
\nGesetzliche Grundlagen für die Aufbewahrungsfristen werden in der Abgabenordnung §§ 147 und 257 geregelt.
\n
\n

Rechtsgrundlagen (nach Art. 13 DSGVO)


\nWir speichern Ihre Daten nur lange, wie es notwendig ist. Wir verarbeiten Ihre Daten auf den folgenden Rechtsgrundlagen:
\n
\nArtikel 6 Absatz 1 und Artikel 7 DSGVO für die Erfüllung von Leistungen und rechtlicher Verpflichtungen.
\nArtikel 28 DSGVO für die Verarbeitung von personenbezogen Daten im Auftrag.
\nNach Ablauf der Fristen werden Ihre Daten routinemäßig gelöscht.
\n
\n

Ihre Rechte


\nDie Datenschutzgrundverordnung räumt Ihnen folgende Rechte ein:
\n
\nVerlangen einer Bestätigung über die Verarbeitung Sie betreffender personenbezogener Daten (Art. 15)
\nVerlangen einer Kopie der Daten (Art. 15)
\nRecht auf Korrektur unrichtiger Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Vervollständigung unvollständiger, Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Löschung Sie betreffender personenbezogener Daten („Recht auf Vergessenwerden“ Art. 17)
\nRecht auf Einschränkung Sie betreffender personenbezogener Daten (Art. 18)
\nRecht auf die Übertragung der Daten an einen Dritten (Art. 20)
\nBeschwerde bei der oben genannten Aufsichtsbehörde (Art. 77)
\nErteilte Einwilligungen können Sie mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3)
\nRecht auf Widerspruch der Verarbeitung Sie betreffender personenbezogener Daten (Art. 21)
\nSollten Sie Fragen zu einzelnen Punkten haben oder eines Ihrer Rechte ausüben wollen, wenden Sie sich an die oben angegebene verantwortliche Stelle oder an unseren Datenschutzbeauftragten unter datenschutz@asta-bochum.de.
\n
'** + String get privacyPolicyText; + + /// No description provided for @settingsSettings. + /// + /// In en, this message translates to: + /// **'Settings'** + String get settingsSettings; + + /// No description provided for @settingsHeadlineTheming. + /// + /// In en, this message translates to: + /// **'Theming'** + String get settingsHeadlineTheming; + + /// No description provided for @settingsSystemDarkmode. + /// + /// In en, this message translates to: + /// **'System Dark Mode'** + String get settingsSystemDarkmode; + + /// No description provided for @settingsDarkmode. + /// + /// In en, this message translates to: + /// **'Dark Mode'** + String get settingsDarkmode; + + /// No description provided for @settingsHeadlineCoreData. + /// + /// In en, this message translates to: + /// **'Core Data'** + String get settingsHeadlineCoreData; + + /// No description provided for @settingsStudyProgram. + /// + /// In en, this message translates to: + /// **'Study Program'** + String get settingsStudyProgram; + + /// No description provided for @settingsLanguage. + /// + /// In en, this message translates to: + /// **'Language'** + String get settingsLanguage; + + /// No description provided for @settingsStudyProgramChange. + /// + /// In en, this message translates to: + /// **'Change'** + String get settingsStudyProgramChange; + + /// No description provided for @settingsHeadlineBehaviour. + /// + /// In en, this message translates to: + /// **'Behaviour'** + String get settingsHeadlineBehaviour; + + /// No description provided for @settingsUseExternalBrowser. + /// + /// In en, this message translates to: + /// **'Use External Browser for Links'** + String get settingsUseExternalBrowser; + + /// No description provided for @settingsTextSize. + /// + /// In en, this message translates to: + /// **'Use System Text Size'** + String get settingsTextSize; + + /// No description provided for @settingsTicketFullscreen. + /// + /// In en, this message translates to: + /// **'Use Full-Screen for Semesterticket QR-Code'** + String get settingsTicketFullscreen; + + /// No description provided for @settingsHeadlinePrivacy. + /// + /// In en, this message translates to: + /// **'Privacy'** + String get settingsHeadlinePrivacy; + + /// No description provided for @settingsGoogleServices. + /// + /// In en, this message translates to: + /// **'Google Services for Notifications'** + String get settingsGoogleServices; + + /// No description provided for @settingsHeadlinePushNotifications. + /// + /// In en, this message translates to: + /// **'Push-Notifications'** + String get settingsHeadlinePushNotifications; + + /// No description provided for @settingsPushNotificationsEvents. + /// + /// In en, this message translates to: + /// **'Push-Notifications for saved Events'** + String get settingsPushNotificationsEvents; + + /// No description provided for @controlRoomButton. + /// + /// In en, this message translates to: + /// **'RUB Control Room'** + String get controlRoomButton; + + /// No description provided for @controlRoomButtonDescription. + /// + /// In en, this message translates to: + /// **'Always in service, for any emergency'** + String get controlRoomButtonDescription; + + /// No description provided for @walletAddStudentTicket. + /// + /// In en, this message translates to: + /// **'Add your semester ticket'** + String get walletAddStudentTicket; + + /// No description provided for @faqCampusABC. + /// + /// In en, this message translates to: + /// **'Campus ABC'** + String get faqCampusABC; + + /// No description provided for @faqMandatoryAttendance. + /// + /// In en, this message translates to: + /// **'Anwesenheitspflicht'** + String get faqMandatoryAttendance; + + /// No description provided for @faqMandatoryAttendanceText. + /// + /// In en, this message translates to: + /// **'Unabhängig von digitalen Semestern, was historisch betrachtet eine Ausnahmefallregelung an der RUB darstellt, \ngilt in einigen Ausnahmefällen und bestimmten Kursformaten eine Anwesenheitspflicht. Die Anwesenheitspflicht, \ndie früher bestand, ist mit Inkrafttreten des Hochschulzukunftsgesetzes NRW zum Oktober 2014 abgeschafft worden. \nDanach ist es grundsätzlich verboten die Erbringung und Eintragung einer Leistung von der Anwesenheit in einer \nLehrveranstaltung abhängig zu machen. Davon ausgenommen sind jedoch vor allem Exkursionen, Sprachkurse, Praktika, \npraktische Übungen und vergleichbare Lehrveranstaltungen. Sollte in einer deiner Veranstaltungen trotz des Verbotes \neine Anwesenheitspflicht verlangt werden, kannst du dich hier melden: \nhttps://asta-bochum.de/anwesenheitspflicht'** + String get faqMandatoryAttendanceText; + + /// No description provided for @faqAStAMessenger. + /// + /// In en, this message translates to: + /// **'AStA-Messenger'** + String get faqAStAMessenger; + + /// No description provided for @faqAStAMessengerText. + /// + /// In en, this message translates to: + /// **'Ab sofort sind wir unter der Mobilfunknummer +49 152 22614240 für \nallgemeine Fragen bei Whatsapp erreichbar.'** + String get faqAStAMessengerText; + + /// No description provided for @faqAccessibility. + /// + /// In en, this message translates to: + /// **'Barrierefreiheit'** + String get faqAccessibility; + + /// No description provided for @faqAccessibilityText. + /// + /// In en, this message translates to: + /// **'Barrierefreiheit bedeutet die Umwelt und Infrastruktur in dem Sinne zu gestalten, dass sie auch von Menschen mit \nBeeinträchtigungen ohne zusätzliche Hilfe in Anspruch genommen werden kann. Das Studium für Menschen mit \nBeeinträchtigungen ist in vielerlei Hinsicht erschwert. Die RUB besitzt jedoch Initiativen den Studienalltag so \nweit wie möglich zu vereinfachen und jeder bzw. jedem Studierenden zugänglich zu machen. Unserer „Autonomes \nReferat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ und das BZI des AkaFö sind dabei eure \nerste Anlaufstelle für einen Einblick in die Angebote. So bietet die Universitätsbibliothek (UB) z.B. einen \nService zur Literaturbeschaffung an, um Barrierefreiheit zu ermöglichen. Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion \nsind weitergehende Informationen für euch aufgelistet.'** + String get faqAccessibilityText; + + /// No description provided for @faqLibraries. + /// + /// In en, this message translates to: + /// **'Bibliotheken'** + String get faqLibraries; + + /// No description provided for @faqLibrariesText. + /// + /// In en, this message translates to: + /// **'Das Bibliothekssystem der RUB setzt sich aus der Universitätsbibliothek (UB), dem zentralen Gebäude des Campus \nund den in den Gebäuden verteilten Fachbibliotheken zusammen. Diese bieten dir einen Raum zum Lernen und \nRecherchieren für Hausarbeiten und Referate oder zum Lernen für Klausuren. Für jede einzelne Bibliothek bestehen \ngesonderte Regeln, was eine mögliche Ausleihe und die Öffnungszeiten betrifft. Die UB ist in den Zeiten von MO-FR: \n8.00 bis 23.00 Uhr und SA-SO: von 10.00 bis 19.00 Uhr geöffnet. Die UB stellt eine große Zahl an Arbeitsplätzen mit \nund ohne PC bereit. Für die Benutzung der Schließfächer ist eine 2€-Münze erforderlich! Erfahrt alle auf Corona \nbezogenen und alle aktualisierten Informationen auf der Internetseite der UB. Im Servicereferat des AStA kannst du \nauch kostenfrei einen AStA-Chip erhalten, der in die UB-Schließfächer passt. Eine Auflistung aller Fachbibliotheken \nund weitere Informationen: https://www.ub.rub.de'** + String get faqLibrariesText; + + /// No description provided for @faqCreditPoints. + /// + /// In en, this message translates to: + /// **'Credit Points'** + String get faqCreditPoints; + + /// No description provided for @faqCreditPointsText. + /// + /// In en, this message translates to: + /// **'Credit Points (CP) werden für jede erbrachte Prüfungsleistung vergeben. Du brauchst eine gewisse Anzahl von CP, \num Module abzuschließen und dich letztlich für deine Abschlussprüfungen anzumelden. Dabei soll 1 CP einem \nArbeitsaufwand von 30 Semesterwochenstunden entsprechen. Dieser umfasst die Vor- und Nachbereitung sowie die \nWochenstunden der Veranstaltung. Wie viele CP für eine Lehrveranstaltung vergeben werden kannst du deiner \nPrüfungsordnung entnehmen.'** + String get faqCreditPointsText; + + /// No description provided for @faqeECampus. + /// + /// In en, this message translates to: + /// **'eCampus'** + String get faqeECampus; + + /// No description provided for @faqeECampusText. + /// + /// In en, this message translates to: + /// **'eCampus ist ein zentrales Verwaltungsportal für Studenten. Dort kann nach der Anmedlung das Semesterticket abgerufen werden oder auch der zu zahlende Semesterbeitrag eingesehen werden. Weitere Informationen findne sich unter https://www.it-services.ruhr-uni-bochum.de/services/ecampus.html.de'** + String get faqeECampusText; + + /// No description provided for @faqECTS. + /// + /// In en, this message translates to: + /// **'ECTS'** + String get faqECTS; + + /// No description provided for @faqECTSText. + /// + /// In en, this message translates to: + /// **'Das „European Credit Transfer System“ (Europäisches System zur Übertragung und Akkumulierung von Studienleistungen), \nkurz ECTS, bietet die Möglichkeit, die an einer Hochschuleinrichtung erworbenen Leistungspunkte auf ein Studium an \neiner anderen Hochschuleinrichtung anzurechnen. ECTS-Leistungspunkte entsprechen dem Lernen auf der Grundlage von \ndefinierten Lernzielen und dem damit verbundenen Arbeitspensum. Es soll Studierende bei einem Umzug von einem Land \nin ein anderes behilflich sein und sie dabei unterstützen, ihre akademischen Qualifikationen und Studienzeiten im \nAusland anerkennen zu lassen. Mehr Infos findet ihr unter: \n\nhttps://education.ec.europa.eu/de/europaeisches-system-zur-uebertragung-und-akkumulierung-von-studienleistungen-ects'** + String get faqECTSText; + + /// No description provided for @faqInclusion. + /// + /// In en, this message translates to: + /// **'Inklusion'** + String get faqInclusion; + + /// No description provided for @faqInclusionText. + /// + /// In en, this message translates to: + /// **'Unter Inklusion verstehen wir die Teilhabe aller Menschen an der Gesellschaft. Konnotiert ist dieser Begriff \ninsbesondere durch die Berücksichtigung benachteiligter Personengruppen, denen eine soziale Ungleichheit und mangelnde \nChancengleichheit infolge einer studienerschwerenden gesundheitlichen Beeinträchtigung vorausgeht. Wir an der RUB sind \nbestrebt die Chancen und das Recht auf Bildung für alle Menschen gleich zu gestalten. An der RUB gibt es diverse Initiativen, \ndie euch in diesen Belangen mit Rat und Tat zu Seite stehen. Unser „Autonomes Referat für Menschen mit Behinderungen und \nsämtlichen Beeinträchtigungen“ ist hierzu neben dem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure \nerste Anlaufstelle. Neu ist das Förderprojekt „Inklusive Hochschule“, das sich dem Ziel verschrieben hat, Studierenden \nmit Behinderung oder chronischer Erkrankung die gleichberechtigte Teilhabe am Studium zu ermöglichen. Dorthin könnt \nIhr Euch auch mit Kritik, Lob und Euren Wünschen zum Thema Inklusion an der RUB wenden (z.B. per Mail an \ninklusion@rub.de). Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion sind Informationen \nzum BZI für euch aufgelistet. Auch die zentrale Studienberatung (ZSB) kann euch eine erste Hilfestellung in diesen \nBelangen geben.'** + String get faqInclusionText; + + /// No description provided for @faqLabInternships. + /// + /// In en, this message translates to: + /// **'Labor-Praktika'** + String get faqLabInternships; + + /// No description provided for @faqLabInternshipsText. + /// + /// In en, this message translates to: + /// **'Das Absolvieren von Labor-Praktika wird vor allem in naturwissenschaftlichen und ingenieurswissenschaftlichen \nStudiengängen sowie in der Medizin von dir erwartet. Es werden vorbereitende Einführungsveranstaltungen und Sicherheitsbelehrungen \nangeboten. Außerdem musst du weitere Anforderungen erfüllen. Diese kannst du auf den Webseiten der Lehrstühle erfahren.'** + String get faqLabInternshipsText; + + /// No description provided for @faqCompensation. + /// + /// In en, this message translates to: + /// **'Nachteilsausgleich'** + String get faqCompensation; + + /// No description provided for @faqCompensationText. + /// + /// In en, this message translates to: + /// **'Ein „Nachteilsausgleich“ bezeichnet im sozialrechtlichen Sinne die Ansprüche auf Hilfe und Ausgleich, die einem \njeden Studierenden mit Beeinträchtigungen unter bestimmten Voraussetzungen zustehen. Umfasst werden hinsichtlich \ndes Studiums an der RUB dabei Lehr- und Prüfungsbedingungen des jeweiligen Studiengangs. Neben der Verlängerung \nder Schreibzeit bei Klausuren können insbesondere flexible Pausenregelungen, die Notwendigkeit bestimmter technischer, \nelektronischer oder sonstiger apparativer Hilfen sowie einer Veränderung der Arbeitsplatzorganisation berücksichtigt \nwerden. Unser „Autonomes Referat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ ist hierzu neben \ndem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure erste Anlaufstelle. Hier erhaltet ihr \nBeratungsangebote und eine erste Hilfe und Information zu euren Möglichkeiten an der RUB.'** + String get faqCompensationText; + + /// No description provided for @faqOptional. + /// + /// In en, this message translates to: + /// **'Optionalbereich'** + String get faqOptional; + + /// No description provided for @faqOptionalText. + /// + /// In en, this message translates to: + /// **'Neben den Lehrveranstaltungen deines spezifischen Bachelor-Studienganges musst du zudem eine gewisse Anzahl von Kursen \nbelegen, in denen der Erwerb von fächerübergreifenden Kenntnissen und Kompetenzen im Vordergrund steht. Diese kannst \ndu weitestgehend nach Interesse aus verschiedenen geistes-, gesellschafts- und naturwissenschaftlichen Bereichen auswählen. \nZudem erhältst du Einblicke in Fremdsprachen, Präsentations- und Kommunikationstechniken, Informationstechnologien \nund interdisziplinäre oder schul- und unterrichtsbezogene Module. \nhttps://rub.de/optionalbereich/'** + String get faqOptionalText; + + /// No description provided for @faqExamWork. + /// + /// In en, this message translates to: + /// **'Prüfungsleistungen'** + String get faqExamWork; + + /// No description provided for @faqExamWorkText. + /// + /// In en, this message translates to: + /// **'Welche Leistungen von dir im Rahmen einer Lehrveranstaltung erbracht werden müssen kannst du dem Modulhandbuch deines \nStudienfaches, dem Vorlesungsverzeichnis oder eCampus entnehmen. Es gibt sowohl benotete als auch unbenotete \nVeranstaltungen. Die meisten Prüfungsleistungen bestehen aus Klausuren, Referaten und/oder Hausarbeiten.'** + String get faqExamWorkText; + + /// No description provided for @faqExamRegulations. + /// + /// In en, this message translates to: + /// **'Prüfungsordnungen'** + String get faqExamRegulations; + + /// No description provided for @faqExamRegulationsText. + /// + /// In en, this message translates to: + /// **'In der Prüfungsordnung deines Studienganges sind diejenigen Prüfungsleistungen aufgeführt, die du für deinen Abschluss \nerbringen musst. Auch ist dort geregelt, ob und wie oft du eine nicht bestandene Prüfung wiederholen bzw. verschieben \nkannst. Schon allein im Hinblick auf deinen Studienverlauf und deinen Abschluss ist ein Blick in die Prüfungsordnung \ndringend zu empfehlen!'** + String get faqExamRegulationsText; + + /// No description provided for @faqRoomOfSilence. + /// + /// In en, this message translates to: + /// **'Raum der Stille'** + String get faqRoomOfSilence; + + /// No description provided for @faqRoomOfSilenceText. + /// + /// In en, this message translates to: + /// **'Der „Raum der Stille“ soll zu Beginn des Wintersemesters am 11.10. eingeweiht werden und religionsübergreifend spirituellen \nBedürfnissen und dem individuellen Gebet Raum geben. Er wird aber auch für Menschen da sein, die aus nicht-religiösen \nGründen die Stille suchen, um etwas für ihre Gesundheit und ihr Wohlbefinden zu tun. Die Anerkennung und Förderung \nreligiöser Vielfalt schafft eine Atmosphäre der gegenseitigen Verbundenheit und Wertschätzung. Der Raum befindet sich \nim Gebäude der Mensa auf der Ebene der Roten Beete.'** + String get faqRoomOfSilenceText; + + /// No description provided for @faqSemesterTicket. + /// + /// In en, this message translates to: + /// **'Semesterticket'** + String get faqSemesterTicket; + + /// No description provided for @faqSemesterTicketText. + /// + /// In en, this message translates to: + /// **'Der Geltungsbereich des Semestertickets erstreckt sich auf den gesamten VRR-Bereich und mittlerweile auch nach Venlo. \nZudem ist das Ticket in ganz NRW gültig. Beachte hierbei, dass es nur ausgedruckt oder per PDF mit einem amtlichen \nLichtbildausweis (Perso oder Reisepass) gültig ist. Das Ticket kann über eCampus abgerufen werden.\nFür einen Aufschlag von 12,33 € kannst du dein Semesterticket zu einem Deutschlandticket aufwerten. Beachte, dass\ndu bei Nutzung des Deutschlandtickets, den QR-Code des Deutschlandtickets, dein Semesterticket und ein Lichtbildausweis\nmitführen musst. \nBuchung/Infos'** + String get faqSemesterTicketText; + + /// No description provided for @faqSozialbeitrag. + /// + /// In en, this message translates to: + /// **'Sozialbeitrag'** + String get faqSozialbeitrag; + + /// No description provided for @faqSozialbeitragText. + /// + /// In en, this message translates to: + /// **'Der Sozialbeitrag ist ein von jedem Studierenden für jedes Semester erneut zu entrichtender Pflichtbeitrag. \nDer Betrag beläuft sich im Sommersemester 2023 auf insgesamt 362,62 €. \nEnthalten sind 120 € für das Akademische Förderungswerk (AKAFÖ), welches z.B. für die Mensa und Wohnheime zuständig \nist, 220,02 € (regulär) für das Semesterticket sowie 20,1 € für die Studierendenschaft der RUB (AStA).'** + String get faqSozialbeitragText; + + /// No description provided for @faqStudentSecretariat. + /// + /// In en, this message translates to: + /// **'Studierendensekretariat'** + String get faqStudentSecretariat; + + /// No description provided for @faqStudentSecretariatText. + /// + /// In en, this message translates to: + /// **'Das Studierendensekretariat (Gebäude SSC, Ebene 0, Raum 229) sowie die Infopoints, die über den Campus verteilt \nsind, sind Anlaufstellen für Studierende zur Information rund um die Organisation des Studiums. Für weitere \nInformationen und den einzelnen Standorten verweisen wir auf folgende Links: \nStandorte und \nStudierendensekretariat'** + String get faqStudentSecretariatText; + + /// No description provided for @faqTeamspeak. + /// + /// In en, this message translates to: + /// **'Teamspeak'** + String get faqTeamspeak; + + /// No description provided for @faqTeamspeakText. + /// + /// In en, this message translates to: + /// **'Der Teamspeak-Server des AStA (TS³) bietet zu Zeiten von Corona eine persönliche Kontaktmöglichkeit des AStA zur \nStudierendenschaft. Meldet euch hierzu einfach unter \"AStARUB\" an.'** + String get faqTeamspeakText; + + /// No description provided for @faqUNIC. + /// + /// In en, this message translates to: + /// **'UNIC'** + String get faqUNIC; + + /// No description provided for @faqUNICText. + /// + /// In en, this message translates to: + /// **'Die Ruhr-Universität Bochum ist Teil des internationalen Universitätskonsortiums UNIC - „European University of \nPost-Industrial Cities“. Es ist ein Verbund von acht Universitäten, der sich der Förderung von studentischer Mobilität \nund gesellschaftlicher Integration widmet. Mit der Schaffung einer europäischen Universität soll der Austausch und \ndie Kooperation von Lehre, Forschung und Transfer gesteigert werden. Studierende, Forschende, Lehrende und das Personal \naus der Verwaltung sollen von den Möglichkeiten eines europäischen Campus profitieren. Zu UNIC gehören neben der RUB \ndie Universitäten aus Bilbao, Cork, Istanbul, Liège, Oulu, Rotterdam und Zagreb.'** + String get faqUNICText; + + /// No description provided for @faqEvents. + /// + /// In en, this message translates to: + /// **'Veranstaltungen'** + String get faqEvents; + + /// No description provided for @faqEventsText. + /// + /// In en, this message translates to: + /// **'Die Veranstaltungen deines Studienganges können sich von denen anderer Studienfächer unterscheiden. Die gängigsten \nFormen und Bezeichnungen haben wir für euch aufgeführt. Vorlesungen sind dadurch gekennzeichnet, dass ein:e Dozierende:r \nmeistens frontal oder unter Einbeziehung des oft großen Auditoriums den Stoff vermittelt. Arbeitsgemeinschaften, \nÜbungen, Tutorien und Seminare sind in der Regel auf eine geringere Anzahl an Teilnehmer:innen begrenzt. In diesen \nsteht oftmals das Erlernen der wissenschaftlichen Arbeitsweise des Studienganges im Vordergrund. Tutorien zeichnen \nzudem aus, dass sie von erfahrenen Studierenden geführt werden und den Übergang von der Schule zur Universität \nerleichtern sollen. Welche Leistungen du erbringen musst, hängt auch hier von deiner Studienordnung ab. Falls du \ndeine Dozierenden \"bewerten\" möchtest, die Didaktik nicht angemessen findest oder eine Meinung zur Digitalisierung \nabgeben möchtest, benutze den Melder des AStAs auf der Homepage: \n\nhttps://asta-bochum.de/melder-fuer-probleme-mit-digitaler-lehre/'** + String get faqEventsText; + + /// No description provided for @faqAccomodation. + /// + /// In en, this message translates to: + /// **'Wohnungen'** + String get faqAccomodation; + + /// No description provided for @faqAccomodationText. + /// + /// In en, this message translates to: + /// **'Für alle Studierende, die nicht mehr zu Hause wohnen möchten oder denen dieses aufgrund eines studienbedingten \nOrtswechsels nicht mehr möglich ist, stellt sich zwangsläufig die Frage wo sie eine neue Bleibe finden. Abhilfe \nkönnen die 21 Wohnheime des Akademischen Förderungswerkes (AKAFÖ) schaffen. Diese sind auf studentisches Wohnen \nausgerichtet und in der Nähe der RUB angesiedelt. Es gibt sowohl die Möglichkeit in Apartments oder Einzelzimmern \nauf einer Gemeinschaftsetage als auch in Wohngemeinschaften zu leben. Zudem gibt es Wohnheime in privater \nTrägerschaft. Doch auch abseits von Wohnheimen ist der Wohnungsmarkt in Bochum nicht so belastet wie in anderen \nUniversitätsstädten, sodass du in der Umgebung Bochums leicht eine passende Wohnung oder eine WG finden wirst. \nAuch dabei bietet dir der AStA gerne eine Orientierungshilfe. AStA Wohnen findet sich unter:\nhttps://akafoe.de/wohnen bzw. \nhttps://asta-bochum.de/wohnungsboerse'** + String get faqAccomodationText; + + /// No description provided for @faqZoom. + /// + /// In en, this message translates to: + /// **'Zoom'** + String get faqZoom; + + /// No description provided for @faqZoomText. + /// + /// In en, this message translates to: + /// **'Zoom stellt eine Möglichkeit dar, virtuell an Veranstaltungen teilzunehmen. Welche Plattformen eure Dozierenden \npräferieren, erfahrt ihr von eurer Fakultät. Informationen zur Teilnahme und Erstellung einer Zoom Videokonferenz \nfindet ihr unter \nhttps://it-services.ruhr-uni-bochum.de/bk/zoom.html.de'** + String get faqZoomText; + + /// No description provided for @faqEmergencyNumber. + /// + /// In en, this message translates to: + /// **'Zentrale Notrufnummer RUB'** + String get faqEmergencyNumber; + + /// No description provided for @faqEmergencyNumberText. + /// + /// In en, this message translates to: + /// **'Die Ruhr-Universität verfügt über eine Leitwarte, die 24 Stunden besetzt und über die Nummer durchgehend erreichbar \nist. Bei Notfällen alarmiert sie Feuerwehr, Notarzt oder Polizei und zuständige Stellen innerhalb der Universität. \nSpeichert euch die Notruf-Nummer am besten in euer Handy ein: 0234 3223333'** + String get faqEmergencyNumberText; + + /// No description provided for @balanceMultipleTags. + /// + /// In en, this message translates to: + /// **'Multiple NFC-Tags found! Try again.'** + String get balanceMultipleTags; + + /// No description provided for @balanceIOSScanCard. + /// + /// In en, this message translates to: + /// **'Scan your card.'** + String get balanceIOSScanCard; + + /// No description provided for @balanceMensaBalance. + /// + /// In en, this message translates to: + /// **'Mensa Balance'** + String get balanceMensaBalance; + + /// No description provided for @balanceBalance. + /// + /// In en, this message translates to: + /// **'Balance: '** + String get balanceBalance; + + /// No description provided for @balanceLastTransaction. + /// + /// In en, this message translates to: + /// **'Last Transaction: '** + String get balanceLastTransaction; + + /// No description provided for @balanceScanCard. + /// + /// In en, this message translates to: + /// **'Scan Card'** + String get balanceScanCard; + + /// No description provided for @balanceScanCardDetailed. + /// + /// In en, this message translates to: + /// **'Hold your student ID to your phone to scan it.'** + String get balanceScanCardDetailed; + + /// No description provided for @balanceNFCOff. + /// + /// In en, this message translates to: + /// **'NFC deactivated'** + String get balanceNFCOff; + + /// No description provided for @balanceNFCOffDetailed. + /// + /// In en, this message translates to: + /// **'Your NFC needs to be activated to read your AKAFÖ balance.'** + String get balanceNFCOffDetailed; + + /// No description provided for @balanceLastBalance. + /// + /// In en, this message translates to: + /// **'Last Balance: '** + String get balanceLastBalance; + + /// No description provided for @balanceLastScanned. + /// + /// In en, this message translates to: + /// **'Last scanned Transaction: '** + String get balanceLastScanned; + + /// No description provided for @ticketLoginLoginID. + /// + /// In en, this message translates to: + /// **'RUB LoginID'** + String get ticketLoginLoginID; + + /// No description provided for @ticketLoginPasswort. + /// + /// In en, this message translates to: + /// **'RUB Password'** + String get ticketLoginPasswort; + + /// No description provided for @ticketLoginLogin. + /// + /// In en, this message translates to: + /// **'Login'** + String get ticketLoginLogin; + + /// No description provided for @ticketLoginBothFieldsError. + /// + /// In en, this message translates to: + /// **'Please fill in both fields!'** + String get ticketLoginBothFieldsError; + + /// No description provided for @ticketLoginInternetError. + /// + /// In en, this message translates to: + /// **'Check your internet connection!'** + String get ticketLoginInternetError; + + /// No description provided for @ticketLoginWrongDataError. + /// + /// In en, this message translates to: + /// **'Wrong LoginID or Password!'** + String get ticketLoginWrongDataError; + + /// No description provided for @ticketLoginLoadingError. + /// + /// In en, this message translates to: + /// **'Error while loading the ticket!'** + String get ticketLoginLoadingError; + + /// No description provided for @ticketLoginEncryptedInfo. + /// + /// In en, this message translates to: + /// **'Your data is encrypted and saved locally. It is only sent to the RUB servers when logging in.'** + String get ticketLoginEncryptedInfo; + + /// No description provided for @walletPageWallet. + /// + /// In en, this message translates to: + /// **'Wallet'** + String get walletPageWallet; + + /// No description provided for @walletPageBalance. + /// + /// In en, this message translates to: + /// **'Dining Hall Balance'** + String get walletPageBalance; + + /// No description provided for @walletPageCampusABC. + /// + /// In en, this message translates to: + /// **'Campus ABC'** + String get walletPageCampusABC; + + /// No description provided for @walletPageComingInFuture. + /// + /// In en, this message translates to: + /// **'This area will be expanded in future versions to integrate useful guides.'** + String get walletPageComingInFuture; + + /// No description provided for @possibleDeviationsNotice. + /// + /// In en, this message translates to: + /// **'Deviations possible! Please check the notices on site.'** + String get possibleDeviationsNotice; } class _AppLocalizationsDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/l10n_ar.dart b/lib/l10n/l10n_ar.dart index 4df6ebde..0a250b28 100644 --- a/lib/l10n/l10n_ar.dart +++ b/lib/l10n/l10n_ar.dart @@ -75,7 +75,7 @@ class AppLocalizationsAr extends AppLocalizations { String get germanySemesterTicket => 'تذكرة الفصل الدراسي في ألمانيا'; @override - String get mensaBalanceTitle => 'رصيد الكافيتيريا'; + String get mensaBalanceTitle => 'رصيد الكافتيريا'; @override String get balanceLabel => 'الرصيد'; @@ -118,4 +118,571 @@ class AppLocalizationsAr extends AppLocalizations { @override String get navMore => 'المزيد'; + + @override + String get navBarCalendar => 'Calendar'; + + @override + String get firebaseDecisionPopup => 'To show you notifactions about spontaneous Events and Dates around campus, we currently use the \nGoogle service Firebase.\n\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'; + + @override + String get firebaseDecisionPopupSlim => 'To show you notifactions about spontaneous Events and Dates around campus, \nwe currently use the Google service Firebase.\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'; + + @override + String get firebaseDecisionAccept => 'Yes, I don\'t mind.'; + + @override + String get firebaseDecisionDecline => 'No, I don\'t want that.'; + + @override + String get chooseStudyProgram => 'Choose your study program.'; + + @override + String get onboardingAppName => 'Campus App'; + + @override + String get onboardingPresentedBy => 'Presented by your AStA'; + + @override + String get onboardingLanguage => 'Language'; + + @override + String get onboardingLanguageDetailed => 'Choose your preferred language.'; + + @override + String get onboardingStudyProgram => 'Study Program'; + + @override + String get onboardingStudyProgramDetailed => 'Choose your study program to see curated events and news.'; + + @override + String get onboardingPrivacy => 'Privacy'; + + @override + String get onboardingNotifications => 'Activate push notifications'; + + @override + String get onboardingConfirm => 'Yes, I agree'; + + @override + String get onboardingDeny => 'No, I do not agree'; + + @override + String get onboardingTheme => 'Theme'; + + @override + String get onboardingThemeDescription => 'Contrast-rich or subdued. Day or Night.\nChoose your design.'; + + @override + String get onboardingThemeSystem => 'System'; + + @override + String get onboardingThemeLight => 'Light'; + + @override + String get onboardingThemeDark => 'Dark'; + + @override + String get onboardingFeedback => 'Feedback'; + + @override + String get allergens => 'Allergens'; + + @override + String get allergensAvoid => 'Avoid'; + + @override + String get allergensGluten => 'Gluten'; + + @override + String get allergensWheat => 'Wheat'; + + @override + String get allergensRye => 'Rye'; + + @override + String get allergensBarley => 'Barley'; + + @override + String get allergensOats => 'Oats'; + + @override + String get allergensSpelt => 'Spelt'; + + @override + String get allergensKamut => 'Kamut'; + + @override + String get allergensCrustaceans => 'Crustaceans'; + + @override + String get allergensEggs => 'Eggs'; + + @override + String get allergensFish => 'Fish'; + + @override + String get allergensPeanuts => 'Peanuts'; + + @override + String get allergensSoybeans => 'Soybeans'; + + @override + String get allergensMilk => 'Milk'; + + @override + String get allergensNuts => 'Nuts'; + + @override + String get allergensAlmond => 'Almond'; + + @override + String get allergensHazelnut => 'Hazelnut'; + + @override + String get allergensWalnut => 'Walnut'; + + @override + String get allergensCashewnut => 'Cashewnut'; + + @override + String get allergensPecan => 'Pecan'; + + @override + String get allergensBrazilNut => 'BrazilNut'; + + @override + String get allergensPistachio => 'Pistachio'; + + @override + String get allergensMacadamia => 'Macadamia'; + + @override + String get allergensCelery => 'Celery'; + + @override + String get allergensMustard => 'Mustard'; + + @override + String get allergensSesame => 'Sesame'; + + @override + String get allergensSulfur => 'Sulfur'; + + @override + String get allergensLupins => 'Lupins'; + + @override + String get allergensMolluscs => 'Molluscs'; + + @override + String get mondayShort => 'Mon'; + + @override + String get tuesdayShort => 'Tue'; + + @override + String get wednesdayShort => 'Wed'; + + @override + String get thursdayShort => 'Thu'; + + @override + String get fridayShort => 'Fri'; + + @override + String get saturdayShort => 'Sat'; + + @override + String get sundayShort => 'Sun'; + + @override + String get mealPreferences => 'Preferences'; + + @override + String get preferencesExclusive => 'Exclusively'; + + @override + String get preferencesVegetarian => 'Vegetarian'; + + @override + String get preferencesVegan => 'Vegan'; + + @override + String get preferencesHalal => 'Halal'; + + @override + String get preferencesAvoid => 'Avoid'; + + @override + String get preferencesAlcohol => 'Alcohol'; + + @override + String get preferencesFish => 'Fish'; + + @override + String get preferencesPoultry => 'Poultry'; + + @override + String get preferencesLamb => 'Lamb'; + + @override + String get preferencesBeef => 'Beef'; + + @override + String get preferencesPork => 'Pork'; + + @override + String get preferencesGame => 'Game'; + + @override + String get mensaPageTitle => 'Dining Hall'; + + @override + String get mensaPagePreferences => 'Preferences'; + + @override + String get mensaPageAllergens => 'Allergens'; + + @override + String get imprintPageLegalNotice => 'Legal Notice'; + + @override + String get imprintPageLegalNoticeText => '

Inhaltlich Verantwortliche gemäß § 10 Absatz 3 MDStV:

\nStudierendenschaft der Ruhr-Universität Bochum
\nAllgemeiner Studierendenausschuss
\nSH 0/11
\nUniversitätsstr. 150
\n44780 Bochum
\n
\nInhaltlich Verantwortlich:
\nHanife Demir (Vorsitzende)
\n
\nVertretungsberechtigter Vorstand:
\nRon Agethen
\nEren Yavuz
\nElisabeth Tilbürger
\nHenry Herrmann
\nAli Sait Kücük
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\nInternet: https://www.asta-bochum.de
\n
\nDie Studierendenschaft ist eine Teilkörperschaft öffentlichen Rechts.\n
\n

Inhalte


\nDie Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. \nAls Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. \nNach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. \nVerpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt.
Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. \nBei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\n

Haftungshinweis

\nUnser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. \nDeshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. \nFür die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. \nDie verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. \nRechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. \nEine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. \nBei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.'; + + @override + String get morePageTitle => 'Settings & More'; + + @override + String get morePageAstaA => 'AstA'; + + @override + String get morePageKulturCafe => 'KulturCafé'; + + @override + String get morePageBikeWorkshop => 'Bike Workshop'; + + @override + String get morePageRepairCafe => 'Repair Café'; + + @override + String get morePageSocialCounseling => 'Social Counseling'; + + @override + String get morePageDancingGroup => 'Dancing Group'; + + @override + String get morePageGamingHub => 'Gaming Hub'; + + @override + String get morePageUsefulLinks => 'Useful Links'; + + @override + String get morePageRubMail => 'RubMail'; + + @override + String get morePageMoodle => 'Moodle'; + + @override + String get morePageECampus => 'eCampus'; + + @override + String get morePageFlexNow => 'FlexNow'; + + @override + String get morePageUniSports => 'University Sports'; + + @override + String get morePageOther => 'Other'; + + @override + String get morePageSettings => 'Settings'; + + @override + String get morePagePrivacy => 'Privacy'; + + @override + String get morePageLegalNotice => 'Legal Notice'; + + @override + String get morePageUsedResources => 'Used Resources'; + + @override + String get morePageFeedback => 'Feedback'; + + @override + String get privacyPolicyPrivacy => 'Datenschutz'; + + @override + String get privacyPolicyText => '

Verantwortliche Stelle im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:


\n
\nAStA an der Ruhr-Universität Bochum
\nPaul Hoffstiepel (Vorsitzender)
\n
\nStudierendenhaus 0/11
\nUniversitätsstr. 150
\n44801 Bochum
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\n
\nSie können Sie sich jederzeit mit einer Beschwerde an die zuständige Aufsichtsbehörde wenden. Diese ist:\n
\nLandesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen
\nPostfach 20 04 44
\n40102 Düsseldorf
\nTel.: +49 211 384240
\nFax: +49 211 3842410
\nE-Mail: poststelle@ldi.nrw.de
\nInternet: poststelle@ldi.nrw.dehttps://ldi.nrw.de
\n
\n

Datenverarbeitung durch die Nutzung der Campus App


\nBei der Nutzung der Campus App werden Daten erhoben und ausgetauscht, die zur Verwendung des Angebotes erforderlich sind. Dies sind:
\n- IP-Adresse
\n- Verwendetes Betriebssystem
\n- Uhrzeit der Serveranfrage
\n- Übertragene Datenmenge
\n- Standortdaten
\n
\nDiese Daten werden bei der Nutzung der Campus App ebenfalls in Log-Dateien über den Zeitpunkt des Besuches hinaus auf einem Server, welcher durch den AStA betrieben wird und ggf. auf einem Server einer besuchten Seite gespeichert.
\nUnsere App stellt Neuigkeiten verschiedener Internetseiten bereit, die nicht von der verfassten Studierendenschaft der Ruhr-Universität Bochum betrieben werden. \nEin Einfluss auf die Verarbeitung der dort erhobenen Daten besteht nicht. \nDie oben genannten Nutzungsdaten werden dabei an folgende Anbieter übermittelt:
\n- ruhr-uni-bochum.de, Universitätsstraße 150, 44801 Bochum. Datenschutzerklärung: https://www.ruhr-uni-bochum.de/de/datenschutz
\n
\nBei der Installation der App werden Benutzer:innen danach gefragt, ob sie Push Notifications zu bestimmten Themen bekommen möchten. \nWenn Nutzer:innen in den Bezug von Push Notifications Einwilligen werden personenbezogene Daten wie z.B. IP Adresse und die gewählten Themen an Server der Firma Google Inc. übertragen. \nDie Daten werden die Daten ohne angemessenes Schutzniveau im Sinne von Art 46 DSGVO an Server von Google in die USA übertragen. \nSiehe dazu auch „Schrems II-Urteil“ (Az.: C-311/18 vom 16.07.2020) des EuGH. \nEs besteht das Risiko, dass US-Sicherheitsbehörden auf die Daten zugreifen ohne dass Betroffene darüber Informiert werden und ohne dass Rechtsbehelfe eingelegt werden können. \nDie Übermittlung erfolgt daher nur auf der ausdrücklichen Einwilligung nach Art. 49 Abs 1 a der DSGVO.\n
\nDie Einwilligung kann jederzeit in der Campus App unter dem Menupunkt „Mehr“, im Untermenü „Einstellungen“ widerrufen werden.
\n
\nWeitere Informationen in den Datenschutzhinweisen zu Firebase von Google: https://firebase.google.com/support/privacy
\n„Schrems II“ – Urteil des EuGH: https://curia.europa.eu/juris/liste.jsf?language=de&num=C-311/18
\n
\nDie Campus App enthält Links zu Webseiten anderer Anbieter.
\nWir haben keinen Einfluss darauf, dass diese Anbieter die Datenschutzbestimmungen einhalten.
\nEine permanente Überprüfung der Links ist ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar.
\nBei Bekanntwerden von Rechtsverstößen werden betroffene Links unverzüglich gelöscht.
\n
\nBei der Nutzung des Raumfinders der Campus App, werden die aktuellen Standortdaten des Endgerätes verabeitet und bis zum Schließen der App zwischengespeichert.
\nEine Einwilligung wird hierfür vom Betriebssystem eingeholt und kann jederzeit durch den Nutzer widerrufen werden.
\n
\nBei der Nutzung der Funktion zum Anzeigen des Semestertickets werden die RUB Logindaten (LoginID, Passwort) lokal auf dem Gerät gespeichert, dies ist zum Abrufen des Tickets unabdingbar. Eine Übermittlung der Daten erfolgt nur an den offizielen SSO Provider der RUB.\n
\n

Zweck der Datenverarbeitung


\nDie Verarbeitung der personenbezogenen Daten der Nutzer ist für den ordnungsgemäßen Betrieb der App erforderlich.
\nDabei ist es unerlässlich, dass beispielsweise beim Abrufen der Speisepläne durch einen Server des AStAs personenbezogene Daten erhoben werden.
\nDes Weiteren werden beim Laden der Artikel im Newsfeed, Daten an die oben genannten Seiten übermittelt.
\n
\n

Löschung bzw. Sperrung der Daten


\nNach den Grundsätzen der Datenvermeidung und der Datensparsamkeit speichern wir alle Daten, die wir für die in dieser Datenschutzerklärung genannten bzw. anderen rechtlich vorgeschriebenen Gründe erhoben haben nur so lange, wie dies für den jeweiligen Zweck notwendig ist. Nach Wegfall des Zweckes bzw. nach Ablauf der Fristen werden die Daten entsprechend der gesetzlichen Vorgaben gelöscht, vernichtet oder gesperrt.
\n
\nGesetzliche Grundlagen für die Aufbewahrungsfristen werden in der Abgabenordnung §§ 147 und 257 geregelt.
\n
\n

Rechtsgrundlagen (nach Art. 13 DSGVO)


\nWir speichern Ihre Daten nur lange, wie es notwendig ist. Wir verarbeiten Ihre Daten auf den folgenden Rechtsgrundlagen:
\n
\nArtikel 6 Absatz 1 und Artikel 7 DSGVO für die Erfüllung von Leistungen und rechtlicher Verpflichtungen.
\nArtikel 28 DSGVO für die Verarbeitung von personenbezogen Daten im Auftrag.
\nNach Ablauf der Fristen werden Ihre Daten routinemäßig gelöscht.
\n
\n

Ihre Rechte


\nDie Datenschutzgrundverordnung räumt Ihnen folgende Rechte ein:
\n
\nVerlangen einer Bestätigung über die Verarbeitung Sie betreffender personenbezogener Daten (Art. 15)
\nVerlangen einer Kopie der Daten (Art. 15)
\nRecht auf Korrektur unrichtiger Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Vervollständigung unvollständiger, Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Löschung Sie betreffender personenbezogener Daten („Recht auf Vergessenwerden“ Art. 17)
\nRecht auf Einschränkung Sie betreffender personenbezogener Daten (Art. 18)
\nRecht auf die Übertragung der Daten an einen Dritten (Art. 20)
\nBeschwerde bei der oben genannten Aufsichtsbehörde (Art. 77)
\nErteilte Einwilligungen können Sie mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3)
\nRecht auf Widerspruch der Verarbeitung Sie betreffender personenbezogener Daten (Art. 21)
\nSollten Sie Fragen zu einzelnen Punkten haben oder eines Ihrer Rechte ausüben wollen, wenden Sie sich an die oben angegebene verantwortliche Stelle oder an unseren Datenschutzbeauftragten unter datenschutz@asta-bochum.de.
\n
'; + + @override + String get settingsSettings => 'Settings'; + + @override + String get settingsHeadlineTheming => 'Theming'; + + @override + String get settingsSystemDarkmode => 'System Dark Mode'; + + @override + String get settingsDarkmode => 'Dark Mode'; + + @override + String get settingsHeadlineCoreData => 'Core Data'; + + @override + String get settingsStudyProgram => 'Study Program'; + + @override + String get settingsLanguage => 'Language'; + + @override + String get settingsStudyProgramChange => 'Change'; + + @override + String get settingsHeadlineBehaviour => 'Behaviour'; + + @override + String get settingsUseExternalBrowser => 'Use External Browser for Links'; + + @override + String get settingsTextSize => 'Use System Text Size'; + + @override + String get settingsTicketFullscreen => 'Use Full-Screen for Semesterticket QR-Code'; + + @override + String get settingsHeadlinePrivacy => 'Privacy'; + + @override + String get settingsGoogleServices => 'Google Services for Notifications'; + + @override + String get settingsHeadlinePushNotifications => 'Push-Notifications'; + + @override + String get settingsPushNotificationsEvents => 'Push-Notifications for saved Events'; + + @override + String get controlRoomButton => 'غرفة التحكم في جامعة بوخوم'; + + @override + String get controlRoomButtonDescription => 'متواجدون دائمًا، لأي حالة طارئة'; + + @override + String get walletAddStudentTicket => 'أضف تذكرة الفصل الدراسي الخاصة بك'; + + @override + String get faqCampusABC => 'Campus ABC'; + + @override + String get faqMandatoryAttendance => 'Anwesenheitspflicht'; + + @override + String get faqMandatoryAttendanceText => 'Unabhängig von digitalen Semestern, was historisch betrachtet eine Ausnahmefallregelung an der RUB darstellt, \ngilt in einigen Ausnahmefällen und bestimmten Kursformaten eine Anwesenheitspflicht. Die Anwesenheitspflicht, \ndie früher bestand, ist mit Inkrafttreten des Hochschulzukunftsgesetzes NRW zum Oktober 2014 abgeschafft worden. \nDanach ist es grundsätzlich verboten die Erbringung und Eintragung einer Leistung von der Anwesenheit in einer \nLehrveranstaltung abhängig zu machen. Davon ausgenommen sind jedoch vor allem Exkursionen, Sprachkurse, Praktika, \npraktische Übungen und vergleichbare Lehrveranstaltungen. Sollte in einer deiner Veranstaltungen trotz des Verbotes \neine Anwesenheitspflicht verlangt werden, kannst du dich hier melden: \nhttps://asta-bochum.de/anwesenheitspflicht'; + + @override + String get faqAStAMessenger => 'AStA-Messenger'; + + @override + String get faqAStAMessengerText => 'Ab sofort sind wir unter der Mobilfunknummer +49 152 22614240 für \nallgemeine Fragen bei Whatsapp erreichbar.'; + + @override + String get faqAccessibility => 'Barrierefreiheit'; + + @override + String get faqAccessibilityText => 'Barrierefreiheit bedeutet die Umwelt und Infrastruktur in dem Sinne zu gestalten, dass sie auch von Menschen mit \nBeeinträchtigungen ohne zusätzliche Hilfe in Anspruch genommen werden kann. Das Studium für Menschen mit \nBeeinträchtigungen ist in vielerlei Hinsicht erschwert. Die RUB besitzt jedoch Initiativen den Studienalltag so \nweit wie möglich zu vereinfachen und jeder bzw. jedem Studierenden zugänglich zu machen. Unserer „Autonomes \nReferat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ und das BZI des AkaFö sind dabei eure \nerste Anlaufstelle für einen Einblick in die Angebote. So bietet die Universitätsbibliothek (UB) z.B. einen \nService zur Literaturbeschaffung an, um Barrierefreiheit zu ermöglichen. Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion \nsind weitergehende Informationen für euch aufgelistet.'; + + @override + String get faqLibraries => 'Bibliotheken'; + + @override + String get faqLibrariesText => 'Das Bibliothekssystem der RUB setzt sich aus der Universitätsbibliothek (UB), dem zentralen Gebäude des Campus \nund den in den Gebäuden verteilten Fachbibliotheken zusammen. Diese bieten dir einen Raum zum Lernen und \nRecherchieren für Hausarbeiten und Referate oder zum Lernen für Klausuren. Für jede einzelne Bibliothek bestehen \ngesonderte Regeln, was eine mögliche Ausleihe und die Öffnungszeiten betrifft. Die UB ist in den Zeiten von MO-FR: \n8.00 bis 23.00 Uhr und SA-SO: von 10.00 bis 19.00 Uhr geöffnet. Die UB stellt eine große Zahl an Arbeitsplätzen mit \nund ohne PC bereit. Für die Benutzung der Schließfächer ist eine 2€-Münze erforderlich! Erfahrt alle auf Corona \nbezogenen und alle aktualisierten Informationen auf der Internetseite der UB. Im Servicereferat des AStA kannst du \nauch kostenfrei einen AStA-Chip erhalten, der in die UB-Schließfächer passt. Eine Auflistung aller Fachbibliotheken \nund weitere Informationen: https://www.ub.rub.de'; + + @override + String get faqCreditPoints => 'Credit Points'; + + @override + String get faqCreditPointsText => 'Credit Points (CP) werden für jede erbrachte Prüfungsleistung vergeben. Du brauchst eine gewisse Anzahl von CP, \num Module abzuschließen und dich letztlich für deine Abschlussprüfungen anzumelden. Dabei soll 1 CP einem \nArbeitsaufwand von 30 Semesterwochenstunden entsprechen. Dieser umfasst die Vor- und Nachbereitung sowie die \nWochenstunden der Veranstaltung. Wie viele CP für eine Lehrveranstaltung vergeben werden kannst du deiner \nPrüfungsordnung entnehmen.'; + + @override + String get faqeECampus => 'eCampus'; + + @override + String get faqeECampusText => 'eCampus ist ein zentrales Verwaltungsportal für Studenten. Dort kann nach der Anmedlung das Semesterticket abgerufen werden oder auch der zu zahlende Semesterbeitrag eingesehen werden. Weitere Informationen findne sich unter https://www.it-services.ruhr-uni-bochum.de/services/ecampus.html.de'; + + @override + String get faqECTS => 'ECTS'; + + @override + String get faqECTSText => 'Das „European Credit Transfer System“ (Europäisches System zur Übertragung und Akkumulierung von Studienleistungen), \nkurz ECTS, bietet die Möglichkeit, die an einer Hochschuleinrichtung erworbenen Leistungspunkte auf ein Studium an \neiner anderen Hochschuleinrichtung anzurechnen. ECTS-Leistungspunkte entsprechen dem Lernen auf der Grundlage von \ndefinierten Lernzielen und dem damit verbundenen Arbeitspensum. Es soll Studierende bei einem Umzug von einem Land \nin ein anderes behilflich sein und sie dabei unterstützen, ihre akademischen Qualifikationen und Studienzeiten im \nAusland anerkennen zu lassen. Mehr Infos findet ihr unter: \n\nhttps://education.ec.europa.eu/de/europaeisches-system-zur-uebertragung-und-akkumulierung-von-studienleistungen-ects'; + + @override + String get faqInclusion => 'Inklusion'; + + @override + String get faqInclusionText => 'Unter Inklusion verstehen wir die Teilhabe aller Menschen an der Gesellschaft. Konnotiert ist dieser Begriff \ninsbesondere durch die Berücksichtigung benachteiligter Personengruppen, denen eine soziale Ungleichheit und mangelnde \nChancengleichheit infolge einer studienerschwerenden gesundheitlichen Beeinträchtigung vorausgeht. Wir an der RUB sind \nbestrebt die Chancen und das Recht auf Bildung für alle Menschen gleich zu gestalten. An der RUB gibt es diverse Initiativen, \ndie euch in diesen Belangen mit Rat und Tat zu Seite stehen. Unser „Autonomes Referat für Menschen mit Behinderungen und \nsämtlichen Beeinträchtigungen“ ist hierzu neben dem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure \nerste Anlaufstelle. Neu ist das Förderprojekt „Inklusive Hochschule“, das sich dem Ziel verschrieben hat, Studierenden \nmit Behinderung oder chronischer Erkrankung die gleichberechtigte Teilhabe am Studium zu ermöglichen. Dorthin könnt \nIhr Euch auch mit Kritik, Lob und Euren Wünschen zum Thema Inklusion an der RUB wenden (z.B. per Mail an \ninklusion@rub.de). Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion sind Informationen \nzum BZI für euch aufgelistet. Auch die zentrale Studienberatung (ZSB) kann euch eine erste Hilfestellung in diesen \nBelangen geben.'; + + @override + String get faqLabInternships => 'Labor-Praktika'; + + @override + String get faqLabInternshipsText => 'Das Absolvieren von Labor-Praktika wird vor allem in naturwissenschaftlichen und ingenieurswissenschaftlichen \nStudiengängen sowie in der Medizin von dir erwartet. Es werden vorbereitende Einführungsveranstaltungen und Sicherheitsbelehrungen \nangeboten. Außerdem musst du weitere Anforderungen erfüllen. Diese kannst du auf den Webseiten der Lehrstühle erfahren.'; + + @override + String get faqCompensation => 'Nachteilsausgleich'; + + @override + String get faqCompensationText => 'Ein „Nachteilsausgleich“ bezeichnet im sozialrechtlichen Sinne die Ansprüche auf Hilfe und Ausgleich, die einem \njeden Studierenden mit Beeinträchtigungen unter bestimmten Voraussetzungen zustehen. Umfasst werden hinsichtlich \ndes Studiums an der RUB dabei Lehr- und Prüfungsbedingungen des jeweiligen Studiengangs. Neben der Verlängerung \nder Schreibzeit bei Klausuren können insbesondere flexible Pausenregelungen, die Notwendigkeit bestimmter technischer, \nelektronischer oder sonstiger apparativer Hilfen sowie einer Veränderung der Arbeitsplatzorganisation berücksichtigt \nwerden. Unser „Autonomes Referat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ ist hierzu neben \ndem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure erste Anlaufstelle. Hier erhaltet ihr \nBeratungsangebote und eine erste Hilfe und Information zu euren Möglichkeiten an der RUB.'; + + @override + String get faqOptional => 'Optionalbereich'; + + @override + String get faqOptionalText => 'Neben den Lehrveranstaltungen deines spezifischen Bachelor-Studienganges musst du zudem eine gewisse Anzahl von Kursen \nbelegen, in denen der Erwerb von fächerübergreifenden Kenntnissen und Kompetenzen im Vordergrund steht. Diese kannst \ndu weitestgehend nach Interesse aus verschiedenen geistes-, gesellschafts- und naturwissenschaftlichen Bereichen auswählen. \nZudem erhältst du Einblicke in Fremdsprachen, Präsentations- und Kommunikationstechniken, Informationstechnologien \nund interdisziplinäre oder schul- und unterrichtsbezogene Module. \nhttps://rub.de/optionalbereich/'; + + @override + String get faqExamWork => 'Prüfungsleistungen'; + + @override + String get faqExamWorkText => 'Welche Leistungen von dir im Rahmen einer Lehrveranstaltung erbracht werden müssen kannst du dem Modulhandbuch deines \nStudienfaches, dem Vorlesungsverzeichnis oder eCampus entnehmen. Es gibt sowohl benotete als auch unbenotete \nVeranstaltungen. Die meisten Prüfungsleistungen bestehen aus Klausuren, Referaten und/oder Hausarbeiten.'; + + @override + String get faqExamRegulations => 'Prüfungsordnungen'; + + @override + String get faqExamRegulationsText => 'In der Prüfungsordnung deines Studienganges sind diejenigen Prüfungsleistungen aufgeführt, die du für deinen Abschluss \nerbringen musst. Auch ist dort geregelt, ob und wie oft du eine nicht bestandene Prüfung wiederholen bzw. verschieben \nkannst. Schon allein im Hinblick auf deinen Studienverlauf und deinen Abschluss ist ein Blick in die Prüfungsordnung \ndringend zu empfehlen!'; + + @override + String get faqRoomOfSilence => 'Raum der Stille'; + + @override + String get faqRoomOfSilenceText => 'Der „Raum der Stille“ soll zu Beginn des Wintersemesters am 11.10. eingeweiht werden und religionsübergreifend spirituellen \nBedürfnissen und dem individuellen Gebet Raum geben. Er wird aber auch für Menschen da sein, die aus nicht-religiösen \nGründen die Stille suchen, um etwas für ihre Gesundheit und ihr Wohlbefinden zu tun. Die Anerkennung und Förderung \nreligiöser Vielfalt schafft eine Atmosphäre der gegenseitigen Verbundenheit und Wertschätzung. Der Raum befindet sich \nim Gebäude der Mensa auf der Ebene der Roten Beete.'; + + @override + String get faqSemesterTicket => 'Semesterticket'; + + @override + String get faqSemesterTicketText => 'Der Geltungsbereich des Semestertickets erstreckt sich auf den gesamten VRR-Bereich und mittlerweile auch nach Venlo. \nZudem ist das Ticket in ganz NRW gültig. Beachte hierbei, dass es nur ausgedruckt oder per PDF mit einem amtlichen \nLichtbildausweis (Perso oder Reisepass) gültig ist. Das Ticket kann über eCampus abgerufen werden.\nFür einen Aufschlag von 12,33 € kannst du dein Semesterticket zu einem Deutschlandticket aufwerten. Beachte, dass\ndu bei Nutzung des Deutschlandtickets, den QR-Code des Deutschlandtickets, dein Semesterticket und ein Lichtbildausweis\nmitführen musst. \nBuchung/Infos'; + + @override + String get faqSozialbeitrag => 'Sozialbeitrag'; + + @override + String get faqSozialbeitragText => 'Der Sozialbeitrag ist ein von jedem Studierenden für jedes Semester erneut zu entrichtender Pflichtbeitrag. \nDer Betrag beläuft sich im Sommersemester 2023 auf insgesamt 362,62 €. \nEnthalten sind 120 € für das Akademische Förderungswerk (AKAFÖ), welches z.B. für die Mensa und Wohnheime zuständig \nist, 220,02 € (regulär) für das Semesterticket sowie 20,1 € für die Studierendenschaft der RUB (AStA).'; + + @override + String get faqStudentSecretariat => 'Studierendensekretariat'; + + @override + String get faqStudentSecretariatText => 'Das Studierendensekretariat (Gebäude SSC, Ebene 0, Raum 229) sowie die Infopoints, die über den Campus verteilt \nsind, sind Anlaufstellen für Studierende zur Information rund um die Organisation des Studiums. Für weitere \nInformationen und den einzelnen Standorten verweisen wir auf folgende Links: \nStandorte und \nStudierendensekretariat'; + + @override + String get faqTeamspeak => 'Teamspeak'; + + @override + String get faqTeamspeakText => 'Der Teamspeak-Server des AStA (TS³) bietet zu Zeiten von Corona eine persönliche Kontaktmöglichkeit des AStA zur \nStudierendenschaft. Meldet euch hierzu einfach unter \"AStARUB\" an.'; + + @override + String get faqUNIC => 'UNIC'; + + @override + String get faqUNICText => 'Die Ruhr-Universität Bochum ist Teil des internationalen Universitätskonsortiums UNIC - „European University of \nPost-Industrial Cities“. Es ist ein Verbund von acht Universitäten, der sich der Förderung von studentischer Mobilität \nund gesellschaftlicher Integration widmet. Mit der Schaffung einer europäischen Universität soll der Austausch und \ndie Kooperation von Lehre, Forschung und Transfer gesteigert werden. Studierende, Forschende, Lehrende und das Personal \naus der Verwaltung sollen von den Möglichkeiten eines europäischen Campus profitieren. Zu UNIC gehören neben der RUB \ndie Universitäten aus Bilbao, Cork, Istanbul, Liège, Oulu, Rotterdam und Zagreb.'; + + @override + String get faqEvents => 'Veranstaltungen'; + + @override + String get faqEventsText => 'Die Veranstaltungen deines Studienganges können sich von denen anderer Studienfächer unterscheiden. Die gängigsten \nFormen und Bezeichnungen haben wir für euch aufgeführt. Vorlesungen sind dadurch gekennzeichnet, dass ein:e Dozierende:r \nmeistens frontal oder unter Einbeziehung des oft großen Auditoriums den Stoff vermittelt. Arbeitsgemeinschaften, \nÜbungen, Tutorien und Seminare sind in der Regel auf eine geringere Anzahl an Teilnehmer:innen begrenzt. In diesen \nsteht oftmals das Erlernen der wissenschaftlichen Arbeitsweise des Studienganges im Vordergrund. Tutorien zeichnen \nzudem aus, dass sie von erfahrenen Studierenden geführt werden und den Übergang von der Schule zur Universität \nerleichtern sollen. Welche Leistungen du erbringen musst, hängt auch hier von deiner Studienordnung ab. Falls du \ndeine Dozierenden \"bewerten\" möchtest, die Didaktik nicht angemessen findest oder eine Meinung zur Digitalisierung \nabgeben möchtest, benutze den Melder des AStAs auf der Homepage: \n\nhttps://asta-bochum.de/melder-fuer-probleme-mit-digitaler-lehre/'; + + @override + String get faqAccomodation => 'Wohnungen'; + + @override + String get faqAccomodationText => 'Für alle Studierende, die nicht mehr zu Hause wohnen möchten oder denen dieses aufgrund eines studienbedingten \nOrtswechsels nicht mehr möglich ist, stellt sich zwangsläufig die Frage wo sie eine neue Bleibe finden. Abhilfe \nkönnen die 21 Wohnheime des Akademischen Förderungswerkes (AKAFÖ) schaffen. Diese sind auf studentisches Wohnen \nausgerichtet und in der Nähe der RUB angesiedelt. Es gibt sowohl die Möglichkeit in Apartments oder Einzelzimmern \nauf einer Gemeinschaftsetage als auch in Wohngemeinschaften zu leben. Zudem gibt es Wohnheime in privater \nTrägerschaft. Doch auch abseits von Wohnheimen ist der Wohnungsmarkt in Bochum nicht so belastet wie in anderen \nUniversitätsstädten, sodass du in der Umgebung Bochums leicht eine passende Wohnung oder eine WG finden wirst. \nAuch dabei bietet dir der AStA gerne eine Orientierungshilfe. AStA Wohnen findet sich unter:\nhttps://akafoe.de/wohnen bzw. \nhttps://asta-bochum.de/wohnungsboerse'; + + @override + String get faqZoom => 'Zoom'; + + @override + String get faqZoomText => 'Zoom stellt eine Möglichkeit dar, virtuell an Veranstaltungen teilzunehmen. Welche Plattformen eure Dozierenden \npräferieren, erfahrt ihr von eurer Fakultät. Informationen zur Teilnahme und Erstellung einer Zoom Videokonferenz \nfindet ihr unter \nhttps://it-services.ruhr-uni-bochum.de/bk/zoom.html.de'; + + @override + String get faqEmergencyNumber => 'Zentrale Notrufnummer RUB'; + + @override + String get faqEmergencyNumberText => 'تمتلك جامعة الرور في بوخوم غرفة مراقبة تعمل على مدار الساعة ويمكن الوصول إليها دائمًا عبر الهاتف. في حالات الطوارئ، يتم إخطار خدمات الإطفاء أو الإسعاف أو الشرطة وكذلك الجهات المعنية في الجامعة. من الأفضل حفظ رقم الطوارئ على هاتفك: 0234 3223333'; + + @override + String get balanceMultipleTags => 'تم العثور على عدة بطاقات NFC! حاول مرة أخرى.'; + + @override + String get balanceIOSScanCard => 'امسح بطاقتك.'; + + @override + String get balanceMensaBalance => 'رصيد الكافتيريا'; + + @override + String get balanceBalance => 'الرصيد: '; + + @override + String get balanceLastTransaction => 'آخر عملية:'; + + @override + String get balanceScanCard => 'امسح البطاقة'; + + @override + String get balanceScanCardDetailed => 'ضع بطاقة الطالب الخاصة بك قرب هاتفك لمسحها.'; + + @override + String get balanceNFCOff => 'تم تعطيل NFC'; + + @override + String get balanceNFCOffDetailed => 'يجب تفعيل NFC لقراءة رصيد بطاقة AKAFÖ الخاصة بك.'; + + @override + String get balanceLastBalance => 'آخر رصيد: '; + + @override + String get balanceLastScanned => 'آخر عملية ممسوحة: '; + + @override + String get ticketLoginLoginID => 'معرف تسجيل الدخول إلى RUB'; + + @override + String get ticketLoginPasswort => 'كلمة مرور RUB'; + + @override + String get ticketLoginLogin => 'تسجيل الدخول'; + + @override + String get ticketLoginBothFieldsError => 'يرجى ملء كلا الحقلين!'; + + @override + String get ticketLoginInternetError => 'تحقق من اتصالك بالإنترنت!'; + + @override + String get ticketLoginWrongDataError => 'معرف الدخول أو كلمة المرور غير صحيحة!'; + + @override + String get ticketLoginLoadingError => 'حدث خطأ أثناء تحميل التذكرة!'; + + @override + String get ticketLoginEncryptedInfo => 'يتم تشفير بياناتك وتخزينها محليًا. يتم إرسالها فقط إلى خوادم RUB عند تسجيل الدخول.'; + + @override + String get walletPageWallet => 'المحفظة'; + + @override + String get walletPageBalance => 'رصيد الكافتيريا'; + + @override + String get walletPageCampusABC => 'قاموس الحرم الجامعي ABC'; + + @override + String get walletPageComingInFuture => 'سيتم توسيع هذا القسم في الإصدارات المستقبلية لدمج أدلة مفيدة.'; + + @override + String get possibleDeviationsNotice => 'قد تحدث تغييرات! يرجى الانتباه إلى الإشعارات في الموقع.'; } diff --git a/lib/l10n/l10n_de.dart b/lib/l10n/l10n_de.dart index 8549ce82..8d5ef49e 100644 --- a/lib/l10n/l10n_de.dart +++ b/lib/l10n/l10n_de.dart @@ -118,4 +118,571 @@ class AppLocalizationsDe extends AppLocalizations { @override String get navMore => 'Mehr'; + + @override + String get navBarCalendar => 'Calendar'; + + @override + String get firebaseDecisionPopup => 'To show you notifactions about spontaneous Events and Dates around campus, we currently use the \nGoogle service Firebase.\n\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'; + + @override + String get firebaseDecisionPopupSlim => 'To show you notifactions about spontaneous Events and Dates around campus, \nwe currently use the Google service Firebase.\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'; + + @override + String get firebaseDecisionAccept => 'Yes, I don\'t mind.'; + + @override + String get firebaseDecisionDecline => 'No, I don\'t want that.'; + + @override + String get chooseStudyProgram => 'Choose your study program.'; + + @override + String get onboardingAppName => 'Campus App'; + + @override + String get onboardingPresentedBy => 'Presented by your AStA'; + + @override + String get onboardingLanguage => 'Language'; + + @override + String get onboardingLanguageDetailed => 'Choose your preferred language.'; + + @override + String get onboardingStudyProgram => 'Study Program'; + + @override + String get onboardingStudyProgramDetailed => 'Choose your study program to see curated events and news.'; + + @override + String get onboardingPrivacy => 'Privacy'; + + @override + String get onboardingNotifications => 'Activate push notifications'; + + @override + String get onboardingConfirm => 'Yes, I agree'; + + @override + String get onboardingDeny => 'No, I do not agree'; + + @override + String get onboardingTheme => 'Theme'; + + @override + String get onboardingThemeDescription => 'Contrast-rich or subdued. Day or Night.\nChoose your design.'; + + @override + String get onboardingThemeSystem => 'System'; + + @override + String get onboardingThemeLight => 'Light'; + + @override + String get onboardingThemeDark => 'Dark'; + + @override + String get onboardingFeedback => 'Feedback'; + + @override + String get allergens => 'Allergens'; + + @override + String get allergensAvoid => 'Avoid'; + + @override + String get allergensGluten => 'Gluten'; + + @override + String get allergensWheat => 'Wheat'; + + @override + String get allergensRye => 'Rye'; + + @override + String get allergensBarley => 'Barley'; + + @override + String get allergensOats => 'Oats'; + + @override + String get allergensSpelt => 'Spelt'; + + @override + String get allergensKamut => 'Kamut'; + + @override + String get allergensCrustaceans => 'Crustaceans'; + + @override + String get allergensEggs => 'Eggs'; + + @override + String get allergensFish => 'Fish'; + + @override + String get allergensPeanuts => 'Peanuts'; + + @override + String get allergensSoybeans => 'Soybeans'; + + @override + String get allergensMilk => 'Milk'; + + @override + String get allergensNuts => 'Nuts'; + + @override + String get allergensAlmond => 'Almond'; + + @override + String get allergensHazelnut => 'Hazelnut'; + + @override + String get allergensWalnut => 'Walnut'; + + @override + String get allergensCashewnut => 'Cashewnut'; + + @override + String get allergensPecan => 'Pecan'; + + @override + String get allergensBrazilNut => 'BrazilNut'; + + @override + String get allergensPistachio => 'Pistachio'; + + @override + String get allergensMacadamia => 'Macadamia'; + + @override + String get allergensCelery => 'Celery'; + + @override + String get allergensMustard => 'Mustard'; + + @override + String get allergensSesame => 'Sesame'; + + @override + String get allergensSulfur => 'Sulfur'; + + @override + String get allergensLupins => 'Lupins'; + + @override + String get allergensMolluscs => 'Molluscs'; + + @override + String get mondayShort => 'Mon'; + + @override + String get tuesdayShort => 'Tue'; + + @override + String get wednesdayShort => 'Wed'; + + @override + String get thursdayShort => 'Thu'; + + @override + String get fridayShort => 'Fri'; + + @override + String get saturdayShort => 'Sat'; + + @override + String get sundayShort => 'Sun'; + + @override + String get mealPreferences => 'Preferences'; + + @override + String get preferencesExclusive => 'Exclusively'; + + @override + String get preferencesVegetarian => 'Vegetarian'; + + @override + String get preferencesVegan => 'Vegan'; + + @override + String get preferencesHalal => 'Halal'; + + @override + String get preferencesAvoid => 'Avoid'; + + @override + String get preferencesAlcohol => 'Alcohol'; + + @override + String get preferencesFish => 'Fish'; + + @override + String get preferencesPoultry => 'Poultry'; + + @override + String get preferencesLamb => 'Lamb'; + + @override + String get preferencesBeef => 'Beef'; + + @override + String get preferencesPork => 'Pork'; + + @override + String get preferencesGame => 'Game'; + + @override + String get mensaPageTitle => 'Dining Hall'; + + @override + String get mensaPagePreferences => 'Preferences'; + + @override + String get mensaPageAllergens => 'Allergens'; + + @override + String get imprintPageLegalNotice => 'Legal Notice'; + + @override + String get imprintPageLegalNoticeText => '

Inhaltlich Verantwortliche gemäß § 10 Absatz 3 MDStV:

\nStudierendenschaft der Ruhr-Universität Bochum
\nAllgemeiner Studierendenausschuss
\nSH 0/11
\nUniversitätsstr. 150
\n44780 Bochum
\n
\nInhaltlich Verantwortlich:
\nHanife Demir (Vorsitzende)
\n
\nVertretungsberechtigter Vorstand:
\nRon Agethen
\nEren Yavuz
\nElisabeth Tilbürger
\nHenry Herrmann
\nAli Sait Kücük
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\nInternet: https://www.asta-bochum.de
\n
\nDie Studierendenschaft ist eine Teilkörperschaft öffentlichen Rechts.\n
\n

Inhalte


\nDie Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. \nAls Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. \nNach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. \nVerpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt.
Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. \nBei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\n

Haftungshinweis

\nUnser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. \nDeshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. \nFür die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. \nDie verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. \nRechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. \nEine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. \nBei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.'; + + @override + String get morePageTitle => 'Settings & More'; + + @override + String get morePageAstaA => 'AstA'; + + @override + String get morePageKulturCafe => 'KulturCafé'; + + @override + String get morePageBikeWorkshop => 'Bike Workshop'; + + @override + String get morePageRepairCafe => 'Repair Café'; + + @override + String get morePageSocialCounseling => 'Social Counseling'; + + @override + String get morePageDancingGroup => 'Dancing Group'; + + @override + String get morePageGamingHub => 'Gaming Hub'; + + @override + String get morePageUsefulLinks => 'Useful Links'; + + @override + String get morePageRubMail => 'RubMail'; + + @override + String get morePageMoodle => 'Moodle'; + + @override + String get morePageECampus => 'eCampus'; + + @override + String get morePageFlexNow => 'FlexNow'; + + @override + String get morePageUniSports => 'University Sports'; + + @override + String get morePageOther => 'Other'; + + @override + String get morePageSettings => 'Settings'; + + @override + String get morePagePrivacy => 'Privacy'; + + @override + String get morePageLegalNotice => 'Legal Notice'; + + @override + String get morePageUsedResources => 'Used Resources'; + + @override + String get morePageFeedback => 'Feedback'; + + @override + String get privacyPolicyPrivacy => 'Datenschutz'; + + @override + String get privacyPolicyText => '

Verantwortliche Stelle im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:


\n
\nAStA an der Ruhr-Universität Bochum
\nPaul Hoffstiepel (Vorsitzender)
\n
\nStudierendenhaus 0/11
\nUniversitätsstr. 150
\n44801 Bochum
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\n
\nSie können Sie sich jederzeit mit einer Beschwerde an die zuständige Aufsichtsbehörde wenden. Diese ist:\n
\nLandesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen
\nPostfach 20 04 44
\n40102 Düsseldorf
\nTel.: +49 211 384240
\nFax: +49 211 3842410
\nE-Mail: poststelle@ldi.nrw.de
\nInternet: poststelle@ldi.nrw.dehttps://ldi.nrw.de
\n
\n

Datenverarbeitung durch die Nutzung der Campus App


\nBei der Nutzung der Campus App werden Daten erhoben und ausgetauscht, die zur Verwendung des Angebotes erforderlich sind. Dies sind:
\n- IP-Adresse
\n- Verwendetes Betriebssystem
\n- Uhrzeit der Serveranfrage
\n- Übertragene Datenmenge
\n- Standortdaten
\n
\nDiese Daten werden bei der Nutzung der Campus App ebenfalls in Log-Dateien über den Zeitpunkt des Besuches hinaus auf einem Server, welcher durch den AStA betrieben wird und ggf. auf einem Server einer besuchten Seite gespeichert.
\nUnsere App stellt Neuigkeiten verschiedener Internetseiten bereit, die nicht von der verfassten Studierendenschaft der Ruhr-Universität Bochum betrieben werden. \nEin Einfluss auf die Verarbeitung der dort erhobenen Daten besteht nicht. \nDie oben genannten Nutzungsdaten werden dabei an folgende Anbieter übermittelt:
\n- ruhr-uni-bochum.de, Universitätsstraße 150, 44801 Bochum. Datenschutzerklärung: https://www.ruhr-uni-bochum.de/de/datenschutz
\n
\nBei der Installation der App werden Benutzer:innen danach gefragt, ob sie Push Notifications zu bestimmten Themen bekommen möchten. \nWenn Nutzer:innen in den Bezug von Push Notifications Einwilligen werden personenbezogene Daten wie z.B. IP Adresse und die gewählten Themen an Server der Firma Google Inc. übertragen. \nDie Daten werden die Daten ohne angemessenes Schutzniveau im Sinne von Art 46 DSGVO an Server von Google in die USA übertragen. \nSiehe dazu auch „Schrems II-Urteil“ (Az.: C-311/18 vom 16.07.2020) des EuGH. \nEs besteht das Risiko, dass US-Sicherheitsbehörden auf die Daten zugreifen ohne dass Betroffene darüber Informiert werden und ohne dass Rechtsbehelfe eingelegt werden können. \nDie Übermittlung erfolgt daher nur auf der ausdrücklichen Einwilligung nach Art. 49 Abs 1 a der DSGVO.\n
\nDie Einwilligung kann jederzeit in der Campus App unter dem Menupunkt „Mehr“, im Untermenü „Einstellungen“ widerrufen werden.
\n
\nWeitere Informationen in den Datenschutzhinweisen zu Firebase von Google:
\n„Schrems II“ – Urteil des EuGH:
https://curia.europa.eu/juris/liste.jsf?language=de&num=C-311/18
\n
\nDie Campus App enthält Links zu Webseiten anderer Anbieter.
\nWir haben keinen Einfluss darauf, dass diese Anbieter die Datenschutzbestimmungen einhalten.
\nEine permanente Überprüfung der Links ist ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar.
\nBei Bekanntwerden von Rechtsverstößen werden betroffene Links unverzüglich gelöscht.
\n
\nBei der Nutzung des Raumfinders der Campus App, werden die aktuellen Standortdaten des Endgerätes verabeitet und bis zum Schließen der App zwischengespeichert.
\nEine Einwilligung wird hierfür vom Betriebssystem eingeholt und kann jederzeit durch den Nutzer widerrufen werden.
\n
\nBei der Nutzung der Funktion zum Anzeigen des Semestertickets werden die RUB Logindaten (LoginID, Passwort) lokal auf dem Gerät gespeichert, dies ist zum Abrufen des Tickets unabdingbar. Eine Übermittlung der Daten erfolgt nur an den offizielen SSO Provider der RUB.\n
\n

Zweck der Datenverarbeitung


\nDie Verarbeitung der personenbezogenen Daten der Nutzer ist für den ordnungsgemäßen Betrieb der App erforderlich.
\nDabei ist es unerlässlich, dass beispielsweise beim Abrufen der Speisepläne durch einen Server des AStAs personenbezogene Daten erhoben werden.
\nDes Weiteren werden beim Laden der Artikel im Newsfeed, Daten an die oben genannten Seiten übermittelt.
\n
\n

Löschung bzw. Sperrung der Daten


\nNach den Grundsätzen der Datenvermeidung und der Datensparsamkeit speichern wir alle Daten, die wir für die in dieser Datenschutzerklärung genannten bzw. anderen rechtlich vorgeschriebenen Gründe erhoben haben nur so lange, wie dies für den jeweiligen Zweck notwendig ist. Nach Wegfall des Zweckes bzw. nach Ablauf der Fristen werden die Daten entsprechend der gesetzlichen Vorgaben gelöscht, vernichtet oder gesperrt.
\n
\nGesetzliche Grundlagen für die Aufbewahrungsfristen werden in der Abgabenordnung §§ 147 und 257 geregelt.
\n
\n

Rechtsgrundlagen (nach Art. 13 DSGVO)


\nWir speichern Ihre Daten nur lange, wie es notwendig ist. Wir verarbeiten Ihre Daten auf den folgenden Rechtsgrundlagen:
\n
\nArtikel 6 Absatz 1 und Artikel 7 DSGVO für die Erfüllung von Leistungen und rechtlicher Verpflichtungen.
\nArtikel 28 DSGVO für die Verarbeitung von personenbezogen Daten im Auftrag.
\nNach Ablauf der Fristen werden Ihre Daten routinemäßig gelöscht.
\n
\n

Ihre Rechte


\nDie Datenschutzgrundverordnung räumt Ihnen folgende Rechte ein:
\n
\nVerlangen einer Bestätigung über die Verarbeitung Sie betreffender personenbezogener Daten (Art. 15)
\nVerlangen einer Kopie der Daten (Art. 15)
\nRecht auf Korrektur unrichtiger Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Vervollständigung unvollständiger, Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Löschung Sie betreffender personenbezogener Daten („Recht auf Vergessenwerden“ Art. 17)
\nRecht auf Einschränkung Sie betreffender personenbezogener Daten (Art. 18)
\nRecht auf die Übertragung der Daten an einen Dritten (Art. 20)
\nBeschwerde bei der oben genannten Aufsichtsbehörde (Art. 77)
\nErteilte Einwilligungen können Sie mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3)
\nRecht auf Widerspruch der Verarbeitung Sie betreffender personenbezogener Daten (Art. 21)
\nSollten Sie Fragen zu einzelnen Punkten haben oder eines Ihrer Rechte ausüben wollen, wenden Sie sich an die oben angegebene verantwortliche Stelle oder an unseren Datenschutzbeauftragten unter datenschutz@asta-bochum.de.
\n
'; + + @override + String get settingsSettings => 'Einstellungen'; + + @override + String get settingsHeadlineTheming => 'Theming'; + + @override + String get settingsSystemDarkmode => 'System Darkmode'; + + @override + String get settingsDarkmode => 'Darkmode'; + + @override + String get settingsHeadlineCoreData => 'Stammdaten'; + + @override + String get settingsStudyProgram => 'Studiengang'; + + @override + String get settingsLanguage => 'Sprache'; + + @override + String get settingsStudyProgramChange => 'Ändern'; + + @override + String get settingsHeadlineBehaviour => 'Verhalten'; + + @override + String get settingsUseExternalBrowser => 'Verwende externen Browser für Links'; + + @override + String get settingsTextSize => 'Verwende Textgröße des Systems'; + + @override + String get settingsTicketFullscreen => 'Vollbildschirmmodus QR-Code Semesterticket'; + + @override + String get settingsHeadlinePrivacy => 'Datenschutz'; + + @override + String get settingsGoogleServices => 'Google Services für Benachrichtigungen'; + + @override + String get settingsHeadlinePushNotifications => 'Push-Benachrichtigungen'; + + @override + String get settingsPushNotificationsEvents => 'Benachrichtigungen für gespeicherte Events'; + + @override + String get controlRoomButton => 'Leitwarte der RUB'; + + @override + String get controlRoomButtonDescription => ' 24/7 besetzt, für jegliche Notfälle'; + + @override + String get walletAddStudentTicket => 'Füge dein Semesterticket hinzu'; + + @override + String get faqCampusABC => 'Campus ABC'; + + @override + String get faqMandatoryAttendance => 'Anwesenheitspflicht'; + + @override + String get faqMandatoryAttendanceText => 'Unabhängig von digitalen Semestern, was historisch betrachtet eine Ausnahmefallregelung an der RUB darstellt, \ngilt in einigen Ausnahmefällen und bestimmten Kursformaten eine Anwesenheitspflicht. Die Anwesenheitspflicht, \ndie früher bestand, ist mit Inkrafttreten des Hochschulzukunftsgesetzes NRW zum Oktober 2014 abgeschafft worden. \nDanach ist es grundsätzlich verboten die Erbringung und Eintragung einer Leistung von der Anwesenheit in einer \nLehrveranstaltung abhängig zu machen. Davon ausgenommen sind jedoch vor allem Exkursionen, Sprachkurse, Praktika, \npraktische Übungen und vergleichbare Lehrveranstaltungen. Sollte in einer deiner Veranstaltungen trotz des Verbotes \neine Anwesenheitspflicht verlangt werden, kannst du dich hier melden: \nhttps://asta-bochum.de/anwesenheitspflicht'; + + @override + String get faqAStAMessenger => 'AStA-Messenger'; + + @override + String get faqAStAMessengerText => 'Ab sofort sind wir unter der Mobilfunknummer +49 152 22614240 für \nallgemeine Fragen bei Whatsapp erreichbar.'; + + @override + String get faqAccessibility => 'Barrierefreiheit'; + + @override + String get faqAccessibilityText => 'Barrierefreiheit bedeutet die Umwelt und Infrastruktur in dem Sinne zu gestalten, dass sie auch von Menschen mit \nBeeinträchtigungen ohne zusätzliche Hilfe in Anspruch genommen werden kann. Das Studium für Menschen mit \nBeeinträchtigungen ist in vielerlei Hinsicht erschwert. Die RUB besitzt jedoch Initiativen den Studienalltag so \nweit wie möglich zu vereinfachen und jeder bzw. jedem Studierenden zugänglich zu machen. Unserer „Autonomes \nReferat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ und das BZI des AkaFö sind dabei eure \nerste Anlaufstelle für einen Einblick in die Angebote. So bietet die Universitätsbibliothek (UB) z.B. einen \nService zur Literaturbeschaffung an, um Barrierefreiheit zu ermöglichen. Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion \nsind weitergehende Informationen für euch aufgelistet.'; + + @override + String get faqLibraries => 'Bibliotheken'; + + @override + String get faqLibrariesText => 'Das Bibliothekssystem der RUB setzt sich aus der Universitätsbibliothek (UB), dem zentralen Gebäude des Campus \nund den in den Gebäuden verteilten Fachbibliotheken zusammen. Diese bieten dir einen Raum zum Lernen und \nRecherchieren für Hausarbeiten und Referate oder zum Lernen für Klausuren. Für jede einzelne Bibliothek bestehen \ngesonderte Regeln, was eine mögliche Ausleihe und die Öffnungszeiten betrifft. Die UB ist in den Zeiten von MO-FR: \n8.00 bis 23.00 Uhr und SA-SO: von 10.00 bis 19.00 Uhr geöffnet. Die UB stellt eine große Zahl an Arbeitsplätzen mit \nund ohne PC bereit. Für die Benutzung der Schließfächer ist eine 2€-Münze erforderlich! Erfahrt alle auf Corona \nbezogenen und alle aktualisierten Informationen auf der Internetseite der UB. Im Servicereferat des AStA kannst du \nauch kostenfrei einen AStA-Chip erhalten, der in die UB-Schließfächer passt. Eine Auflistung aller Fachbibliotheken \nund weitere Informationen: https://www.ub.rub.de'; + + @override + String get faqCreditPoints => 'Credit Points'; + + @override + String get faqCreditPointsText => 'Credit Points (CP) werden für jede erbrachte Prüfungsleistung vergeben. Du brauchst eine gewisse Anzahl von CP, \num Module abzuschließen und dich letztlich für deine Abschlussprüfungen anzumelden. Dabei soll 1 CP einem \nArbeitsaufwand von 30 Semesterwochenstunden entsprechen. Dieser umfasst die Vor- und Nachbereitung sowie die \nWochenstunden der Veranstaltung. Wie viele CP für eine Lehrveranstaltung vergeben werden kannst du deiner \nPrüfungsordnung entnehmen.'; + + @override + String get faqeECampus => 'eCampus'; + + @override + String get faqeECampusText => 'eCampus ist ein zentrales Verwaltungsportal für Studenten. Dort kann nach der Anmedlung das Semesterticket abgerufen \nwerden oder auch der zu zahlende Semesterbeitrag eingesehen werden. Weitere Informationen findne sich unter \n\nhttps://www.it-services.ruhr-uni-bochum.de/services/ecampus.html.de'; + + @override + String get faqECTS => 'ECTS'; + + @override + String get faqECTSText => 'Das „European Credit Transfer System“ (Europäisches System zur Übertragung und Akkumulierung von Studienleistungen), \nkurz ECTS, bietet die Möglichkeit, die an einer Hochschuleinrichtung erworbenen Leistungspunkte auf ein Studium an \neiner anderen Hochschuleinrichtung anzurechnen. ECTS-Leistungspunkte entsprechen dem Lernen auf der Grundlage von \ndefinierten Lernzielen und dem damit verbundenen Arbeitspensum. Es soll Studierende bei einem Umzug von einem Land \nin ein anderes behilflich sein und sie dabei unterstützen, ihre akademischen Qualifikationen und Studienzeiten im \nAusland anerkennen zu lassen. Mehr Infos findet ihr unter: \n\nhttps://education.ec.europa.eu/de/europaeisches-system-zur-uebertragung-und-akkumulierung-von-studienleistungen-ects'; + + @override + String get faqInclusion => 'Inklusion'; + + @override + String get faqInclusionText => 'Unter Inklusion verstehen wir die Teilhabe aller Menschen an der Gesellschaft. Konnotiert ist dieser Begriff \ninsbesondere durch die Berücksichtigung benachteiligter Personengruppen, denen eine soziale Ungleichheit und mangelnde \nChancengleichheit infolge einer studienerschwerenden gesundheitlichen Beeinträchtigung vorausgeht. Wir an der RUB sind \nbestrebt die Chancen und das Recht auf Bildung für alle Menschen gleich zu gestalten. An der RUB gibt es diverse Initiativen, \ndie euch in diesen Belangen mit Rat und Tat zu Seite stehen. Unser „Autonomes Referat für Menschen mit Behinderungen und \nsämtlichen Beeinträchtigungen“ ist hierzu neben dem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure \nerste Anlaufstelle. Neu ist das Förderprojekt „Inklusive Hochschule“, das sich dem Ziel verschrieben hat, Studierenden \nmit Behinderung oder chronischer Erkrankung die gleichberechtigte Teilhabe am Studium zu ermöglichen. Dorthin könnt \nIhr Euch auch mit Kritik, Lob und Euren Wünschen zum Thema Inklusion an der RUB wenden (z.B. per Mail an \ninklusion@rub.de). Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion sind Informationen \nzum BZI für euch aufgelistet. Auch die zentrale Studienberatung (ZSB) kann euch eine erste Hilfestellung in diesen \nBelangen geben.'; + + @override + String get faqLabInternships => 'Labor-Praktika'; + + @override + String get faqLabInternshipsText => 'Das Absolvieren von Labor-Praktika wird vor allem in naturwissenschaftlichen und ingenieurswissenschaftlichen \nStudiengängen sowie in der Medizin von dir erwartet. Es werden vorbereitende Einführungsveranstaltungen und Sicherheitsbelehrungen \nangeboten. Außerdem musst du weitere Anforderungen erfüllen. Diese kannst du auf den Webseiten der Lehrstühle erfahren.'; + + @override + String get faqCompensation => 'Nachteilsausgleich'; + + @override + String get faqCompensationText => 'Ein „Nachteilsausgleich“ bezeichnet im sozialrechtlichen Sinne die Ansprüche auf Hilfe und Ausgleich, die einem \njeden Studierenden mit Beeinträchtigungen unter bestimmten Voraussetzungen zustehen. Umfasst werden hinsichtlich \ndes Studiums an der RUB dabei Lehr- und Prüfungsbedingungen des jeweiligen Studiengangs. Neben der Verlängerung \nder Schreibzeit bei Klausuren können insbesondere flexible Pausenregelungen, die Notwendigkeit bestimmter technischer, \nelektronischer oder sonstiger apparativer Hilfen sowie einer Veränderung der Arbeitsplatzorganisation berücksichtigt \nwerden. Unser „Autonomes Referat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ ist hierzu neben \ndem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure erste Anlaufstelle. Hier erhaltet ihr \nBeratungsangebote und eine erste Hilfe und Information zu euren Möglichkeiten an der RUB.'; + + @override + String get faqOptional => 'Optionalbereich'; + + @override + String get faqOptionalText => 'Neben den Lehrveranstaltungen deines spezifischen Bachelor-Studienganges musst du zudem eine gewisse Anzahl von Kursen \nbelegen, in denen der Erwerb von fächerübergreifenden Kenntnissen und Kompetenzen im Vordergrund steht. Diese kannst \ndu weitestgehend nach Interesse aus verschiedenen geistes-, gesellschafts- und naturwissenschaftlichen Bereichen auswählen. \nZudem erhältst du Einblicke in Fremdsprachen, Präsentations- und Kommunikationstechniken, Informationstechnologien \nund interdisziplinäre oder schul- und unterrichtsbezogene Module. \nhttps://rub.de/optionalbereich/'; + + @override + String get faqExamWork => 'Prüfungsleistungen'; + + @override + String get faqExamWorkText => 'Welche Leistungen von dir im Rahmen einer Lehrveranstaltung erbracht werden müssen kannst du dem Modulhandbuch deines \nStudienfaches, dem Vorlesungsverzeichnis oder eCampus entnehmen. Es gibt sowohl benotete als auch unbenotete \nVeranstaltungen. Die meisten Prüfungsleistungen bestehen aus Klausuren, Referaten und/oder Hausarbeiten.'; + + @override + String get faqExamRegulations => 'Prüfungsordnungen'; + + @override + String get faqExamRegulationsText => 'In der Prüfungsordnung deines Studienganges sind diejenigen Prüfungsleistungen aufgeführt, die du für deinen Abschluss \nerbringen musst. Auch ist dort geregelt, ob und wie oft du eine nicht bestandene Prüfung wiederholen bzw. verschieben \nkannst. Schon allein im Hinblick auf deinen Studienverlauf und deinen Abschluss ist ein Blick in die Prüfungsordnung \ndringend zu empfehlen!'; + + @override + String get faqRoomOfSilence => 'Raum der Stille'; + + @override + String get faqRoomOfSilenceText => 'Der „Raum der Stille“ soll zu Beginn des Wintersemesters am 11.10. eingeweiht werden und religionsübergreifend spirituellen \nBedürfnissen und dem individuellen Gebet Raum geben. Er wird aber auch für Menschen da sein, die aus nicht-religiösen \nGründen die Stille suchen, um etwas für ihre Gesundheit und ihr Wohlbefinden zu tun. Die Anerkennung und Förderung \nreligiöser Vielfalt schafft eine Atmosphäre der gegenseitigen Verbundenheit und Wertschätzung. Der Raum befindet sich \nim Gebäude der Mensa auf der Ebene der Roten Beete.'; + + @override + String get faqSemesterTicket => 'Semesterticket'; + + @override + String get faqSemesterTicketText => 'Der Geltungsbereich des Semestertickets erstreckt sich auf den gesamten VRR-Bereich und mittlerweile auch nach Venlo. \nZudem ist das Ticket in ganz NRW gültig. Beachte hierbei, dass es nur ausgedruckt oder per PDF mit einem amtlichen \nLichtbildausweis (Perso oder Reisepass) gültig ist. Das Ticket kann über eCampus abgerufen werden.\nFür einen Aufschlag von 12,33 € kannst du dein Semesterticket zu einem Deutschlandticket aufwerten. Beachte, dass\ndu bei Nutzung des Deutschlandtickets, den QR-Code des Deutschlandtickets, dein Semesterticket und ein Lichtbildausweis\nmitführen musst. \nBuchung/Infos'; + + @override + String get faqSozialbeitrag => 'Sozialbeitrag'; + + @override + String get faqSozialbeitragText => 'Der Sozialbeitrag ist ein von jedem Studierenden für jedes Semester erneut zu entrichtender Pflichtbeitrag. \nDer Betrag beläuft sich im Sommersemester 2023 auf insgesamt 362,62 €. \nEnthalten sind 120 € für das Akademische Förderungswerk (AKAFÖ), welches z.B. für die Mensa und Wohnheime zuständig \nist, 220,02 € (regulär) für das Semesterticket sowie 20,1 € für die Studierendenschaft der RUB (AStA).'; + + @override + String get faqStudentSecretariat => 'Studierendensekretariat'; + + @override + String get faqStudentSecretariatText => 'Das Studierendensekretariat (Gebäude SSC, Ebene 0, Raum 229) sowie die Infopoints, die über den Campus verteilt \nsind, sind Anlaufstellen für Studierende zur Information rund um die Organisation des Studiums. Für weitere \nInformationen und den einzelnen Standorten verweisen wir auf folgende Links: \nStandorte und \nStudierendensekretariat'; + + @override + String get faqTeamspeak => 'Teamspeak'; + + @override + String get faqTeamspeakText => 'Der Teamspeak-Server des AStA (TS³) bietet zu Zeiten von Corona eine persönliche Kontaktmöglichkeit des AStA zur \nStudierendenschaft. Meldet euch hierzu einfach unter \"AStARUB\" an.'; + + @override + String get faqUNIC => 'UNIC'; + + @override + String get faqUNICText => 'Die Ruhr-Universität Bochum ist Teil des internationalen Universitätskonsortiums UNIC - „European University of \nPost-Industrial Cities“. Es ist ein Verbund von acht Universitäten, der sich der Förderung von studentischer Mobilität \nund gesellschaftlicher Integration widmet. Mit der Schaffung einer europäischen Universität soll der Austausch und \ndie Kooperation von Lehre, Forschung und Transfer gesteigert werden. Studierende, Forschende, Lehrende und das Personal \naus der Verwaltung sollen von den Möglichkeiten eines europäischen Campus profitieren. Zu UNIC gehören neben der RUB \ndie Universitäten aus Bilbao, Cork, Istanbul, Liège, Oulu, Rotterdam und Zagreb.'; + + @override + String get faqEvents => 'Veranstaltungen'; + + @override + String get faqEventsText => 'Die Veranstaltungen deines Studienganges können sich von denen anderer Studienfächer unterscheiden. Die gängigsten \nFormen und Bezeichnungen haben wir für euch aufgeführt. Vorlesungen sind dadurch gekennzeichnet, dass ein:e Dozierende:r \nmeistens frontal oder unter Einbeziehung des oft großen Auditoriums den Stoff vermittelt. Arbeitsgemeinschaften, \nÜbungen, Tutorien und Seminare sind in der Regel auf eine geringere Anzahl an Teilnehmer:innen begrenzt. In diesen \nsteht oftmals das Erlernen der wissenschaftlichen Arbeitsweise des Studienganges im Vordergrund. Tutorien zeichnen \nzudem aus, dass sie von erfahrenen Studierenden geführt werden und den Übergang von der Schule zur Universität \nerleichtern sollen. Welche Leistungen du erbringen musst, hängt auch hier von deiner Studienordnung ab. Falls du \ndeine Dozierenden \"bewerten\" möchtest, die Didaktik nicht angemessen findest oder eine Meinung zur Digitalisierung \nabgeben möchtest, benutze den Melder des AStAs auf der Homepage: \n\nhttps://asta-bochum.de/melder-fuer-probleme-mit-digitaler-lehre/'; + + @override + String get faqAccomodation => 'Wohnungen'; + + @override + String get faqAccomodationText => 'Für alle Studierende, die nicht mehr zu Hause wohnen möchten oder denen dieses aufgrund eines studienbedingten \nOrtswechsels nicht mehr möglich ist, stellt sich zwangsläufig die Frage wo sie eine neue Bleibe finden. Abhilfe \nkönnen die 21 Wohnheime des Akademischen Förderungswerkes (AKAFÖ) schaffen. Diese sind auf studentisches Wohnen \nausgerichtet und in der Nähe der RUB angesiedelt. Es gibt sowohl die Möglichkeit in Apartments oder Einzelzimmern \nauf einer Gemeinschaftsetage als auch in Wohngemeinschaften zu leben. Zudem gibt es Wohnheime in privater \nTrägerschaft. Doch auch abseits von Wohnheimen ist der Wohnungsmarkt in Bochum nicht so belastet wie in anderen \nUniversitätsstädten, sodass du in der Umgebung Bochums leicht eine passende Wohnung oder eine WG finden wirst. \nAuch dabei bietet dir der AStA gerne eine Orientierungshilfe. AStA Wohnen findet sich unter:\nhttps://akafoe.de/wohnen bzw. \nhttps://asta-bochum.de/wohnungsboerse'; + + @override + String get faqZoom => 'Zoom'; + + @override + String get faqZoomText => 'Zoom stellt eine Möglichkeit dar, virtuell an Veranstaltungen teilzunehmen. Welche Plattformen eure Dozierenden \npräferieren, erfahrt ihr von eurer Fakultät. Informationen zur Teilnahme und Erstellung einer Zoom Videokonferenz \nfindet ihr unter \nhttps://it-services.ruhr-uni-bochum.de/bk/zoom.html.de'; + + @override + String get faqEmergencyNumber => 'Zentrale Notrufnummer RUB'; + + @override + String get faqEmergencyNumberText => 'Die Ruhr-Universität verfügt über eine Leitwarte, die 24 Stunden besetzt und über die Nummer durchgehend erreichbar \nist. Bei Notfällen alarmiert sie Feuerwehr, Notarzt oder Polizei und zuständige Stellen innerhalb der Universität. \nSpeichert euch die Notruf-Nummer am besten in euer Handy ein: 0234 3223333'; + + @override + String get balanceMultipleTags => 'Mehrere NFC-Tags gefunden! Versuche es noch einmal.'; + + @override + String get balanceIOSScanCard => 'Scanne deine Karte.'; + + @override + String get balanceMensaBalance => 'Mensa Guthaben'; + + @override + String get balanceBalance => 'Guthaben: '; + + @override + String get balanceLastTransaction => 'Letzte Abbuchung: '; + + @override + String get balanceScanCard => 'Karte scannen'; + + @override + String get balanceScanCardDetailed => 'Halte deinen Studierendenausweis an dein Smartphone, um ihn zu scannen.'; + + @override + String get balanceNFCOff => 'NFC deaktiviert'; + + @override + String get balanceNFCOffDetailed => 'Um dein AKAFÖ Guthaben auslesen zu können, muss NFC aktiviert sein.'; + + @override + String get balanceLastBalance => 'Letztes Guthaben: '; + + @override + String get balanceLastScanned => 'Letzte gescannte Abbuchung: '; + + @override + String get ticketLoginLoginID => 'RUB LoginID'; + + @override + String get ticketLoginPasswort => 'RUB Passwort'; + + @override + String get ticketLoginLogin => 'Login'; + + @override + String get ticketLoginBothFieldsError => 'Bitte fülle beide Felder aus!'; + + @override + String get ticketLoginInternetError => 'Überprüfe deine Internetverbindung!'; + + @override + String get ticketLoginWrongDataError => 'Falsche LoginID und/oder Passwort!'; + + @override + String get ticketLoginLoadingError => 'Fehler beim Laden des Tickets!'; + + @override + String get ticketLoginEncryptedInfo => 'Deine Daten werden verschlüsselt auf deinem Gerät gespeichert und nur bei der Anmeldung an die RUB gesendet.'; + + @override + String get walletPageWallet => 'Wallet'; + + @override + String get walletPageBalance => 'Mensa Guthaben'; + + @override + String get walletPageCampusABC => 'Campus ABC'; + + @override + String get walletPageComingInFuture => 'Dieser Bereich wird in zukünftigen Versionen stetig ergänzt und um nützliche Hilfen in die App zu integrieren.'; + + @override + String get possibleDeviationsNotice => 'Abweichungen möglich! Bitte beachte die Aushänge vor Ort.'; } diff --git a/lib/l10n/l10n_en.dart b/lib/l10n/l10n_en.dart index 9e8458d8..e44a39ca 100644 --- a/lib/l10n/l10n_en.dart +++ b/lib/l10n/l10n_en.dart @@ -118,4 +118,571 @@ class AppLocalizationsEn extends AppLocalizations { @override String get navMore => 'More'; + + @override + String get navBarCalendar => 'Calendar'; + + @override + String get firebaseDecisionPopup => 'To show you notifactions about spontaneous Events and Dates around campus, we currently use the \nGoogle service Firebase.\n\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'; + + @override + String get firebaseDecisionPopupSlim => 'To show you notifactions about spontaneous Events and Dates around campus, \nwe currently use the Google service Firebase.\nIf that is a concern to you, we will respect that.\nWe plan to provide an alternative starting in January.'; + + @override + String get firebaseDecisionAccept => 'Yes, I don\'t mind.'; + + @override + String get firebaseDecisionDecline => 'No, I don\'t want that.'; + + @override + String get chooseStudyProgram => 'Choose your study program.'; + + @override + String get onboardingAppName => 'Campus App'; + + @override + String get onboardingPresentedBy => 'Presented by your AStA'; + + @override + String get onboardingLanguage => 'Language'; + + @override + String get onboardingLanguageDetailed => 'Choose your preferred language.'; + + @override + String get onboardingStudyProgram => 'Study Program'; + + @override + String get onboardingStudyProgramDetailed => 'Choose your study program to see curated events and news.'; + + @override + String get onboardingPrivacy => 'Privacy'; + + @override + String get onboardingNotifications => 'Activate push notifications'; + + @override + String get onboardingConfirm => 'Yes, I agree'; + + @override + String get onboardingDeny => 'No, I do not agree'; + + @override + String get onboardingTheme => 'Theme'; + + @override + String get onboardingThemeDescription => 'Contrast-rich or subdued. Day or Night.\nChoose your design.'; + + @override + String get onboardingThemeSystem => 'System'; + + @override + String get onboardingThemeLight => 'Light'; + + @override + String get onboardingThemeDark => 'Dark'; + + @override + String get onboardingFeedback => 'Feedback'; + + @override + String get allergens => 'Allergens'; + + @override + String get allergensAvoid => 'Avoid'; + + @override + String get allergensGluten => 'Gluten'; + + @override + String get allergensWheat => 'Wheat'; + + @override + String get allergensRye => 'Rye'; + + @override + String get allergensBarley => 'Barley'; + + @override + String get allergensOats => 'Oats'; + + @override + String get allergensSpelt => 'Spelt'; + + @override + String get allergensKamut => 'Kamut'; + + @override + String get allergensCrustaceans => 'Crustaceans'; + + @override + String get allergensEggs => 'Eggs'; + + @override + String get allergensFish => 'Fish'; + + @override + String get allergensPeanuts => 'Peanuts'; + + @override + String get allergensSoybeans => 'Soybeans'; + + @override + String get allergensMilk => 'Milk'; + + @override + String get allergensNuts => 'Nuts'; + + @override + String get allergensAlmond => 'Almond'; + + @override + String get allergensHazelnut => 'Hazelnut'; + + @override + String get allergensWalnut => 'Walnut'; + + @override + String get allergensCashewnut => 'Cashewnut'; + + @override + String get allergensPecan => 'Pecan'; + + @override + String get allergensBrazilNut => 'BrazilNut'; + + @override + String get allergensPistachio => 'Pistachio'; + + @override + String get allergensMacadamia => 'Macadamia'; + + @override + String get allergensCelery => 'Celery'; + + @override + String get allergensMustard => 'Mustard'; + + @override + String get allergensSesame => 'Sesame'; + + @override + String get allergensSulfur => 'Sulfur'; + + @override + String get allergensLupins => 'Lupins'; + + @override + String get allergensMolluscs => 'Molluscs'; + + @override + String get mondayShort => 'Mon'; + + @override + String get tuesdayShort => 'Tue'; + + @override + String get wednesdayShort => 'Wed'; + + @override + String get thursdayShort => 'Thu'; + + @override + String get fridayShort => 'Fri'; + + @override + String get saturdayShort => 'Sat'; + + @override + String get sundayShort => 'Sun'; + + @override + String get mealPreferences => 'Preferences'; + + @override + String get preferencesExclusive => 'Exclusively'; + + @override + String get preferencesVegetarian => 'Vegetarian'; + + @override + String get preferencesVegan => 'Vegan'; + + @override + String get preferencesHalal => 'Halal'; + + @override + String get preferencesAvoid => 'Avoid'; + + @override + String get preferencesAlcohol => 'Alcohol'; + + @override + String get preferencesFish => 'Fish'; + + @override + String get preferencesPoultry => 'Poultry'; + + @override + String get preferencesLamb => 'Lamb'; + + @override + String get preferencesBeef => 'Beef'; + + @override + String get preferencesPork => 'Pork'; + + @override + String get preferencesGame => 'Game'; + + @override + String get mensaPageTitle => 'Dining Hall'; + + @override + String get mensaPagePreferences => 'Preferences'; + + @override + String get mensaPageAllergens => 'Allergens'; + + @override + String get imprintPageLegalNotice => 'Legal Notice'; + + @override + String get imprintPageLegalNoticeText => '

Inhaltlich Verantwortliche gemäß § 10 Absatz 3 MDStV:

\nStudierendenschaft der Ruhr-Universität Bochum
\nAllgemeiner Studierendenausschuss
\nSH 0/11
\nUniversitätsstr. 150
\n44780 Bochum
\n
\nInhaltlich Verantwortlich:
\nHanife Demir (Vorsitzende)
\n
\nVertretungsberechtigter Vorstand:
\nRon Agethen
\nEren Yavuz
\nElisabeth Tilbürger
\nHenry Herrmann
\nAli Sait Kücük
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\nInternet: https://www.asta-bochum.de
\n
\nDie Studierendenschaft ist eine Teilkörperschaft öffentlichen Rechts.\n
\n

Inhalte


\nDie Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. \nAls Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. \nNach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. \nVerpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt.
Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. \nBei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\n

Haftungshinweis

\nUnser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. \nDeshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. \nFür die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. \nDie verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. \nRechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. \nEine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. \nBei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.'; + + @override + String get morePageTitle => 'Settings & More'; + + @override + String get morePageAstaA => 'AstA'; + + @override + String get morePageKulturCafe => 'KulturCafé'; + + @override + String get morePageBikeWorkshop => 'Bike Workshop'; + + @override + String get morePageRepairCafe => 'Repair Café'; + + @override + String get morePageSocialCounseling => 'Social Counseling'; + + @override + String get morePageDancingGroup => 'Dancing Group'; + + @override + String get morePageGamingHub => 'Gaming Hub'; + + @override + String get morePageUsefulLinks => 'Useful Links'; + + @override + String get morePageRubMail => 'RubMail'; + + @override + String get morePageMoodle => 'Moodle'; + + @override + String get morePageECampus => 'eCampus'; + + @override + String get morePageFlexNow => 'FlexNow'; + + @override + String get morePageUniSports => 'University Sports'; + + @override + String get morePageOther => 'Other'; + + @override + String get morePageSettings => 'Settings'; + + @override + String get morePagePrivacy => 'Privacy'; + + @override + String get morePageLegalNotice => 'Legal Notice'; + + @override + String get morePageUsedResources => 'Used Resources'; + + @override + String get morePageFeedback => 'Feedback'; + + @override + String get privacyPolicyPrivacy => 'Datenschutz'; + + @override + String get privacyPolicyText => '

Verantwortliche Stelle im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:


\n
\nAStA an der Ruhr-Universität Bochum
\nPaul Hoffstiepel (Vorsitzender)
\n
\nStudierendenhaus 0/11
\nUniversitätsstr. 150
\n44801 Bochum
\n
\nTelefon: +49 234 3222416
\nE-Mail: info@asta-bochum.de
\n
\nSie können Sie sich jederzeit mit einer Beschwerde an die zuständige Aufsichtsbehörde wenden. Diese ist:\n
\nLandesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen
\nPostfach 20 04 44
\n40102 Düsseldorf
\nTel.: +49 211 384240
\nFax: +49 211 3842410
\nE-Mail: poststelle@ldi.nrw.de
\nInternet: poststelle@ldi.nrw.dehttps://ldi.nrw.de
\n
\n

Datenverarbeitung durch die Nutzung der Campus App


\nBei der Nutzung der Campus App werden Daten erhoben und ausgetauscht, die zur Verwendung des Angebotes erforderlich sind. Dies sind:
\n- IP-Adresse
\n- Verwendetes Betriebssystem
\n- Uhrzeit der Serveranfrage
\n- Übertragene Datenmenge
\n- Standortdaten
\n
\nDiese Daten werden bei der Nutzung der Campus App ebenfalls in Log-Dateien über den Zeitpunkt des Besuches hinaus auf einem Server, welcher durch den AStA betrieben wird und ggf. auf einem Server einer besuchten Seite gespeichert.
\nUnsere App stellt Neuigkeiten verschiedener Internetseiten bereit, die nicht von der verfassten Studierendenschaft der Ruhr-Universität Bochum betrieben werden. \nEin Einfluss auf die Verarbeitung der dort erhobenen Daten besteht nicht. \nDie oben genannten Nutzungsdaten werden dabei an folgende Anbieter übermittelt:
\n- ruhr-uni-bochum.de, Universitätsstraße 150, 44801 Bochum. Datenschutzerklärung: https://www.ruhr-uni-bochum.de/de/datenschutz
\n
\nBei der Installation der App werden Benutzer:innen danach gefragt, ob sie Push Notifications zu bestimmten Themen bekommen möchten. \nWenn Nutzer:innen in den Bezug von Push Notifications Einwilligen werden personenbezogene Daten wie z.B. IP Adresse und die gewählten Themen an Server der Firma Google Inc. übertragen. \nDie Daten werden die Daten ohne angemessenes Schutzniveau im Sinne von Art 46 DSGVO an Server von Google in die USA übertragen. \nSiehe dazu auch „Schrems II-Urteil“ (Az.: C-311/18 vom 16.07.2020) des EuGH. \nEs besteht das Risiko, dass US-Sicherheitsbehörden auf die Daten zugreifen ohne dass Betroffene darüber Informiert werden und ohne dass Rechtsbehelfe eingelegt werden können. \nDie Übermittlung erfolgt daher nur auf der ausdrücklichen Einwilligung nach Art. 49 Abs 1 a der DSGVO.\n
\nDie Einwilligung kann jederzeit in der Campus App unter dem Menupunkt „Mehr“, im Untermenü „Einstellungen“ widerrufen werden.
\n
\nWeitere Informationen in den Datenschutzhinweisen zu Firebase von Google: https://firebase.google.com/support/privacy
\n„Schrems II“ – Urteil des EuGH: https://curia.europa.eu/juris/liste.jsf?language=de&num=C-311/18
\n
\nDie Campus App enthält Links zu Webseiten anderer Anbieter.
\nWir haben keinen Einfluss darauf, dass diese Anbieter die Datenschutzbestimmungen einhalten.
\nEine permanente Überprüfung der Links ist ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar.
\nBei Bekanntwerden von Rechtsverstößen werden betroffene Links unverzüglich gelöscht.
\n
\nBei der Nutzung des Raumfinders der Campus App, werden die aktuellen Standortdaten des Endgerätes verabeitet und bis zum Schließen der App zwischengespeichert.
\nEine Einwilligung wird hierfür vom Betriebssystem eingeholt und kann jederzeit durch den Nutzer widerrufen werden.
\n
\nBei der Nutzung der Funktion zum Anzeigen des Semestertickets werden die RUB Logindaten (LoginID, Passwort) lokal auf dem Gerät gespeichert, dies ist zum Abrufen des Tickets unabdingbar. Eine Übermittlung der Daten erfolgt nur an den offizielen SSO Provider der RUB.\n
\n

Zweck der Datenverarbeitung


\nDie Verarbeitung der personenbezogenen Daten der Nutzer ist für den ordnungsgemäßen Betrieb der App erforderlich.
\nDabei ist es unerlässlich, dass beispielsweise beim Abrufen der Speisepläne durch einen Server des AStAs personenbezogene Daten erhoben werden.
\nDes Weiteren werden beim Laden der Artikel im Newsfeed, Daten an die oben genannten Seiten übermittelt.
\n
\n

Löschung bzw. Sperrung der Daten


\nNach den Grundsätzen der Datenvermeidung und der Datensparsamkeit speichern wir alle Daten, die wir für die in dieser Datenschutzerklärung genannten bzw. anderen rechtlich vorgeschriebenen Gründe erhoben haben nur so lange, wie dies für den jeweiligen Zweck notwendig ist. Nach Wegfall des Zweckes bzw. nach Ablauf der Fristen werden die Daten entsprechend der gesetzlichen Vorgaben gelöscht, vernichtet oder gesperrt.
\n
\nGesetzliche Grundlagen für die Aufbewahrungsfristen werden in der Abgabenordnung §§ 147 und 257 geregelt.
\n
\n

Rechtsgrundlagen (nach Art. 13 DSGVO)


\nWir speichern Ihre Daten nur lange, wie es notwendig ist. Wir verarbeiten Ihre Daten auf den folgenden Rechtsgrundlagen:
\n
\nArtikel 6 Absatz 1 und Artikel 7 DSGVO für die Erfüllung von Leistungen und rechtlicher Verpflichtungen.
\nArtikel 28 DSGVO für die Verarbeitung von personenbezogen Daten im Auftrag.
\nNach Ablauf der Fristen werden Ihre Daten routinemäßig gelöscht.
\n
\n

Ihre Rechte


\nDie Datenschutzgrundverordnung räumt Ihnen folgende Rechte ein:
\n
\nVerlangen einer Bestätigung über die Verarbeitung Sie betreffender personenbezogener Daten (Art. 15)
\nVerlangen einer Kopie der Daten (Art. 15)
\nRecht auf Korrektur unrichtiger Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Vervollständigung unvollständiger, Sie betreffender personenbezogener Daten (Art. 16)
\nRecht auf Löschung Sie betreffender personenbezogener Daten („Recht auf Vergessenwerden“ Art. 17)
\nRecht auf Einschränkung Sie betreffender personenbezogener Daten (Art. 18)
\nRecht auf die Übertragung der Daten an einen Dritten (Art. 20)
\nBeschwerde bei der oben genannten Aufsichtsbehörde (Art. 77)
\nErteilte Einwilligungen können Sie mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3)
\nRecht auf Widerspruch der Verarbeitung Sie betreffender personenbezogener Daten (Art. 21)
\nSollten Sie Fragen zu einzelnen Punkten haben oder eines Ihrer Rechte ausüben wollen, wenden Sie sich an die oben angegebene verantwortliche Stelle oder an unseren Datenschutzbeauftragten unter datenschutz@asta-bochum.de.
\n
'; + + @override + String get settingsSettings => 'Settings'; + + @override + String get settingsHeadlineTheming => 'Theming'; + + @override + String get settingsSystemDarkmode => 'System Dark Mode'; + + @override + String get settingsDarkmode => 'Dark Mode'; + + @override + String get settingsHeadlineCoreData => 'Core Data'; + + @override + String get settingsStudyProgram => 'Study Program'; + + @override + String get settingsLanguage => 'Language'; + + @override + String get settingsStudyProgramChange => 'Change'; + + @override + String get settingsHeadlineBehaviour => 'Behaviour'; + + @override + String get settingsUseExternalBrowser => 'Use External Browser for Links'; + + @override + String get settingsTextSize => 'Use System Text Size'; + + @override + String get settingsTicketFullscreen => 'Use Full-Screen for Semesterticket QR-Code'; + + @override + String get settingsHeadlinePrivacy => 'Privacy'; + + @override + String get settingsGoogleServices => 'Google Services for Notifications'; + + @override + String get settingsHeadlinePushNotifications => 'Push-Notifications'; + + @override + String get settingsPushNotificationsEvents => 'Push-Notifications for saved Events'; + + @override + String get controlRoomButton => 'RUB Control Room'; + + @override + String get controlRoomButtonDescription => 'Always in service, for any emergency'; + + @override + String get walletAddStudentTicket => 'Add your semester ticket'; + + @override + String get faqCampusABC => 'Campus ABC'; + + @override + String get faqMandatoryAttendance => 'Anwesenheitspflicht'; + + @override + String get faqMandatoryAttendanceText => 'Unabhängig von digitalen Semestern, was historisch betrachtet eine Ausnahmefallregelung an der RUB darstellt, \ngilt in einigen Ausnahmefällen und bestimmten Kursformaten eine Anwesenheitspflicht. Die Anwesenheitspflicht, \ndie früher bestand, ist mit Inkrafttreten des Hochschulzukunftsgesetzes NRW zum Oktober 2014 abgeschafft worden. \nDanach ist es grundsätzlich verboten die Erbringung und Eintragung einer Leistung von der Anwesenheit in einer \nLehrveranstaltung abhängig zu machen. Davon ausgenommen sind jedoch vor allem Exkursionen, Sprachkurse, Praktika, \npraktische Übungen und vergleichbare Lehrveranstaltungen. Sollte in einer deiner Veranstaltungen trotz des Verbotes \neine Anwesenheitspflicht verlangt werden, kannst du dich hier melden: \nhttps://asta-bochum.de/anwesenheitspflicht'; + + @override + String get faqAStAMessenger => 'AStA-Messenger'; + + @override + String get faqAStAMessengerText => 'Ab sofort sind wir unter der Mobilfunknummer +49 152 22614240 für \nallgemeine Fragen bei Whatsapp erreichbar.'; + + @override + String get faqAccessibility => 'Barrierefreiheit'; + + @override + String get faqAccessibilityText => 'Barrierefreiheit bedeutet die Umwelt und Infrastruktur in dem Sinne zu gestalten, dass sie auch von Menschen mit \nBeeinträchtigungen ohne zusätzliche Hilfe in Anspruch genommen werden kann. Das Studium für Menschen mit \nBeeinträchtigungen ist in vielerlei Hinsicht erschwert. Die RUB besitzt jedoch Initiativen den Studienalltag so \nweit wie möglich zu vereinfachen und jeder bzw. jedem Studierenden zugänglich zu machen. Unserer „Autonomes \nReferat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ und das BZI des AkaFö sind dabei eure \nerste Anlaufstelle für einen Einblick in die Angebote. So bietet die Universitätsbibliothek (UB) z.B. einen \nService zur Literaturbeschaffung an, um Barrierefreiheit zu ermöglichen. Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion \nsind weitergehende Informationen für euch aufgelistet.'; + + @override + String get faqLibraries => 'Bibliotheken'; + + @override + String get faqLibrariesText => 'Das Bibliothekssystem der RUB setzt sich aus der Universitätsbibliothek (UB), dem zentralen Gebäude des Campus \nund den in den Gebäuden verteilten Fachbibliotheken zusammen. Diese bieten dir einen Raum zum Lernen und \nRecherchieren für Hausarbeiten und Referate oder zum Lernen für Klausuren. Für jede einzelne Bibliothek bestehen \ngesonderte Regeln, was eine mögliche Ausleihe und die Öffnungszeiten betrifft. Die UB ist in den Zeiten von MO-FR: \n8.00 bis 23.00 Uhr und SA-SO: von 10.00 bis 19.00 Uhr geöffnet. Die UB stellt eine große Zahl an Arbeitsplätzen mit \nund ohne PC bereit. Für die Benutzung der Schließfächer ist eine 2€-Münze erforderlich! Erfahrt alle auf Corona \nbezogenen und alle aktualisierten Informationen auf der Internetseite der UB. Im Servicereferat des AStA kannst du \nauch kostenfrei einen AStA-Chip erhalten, der in die UB-Schließfächer passt. Eine Auflistung aller Fachbibliotheken \nund weitere Informationen: https://www.ub.rub.de'; + + @override + String get faqCreditPoints => 'Credit Points'; + + @override + String get faqCreditPointsText => 'Credit Points (CP) werden für jede erbrachte Prüfungsleistung vergeben. Du brauchst eine gewisse Anzahl von CP, \num Module abzuschließen und dich letztlich für deine Abschlussprüfungen anzumelden. Dabei soll 1 CP einem \nArbeitsaufwand von 30 Semesterwochenstunden entsprechen. Dieser umfasst die Vor- und Nachbereitung sowie die \nWochenstunden der Veranstaltung. Wie viele CP für eine Lehrveranstaltung vergeben werden kannst du deiner \nPrüfungsordnung entnehmen.'; + + @override + String get faqeECampus => 'eCampus'; + + @override + String get faqeECampusText => 'eCampus ist ein zentrales Verwaltungsportal für Studenten. Dort kann nach der Anmedlung das Semesterticket abgerufen werden oder auch der zu zahlende Semesterbeitrag eingesehen werden. Weitere Informationen findne sich unter https://www.it-services.ruhr-uni-bochum.de/services/ecampus.html.de'; + + @override + String get faqECTS => 'ECTS'; + + @override + String get faqECTSText => 'Das „European Credit Transfer System“ (Europäisches System zur Übertragung und Akkumulierung von Studienleistungen), \nkurz ECTS, bietet die Möglichkeit, die an einer Hochschuleinrichtung erworbenen Leistungspunkte auf ein Studium an \neiner anderen Hochschuleinrichtung anzurechnen. ECTS-Leistungspunkte entsprechen dem Lernen auf der Grundlage von \ndefinierten Lernzielen und dem damit verbundenen Arbeitspensum. Es soll Studierende bei einem Umzug von einem Land \nin ein anderes behilflich sein und sie dabei unterstützen, ihre akademischen Qualifikationen und Studienzeiten im \nAusland anerkennen zu lassen. Mehr Infos findet ihr unter: \n\nhttps://education.ec.europa.eu/de/europaeisches-system-zur-uebertragung-und-akkumulierung-von-studienleistungen-ects'; + + @override + String get faqInclusion => 'Inklusion'; + + @override + String get faqInclusionText => 'Unter Inklusion verstehen wir die Teilhabe aller Menschen an der Gesellschaft. Konnotiert ist dieser Begriff \ninsbesondere durch die Berücksichtigung benachteiligter Personengruppen, denen eine soziale Ungleichheit und mangelnde \nChancengleichheit infolge einer studienerschwerenden gesundheitlichen Beeinträchtigung vorausgeht. Wir an der RUB sind \nbestrebt die Chancen und das Recht auf Bildung für alle Menschen gleich zu gestalten. An der RUB gibt es diverse Initiativen, \ndie euch in diesen Belangen mit Rat und Tat zu Seite stehen. Unser „Autonomes Referat für Menschen mit Behinderungen und \nsämtlichen Beeinträchtigungen“ ist hierzu neben dem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure \nerste Anlaufstelle. Neu ist das Förderprojekt „Inklusive Hochschule“, das sich dem Ziel verschrieben hat, Studierenden \nmit Behinderung oder chronischer Erkrankung die gleichberechtigte Teilhabe am Studium zu ermöglichen. Dorthin könnt \nIhr Euch auch mit Kritik, Lob und Euren Wünschen zum Thema Inklusion an der RUB wenden (z.B. per Mail an \ninklusion@rub.de). Auf der Internetseite \nhttps://uni.ruhr-uni-bochum.de/de/inklusion sind Informationen \nzum BZI für euch aufgelistet. Auch die zentrale Studienberatung (ZSB) kann euch eine erste Hilfestellung in diesen \nBelangen geben.'; + + @override + String get faqLabInternships => 'Labor-Praktika'; + + @override + String get faqLabInternshipsText => 'Das Absolvieren von Labor-Praktika wird vor allem in naturwissenschaftlichen und ingenieurswissenschaftlichen \nStudiengängen sowie in der Medizin von dir erwartet. Es werden vorbereitende Einführungsveranstaltungen und Sicherheitsbelehrungen \nangeboten. Außerdem musst du weitere Anforderungen erfüllen. Diese kannst du auf den Webseiten der Lehrstühle erfahren.'; + + @override + String get faqCompensation => 'Nachteilsausgleich'; + + @override + String get faqCompensationText => 'Ein „Nachteilsausgleich“ bezeichnet im sozialrechtlichen Sinne die Ansprüche auf Hilfe und Ausgleich, die einem \njeden Studierenden mit Beeinträchtigungen unter bestimmten Voraussetzungen zustehen. Umfasst werden hinsichtlich \ndes Studiums an der RUB dabei Lehr- und Prüfungsbedingungen des jeweiligen Studiengangs. Neben der Verlängerung \nder Schreibzeit bei Klausuren können insbesondere flexible Pausenregelungen, die Notwendigkeit bestimmter technischer, \nelektronischer oder sonstiger apparativer Hilfen sowie einer Veränderung der Arbeitsplatzorganisation berücksichtigt \nwerden. Unser „Autonomes Referat für Menschen mit Behinderungen und sämtlichen Beeinträchtigungen“ ist hierzu neben \ndem „BZI“ des AkaFö, dem Beratungszentrum zur Inklusion Behinderter, eure erste Anlaufstelle. Hier erhaltet ihr \nBeratungsangebote und eine erste Hilfe und Information zu euren Möglichkeiten an der RUB.'; + + @override + String get faqOptional => 'Optionalbereich'; + + @override + String get faqOptionalText => 'Neben den Lehrveranstaltungen deines spezifischen Bachelor-Studienganges musst du zudem eine gewisse Anzahl von Kursen \nbelegen, in denen der Erwerb von fächerübergreifenden Kenntnissen und Kompetenzen im Vordergrund steht. Diese kannst \ndu weitestgehend nach Interesse aus verschiedenen geistes-, gesellschafts- und naturwissenschaftlichen Bereichen auswählen. \nZudem erhältst du Einblicke in Fremdsprachen, Präsentations- und Kommunikationstechniken, Informationstechnologien \nund interdisziplinäre oder schul- und unterrichtsbezogene Module. \nhttps://rub.de/optionalbereich/'; + + @override + String get faqExamWork => 'Prüfungsleistungen'; + + @override + String get faqExamWorkText => 'Welche Leistungen von dir im Rahmen einer Lehrveranstaltung erbracht werden müssen kannst du dem Modulhandbuch deines \nStudienfaches, dem Vorlesungsverzeichnis oder eCampus entnehmen. Es gibt sowohl benotete als auch unbenotete \nVeranstaltungen. Die meisten Prüfungsleistungen bestehen aus Klausuren, Referaten und/oder Hausarbeiten.'; + + @override + String get faqExamRegulations => 'Prüfungsordnungen'; + + @override + String get faqExamRegulationsText => 'In der Prüfungsordnung deines Studienganges sind diejenigen Prüfungsleistungen aufgeführt, die du für deinen Abschluss \nerbringen musst. Auch ist dort geregelt, ob und wie oft du eine nicht bestandene Prüfung wiederholen bzw. verschieben \nkannst. Schon allein im Hinblick auf deinen Studienverlauf und deinen Abschluss ist ein Blick in die Prüfungsordnung \ndringend zu empfehlen!'; + + @override + String get faqRoomOfSilence => 'Raum der Stille'; + + @override + String get faqRoomOfSilenceText => 'Der „Raum der Stille“ soll zu Beginn des Wintersemesters am 11.10. eingeweiht werden und religionsübergreifend spirituellen \nBedürfnissen und dem individuellen Gebet Raum geben. Er wird aber auch für Menschen da sein, die aus nicht-religiösen \nGründen die Stille suchen, um etwas für ihre Gesundheit und ihr Wohlbefinden zu tun. Die Anerkennung und Förderung \nreligiöser Vielfalt schafft eine Atmosphäre der gegenseitigen Verbundenheit und Wertschätzung. Der Raum befindet sich \nim Gebäude der Mensa auf der Ebene der Roten Beete.'; + + @override + String get faqSemesterTicket => 'Semesterticket'; + + @override + String get faqSemesterTicketText => 'Der Geltungsbereich des Semestertickets erstreckt sich auf den gesamten VRR-Bereich und mittlerweile auch nach Venlo. \nZudem ist das Ticket in ganz NRW gültig. Beachte hierbei, dass es nur ausgedruckt oder per PDF mit einem amtlichen \nLichtbildausweis (Perso oder Reisepass) gültig ist. Das Ticket kann über eCampus abgerufen werden.\nFür einen Aufschlag von 12,33 € kannst du dein Semesterticket zu einem Deutschlandticket aufwerten. Beachte, dass\ndu bei Nutzung des Deutschlandtickets, den QR-Code des Deutschlandtickets, dein Semesterticket und ein Lichtbildausweis\nmitführen musst. \nBuchung/Infos'; + + @override + String get faqSozialbeitrag => 'Sozialbeitrag'; + + @override + String get faqSozialbeitragText => 'Der Sozialbeitrag ist ein von jedem Studierenden für jedes Semester erneut zu entrichtender Pflichtbeitrag. \nDer Betrag beläuft sich im Sommersemester 2023 auf insgesamt 362,62 €. \nEnthalten sind 120 € für das Akademische Förderungswerk (AKAFÖ), welches z.B. für die Mensa und Wohnheime zuständig \nist, 220,02 € (regulär) für das Semesterticket sowie 20,1 € für die Studierendenschaft der RUB (AStA).'; + + @override + String get faqStudentSecretariat => 'Studierendensekretariat'; + + @override + String get faqStudentSecretariatText => 'Das Studierendensekretariat (Gebäude SSC, Ebene 0, Raum 229) sowie die Infopoints, die über den Campus verteilt \nsind, sind Anlaufstellen für Studierende zur Information rund um die Organisation des Studiums. Für weitere \nInformationen und den einzelnen Standorten verweisen wir auf folgende Links: \nStandorte und \nStudierendensekretariat'; + + @override + String get faqTeamspeak => 'Teamspeak'; + + @override + String get faqTeamspeakText => 'Der Teamspeak-Server des AStA (TS³) bietet zu Zeiten von Corona eine persönliche Kontaktmöglichkeit des AStA zur \nStudierendenschaft. Meldet euch hierzu einfach unter \"AStARUB\" an.'; + + @override + String get faqUNIC => 'UNIC'; + + @override + String get faqUNICText => 'Die Ruhr-Universität Bochum ist Teil des internationalen Universitätskonsortiums UNIC - „European University of \nPost-Industrial Cities“. Es ist ein Verbund von acht Universitäten, der sich der Förderung von studentischer Mobilität \nund gesellschaftlicher Integration widmet. Mit der Schaffung einer europäischen Universität soll der Austausch und \ndie Kooperation von Lehre, Forschung und Transfer gesteigert werden. Studierende, Forschende, Lehrende und das Personal \naus der Verwaltung sollen von den Möglichkeiten eines europäischen Campus profitieren. Zu UNIC gehören neben der RUB \ndie Universitäten aus Bilbao, Cork, Istanbul, Liège, Oulu, Rotterdam und Zagreb.'; + + @override + String get faqEvents => 'Veranstaltungen'; + + @override + String get faqEventsText => 'Die Veranstaltungen deines Studienganges können sich von denen anderer Studienfächer unterscheiden. Die gängigsten \nFormen und Bezeichnungen haben wir für euch aufgeführt. Vorlesungen sind dadurch gekennzeichnet, dass ein:e Dozierende:r \nmeistens frontal oder unter Einbeziehung des oft großen Auditoriums den Stoff vermittelt. Arbeitsgemeinschaften, \nÜbungen, Tutorien und Seminare sind in der Regel auf eine geringere Anzahl an Teilnehmer:innen begrenzt. In diesen \nsteht oftmals das Erlernen der wissenschaftlichen Arbeitsweise des Studienganges im Vordergrund. Tutorien zeichnen \nzudem aus, dass sie von erfahrenen Studierenden geführt werden und den Übergang von der Schule zur Universität \nerleichtern sollen. Welche Leistungen du erbringen musst, hängt auch hier von deiner Studienordnung ab. Falls du \ndeine Dozierenden \"bewerten\" möchtest, die Didaktik nicht angemessen findest oder eine Meinung zur Digitalisierung \nabgeben möchtest, benutze den Melder des AStAs auf der Homepage: \n\nhttps://asta-bochum.de/melder-fuer-probleme-mit-digitaler-lehre/'; + + @override + String get faqAccomodation => 'Wohnungen'; + + @override + String get faqAccomodationText => 'Für alle Studierende, die nicht mehr zu Hause wohnen möchten oder denen dieses aufgrund eines studienbedingten \nOrtswechsels nicht mehr möglich ist, stellt sich zwangsläufig die Frage wo sie eine neue Bleibe finden. Abhilfe \nkönnen die 21 Wohnheime des Akademischen Förderungswerkes (AKAFÖ) schaffen. Diese sind auf studentisches Wohnen \nausgerichtet und in der Nähe der RUB angesiedelt. Es gibt sowohl die Möglichkeit in Apartments oder Einzelzimmern \nauf einer Gemeinschaftsetage als auch in Wohngemeinschaften zu leben. Zudem gibt es Wohnheime in privater \nTrägerschaft. Doch auch abseits von Wohnheimen ist der Wohnungsmarkt in Bochum nicht so belastet wie in anderen \nUniversitätsstädten, sodass du in der Umgebung Bochums leicht eine passende Wohnung oder eine WG finden wirst. \nAuch dabei bietet dir der AStA gerne eine Orientierungshilfe. AStA Wohnen findet sich unter:\nhttps://akafoe.de/wohnen bzw. \nhttps://asta-bochum.de/wohnungsboerse'; + + @override + String get faqZoom => 'Zoom'; + + @override + String get faqZoomText => 'Zoom stellt eine Möglichkeit dar, virtuell an Veranstaltungen teilzunehmen. Welche Plattformen eure Dozierenden \npräferieren, erfahrt ihr von eurer Fakultät. Informationen zur Teilnahme und Erstellung einer Zoom Videokonferenz \nfindet ihr unter \nhttps://it-services.ruhr-uni-bochum.de/bk/zoom.html.de'; + + @override + String get faqEmergencyNumber => 'Zentrale Notrufnummer RUB'; + + @override + String get faqEmergencyNumberText => 'Die Ruhr-Universität verfügt über eine Leitwarte, die 24 Stunden besetzt und über die Nummer durchgehend erreichbar \nist. Bei Notfällen alarmiert sie Feuerwehr, Notarzt oder Polizei und zuständige Stellen innerhalb der Universität. \nSpeichert euch die Notruf-Nummer am besten in euer Handy ein: 0234 3223333'; + + @override + String get balanceMultipleTags => 'Multiple NFC-Tags found! Try again.'; + + @override + String get balanceIOSScanCard => 'Scan your card.'; + + @override + String get balanceMensaBalance => 'Mensa Balance'; + + @override + String get balanceBalance => 'Balance: '; + + @override + String get balanceLastTransaction => 'Last Transaction: '; + + @override + String get balanceScanCard => 'Scan Card'; + + @override + String get balanceScanCardDetailed => 'Hold your student ID to your phone to scan it.'; + + @override + String get balanceNFCOff => 'NFC deactivated'; + + @override + String get balanceNFCOffDetailed => 'Your NFC needs to be activated to read your AKAFÖ balance.'; + + @override + String get balanceLastBalance => 'Last Balance: '; + + @override + String get balanceLastScanned => 'Last scanned Transaction: '; + + @override + String get ticketLoginLoginID => 'RUB LoginID'; + + @override + String get ticketLoginPasswort => 'RUB Password'; + + @override + String get ticketLoginLogin => 'Login'; + + @override + String get ticketLoginBothFieldsError => 'Please fill in both fields!'; + + @override + String get ticketLoginInternetError => 'Check your internet connection!'; + + @override + String get ticketLoginWrongDataError => 'Wrong LoginID or Password!'; + + @override + String get ticketLoginLoadingError => 'Error while loading the ticket!'; + + @override + String get ticketLoginEncryptedInfo => 'Your data is encrypted and saved locally. It is only sent to the RUB servers when logging in.'; + + @override + String get walletPageWallet => 'Wallet'; + + @override + String get walletPageBalance => 'Dining Hall Balance'; + + @override + String get walletPageCampusABC => 'Campus ABC'; + + @override + String get walletPageComingInFuture => 'This area will be expanded in future versions to integrate useful guides.'; + + @override + String get possibleDeviationsNotice => 'Deviations possible! Please check the notices on site.'; }