Custom Uploader is a user-friendly file uploading tool that makes it easy for you to transfer files to your preferred hosting service. It is designed to be lightweight and efficient, with a straightforward interface that allows you to upload files quickly and easily. With Custom Uploader, you can upload a variety of different file types, including documents, images, videos, and more. The versatile tool is perfect for anyone who needs a reliable and convenient way to upload files for storage or sharing. Whenever you are a business owner, a student, or a professional, Custom Uploader can help you manage and share your files with ease.
Features:
Easily upload anything to your host of choice (images, videos, documents, etc.) with a simple and easy to use interface.
Easily create multiple uploaders for different hosts, and switch between them.
Upload files from your gallery, camera, or any other app that supports sharing.
Import/Export your uploaders to share them with others, with support for sharex's uploader format.
Comes with built in uploader presets
Comes with a powerful url parser that allows you to extract the url of the uploaded file from the response of the host.
2 |
--------------------------------------------------------------------------------
/.github/workflows/flutter_build_test.yml:
--------------------------------------------------------------------------------
1 | name: Flutter Build Test
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | pull_request:
8 | branches:
9 | - master
10 |
11 | jobs:
12 | build_android:
13 | name: Build Flutter App (Android)
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - name: Checkout repository
18 | uses: actions/checkout@v4
19 |
20 | - name: Set up Flutter
21 | uses: subosito/flutter-action@v2
22 | with:
23 | channel: stable
24 | flutter-version-file: pubspec.yaml
25 |
26 | - name: Get dependencies
27 | run: flutter pub get
28 |
29 | - name: Build APK
30 | run: flutter build apk --release
31 |
32 | - name: Build App Bundle
33 | run: flutter build appbundle --release
34 |
35 | build_ios:
36 | name: Build Flutter App (iOS)
37 | runs-on: macos-13
38 |
39 | steps:
40 | - name: Checkout repository
41 | uses: actions/checkout@v4
42 |
43 | - name: Set up Flutter
44 | uses: subosito/flutter-action@v2
45 | with:
46 | channel: stable
47 | flutter-version-file: pubspec.yaml
48 |
49 | - name: Get dependencies
50 | run: flutter pub get
51 |
52 | - name: Build iOS (no code signing)
53 | run: flutter build ipa --release --no-codesign
54 |
--------------------------------------------------------------------------------
/ios/Share Extension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AppGroupId
6 | $(CUSTOM_GROUP_ID)
7 |
8 | NSExtension
9 |
10 | NSExtensionAttributes
11 |
12 | PHSupportedMediaTypes
13 |
14 | Video
15 | Image
16 |
17 | NSExtensionActivationRule
18 |
19 | NSExtensionActivationSupportsText
20 |
21 | NSExtensionActivationSupportsWebURLWithMaxCount
22 | 20
23 | NSExtensionActivationSupportsImageWithMaxCount
24 | 20
25 | NSExtensionActivationSupportsMovieWithMaxCount
26 | 20
27 | NSExtensionActivationSupportsFileWithMaxCount
28 | 20
29 |
30 |
31 | NSExtensionMainStoryboard
32 | MainInterface
33 | NSExtensionPointIdentifier
34 | com.apple.share-services
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | #platform :ios, '12.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | end
36 |
37 |
38 | post_install do |installer|
39 | installer.pods_project.targets.each do |target|
40 | flutter_additional_ios_build_settings(target)
41 | end
42 | end
43 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at
17 | # https://dart-lang.github.io/linter/lints/index.html.
18 | #
19 | # Instead of disabling a lint rule for the entire project in the
20 | # section below, it can also be suppressed for a single line of code
21 | # or a specific dart file by using the `// ignore: name_of_lint` and
22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
23 | # producing the lint.
24 | rules:
25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
27 |
28 | # Additional information about this file can be found at
29 | # https://dart.dev/guides/language/analysis-options
30 |
--------------------------------------------------------------------------------
/android/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.application")
3 | id("kotlin-android")
4 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
5 | id("dev.flutter.flutter-gradle-plugin")
6 | }
7 |
8 | android {
9 | namespace = "com.nyx.custom_uploader"
10 | compileSdk = flutter.compileSdkVersion
11 | ndkVersion = flutter.ndkVersion
12 |
13 | compileOptions {
14 | sourceCompatibility = JavaVersion.VERSION_11
15 | targetCompatibility = JavaVersion.VERSION_11
16 | }
17 |
18 | kotlinOptions {
19 | jvmTarget = JavaVersion.VERSION_11.toString()
20 | }
21 |
22 | defaultConfig {
23 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
24 | applicationId = "com.nyx.custom_uploader"
25 | // You can update the following values to match your application needs.
26 | // For more information, see: https://flutter.dev/to/review-gradle-config.
27 | minSdk = flutter.minSdkVersion
28 | targetSdk = flutter.targetSdkVersion
29 | versionCode = flutter.versionCode
30 | versionName = flutter.versionName
31 | }
32 |
33 | buildTypes {
34 | release {
35 | // TODO: Add your own signing config for the release build.
36 | // Signing with the debug keys for now, so `flutter run --release` works.
37 | signingConfig = signingConfigs.getByName("debug")
38 | }
39 | }
40 | }
41 |
42 | flutter {
43 | source = "../.."
44 | }
45 |
--------------------------------------------------------------------------------
/android/android.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/ios/Share Extension/Base.lproj/MainInterface.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.yaml:
--------------------------------------------------------------------------------
1 | name: Bug Report
2 | description: Found something in Custom Uploader you weren't expecting? Report it here!
3 | labels:
4 | - bug
5 | assignees:
6 | - SrS2225a
7 | body:
8 | - type: markdown
9 | attributes:
10 | value: |
11 | NOTE: Make sure you are using the latest release and take a moment to check that your issue hasn't been reported before.
12 | - type: textarea
13 | id: description
14 | attributes:
15 | label: Describe The Bug
16 | description: |
17 | A clear and concise description of what the bug is.
18 | validations:
19 | required: true
20 | - type: textarea
21 | id: description-reproduce
22 | attributes:
23 | label: To Reproduce
24 | description: |
25 | Steps to reproduce the behavior
26 | placeholder: |
27 | 1. Go to '...'
28 | 2. Click on '...'
29 | 3. See error
30 | validations:
31 | required: true
32 | - type: textarea
33 | id: expected-behavoir
34 | attributes:
35 | label: Expected Behavior
36 | description: |
37 | A clear and concise description of what you expected to happen.
38 | validations:
39 | required: true
40 | - type: textarea
41 | id: actual-behavior
42 | attributes:
43 | label: Actual Behavior
44 | description: |
45 | Describe what actually happened when you encountered the issue.
46 | validations:
47 | required: true
48 | - type: textarea
49 | id: screenshots
50 | attributes:
51 | label: Screenshots
52 | description: |
53 | If applicable, add screenshots to help explain your problem.
54 | - type: input
55 | id: os-ver
56 | attributes:
57 | label: OS Version
58 | description: Your current version of Android you are running
59 | - type: input
60 | id: app-ver
61 | attributes:
62 | label: App Version
63 | description: Your current version of Custom Uploader
64 |
--------------------------------------------------------------------------------
/lib/utils/ScaffoldFix.dart:
--------------------------------------------------------------------------------
1 |
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | /* Later android versions made it so that the navigation bar draws on top of the app.
6 | * This custom scaffold implementation fixes that until flutter fixes it on their end */
7 |
8 | class ScaffoldFix extends StatelessWidget {
9 | final Widget body;
10 | final Widget? bottomNavigationBar;
11 | final Color? backgroundColor;
12 | final PreferredSizeWidget? appBar;
13 | final bool resizeToAvoidBottomInset;
14 | final Widget? floatingActionButton;
15 | final FloatingActionButtonLocation? floatingActionButtonLocation;
16 | final Drawer? drawer;
17 | final Drawer? endDrawer;
18 | final bool extendBody;
19 |
20 | const ScaffoldFix({
21 | super.key,
22 | required this.body,
23 | this.bottomNavigationBar,
24 | this.backgroundColor,
25 | this.appBar,
26 | this.resizeToAvoidBottomInset = true,
27 | this.floatingActionButton,
28 | this.floatingActionButtonLocation,
29 | this.drawer,
30 | this.endDrawer,
31 | this.extendBody = false,
32 | });
33 |
34 | @override
35 | Widget build(BuildContext context) {
36 | // final bottomPadding = MediaQuery.of(context).viewPadding.bottom;
37 |
38 | return Scaffold(
39 | backgroundColor: backgroundColor,
40 | appBar: appBar,
41 | extendBody: extendBody,
42 | resizeToAvoidBottomInset: resizeToAvoidBottomInset,
43 | floatingActionButton: floatingActionButton,
44 | floatingActionButtonLocation: floatingActionButtonLocation,
45 | drawer: drawer,
46 | endDrawer: endDrawer,
47 | body: bottomNavigationBar == null
48 | ? SafeArea(
49 | child: body,
50 | )
51 | : body,
52 | bottomNavigationBar: bottomNavigationBar != null
53 | ? SafeArea(
54 | child: Padding(
55 | padding: EdgeInsets.only(bottom: 0),
56 | child: bottomNavigationBar,
57 | ),
58 | )
59 | : null,
60 | );
61 | }
62 | }
--------------------------------------------------------------------------------
/lib/utils/build_favicon.dart:
--------------------------------------------------------------------------------
1 | import 'dart:typed_data';
2 | import 'package:flutter/material.dart';
3 | import 'package:dio/dio.dart';
4 | import 'package:dio_cache_interceptor/dio_cache_interceptor.dart';
5 |
6 | final Dio dio = Dio()
7 | ..interceptors.add(
8 | DioCacheInterceptor(
9 | options: CacheOptions(
10 | store: MemCacheStore(),
11 | policy: CachePolicy.forceCache,
12 | maxStale: const Duration(days: 7),
13 | ),
14 | ),
15 | );
16 |
17 | final Map faviconCache = {};
18 |
19 | Future getFavicon(String url) async {
20 | if (faviconCache.containsKey(url)) {
21 | return faviconCache[url]; // Return cached favicon if available
22 | }
23 |
24 | try {
25 | Response> response = await dio.get(
26 | 'https://www.google.com/s2/favicons?domain=$url&sz=256',
27 | options: Options(responseType: ResponseType.bytes),
28 | );
29 |
30 | if (response.statusCode == 200 && response.data != null) {
31 | final favicon = Uint8List.fromList(response.data!);
32 | faviconCache[url] = favicon; // Cache the fetched favicon
33 | return favicon;
34 | }
35 | } catch (error) {
36 | print('Error fetching favicon: $error');
37 | }
38 | return null;
39 | }
40 |
41 | Widget buildFaviconImage(String uploaderUrl) {
42 | if (faviconCache.containsKey(uploaderUrl) && faviconCache[uploaderUrl] != null) {
43 | return Image.memory(faviconCache[uploaderUrl]!, width: 32, height: 32, fit: BoxFit.fill);
44 | } else {
45 | return FutureBuilder(
46 | future: getFavicon(uploaderUrl),
47 | builder: (context, snapshot) {
48 | if (snapshot.connectionState == ConnectionState.waiting) {
49 | return const SizedBox(width: 32, height: 32, child: CircularProgressIndicator());
50 | }
51 | if (snapshot.hasError || snapshot.data == null) {
52 | return const Icon(Icons.public, size: 32);
53 | } else {
54 | return Image.memory(snapshot.data!, width: 32, height: 32, fit: BoxFit.fill);
55 | }
56 | },
57 | );
58 | }
59 | }
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | id "kotlin-android"
4 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
5 | id "dev.flutter.flutter-gradle-plugin"
6 | }
7 |
8 | def keystoreProperties = new Properties()
9 | def keystorePropertiesFile = rootProject.file('key.properties')
10 | if (keystorePropertiesFile.exists()) {
11 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
12 | }
13 |
14 | android {
15 | if (project.android.hasProperty("namespace")) {
16 | namespace = "com.nyx.custom_uploader"
17 | }
18 | compileSdk = flutter.compileSdkVersion
19 | // ndkVersion = flutter.ndkVersion
20 |
21 | dependenciesInfo {
22 | // Disables dependency metadata when building APKs.
23 | includeInApk = false
24 | // Disables dependency metadata when building Android App Bundles.
25 | includeInBundle = false
26 | }
27 |
28 | compileOptions {
29 | sourceCompatibility = JavaVersion.VERSION_1_8
30 | targetCompatibility = JavaVersion.VERSION_1_8
31 | }
32 |
33 | sourceSets {
34 | main.java.srcDirs += 'src/main/kotlin'
35 | }
36 |
37 | kotlinOptions {
38 | jvmTarget = JavaVersion.VERSION_1_8
39 | }
40 |
41 | defaultConfig {
42 | applicationId = "com.nyx.custom_uploader"
43 | minSdk = flutter.minSdkVersion
44 | targetSdk = flutter.targetSdkVersion
45 | versionCode = flutter.versionCode
46 | versionName = flutter.versionName
47 | }
48 | signingConfigs {
49 | release {
50 | v1SigningEnabled true
51 | v2SigningEnabled true
52 | keyAlias keystoreProperties['keyAlias']
53 | keyPassword keystoreProperties['keyPassword']
54 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
55 | storePassword keystoreProperties['storePassword']
56 | }
57 | }
58 | buildTypes {
59 | release {
60 | signingConfig = signingConfigs.release
61 | }
62 | }
63 | }
64 |
65 | flutter {
66 | source = "../.."
67 | }
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AppGroupId
6 | $(CUSTOM_GROUP_ID)
7 | CADisableMinimumFrameDurationOnPhone
8 |
9 | CFBundleDevelopmentRegion
10 | $(DEVELOPMENT_LANGUAGE)
11 | CFBundleDisplayName
12 | Custom Uploader
13 | CFBundleExecutable
14 | $(EXECUTABLE_NAME)
15 | CFBundleIdentifier
16 | $(PRODUCT_BUNDLE_IDENTIFIER)
17 | CFBundleInfoDictionaryVersion
18 | 6.0
19 | CFBundleName
20 | custom_uploader
21 | CFBundlePackageType
22 | APPL
23 | CFBundleShortVersionString
24 | $(FLUTTER_BUILD_NAME)
25 | CFBundleSignature
26 | ????
27 | CFBundleURLTypes
28 |
29 |
30 | CFBundleTypeRole
31 | Editor
32 | CFBundleURLSchemes
33 |
34 | ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER)
35 |
36 |
37 |
38 | CFBundleVersion
39 | $(FLUTTER_BUILD_NUMBER)
40 | LSRequiresIPhoneOS
41 |
42 | NSPhotoLibraryUsageDescription
43 | To upload photos, please allow permission to access your photo library.
44 | UIApplicationSupportsIndirectInputEvents
45 |
46 | UILaunchStoryboardName
47 | LaunchScreen
48 | UIMainStoryboardFile
49 | Main
50 | UIStatusBarStyle
51 |
52 | UISupportedInterfaceOrientations
53 |
54 | UIInterfaceOrientationPortrait
55 | UIInterfaceOrientationPortraitUpsideDown
56 | UIInterfaceOrientationLandscapeLeft
57 | UIInterfaceOrientationLandscapeRight
58 |
59 | UIFileSharingEnabled
60 |
61 | LSSupportsOpeningDocumentsInPlace
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/lib/views/http_share_form.dart:
--------------------------------------------------------------------------------
1 | import 'package:custom_uploader/services/database.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:hive/hive.dart';
4 | import 'package:custom_uploader/l10n/app_localizations.dart';
5 |
6 | import '../utils/ScaffoldFix.dart';
7 | import 'components/add_uploader_advanced.dart';
8 | import 'components/add_uploader_simple.dart';
9 |
10 | class HTTPShareForm extends StatefulWidget {
11 | final Share? editor;
12 | HTTPShareForm({super.key, required this.editor});
13 |
14 | @override
15 | State createState() => _MyCreatorState();
16 | }
17 |
18 | class _MyCreatorState extends State {
19 | var viewBox = Hive.openBox("custom_view");
20 | bool _isAdvancedView = false;
21 |
22 | @override
23 | void initState() {
24 | super.initState();
25 | // Initialize checkboxValue from Hive
26 | viewBox.then((value) {
27 | bool? advancedView = value.get('addNewView', defaultValue: false);
28 | setState(() {
29 | _isAdvancedView = advancedView!;
30 | });
31 | });
32 | }
33 |
34 | @override
35 | Widget build(BuildContext context) {
36 | return ScaffoldFix(
37 | appBar: AppBar(
38 | title: Text(AppLocalizations.of(context)!.type_uploader("HTTP")),
39 | actions: [
40 | PopupMenuButton(itemBuilder: (BuildContext context) {
41 | return [
42 | CheckedPopupMenuItem(
43 | checked: _isAdvancedView,
44 | value: 0,
45 | child: Text(AppLocalizations.of(context)!.advanced),
46 | ),
47 | ];
48 | },
49 | onSelected: (value) {
50 | if (value == 0) {
51 | setState(() {
52 | _isAdvancedView = !_isAdvancedView;
53 | updateSelectedView(_isAdvancedView);
54 | });
55 | }
56 | },)
57 | ],
58 | ),
59 | body: SingleChildScrollView(
60 | child: _isAdvancedView ? AdvancedView(widget.editor) : SimpleView(widget.editor)
61 | ),
62 | );
63 | }
64 |
65 | void updateSelectedView(bool newValue) async {
66 | viewBox.then((value) => value.put('addNewView', newValue));
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/lib/utils/init_database.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/services.dart' show rootBundle;
2 | import 'package:hive_flutter/hive_flutter.dart';
3 | import 'package:yaml/yaml.dart';
4 | import 'package:custom_uploader/services/database.dart';
5 |
6 | Future initializeDatabase() async {
7 | await Hive.initFlutter();
8 |
9 | Hive.registerAdapter(ShareAdapter());
10 | Hive.registerAdapter(NetworkShareAdapter());
11 |
12 | // Open boxes in parallel
13 | final futures = await Future.wait([
14 | Hive.openBox("custom_upload"),
15 | Hive.openBox("share_upload"),
16 | Hive.openBox('custom_view'),
17 | ]);
18 |
19 | final shareBox = futures[0] as Box;
20 | final viewBox = futures[2];
21 |
22 | final bool loadPresets = viewBox.get('shouldLoadPresets', defaultValue: false);
23 |
24 | if (!loadPresets) {
25 | final String yamlString = await rootBundle.loadString('lib/assets/preset_uploaders.yaml');
26 | final yamlList = loadYaml(yamlString);
27 |
28 | for (final item in yamlList) {
29 | if (!shareBox.values.any((s) => s.uploaderUrl == item["RequestURL"])) {
30 | shareBox.add(Share(
31 | uploaderUrl: item["RequestURL"] ?? "",
32 | formDataName: item["FileFormName"] ?? "upload",
33 | uploadFormData: item["UseBytes"] ?? false,
34 | uploadHeaders: Map.from(yamlMapToMap(item["Headers"] ?? {})),
35 | uploadParameters: Map.from(yamlMapToMap(item["Parameters"] ?? {})),
36 | uploadArguments: Map.from(yamlMapToMap(item["Arguments"] ?? {})),
37 | uploaderResponseParser: item["URLResponse"] ?? "",
38 | uploaderErrorParser: item["ErrorResponse"] ?? "",
39 | selectedUploader: false,
40 | method: item["RequestMethod"],
41 | ));
42 | }
43 | }
44 |
45 | await viewBox.put('shouldLoadPresets', true);
46 | }
47 |
48 | await viewBox.close();
49 | }
50 |
51 | // Since the dart yaml package does not use an ordinary map type, we need to convert it.
52 | // Why the hell would you use an custom type in this way instead of an regular type? It drives me insane
53 | dynamic yamlMapToMap(dynamic value) {
54 | if (value is Map) {
55 | return Map.fromEntries(
56 | value.entries.map((e) => MapEntry(e.key.toString(), yamlMapToMap(e.value))),
57 | );
58 | } else if (value is List) {
59 | return value.map(yamlMapToMap).toList();
60 | } else {
61 | return value;
62 | }
63 | }
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/lib/services/database.dart:
--------------------------------------------------------------------------------
1 | import 'package:hive/hive.dart';
2 | part 'database.g.dart';
3 |
4 | @HiveType(typeId: 0) // 1
5 | class Share extends HiveObject {
6 | @HiveField(0)
7 | String uploaderUrl;
8 |
9 | @HiveField(1)
10 | String formDataName;
11 |
12 | @HiveField(2)
13 | bool uploadFormData;
14 |
15 | @HiveField(3)
16 | Map uploadHeaders;
17 |
18 | @HiveField(4)
19 | Map uploadParameters;
20 |
21 | @HiveField(5)
22 | Map uploadArguments;
23 |
24 | @HiveField(6)
25 | String uploaderResponseParser;
26 |
27 | @HiveField(7)
28 | String uploaderErrorParser;
29 |
30 | @HiveField(8)
31 | bool selectedUploader; // No longer `late` or nullable, initialized in constructor
32 |
33 | @HiveField(9)
34 | String? method;
35 |
36 | Share({
37 | required this.uploaderUrl,
38 | required this.formDataName,
39 | required this.uploadFormData,
40 | required this.uploadHeaders,
41 | required this.uploadParameters,
42 | required this.uploadArguments,
43 | required this.uploaderResponseParser,
44 | required this.uploaderErrorParser,
45 | this.selectedUploader = false, // Default to false
46 | this.method,
47 | });
48 |
49 | // Setter method to safely update selectedUploader
50 | void setSelectedUploader(bool value) {
51 | selectedUploader = value;
52 | }
53 | }
54 |
55 | @HiveType(typeId: 1) // 2
56 | class ViewSelection {
57 | // define the type of the field
58 | @HiveField(0)
59 | bool addNewView; // for selecting the simple or advanced view for the add uploader page
60 | @HiveField(1)
61 | bool shouldLoadPresets; // for if the default uploader presets should be loaded
62 |
63 | ViewSelection(this.addNewView, this.shouldLoadPresets);
64 | }
65 |
66 | @HiveType(typeId: 2) // 3
67 | class NetworkShare extends HiveObject {
68 | @HiveField(0)
69 | String protocol; // incase we add any other protocols than ftp
70 |
71 | @HiveField(1)
72 | String domain;
73 |
74 | @HiveField(2)
75 | String username;
76 |
77 | @HiveField(3)
78 | String password;
79 |
80 | @HiveField(4)
81 | String folderPath;
82 |
83 | @HiveField(5)
84 | int port; // optional: default to 21 for FTP
85 |
86 | @HiveField(6)
87 | bool selected;
88 |
89 | @HiveField(7)
90 | String? urlPath;
91 |
92 | NetworkShare({
93 | required this.protocol,
94 | required this.domain,
95 | required this.username,
96 | required this.password,
97 | required this.folderPath,
98 | this.port = 21, // can set default
99 | this.selected = false,
100 | this.urlPath = "",
101 | });
102 |
103 | void setSelectedShare(bool value) {
104 | selected = value;
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/lib/assets/preset_uploaders.yaml:
--------------------------------------------------------------------------------
1 | ###################################################################################################
2 |
3 | # This YAML file contains upload presets for various services.
4 | # Each preset includes configurations for uploading files, such as URLs, parameters,
5 | # headers, and request methods.
6 | #
7 | # Each preset is represented as a mapping and includes the following fields:
8 | # - RequestURL*: The URL to which the file will be uploaded
9 | # - FileFormName*: The name of the form field where the file will be attached
10 | # - UseByes*: A boolean indicating whether to use bytes for file upload
11 | # - Headers: Additional headers to include in the request
12 | # - Parameters: Additional parameters to include in the request
13 | # - Arguments: Additional arguments for the request (form data)
14 | # - URLResponse: How the app should parse the returned url from the server. Custom Uploader will
15 | # attempt to get the returned url automatically, but some services may break up the returned url,
16 | # in which case this field should be used
17 | # - ErrorResponse: How the app should parse the error returned from the server in case the upload
18 | # failed
19 | # - RequestMethod*: The HTTP request method to use (POST, PUT, GET, PATCH)
20 | #
21 | # Each preset may have a different set of fields depending on the service.
22 | # Additionally, fields marked with an "*" are required.
23 | #
24 | # Feel free to contribute more presets by following the same structure :)
25 |
26 | ###################################################################################################
27 |
28 | # 0x0
29 | - RequestURL: "https://0x0.st"
30 | FileFormName: "file"
31 | UseBytes: false
32 | RequestMethod: "POST"
33 |
34 | # Catbox (Litterbox)
35 | - RequestURL: "https://litterbox.catbox.moe/resources/internals/api.php"
36 | FileFormName: "fileToUpload"
37 | UseBytes: false
38 | Arguments:
39 | reqtype: "fileupload"
40 | time: "72h"
41 | RequestMethod: "POST"
42 |
43 | # Imgur
44 | - RequestURL: "https://api.imgur.com/3/image"
45 | FileFormName: "image"
46 | UseBytes: false
47 | Headers:
48 | Authorization: Client-ID
49 | RequestMethod: "POST"
50 | URLResponse: "$json:data.link$"
51 | ErrorResponse: "$json:data.error$"
52 |
53 | # Giphy
54 | - RequestURL: "upload.giphy.com/v1/gifs"
55 | FileFormName: "file"
56 | UseBytes: false
57 | Arguments:
58 | api_key: ""
59 | RequestMethod: "POST"
60 |
61 |
62 | # Pastebin
63 | - RequestURL: "https://pastebin.com/api/api_post.php"
64 | FileFormName: "api_paste_code"
65 | UseBytes: true
66 | Arguments:
67 | api_dev_key: ""
68 | api_option: "paste"
69 | api_paste_name: "Custom Uploader Paste"
70 | RequestMethod: "POST"
71 | ErrorResponse: "$regex:.*$"
72 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
18 |
22 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
48 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/nyx/custom_uploader/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.nyx.custom_uploader
2 |
3 | import android.annotation.SuppressLint
4 | import android.content.ContentValues
5 | import android.os.Build
6 | import android.os.Environment
7 | import android.provider.MediaStore
8 | import android.util.Log
9 | import android.webkit.MimeTypeMap
10 | import io.flutter.embedding.android.FlutterActivity
11 | import io.flutter.embedding.engine.FlutterEngine
12 | import io.flutter.plugin.common.MethodChannel
13 | import java.io.File
14 | import java.io.IOException
15 |
16 | class MainActivity : FlutterActivity() {
17 | override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
18 | super.configureFlutterEngine(flutterEngine)
19 | MethodChannel(
20 | flutterEngine.dartExecutor.binaryMessenger,
21 | "flutter_media_store"
22 | ).setMethodCallHandler { call, result ->
23 | when (call.method) {
24 | "addItem" -> {
25 | addItem(call.argument("path")!!, call.argument("name")!!)
26 | result.success(null)
27 | }
28 | }
29 | }
30 | }
31 |
32 | @SuppressLint("NewApi") // suppress warning for MediaStore.Downloads since it's only used on API 29+ (current min is 19)
33 | private fun addItem(path: String, name: String) {
34 | val extension = MimeTypeMap.getFileExtensionFromUrl(path)
35 | val mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension) ?: "text/plain"
36 |
37 | val collection = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
38 | MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
39 | } else {
40 | MediaStore.Downloads.EXTERNAL_CONTENT_URI
41 | }
42 |
43 | val values = ContentValues().apply {
44 | put(MediaStore.Images.Media.DISPLAY_NAME, name)
45 | put(MediaStore.Images.Media.MIME_TYPE, mimeType)
46 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
47 | put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS + File.separator + "CustomUploader")
48 | put(MediaStore.Downloads.IS_PENDING, 1)
49 | }
50 | }
51 |
52 | val resolver = applicationContext.contentResolver
53 | val uri = resolver.insert(collection, values)!!
54 |
55 | try {
56 | resolver.openOutputStream(uri).use { os ->
57 | File(path).inputStream().use { it.copyTo(os!!) }
58 | }
59 |
60 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
61 | values.clear()
62 | values.put(MediaStore.Downloads.IS_PENDING, 0)
63 | resolver.update(uri, values, null, null)
64 | }
65 | } catch (ex: IOException) {
66 | Log.e("MediaStore", ex.message, ex)
67 | }
68 | }
69 | }
--------------------------------------------------------------------------------
/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java:
--------------------------------------------------------------------------------
1 | package io.flutter.plugins;
2 |
3 | import androidx.annotation.Keep;
4 | import androidx.annotation.NonNull;
5 | import io.flutter.Log;
6 |
7 | import io.flutter.embedding.engine.FlutterEngine;
8 |
9 | /**
10 | * Generated file. Do not edit.
11 | * This file is generated by the Flutter tool based on the
12 | * plugins that support the Android platform.
13 | */
14 | @Keep
15 | public final class GeneratedPluginRegistrant {
16 | private static final String TAG = "GeneratedPluginRegistrant";
17 | public static void registerWith(@NonNull FlutterEngine flutterEngine) {
18 | try {
19 | flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.device_info.DeviceInfoPlusPlugin());
20 | } catch (Exception e) {
21 | Log.e(TAG, "Error registering plugin device_info_plus, dev.fluttercommunity.plus.device_info.DeviceInfoPlusPlugin", e);
22 | }
23 | try {
24 | flutterEngine.getPlugins().add(new com.mr.flutter.plugin.filepicker.FilePickerPlugin());
25 | } catch (Exception e) {
26 | Log.e(TAG, "Error registering plugin file_picker, com.mr.flutter.plugin.filepicker.FilePickerPlugin", e);
27 | }
28 | try {
29 | flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin());
30 | } catch (Exception e) {
31 | Log.e(TAG, "Error registering plugin flutter_plugin_android_lifecycle, io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin", e);
32 | }
33 | try {
34 | flutterEngine.getPlugins().add(new com.techind.flutter_sharing_intent.FlutterSharingIntentPlugin());
35 | } catch (Exception e) {
36 | Log.e(TAG, "Error registering plugin flutter_sharing_intent, com.techind.flutter_sharing_intent.FlutterSharingIntentPlugin", e);
37 | }
38 | try {
39 | flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.packageinfo.PackageInfoPlugin());
40 | } catch (Exception e) {
41 | Log.e(TAG, "Error registering plugin package_info_plus, dev.fluttercommunity.plus.packageinfo.PackageInfoPlugin", e);
42 | }
43 | try {
44 | flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
45 | } catch (Exception e) {
46 | Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
47 | }
48 | try {
49 | flutterEngine.getPlugins().add(new com.baseflow.permissionhandler.PermissionHandlerPlugin());
50 | } catch (Exception e) {
51 | Log.e(TAG, "Error registering plugin permission_handler_android, com.baseflow.permissionhandler.PermissionHandlerPlugin", e);
52 | }
53 | try {
54 | flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.share.SharePlusPlugin());
55 | } catch (Exception e) {
56 | Log.e(TAG, "Error registering plugin share_plus, dev.fluttercommunity.plus.share.SharePlusPlugin", e);
57 | }
58 | try {
59 | flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin());
60 | } catch (Exception e) {
61 | Log.e(TAG, "Error registering plugin url_launcher_android, io.flutter.plugins.urllauncher.UrlLauncherPlugin", e);
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"}]}
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:custom_uploader/views/home_page.dart';
3 | import 'package:flutter/services.dart';
4 | import 'package:custom_uploader/utils/init_database.dart';
5 | import 'package:custom_uploader/l10n/app_localizations.dart';
6 | import 'package:flutter_localizations/flutter_localizations.dart';
7 |
8 | Future main() async {
9 | WidgetsFlutterBinding.ensureInitialized();
10 | await initializeDatabase();
11 | runApp(const MainApp());
12 | }
13 |
14 | class MainApp extends StatelessWidget {
15 | const MainApp({super.key});
16 |
17 | // This widget is the root of the application.
18 | @override
19 | Widget build(BuildContext context) {
20 | SystemChrome.setPreferredOrientations([
21 | DeviceOrientation.portraitUp,
22 | DeviceOrientation.portraitDown,
23 | ]);
24 | SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
25 | return MaterialApp(
26 | localizationsDelegates: const [
27 | AppLocalizations.delegate, // Generated delegate
28 | GlobalMaterialLocalizations.delegate,
29 | GlobalWidgetsLocalizations.delegate,
30 | GlobalCupertinoLocalizations.delegate,
31 | ],
32 | supportedLocales: const [
33 | Locale('en'), // English
34 | Locale('fr'), // French
35 | Locale('de'), // German
36 | Locale('es'), // Spanish
37 | Locale('ru'), // Russian
38 | Locale('zh'), // Simplified Chinese
39 | Locale('it'), // Italian
40 | Locale('ja'), // Japanese
41 | Locale('ar'), // Arabic
42 | Locale('pt', 'BR'), // Brazilian Portuguese
43 | Locale('pl'), // Polish
44 | Locale('nl'), // Dutch
45 | Locale('tr'), // Turkish
46 | Locale('ko'), // Korean
47 | Locale('pt'), // Portuguese
48 | Locale('uk'), // Ukrainian
49 | Locale('zh', 'Hant'),// Traditional Chinese
50 | Locale('vi'), // Vietnamese
51 | Locale('sv'), // Swedish
52 | Locale('cs'), // Czech
53 | Locale('da'), // Danish
54 | Locale('ro'), // Romanian
55 | Locale('hu'), // Hungarian
56 | Locale('fi'), // Finnish
57 | Locale('el'), // Greek
58 | Locale('no'), // Norwegian
59 | Locale('he'), // Hebrew
60 | Locale('af'), // Afrikaans
61 | Locale('ca'), // Catalan
62 | Locale('sr', 'Cyrl'),// Serbian (Cyrillic)
63 | ],
64 | localeResolutionCallback: (deviceLocale, supportedLocales) {
65 | for (var locale in supportedLocales) {
66 | if (locale.languageCode == deviceLocale?.languageCode &&
67 | (locale.countryCode == null || locale.countryCode == deviceLocale?.countryCode)) {
68 | return locale;
69 | }
70 | }
71 | return supportedLocales.first; // fallback locale
72 | },
73 | home: HomePage(),
74 | theme: ThemeData(
75 | brightness: Brightness.light,
76 | primarySwatch: Colors.blue,
77 | ),
78 | darkTheme: ThemeData(
79 | brightness: Brightness.dark,
80 | primarySwatch: Colors.blue,
81 | ),
82 | themeMode: ThemeMode.system,
83 | );
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Custom Uploader
2 |
3 |
4 |
5 |
6 |
7 | [](https://github.com/SrS2225a/custom_uploader/blob/master/LICENSE)
8 | [](https://github.com/SrS2225a/custom_uploader/releases)
9 | [](https://github.com/SrS2225a/custom_uploader)
10 | [](https://github.com/SrS2225a/custom_uploader/fork)
11 | [](https://github.com/SrS2225a/custom_uploader/issues)
12 | [](https://liberapay.com/Eris/donate)
13 | [](https://github.com/SrS2225a/custom_uploader/actions/workflows/flutter_build_test.yml)
14 |
15 | Custom Uploader is a user-friendly file uploading tool that makes it easy for you to transfer files to your preferred hosting service. It is designed to be lightweight and efficient, with a straightforward interface that allows you to upload files quickly and easily. With Custom Uploader, you can upload a variety of different file types, including documents, images, videos, and more. The versatile tool is perfect for anyone who needs a reliable and convenient way to upload files for storage or sharing. Whenever you are a business owner, a student, or a professional, Custom Uploader can help you manage and share your files with ease.
16 |
17 | 
18 |
19 | ## Features
20 | * Easily upload anything to your host of choice (images, videos, documents, etc.) with a simple and easy to use interface.
21 | * Easily create multiple uploaders for different hosts, and switch between them.
22 | * Upload files from your gallery, camera, or any other app that supports sharing.
23 | * Import/Export your uploaders to share them with others, with support for sharex's uploader format.
24 | * Comes with built in uploader presets
25 | * Comes with a powerful url parser that allows you to get the url of the uploaded file from the response of the host.
26 |
27 | ## Getting Started
28 | [](https://play.google.com/store/apps/details?id=com.nyx.custom_uploader)
29 | [](https://f-droid.org/en/packages/com.nyx.custom_uploader/)
30 | [](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.nyx.custom_uploader%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2FSrS2225a%2Fcustom_uploader%22%2C%22author%22%3A%22SrS2225a%22%2C%22name%22%3A%22Custom%20Uploader%22%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%7D%22%7D)
31 |
32 | You can also get the latest version of the app from the [releases](https://github.com/SrS2225a/custom_uploader/releases) page.
33 |
34 | Minimum supported Android version for this app is 5.0 (Lolipop).
35 |
36 | ## Building
37 | See [BUILDING.MD](./BUILDING.md) for details
38 |
39 | ## Donate
40 | Like the app? Consider [donating](https://liberapay.com/Eris/donate) to support the development of the app.
41 |
42 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - device_info_plus (0.0.1):
3 | - Flutter
4 | - DKImagePickerController/Core (4.3.9):
5 | - DKImagePickerController/ImageDataManager
6 | - DKImagePickerController/Resource
7 | - DKImagePickerController/ImageDataManager (4.3.9)
8 | - DKImagePickerController/PhotoGallery (4.3.9):
9 | - DKImagePickerController/Core
10 | - DKPhotoGallery
11 | - DKImagePickerController/Resource (4.3.9)
12 | - DKPhotoGallery (0.0.19):
13 | - DKPhotoGallery/Core (= 0.0.19)
14 | - DKPhotoGallery/Model (= 0.0.19)
15 | - DKPhotoGallery/Preview (= 0.0.19)
16 | - DKPhotoGallery/Resource (= 0.0.19)
17 | - SDWebImage
18 | - SwiftyGif
19 | - DKPhotoGallery/Core (0.0.19):
20 | - DKPhotoGallery/Model
21 | - DKPhotoGallery/Preview
22 | - SDWebImage
23 | - SwiftyGif
24 | - DKPhotoGallery/Model (0.0.19):
25 | - SDWebImage
26 | - SwiftyGif
27 | - DKPhotoGallery/Preview (0.0.19):
28 | - DKPhotoGallery/Model
29 | - DKPhotoGallery/Resource
30 | - SDWebImage
31 | - SwiftyGif
32 | - DKPhotoGallery/Resource (0.0.19):
33 | - SDWebImage
34 | - SwiftyGif
35 | - file_picker (0.0.1):
36 | - DKImagePickerController/PhotoGallery
37 | - Flutter
38 | - Flutter (1.0.0)
39 | - flutter_sharing_intent (0.0.1):
40 | - Flutter
41 | - package_info_plus (0.4.5):
42 | - Flutter
43 | - path_provider_foundation (0.0.1):
44 | - Flutter
45 | - FlutterMacOS
46 | - permission_handler_apple (9.3.0):
47 | - Flutter
48 | - SDWebImage (5.21.0):
49 | - SDWebImage/Core (= 5.21.0)
50 | - SDWebImage/Core (5.21.0)
51 | - SwiftyGif (5.4.5)
52 | - url_launcher_ios (0.0.1):
53 | - Flutter
54 |
55 | DEPENDENCIES:
56 | - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
57 | - file_picker (from `.symlinks/plugins/file_picker/ios`)
58 | - Flutter (from `Flutter`)
59 | - flutter_sharing_intent (from `.symlinks/plugins/flutter_sharing_intent/ios`)
60 | - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
61 | - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
62 | - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
63 | - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
64 |
65 | SPEC REPOS:
66 | trunk:
67 | - DKImagePickerController
68 | - DKPhotoGallery
69 | - SDWebImage
70 | - SwiftyGif
71 |
72 | EXTERNAL SOURCES:
73 | device_info_plus:
74 | :path: ".symlinks/plugins/device_info_plus/ios"
75 | file_picker:
76 | :path: ".symlinks/plugins/file_picker/ios"
77 | Flutter:
78 | :path: Flutter
79 | flutter_sharing_intent:
80 | :path: ".symlinks/plugins/flutter_sharing_intent/ios"
81 | package_info_plus:
82 | :path: ".symlinks/plugins/package_info_plus/ios"
83 | path_provider_foundation:
84 | :path: ".symlinks/plugins/path_provider_foundation/darwin"
85 | permission_handler_apple:
86 | :path: ".symlinks/plugins/permission_handler_apple/ios"
87 | url_launcher_ios:
88 | :path: ".symlinks/plugins/url_launcher_ios/ios"
89 |
90 | SPEC CHECKSUMS:
91 | device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
92 | DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
93 | DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
94 | file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
95 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
96 | flutter_sharing_intent: afdc98985814d2c01d8c0956a177d6b6dfbdc373
97 | package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
98 | path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
99 | permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
100 | SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868
101 | SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
102 | url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
103 |
104 | PODFILE CHECKSUM: f788a8d40da8aac68cf546adbadd09bc47a31f87
105 |
106 | COCOAPODS: 1.16.2
107 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
43 |
49 |
50 |
51 |
52 |
53 |
64 |
66 |
72 |
73 |
74 |
75 |
81 |
83 |
89 |
90 |
91 |
92 |
94 |
95 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/lib/utils/response_parser.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 | import 'package:xml/xml.dart';
3 |
4 | String? parseResponse(dynamic response, String parse) {
5 | try {
6 | final buffer = StringBuffer();
7 |
8 | final expressionRegex = RegExp(r'\$(.*?)\$');
9 | final matches = expressionRegex.allMatches(parse).toList();
10 |
11 | // Fallback: if no $...$ expressions are present, try to auto-detect a URL
12 | if (matches.isEmpty) {
13 | final urlRegex = RegExp(r"((https?|ftp)\:\/\/|)([A-Za-z0-9.-]+\.[A-Za-z]{2,}|(\d{1,3}\.){3}\d{1,3})(:\d+)?(\/[A-Za-z0-9\-\._~%?!$&'()*+=:@]+)+");
14 | final urlMatches =
15 | urlRegex
16 | .allMatches(response.toString())
17 | .map((m) => m.group(0))
18 | .toList();
19 | if (urlMatches.isNotEmpty) {
20 | return urlMatches.first;
21 | }
22 | return "";
23 | }
24 |
25 | int lastMatchEnd = 0;
26 |
27 | for (final match in matches) {
28 | buffer.write(parse.substring(lastMatchEnd, match.start));
29 | final content = match.group(1)!;
30 |
31 | final parts = content.split(":");
32 | if (parts.length != 2) {
33 | buffer.write("[Invalid expression: $content]");
34 | lastMatchEnd = match.end;
35 | continue;
36 | }
37 |
38 | final type = parts[0].toLowerCase();
39 | final path = parts[1];
40 |
41 | switch (type) {
42 | case "json":
43 | final jsonData =
44 | (response is String) ? json.decode(response) : response;
45 | buffer.write(_extractFromJson(jsonData, path));
46 | break;
47 |
48 | case "xml":
49 | final xmlDoc =
50 | (response is XmlDocument)
51 | ? response
52 | : XmlDocument.parse(response.toString());
53 | buffer.write(_extractFromXml(xmlDoc, path));
54 | break;
55 |
56 | case "regex":
57 | final patternParts = path.split("??");
58 | final pattern = patternParts[0];
59 | final index =
60 | patternParts.length > 1 ? int.tryParse(patternParts[1]) ?? 1 : 1;
61 |
62 | final regex = RegExp(pattern);
63 | final allMatches =
64 | regex
65 | .allMatches(response.toString())
66 | .map((m) => m.group(0))
67 | .toList();
68 | if (allMatches.length >= index) {
69 | buffer.write(allMatches[index - 1]);
70 | } else {
71 | buffer.write("[no match]");
72 | }
73 | break;
74 |
75 | default:
76 | buffer.write("[unknown type: $type]");
77 | break;
78 | }
79 |
80 | lastMatchEnd = match.end;
81 | }
82 |
83 | buffer.write(parse.substring(lastMatchEnd));
84 | return buffer.toString();
85 | } catch (e) {
86 | print("Parsing error: $e");
87 | return "";
88 | }
89 | }
90 |
91 | dynamic _extractFromJson(dynamic object, String path) {
92 | final segments = path.split(".");
93 | for (var segment in segments) {
94 | final match = RegExp(r'([^\[]+)(?:\[(\d+)\])?').firstMatch(segment);
95 | if (match != null) {
96 | final key = match.group(1)!;
97 | final index = match.group(2);
98 |
99 | object = object[key];
100 | if (index != null && object is List) {
101 | object = object[int.parse(index)];
102 | }
103 | } else {
104 | return "[invalid path]";
105 | }
106 | }
107 | return object?.toString() ?? "[null]";
108 | }
109 |
110 | String _extractFromXml(XmlDocument doc, String path) {
111 | final segments = path.split("/");
112 | XmlElement? element = doc.rootElement;
113 |
114 | // Skip the first segment if it matches the root tag name
115 | int start = segments[0] == element.name.toString() ? 1 : 0;
116 |
117 | for (var i = start; i < segments.length; i++) {
118 | final match = RegExp(r'([^\[]+)(?:\[(\d+)\])?').firstMatch(segments[i]);
119 | if (match != null) {
120 | final tag = match.group(1)!;
121 | final index = int.tryParse(match.group(2) ?? "0")!;
122 | final elements = element!.findElements(tag).toList();
123 |
124 | if (elements.length > index) {
125 | element = elements[index];
126 | } else {
127 | return "[missing element]";
128 | }
129 | } else {
130 | return "[invalid XML path]";
131 | }
132 | }
133 |
134 | return element?.text ?? "[null]";
135 | }
136 |
--------------------------------------------------------------------------------
/lib/l10n/app_Arabic.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "ar",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Czech.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "cs",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Danish.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "da",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Dutch.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "nl",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_French.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "fr",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_German.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "de",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Greek.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "el",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Hebrew.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "he",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Korean.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "ko",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Polish.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "pl",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Afrikaans.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "af",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Catalan.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "ca",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Finnish.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "fi",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Hungarian.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "hu",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Italian.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "it",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Japanese.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "ja",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Norwegian.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "no",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Portuguese.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "gl",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Romanian.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "ro",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Russian.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "ru",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------
/lib/l10n/app_Swedish.arb:
--------------------------------------------------------------------------------
1 | {
2 | "@@locale": "sv",
3 | "custom_uploader": "Custom Uploader",
4 | "github": "Github",
5 | "donate": "Donate",
6 | "help": "Help",
7 | "no_file_selected": "No file has been selected. Select one then try again!",
8 | "no_custom_uploaders": "No Custom Uploaders",
9 | "before_you_can_upload_files": "Before you can begin uploading files, you will need an uploader of your choice created and selected, then try again.",
10 | "uploading": "Uploading...",
11 | "choose_files": "Choose File(s)",
12 | "ok": "OK",
13 | "uploadingFile": "Uploading file {current} of {total}: {fileName}",
14 | "delete_this_share": "Are you sure you want to delete this share?",
15 | "yes": "Yes",
16 | "no": "No",
17 | "view_logs": "View Logs",
18 | "ftp_not_supported": "Currently, ftp shares cannot be imported or exported",
19 | "no_uploader_selected": "No uploader selected",
20 | "import_from_file": "Import from file",
21 | "export_to_file": "Export to file",
22 | "edit": "Edit",
23 | "delete": "Delete {delete}",
24 | "upload_method_and_type": "Upload Method: {method} • Type: {type}",
25 | "upload_type_only": "Type: {type}",
26 | "logs_downloaded_successfully": "The logs were downloaded successfully",
27 | "failed_to_export": "Failed to export",
28 | "failed_to_import": "Failed to import",
29 | "permission_denied": "The permission to write to {permission} was denied.",
30 | "failed_to_download_logs": "Failed to download logs. \n\n Error: {error}",
31 | "no_logs_available": "No logs available",
32 | "custom_uploader_logs": "Custom Uploader Logs",
33 | "download_logs": "Download Logs",
34 | "clear_logs": "Clear Logs",
35 | "error_loading_logs": "Error loading logs",
36 | "type_uploader": "{type} Uploader",
37 | "advanced": "Advanced",
38 | "save": "Save",
39 | "cancel": "Cancel",
40 | "test": "Test",
41 | "connection_successful": "Connection Successful",
42 | "connection_failed": "Connection Failed",
43 | "domain": "Domain",
44 | "username": "Username",
45 | "password": "Password",
46 | "port": "Port",
47 | "remote_folder_path": "Remote Folder Path",
48 | "protocol": "Protocol",
49 | "url_path": "URL Path",
50 | "advanced_view_tip": "Tip: If you need to supply arguments to an uploader, try the advanced view",
51 | "use_file_encoding": "Use File Encoding",
52 | "share_already_exists": "A share with that URL already exists.",
53 | "upload_url_hint": "The URL to upload to.",
54 | "upload_url_label": "Upload URL *",
55 | "upload_url_error": "Please enter a valid URL",
56 | "form_data_name_hint": "The name of the form data field.",
57 | "form_data_name_label": "Form Data Name *",
58 | "form_data_name_error": "Please enter a form name",
59 | "url_response_hint": "The response of the url to parse",
60 | "url_response_label": "URL Response",
61 | "url_error_response_hint": "The error response of the url to parse",
62 | "url_error_response_label": "URL Error Response",
63 | "method_label": "Method *",
64 | "upload_headers_label": "Upload Headers",
65 | "upload_parameters_label": "Upload Parameters",
66 | "upload_arguments_label": "Upload Arguments",
67 | "failed_to_connect": "Failed to connect to server. Please check your internet connection.",
68 | "upload_error_message": "Error transferring to {url}: ({status_code}) {status_message}",
69 | "upload_error_message_with_details": "Error transferring to {url}: ({status_code}) {status_message}; {details}",
70 | "upload_success_message": "Upload successful",
71 | "upload_success_message_with_details": "File uploaded successfully as: {parsedResponse}. It has been copied to your clipboard.",
72 | "upload_success": "Upload successful",
73 | "upload_success_with_url": "File uploaded successfully as: {url}. It has been copied to your clipboard.",
74 | "upload_failed_unexpectedly": "Upload failed unexpectedly.",
75 | "upload_error_unknown": "Unknown FTP error",
76 | "upload_error_with_message": "Error transferring to {domain}: ({error})",
77 | "invalid_json": "The file you selected appears to not be a valid JSON file. \n\n Error: {error}",
78 | "import_uploader_already_exists": "The uploader you are trying to import already exists.",
79 | "import_uploader_invalid": "The uploader you are trying to import is invalid.",
80 | "import_request_method_not_supported": "The request method ({requestMethod}) is not supported.",
81 | "import_not_valid_uploader": "The file you selected appears to not be a valid uploader.",
82 | "import_successful": "The uploader was imported successfully.",
83 | "export_successful": "The uploader was exported successfully.",
84 | "export_failed": "Failed to export the uploader. \\n\\nError: {error}.",
85 | "key": "Key",
86 | "value": "Value",
87 | "platform_not_supported": ""
88 | }
--------------------------------------------------------------------------------