diff --git a/app/Console/Commands/SetupDevEnvironment.php b/app/Console/Commands/SetupDevEnvironment.php
index f1192783..14168592 100644
--- a/app/Console/Commands/SetupDevEnvironment.php
+++ b/app/Console/Commands/SetupDevEnvironment.php
@@ -67,6 +67,7 @@ class SetupDevEnvironment extends Command
$this->store_default_settings();
$this->setup->seed_default_pages();
$this->setup->seed_default_settings('Extended');
+ $this->setup->seed_default_language();
$this->info('Creating default admin...');
$this->create_admin();
diff --git a/app/Http/Controllers/Admin/LanguageController.php b/app/Http/Controllers/Admin/LanguageController.php
index d71c8113..d615671d 100644
--- a/app/Http/Controllers/Admin/LanguageController.php
+++ b/app/Http/Controllers/Admin/LanguageController.php
@@ -2,58 +2,50 @@
namespace App\Http\Controllers\Admin;
-use App\Setting;
-use App\Language;
-use App\LanguageString;
-
-
-use App\Http\Tools\Demo;
-use Illuminate\Http\Request;
-use Illuminate\Support\Facades\DB;
+use App\Http\Resources\LanguageCollection;
+use App\Http\Resources\LanguageResource;
+use App\Models\Language;
use App\Http\Controllers\Controller;
-use Illuminate\Support\Facades\Cache;
+use App\Services\DemoService;
+use Illuminate\Contracts\Foundation\Application;
+use Illuminate\Contracts\Routing\ResponseFactory;
+use Illuminate\Http\Response;
use App\Http\Requests\Languages\UpdateStringRequest;
use App\Http\Requests\Languages\CreateLanguageRequest;
use App\Http\Requests\Languages\UpdateLanguageRequest;
class LanguageController extends Controller
{
+ protected $demo;
+
+ public function __construct()
+ {
+ $this->demo = resolve(DemoService::class);
+ }
/**
* Get all languages for admin translate
- *
- * @return Collection
+ *
+ * @return array|Application|ResponseFactory|Response
*/
public function get_languages()
{
- return [
- 'languages' => Language::all(),
- 'set_language' => Setting::whereName('language')->first()->value
- ];
+ return response(
+ new LanguageCollection(Language::all()), 200
+ );
}
/**
* Get all language strings for admin translate
*
* @param Language $language
- * @return Collection
*/
public function get_language_strings(Language $language)
{
- $lang = Language::whereId($language->id);
-
- $strings = $lang->with('languageStrings')->first();
-
- // dd($language);
-
- $license = get_setting('license') === 'Extended' ? 'extended' : 'regular';
-
- $default_strings = collect(config('language_strings.' . $license));
-
- return [
- 'translated_strings' => $strings,
- 'default_strings' => $default_strings
- ];
+ return response([
+ 'current' => $language->languageStrings,
+ 'default' => get_default_language_strings()
+ ], 200);
}
/**
@@ -64,19 +56,18 @@ class LanguageController extends Controller
*/
public function create_language(CreateLanguageRequest $request)
{
- // Check if is demo
- if (env('APP_DEMO')) {
- return Demo::response_204();
+ if (is_demo()) {
+ return $this->demo->response_with_no_content();
}
- // Create languages & strings
$language = Language::create([
- 'name' => $request->name,
- 'locale' => $request->locale
+ 'name' => $request->input('name'),
+ 'locale' => $request->input('locale')
]);
- // Return created language
- return $language;
+ return response(
+ new LanguageResource($language), 201
+ );
}
/**
@@ -84,20 +75,18 @@ class LanguageController extends Controller
*
* @param UpdateLanguageRequest $request
* @param Language $language
- * @return $language
*/
public function update_language(UpdateLanguageRequest $request, Language $language)
{
- // Check if is demo
- if (env('APP_DEMO')) {
- return Demo::response_204();
+ if (is_demo()) {
+ return $this->demo->response_with_no_content();
}
- // Update language
$language->update(make_single_input($request));
- // Return updated language
- return $language;
+ return response(
+ new LanguageResource($language), 201
+ );
}
/**
@@ -105,23 +94,22 @@ class LanguageController extends Controller
*
* @param UpdateStringRequest $request
* @param Language $language
- * @return ResponseFactory|\Illuminate\Http\Response
+ * @return Application|ResponseFactory|Response
*/
public function update_string(UpdateStringRequest $request, Language $language)
{
- // Check if is demo
- if (env('APP_DEMO')) {
- return Demo::response_204();
+ if (is_demo()) {
+ return $this->demo->response_with_no_content();
}
- LanguageString::whereLangAndKey($language->locale, $request->name)
+ $language
+ ->languageStrings()
+ ->where('key', $request->name)
->update([
- 'key' => $request->name,
- 'lang' => $language->locale,
- 'value' => $request->value
+ 'value' => $request->value
]);
- Cache::forget('language_strings-' . $language->locale);
+ cache()->forget("language-strings-{$language->locale}");
return response('Done', 204);
}
@@ -130,13 +118,16 @@ class LanguageController extends Controller
* Delete the language with all children strings
*
* @param Language $language
- * @return ResponseFactory|\Illuminate\Http\Response
+ * @return ResponseFactory|Response
*/
public function delete_language(Language $language)
{
- // Check if is demo
- if (env('APP_DEMO')) {
- return Demo::response_204();
+ if (is_demo()) {
+ return $this->demo->response_with_no_content();
+ }
+
+ if ($language->locale === 'en') {
+ abort(401, "Sorry, you can't delete default language.");
}
$language->delete();
diff --git a/app/Http/Controllers/App/SetupWizardController.php b/app/Http/Controllers/App/SetupWizardController.php
index a4ba1ff7..a16b5e97 100644
--- a/app/Http/Controllers/App/SetupWizardController.php
+++ b/app/Http/Controllers/App/SetupWizardController.php
@@ -447,6 +447,7 @@ class SetupWizardController extends Controller
// Set up application
$this->setup->seed_default_pages();
$this->setup->seed_default_settings($request->license);
+ $this->setup->seed_default_language();
// Login account
if (Auth::attempt($request->only(['email', 'password']))) {
diff --git a/app/Http/Controllers/FileManager/BrowseController.php b/app/Http/Controllers/FileManager/BrowseController.php
index 2889983e..e63055bc 100644
--- a/app/Http/Controllers/FileManager/BrowseController.php
+++ b/app/Http/Controllers/FileManager/BrowseController.php
@@ -182,7 +182,7 @@ class BrowseController extends Controller
return [
[
- 'name' => __('vuefilemanager.home'),
+ 'name' => __t('home'),
'location' => 'base',
'folders' => $folders,
]
diff --git a/app/Http/Controllers/Sharing/BrowseShareController.php b/app/Http/Controllers/Sharing/BrowseShareController.php
index 5c590863..a2012f3c 100644
--- a/app/Http/Controllers/Sharing/BrowseShareController.php
+++ b/app/Http/Controllers/Sharing/BrowseShareController.php
@@ -191,7 +191,7 @@ class BrowseShareController extends Controller
return [
[
'id' => $shared->item_id,
- 'name' => __('vuefilemanager.home'),
+ 'name' => __t('home'),
'location' => 'public',
'folders' => $folders,
]
diff --git a/app/Http/Requests/Languages/UpdateLanguageRequest.php b/app/Http/Requests/Languages/UpdateLanguageRequest.php
index a58cf360..8a825fb4 100644
--- a/app/Http/Requests/Languages/UpdateLanguageRequest.php
+++ b/app/Http/Requests/Languages/UpdateLanguageRequest.php
@@ -24,7 +24,7 @@ class UpdateLanguageRequest extends FormRequest
public function rules()
{
return [
- 'name' => 'required|string',
+ 'name' => 'required|string',
'value' => 'required|string'
];
}
diff --git a/app/Http/Resources/LanguageCollection.php b/app/Http/Resources/LanguageCollection.php
new file mode 100644
index 00000000..b1587914
--- /dev/null
+++ b/app/Http/Resources/LanguageCollection.php
@@ -0,0 +1,26 @@
+ $this->collection,
+ 'meta' => [
+ 'current_language' => get_setting('language') ?? 'en',
+ ],
+ ];
+ }
+}
diff --git a/app/Http/Resources/LanguageResource.php b/app/Http/Resources/LanguageResource.php
new file mode 100644
index 00000000..cb5e156c
--- /dev/null
+++ b/app/Http/Resources/LanguageResource.php
@@ -0,0 +1,30 @@
+ [
+ 'id' => $this->id,
+ 'type' => 'languages',
+ 'attributes' => [
+ 'name' => $this->name,
+ 'locale' => $this->locale,
+ 'updated_at' => $this->updated_at,
+ 'created_at' => $this->created_at,
+ ]
+ ],
+ ];
+ }
+}
diff --git a/app/Http/helpers.php b/app/Http/helpers.php
index 3c37d8de..03117a1d 100644
--- a/app/Http/helpers.php
+++ b/app/Http/helpers.php
@@ -10,6 +10,7 @@ use App\Models\LanguageString;
use ByteUnits\Metric;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Intervention\Image\ImageManagerStatic as Image;
@@ -279,7 +280,7 @@ function is_visitor($shared)
*/
function store_avatar($request, $name)
{
- if (! $request->hasFile($name)) {
+ if (!$request->hasFile($name)) {
return null;
}
@@ -310,7 +311,7 @@ function store_avatar($request, $name)
*/
function store_system_image($request, $name)
{
- if (! $request->hasFile($name)) {
+ if (!$request->hasFile($name)) {
return null;
}
@@ -573,16 +574,28 @@ function get_image_meta_data($file)
try {
// Try to get the exif data
- return mb_convert_encoding(Image::make($file->getRealPath())->exif(),'UTF8', 'UTF8');
+ return mb_convert_encoding(Image::make($file->getRealPath())->exif(), 'UTF8', 'UTF8');
- } catch ( \Exception $e) {
-
- return null;
+ } catch (\Exception $e) {
+
+ return null;
}
}
}
+/**
+ * @return Collection
+ */
+function get_default_language_strings()
+{
+ $license = get_setting('license') ?? 'extended';
+
+ return collect(
+ config('language_strings.' . strtolower($license))
+ );
+}
+
/**
* Check if app is in dev mode
*
@@ -600,16 +613,16 @@ function is_dev()
function seems_utf8($str)
{
$length = strlen($str);
- for ($i=0; $i < $length; $i++) {
+ for ($i = 0; $i < $length; $i++) {
$c = ord($str[$i]);
if ($c < 0x80) $n = 0; # 0bbbbbbb
- elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb
- elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb
- elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb
- elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb
- elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b
+ elseif (($c & 0xE0) == 0xC0) $n = 1; # 110bbbbb
+ elseif (($c & 0xF0) == 0xE0) $n = 2; # 1110bbbb
+ elseif (($c & 0xF8) == 0xF0) $n = 3; # 11110bbb
+ elseif (($c & 0xFC) == 0xF8) $n = 4; # 111110bb
+ elseif (($c & 0xFE) == 0xFC) $n = 5; # 1111110b
else return false; # Does not match any model
- for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
+ for ($j = 0; $j < $n; $j++) { # n bytes matching 10bbbbbb follow ?
if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80))
return false;
}
@@ -625,124 +638,125 @@ function seems_utf8($str)
* @param string $string Text that might have accent characters
* @return string Filtered string with replaced "nice" characters.
*/
-function remove_accents($string) {
- if ( !preg_match('/[\x80-\xff]/', $string) )
+function remove_accents($string)
+{
+ if (!preg_match('/[\x80-\xff]/', $string))
return $string;
if (seems_utf8($string)) {
$chars = array(
// Decompositions for Latin-1 Supplement
- chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
- chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
- chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
- chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
- chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
- chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
- chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
- chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
- chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
- chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
- chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
- chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
- chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
- chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
- chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
- chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
- chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
- chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
- chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
- chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
- chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
- chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
- chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
- chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
- chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
- chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
- chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
- chr(195).chr(191) => 'y',
+ chr(195) . chr(128) => 'A', chr(195) . chr(129) => 'A',
+ chr(195) . chr(130) => 'A', chr(195) . chr(131) => 'A',
+ chr(195) . chr(132) => 'A', chr(195) . chr(133) => 'A',
+ chr(195) . chr(135) => 'C', chr(195) . chr(136) => 'E',
+ chr(195) . chr(137) => 'E', chr(195) . chr(138) => 'E',
+ chr(195) . chr(139) => 'E', chr(195) . chr(140) => 'I',
+ chr(195) . chr(141) => 'I', chr(195) . chr(142) => 'I',
+ chr(195) . chr(143) => 'I', chr(195) . chr(145) => 'N',
+ chr(195) . chr(146) => 'O', chr(195) . chr(147) => 'O',
+ chr(195) . chr(148) => 'O', chr(195) . chr(149) => 'O',
+ chr(195) . chr(150) => 'O', chr(195) . chr(153) => 'U',
+ chr(195) . chr(154) => 'U', chr(195) . chr(155) => 'U',
+ chr(195) . chr(156) => 'U', chr(195) . chr(157) => 'Y',
+ chr(195) . chr(159) => 's', chr(195) . chr(160) => 'a',
+ chr(195) . chr(161) => 'a', chr(195) . chr(162) => 'a',
+ chr(195) . chr(163) => 'a', chr(195) . chr(164) => 'a',
+ chr(195) . chr(165) => 'a', chr(195) . chr(167) => 'c',
+ chr(195) . chr(168) => 'e', chr(195) . chr(169) => 'e',
+ chr(195) . chr(170) => 'e', chr(195) . chr(171) => 'e',
+ chr(195) . chr(172) => 'i', chr(195) . chr(173) => 'i',
+ chr(195) . chr(174) => 'i', chr(195) . chr(175) => 'i',
+ chr(195) . chr(177) => 'n', chr(195) . chr(178) => 'o',
+ chr(195) . chr(179) => 'o', chr(195) . chr(180) => 'o',
+ chr(195) . chr(181) => 'o', chr(195) . chr(182) => 'o',
+ chr(195) . chr(182) => 'o', chr(195) . chr(185) => 'u',
+ chr(195) . chr(186) => 'u', chr(195) . chr(187) => 'u',
+ chr(195) . chr(188) => 'u', chr(195) . chr(189) => 'y',
+ chr(195) . chr(191) => 'y',
// Decompositions for Latin Extended-A
- chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
- chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
- chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
- chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
- chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
- chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
- chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
- chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
- chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
- chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
- chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
- chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
- chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
- chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
- chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
- chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
- chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
- chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
- chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
- chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
- chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
- chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
- chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
- chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
- chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
- chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
- chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
- chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
- chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
- chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
- chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
- chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
- chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
- chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
- chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
- chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
- chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
- chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
- chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
- chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
- chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
- chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
- chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
- chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
- chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
- chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
- chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
- chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
- chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
- chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
- chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
- chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
- chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
- chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
- chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
- chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
- chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
- chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
- chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
- chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
- chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
- chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
- chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
- chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
+ chr(196) . chr(128) => 'A', chr(196) . chr(129) => 'a',
+ chr(196) . chr(130) => 'A', chr(196) . chr(131) => 'a',
+ chr(196) . chr(132) => 'A', chr(196) . chr(133) => 'a',
+ chr(196) . chr(134) => 'C', chr(196) . chr(135) => 'c',
+ chr(196) . chr(136) => 'C', chr(196) . chr(137) => 'c',
+ chr(196) . chr(138) => 'C', chr(196) . chr(139) => 'c',
+ chr(196) . chr(140) => 'C', chr(196) . chr(141) => 'c',
+ chr(196) . chr(142) => 'D', chr(196) . chr(143) => 'd',
+ chr(196) . chr(144) => 'D', chr(196) . chr(145) => 'd',
+ chr(196) . chr(146) => 'E', chr(196) . chr(147) => 'e',
+ chr(196) . chr(148) => 'E', chr(196) . chr(149) => 'e',
+ chr(196) . chr(150) => 'E', chr(196) . chr(151) => 'e',
+ chr(196) . chr(152) => 'E', chr(196) . chr(153) => 'e',
+ chr(196) . chr(154) => 'E', chr(196) . chr(155) => 'e',
+ chr(196) . chr(156) => 'G', chr(196) . chr(157) => 'g',
+ chr(196) . chr(158) => 'G', chr(196) . chr(159) => 'g',
+ chr(196) . chr(160) => 'G', chr(196) . chr(161) => 'g',
+ chr(196) . chr(162) => 'G', chr(196) . chr(163) => 'g',
+ chr(196) . chr(164) => 'H', chr(196) . chr(165) => 'h',
+ chr(196) . chr(166) => 'H', chr(196) . chr(167) => 'h',
+ chr(196) . chr(168) => 'I', chr(196) . chr(169) => 'i',
+ chr(196) . chr(170) => 'I', chr(196) . chr(171) => 'i',
+ chr(196) . chr(172) => 'I', chr(196) . chr(173) => 'i',
+ chr(196) . chr(174) => 'I', chr(196) . chr(175) => 'i',
+ chr(196) . chr(176) => 'I', chr(196) . chr(177) => 'i',
+ chr(196) . chr(178) => 'IJ', chr(196) . chr(179) => 'ij',
+ chr(196) . chr(180) => 'J', chr(196) . chr(181) => 'j',
+ chr(196) . chr(182) => 'K', chr(196) . chr(183) => 'k',
+ chr(196) . chr(184) => 'k', chr(196) . chr(185) => 'L',
+ chr(196) . chr(186) => 'l', chr(196) . chr(187) => 'L',
+ chr(196) . chr(188) => 'l', chr(196) . chr(189) => 'L',
+ chr(196) . chr(190) => 'l', chr(196) . chr(191) => 'L',
+ chr(197) . chr(128) => 'l', chr(197) . chr(129) => 'L',
+ chr(197) . chr(130) => 'l', chr(197) . chr(131) => 'N',
+ chr(197) . chr(132) => 'n', chr(197) . chr(133) => 'N',
+ chr(197) . chr(134) => 'n', chr(197) . chr(135) => 'N',
+ chr(197) . chr(136) => 'n', chr(197) . chr(137) => 'N',
+ chr(197) . chr(138) => 'n', chr(197) . chr(139) => 'N',
+ chr(197) . chr(140) => 'O', chr(197) . chr(141) => 'o',
+ chr(197) . chr(142) => 'O', chr(197) . chr(143) => 'o',
+ chr(197) . chr(144) => 'O', chr(197) . chr(145) => 'o',
+ chr(197) . chr(146) => 'OE', chr(197) . chr(147) => 'oe',
+ chr(197) . chr(148) => 'R', chr(197) . chr(149) => 'r',
+ chr(197) . chr(150) => 'R', chr(197) . chr(151) => 'r',
+ chr(197) . chr(152) => 'R', chr(197) . chr(153) => 'r',
+ chr(197) . chr(154) => 'S', chr(197) . chr(155) => 's',
+ chr(197) . chr(156) => 'S', chr(197) . chr(157) => 's',
+ chr(197) . chr(158) => 'S', chr(197) . chr(159) => 's',
+ chr(197) . chr(160) => 'S', chr(197) . chr(161) => 's',
+ chr(197) . chr(162) => 'T', chr(197) . chr(163) => 't',
+ chr(197) . chr(164) => 'T', chr(197) . chr(165) => 't',
+ chr(197) . chr(166) => 'T', chr(197) . chr(167) => 't',
+ chr(197) . chr(168) => 'U', chr(197) . chr(169) => 'u',
+ chr(197) . chr(170) => 'U', chr(197) . chr(171) => 'u',
+ chr(197) . chr(172) => 'U', chr(197) . chr(173) => 'u',
+ chr(197) . chr(174) => 'U', chr(197) . chr(175) => 'u',
+ chr(197) . chr(176) => 'U', chr(197) . chr(177) => 'u',
+ chr(197) . chr(178) => 'U', chr(197) . chr(179) => 'u',
+ chr(197) . chr(180) => 'W', chr(197) . chr(181) => 'w',
+ chr(197) . chr(182) => 'Y', chr(197) . chr(183) => 'y',
+ chr(197) . chr(184) => 'Y', chr(197) . chr(185) => 'Z',
+ chr(197) . chr(186) => 'z', chr(197) . chr(187) => 'Z',
+ chr(197) . chr(188) => 'z', chr(197) . chr(189) => 'Z',
+ chr(197) . chr(190) => 'z', chr(197) . chr(191) => 's',
// Euro Sign
- chr(226).chr(130).chr(172) => 'E',
+ chr(226) . chr(130) . chr(172) => 'E',
// GBP (Pound) Sign
- chr(194).chr(163) => '');
+ chr(194) . chr(163) => '');
$string = strtr($string, $chars);
} else {
// Assume ISO-8859-1 if not UTF-8
- $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
- .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
- .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
- .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
- .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
- .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
- .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
- .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
- .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
- .chr(252).chr(253).chr(255);
+ $chars['in'] = chr(128) . chr(131) . chr(138) . chr(142) . chr(154) . chr(158)
+ . chr(159) . chr(162) . chr(165) . chr(181) . chr(192) . chr(193) . chr(194)
+ . chr(195) . chr(196) . chr(197) . chr(199) . chr(200) . chr(201) . chr(202)
+ . chr(203) . chr(204) . chr(205) . chr(206) . chr(207) . chr(209) . chr(210)
+ . chr(211) . chr(212) . chr(213) . chr(214) . chr(216) . chr(217) . chr(218)
+ . chr(219) . chr(220) . chr(221) . chr(224) . chr(225) . chr(226) . chr(227)
+ . chr(228) . chr(229) . chr(231) . chr(232) . chr(233) . chr(234) . chr(235)
+ . chr(236) . chr(237) . chr(238) . chr(239) . chr(241) . chr(242) . chr(243)
+ . chr(244) . chr(245) . chr(246) . chr(248) . chr(249) . chr(250) . chr(251)
+ . chr(252) . chr(253) . chr(255);
$chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
@@ -754,6 +768,7 @@ function remove_accents($string) {
return $string;
}
+
/**
* Get all files from folder and get their folder location in VueFileManager directories
*
@@ -793,16 +808,16 @@ function get_files_for_zip($folders, $files, $path = [])
}
/**
- * Set time by user timezone GMT
+ * Set time by user timezone GMT
*
* @param $time
- * @return int
+ * @return Carbon
*/
function set_time_by_user_timezone($time)
{
$user = Auth::user();
- if($user) {
+ if ($user) {
// Get the value of timezone if user have some
$time_zone = intval($user->settings->timezone * 60 ?? null);
@@ -811,56 +826,55 @@ function set_time_by_user_timezone($time)
}
return Carbon::parse($time);
-
}
+/**
+ * Translate the given message.
+ *
+ * @param $key
+ * @param null $values
+ * @return string|string[]
+ */
function __t($key, $values = null)
{
- // Check if is in cache save default_language
- if (Cache::has('default_language')) {
+ // Get current locale
+ $locale = cache()->rememberForever('language', function () {
+ return get_setting('language') ?? 'en';
+ });
- $locale = Cache::get('default_language');
- } else {
+ $strings = cache()->rememberForever("language-strings-$locale", function () use ($locale) {
+ return Language::whereLocale($locale)->first()->languageStrings ?? get_default_language_strings();
+ });
- $locale = Cache::rememberForever('default_language', function () {
- return get_setting('language');
- });
- }
+ // Find the string by key
+ $string = $strings->get($key)
+ ? $strings->get($key)
+ : $strings->firstWhere('key', $key)->value;
- // Check if cash has string
- if (Cache::has('language_strings-' . $locale)) {
-
- $strings = Cache::get('language_strings-' . $locale)
- ->languageStrings;
-
- // Find the string by key
- $string = $strings->firstWhere('key', $key)->value;
- }
-
- // If cash dont have string return string from database
- $string = LanguageString::whereLangAndKey($locale, $key)
- ->first()
- ->value;
-
- if($values) {
- return adjust_value($string, $values);
+ if ($values) {
+ return replace_occurrence($string, collect($values));
}
return $string;
}
-function adjust_value($string, $values)
+/**
+ * Replace string occurrence in __t() by their values
+ *
+ * @param $string
+ * @param $values
+ * @return string|string[]
+ */
+function replace_occurrence($string, $values)
{
- $search = [];
- $replace = [];
-
- if($values) {
- foreach($values as $key => $variable) {
- array_push($search, ':' . $key);
- array_push($replace, $variable);
- }
- }
-
- return str_ireplace($search, $replace, $string);
+ $occurrences = $values->map(function ($message, $key) {
+ return [
+ 'key' => ":$key",
+ 'message' => $message,
+ ];
+ });
+ return str_ireplace(
+ $occurrences->pluck('key')->toArray(), $occurrences->pluck('message')->toArray(), $string
+ );
}
diff --git a/app/Models/Language.php b/app/Models/Language.php
index 00ef10bc..6d1f2124 100644
--- a/app/Models/Language.php
+++ b/app/Models/Language.php
@@ -2,24 +2,27 @@
namespace App\Models;
-use App\Models\LanguageString;
+use App\Services\HelperService;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Cache;
use Illuminate\Database\Eloquent\Model;
class Language extends Model
{
-
- protected $guarded = ['id'];
+ protected $guarded = [
+ 'id'
+ ];
protected $keyType = 'string';
protected $primaryKey = 'id';
- public $incrementing = false ;
+ public $incrementing = false;
- public $timestamps = false;
+ public function languageStrings()
+ {
+ return $this->hasMany(LanguageString::class, 'lang', 'locale');
+ }
protected static function boot()
{
@@ -27,45 +30,23 @@ class Language extends Model
static::creating(function ($language) {
$language->id = Str::uuid();
+
+ resolve(HelperService::class)
+ ->create_default_language_strings(
+ get_setting('license') ?? 'extended', $language->locale
+ );
+ });
+
+ static::updating(function ($language) {
+ cache()->forget("language-strings-$language->locale");
});
static::deleting(function ($language) {
DB::table('language_strings')
- ->where('lang', $language->locale)
+ ->whereLang($language->locale)
->delete();
-
- Cache::forget('language_strings-' . $language->locale );
+
+ cache()->forget("language-strings-$language->locale");
});
-
- static::updated(function($language) {
- Cache::forget('language_strings-' . $language->locale );
-
- });
-
- static::created(function ($language) {
-
- $license = get_setting('license') === 'Extended' ? 'extended' : 'regular';
-
- $language_strings = collect(config('language_strings.' . $license));
-
- $strings = $language_strings->map(function ($value , $key) use($language) {
-
- return [
- 'key' => $key,
- 'lang' => $language->locale,
- 'value' => $value
- ];
-
- })->toArray();
-
- DB::table('language_strings')
- ->insert($strings);
-
- });
- }
-
- public function languageStrings()
- {
- return $this->hasMany('App\LanguageString', 'lang', 'locale');
}
}
diff --git a/app/Models/LanguageString.php b/app/Models/LanguageString.php
index f626041a..1ef6b09f 100644
--- a/app/Models/LanguageString.php
+++ b/app/Models/LanguageString.php
@@ -2,7 +2,6 @@
namespace App\Models;
-use Illuminate\Support\Facades\Cache;
use Illuminate\Database\Eloquent\Model;
class LanguageString extends Model
@@ -13,16 +12,7 @@ class LanguageString extends Model
public $incrementing = false;
- protected $fillable = ['value' ,'key', 'lang'];
-
- protected static function boot()
- {
- parent::boot();
-
- static::updated(function() {
- dd('test');
- // Cache::forget('language_strings');
- });
- }
-
+ protected $fillable = [
+ 'value'
+ ];
}
diff --git a/app/Notifications/SharedSendViaEmail.php b/app/Notifications/SharedSendViaEmail.php
index 01e6008e..adb8f9a2 100644
--- a/app/Notifications/SharedSendViaEmail.php
+++ b/app/Notifications/SharedSendViaEmail.php
@@ -43,7 +43,7 @@ class SharedSendViaEmail extends Notification
public function toMail($notifiable)
{
return (new MailMessage)
- ->subject(__t('shared_link_email_subject' , ['user' => $this->user->name]))
+ ->subject(__t('shared_link_email_subject', ['user' => $this->user->name]))
->greeting(__t('shared_link_email_greeting'))
->line(__t('shared_link_email_user', ['user' => $this->user->name, 'email' => $this->user->email]))
->action(__t('shared_link_email_link'), url('/shared', ['token' => $this->token]))
diff --git a/app/Services/HelperService.php b/app/Services/HelperService.php
index beb52c7d..35989079 100644
--- a/app/Services/HelperService.php
+++ b/app/Services/HelperService.php
@@ -59,15 +59,15 @@ class HelperService
$accessible_folder_ids = Arr::flatten([filter_folders_ids($foldersIds), $shared->item_id]);
// Check user access
- if ( is_array($requested_id) ) {
+ if (is_array($requested_id)) {
foreach ($requested_id as $id) {
if (!in_array($id, $accessible_folder_ids))
abort(403);
}
}
- if (! is_array($requested_id)) {
- if (! in_array($requested_id, $accessible_folder_ids))
+ if (!is_array($requested_id)) {
+ if (!in_array($requested_id, $accessible_folder_ids))
abort(403);
}
}
@@ -323,4 +323,23 @@ class HelperService
}
}
}
+
+ /**
+ * @param $license
+ * @param $locale
+ */
+ function create_default_language_strings($license, $locale)
+ {
+ $strings = collect(config('language_strings.' . strtolower($license)))
+ ->map(function ($value, $key) use ($locale) {
+
+ return [
+ 'lang' => $locale,
+ 'value' => $value,
+ 'key' => $key,
+ ];
+ })->toArray();
+
+ DB::table('language_strings')->insert($strings);
+ }
}
\ No newline at end of file
diff --git a/app/Services/SetupService.php b/app/Services/SetupService.php
index 21f4346a..607734be 100644
--- a/app/Services/SetupService.php
+++ b/app/Services/SetupService.php
@@ -2,9 +2,12 @@
namespace App\Services;
+use App\Models\Language;
use App\Models\Page;
use App\Models\Setting;
+use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
+use Symfony\Component\Console\Helper\Helper;
class SetupService
{
@@ -48,4 +51,22 @@ class SetupService
Setting::forceCreate($content);
});
}
+
+ /**
+ * Store default VueFileManager settings into database
+ *
+ * @param $license
+ */
+ public function seed_default_language()
+ {
+ Language::create([
+ 'name' => 'English',
+ 'locale' => 'en'
+ ]);
+
+ Setting::create([
+ 'name' => 'language',
+ 'value' => 'en',
+ ]);
+ }
}
\ No newline at end of file
diff --git a/config/language_strings.php b/config/language_strings.php
index 44ed5918..4b88bcbc 100644
--- a/config/language_strings.php
+++ b/config/language_strings.php
@@ -1,1222 +1,1221 @@
[
- "actions.close" => "Close",
- "actions.create_folder" => "Create folder",
- "actions.delete" => "Delete item",
- "actions.download" => "Download item",
- "actions.info_panel" => "Info panel",
- "actions.move" => "Move item",
- "actions.preview" => "Change preview",
- "actions.print" => "Print item",
- "actions.share" => "Share item",
- "actions.sorting_view" => "Sorting and View",
- "actions.upload" => "Upload file",
- "activation.stripe.button" => "Set up your Stripe account",
- "activation.stripe.description" => "To charge your users, please set up your Stripe account credentials.",
- "activation.stripe.title" => "Your Stripe account is not set",
- "admin_menu.dashboard" => "Dashboard",
- "admin_menu.invoices" => "Invoices",
- "admin_menu.pages" => "Pages",
- "admin_menu.plans" => "Plans",
- "admin_menu.settings" => "Settings",
- "admin_menu.users" => "Users",
- "admin_menu.languages" => "Languages",
- "admin_page_dashboard.backer_button" => "Help Us Improve",
- "admin_page_dashboard.license" => "License",
- "admin_page_dashboard.version" => "Version",
- "admin_page_dashboard.w_latest_users.title" => "Latest Registrations",
- "admin_page_dashboard.w_total_premium.link" => "Show All Plans",
- "admin_page_dashboard.w_total_premium.title" => "Total Premium Users",
- "admin_page_dashboard.w_total_space.link" => "Show All Users",
- "admin_page_dashboard.w_total_space.title" => "Total Space Used",
- "admin_page_dashboard.w_total_users.link" => "Show All Users",
- "admin_page_dashboard.w_total_users.title" => "Total Users",
- "admin_page_invoices.empty.description" => "All customers invoices will be showed here.",
- "admin_page_invoices.empty.title" => "You don’t have any invoices yet",
- "admin_page_invoices.table.number" => "Invoice Number",
- "admin_page_invoices.table.payed" => "Payed",
- "admin_page_invoices.table.plan" => "Plan",
- "admin_page_invoices.table.total" => "Total",
- "admin_page_invoices.table.user" => "User",
- "admin_page_plans.create_plan_button" => "Create Plan",
- "admin_page_plans.delete_plan_button" => "Delete Plan",
- "admin_page_plans.disclaimer_delete_plan" => "You can delete this plan, but, pay attention! Your plan will be deleted, but users who are subscribed with this plan, will be still charged unless they cancel subscription.",
- "admin_page_plans.disclaimer_edit_price" => "Price change for your plan is not available due to Stripe service design. If you wish change your price plan, please, create new plan.",
- "admin_page_plans.empty.button" => "Create New Plan",
- "admin_page_plans.empty.description" => "For create new plan, click on button below.",
- "admin_page_plans.empty.title" => "You don’t have any plan yet",
- "admin_page_plans.form.description" => "Description (optional)",
- "admin_page_plans.form.description_plac" => "Plan description",
- "admin_page_plans.form.name" => "Name",
- "admin_page_plans.form.name_delete_plac" => "Type plan name",
- "admin_page_plans.form.name_plac" => "Plan name",
- "admin_page_plans.form.price" => "Price",
- "admin_page_plans.form.price_plac" => "Plan price",
- "admin_page_plans.form.status" => "Status",
- "admin_page_plans.form.status_help" => "Status of your plan availability on website.",
- "admin_page_plans.form.storage" => "Storage Capacity in GB",
- "admin_page_plans.form.storage_helper" => "You have to type only number e.g. value '5' means, user will have 5GB of storage capacity.",
- "admin_page_plans.form.storage_plac" => "Storage capacity",
- "admin_page_plans.form.title_delete" => "Delete Plan",
- "admin_page_plans.form.title_details" => "Plan Details",
- "admin_page_plans.form.title_pricing" => "Plan Pricing",
- "admin_page_plans.subscribers.empty" => "There is no any subscriber yet.",
- "admin_page_plans.table.name" => "Plan Name",
- "admin_page_plans.table.price" => "Price",
- "admin_page_plans.table.status" => "Status",
- "admin_page_plans.table.storage_capacity" => "Storage Capacity",
- "admin_page_plans.table.subscribers" => "Subscribers",
- "admin_page_plans.tabs.delete" => "Delete Plan",
- "admin_page_plans.tabs.settings" => "Settings",
- "admin_page_plans.tabs.subscribers" => "Subscribers",
- "admin_page_user.change_capacity" => "Change Capacity",
- "admin_page_user.create_user.avatar" => "Avatar",
- "admin_page_user.create_user.group_details" => "Account Details",
- "admin_page_user.create_user.group_settings" => "Account Settings",
- "admin_page_user.create_user.label_conf_pass" => "Confirm password",
- "admin_page_user.create_user.label_email" => "Type E-mail",
- "admin_page_user.create_user.label_name" => "Type full name",
- "admin_page_user.create_user.submit" => "Create User",
- "admin_page_user.delete_user" => "Delete User",
- "admin_page_user.invoices.empty" => "User don't have any invoices yet.",
- "admin_page_user.label_change_capacity" => "Type storage capacity in GB",
- "admin_page_user.label_delete_user" => "Type with Case Sensitive user name ‘{user}‘",
- "admin_page_user.label_person_info" => "Personal Information",
- "admin_page_user.placeholder_delete_user" => "Type here",
- "admin_page_user.save_role" => "Save Role",
- "admin_page_user.select_role" => "Select user role",
- "admin_page_user.send_password_link" => "Send Password Reset Link",
- "admin_page_user.subscription.empty" => "User don't have any subscription yet.",
- "admin_page_user.subscription.interval_mo" => "Monthly",
- "admin_page_user.table.action" => "Action",
- "admin_page_user.table.created_at" => "Registered",
- "admin_page_user.table.name" => "User",
- "admin_page_user.table.plan" => "Subscription Plan",
- "admin_page_user.table.role" => "Role",
- "admin_page_user.table.storage_capacity" => "Storage Capacity",
- "admin_page_user.table.storage_used" => "Storage Used",
- "admin_page_user.tabs.delete" => "Delete User",
- "admin_page_user.tabs.detail" => "Detail",
- "admin_page_user.tabs.invoices" => "Invoices",
- "admin_page_user.tabs.password" => "Password",
- "admin_page_user.tabs.storage" => "Storage Usage",
- "admin_page_user.tabs.subscription" => "Subscription",
- "admin_pages.form.content" => "Content",
- "admin_pages.form.content_plac" => "Type your content here...",
- "admin_pages.form.slug" => "Slug",
- "admin_pages.form.title" => "Title",
- "admin_pages.form.title_plac" => "Title name",
- "admin_pages.form.visibility" => "Visibility",
- "admin_pages.form.visibility_help" => "Status of your page visibility on website.",
- "admin_pages.table.page" => "Page",
- "admin_pages.table.slug" => "Slug",
- "admin_pages.table.status" => "Status",
- "admin_settings.appearance.description" => "App Description",
- "admin_settings.appearance.description_plac" => "Type your app description",
- "admin_settings.appearance.favicon" => "App Favicon (optional)",
- "admin_settings.appearance.logo" => "App Logo (optional)",
- "admin_settings.appearance.logo_horizontal" => "App Logo Horizontal (optional)",
- "admin_settings.appearance.section_appearance" => "Appearance",
- "admin_settings.appearance.section_general" => "General Settings",
- "admin_settings.appearance.title" => "App Title",
- "admin_settings.appearance.title_plac" => "Type your app title",
- "admin_settings.billings.address" => "Billing Address",
- "admin_settings.billings.address_plac" => "Type your billing address",
- "admin_settings.billings.city" => "Billing City",
- "admin_settings.billings.city_plac" => "Type your billing city",
- "admin_settings.billings.company_name" => "Company Name",
- "admin_settings.billings.company_name_plac" => "Type your company name",
- "admin_settings.billings.country" => "Billing Country",
- "admin_settings.billings.country_plac" => "Select your billing country",
- "admin_settings.billings.phone_number" => "Billing Phone Number (optional)",
- "admin_settings.billings.phone_number_plac" => "Type your billing phone number",
- "admin_settings.billings.postal_code" => "Billing Postal Code",
- "admin_settings.billings.postal_code_plac" => "Type your billing postal code",
- "admin_settings.billings.section_billing" => "Billing Information",
- "admin_settings.billings.section_company" => "Company Information",
- "admin_settings.billings.state" => "Billing State",
- "admin_settings.billings.state_plac" => "Type your billing state",
- "admin_settings.billings.vat" => "VAT Number",
- "admin_settings.billings.vat_plac" => "Type your VAT number",
- "admin_settings.email.driver" => "Mail Driver",
- "admin_settings.email.driver_plac" => "Type your mail driver",
- "admin_settings.email.email_disclaimer" => "This form is not fully pre-filled for security reasons. Your email settings is available in your .env file. For apply new Email settings, please confirm your options by button at the end of formular.",
- "admin_settings.email.encryption" => "Mail Encryption",
- "admin_settings.email.encryption_plac" => "Select your mail encryption",
- "admin_settings.email.host" => "Mail Host",
- "admin_settings.email.host_plac" => "Type your mail host",
- "admin_settings.email.password" => "Mail Password",
- "admin_settings.email.password_plac" => "Type your mail password",
- "admin_settings.email.port" => "Mail Port",
- "admin_settings.email.port_plac" => "Type your mail port",
- "admin_settings.email.save_button" => "Save Email Settings",
- "admin_settings.email.section_email" => "Email Setup",
- "admin_settings.email.username" => "Mail Username",
- "admin_settings.email.username_plac" => "Type your mail username",
- "admin_settings.others.allow_registration" => "Allow User Registration",
- "admin_settings.others.allow_registration_help" => "You can disable public registration for new users. You will still able to
create new users in administration panel.",
- "admin_settings.others.cache_clear" => "Clear Cache",
- "admin_settings.others.cache_disclaimer" => "Did you change anything in your .env file or change your Stripe credentials? Then clear your cache.",
- "admin_settings.others.contact_email" => "Contact Email",
- "admin_settings.others.contact_email_plac" => "Type your contact email",
- "admin_settings.others.default_storage" => "Default Storage Space for User Accounts",
- "admin_settings.others.default_storage_plac" => "Set default storage space in GB",
- "admin_settings.others.google_analytics" => "Google Analytics Code (optional)",
- "admin_settings.others.google_analytics_plac" => "Paste your Google Analytics Code",
- "admin_settings.others.mimetypes_blacklist" => "Mimetypes Blacklist",
- "admin_settings.others.mimetypes_blacklist_help" => "If you want to prevent upload some type of files, just add them to blacklist like this: x-php,mp3,jpeg
Use a comma between each mimetype. Don't use a dot before mimetypes.",
- "admin_settings.others.mimetypes_blacklist_plac" => "Add mimetypes to Blacklist",
- "admin_settings.others.section_cache" => "Application Cache",
- "admin_settings.others.section_others" => "Others Settings",
- "admin_settings.others.section_user" => "Users and Storage",
- "admin_settings.others.storage_limit" => "Storage Limitation",
- "admin_settings.others.storage_limit_help" => "If this value is off, all users will have infinity storage capacity and you won't be
able to charge your users for storage plan.",
- "admin_settings.others.upload_limit" => "Upload Limit",
- "admin_settings.others.upload_limit_help" => "If you want to set max file size limit on single upload, add size of your limit in MB. E.g. 100 means 100 MB and 2 000 means 2 000 MB limit.",
- "admin_settings.others.upload_limit_plac" => "Type your upload limit in MB",
- "admin_settings.payments.allow_payments" => "Allow Subscription Payments",
- "admin_settings.payments.button_submit" => "Test and Save Stripe",
- "admin_settings.payments.button_testing" => "Testing Stripe Connection",
- "admin_settings.payments.credentials_disclaimer" => "Your Stripe credentials is not showed because these values are secret and must not be revealed by stranger. You can change your Stripe credentials in your .env file.",
- "admin_settings.payments.section_payments" => "Stripe Payments",
- "admin_settings.payments.stripe_create_acc" => "If you don’t have stripe account, please register here and get your Publishable Key, Secret Key and create your webhook.",
- "admin_settings.payments.stripe_create_webhook" => "You have to create webhook endpoint in your Stripe Dashboard. You can find it in Dashboard -> Developers -> Webhooks -> Add Endpoint. In Endpoint URL please copy and paste url bellow. Make sure, this url is your public domain, not localhost. In events section, please click on receive all events. That's all.",
- "admin_settings.payments.stripe_currency" => "Stripe Currency",
- "admin_settings.payments.stripe_currency_plac" => "Select your Stripe currency",
- "admin_settings.payments.stripe_pub_key" => "Publishable Key",
- "admin_settings.payments.stripe_pub_key_plac" => "Paste your publishable key",
- "admin_settings.payments.stripe_sec_key" => "Secret Key",
- "admin_settings.payments.stripe_sec_key_plac" => "Paste your secret key",
- "admin_settings.payments.stripe_setup" => "Stripe Setup",
- "admin_settings.payments.stripe_webhook_key_plac" => "Paste your stripe webhook secret",
- "admin_settings.payments.webhook_url" => "Stripe webhook URL",
- "admin_settings.tabs.appearance" => "Appearance",
- "admin_settings.tabs.billings" => "Billings",
- "admin_settings.tabs.email" => "Email",
- "admin_settings.tabs.others" => "Application",
- "admin_settings.tabs.payments" => "Payments",
- "alerts.error_confirm" => "That’s horrible!",
- "alerts.leave_to_sign_in" => "Do you really want to leave?",
- "alerts.success_confirm" => "Awesome!",
- "context_menu.add_folder" => "Add Folder",
- "context_menu.add_to_favourites" => "Add to Favourites",
- "context_menu.create_folder" => "Create Folder",
- "context_menu.delete" => "Delete",
- "context_menu.detail" => "Detail",
- "context_menu.download" => "Download",
- "context_menu.empty_trash" => "Empty Trash",
- "context_menu.log_out" => "Log Out",
- "context_menu.move" => "Move",
- "context_menu.no_options" => "No Options Available",
- "context_menu.profile_settings" => "Profile Settings",
- "context_menu.remove_from_favourites" => "Remove Favourite",
- "context_menu.rename" => "Rename",
- "context_menu.restore" => "Restore",
- "context_menu.select" => "Select",
- "context_menu.share" => "Share",
- "context_menu.share_cancel" => "Cancel Sharing",
- "context_menu.share_edit" => "Edit Sharing",
- "context_menu.upload" => "Upload",
- "context_menu.zip_folder" => "Zip and Download",
- "cookie_disclaimer.button" => "cookies policy",
- "cookie_disclaimer.description" => "By browsing this website you are agreeing to our {0}.",
- "datatable.paginate_info" => "Showing 1 - {visible} from {total} records",
- "empty_page.call_to_action" => "Upload Files",
- "empty_page.description" => "Upload some files here easily via upload button.",
- "empty_page.title" => "Upload Your First File",
- "errors.capacity_digit" => "The storage capacity must be lower than 10 digit number.",
- "file_detail.author" => "Author",
- "file_detail.author_participant" => "Public Participant",
- "file_detail.created_at" => "Created at",
- "file_detail.items" => "Items",
- "file_detail.selected_multiple" => "Selected Multiple Items",
- "file_detail.shared" => "Shared",
- "file_detail.size" => "Size",
- "file_detail.where" => "Where",
- "file_detail_meta.aperature" => "F Number",
- "file_detail_meta.aperture_value" => "Aperture Value",
- "file_detail_meta.author" => "Author",
- "file_detail_meta.camera_lens" => "Camera Lens",
- "file_detail_meta.color_space" => "Color Space",
- "file_detail_meta.dimension" => "Dimensions",
- "file_detail_meta.exposure" => "Exposure Time",
- "file_detail_meta.focal" => "Focal Length",
- "file_detail_meta.iso" => "ISO",
- "file_detail_meta.latitude" => "Latitude",
- "file_detail_meta.longitude" => "Longitude",
- "file_detail_meta.make" => "Camera",
- "file_detail_meta.meta_data" => "Metadata",
- "file_detail_meta.model" => "Model",
- "file_detail_meta.resolution" => "Resolution",
- "file_detail_meta.time_data" => "Content Created",
- "folder.empty" => "Empty",
- "folder.item_counts" => "{count} Item | {count} Items",
- "global.active" => "Active",
- "global.admin" => "Admin",
- "global.cancel" => "Cancel",
- "global.canceled" => "Canceled",
- "global.confirm_action" => "Yes, I'm sure",
- "global.default" => "Default",
- "global.free" => "Free",
- "global.get_it" => "Get It",
- "global.incomplete" => "Incomplete",
- "global.menu" => "Menu",
- "global.monthly_ac" => "Mo.",
- "global.or" => "or",
- "global.premium" => "Premium",
- "global.saas" => "Services",
- "global.subscription" => "Subscription",
- "global.total" => "Total",
- "global.upgrade_plan" => "Upgrade Plan",
- "incomplete_payment.description" => "Your latest payment is incomplete. {0}",
- "incomplete_payment.href" => "Please confirm your payment.",
- "input_image.supported" => "Supported formats are .png, .jpg, .jpeg.",
- "input_image.title" => "Upload Image",
- "inputs.placeholder_search_files" => "Search files or folders...",
- "item_thumbnail.deleted_at" => "Deleted {time}",
- "item_thumbnail.original_location" => "Original Location",
- "locations.home" => "Files",
- "locations.logout" => "Log Out",
- "locations.profile" => "Profile",
- "locations.settings" => "Settings",
- "locations.shared" => "Shared",
- "locations.trash" => "Trash",
- "menu.admin" => "Administration",
- "menu.files" => "Files",
- "menu.invoices" => "Invoices",
- "menu.latest" => "Recent Uploads",
- "menu.logout" => "Log Out",
- "menu.password" => "Password",
- "menu.payment_cards" => "Payment Cards",
- "menu.profile" => "Profile Settings",
- "menu.settings" => "Settings",
- "menu.shared" => "Shared Files",
- "menu.storage" => "Storage",
- "menu.subscription" => "Subscription",
- "menu.trash" => "Trash",
- "messages.nothing_from_participants" => "You don't have any uploads from other users.",
- "messages.nothing_to_preview" => "There is nothing to preview.",
- "messages.nothing_was_found" => "Nothing was found.",
- "mobile_selecting.deselect_all" => "Deselect All",
- "mobile_selecting.done" => "Done",
- "mobile_selecting.select_all" => "Select All",
- "notice.stripe_activation" => "Your Stripe account is not set. To charging your users please {0}.",
- "notice.stripe_activation_button" => "set up your Stripe account",
- "page_contact_us.description" => "Do you have any questions? Get in touch with us.",
- "page_contact_us.error_message" => "Something went wrong, please try it again.",
- "page_contact_us.form.email" => "Email",
- "page_contact_us.form.email_plac" => "Type your email",
- "page_contact_us.form.message" => "Message",
- "page_contact_us.form.message_plac" => "Type your message here...",
- "page_contact_us.form.submit_button" => "Send Message",
- "page_contact_us.success_message" => "Your message was send successfully.",
- "page_contact_us.title" => "Contact Us",
- "page_create_password.button_update" => "Update Password",
- "page_create_password.label_confirm_pass" => "Confirm password",
- "page_create_password.label_email" => "Email",
- "page_create_password.label_new_pass" => "New password",
- "page_create_password.subtitle" => "Create your new password here",
- "page_create_password.title" => "Only One Step to Log In",
- "page_forgotten_password.button_get_link" => "Get Link",
- "page_forgotten_password.pass_reseted_signin" => "Sign In",
- "page_forgotten_password.pass_reseted_subtitle" => "Your password was reset successfully.",
- "page_forgotten_password.pass_reseted_title" => "Awesome!",
- "page_forgotten_password.pass_sennded_subtitle" => "We have e-mailed your password reset link!",
- "page_forgotten_password.pass_sennded_title" => "Thank you!",
- "page_forgotten_password.password_remember_button" => "Log In.",
- "page_forgotten_password.password_remember_text" => "Remember your password?",
- "page_forgotten_password.subtitle" => "Get reset link with your email",
- "page_forgotten_password.title" => "Forgotten Password?",
- "page_index.get_started_button" => "Sign Up Now",
- "page_index.menu.contact_us" => "Contact Us",
- "page_index.menu.log_in" => "Log In",
- "page_index.menu.pricing" => "Pricing",
- "page_index.menu.sign_in" => "Sign Up",
- "page_index.sign_feature_1" => "No credit card required",
- "page_index.sign_feature_2" => "{defaultSpace} Free storage space",
- "page_index.sign_up_button" => "Sign Up Now",
- "page_login.button_next" => "Next Step",
- "page_login.placeholder_email" => "Type your E-mail",
- "page_login.registration_button" => "Register account.",
- "page_login.registration_text" => "Don’t have an account?",
- "page_login.subtitle" => "Please type your email to log in",
- "page_login.title" => "Welcome Back!",
- "page_pricing_tables.description" => "Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.",
- "page_pricing_tables.storage_capacity" => "Of Storage Capacity",
- "page_pricing_tables.title" => "Choose Your Plan",
- "page_pricing_tables.vat_excluded" => "Price displayed excludes VAT.",
- "page_registration.agreement" => "By clicking on 'Create Account' button I agree to the {0} and {1}.",
- "page_registration.button_create_account" => "Create Account",
- "page_registration.have_an_account" => "Do you have an account?",
- "page_registration.label_confirm_pass" => "Confirm password",
- "page_registration.label_email" => "Email",
- "page_registration.label_name" => "Full Name",
- "page_registration.label_pass" => "Create password",
- "page_registration.placeholder_confirm_pass" => "Confirm your new password",
- "page_registration.placeholder_email" => "Type your E-mail",
- "page_registration.placeholder_name" => "Type your full name",
- "page_registration.placeholder_pass" => "New password",
- "page_registration.subtitle" => "Please fill registration to create account",
- "page_registration.title" => "Create New Account",
- "page_shared.download_file" => "Download File",
- "page_shared.placeholder_pass" => "Type password",
- "page_shared.submit" => "Submit",
- "page_shared.subtitle" => "Please type the password to get shared content",
- "page_shared.title" => "Your Share Link is Protected",
- "page_shared_404.subtitle" => "The content you are finding was probably deleted.",
- "page_shared_404.title" => "Not Found :(",
- "page_sign_in.button_log_in" => "Log In",
- "page_sign_in.password_reset_button" => "Reset Password.",
- "page_sign_in.password_reset_text" => "Forgotten your password?",
- "page_sign_in.placeholder_password" => "Type your password",
- "page_sign_in.subtitle" => "Confirm you by your password",
- "page_sign_in.title" => "Are You {name}?",
- "page_upgrade_account.change_payment.change_payment" => "change your default payment method",
- "page_upgrade_account.change_payment.pay_by_new_card" => "pay by new credit card",
- "page_upgrade_account.change_payment.you_can" => "Also you can",
- "page_upgrade_account.desription" => "Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.",
- "page_upgrade_account.errors.pay_by_another_card" => "Please pay by another payment card",
- "page_upgrade_account.section_billing" => "Billing Information",
- "page_upgrade_account.section_card" => "Payment Card",
- "page_upgrade_account.section_summary" => "Order Summary",
- "page_upgrade_account.summary.period" => "Billed monthly",
- "page_upgrade_account.summary.submit_button" => "Pay with credit card",
- "page_upgrade_account.summary.submit_disclaimer" => "By submit form, you agree to save the payment method and billing information in your {app} account.",
- "page_upgrade_account.summary.total_with_vat" => "Total with VAT",
- "page_upgrade_account.summary.vat" => "VAT",
- "page_upgrade_account.title" => "Choose Payment Method",
- "popup_create_folder.folder_default_name" => "New Folder",
- "popup_create_folder.label" => "Type Name",
- "popup_create_folder.placeholder" => "Type your name",
- "popup_create_folder.title" => "Create Folder",
- "popup_delete_card.message" => "This event is irreversible and your payment card will be delete forever",
- "popup_delete_card.title" => "Are you sure?",
- "popup_deleted_plan.message" => "Your plan was successfully deleted.",
- "popup_deleted_plan.title" => "Plan was deleted",
- "popup_deleted_user.message" => "Your user was deleted with all user data content.",
- "popup_deleted_user.title" => "User was deleted",
- "popup_deleted_user_aborted.message" => "You can't delete this account while user have active subscription.",
- "popup_deleted_user_aborted.title" => "User wasn't deleted",
- "popup_error.message" => "Something went wrong and we can't continue. Please contact us.",
- "popup_error.title" => "Whooops, something went wrong!",
- "popup_exceed_limit.message" => "Please contact your administrator to change your limit.",
- "popup_exceed_limit.title" => "Whooops, you exceed storage limit :(",
- "popup_mimetypes_blacklist.message" => "File of this type ({mimetype}) is not allowed to upload.",
- "popup_mimetypes_blacklist.title" => "You are trying to upload unsupported file type",
- "popup_move_item.cancel" => "Cancel",
- "popup_move_item.submit" => "Move Item",
- "popup_move_item.title" => "Move Item",
- "popup_pass_changed.message" => "So now, you have awesome new password.",
- "popup_pass_changed.title" => "Your password was changed!",
- "popup_passport_error.message" => "Probably you didn't generated Passport Grant client or you didn't set up passport credentials in your .env file. Please follow install instructions.",
- "popup_passport_error.title" => "Invalid Passport Grand Client",
- "popup_paylod_error.message" => "Sorry, your file is too large and can't be uploaded",
- "popup_paylod_error.title" => "File is too large",
- "popup_rename.select_emoji_label" => "Pick Your Emoji Icon",
- "popup_rename.color_pick_label" => "Pick Your Color",
- "popup_rename.emoji_list_not_found" => "Not Found",
- "popup_rename.label" => "Edit Name",
- "popup_rename.placeholder" => "Type your title",
- "popup_rename.search_emoji_input_placeholder" => "Search your emoji...",
- "popup_rename.set_emoji_input_placeholder" => "Emojis List...",
- "popup_rename.tab_color_title" => "Folder Color",
- "popup_rename.tab_emoji_title" => "Emoji as an Icon",
- "popup_rename.title" => "Rename Your {item}",
- "popup_set_card.message" => "Your card will be set as default and will be always charged for the next billings.",
- "popup_set_card.title" => "Set as default card?",
- "popup_share_create.title" => "Share Your {item}",
- "popup_share_edit.change_pass" => "Change Password",
- "popup_share_edit.confirm" => "Confirm",
- "popup_share_edit.go_back" => "Go Back",
- "popup_share_edit.save" => "Save Changes",
- "popup_share_edit.send_to_recipients" => "Send to Recipients",
- "popup_share_edit.stop" => "Cancel Sharing",
- "popup_share_edit.title" => "Update sharing options",
- "popup_signup_error.message" => "Please check your database connection if everything works correctly.",
- "popup_signup_error.title" => "Server Error",
- "popup_subscription_cancel.button" => "I'm done",
- "popup_subscription_cancel.message" => "You'll continue to have access to the features you've paid for until the end of your billing cycle.",
- "popup_subscription_cancel.title" => "Subscription Was Canceled",
- "popup_subscription_resumed.button" => "That's awesome!",
- "popup_subscription_resumed.message" => "Your subscription was re-activated, and they will be billed on the original billing cycle.",
- "popup_subscription_resumed.title" => "Subscription Was Resumed",
- "popup_upload_limit.message" => "Size of your uploaded file exceed the upload limit ({uploadLimit}).",
- "popup_upload_limit.title" => "You exceed upload limit on single file",
- "popup_zipping.message" => "Please wait until your files start downloading.",
- "popup_zipping.title" => "Zipping Your Files...",
- "preview_sorting.grid_view" => "Grid View",
- "preview_sorting.list_view" => "List View",
- "preview_sorting.preview_sorting_button" => "View",
- "preview_sorting.sort_alphabet" => "Sort By Aplhabet",
- "preview_sorting.sort_date" => "Sort By Date",
- "profile.change_pass" => "Change Password",
- "profile.profile_info" => "Profile Information",
- "profile.store_pass" => "Store New Password",
- "pronouns.of" => "of",
- "roles.admin" => "Admin",
- "roles.user" => "User",
- "routes.create_new_password" => "create-new-password",
- "routes_title.appearance" => "Appearance",
- "routes_title.billings" => "Billings",
- "routes_title.dashboard" => "Dashboard",
- "routes_title.email" => "Email",
- "routes_title.invoices" => "Invoices",
- "routes_title.languages" => "Languages",
- "routes_title.others" => "Others",
- "routes_title.page_edit" => "Edit Page",
- "routes_title.pages" => "Pages",
- "routes_title.payment_methods" => "Payment Methods",
- "routes_title.payments" => "Payments",
- "routes_title.plan" => "Plan",
- "routes_title.plan_create" => "Create Plan",
- "routes_title.plan_delete" => "Plan Delete",
- "routes_title.plan_settings" => "Plan Settings",
- "routes_title.pricing_plans" => "Pricing Plans",
- "routes_title.profile" => "My Profile",
- "routes_title.profile_settings" => "Profile Settings",
- "routes_title.settings" => "Settings",
- "routes_title.settings_mobile" => "Settings",
- "routes_title.settings_password" => "Change Password",
- "routes_title.settings_storage" => "Storage",
- "routes_title.subscribers" => "Subscribers",
- "routes_title.subscription" => "Subscription",
- "routes_title.upgrade_billing" => "Billing",
- "routes_title.upgrade_plan" => "Upgrade Plan",
- "routes_title.user_create" => "Create User",
- "routes_title.users_delete" => "Delete User",
- "routes_title.users_detail" => "Detail",
- "routes_title.users_list" => "User Management",
- "routes_title.users_password" => "Password",
- "routes_title.users_storage_usage" => "Storage Usage",
- "routes_title.users_user" => "User",
- "rows.card.expiration" => "Expiration Date",
- "rows.card.number" => "Card Number",
- "rows.card.status" => "Status",
- "rows.invoice.number" => "Invoice Number",
- "rows.invoice.payed" => "Payed",
- "rows.invoice.plan" => "Plan",
- "rows.invoice.total" => "Total",
- "shared.can_download" => "Can download file",
- "shared.editor" => "Can edit and upload files",
- "shared.empty_shared" => "You haven't shared anything yet.",
- "shared.visitor" => "Can only view and download",
- "shared_form.button_close_options" => "Close Options",
- "shared_form.button_done" => "Awesome, I’m done!",
- "shared_form.button_folder_icon_open" => "Customize Folder Icon",
- "shared_form.button_generate" => "Generate Link",
- "shared_form.button_more_options" => "Set Expiration",
- "shared_form.email_placeholder" => "Type your emails",
- "shared_form.email_successfully_send_message" => "Your item was successfully sended to recipients emails.",
- "shared_form.expiration_day" => "{value}d.",
- "shared_form.expiration_hour" => "{value}h.",
- "shared_form.label_expiration" => "Link Expiration",
- "shared_form.label_password_protection" => "Password Protected",
- "shared_form.label_permission" => "Permission",
- "shared_form.label_send_to_recipients" => "Send to Recipients",
- "shared_form.label_share_vie_email" => "Get your link",
- "shared_form.label_shared_url" => "Share url",
- "shared_form.placeholder_permission" => "Select your permission",
- "shared_form.recipients_label" => "Recipients",
- "shared_form.share_by_email" => "Share by Email",
- "shared_form.share_by_link" => "Share by Link",
- "sidebar.favourites" => "Favourites",
- "sidebar.favourites_empty" => "Drag here your favourite folder.",
- "sidebar.folders_empty" => "Create some new folder.",
- "sidebar.home" => "Files",
- "sidebar.latest" => "Recent Uploads",
- "sidebar.locations_title" => "Base",
- "sidebar.my_shared" => "My Shared Items",
- "sidebar.navigator_title" => "Navigator",
- "sidebar.participant_uploads" => "Participant Uploads",
- "sidebar.tools_title" => "Tools",
- "storage.audios" => "Audios",
- "storage.documents" => "Documents",
- "storage.images" => "Images",
- "storage.others" => "Others",
- "storage.sec_capacity" => "Your disk Usage",
- "storage.sec_details" => "Capacity Usage Details",
- "storage.total_capacity" => "Your storage capacity is {capacity}",
- "storage.total_used" => "Total used {used}",
- "storage.videos" => "Videos",
- "toaster.account_upgraded" => "Your account was successfully upgraded.",
- "toaster.card_deleted" => "Your card was successfully deleted.",
- "toaster.card_new_add" => "Your card was successfully added",
- "toaster.card_set" => "Your card was successfully set as default.",
- "toaster.changed_capacity" => "You successfully changed user's storage size!",
- "toaster.changed_user" => "You successfully changed user's role!",
- "toaster.created_user" => "User was created successfully!",
- "toaster.email_set" => "Your email settings was updated successfully",
- "toaster.plan_created" => "Your plan was successfully created!",
- "toaster.sended_password" => "You successfully send user email for reset password!",
- "toaster.stripe_set" => "Your Stripe account was successfully set!",
- "types.file" => "File",
- "types.folder" => "Folder",
- "upgrade_banner.button" => "Upgrade",
- "upgrade_banner.description" => "You nearly reach your storage capacity.",
- "upgrade_banner.title" => "You reach your storage capacity. Please upgrade.",
- "uploading.cancel" => "Cancel Uploading",
- "uploading.processing_file" => "Processing File...",
- "uploading.progress" => "Uploading File {progress}% - {current}/{total}",
- "uploading.progress_single_upload" => "Uploading File {progress}%",
- "user_add_card.default_description" => "Your card will be charged for billing plans as first.",
- "user_add_card.default_title" => "Set as Default Payment Method",
- "user_box_delete.description" => "You can delete your user, but, pay attention! This event is irreversible and all user data include user files will be deleted.",
- "user_box_delete.title" => "Delete User",
- "user_box_password.description" => "You can send password reset email via button bellow. User will be redirected to page where he can update password for his account.",
- "user_box_password.title" => "Change User Password",
- "user_box_role.description" => "You can change role for current user. Admin role can edit or create new users, change storage capacity and any other application settings.",
- "user_box_role.title" => "Change User Role",
- "user_box_storage.description" => "Change user storage capacity by input bellow. You have to type only number e.g. value '5' means, user will have 5GB of storage capacity.",
- "user_box_storage.title" => "Change User Storage Capacity",
- "user_invoices.empty" => "You don't have any invoices yet.",
- "user_invoices.title" => "Invoices",
- "user_password.title" => "Change Your Password",
- "user_payments.add_card" => "Add Payment Card",
- "user_payments.card_field_title" => "Credit Card",
- "user_payments.delete_card" => "Delete card",
- "user_payments.empty" => "You don't have any payment cards yet.",
- "user_payments.field_loading" => "Loading card field...",
- "user_payments.set_as_default" => "Set as default card",
- "user_payments.store_card" => "Store Payment Card",
- "user_payments.title" => "Payment Methods",
- "user_settings.address" => "Address",
- "user_settings.address_plac" => "Type your billing address",
- "user_settings.city" => "City",
- "user_settings.city_plac" => "Type your billing city",
- "user_settings.country" => "Country",
- "user_settings.country_plac" => "Select your billing country",
- "user_settings.name" => "Name",
- "user_settings.name_plac" => "Type your billing name",
- "user_settings.phone_number" => "Phone Number",
- "user_settings.phone_number_plac" => "Type your billing phone number",
- "user_settings.postal_code" => "Postal Code",
- "user_settings.postal_code_plac" => "Type your billing postal code",
- "user_settings.state" => "State",
- "user_settings.state_plac" => "Type your billing state",
- "user_settings.timezone" => "Timezone",
- "user_settings.timezone_plac" => "Select your timezone",
- "user_settings.title_account" => "Account Information",
- "user_settings.title_billing" => "Billing Information",
- "user_subscription.billed" => "Billed",
- "user_subscription.cancel_plan" => "Cancel Plan",
- "user_subscription.canceled_at" => "Canceled At",
- "user_subscription.created_at" => "Created At",
- "user_subscription.empty" => "You don't have any subscription yet.",
- "user_subscription.ends_at" => "Ends At",
- "user_subscription.plan" => "Plan",
- "user_subscription.renews_at" => "Renews At",
- "user_subscription.resume_plan" => "Resume Plan",
- "user_subscription.status" => "Status",
- "user_subscription.title" => "Subscription Plan",
- "validation_errors.incorrect_password" => "Sorry, you passed incorrect password :(",
- "validation_errors.wrong_image" => "You may have uploaded the wrong file, try again!",
+ 'extended' => [
+ "actions.close" => "Close",
+ "actions.create_folder" => "Create folder",
+ "actions.delete" => "Delete item",
+ "actions.download" => "Download item",
+ "actions.info_panel" => "Info panel",
+ "actions.move" => "Move item",
+ "actions.preview" => "Change preview",
+ "actions.print" => "Print item",
+ "actions.share" => "Share item",
+ "actions.sorting_view" => "Sorting and View",
+ "actions.upload" => "Upload file",
+ "activation.stripe.button" => "Set up your Stripe account",
+ "activation.stripe.description" => "To charge your users, please set up your Stripe account credentials.",
+ "activation.stripe.title" => "Your Stripe account is not set",
+ "admin_menu.dashboard" => "Dashboard",
+ "admin_menu.invoices" => "Invoices",
+ "admin_menu.pages" => "Pages",
+ "admin_menu.plans" => "Plans",
+ "admin_menu.settings" => "Settings",
+ "admin_menu.users" => "Users",
+ "admin_menu.languages" => "Languages",
+ "admin_page_dashboard.backer_button" => "Help Us Improve",
+ "admin_page_dashboard.license" => "License",
+ "admin_page_dashboard.version" => "Version",
+ "admin_page_dashboard.w_latest_users.title" => "Latest Registrations",
+ "admin_page_dashboard.w_total_premium.link" => "Show All Plans",
+ "admin_page_dashboard.w_total_premium.title" => "Total Premium Users",
+ "admin_page_dashboard.w_total_space.link" => "Show All Users",
+ "admin_page_dashboard.w_total_space.title" => "Total Space Used",
+ "admin_page_dashboard.w_total_users.link" => "Show All Users",
+ "admin_page_dashboard.w_total_users.title" => "Total Users",
+ "admin_page_invoices.empty.description" => "All customers invoices will be showed here.",
+ "admin_page_invoices.empty.title" => "You don’t have any invoices yet",
+ "admin_page_invoices.table.number" => "Invoice Number",
+ "admin_page_invoices.table.payed" => "Payed",
+ "admin_page_invoices.table.plan" => "Plan",
+ "admin_page_invoices.table.total" => "Total",
+ "admin_page_invoices.table.user" => "User",
+ "admin_page_plans.create_plan_button" => "Create Plan",
+ "admin_page_plans.delete_plan_button" => "Delete Plan",
+ "admin_page_plans.disclaimer_delete_plan" => "You can delete this plan, but, pay attention! Your plan will be deleted, but users who are subscribed with this plan, will be still charged unless they cancel subscription.",
+ "admin_page_plans.disclaimer_edit_price" => "Price change for your plan is not available due to Stripe service design. If you wish change your price plan, please, create new plan.",
+ "admin_page_plans.empty.button" => "Create New Plan",
+ "admin_page_plans.empty.description" => "For create new plan, click on button below.",
+ "admin_page_plans.empty.title" => "You don’t have any plan yet",
+ "admin_page_plans.form.description" => "Description (optional)",
+ "admin_page_plans.form.description_plac" => "Plan description",
+ "admin_page_plans.form.name" => "Name",
+ "admin_page_plans.form.name_delete_plac" => "Type plan name",
+ "admin_page_plans.form.name_plac" => "Plan name",
+ "admin_page_plans.form.price" => "Price",
+ "admin_page_plans.form.price_plac" => "Plan price",
+ "admin_page_plans.form.status" => "Status",
+ "admin_page_plans.form.status_help" => "Status of your plan availability on website.",
+ "admin_page_plans.form.storage" => "Storage Capacity in GB",
+ "admin_page_plans.form.storage_helper" => "You have to type only number e.g. value '5' means, user will have 5GB of storage capacity.",
+ "admin_page_plans.form.storage_plac" => "Storage capacity",
+ "admin_page_plans.form.title_delete" => "Delete Plan",
+ "admin_page_plans.form.title_details" => "Plan Details",
+ "admin_page_plans.form.title_pricing" => "Plan Pricing",
+ "admin_page_plans.subscribers.empty" => "There is no any subscriber yet.",
+ "admin_page_plans.table.name" => "Plan Name",
+ "admin_page_plans.table.price" => "Price",
+ "admin_page_plans.table.status" => "Status",
+ "admin_page_plans.table.storage_capacity" => "Storage Capacity",
+ "admin_page_plans.table.subscribers" => "Subscribers",
+ "admin_page_plans.tabs.delete" => "Delete Plan",
+ "admin_page_plans.tabs.settings" => "Settings",
+ "admin_page_plans.tabs.subscribers" => "Subscribers",
+ "admin_page_user.change_capacity" => "Change Capacity",
+ "admin_page_user.create_user.avatar" => "Avatar",
+ "admin_page_user.create_user.group_details" => "Account Details",
+ "admin_page_user.create_user.group_settings" => "Account Settings",
+ "admin_page_user.create_user.label_conf_pass" => "Confirm password",
+ "admin_page_user.create_user.label_email" => "Type E-mail",
+ "admin_page_user.create_user.label_name" => "Type full name",
+ "admin_page_user.create_user.submit" => "Create User",
+ "admin_page_user.delete_user" => "Delete User",
+ "admin_page_user.invoices.empty" => "User don't have any invoices yet.",
+ "admin_page_user.label_change_capacity" => "Type storage capacity in GB",
+ "admin_page_user.label_delete_user" => "Type with Case Sensitive user name ‘{user}‘",
+ "admin_page_user.label_person_info" => "Personal Information",
+ "admin_page_user.placeholder_delete_user" => "Type here",
+ "admin_page_user.save_role" => "Save Role",
+ "admin_page_user.select_role" => "Select user role",
+ "admin_page_user.send_password_link" => "Send Password Reset Link",
+ "admin_page_user.subscription.empty" => "User don't have any subscription yet.",
+ "admin_page_user.subscription.interval_mo" => "Monthly",
+ "admin_page_user.table.action" => "Action",
+ "admin_page_user.table.created_at" => "Registered",
+ "admin_page_user.table.name" => "User",
+ "admin_page_user.table.plan" => "Subscription Plan",
+ "admin_page_user.table.role" => "Role",
+ "admin_page_user.table.storage_capacity" => "Storage Capacity",
+ "admin_page_user.table.storage_used" => "Storage Used",
+ "admin_page_user.tabs.delete" => "Delete User",
+ "admin_page_user.tabs.detail" => "Detail",
+ "admin_page_user.tabs.invoices" => "Invoices",
+ "admin_page_user.tabs.password" => "Password",
+ "admin_page_user.tabs.storage" => "Storage Usage",
+ "admin_page_user.tabs.subscription" => "Subscription",
+ "admin_pages.form.content" => "Content",
+ "admin_pages.form.content_plac" => "Type your content here...",
+ "admin_pages.form.slug" => "Slug",
+ "admin_pages.form.title" => "Title",
+ "admin_pages.form.title_plac" => "Title name",
+ "admin_pages.form.visibility" => "Visibility",
+ "admin_pages.form.visibility_help" => "Status of your page visibility on website.",
+ "admin_pages.table.page" => "Page",
+ "admin_pages.table.slug" => "Slug",
+ "admin_pages.table.status" => "Status",
+ "admin_settings.appearance.description" => "App Description",
+ "admin_settings.appearance.description_plac" => "Type your app description",
+ "admin_settings.appearance.favicon" => "App Favicon (optional)",
+ "admin_settings.appearance.logo" => "App Logo (optional)",
+ "admin_settings.appearance.logo_horizontal" => "App Logo Horizontal (optional)",
+ "admin_settings.appearance.section_appearance" => "Appearance",
+ "admin_settings.appearance.section_general" => "General Settings",
+ "admin_settings.appearance.title" => "App Title",
+ "admin_settings.appearance.title_plac" => "Type your app title",
+ "admin_settings.billings.address" => "Billing Address",
+ "admin_settings.billings.address_plac" => "Type your billing address",
+ "admin_settings.billings.city" => "Billing City",
+ "admin_settings.billings.city_plac" => "Type your billing city",
+ "admin_settings.billings.company_name" => "Company Name",
+ "admin_settings.billings.company_name_plac" => "Type your company name",
+ "admin_settings.billings.country" => "Billing Country",
+ "admin_settings.billings.country_plac" => "Select your billing country",
+ "admin_settings.billings.phone_number" => "Billing Phone Number (optional)",
+ "admin_settings.billings.phone_number_plac" => "Type your billing phone number",
+ "admin_settings.billings.postal_code" => "Billing Postal Code",
+ "admin_settings.billings.postal_code_plac" => "Type your billing postal code",
+ "admin_settings.billings.section_billing" => "Billing Information",
+ "admin_settings.billings.section_company" => "Company Information",
+ "admin_settings.billings.state" => "Billing State",
+ "admin_settings.billings.state_plac" => "Type your billing state",
+ "admin_settings.billings.vat" => "VAT Number",
+ "admin_settings.billings.vat_plac" => "Type your VAT number",
+ "admin_settings.email.driver" => "Mail Driver",
+ "admin_settings.email.driver_plac" => "Type your mail driver",
+ "admin_settings.email.email_disclaimer" => "This form is not fully pre-filled for security reasons. Your email settings is available in your .env file. For apply new Email settings, please confirm your options by button at the end of formular.",
+ "admin_settings.email.encryption" => "Mail Encryption",
+ "admin_settings.email.encryption_plac" => "Select your mail encryption",
+ "admin_settings.email.host" => "Mail Host",
+ "admin_settings.email.host_plac" => "Type your mail host",
+ "admin_settings.email.password" => "Mail Password",
+ "admin_settings.email.password_plac" => "Type your mail password",
+ "admin_settings.email.port" => "Mail Port",
+ "admin_settings.email.port_plac" => "Type your mail port",
+ "admin_settings.email.save_button" => "Save Email Settings",
+ "admin_settings.email.section_email" => "Email Setup",
+ "admin_settings.email.username" => "Mail Username",
+ "admin_settings.email.username_plac" => "Type your mail username",
+ "admin_settings.others.allow_registration" => "Allow User Registration",
+ "admin_settings.others.allow_registration_help" => "You can disable public registration for new users. You will still able to
create new users in administration panel.",
+ "admin_settings.others.cache_clear" => "Clear Cache",
+ "admin_settings.others.cache_disclaimer" => "Did you change anything in your .env file or change your Stripe credentials? Then clear your cache.",
+ "admin_settings.others.contact_email" => "Contact Email",
+ "admin_settings.others.contact_email_plac" => "Type your contact email",
+ "admin_settings.others.default_storage" => "Default Storage Space for User Accounts",
+ "admin_settings.others.default_storage_plac" => "Set default storage space in GB",
+ "admin_settings.others.google_analytics" => "Google Analytics Code (optional)",
+ "admin_settings.others.google_analytics_plac" => "Paste your Google Analytics Code",
+ "admin_settings.others.mimetypes_blacklist" => "Mimetypes Blacklist",
+ "admin_settings.others.mimetypes_blacklist_help" => "If you want to prevent upload some type of files, just add them to blacklist like this: x-php,mp3,jpeg
Use a comma between each mimetype. Don't use a dot before mimetypes.",
+ "admin_settings.others.mimetypes_blacklist_plac" => "Add mimetypes to Blacklist",
+ "admin_settings.others.section_cache" => "Application Cache",
+ "admin_settings.others.section_others" => "Others Settings",
+ "admin_settings.others.section_user" => "Users and Storage",
+ "admin_settings.others.storage_limit" => "Storage Limitation",
+ "admin_settings.others.storage_limit_help" => "If this value is off, all users will have infinity storage capacity and you won't be
able to charge your users for storage plan.",
+ "admin_settings.others.upload_limit" => "Upload Limit",
+ "admin_settings.others.upload_limit_help" => "If you want to set max file size limit on single upload, add size of your limit in MB. E.g. 100 means 100 MB and 2 000 means 2 000 MB limit.",
+ "admin_settings.others.upload_limit_plac" => "Type your upload limit in MB",
+ "admin_settings.payments.allow_payments" => "Allow Subscription Payments",
+ "admin_settings.payments.button_submit" => "Test and Save Stripe",
+ "admin_settings.payments.button_testing" => "Testing Stripe Connection",
+ "admin_settings.payments.credentials_disclaimer" => "Your Stripe credentials is not showed because these values are secret and must not be revealed by stranger. You can change your Stripe credentials in your .env file.",
+ "admin_settings.payments.section_payments" => "Stripe Payments",
+ "admin_settings.payments.stripe_create_acc" => "If you don’t have stripe account, please register here and get your Publishable Key, Secret Key and create your webhook.",
+ "admin_settings.payments.stripe_create_webhook" => "You have to create webhook endpoint in your Stripe Dashboard. You can find it in Dashboard -> Developers -> Webhooks -> Add Endpoint. In Endpoint URL please copy and paste url bellow. Make sure, this url is your public domain, not localhost. In events section, please click on receive all events. That's all.",
+ "admin_settings.payments.stripe_currency" => "Stripe Currency",
+ "admin_settings.payments.stripe_currency_plac" => "Select your Stripe currency",
+ "admin_settings.payments.stripe_pub_key" => "Publishable Key",
+ "admin_settings.payments.stripe_pub_key_plac" => "Paste your publishable key",
+ "admin_settings.payments.stripe_sec_key" => "Secret Key",
+ "admin_settings.payments.stripe_sec_key_plac" => "Paste your secret key",
+ "admin_settings.payments.stripe_setup" => "Stripe Setup",
+ "admin_settings.payments.stripe_webhook_key_plac" => "Paste your stripe webhook secret",
+ "admin_settings.payments.webhook_url" => "Stripe webhook URL",
+ "admin_settings.tabs.appearance" => "Appearance",
+ "admin_settings.tabs.billings" => "Billings",
+ "admin_settings.tabs.email" => "Email",
+ "admin_settings.tabs.others" => "Application",
+ "admin_settings.tabs.payments" => "Payments",
+ "alerts.error_confirm" => "That’s horrible!",
+ "alerts.leave_to_sign_in" => "Do you really want to leave?",
+ "alerts.success_confirm" => "Awesome!",
+ "context_menu.add_folder" => "Add Folder",
+ "context_menu.add_to_favourites" => "Add to Favourites",
+ "context_menu.create_folder" => "Create Folder",
+ "context_menu.delete" => "Delete",
+ "context_menu.detail" => "Detail",
+ "context_menu.download" => "Download",
+ "context_menu.empty_trash" => "Empty Trash",
+ "context_menu.log_out" => "Log Out",
+ "context_menu.move" => "Move",
+ "context_menu.no_options" => "No Options Available",
+ "context_menu.profile_settings" => "Profile Settings",
+ "context_menu.remove_from_favourites" => "Remove Favourite",
+ "context_menu.rename" => "Rename",
+ "context_menu.restore" => "Restore",
+ "context_menu.select" => "Select",
+ "context_menu.share" => "Share",
+ "context_menu.share_cancel" => "Cancel Sharing",
+ "context_menu.share_edit" => "Edit Sharing",
+ "context_menu.upload" => "Upload",
+ "context_menu.zip_folder" => "Zip and Download",
+ "cookie_disclaimer.button" => "cookies policy",
+ "cookie_disclaimer.description" => "By browsing this website you are agreeing to our {0}.",
+ "datatable.paginate_info" => "Showing 1 - {visible} from {total} records",
+ "empty_page.call_to_action" => "Upload Files",
+ "empty_page.description" => "Upload some files here easily via upload button.",
+ "empty_page.title" => "Upload Your First File",
+ "errors.capacity_digit" => "The storage capacity must be lower than 10 digit number.",
+ "file_detail.author" => "Author",
+ "file_detail.author_participant" => "Public Participant",
+ "file_detail.created_at" => "Created at",
+ "file_detail.items" => "Items",
+ "file_detail.selected_multiple" => "Selected Multiple Items",
+ "file_detail.shared" => "Shared",
+ "file_detail.size" => "Size",
+ "file_detail.where" => "Where",
+ "file_detail_meta.aperature" => "F Number",
+ "file_detail_meta.aperture_value" => "Aperture Value",
+ "file_detail_meta.author" => "Author",
+ "file_detail_meta.camera_lens" => "Camera Lens",
+ "file_detail_meta.color_space" => "Color Space",
+ "file_detail_meta.dimension" => "Dimensions",
+ "file_detail_meta.exposure" => "Exposure Time",
+ "file_detail_meta.focal" => "Focal Length",
+ "file_detail_meta.iso" => "ISO",
+ "file_detail_meta.latitude" => "Latitude",
+ "file_detail_meta.longitude" => "Longitude",
+ "file_detail_meta.make" => "Camera",
+ "file_detail_meta.meta_data" => "Metadata",
+ "file_detail_meta.model" => "Model",
+ "file_detail_meta.resolution" => "Resolution",
+ "file_detail_meta.time_data" => "Content Created",
+ "folder.empty" => "Empty",
+ "folder.item_counts" => "{count} Item | {count} Items",
+ "global.active" => "Active",
+ "global.admin" => "Admin",
+ "global.cancel" => "Cancel",
+ "global.canceled" => "Canceled",
+ "global.confirm_action" => "Yes, I'm sure",
+ "global.default" => "Default",
+ "global.free" => "Free",
+ "global.get_it" => "Get It",
+ "global.incomplete" => "Incomplete",
+ "global.menu" => "Menu",
+ "global.monthly_ac" => "Mo.",
+ "global.or" => "or",
+ "global.premium" => "Premium",
+ "global.saas" => "Services",
+ "global.subscription" => "Subscription",
+ "global.total" => "Total",
+ "global.upgrade_plan" => "Upgrade Plan",
+ "incomplete_payment.description" => "Your latest payment is incomplete. {0}",
+ "incomplete_payment.href" => "Please confirm your payment.",
+ "input_image.supported" => "Supported formats are .png, .jpg, .jpeg.",
+ "input_image.title" => "Upload Image",
+ "inputs.placeholder_search_files" => "Search files or folders...",
+ "item_thumbnail.deleted_at" => "Deleted {time}",
+ "item_thumbnail.original_location" => "Original Location",
+ "locations.home" => "Files",
+ "locations.logout" => "Log Out",
+ "locations.profile" => "Profile",
+ "locations.settings" => "Settings",
+ "locations.shared" => "Shared",
+ "locations.trash" => "Trash",
+ "menu.admin" => "Administration",
+ "menu.files" => "Files",
+ "menu.invoices" => "Invoices",
+ "menu.latest" => "Recent Uploads",
+ "menu.logout" => "Log Out",
+ "menu.password" => "Password",
+ "menu.payment_cards" => "Payment Cards",
+ "menu.profile" => "Profile Settings",
+ "menu.settings" => "Settings",
+ "menu.shared" => "Shared Files",
+ "menu.storage" => "Storage",
+ "menu.subscription" => "Subscription",
+ "menu.trash" => "Trash",
+ "messages.nothing_from_participants" => "You don't have any uploads from other users.",
+ "messages.nothing_to_preview" => "There is nothing to preview.",
+ "messages.nothing_was_found" => "Nothing was found.",
+ "mobile_selecting.deselect_all" => "Deselect All",
+ "mobile_selecting.done" => "Done",
+ "mobile_selecting.select_all" => "Select All",
+ "notice.stripe_activation" => "Your Stripe account is not set. To charging your users please {0}.",
+ "notice.stripe_activation_button" => "set up your Stripe account",
+ "page_contact_us.description" => "Do you have any questions? Get in touch with us.",
+ "page_contact_us.error_message" => "Something went wrong, please try it again.",
+ "page_contact_us.form.email" => "Email",
+ "page_contact_us.form.email_plac" => "Type your email",
+ "page_contact_us.form.message" => "Message",
+ "page_contact_us.form.message_plac" => "Type your message here...",
+ "page_contact_us.form.submit_button" => "Send Message",
+ "page_contact_us.success_message" => "Your message was send successfully.",
+ "page_contact_us.title" => "Contact Us",
+ "page_create_password.button_update" => "Update Password",
+ "page_create_password.label_confirm_pass" => "Confirm password",
+ "page_create_password.label_email" => "Email",
+ "page_create_password.label_new_pass" => "New password",
+ "page_create_password.subtitle" => "Create your new password here",
+ "page_create_password.title" => "Only One Step to Log In",
+ "page_forgotten_password.button_get_link" => "Get Link",
+ "page_forgotten_password.pass_reseted_signin" => "Sign In",
+ "page_forgotten_password.pass_reseted_subtitle" => "Your password was reset successfully.",
+ "page_forgotten_password.pass_reseted_title" => "Awesome!",
+ "page_forgotten_password.pass_sennded_subtitle" => "We have e-mailed your password reset link!",
+ "page_forgotten_password.pass_sennded_title" => "Thank you!",
+ "page_forgotten_password.password_remember_button" => "Log In.",
+ "page_forgotten_password.password_remember_text" => "Remember your password?",
+ "page_forgotten_password.subtitle" => "Get reset link with your email",
+ "page_forgotten_password.title" => "Forgotten Password?",
+ "page_index.get_started_button" => "Sign Up Now",
+ "page_index.menu.contact_us" => "Contact Us",
+ "page_index.menu.log_in" => "Log In",
+ "page_index.menu.pricing" => "Pricing",
+ "page_index.menu.sign_in" => "Sign Up",
+ "page_index.sign_feature_1" => "No credit card required",
+ "page_index.sign_feature_2" => "{defaultSpace} Free storage space",
+ "page_index.sign_up_button" => "Sign Up Now",
+ "page_login.button_next" => "Next Step",
+ "page_login.placeholder_email" => "Type your E-mail",
+ "page_login.registration_button" => "Register account.",
+ "page_login.registration_text" => "Don’t have an account?",
+ "page_login.subtitle" => "Please type your email to log in",
+ "page_login.title" => "Welcome Back!",
+ "page_pricing_tables.description" => "Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.",
+ "page_pricing_tables.storage_capacity" => "Of Storage Capacity",
+ "page_pricing_tables.title" => "Choose Your Plan",
+ "page_pricing_tables.vat_excluded" => "Price displayed excludes VAT.",
+ "page_registration.agreement" => "By clicking on 'Create Account' button I agree to the {0} and {1}.",
+ "page_registration.button_create_account" => "Create Account",
+ "page_registration.have_an_account" => "Do you have an account?",
+ "page_registration.label_confirm_pass" => "Confirm password",
+ "page_registration.label_email" => "Email",
+ "page_registration.label_name" => "Full Name",
+ "page_registration.label_pass" => "Create password",
+ "page_registration.placeholder_confirm_pass" => "Confirm your new password",
+ "page_registration.placeholder_email" => "Type your E-mail",
+ "page_registration.placeholder_name" => "Type your full name",
+ "page_registration.placeholder_pass" => "New password",
+ "page_registration.subtitle" => "Please fill registration to create account",
+ "page_registration.title" => "Create New Account",
+ "page_shared.download_file" => "Download File",
+ "page_shared.placeholder_pass" => "Type password",
+ "page_shared.submit" => "Submit",
+ "page_shared.subtitle" => "Please type the password to get shared content",
+ "page_shared.title" => "Your Share Link is Protected",
+ "page_shared_404.subtitle" => "The content you are finding was probably deleted.",
+ "page_shared_404.title" => "Not Found :(",
+ "page_sign_in.button_log_in" => "Log In",
+ "page_sign_in.password_reset_button" => "Reset Password.",
+ "page_sign_in.password_reset_text" => "Forgotten your password?",
+ "page_sign_in.placeholder_password" => "Type your password",
+ "page_sign_in.subtitle" => "Confirm you by your password",
+ "page_sign_in.title" => "Are You {name}?",
+ "page_upgrade_account.change_payment.change_payment" => "change your default payment method",
+ "page_upgrade_account.change_payment.pay_by_new_card" => "pay by new credit card",
+ "page_upgrade_account.change_payment.you_can" => "Also you can",
+ "page_upgrade_account.desription" => "Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.",
+ "page_upgrade_account.errors.pay_by_another_card" => "Please pay by another payment card",
+ "page_upgrade_account.section_billing" => "Billing Information",
+ "page_upgrade_account.section_card" => "Payment Card",
+ "page_upgrade_account.section_summary" => "Order Summary",
+ "page_upgrade_account.summary.period" => "Billed monthly",
+ "page_upgrade_account.summary.submit_button" => "Pay with credit card",
+ "page_upgrade_account.summary.submit_disclaimer" => "By submit form, you agree to save the payment method and billing information in your {app} account.",
+ "page_upgrade_account.summary.total_with_vat" => "Total with VAT",
+ "page_upgrade_account.summary.vat" => "VAT",
+ "page_upgrade_account.title" => "Choose Payment Method",
+ "popup_create_folder.folder_default_name" => "New Folder",
+ "popup_create_folder.label" => "Type Name",
+ "popup_create_folder.placeholder" => "Type your name",
+ "popup_create_folder.title" => "Create Folder",
+ "popup_delete_card.message" => "This event is irreversible and your payment card will be delete forever",
+ "popup_delete_card.title" => "Are you sure?",
+ "popup_deleted_plan.message" => "Your plan was successfully deleted.",
+ "popup_deleted_plan.title" => "Plan was deleted",
+ "popup_deleted_user.message" => "Your user was deleted with all user data content.",
+ "popup_deleted_user.title" => "User was deleted",
+ "popup_deleted_user_aborted.message" => "You can't delete this account while user have active subscription.",
+ "popup_deleted_user_aborted.title" => "User wasn't deleted",
+ "popup_error.message" => "Something went wrong and we can't continue. Please contact us.",
+ "popup_error.title" => "Whooops, something went wrong!",
+ "popup_exceed_limit.message" => "Please contact your administrator to change your limit.",
+ "popup_exceed_limit.title" => "Whooops, you exceed storage limit :(",
+ "popup_mimetypes_blacklist.message" => "File of this type ({mimetype}) is not allowed to upload.",
+ "popup_mimetypes_blacklist.title" => "You are trying to upload unsupported file type",
+ "popup_move_item.cancel" => "Cancel",
+ "popup_move_item.submit" => "Move Item",
+ "popup_move_item.title" => "Move Item",
+ "popup_pass_changed.message" => "So now, you have awesome new password.",
+ "popup_pass_changed.title" => "Your password was changed!",
+ "popup_passport_error.message" => "Probably you didn't generated Passport Grant client or you didn't set up passport credentials in your .env file. Please follow install instructions.",
+ "popup_passport_error.title" => "Invalid Passport Grand Client",
+ "popup_paylod_error.message" => "Sorry, your file is too large and can't be uploaded",
+ "popup_paylod_error.title" => "File is too large",
+ "popup_rename.select_emoji_label" => "Pick Your Emoji Icon",
+ "popup_rename.color_pick_label" => "Pick Your Color",
+ "popup_rename.emoji_list_not_found" => "Not Found",
+ "popup_rename.label" => "Edit Name",
+ "popup_rename.placeholder" => "Type your title",
+ "popup_rename.search_emoji_input_placeholder" => "Search your emoji...",
+ "popup_rename.set_emoji_input_placeholder" => "Emojis List...",
+ "popup_rename.tab_color_title" => "Folder Color",
+ "popup_rename.tab_emoji_title" => "Emoji as an Icon",
+ "popup_rename.title" => "Rename Your {item}",
+ "popup_set_card.message" => "Your card will be set as default and will be always charged for the next billings.",
+ "popup_set_card.title" => "Set as default card?",
+ "popup_share_create.title" => "Share Your {item}",
+ "popup_share_edit.change_pass" => "Change Password",
+ "popup_share_edit.confirm" => "Confirm",
+ "popup_share_edit.go_back" => "Go Back",
+ "popup_share_edit.save" => "Save Changes",
+ "popup_share_edit.send_to_recipients" => "Send to Recipients",
+ "popup_share_edit.stop" => "Cancel Sharing",
+ "popup_share_edit.title" => "Update sharing options",
+ "popup_signup_error.message" => "Please check your database connection if everything works correctly.",
+ "popup_signup_error.title" => "Server Error",
+ "popup_subscription_cancel.button" => "I'm done",
+ "popup_subscription_cancel.message" => "You'll continue to have access to the features you've paid for until the end of your billing cycle.",
+ "popup_subscription_cancel.title" => "Subscription Was Canceled",
+ "popup_subscription_resumed.button" => "That's awesome!",
+ "popup_subscription_resumed.message" => "Your subscription was re-activated, and they will be billed on the original billing cycle.",
+ "popup_subscription_resumed.title" => "Subscription Was Resumed",
+ "popup_upload_limit.message" => "Size of your uploaded file exceed the upload limit ({uploadLimit}).",
+ "popup_upload_limit.title" => "You exceed upload limit on single file",
+ "popup_zipping.message" => "Please wait until your files start downloading.",
+ "popup_zipping.title" => "Zipping Your Files...",
+ "preview_sorting.grid_view" => "Grid View",
+ "preview_sorting.list_view" => "List View",
+ "preview_sorting.preview_sorting_button" => "View",
+ "preview_sorting.sort_alphabet" => "Sort By Aplhabet",
+ "preview_sorting.sort_date" => "Sort By Date",
+ "profile.change_pass" => "Change Password",
+ "profile.profile_info" => "Profile Information",
+ "profile.store_pass" => "Store New Password",
+ "pronouns.of" => "of",
+ "roles.admin" => "Admin",
+ "roles.user" => "User",
+ "routes.create_new_password" => "create-new-password",
+ "routes_title.appearance" => "Appearance",
+ "routes_title.billings" => "Billings",
+ "routes_title.dashboard" => "Dashboard",
+ "routes_title.email" => "Email",
+ "routes_title.invoices" => "Invoices",
+ "routes_title.languages" => "Languages",
+ "routes_title.others" => "Others",
+ "routes_title.page_edit" => "Edit Page",
+ "routes_title.pages" => "Pages",
+ "routes_title.payment_methods" => "Payment Methods",
+ "routes_title.payments" => "Payments",
+ "routes_title.plan" => "Plan",
+ "routes_title.plan_create" => "Create Plan",
+ "routes_title.plan_delete" => "Plan Delete",
+ "routes_title.plan_settings" => "Plan Settings",
+ "routes_title.pricing_plans" => "Pricing Plans",
+ "routes_title.profile" => "My Profile",
+ "routes_title.profile_settings" => "Profile Settings",
+ "routes_title.settings" => "Settings",
+ "routes_title.settings_mobile" => "Settings",
+ "routes_title.settings_password" => "Change Password",
+ "routes_title.settings_storage" => "Storage",
+ "routes_title.subscribers" => "Subscribers",
+ "routes_title.subscription" => "Subscription",
+ "routes_title.upgrade_billing" => "Billing",
+ "routes_title.upgrade_plan" => "Upgrade Plan",
+ "routes_title.user_create" => "Create User",
+ "routes_title.users_delete" => "Delete User",
+ "routes_title.users_detail" => "Detail",
+ "routes_title.users_list" => "User Management",
+ "routes_title.users_password" => "Password",
+ "routes_title.users_storage_usage" => "Storage Usage",
+ "routes_title.users_user" => "User",
+ "rows.card.expiration" => "Expiration Date",
+ "rows.card.number" => "Card Number",
+ "rows.card.status" => "Status",
+ "rows.invoice.number" => "Invoice Number",
+ "rows.invoice.payed" => "Payed",
+ "rows.invoice.plan" => "Plan",
+ "rows.invoice.total" => "Total",
+ "shared.can_download" => "Can download file",
+ "shared.editor" => "Can edit and upload files",
+ "shared.empty_shared" => "You haven't shared anything yet.",
+ "shared.visitor" => "Can only view and download",
+ "shared_form.button_close_options" => "Close Options",
+ "shared_form.button_done" => "Awesome, I’m done!",
+ "shared_form.button_folder_icon_open" => "Customize Folder Icon",
+ "shared_form.button_generate" => "Generate Link",
+ "shared_form.button_more_options" => "Set Expiration",
+ "shared_form.email_placeholder" => "Type your emails",
+ "shared_form.email_successfully_send_message" => "Your item was successfully sended to recipients emails.",
+ "shared_form.expiration_day" => "{value}d.",
+ "shared_form.expiration_hour" => "{value}h.",
+ "shared_form.label_expiration" => "Link Expiration",
+ "shared_form.label_password_protection" => "Password Protected",
+ "shared_form.label_permission" => "Permission",
+ "shared_form.label_send_to_recipients" => "Send to Recipients",
+ "shared_form.label_share_vie_email" => "Get your link",
+ "shared_form.label_shared_url" => "Share url",
+ "shared_form.placeholder_permission" => "Select your permission",
+ "shared_form.recipients_label" => "Recipients",
+ "shared_form.share_by_email" => "Share by Email",
+ "shared_form.share_by_link" => "Share by Link",
+ "sidebar.favourites" => "Favourites",
+ "sidebar.favourites_empty" => "Drag here your favourite folder.",
+ "sidebar.folders_empty" => "Create some new folder.",
+ "sidebar.home" => "Files",
+ "sidebar.latest" => "Recent Uploads",
+ "sidebar.locations_title" => "Base",
+ "sidebar.my_shared" => "My Shared Items",
+ "sidebar.navigator_title" => "Navigator",
+ "sidebar.participant_uploads" => "Participant Uploads",
+ "sidebar.tools_title" => "Tools",
+ "storage.audios" => "Audios",
+ "storage.documents" => "Documents",
+ "storage.images" => "Images",
+ "storage.others" => "Others",
+ "storage.sec_capacity" => "Your disk Usage",
+ "storage.sec_details" => "Capacity Usage Details",
+ "storage.total_capacity" => "Your storage capacity is {capacity}",
+ "storage.total_used" => "Total used {used}",
+ "storage.videos" => "Videos",
+ "toaster.account_upgraded" => "Your account was successfully upgraded.",
+ "toaster.card_deleted" => "Your card was successfully deleted.",
+ "toaster.card_new_add" => "Your card was successfully added",
+ "toaster.card_set" => "Your card was successfully set as default.",
+ "toaster.changed_capacity" => "You successfully changed user's storage size!",
+ "toaster.changed_user" => "You successfully changed user's role!",
+ "toaster.created_user" => "User was created successfully!",
+ "toaster.email_set" => "Your email settings was updated successfully",
+ "toaster.plan_created" => "Your plan was successfully created!",
+ "toaster.sended_password" => "You successfully send user email for reset password!",
+ "toaster.stripe_set" => "Your Stripe account was successfully set!",
+ "types.file" => "File",
+ "types.folder" => "Folder",
+ "upgrade_banner.button" => "Upgrade",
+ "upgrade_banner.description" => "You nearly reach your storage capacity.",
+ "upgrade_banner.title" => "You reach your storage capacity. Please upgrade.",
+ "uploading.cancel" => "Cancel Uploading",
+ "uploading.processing_file" => "Processing File...",
+ "uploading.progress" => "Uploading File {progress}% - {current}/{total}",
+ "uploading.progress_single_upload" => "Uploading File {progress}%",
+ "user_add_card.default_description" => "Your card will be charged for billing plans as first.",
+ "user_add_card.default_title" => "Set as Default Payment Method",
+ "user_box_delete.description" => "You can delete your user, but, pay attention! This event is irreversible and all user data include user files will be deleted.",
+ "user_box_delete.title" => "Delete User",
+ "user_box_password.description" => "You can send password reset email via button bellow. User will be redirected to page where he can update password for his account.",
+ "user_box_password.title" => "Change User Password",
+ "user_box_role.description" => "You can change role for current user. Admin role can edit or create new users, change storage capacity and any other application settings.",
+ "user_box_role.title" => "Change User Role",
+ "user_box_storage.description" => "Change user storage capacity by input bellow. You have to type only number e.g. value '5' means, user will have 5GB of storage capacity.",
+ "user_box_storage.title" => "Change User Storage Capacity",
+ "user_invoices.empty" => "You don't have any invoices yet.",
+ "user_invoices.title" => "Invoices",
+ "user_password.title" => "Change Your Password",
+ "user_payments.add_card" => "Add Payment Card",
+ "user_payments.card_field_title" => "Credit Card",
+ "user_payments.delete_card" => "Delete card",
+ "user_payments.empty" => "You don't have any payment cards yet.",
+ "user_payments.field_loading" => "Loading card field...",
+ "user_payments.set_as_default" => "Set as default card",
+ "user_payments.store_card" => "Store Payment Card",
+ "user_payments.title" => "Payment Methods",
+ "user_settings.address" => "Address",
+ "user_settings.address_plac" => "Type your billing address",
+ "user_settings.city" => "City",
+ "user_settings.city_plac" => "Type your billing city",
+ "user_settings.country" => "Country",
+ "user_settings.country_plac" => "Select your billing country",
+ "user_settings.name" => "Name",
+ "user_settings.name_plac" => "Type your billing name",
+ "user_settings.phone_number" => "Phone Number",
+ "user_settings.phone_number_plac" => "Type your billing phone number",
+ "user_settings.postal_code" => "Postal Code",
+ "user_settings.postal_code_plac" => "Type your billing postal code",
+ "user_settings.state" => "State",
+ "user_settings.state_plac" => "Type your billing state",
+ "user_settings.timezone" => "Timezone",
+ "user_settings.timezone_plac" => "Select your timezone",
+ "user_settings.title_account" => "Account Information",
+ "user_settings.title_billing" => "Billing Information",
+ "user_subscription.billed" => "Billed",
+ "user_subscription.cancel_plan" => "Cancel Plan",
+ "user_subscription.canceled_at" => "Canceled At",
+ "user_subscription.created_at" => "Created At",
+ "user_subscription.empty" => "You don't have any subscription yet.",
+ "user_subscription.ends_at" => "Ends At",
+ "user_subscription.plan" => "Plan",
+ "user_subscription.renews_at" => "Renews At",
+ "user_subscription.resume_plan" => "Resume Plan",
+ "user_subscription.status" => "Status",
+ "user_subscription.title" => "Subscription Plan",
+ "validation_errors.incorrect_password" => "Sorry, you passed incorrect password :(",
+ "validation_errors.wrong_image" => "You may have uploaded the wrong file, try again!",
- // Laravel
- 'app_description' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
- 'user_not_fount' => 'We can\'t find a user with that e-mail address.',
- 'incorrect_password' => 'Sorry, your password is incorrect.',
- 'time' => '%d. %B. %Y at %H:%M',
- 'home' => 'Home',
+ // Laravel
+ 'app_description' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
+ 'user_not_fount' => 'We can\'t find a user with that e-mail address.',
+ 'incorrect_password' => 'Sorry, your password is incorrect.',
+ 'time' => '%d. %B. %Y at %H:%M',
+ 'home' => 'Home',
- //Shared link email message
- 'shared_link_email_subject' => '🙋 :user share some files with you. Look at it!',
- 'shared_link_email_greeting' => 'Hello!',
- 'shared_link_email_user' => ':user (:email) send you a link to shared files.',
- 'shared_link_email_link' => 'Open your files',
- 'shared_link_email_salutation' => 'Regards, :app_name',
+ //Shared link email message
+ 'shared_link_email_subject' => '🙋 :user share some files with you. Look at it!',
+ 'shared_link_email_greeting' => 'Hello!',
+ 'shared_link_email_user' => ':user (:email) send you a link to shared files.',
+ 'shared_link_email_link' => 'Open your files',
+ 'shared_link_email_salutation' => 'Regards, :app_name',
- // Reset password email
- 'reset_password_greeting' => 'Hello!',
- 'reset_password_subject' => 'Reset password for your account on ',
- 'reset_password_line_1' => 'You are receiving this email because we received a password reset request for your account.',
- 'reset_password_line_2' => 'If you did not request a password reset, no further action is required.',
- 'reset_password_action' => 'Reset Password',
+ // Reset password email
+ 'reset_password_greeting' => 'Hello!',
+ 'reset_password_subject' => 'Reset password for your account on ',
+ 'reset_password_line_1' => 'You are receiving this email because we received a password reset request for your account.',
+ 'reset_password_line_2' => 'If you did not request a password reset, no further action is required.',
+ 'reset_password_action' => 'Reset Password',
- 'salutation' => 'Regards',
+ 'salutation' => 'Regards',
- // Invoice
- 'print_button' => 'Print Document',
+ // Invoice
+ 'print_button' => 'Print Document',
- 'vat' => 'VAT',
- 'vat_included' => 'incl.',
- 'subtotal' => 'Subtotal',
+ 'vat' => 'VAT',
+ 'vat_included' => 'incl.',
+ 'subtotal' => 'Subtotal',
- 'tax_exempted' => 'Tax is exempted',
- 'tax_be_paid_reverse' => 'Tax to be paid on reverse charge basis',
+ 'tax_exempted' => 'Tax is exempted',
+ 'tax_be_paid_reverse' => 'Tax to be paid on reverse charge basis',
- 'invoice_title' => 'Invoice',
- 'date' => 'Date',
- 'product' => 'Product',
- 'subscription' => 'Subscription',
- 'invoice_number' => 'Invoice Number',
+ 'invoice_title' => 'Invoice',
+ 'date' => 'Date',
+ 'product' => 'Product',
+ 'subscription' => 'Subscription',
+ 'invoice_number' => 'Invoice Number',
- 'seller' => 'Seller',
- 'client' => 'Client',
+ 'seller' => 'Seller',
+ 'client' => 'Client',
- 'seller_vat' => 'VAT number',
- 'seller_name' => 'Name',
- 'seller_phone' => 'Phone',
+ 'seller_vat' => 'VAT number',
+ 'seller_name' => 'Name',
+ 'seller_phone' => 'Phone',
- 'name' => 'Name',
- 'phone' => 'Phone',
- 'address' => 'Address',
- 'city' => 'City',
- 'state' => 'State',
- 'postal_code' => 'Postal code',
- 'country' => 'Country',
+ 'name' => 'Name',
+ 'phone' => 'Phone',
+ 'address' => 'Address',
+ 'city' => 'City',
+ 'state' => 'State',
+ 'postal_code' => 'Postal code',
+ 'country' => 'Country',
- 'col_description' => 'Description',
- 'col_date' => 'Date',
- 'col_amount' => 'Amount',
+ 'col_description' => 'Description',
+ 'col_date' => 'Date',
+ 'col_amount' => 'Amount',
- 'total' => 'Total',
+ 'total' => 'Total',
- // OG Page
- 'user_sending' => ':name is sending you this file',
- 'protected_file' => 'This link is protected by password',
- ],
+ // OG Page
+ 'user_sending' => ':name is sending you this file',
+ 'protected_file' => 'This link is protected by password',
+ ],
+ 'regular' => [
+ "actions.close" => "Close",
+ "actions.create_folder" => "Create folder",
+ "actions.delete" => "Delete item",
+ "actions.download" => "Download item",
+ "actions.info_panel" => "Info panel",
+ "actions.move" => "Move item",
+ "actions.preview" => "Change preview",
+ "actions.print" => "Print item",
+ "actions.share" => "Share item",
+ "actions.sorting_view" => "Sorting and View",
+ "actions.upload" => "Upload file",
+ "admin_menu.dashboard" => "Dashboard",
+ "admin_menu.pages" => "Pages",
+ "admin_menu.settings" => "Settings",
+ "admin_menu.users" => "Users",
+ "admin_menu.languages" => "Languages",
+ "admin_page_dashboard.backer_button" => "Help Us Improve",
+ "admin_page_dashboard.license" => "License",
+ "admin_page_dashboard.version" => "Version",
+ "admin_page_dashboard.w_latest_users.title" => "Latest Registrations",
+ "admin_page_dashboard.w_total_space.link" => "Show All Users",
+ "admin_page_dashboard.w_total_space.title" => "Total Space Used",
+ "admin_page_dashboard.w_total_users.link" => "Show All Users",
+ "admin_page_dashboard.w_total_users.title" => "Total Users",
+ "admin_page_user.change_capacity" => "Change Capacity",
+ "admin_page_user.create_user.avatar" => "Avatar",
+ "admin_page_user.create_user.group_details" => "Account Details",
+ "admin_page_user.create_user.group_settings" => "Account Settings",
+ "admin_page_user.create_user.label_conf_pass" => "Confirm password",
+ "admin_page_user.create_user.label_email" => "Type E-mail",
+ "admin_page_user.create_user.label_name" => "Type full name",
+ "admin_page_user.create_user.submit" => "Create User",
+ "admin_page_user.delete_user" => "Delete User",
+ "admin_page_user.invoices.empty" => "User don't have any invoices yet.",
+ "admin_page_user.label_change_capacity" => "Type storage capacity in GB",
+ "admin_page_user.label_delete_user" => "Type with Case Sensitive user name ‘{user}‘",
+ "admin_page_user.label_person_info" => "Personal Information",
+ "admin_page_user.placeholder_delete_user" => "Type here",
+ "admin_page_user.save_role" => "Save Role",
+ "admin_page_user.select_role" => "Select user role",
+ "admin_page_user.send_password_link" => "Send Password Reset Link",
+ "admin_page_user.subscription.empty" => "User don't have any subscription yet.",
+ "admin_page_user.subscription.interval_mo" => "Monthly",
+ "admin_page_user.table.action" => "Action",
+ "admin_page_user.table.created_at" => "Registered",
+ "admin_page_user.table.name" => "User",
+ "admin_page_user.table.role" => "Role",
+ "admin_page_user.table.storage_capacity" => "Storage Capacity",
+ "admin_page_user.table.storage_used" => "Storage Used",
+ "admin_page_user.tabs.delete" => "Delete User",
+ "admin_page_user.tabs.detail" => "Detail",
+ "admin_page_user.tabs.password" => "Password",
+ "admin_page_user.tabs.storage" => "Storage Usage",
+ "admin_pages.form.content" => "Content",
+ "admin_pages.form.content_plac" => "Type your content here...",
+ "admin_pages.form.slug" => "Slug",
+ "admin_pages.form.title" => "Title",
+ "admin_pages.form.title_plac" => "Title name",
+ "admin_pages.form.visibility" => "Visibility",
+ "admin_pages.form.visibility_help" => "Status of your page visibility on website.",
+ "admin_pages.table.page" => "Page",
+ "admin_pages.table.slug" => "Slug",
+ "admin_pages.table.status" => "Status",
+ "admin_settings.appearance.description" => "App Description",
+ "admin_settings.appearance.description_plac" => "Type your app description",
+ "admin_settings.appearance.favicon" => "App Favicon (optional)",
+ "admin_settings.appearance.logo" => "App Logo (optional)",
+ "admin_settings.appearance.logo_horizontal" => "App Logo Horizontal (optional)",
+ "admin_settings.appearance.section_appearance" => "Appearance",
+ "admin_settings.appearance.section_general" => "General Settings",
+ "admin_settings.appearance.title" => "App Title",
+ "admin_settings.appearance.title_plac" => "Type your app title",
+ "admin_settings.email.driver" => "Mail Driver",
+ "admin_settings.email.driver_plac" => "Type your mail driver",
+ "admin_settings.email.email_disclaimer" => "This form is not fully pre-filled for security reasons. Your email settings is available in your .env file. For apply new Email settings, please confirm your options by button at the end of formular.",
+ "admin_settings.email.encryption" => "Mail Encryption",
+ "admin_settings.email.encryption_plac" => "Select your mail encryption",
+ "admin_settings.email.host" => "Mail Host",
+ "admin_settings.email.host_plac" => "Type your mail host",
+ "admin_settings.email.password" => "Mail Password",
+ "admin_settings.email.password_plac" => "Type your mail password",
+ "admin_settings.email.port" => "Mail Port",
+ "admin_settings.email.port_plac" => "Type your mail port",
+ "admin_settings.email.save_button" => "Save Email Settings",
+ "admin_settings.email.section_email" => "Email Setup",
+ "admin_settings.email.username" => "Mail Username",
+ "admin_settings.email.username_plac" => "Type your mail username",
+ "admin_settings.others.allow_registration" => "Allow User Registration",
+ "admin_settings.others.allow_registration_help" => "You can disable public registration for new users. You will still able to
create new users in administration panel.",
+ "admin_settings.others.cache_clear" => "Clear Cache",
+ "admin_settings.others.cache_disclaimer" => "Did you change anything in your .env file or change your Stripe credentials? Then clear your cache.",
+ "admin_settings.others.contact_email" => "Contact Email",
+ "admin_settings.others.contact_email_plac" => "Type your contact email",
+ "admin_settings.others.default_storage" => "Default Storage Space for User Accounts",
+ "admin_settings.others.default_storage_plac" => "Set default storage space in GB",
+ "admin_settings.others.google_analytics" => "Google Analytics Code (optional)",
+ "admin_settings.others.google_analytics_plac" => "Paste your Google Analytics Code",
+ "admin_settings.others.mimetypes_blacklist" => "Mimetypes Blacklist",
+ "admin_settings.others.mimetypes_blacklist_help" => "If you want to prevent upload some type of files, just add them to blacklist like this: x-php,mp3,jpeg
Use a comma between each mimetype. Don't use a dot before mimetypes.",
+ "admin_settings.others.mimetypes_blacklist_plac" => "Add mimetypes to Blacklist",
+ "admin_settings.others.section_cache" => "Application Cache",
+ "admin_settings.others.section_others" => "Others Settings",
+ "admin_settings.others.section_user" => "Users and Storage",
+ "admin_settings.others.storage_limit" => "Storage Limitation",
+ "admin_settings.others.storage_limit_help" => "If this value is off, all users will have infinity storage capacity and you won't be
able to charge your users for storage plan.",
+ "admin_settings.others.upload_limit" => "Upload Limit",
+ "admin_settings.others.upload_limit_help" => "If you want to set max file size limit on single upload, add size of your limit in MB. E.g. 100 means 100 MB and 2 000 means 2 000 MB limit.",
+ "admin_settings.others.upload_limit_plac" => "Type your upload limit in MB",
+ "admin_settings.tabs.appearance" => "Appearance",
+ "admin_settings.tabs.email" => "Email",
+ "admin_settings.tabs.others" => "Application",
+ "alerts.error_confirm" => "That’s horrible!",
+ "alerts.leave_to_sign_in" => "Do you really want to leave?",
+ "alerts.success_confirm" => "Awesome!",
+ "context_menu.add_folder" => "Add Folder",
+ "context_menu.add_to_favourites" => "Add to Favourites",
+ "context_menu.create_folder" => "Create Folder",
+ "context_menu.delete" => "Delete",
+ "context_menu.detail" => "Detail",
+ "context_menu.download" => "Download",
+ "context_menu.empty_trash" => "Empty Trash",
+ "context_menu.log_out" => "Log Out",
+ "context_menu.move" => "Move",
+ "context_menu.no_options" => "No Options Available",
+ "context_menu.profile_settings" => "Profile Settings",
+ "context_menu.remove_from_favourites" => "Remove Favourite",
+ "context_menu.rename" => "Rename",
+ "context_menu.restore" => "Restore",
+ "context_menu.select" => "Select",
+ "context_menu.share" => "Share",
+ "context_menu.share_cancel" => "Cancel Sharing",
+ "context_menu.share_edit" => "Edit Sharing",
+ "context_menu.upload" => "Upload",
+ "context_menu.zip_folder" => "Zip and Download",
+ "cookie_disclaimer.button" => "cookies policy",
+ "cookie_disclaimer.description" => "By browsing this website you are agreeing to our {0}.",
+ "datatable.paginate_info" => "Showing 1 - {visible} from {total} records",
+ "empty_page.call_to_action" => "Upload Files",
+ "empty_page.description" => "Upload some files here easily via upload button.",
+ "empty_page.title" => "Upload Your First File",
+ "errors.capacity_digit" => "The storage capacity must be lower than 10 digit number.",
+ "file_detail.author" => "Author",
+ "file_detail.author_participant" => "Public Participant",
+ "file_detail.created_at" => "Created at",
+ "file_detail.items" => "Items",
+ "file_detail.selected_multiple" => "Selected Multiple Items",
+ "file_detail.shared" => "Shared",
+ "file_detail.size" => "Size",
+ "file_detail.where" => "Where",
+ "file_detail_meta.aperature" => "F Number",
+ "file_detail_meta.aperture_value" => "Aperture Value",
+ "file_detail_meta.author" => "Author",
+ "file_detail_meta.camera_lens" => "Camera Lens",
+ "file_detail_meta.color_space" => "Color Space",
+ "file_detail_meta.dimension" => "Dimensions",
+ "file_detail_meta.exposure" => "Exposure Time",
+ "file_detail_meta.focal" => "Focal Length",
+ "file_detail_meta.iso" => "ISO",
+ "file_detail_meta.latitude" => "Latitude",
+ "file_detail_meta.longitude" => "Longitude",
+ "file_detail_meta.make" => "Camera",
+ "file_detail_meta.meta_data" => "Metadata",
+ "file_detail_meta.model" => "Model",
+ "file_detail_meta.resolution" => "Resolution",
+ "file_detail_meta.time_data" => "Content Created",
+ "folder.empty" => "Empty",
+ "folder.item_counts" => "{count} Item | {count} Items",
+ "global.active" => "Active",
+ "global.admin" => "Admin",
+ "global.cancel" => "Cancel",
+ "global.canceled" => "Canceled",
+ "global.confirm_action" => "Yes, I'm sure",
+ "global.default" => "Default",
+ "global.free" => "Free",
+ "global.get_it" => "Get It",
+ "global.incomplete" => "Incomplete",
+ "global.menu" => "Menu",
+ "global.monthly_ac" => "Mo.",
+ "global.or" => "or",
+ "global.premium" => "Premium",
+ "global.saas" => "Services",
+ "global.subscription" => "Subscription",
+ "global.total" => "Total",
+ "global.upgrade_plan" => "Upgrade Plan",
+ "input_image.supported" => "Supported formats are .png, .jpg, .jpeg.",
+ "input_image.title" => "Upload Image",
+ "inputs.placeholder_search_files" => "Search files or folders...",
+ "item_thumbnail.deleted_at" => "Deleted {time}",
+ "item_thumbnail.original_location" => "Original Location",
+ "locations.home" => "Files",
+ "locations.logout" => "Log Out",
+ "locations.profile" => "Profile",
+ "locations.settings" => "Settings",
+ "locations.shared" => "Shared",
+ "locations.trash" => "Trash",
+ "menu.admin" => "Administration",
+ "menu.files" => "Files",
+ "menu.invoices" => "Invoices",
+ "menu.latest" => "Recent Uploads",
+ "menu.logout" => "Log Out",
+ "menu.password" => "Password",
+ "menu.payment_cards" => "Payment Cards",
+ "menu.profile" => "Profile Settings",
+ "menu.settings" => "Settings",
+ "menu.shared" => "Shared Files",
+ "menu.storage" => "Storage",
+ "menu.subscription" => "Subscription",
+ "menu.trash" => "Trash",
+ "messages.nothing_from_participants" => "You don't have any uploads from other users.",
+ "messages.nothing_to_preview" => "There is nothing to preview.",
+ "messages.nothing_was_found" => "Nothing was found.",
+ "mobile_selecting.deselect_all" => "Deselect All",
+ "mobile_selecting.done" => "Done",
+ "mobile_selecting.select_all" => "Select All",
+ "page_contact_us.description" => "Do you have any questions? Get in touch with us.",
+ "page_contact_us.error_message" => "Something went wrong, please try it again.",
+ "page_contact_us.form.email" => "Email",
+ "page_contact_us.form.email_plac" => "Type your email",
+ "page_contact_us.form.message" => "Message",
+ "page_contact_us.form.message_plac" => "Type your message here...",
+ "page_contact_us.form.submit_button" => "Send Message",
+ "page_contact_us.success_message" => "Your message was send successfully.",
+ "page_contact_us.title" => "Contact Us",
+ "page_create_password.button_update" => "Update Password",
+ "page_create_password.label_confirm_pass" => "Confirm password",
+ "page_create_password.label_email" => "Email",
+ "page_create_password.label_new_pass" => "New password",
+ "page_create_password.subtitle" => "Create your new password here",
+ "page_create_password.title" => "Only One Step to Log In",
+ "page_forgotten_password.button_get_link" => "Get Link",
+ "page_forgotten_password.pass_reseted_signin" => "Sign In",
+ "page_forgotten_password.pass_reseted_subtitle" => "Your password was reset successfully.",
+ "page_forgotten_password.pass_reseted_title" => "Awesome!",
+ "page_forgotten_password.pass_sennded_subtitle" => "We have e-mailed your password reset link!",
+ "page_forgotten_password.pass_sennded_title" => "Thank you!",
+ "page_forgotten_password.password_remember_button" => "Log In.",
+ "page_forgotten_password.password_remember_text" => "Remember your password?",
+ "page_forgotten_password.subtitle" => "Get reset link with your email",
+ "page_forgotten_password.title" => "Forgotten Password?",
+ "page_index.get_started_button" => "Sign Up Now",
+ "page_index.menu.contact_us" => "Contact Us",
+ "page_index.menu.log_in" => "Log In",
+ "page_index.menu.pricing" => "Pricing",
+ "page_index.menu.sign_in" => "Sign Up",
+ "page_index.sign_feature_1" => "No credit card required",
+ "page_index.sign_feature_2" => "{defaultSpace} Free storage space",
+ "page_index.sign_up_button" => "Sign Up Now",
+ "page_login.button_next" => "Next Step",
+ "page_login.placeholder_email" => "Type your E-mail",
+ "page_login.registration_button" => "Register account.",
+ "page_login.registration_text" => "Don’t have an account?",
+ "page_login.subtitle" => "Please type your email to log in",
+ "page_login.title" => "Welcome Back!",
+ "page_pricing_tables.description" => "Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.",
+ "page_pricing_tables.storage_capacity" => "Of Storage Capacity",
+ "page_pricing_tables.title" => "Choose Your Plan",
+ "page_pricing_tables.vat_excluded" => "Price displayed excludes VAT.",
+ "page_registration.agreement" => "By clicking on 'Create Account' button I agree to the {0} and {1}.",
+ "page_registration.button_create_account" => "Create Account",
+ "page_registration.have_an_account" => "Do you have an account?",
+ "page_registration.label_confirm_pass" => "Confirm password",
+ "page_registration.label_email" => "Email",
+ "page_registration.label_name" => "Full Name",
+ "page_registration.label_pass" => "Create password",
+ "page_registration.placeholder_confirm_pass" => "Confirm your new password",
+ "page_registration.placeholder_email" => "Type your E-mail",
+ "page_registration.placeholder_name" => "Type your full name",
+ "page_registration.placeholder_pass" => "New password",
+ "page_registration.subtitle" => "Please fill registration to create account",
+ "page_registration.title" => "Create New Account",
+ "page_shared.download_file" => "Download File",
+ "page_shared.placeholder_pass" => "Type password",
+ "page_shared.submit" => "Submit",
+ "page_shared.subtitle" => "Please type the password to get shared content",
+ "page_shared.title" => "Your Share Link is Protected",
+ "page_shared_404.subtitle" => "The content you are finding was probably deleted.",
+ "page_shared_404.title" => "Not Found :(",
+ "page_sign_in.button_log_in" => "Log In",
+ "page_sign_in.password_reset_button" => "Reset Password.",
+ "page_sign_in.password_reset_text" => "Forgotten your password?",
+ "page_sign_in.placeholder_password" => "Type your password",
+ "page_sign_in.subtitle" => "Confirm you by your password",
+ "page_sign_in.title" => "Are You {name}?",
+ "popup_create_folder.folder_default_name" => "New Folder",
+ "popup_create_folder.label" => "Type Name",
+ "popup_create_folder.placeholder" => "Type your name",
+ "popup_create_folder.title" => "Create Folder",
+ "popup_delete_card.message" => "This event is irreversible and your payment card will be delete forever",
+ "popup_delete_card.title" => "Are you sure?",
+ "popup_deleted_plan.message" => "Your plan was successfully deleted.",
+ "popup_deleted_plan.title" => "Plan was deleted",
+ "popup_deleted_user.message" => "Your user was deleted with all user data content.",
+ "popup_deleted_user.title" => "User was deleted",
+ "popup_deleted_user_aborted.message" => "You can't delete this account while user have active subscription.",
+ "popup_deleted_user_aborted.title" => "User wasn't deleted",
+ "popup_error.message" => "Something went wrong and we can't continue. Please contact us.",
+ "popup_error.title" => "Whooops, something went wrong!",
+ "popup_exceed_limit.message" => "Please contact your administrator to change your limit.",
+ "popup_exceed_limit.title" => "Whooops, you exceed storage limit :(",
+ "popup_mimetypes_blacklist.message" => "File of this type ({mimetype}) is not allowed to upload.",
+ "popup_mimetypes_blacklist.title" => "You are trying to upload unsupported file type",
+ "popup_move_item.cancel" => "Cancel",
+ "popup_move_item.submit" => "Move Item",
+ "popup_move_item.title" => "Move Item",
+ "popup_pass_changed.message" => "So now, you have awesome new password.",
+ "popup_pass_changed.title" => "Your password was changed!",
+ "popup_passport_error.message" => "Probably you didn't generated Passport Grant client or you didn't set up passport credentials in your .env file. Please follow install instructions.",
+ "popup_passport_error.title" => "Invalid Passport Grand Client",
+ "popup_paylod_error.message" => "Sorry, your file is too large and can't be uploaded",
+ "popup_paylod_error.title" => "File is too large",
+ "popup_rename.select_emoji_label" => "Pick Your Emoji Icon",
+ "popup_rename.color_pick_label" => "Pick Your Color",
+ "popup_rename.emoji_list_not_found" => "Not Found",
+ "popup_rename.label" => "Edit Name",
+ "popup_rename.placeholder" => "Type your title",
+ "popup_rename.search_emoji_input_placeholder" => "Search your emoji...",
+ "popup_rename.set_emoji_input_placeholder" => "Emojis List...",
+ "popup_rename.tab_color_title" => "Folder Color",
+ "popup_rename.tab_emoji_title" => "Emoji as an Icon",
+ "popup_rename.title" => "Rename Your {item}",
+ "popup_set_card.message" => "Your card will be set as default and will be always charged for the next billings.",
+ "popup_set_card.title" => "Set as default card?",
+ "popup_share_create.title" => "Share Your {item}",
+ "popup_share_edit.change_pass" => "Change Password",
+ "popup_share_edit.confirm" => "Confirm",
+ "popup_share_edit.go_back" => "Go Back",
+ "popup_share_edit.save" => "Save Changes",
+ "popup_share_edit.send_to_recipients" => "Send to Recipients",
+ "popup_share_edit.stop" => "Cancel Sharing",
+ "popup_share_edit.title" => "Update sharing options",
+ "popup_signup_error.message" => "Please check your database connection if everything works correctly.",
+ "popup_signup_error.title" => "Server Error",
+ "popup_subscription_cancel.button" => "I'm done",
+ "popup_subscription_cancel.message" => "You'll continue to have access to the features you've paid for until the end of your billing cycle.",
+ "popup_subscription_cancel.title" => "Subscription Was Canceled",
+ "popup_subscription_resumed.button" => "That's awesome!",
+ "popup_subscription_resumed.message" => "Your subscription was re-activated, and they will be billed on the original billing cycle.",
+ "popup_subscription_resumed.title" => "Subscription Was Resumed",
+ "popup_upload_limit.message" => "Size of your uploaded file exceed the upload limit ({uploadLimit}).",
+ "popup_upload_limit.title" => "You exceed upload limit on single file",
+ "popup_zipping.message" => "Please wait until your files start downloading.",
+ "popup_zipping.title" => "Zipping Your Files...",
+ "preview_sorting.grid_view" => "Grid View",
+ "preview_sorting.list_view" => "List View",
+ "preview_sorting.preview_sorting_button" => "View",
+ "preview_sorting.sort_alphabet" => "Sort By Aplhabet",
+ "preview_sorting.sort_date" => "Sort By Date",
+ "profile.change_pass" => "Change Password",
+ "profile.profile_info" => "Profile Information",
+ "profile.store_pass" => "Store New Password",
+ "pronouns.of" => "of",
+ "roles.admin" => "Admin",
+ "roles.user" => "User",
+ "routes.create_new_password" => "create-new-password",
+ "routes_title.appearance" => "Appearance",
+ "routes_title.billings" => "Billings",
+ "routes_title.dashboard" => "Dashboard",
+ "routes_title.email" => "Email",
+ "routes_title.languages" => "Languages",
+ "routes_title.others" => "Others",
+ "routes_title.page_edit" => "Edit Page",
+ "routes_title.pages" => "Pages",
+ "routes_title.payment_methods" => "Payment Methods",
+ "routes_title.profile" => "My Profile",
+ "routes_title.profile_settings" => "Profile Settings",
+ "routes_title.settings" => "Settings",
+ "routes_title.settings_mobile" => "Settings",
+ "routes_title.settings_password" => "Change Password",
+ "routes_title.settings_storage" => "Storage",
+ "routes_title.user_create" => "Create User",
+ "routes_title.users_delete" => "Delete User",
+ "routes_title.users_detail" => "Detail",
+ "routes_title.users_list" => "User Management",
+ "routes_title.users_password" => "Password",
+ "routes_title.users_storage_usage" => "Storage Usage",
+ "routes_title.users_user" => "User",
+ "shared.can_download" => "Can download file",
+ "shared.editor" => "Can edit and upload files",
+ "shared.empty_shared" => "You haven't shared anything yet.",
+ "shared.visitor" => "Can only view and download",
+ "shared_form.button_close_options" => "Close Options",
+ "shared_form.button_done" => "Awesome, I’m done!",
+ "shared_form.button_folder_icon_open" => "Customize Folder Icon",
+ "shared_form.button_generate" => "Generate Link",
+ "shared_form.button_more_options" => "Set Expiration",
+ "shared_form.email_placeholder" => "Type your emails",
+ "shared_form.email_successfully_send_message" => "Your item was successfully sended to recipients emails.",
+ "shared_form.expiration_day" => "{value}d.",
+ "shared_form.expiration_hour" => "{value}h.",
+ "shared_form.label_expiration" => "Link Expiration",
+ "shared_form.label_password_protection" => "Password Protected",
+ "shared_form.label_permission" => "Permission",
+ "shared_form.label_send_to_recipients" => "Send to Recipients",
+ "shared_form.label_share_vie_email" => "Get your link",
+ "shared_form.label_shared_url" => "Share url",
+ "shared_form.placeholder_permission" => "Select your permission",
+ "shared_form.recipients_label" => "Recipients",
+ "shared_form.share_by_email" => "Share by Email",
+ "shared_form.share_by_link" => "Share by Link",
+ "sidebar.favourites" => "Favourites",
+ "sidebar.favourites_empty" => "Drag here your favourite folder.",
+ "sidebar.folders_empty" => "Create some new folder.",
+ "sidebar.home" => "Files",
+ "sidebar.latest" => "Recent Uploads",
+ "sidebar.locations_title" => "Base",
+ "sidebar.my_shared" => "My Shared Items",
+ "sidebar.navigator_title" => "Navigator",
+ "sidebar.participant_uploads" => "Participant Uploads",
+ "sidebar.tools_title" => "Tools",
+ "storage.audios" => "Audios",
+ "storage.documents" => "Documents",
+ "storage.images" => "Images",
+ "storage.others" => "Others",
+ "storage.sec_capacity" => "Your disk Usage",
+ "storage.sec_details" => "Capacity Usage Details",
+ "storage.total_capacity" => "Your storage capacity is {capacity}",
+ "storage.total_used" => "Total used {used}",
+ "storage.videos" => "Videos",
+ "toaster.account_upgraded" => "Your account was successfully upgraded.",
+ "toaster.changed_capacity" => "You successfully changed user's storage size!",
+ "toaster.changed_user" => "You successfully changed user's role!",
+ "toaster.created_user" => "User was created successfully!",
+ "toaster.email_set" => "Your email settings was updated successfully",
+ "toaster.sended_password" => "You successfully send user email for reset password!",
+ "types.file" => "File",
+ "types.folder" => "Folder",
+ "upgrade_banner.button" => "Upgrade",
+ "upgrade_banner.description" => "You nearly reach your storage capacity.",
+ "upgrade_banner.title" => "You reach your storage capacity. Please upgrade.",
+ "uploading.cancel" => "Cancel Uploading",
+ "uploading.processing_file" => "Processing File...",
+ "uploading.progress" => "Uploading File {progress}% - {current}/{total}",
+ "uploading.progress_single_upload" => "Uploading File {progress}%",
+ "user_add_card.default_description" => "Your card will be charged for billing plans as first.",
+ "user_add_card.default_title" => "Set as Default Payment Method",
+ "user_box_delete.description" => "You can delete your user, but, pay attention! This event is irreversible and all user data include user files will be deleted.",
+ "user_box_delete.title" => "Delete User",
+ "user_box_password.description" => "You can send password reset email via button bellow. User will be redirected to page where he can update password for his account.",
+ "user_box_password.title" => "Change User Password",
+ "user_box_role.description" => "You can change role for current user. Admin role can edit or create new users, change storage capacity and any other application settings.",
+ "user_box_role.title" => "Change User Role",
+ "user_box_storage.description" => "Change user storage capacity by input bellow. You have to type only number e.g. value '5' means, user will have 5GB of storage capacity.",
+ "user_box_storage.title" => "Change User Storage Capacity",
+ "user_password.title" => "Change Your Password",
+ "user_settings.address" => "Address",
+ "user_settings.address_plac" => "Type your billing address",
+ "user_settings.city" => "City",
+ "user_settings.city_plac" => "Type your billing city",
+ "user_settings.country" => "Country",
+ "user_settings.country_plac" => "Select your billing country",
+ "user_settings.name" => "Name",
+ "user_settings.name_plac" => "Type your billing name",
+ "user_settings.phone_number" => "Phone Number",
+ "user_settings.phone_number_plac" => "Type your billing phone number",
+ "user_settings.postal_code" => "Postal Code",
+ "user_settings.postal_code_plac" => "Type your billing postal code",
+ "user_settings.state" => "State",
+ "user_settings.state_plac" => "Type your billing state",
+ "user_settings.timezone" => "Timezone",
+ "user_settings.timezone_plac" => "Select your timezone",
+ "user_settings.title_account" => "Account Information",
+ "user_settings.title_billing" => "Billing Information",
+ "user_subscription.billed" => "Billed",
+ "user_subscription.cancel_plan" => "Cancel Plan",
+ "user_subscription.canceled_at" => "Canceled At",
+ "user_subscription.created_at" => "Created At",
+ "user_subscription.empty" => "You don't have any subscription yet.",
+ "user_subscription.ends_at" => "Ends At",
+ "user_subscription.plan" => "Plan",
+ "user_subscription.renews_at" => "Renews At",
+ "user_subscription.resume_plan" => "Resume Plan",
+ "user_subscription.status" => "Status",
+ "user_subscription.title" => "Subscription Plan",
+ "validation_errors.incorrect_password" => "Sorry, you passed incorrect password :(",
+ "validation_errors.wrong_image" => "You may have uploaded the wrong file, try again!",
- 'regular' => [
- "actions.close" => "Close",
- "actions.create_folder" => "Create folder",
- "actions.delete" => "Delete item",
- "actions.download" => "Download item",
- "actions.info_panel" => "Info panel",
- "actions.move" => "Move item",
- "actions.preview" => "Change preview",
- "actions.print" => "Print item",
- "actions.share" => "Share item",
- "actions.sorting_view" => "Sorting and View",
- "actions.upload" => "Upload file",
- "admin_menu.dashboard" => "Dashboard",
- "admin_menu.pages" => "Pages",
- "admin_menu.settings" => "Settings",
- "admin_menu.users" => "Users",
- "admin_menu.languages" => "Languages",
- "admin_page_dashboard.backer_button" => "Help Us Improve",
- "admin_page_dashboard.license" => "License",
- "admin_page_dashboard.version" => "Version",
- "admin_page_dashboard.w_latest_users.title" => "Latest Registrations",
- "admin_page_dashboard.w_total_space.link" => "Show All Users",
- "admin_page_dashboard.w_total_space.title" => "Total Space Used",
- "admin_page_dashboard.w_total_users.link" => "Show All Users",
- "admin_page_dashboard.w_total_users.title" => "Total Users",
- "admin_page_user.change_capacity" => "Change Capacity",
- "admin_page_user.create_user.avatar" => "Avatar",
- "admin_page_user.create_user.group_details" => "Account Details",
- "admin_page_user.create_user.group_settings" => "Account Settings",
- "admin_page_user.create_user.label_conf_pass" => "Confirm password",
- "admin_page_user.create_user.label_email" => "Type E-mail",
- "admin_page_user.create_user.label_name" => "Type full name",
- "admin_page_user.create_user.submit" => "Create User",
- "admin_page_user.delete_user" => "Delete User",
- "admin_page_user.invoices.empty" => "User don't have any invoices yet.",
- "admin_page_user.label_change_capacity" => "Type storage capacity in GB",
- "admin_page_user.label_delete_user" => "Type with Case Sensitive user name ‘{user}‘",
- "admin_page_user.label_person_info" => "Personal Information",
- "admin_page_user.placeholder_delete_user" => "Type here",
- "admin_page_user.save_role" => "Save Role",
- "admin_page_user.select_role" => "Select user role",
- "admin_page_user.send_password_link" => "Send Password Reset Link",
- "admin_page_user.subscription.empty" => "User don't have any subscription yet.",
- "admin_page_user.subscription.interval_mo" => "Monthly",
- "admin_page_user.table.action" => "Action",
- "admin_page_user.table.created_at" => "Registered",
- "admin_page_user.table.name" => "User",
- "admin_page_user.table.role" => "Role",
- "admin_page_user.table.storage_capacity" => "Storage Capacity",
- "admin_page_user.table.storage_used" => "Storage Used",
- "admin_page_user.tabs.delete" => "Delete User",
- "admin_page_user.tabs.detail" => "Detail",
- "admin_page_user.tabs.password" => "Password",
- "admin_page_user.tabs.storage" => "Storage Usage",
- "admin_pages.form.content" => "Content",
- "admin_pages.form.content_plac" => "Type your content here...",
- "admin_pages.form.slug" => "Slug",
- "admin_pages.form.title" => "Title",
- "admin_pages.form.title_plac" => "Title name",
- "admin_pages.form.visibility" => "Visibility",
- "admin_pages.form.visibility_help" => "Status of your page visibility on website.",
- "admin_pages.table.page" => "Page",
- "admin_pages.table.slug" => "Slug",
- "admin_pages.table.status" => "Status",
- "admin_settings.appearance.description" => "App Description",
- "admin_settings.appearance.description_plac" => "Type your app description",
- "admin_settings.appearance.favicon" => "App Favicon (optional)",
- "admin_settings.appearance.logo" => "App Logo (optional)",
- "admin_settings.appearance.logo_horizontal" => "App Logo Horizontal (optional)",
- "admin_settings.appearance.section_appearance" => "Appearance",
- "admin_settings.appearance.section_general" => "General Settings",
- "admin_settings.appearance.title" => "App Title",
- "admin_settings.appearance.title_plac" => "Type your app title",
- "admin_settings.email.driver" => "Mail Driver",
- "admin_settings.email.driver_plac" => "Type your mail driver",
- "admin_settings.email.email_disclaimer" => "This form is not fully pre-filled for security reasons. Your email settings is available in your .env file. For apply new Email settings, please confirm your options by button at the end of formular.",
- "admin_settings.email.encryption" => "Mail Encryption",
- "admin_settings.email.encryption_plac" => "Select your mail encryption",
- "admin_settings.email.host" => "Mail Host",
- "admin_settings.email.host_plac" => "Type your mail host",
- "admin_settings.email.password" => "Mail Password",
- "admin_settings.email.password_plac" => "Type your mail password",
- "admin_settings.email.port" => "Mail Port",
- "admin_settings.email.port_plac" => "Type your mail port",
- "admin_settings.email.save_button" => "Save Email Settings",
- "admin_settings.email.section_email" => "Email Setup",
- "admin_settings.email.username" => "Mail Username",
- "admin_settings.email.username_plac" => "Type your mail username",
- "admin_settings.others.allow_registration" => "Allow User Registration",
- "admin_settings.others.allow_registration_help" => "You can disable public registration for new users. You will still able to
create new users in administration panel.",
- "admin_settings.others.cache_clear" => "Clear Cache",
- "admin_settings.others.cache_disclaimer" => "Did you change anything in your .env file or change your Stripe credentials? Then clear your cache.",
- "admin_settings.others.contact_email" => "Contact Email",
- "admin_settings.others.contact_email_plac" => "Type your contact email",
- "admin_settings.others.default_storage" => "Default Storage Space for User Accounts",
- "admin_settings.others.default_storage_plac" => "Set default storage space in GB",
- "admin_settings.others.google_analytics" => "Google Analytics Code (optional)",
- "admin_settings.others.google_analytics_plac" => "Paste your Google Analytics Code",
- "admin_settings.others.mimetypes_blacklist" => "Mimetypes Blacklist",
- "admin_settings.others.mimetypes_blacklist_help" => "If you want to prevent upload some type of files, just add them to blacklist like this: x-php,mp3,jpeg
Use a comma between each mimetype. Don't use a dot before mimetypes.",
- "admin_settings.others.mimetypes_blacklist_plac" => "Add mimetypes to Blacklist",
- "admin_settings.others.section_cache" => "Application Cache",
- "admin_settings.others.section_others" => "Others Settings",
- "admin_settings.others.section_user" => "Users and Storage",
- "admin_settings.others.storage_limit" => "Storage Limitation",
- "admin_settings.others.storage_limit_help" => "If this value is off, all users will have infinity storage capacity and you won't be
able to charge your users for storage plan.",
- "admin_settings.others.upload_limit" => "Upload Limit",
- "admin_settings.others.upload_limit_help" => "If you want to set max file size limit on single upload, add size of your limit in MB. E.g. 100 means 100 MB and 2 000 means 2 000 MB limit.",
- "admin_settings.others.upload_limit_plac" => "Type your upload limit in MB",
- "admin_settings.tabs.appearance" => "Appearance",
- "admin_settings.tabs.email" => "Email",
- "admin_settings.tabs.others" => "Application",
- "alerts.error_confirm" => "That’s horrible!",
- "alerts.leave_to_sign_in" => "Do you really want to leave?",
- "alerts.success_confirm" => "Awesome!",
- "context_menu.add_folder" => "Add Folder",
- "context_menu.add_to_favourites" => "Add to Favourites",
- "context_menu.create_folder" => "Create Folder",
- "context_menu.delete" => "Delete",
- "context_menu.detail" => "Detail",
- "context_menu.download" => "Download",
- "context_menu.empty_trash" => "Empty Trash",
- "context_menu.log_out" => "Log Out",
- "context_menu.move" => "Move",
- "context_menu.no_options" => "No Options Available",
- "context_menu.profile_settings" => "Profile Settings",
- "context_menu.remove_from_favourites" => "Remove Favourite",
- "context_menu.rename" => "Rename",
- "context_menu.restore" => "Restore",
- "context_menu.select" => "Select",
- "context_menu.share" => "Share",
- "context_menu.share_cancel" => "Cancel Sharing",
- "context_menu.share_edit" => "Edit Sharing",
- "context_menu.upload" => "Upload",
- "context_menu.zip_folder" => "Zip and Download",
- "cookie_disclaimer.button" => "cookies policy",
- "cookie_disclaimer.description" => "By browsing this website you are agreeing to our {0}.",
- "datatable.paginate_info" => "Showing 1 - {visible} from {total} records",
- "empty_page.call_to_action" => "Upload Files",
- "empty_page.description" => "Upload some files here easily via upload button.",
- "empty_page.title" => "Upload Your First File",
- "errors.capacity_digit" => "The storage capacity must be lower than 10 digit number.",
- "file_detail.author" => "Author",
- "file_detail.author_participant" => "Public Participant",
- "file_detail.created_at" => "Created at",
- "file_detail.items" => "Items",
- "file_detail.selected_multiple" => "Selected Multiple Items",
- "file_detail.shared" => "Shared",
- "file_detail.size" => "Size",
- "file_detail.where" => "Where",
- "file_detail_meta.aperature" => "F Number",
- "file_detail_meta.aperture_value" => "Aperture Value",
- "file_detail_meta.author" => "Author",
- "file_detail_meta.camera_lens" => "Camera Lens",
- "file_detail_meta.color_space" => "Color Space",
- "file_detail_meta.dimension" => "Dimensions",
- "file_detail_meta.exposure" => "Exposure Time",
- "file_detail_meta.focal" => "Focal Length",
- "file_detail_meta.iso" => "ISO",
- "file_detail_meta.latitude" => "Latitude",
- "file_detail_meta.longitude" => "Longitude",
- "file_detail_meta.make" => "Camera",
- "file_detail_meta.meta_data" => "Metadata",
- "file_detail_meta.model" => "Model",
- "file_detail_meta.resolution" => "Resolution",
- "file_detail_meta.time_data" => "Content Created",
- "folder.empty" => "Empty",
- "folder.item_counts" => "{count} Item | {count} Items",
- "global.active" => "Active",
- "global.admin" => "Admin",
- "global.cancel" => "Cancel",
- "global.canceled" => "Canceled",
- "global.confirm_action" => "Yes, I'm sure",
- "global.default" => "Default",
- "global.free" => "Free",
- "global.get_it" => "Get It",
- "global.incomplete" => "Incomplete",
- "global.menu" => "Menu",
- "global.monthly_ac" => "Mo.",
- "global.or" => "or",
- "global.premium" => "Premium",
- "global.saas" => "Services",
- "global.subscription" => "Subscription",
- "global.total" => "Total",
- "global.upgrade_plan" => "Upgrade Plan",
- "input_image.supported" => "Supported formats are .png, .jpg, .jpeg.",
- "input_image.title" => "Upload Image",
- "inputs.placeholder_search_files" => "Search files or folders...",
- "item_thumbnail.deleted_at" => "Deleted {time}",
- "item_thumbnail.original_location" => "Original Location",
- "locations.home" => "Files",
- "locations.logout" => "Log Out",
- "locations.profile" => "Profile",
- "locations.settings" => "Settings",
- "locations.shared" => "Shared",
- "locations.trash" => "Trash",
- "menu.admin" => "Administration",
- "menu.files" => "Files",
- "menu.invoices" => "Invoices",
- "menu.latest" => "Recent Uploads",
- "menu.logout" => "Log Out",
- "menu.password" => "Password",
- "menu.payment_cards" => "Payment Cards",
- "menu.profile" => "Profile Settings",
- "menu.settings" => "Settings",
- "menu.shared" => "Shared Files",
- "menu.storage" => "Storage",
- "menu.subscription" => "Subscription",
- "menu.trash" => "Trash",
- "messages.nothing_from_participants" => "You don't have any uploads from other users.",
- "messages.nothing_to_preview" => "There is nothing to preview.",
- "messages.nothing_was_found" => "Nothing was found.",
- "mobile_selecting.deselect_all" => "Deselect All",
- "mobile_selecting.done" => "Done",
- "mobile_selecting.select_all" => "Select All",
- "page_contact_us.description" => "Do you have any questions? Get in touch with us.",
- "page_contact_us.error_message" => "Something went wrong, please try it again.",
- "page_contact_us.form.email" => "Email",
- "page_contact_us.form.email_plac" => "Type your email",
- "page_contact_us.form.message" => "Message",
- "page_contact_us.form.message_plac" => "Type your message here...",
- "page_contact_us.form.submit_button" => "Send Message",
- "page_contact_us.success_message" => "Your message was send successfully.",
- "page_contact_us.title" => "Contact Us",
- "page_create_password.button_update" => "Update Password",
- "page_create_password.label_confirm_pass" => "Confirm password",
- "page_create_password.label_email" => "Email",
- "page_create_password.label_new_pass" => "New password",
- "page_create_password.subtitle" => "Create your new password here",
- "page_create_password.title" => "Only One Step to Log In",
- "page_forgotten_password.button_get_link" => "Get Link",
- "page_forgotten_password.pass_reseted_signin" => "Sign In",
- "page_forgotten_password.pass_reseted_subtitle" => "Your password was reset successfully.",
- "page_forgotten_password.pass_reseted_title" => "Awesome!",
- "page_forgotten_password.pass_sennded_subtitle" => "We have e-mailed your password reset link!",
- "page_forgotten_password.pass_sennded_title" => "Thank you!",
- "page_forgotten_password.password_remember_button" => "Log In.",
- "page_forgotten_password.password_remember_text" => "Remember your password?",
- "page_forgotten_password.subtitle" => "Get reset link with your email",
- "page_forgotten_password.title" => "Forgotten Password?",
- "page_index.get_started_button" => "Sign Up Now",
- "page_index.menu.contact_us" => "Contact Us",
- "page_index.menu.log_in" => "Log In",
- "page_index.menu.pricing" => "Pricing",
- "page_index.menu.sign_in" => "Sign Up",
- "page_index.sign_feature_1" => "No credit card required",
- "page_index.sign_feature_2" => "{defaultSpace} Free storage space",
- "page_index.sign_up_button" => "Sign Up Now",
- "page_login.button_next" => "Next Step",
- "page_login.placeholder_email" => "Type your E-mail",
- "page_login.registration_button" => "Register account.",
- "page_login.registration_text" => "Don’t have an account?",
- "page_login.subtitle" => "Please type your email to log in",
- "page_login.title" => "Welcome Back!",
- "page_pricing_tables.description" => "Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.",
- "page_pricing_tables.storage_capacity" => "Of Storage Capacity",
- "page_pricing_tables.title" => "Choose Your Plan",
- "page_pricing_tables.vat_excluded" => "Price displayed excludes VAT.",
- "page_registration.agreement" => "By clicking on 'Create Account' button I agree to the {0} and {1}.",
- "page_registration.button_create_account" => "Create Account",
- "page_registration.have_an_account" => "Do you have an account?",
- "page_registration.label_confirm_pass" => "Confirm password",
- "page_registration.label_email" => "Email",
- "page_registration.label_name" => "Full Name",
- "page_registration.label_pass" => "Create password",
- "page_registration.placeholder_confirm_pass" => "Confirm your new password",
- "page_registration.placeholder_email" => "Type your E-mail",
- "page_registration.placeholder_name" => "Type your full name",
- "page_registration.placeholder_pass" => "New password",
- "page_registration.subtitle" => "Please fill registration to create account",
- "page_registration.title" => "Create New Account",
- "page_shared.download_file" => "Download File",
- "page_shared.placeholder_pass" => "Type password",
- "page_shared.submit" => "Submit",
- "page_shared.subtitle" => "Please type the password to get shared content",
- "page_shared.title" => "Your Share Link is Protected",
- "page_shared_404.subtitle" => "The content you are finding was probably deleted.",
- "page_shared_404.title" => "Not Found :(",
- "page_sign_in.button_log_in" => "Log In",
- "page_sign_in.password_reset_button" => "Reset Password.",
- "page_sign_in.password_reset_text" => "Forgotten your password?",
- "page_sign_in.placeholder_password" => "Type your password",
- "page_sign_in.subtitle" => "Confirm you by your password",
- "page_sign_in.title" => "Are You {name}?",
- "popup_create_folder.folder_default_name" => "New Folder",
- "popup_create_folder.label" => "Type Name",
- "popup_create_folder.placeholder" => "Type your name",
- "popup_create_folder.title" => "Create Folder",
- "popup_delete_card.message" => "This event is irreversible and your payment card will be delete forever",
- "popup_delete_card.title" => "Are you sure?",
- "popup_deleted_plan.message" => "Your plan was successfully deleted.",
- "popup_deleted_plan.title" => "Plan was deleted",
- "popup_deleted_user.message" => "Your user was deleted with all user data content.",
- "popup_deleted_user.title" => "User was deleted",
- "popup_deleted_user_aborted.message" => "You can't delete this account while user have active subscription.",
- "popup_deleted_user_aborted.title" => "User wasn't deleted",
- "popup_error.message" => "Something went wrong and we can't continue. Please contact us.",
- "popup_error.title" => "Whooops, something went wrong!",
- "popup_exceed_limit.message" => "Please contact your administrator to change your limit.",
- "popup_exceed_limit.title" => "Whooops, you exceed storage limit :(",
- "popup_mimetypes_blacklist.message" => "File of this type ({mimetype}) is not allowed to upload.",
- "popup_mimetypes_blacklist.title" => "You are trying to upload unsupported file type",
- "popup_move_item.cancel" => "Cancel",
- "popup_move_item.submit" => "Move Item",
- "popup_move_item.title" => "Move Item",
- "popup_pass_changed.message" => "So now, you have awesome new password.",
- "popup_pass_changed.title" => "Your password was changed!",
- "popup_passport_error.message" => "Probably you didn't generated Passport Grant client or you didn't set up passport credentials in your .env file. Please follow install instructions.",
- "popup_passport_error.title" => "Invalid Passport Grand Client",
- "popup_paylod_error.message" => "Sorry, your file is too large and can't be uploaded",
- "popup_paylod_error.title" => "File is too large",
- "popup_rename.select_emoji_label" => "Pick Your Emoji Icon",
- "popup_rename.color_pick_label" => "Pick Your Color",
- "popup_rename.emoji_list_not_found" => "Not Found",
- "popup_rename.label" => "Edit Name",
- "popup_rename.placeholder" => "Type your title",
- "popup_rename.search_emoji_input_placeholder" => "Search your emoji...",
- "popup_rename.set_emoji_input_placeholder" => "Emojis List...",
- "popup_rename.tab_color_title" => "Folder Color",
- "popup_rename.tab_emoji_title" => "Emoji as an Icon",
- "popup_rename.title" => "Rename Your {item}",
- "popup_set_card.message" => "Your card will be set as default and will be always charged for the next billings.",
- "popup_set_card.title" => "Set as default card?",
- "popup_share_create.title" => "Share Your {item}",
- "popup_share_edit.change_pass" => "Change Password",
- "popup_share_edit.confirm" => "Confirm",
- "popup_share_edit.go_back" => "Go Back",
- "popup_share_edit.save" => "Save Changes",
- "popup_share_edit.send_to_recipients" => "Send to Recipients",
- "popup_share_edit.stop" => "Cancel Sharing",
- "popup_share_edit.title" => "Update sharing options",
- "popup_signup_error.message" => "Please check your database connection if everything works correctly.",
- "popup_signup_error.title" => "Server Error",
- "popup_subscription_cancel.button" => "I'm done",
- "popup_subscription_cancel.message" => "You'll continue to have access to the features you've paid for until the end of your billing cycle.",
- "popup_subscription_cancel.title" => "Subscription Was Canceled",
- "popup_subscription_resumed.button" => "That's awesome!",
- "popup_subscription_resumed.message" => "Your subscription was re-activated, and they will be billed on the original billing cycle.",
- "popup_subscription_resumed.title" => "Subscription Was Resumed",
- "popup_upload_limit.message" => "Size of your uploaded file exceed the upload limit ({uploadLimit}).",
- "popup_upload_limit.title" => "You exceed upload limit on single file",
- "popup_zipping.message" => "Please wait until your files start downloading.",
- "popup_zipping.title" => "Zipping Your Files...",
- "preview_sorting.grid_view" => "Grid View",
- "preview_sorting.list_view" => "List View",
- "preview_sorting.preview_sorting_button" => "View",
- "preview_sorting.sort_alphabet" => "Sort By Aplhabet",
- "preview_sorting.sort_date" => "Sort By Date",
- "profile.change_pass" => "Change Password",
- "profile.profile_info" => "Profile Information",
- "profile.store_pass" => "Store New Password",
- "pronouns.of" => "of",
- "roles.admin" => "Admin",
- "roles.user" => "User",
- "routes.create_new_password" => "create-new-password",
- "routes_title.appearance" => "Appearance",
- "routes_title.billings" => "Billings",
- "routes_title.dashboard" => "Dashboard",
- "routes_title.email" => "Email",
- "routes_title.languages" => "Languages",
- "routes_title.others" => "Others",
- "routes_title.page_edit" => "Edit Page",
- "routes_title.pages" => "Pages",
- "routes_title.payment_methods" => "Payment Methods",
- "routes_title.profile" => "My Profile",
- "routes_title.profile_settings" => "Profile Settings",
- "routes_title.settings" => "Settings",
- "routes_title.settings_mobile" => "Settings",
- "routes_title.settings_password" => "Change Password",
- "routes_title.settings_storage" => "Storage",
- "routes_title.user_create" => "Create User",
- "routes_title.users_delete" => "Delete User",
- "routes_title.users_detail" => "Detail",
- "routes_title.users_list" => "User Management",
- "routes_title.users_password" => "Password",
- "routes_title.users_storage_usage" => "Storage Usage",
- "routes_title.users_user" => "User",
- "shared.can_download" => "Can download file",
- "shared.editor" => "Can edit and upload files",
- "shared.empty_shared" => "You haven't shared anything yet.",
- "shared.visitor" => "Can only view and download",
- "shared_form.button_close_options" => "Close Options",
- "shared_form.button_done" => "Awesome, I’m done!",
- "shared_form.button_folder_icon_open" => "Customize Folder Icon",
- "shared_form.button_generate" => "Generate Link",
- "shared_form.button_more_options" => "Set Expiration",
- "shared_form.email_placeholder" => "Type your emails",
- "shared_form.email_successfully_send_message" => "Your item was successfully sended to recipients emails.",
- "shared_form.expiration_day" => "{value}d.",
- "shared_form.expiration_hour" => "{value}h.",
- "shared_form.label_expiration" => "Link Expiration",
- "shared_form.label_password_protection" => "Password Protected",
- "shared_form.label_permission" => "Permission",
- "shared_form.label_send_to_recipients" => "Send to Recipients",
- "shared_form.label_share_vie_email" => "Get your link",
- "shared_form.label_shared_url" => "Share url",
- "shared_form.placeholder_permission" => "Select your permission",
- "shared_form.recipients_label" => "Recipients",
- "shared_form.share_by_email" => "Share by Email",
- "shared_form.share_by_link" => "Share by Link",
- "sidebar.favourites" => "Favourites",
- "sidebar.favourites_empty" => "Drag here your favourite folder.",
- "sidebar.folders_empty" => "Create some new folder.",
- "sidebar.home" => "Files",
- "sidebar.latest" => "Recent Uploads",
- "sidebar.locations_title" => "Base",
- "sidebar.my_shared" => "My Shared Items",
- "sidebar.navigator_title" => "Navigator",
- "sidebar.participant_uploads" => "Participant Uploads",
- "sidebar.tools_title" => "Tools",
- "storage.audios" => "Audios",
- "storage.documents" => "Documents",
- "storage.images" => "Images",
- "storage.others" => "Others",
- "storage.sec_capacity" => "Your disk Usage",
- "storage.sec_details" => "Capacity Usage Details",
- "storage.total_capacity" => "Your storage capacity is {capacity}",
- "storage.total_used" => "Total used {used}",
- "storage.videos" => "Videos",
- "toaster.account_upgraded" => "Your account was successfully upgraded.",
- "toaster.changed_capacity" => "You successfully changed user's storage size!",
- "toaster.changed_user" => "You successfully changed user's role!",
- "toaster.created_user" => "User was created successfully!",
- "toaster.email_set" => "Your email settings was updated successfully",
- "toaster.sended_password" => "You successfully send user email for reset password!",
- "types.file" => "File",
- "types.folder" => "Folder",
- "upgrade_banner.button" => "Upgrade",
- "upgrade_banner.description" => "You nearly reach your storage capacity.",
- "upgrade_banner.title" => "You reach your storage capacity. Please upgrade.",
- "uploading.cancel" => "Cancel Uploading",
- "uploading.processing_file" => "Processing File...",
- "uploading.progress" => "Uploading File {progress}% - {current}/{total}",
- "uploading.progress_single_upload" => "Uploading File {progress}%",
- "user_add_card.default_description" => "Your card will be charged for billing plans as first.",
- "user_add_card.default_title" => "Set as Default Payment Method",
- "user_box_delete.description" => "You can delete your user, but, pay attention! This event is irreversible and all user data include user files will be deleted.",
- "user_box_delete.title" => "Delete User",
- "user_box_password.description" => "You can send password reset email via button bellow. User will be redirected to page where he can update password for his account.",
- "user_box_password.title" => "Change User Password",
- "user_box_role.description" => "You can change role for current user. Admin role can edit or create new users, change storage capacity and any other application settings.",
- "user_box_role.title" => "Change User Role",
- "user_box_storage.description" => "Change user storage capacity by input bellow. You have to type only number e.g. value '5' means, user will have 5GB of storage capacity.",
- "user_box_storage.title" => "Change User Storage Capacity",
- "user_password.title" => "Change Your Password",
- "user_settings.address" => "Address",
- "user_settings.address_plac" => "Type your billing address",
- "user_settings.city" => "City",
- "user_settings.city_plac" => "Type your billing city",
- "user_settings.country" => "Country",
- "user_settings.country_plac" => "Select your billing country",
- "user_settings.name" => "Name",
- "user_settings.name_plac" => "Type your billing name",
- "user_settings.phone_number" => "Phone Number",
- "user_settings.phone_number_plac" => "Type your billing phone number",
- "user_settings.postal_code" => "Postal Code",
- "user_settings.postal_code_plac" => "Type your billing postal code",
- "user_settings.state" => "State",
- "user_settings.state_plac" => "Type your billing state",
- "user_settings.timezone" => "Timezone",
- "user_settings.timezone_plac" => "Select your timezone",
- "user_settings.title_account" => "Account Information",
- "user_settings.title_billing" => "Billing Information",
- "user_subscription.billed" => "Billed",
- "user_subscription.cancel_plan" => "Cancel Plan",
- "user_subscription.canceled_at" => "Canceled At",
- "user_subscription.created_at" => "Created At",
- "user_subscription.empty" => "You don't have any subscription yet.",
- "user_subscription.ends_at" => "Ends At",
- "user_subscription.plan" => "Plan",
- "user_subscription.renews_at" => "Renews At",
- "user_subscription.resume_plan" => "Resume Plan",
- "user_subscription.status" => "Status",
- "user_subscription.title" => "Subscription Plan",
- "validation_errors.incorrect_password" => "Sorry, you passed incorrect password :(",
- "validation_errors.wrong_image" => "You may have uploaded the wrong file, try again!",
+ // Laravel
+ 'app_description' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
+ 'user_not_fount' => 'We can\'t find a user with that e-mail address.',
+ 'incorrect_password' => 'Sorry, your password is incorrect.',
+ 'time' => '%d. %B. %Y at %H:%M',
+ 'home' => 'Home',
- // Laravel
- 'app_description' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
- 'user_not_fount' => 'We can\'t find a user with that e-mail address.',
- 'incorrect_password' => 'Sorry, your password is incorrect.',
- 'time' => '%d. %B. %Y at %H:%M',
- 'home' => 'Home',
+ //Shared link email message
+ 'shared_link_email_subject' => '🙋 :user share some files with you. Look at it!',
+ 'shared_link_email_greeting' => 'Hello!',
+ 'shared_link_email_user' => ':user (:email) send you a link to shared files.',
+ 'shared_link_email_link' => 'Open your files',
+ 'shared_link_email_salutation' => 'Regards, :app_name',
- //Shared link email message
- 'shared_link_email_subject' => '🙋 :user share some files with you. Look at it!',
- 'shared_link_email_greeting' => 'Hello!',
- 'shared_link_email_user' => ':user (:email) send you a link to shared files.',
- 'shared_link_email_link' => 'Open your files',
- 'shared_link_email_salutation' => 'Regards, :app_name',
+ // Reset password email
+ 'reset_password_greeting' => 'Hello!',
+ 'reset_password_subject' => 'Reset password for your account on ',
+ 'reset_password_line_1' => 'You are receiving this email because we received a password reset request for your account.',
+ 'reset_password_line_2' => 'If you did not request a password reset, no further action is required.',
+ 'reset_password_action' => 'Reset Password',
- // Reset password email
- 'reset_password_greeting' => 'Hello!',
- 'reset_password_subject' => 'Reset password for your account on ',
- 'reset_password_line_1' => 'You are receiving this email because we received a password reset request for your account.',
- 'reset_password_line_2' => 'If you did not request a password reset, no further action is required.',
- 'reset_password_action' => 'Reset Password',
+ 'salutation' => 'Regards',
- 'salutation' => 'Regards',
+ // Invoice
+ 'print_button' => 'Print Document',
- // Invoice
- 'print_button' => 'Print Document',
+ 'vat' => 'VAT',
+ 'vat_included' => 'incl.',
+ 'subtotal' => 'Subtotal',
- 'vat' => 'VAT',
- 'vat_included' => 'incl.',
- 'subtotal' => 'Subtotal',
+ 'tax_exempted' => 'Tax is exempted',
+ 'tax_be_paid_reverse' => 'Tax to be paid on reverse charge basis',
- 'tax_exempted' => 'Tax is exempted',
- 'tax_be_paid_reverse' => 'Tax to be paid on reverse charge basis',
+ 'invoice_title' => 'Invoice',
+ 'date' => 'Date',
+ 'product' => 'Product',
+ 'subscription' => 'Subscription',
+ 'invoice_number' => 'Invoice Number',
- 'invoice_title' => 'Invoice',
- 'date' => 'Date',
- 'product' => 'Product',
- 'subscription' => 'Subscription',
- 'invoice_number' => 'Invoice Number',
+ 'seller' => 'Seller',
+ 'client' => 'Client',
- 'seller' => 'Seller',
- 'client' => 'Client',
+ 'seller_vat' => 'VAT number',
+ 'seller_name' => 'Name',
+ 'seller_phone' => 'Phone',
- 'seller_vat' => 'VAT number',
- 'seller_name' => 'Name',
- 'seller_phone' => 'Phone',
+ 'name' => 'Name',
+ 'phone' => 'Phone',
+ 'address' => 'Address',
+ 'city' => 'City',
+ 'state' => 'State',
+ 'postal_code' => 'Postal code',
+ 'country' => 'Country',
- 'name' => 'Name',
- 'phone' => 'Phone',
- 'address' => 'Address',
- 'city' => 'City',
- 'state' => 'State',
- 'postal_code' => 'Postal code',
- 'country' => 'Country',
+ 'col_description' => 'Description',
+ 'col_date' => 'Date',
+ 'col_amount' => 'Amount',
- 'col_description' => 'Description',
- 'col_date' => 'Date',
- 'col_amount' => 'Amount',
+ 'total' => 'Total',
- 'total' => 'Total',
-
- // OG Page
- 'user_sending' => ':name is sending you this file',
- 'protected_file' => 'This link is protected by password',
- ]
+ // OG Page
+ 'user_sending' => ':name is sending you this file',
+ 'protected_file' => 'This link is protected by password',
+ ]
];
\ No newline at end of file
diff --git a/database/migrations/2021_01_09_130434_create_languages_table.php b/database/migrations/2021_01_09_130434_create_languages_table.php
index e19a0c7d..9323af05 100644
--- a/database/migrations/2021_01_09_130434_create_languages_table.php
+++ b/database/migrations/2021_01_09_130434_create_languages_table.php
@@ -14,9 +14,10 @@ class CreateLanguagesTable extends Migration
public function up()
{
Schema::create('languages', function (Blueprint $table) {
- $table->uuid('id')->primary();
+ $table->uuid('id')->primary()->index();
$table->string('name');
$table->string('locale')->unique();
+ $table->timestamps();
});
}
diff --git a/resources/lang/cn/vuefilemanager.php b/resources/lang/cn/vuefilemanager.php
deleted file mode 100644
index 83715e14..00000000
--- a/resources/lang/cn/vuefilemanager.php
+++ /dev/null
@@ -1,66 +0,0 @@
- '利用 VueFileManager 创建您自己的私有云,由 Laravel and Vue 驱动',
- 'user_not_fount' => '我们没有找到此邮箱对应的用户信息。',
- 'incorrect_password' => '不好意思,您的密码好像不正确。',
- 'time' => '%d. %B. %Y 于 %H:%M',
- 'home' => '首页',
-
- //Shared link email message
- 'shared_link_email_subject' => '🙋 :user share some files with you. Look at it!',
- 'shared_link_email_greeting' => 'Hello!',
- 'shared_link_email_user' => ':user (:email) send you a link to shared files.',
- 'shared_link_email_link' => 'Open your files',
- 'shared_link_email_salutation' => 'Regards, :app_name',
-
- // Reset password email
- 'reset_password_greeting' => 'Hello!',
- 'reset_password_subject' => 'Reset password for your account on ',
- 'reset_password_line_1' => 'You are receiving this email because we received a password reset request for your account.',
- 'reset_password_line_2' => 'If you did not request a password reset, no further action is required.',
- 'reset_password_action' => 'Reset Password',
-
- 'salutation' => 'Regards',
-
- // Invoice
- 'print_button' => 'Print Document',
-
- 'vat' => 'VAT',
- 'vat_included' => 'incl.',
- 'subtotal' => 'Subtotal',
-
- 'tax_exempted' => 'Tax is exempted',
- 'tax_be_paid_reverse' => 'Tax to be paid on reverse charge basis',
-
- 'invoice_title' => 'Invoice',
- 'date' => 'Date',
- 'product' => 'Product',
- 'subscription' => 'Subscription',
- 'invoice_number' => 'Invoice Number',
-
- 'seller' => 'Seller',
- 'client' => 'Client',
-
- 'seller_vat' => 'VAT number',
- 'seller_name' => 'Name',
- 'seller_phone' => 'Phone',
-
- 'name' => 'Name',
- 'phone' => 'Phone',
- 'address' => 'Address',
- 'city' => 'City',
- 'state' => 'State',
- 'postal_code' => 'Postal code',
- 'country' => 'Country',
-
- 'col_description' => 'Description',
- 'col_date' => 'Date',
- 'col_amount' => 'Amount',
-
- 'total' => 'Total',
-
- // OG Page
- 'user_sending' => ':name is sending you this file',
- 'protected_file' => 'This link is protected by password',
-];
\ No newline at end of file
diff --git a/resources/lang/en/vuefilemanager.php b/resources/lang/en/vuefilemanager.php
deleted file mode 100644
index d2894cb7..00000000
--- a/resources/lang/en/vuefilemanager.php
+++ /dev/null
@@ -1,66 +0,0 @@
- __t('app_description'),
- // 'user_not_fount' => __t('user_not_fount'),
- // 'incorrect_password' => __t('incorrect_password'),
- // 'time' => __t('time'),
- // 'home' => __t('home'),
-
- // //Shared link email message
- // 'shared_link_email_subject' => __t('shared_link_email_subject'),
- // 'shared_link_email_greeting' => __t('shared_link_email_greeting'),
- // 'shared_link_email_user' => __t('shared_link_email_user'),
- // 'shared_link_email_link' => __t('shared_link_email_link'),
- // 'shared_link_email_salutation' => __t('shared_link_email_salutation'),
-
- // // Reset password email
- // 'reset_password_greeting' => __t('reset_password_greeting'),
- // 'reset_password_subject' => __t('reset_password_subject'),
- // 'reset_password_line_1' => __t('reset_password_line_1'),
- // 'reset_password_line_2' => __t('reset_password_line_2'),
- // 'reset_password_action' => __t('reset_password_action'),
-
- // 'salutation' => __t('salutation'),
-
- // Invoice
- // 'print_button' => __t('print_button'),
-
- // 'vat' => __t('vat'),
- // 'vat_included' => __t('vat_included'),
- // 'subtotal' => __t('subtotal'),
-
- // 'tax_exempted' => __t('tax_exempted'),
- // 'tax_be_paid_reverse' => __t('tax_be_paid_reverse'),
-
- // 'invoice_title' => __t('invoice_title'),
- // 'date' => __t('date'),
- // 'product' => __t('product'),
- // 'subscription' => __t('subscription'),
- // 'invoice_number' => __t('invoice_number'),
-
- // 'seller' => __t('seller'),
- // 'client' => __t('client'),
-
- // 'seller_vat' => __t('seller_vat'),
- // 'seller_name' => __t('seller_name'),
- // 'seller_phone' => __t('seller_phone'),
-
- // 'name' => __t('name'),
- // 'phone' => __t('phone'),
- // 'address' => __t('address'),
- // 'city' => __t('city'),
- // 'state' => __t('state'),
- // 'postal_code' => __t('postal_code'),
- // 'country' => __t('country'),
-
- // 'col_description' => __t('col_description'),
- // 'col_date' => __t('col_date'),
- // 'col_amount' => __t('col_amount'),
-
- // 'total' => __t('total'),
-
- // OG Page
- // 'user_sending' => __t('user_sending'),
- // 'protected_file' => __t('protected_file'),
-// ];
\ No newline at end of file
diff --git a/resources/lang/sk/vuefilemanager.php b/resources/lang/sk/vuefilemanager.php
deleted file mode 100644
index ba130ab0..00000000
--- a/resources/lang/sk/vuefilemanager.php
+++ /dev/null
@@ -1,66 +0,0 @@
- 'Vytvor si svoj vlastný privátny cloud s VueFileManager klientom poháňaným Laravelom a Vue',
- 'user_not_fount' => 'Uživateľ s touto emailovou adresou sa nenašiel.',
- 'incorrect_password' => 'Prepáč, zadané heslo je nesprávne',
- 'time' => '%d. %B. %Y o %H:%M',
- 'home' => 'Domov',
-
- //Shared link email message
- 'shared_link_email_subject' => '🙋 :user vám posiela zdieľané súbory.',
- 'shared_link_email_greeting' => 'Ahoj!',
- 'shared_link_email_user' => ':user (:email) vám posiela odkaz pre zdieľané súbory.',
- 'shared_link_email_link' => 'Vaše súbory',
- 'shared_link_email_salutation' => 'S pozdravom, :app_name',
-
- // Reset password email
- 'reset_password_greeting' => 'Ahoj!',
- 'reset_password_subject' => 'Resetujte svoje heslo v aplikácií ',
- 'reset_password_line_1' => 'Tento email ste dostali pretože ste nás požiadali o zmenu hesla pre Váš účet.',
- 'reset_password_line_2' => 'Pokiaľ ste si nechceli zmeniť heslo, žiadna akcia nie je vyžadovaná.',
- 'reset_password_action' => 'Resetovať heslo',
-
- 'salutation' => 'S pozdravom ',
-
- // Invoice
- 'print_button' => 'Vytlačiť dokument',
-
- 'vat' => 'Daň',
- 'vat_included' => 'zah.',
- 'subtotal' => 'Medzisúčet',
-
- 'tax_exempted' => 'Daň je oslobodená',
- 'tax_be_paid_reverse' => 'Daň, ktorá sa má zaplatiť na základe prenesenia daňovej povinnosti',
-
- 'invoice_title' => 'Faktúra',
- 'date' => 'Dátum',
- 'product' => 'Produkt',
- 'subscription' => 'Predplatné',
- 'invoice_number' => 'Číslo faktúry',
-
- 'seller' => 'Predajca',
- 'client' => 'Klient',
-
- 'seller_vat' => 'IČ DPH',
- 'seller_name' => 'Meno',
- 'seller_phone' => 'Telefónne číslo',
-
- 'name' => 'Meno',
- 'phone' => 'Telefónne číslo',
- 'address' => 'Adresa',
- 'city' => 'Mesto',
- 'state' => 'Štát',
- 'postal_code' => 'PSČ',
- 'country' => 'Krajina',
-
- 'col_description' => 'Popis',
- 'col_date' => 'Dátum',
- 'col_amount' => 'Čiastka',
-
- 'total' => 'Spolu',
-
- // OG Page
- 'user_sending' => ':name ti posiela súbor.',
- 'protected_file' => 'Tento link je chránený heslom',
-];
\ No newline at end of file
diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php
index 92f5fcb4..58057121 100644
--- a/resources/views/index.blade.php
+++ b/resources/views/index.blade.php
@@ -41,7 +41,7 @@
host: '{{ url('/') }}',
api: '{{ url('/api') }}',
locale: '{{ \Illuminate\Support\Facades\App::getLocale() }}',
- language: '{{ isset($settings->language) ? $settings->language : en }}',
+ language: {{ $settings->language ?? 'en' }},
app_color: '{{ $settings->app_color ?? '#00BC7E' }}',
app_logo: '{{ $settings->app_logo ?? null }}',
diff --git a/routes/admin.php b/routes/admin.php
index 66d9cbfc..94787666 100644
--- a/routes/admin.php
+++ b/routes/admin.php
@@ -2,6 +2,7 @@
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\InvoiceController;
+use App\Http\Controllers\Admin\LanguageController;
use App\Http\Controllers\Admin\PagesController;
use App\Http\Controllers\Admin\PlanController;
use App\Http\Controllers\Admin\UserController;
@@ -59,10 +60,10 @@ Route::group(['prefix' => 'settings'], function () {
// Language
Route::group(['prefix' => 'languages'], function () {
- Route::get('/{language}/strings', 'Admin\LanguageController@get_language_strings');
- Route::patch('/{language}/string', 'Admin\LanguageController@update_string');
- Route::delete('/{language}', 'Admin\LanguageController@delete_language');
- Route::patch('/{language}', 'Admin\LanguageController@update_language');
- Route::post('/', 'Admin\LanguageController@create_language');
- Route::get('/', 'Admin\LanguageController@get_languages');
+ Route::get('/{language}/strings', [LanguageController::class, 'get_language_strings']);
+ Route::patch('/{language}/strings', [LanguageController::class, 'update_string']);
+ Route::delete('/{language}', [LanguageController::class, 'delete_language']);
+ Route::patch('/{language}', [LanguageController::class, 'update_language']);
+ Route::post('/', [LanguageController::class, 'create_language']);
+ Route::get('/', [LanguageController::class, 'get_languages']);
});
\ No newline at end of file
diff --git a/tests/Feature/Accounts/AdminTest.php b/tests/Feature/Admin/AdminTest.php
similarity index 99%
rename from tests/Feature/Accounts/AdminTest.php
rename to tests/Feature/Admin/AdminTest.php
index c9d8615c..87fff466 100644
--- a/tests/Feature/Accounts/AdminTest.php
+++ b/tests/Feature/Admin/AdminTest.php
@@ -1,6 +1,6 @@
setup = app()->make(SetupService::class);
+ }
+
+ /**
+ * @test
+ */
+ public function it_create_language()
+ {
+ Setting::create([
+ 'name' => 'license',
+ 'value' => 'Extended',
+ ]);
+
+ $admin = User::factory(User::class)
+ ->create(['role' => 'admin']);
+
+ Sanctum::actingAs($admin);
+
+ $this->postJson('/api/admin/languages', [
+ 'name' => 'Slovenčina',
+ 'locale' => 'sk',
+ ])
+ ->assertStatus(201)
+ ->assertJsonFragment([
+ 'name' => 'Slovenčina',
+ 'locale' => 'sk',
+ ]);
+
+ $this->assertDatabaseHas('languages', [
+ 'name' => 'Slovenčina',
+ 'locale' => 'sk',
+ ]);
+
+ $this->assertDatabaseHas('language_strings', [
+ 'key' => 'actions.close',
+ 'value' => 'Close',
+ 'lang' => 'sk',
+ ]);
+ }
+
+ /**
+ * @test
+ */
+ public function it_update_language()
+ {
+ $this->setup->seed_default_language();
+
+ $admin = User::factory(User::class)
+ ->create(['role' => 'admin']);
+
+ Sanctum::actingAs($admin);
+
+ $language = Language::first();
+
+ $this->patchJson("/api/admin/languages/$language->id", [
+ 'name' => 'name',
+ 'value' => 'Slovenčina',
+ ])
+ ->assertStatus(201)
+ ->assertJsonFragment([
+ 'name' => 'Slovenčina',
+ ]);
+
+ $this->assertDatabaseHas('languages', [
+ 'name' => 'Slovenčina',
+ 'locale' => 'en',
+ ]);
+ }
+
+ /**
+ * @test
+ */
+ public function it_delete_language()
+ {
+ $language = Language::create([
+ 'name' => 'Slovenčina',
+ 'locale' => 'sk'
+ ]);
+
+ $admin = User::factory(User::class)
+ ->create(['role' => 'admin']);
+
+ Sanctum::actingAs($admin);
+
+ $this->deleteJson("/api/admin/languages/$language->id")
+ ->assertStatus(204);
+
+ $this->assertDatabaseMissing('languages', [
+ 'name' => 'Slovenčina',
+ 'locale' => 'sk',
+ ]);
+
+ $this->assertDatabaseMissing('language_strings', [
+ 'key' => 'actions.close',
+ 'value' => 'Close',
+ 'lang' => 'sk',
+ ]);
+ }
+
+ /**
+ * @test
+ */
+ public function it_try_to_delete_default_language()
+ {
+ $this->setup->seed_default_language();
+
+ $admin = User::factory(User::class)
+ ->create(['role' => 'admin']);
+
+ Sanctum::actingAs($admin);
+
+ $language = Language::first();
+
+ $this->deleteJson("/api/admin/languages/$language->id")
+ ->assertStatus(401);
+ }
+
+ /**
+ * @test
+ */
+ public function it_get_all_languages()
+ {
+ $this->setup->seed_default_language();
+
+ $admin = User::factory(User::class)
+ ->create(['role' => 'admin']);
+
+ Sanctum::actingAs($admin);
+
+ $this->getJson('/api/admin/languages')
+ ->assertStatus(200)
+ ->assertJsonFragment([
+ "name" => "English",
+ "current_language" => "en",
+ ]);
+ }
+
+ /**
+ * @test
+ */
+ public function it_update_language_string()
+ {
+ $this->setup->seed_default_language();
+
+ $admin = User::factory(User::class)
+ ->create(['role' => 'admin']);
+
+ Sanctum::actingAs($admin);
+
+ $language = Language::first();
+
+ $this->patchJson("/api/admin/languages/$language->id/strings", [
+ 'name' => 'actions.close',
+ 'value' => 'Close It, now!',
+ ]);
+
+ $this->assertDatabaseHas('language_strings', [
+ 'key' => 'actions.close',
+ 'value' => 'Close It, now!',
+ 'lang' => 'en',
+ ]);
+ }
+
+ /**
+ * @test
+ */
+ public function it_get_language_strings_by_selected_language_id()
+ {
+ $this->setup->seed_default_language();
+
+ $admin = User::factory(User::class)
+ ->create(['role' => 'admin']);
+
+ Sanctum::actingAs($admin);
+
+ $language = Language::first();
+
+ $this->getJson("/api/admin/languages/$language->id/strings")
+ ->assertStatus(200)
+ ->assertJsonFragment([
+ "key" => "actions.close",
+ "value" => "Close",
+ "lang" => "en",
+ ]);
+ }
+
+ /**
+ * @test
+ */
+ public function it_get_translated_string_from_t_helper_function()
+ {
+ $this->setup->seed_default_language();
+
+ Language::first()
+ ->languageStrings()
+ ->forceCreate([
+ "key" => "test",
+ "value" => "Hi, my name is :name :surname",
+ "lang" => "en",
+ ]);
+
+ $this->assertEquals(
+ __t('actions.close'),
+ 'Close'
+ );
+
+ $this->assertEquals(
+ __t('shared_link_email_subject', ['user' => 'John']),
+ '🙋 John share some files with you. Look at it!'
+ );
+
+ $this->assertEquals(
+ __t('test', ['name' => 'John', 'surname' => 'Doe']),
+ 'Hi, my name is John Doe'
+ );
+ }
+}
diff --git a/tests/Feature/Setup/SetupServiceTest.php b/tests/Feature/Setup/SetupServiceTest.php
index c17a7b7d..e5b0ad66 100644
--- a/tests/Feature/Setup/SetupServiceTest.php
+++ b/tests/Feature/Setup/SetupServiceTest.php
@@ -2,14 +2,17 @@
namespace Tests\Feature\Setup;
+use App\Models\Language;
+use App\Models\LanguageString;
+use App\Models\Setting;
use App\Services\SetupService;
-use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
+use Illuminate\Foundation\Testing\DatabaseMigrations;
use Storage;
use Tests\TestCase;
class SetupServiceTest extends TestCase
{
+ use DatabaseMigrations;
public function __construct()
{
@@ -31,4 +34,31 @@ class SetupServiceTest extends TestCase
Storage::disk('local')->assertExists($directory);
});
}
+
+ /**
+ * @test
+ */
+ public function it_seed_default_language()
+ {
+ Setting::create([
+ 'name' => 'license',
+ 'value' => 'Extended',
+ ]);
+
+ Language::create([
+ 'name' => 'English',
+ 'locale' => 'en'
+ ]);
+
+ $this->assertDatabaseHas('languages', [
+ 'name' => 'English',
+ 'locale' => 'en',
+ ]);
+
+ $this->assertDatabaseHas('language_strings', [
+ 'key' => 'actions.close',
+ 'value' => 'Close',
+ 'lang' => 'en',
+ ]);
+ }
}
diff --git a/tests/Feature/Setup/SetupWizardTest.php b/tests/Feature/Setup/SetupWizardTest.php
index de53dced..9210f7d3 100644
--- a/tests/Feature/Setup/SetupWizardTest.php
+++ b/tests/Feature/Setup/SetupWizardTest.php
@@ -265,6 +265,17 @@ class SetupWizardTest extends TestCase
'value' => '8624194e-3156-4cd0-944e-3440fcecdacb',
]);
+ $this->assertDatabaseHas('languages', [
+ 'name' => 'English',
+ 'locale' => 'en',
+ ]);
+
+ $this->assertDatabaseHas('language_strings', [
+ 'key' => 'actions.close',
+ 'value' => 'Close',
+ 'lang' => 'en',
+ ]);
+
$avatar = User::first()
->settings
->getRawOriginal('avatar');