Merge branch 'develop' into chore/sc-23725/livewire3

# Conflicts:
#	composer.lock
This commit is contained in:
Marcus Moore 2024-06-25 10:15:50 -07:00
commit d4861a74df
No known key found for this signature in database
527 changed files with 6068 additions and 3066 deletions

View file

@ -3115,7 +3115,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/23613427?v=4", "avatar_url": "https://avatars.githubusercontent.com/u/23613427?v=4",
"profile": "https://github.com/bryanlopezinc", "profile": "https://github.com/bryanlopezinc",
"contributions": [ "contributions": [
"code" "code",
"test"
] ]
}, },
{ {
@ -3126,6 +3127,15 @@
"contributions": [ "contributions": [
"code" "code"
] ]
},
{
"login": "Tyree",
"name": "Matt Tyree",
"avatar_url": "https://avatars.githubusercontent.com/u/5395363?v=4",
"profile": "https://github.com/Tyree",
"contributions": [
"doc"
]
} }
] ]
} }

View file

@ -73,7 +73,7 @@ jobs:
# https://github.com/docker/build-push-action # https://github.com/docker/build-push-action
- name: Build and push 'snipe-it' image - name: Build and push 'snipe-it' image
id: docker_build id: docker_build
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
context: . context: .
file: ./Dockerfile.alpine file: ./Dockerfile.alpine

View file

@ -73,7 +73,7 @@ jobs:
# https://github.com/docker/build-push-action # https://github.com/docker/build-push-action
- name: Build and push 'snipe-it' image - name: Build and push 'snipe-it' image
id: docker_build id: docker_build
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
context: . context: .
file: ./Dockerfile file: ./Dockerfile

View file

@ -27,6 +27,7 @@ jobs:
php-version: php-version:
- "8.1" - "8.1"
- "8.2" - "8.2"
- "8.3"
name: PHP ${{ matrix.php-version }} name: PHP ${{ matrix.php-version }}

View file

@ -4,7 +4,7 @@
"DOC3": "Please don't rely on these versions for planning upgrades unless you've fetched the most recent version", "DOC3": "Please don't rely on these versions for planning upgrades unless you've fetched the most recent version",
"DOC4": "You should really just ignore it and run upgrade.php. Really", "DOC4": "You should really just ignore it and run upgrade.php. Really",
"php_min_version": "8.1.0", "php_min_version": "8.1.0",
"php_max_major_minor": "8.2", "php_max_major_minor": "8.3",
"php_max_wontwork": "8.4.0", "php_max_wontwork": "8.4.0",
"current_snipeit_version": "7.0" "current_snipeit_version": "7.0"
} }

View file

@ -444,10 +444,11 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
<td align="center" valign="top" width="14.28%"><a href="https://www.corelight.com/"><img src="https://avatars.githubusercontent.com/u/1496725?v=4?s=110" width="110px;" alt="i_virus"/><br /><sub><b>i_virus</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=chandanchowdhury" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://www.corelight.com/"><img src="https://avatars.githubusercontent.com/u/1496725?v=4?s=110" width="110px;" alt="i_virus"/><br /><sub><b>i_virus</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=chandanchowdhury" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/gitgrimbo"><img src="https://avatars.githubusercontent.com/u/1020541?v=4?s=110" width="110px;" alt="Paul Grime"/><br /><sub><b>Paul Grime</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=gitgrimbo" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/gitgrimbo"><img src="https://avatars.githubusercontent.com/u/1020541?v=4?s=110" width="110px;" alt="Paul Grime"/><br /><sub><b>Paul Grime</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=gitgrimbo" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://leeporte.co.uk"><img src="https://avatars.githubusercontent.com/u/922815?v=4?s=110" width="110px;" alt="Lee Porte"/><br /><sub><b>Lee Porte</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=LeePorte" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://leeporte.co.uk"><img src="https://avatars.githubusercontent.com/u/922815?v=4?s=110" width="110px;" alt="Lee Porte"/><br /><sub><b>Lee Porte</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=LeePorte" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bryanlopezinc"><img src="https://avatars.githubusercontent.com/u/23613427?v=4?s=110" width="110px;" alt="BRYAN "/><br /><sub><b>BRYAN </b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=bryanlopezinc" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/bryanlopezinc"><img src="https://avatars.githubusercontent.com/u/23613427?v=4?s=110" width="110px;" alt="BRYAN "/><br /><sub><b>BRYAN </b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=bryanlopezinc" title="Code">💻</a> <a href="https://github.com/snipe/snipe-it/commits?author=bryanlopezinc" title="Tests">⚠️</a></td>
</tr> </tr>
<tr> <tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/U-H-T"><img src="https://avatars.githubusercontent.com/u/64061710?v=4?s=110" width="110px;" alt="U-H-T"/><br /><sub><b>U-H-T</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=U-H-T" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/U-H-T"><img src="https://avatars.githubusercontent.com/u/64061710?v=4?s=110" width="110px;" alt="U-H-T"/><br /><sub><b>U-H-T</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=U-H-T" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tyree"><img src="https://avatars.githubusercontent.com/u/5395363?v=4?s=110" width="110px;" alt="Matt Tyree"/><br /><sub><b>Matt Tyree</b></sub></a><br /><a href="https://github.com/snipe/snipe-it/commits?author=Tyree" title="Documentation">📖</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -244,7 +244,7 @@ class LocationsController extends Controller
if (! $location->isDeletable()) { if (! $location->isDeletable()) {
return response() return response()
->json(Helper::formatStandardApiResponse('error', null, trans('admin/companies/message.assoc_users'))); ->json(Helper::formatStandardApiResponse('error', null, trans('admin/locations/message.assoc_users')));
} }
$this->authorize('delete', $location); $this->authorize('delete', $location);
$location->delete(); $location->delete();

View file

@ -78,13 +78,14 @@ class ReportsController extends Controller
]; ];
$total = $actionlogs->count();
// Make sure the offset and limit are actually integers and do not exceed system limits // Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $actionlogs->count()) ? $actionlogs->count() : app('api_offset_value'); $offset = ($request->input('offset') > $total) ? $total : app('api_offset_value');
$limit = app('api_limit_value'); $limit = app('api_limit_value');
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
$order = ($request->input('order') == 'asc') ? 'asc' : 'desc'; $order = ($request->input('order') == 'asc') ? 'asc' : 'desc';
$total = $actionlogs->count();
$actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get(); $actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get();

View file

@ -13,6 +13,8 @@ use App\Http\Transformers\SelectlistTransformer;
use App\Http\Transformers\UsersTransformer; use App\Http\Transformers\UsersTransformer;
use App\Models\Actionlog; use App\Models\Actionlog;
use App\Models\Asset; use App\Models\Asset;
use App\Models\Accessory;
use App\Models\Consumable;
use App\Models\License; use App\Models\License;
use App\Models\User; use App\Models\User;
use App\Notifications\CurrentInventory; use App\Notifications\CurrentInventory;
@ -31,7 +33,7 @@ class UsersController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0] * @since [v4.0]
* *
* @return \Illuminate\Http\Response * @return array
*/ */
public function index(Request $request) public function index(Request $request)
{ {
@ -75,7 +77,7 @@ class UsersController extends Controller
'users.autoassign_licenses', 'users.autoassign_licenses',
'users.website', 'users.website',
])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy') ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy', 'managesUsers', 'managedLocations')
->withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count', 'managesUsers as manages_users_count', 'managedLocations as manages_locations_count'); ->withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count', 'managesUsers as manages_users_count', 'managedLocations as manages_locations_count');
@ -203,9 +205,6 @@ class UsersController extends Controller
$users->where('autoassign_licenses', '=', $request->input('autoassign_licenses')); $users->where('autoassign_licenses', '=', $request->input('autoassign_licenses'));
} }
if ($request->filled('location_id') != '') {
$users = $users->UserLocation($request->input('location_id'), $request->input('search'));
}
if (($request->filled('deleted')) && ($request->input('deleted') == 'true')) { if (($request->filled('deleted')) && ($request->input('deleted') == 'true')) {
$users = $users->onlyTrashed(); $users = $users->onlyTrashed();
@ -362,7 +361,7 @@ class UsersController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0] * @since [v4.0]
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response * @return array | \Illuminate\Http\JsonResponse
*/ */
public function store(SaveUserRequest $request) public function store(SaveUserRequest $request)
{ {
@ -409,7 +408,7 @@ class UsersController extends Controller
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return array | \Illuminate\Http\JsonResponse
*/ */
public function show($id) public function show($id)
{ {
@ -432,7 +431,7 @@ class UsersController extends Controller
* @since [v4.0] * @since [v4.0]
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\JsonResponse
*/ */
public function update(SaveUserRequest $request, $id) public function update(SaveUserRequest $request, $id)
{ {
@ -517,17 +516,15 @@ class UsersController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0] * @since [v4.0]
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\JsonResponse
*/ */
public function destroy(DeleteUserRequest $request, $id) public function destroy(DeleteUserRequest $request, $id)
{ {
$this->authorize('delete', User::class); $this->authorize('delete', User::class);
$user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed()->find($id);
$this->authorize('delete', $user); if ($user = User::withTrashed()->find($id)) {
$this->authorize('delete', $user);
if ($user) {
if ($user->delete()) { if ($user->delete()) {
@ -542,11 +539,12 @@ class UsersController extends Controller
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.delete'))); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.delete')));
} }
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.error.delete'))); return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.error.delete')));
} }
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found', compact('id')))); return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found')));
} }
@ -556,7 +554,7 @@ class UsersController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v3.0] * @since [v3.0]
* @param $userId * @param $userId
* @return string JSON * @return array | \Illuminate\Http\JsonResponse
*/ */
public function assets(Request $request, $id) public function assets(Request $request, $id)
{ {
@ -629,14 +627,14 @@ class UsersController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v3.0] * @since [v3.0]
* @param $userId * @param $userId
* @return string JSON * @return array | \Illuminate\Http\JsonResponse
*/ */
public function consumables(Request $request, $id) public function consumables(Request $request, $id)
{ {
$this->authorize('view', User::class); $this->authorize('view', User::class);
$this->authorize('view', Consumable::class); $this->authorize('view', Consumable::class);
$user = User::findOrFail($id); $user = User::findOrFail($id);
$this->authorize('update', $user); $this->authorize('view', $user);
$consumables = $user->consumables; $consumables = $user->consumables;
return (new ConsumablesTransformer)->transformConsumables($consumables, $consumables->count(), $request); return (new ConsumablesTransformer)->transformConsumables($consumables, $consumables->count(), $request);
} }
@ -647,7 +645,7 @@ class UsersController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.6.14] * @since [v4.6.14]
* @param $userId * @param $userId
* @return string JSON * @return array
*/ */
public function accessories($id) public function accessories($id)
{ {
@ -666,7 +664,7 @@ class UsersController extends Controller
* @author [N. Mathar] [<snipe@snipe.net>] * @author [N. Mathar] [<snipe@snipe.net>]
* @since [v5.0] * @since [v5.0]
* @param $userId * @param $userId
* @return string JSON * @return array | \Illuminate\Http\JsonResponse
*/ */
public function licenses($id) public function licenses($id)
{ {
@ -729,7 +727,7 @@ class UsersController extends Controller
* @author [Juan Font] [<juanfontalonso@gmail.com>] * @author [Juan Font] [<juanfontalonso@gmail.com>]
* @since [v4.4.2] * @since [v4.4.2]
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response * @return array
*/ */
public function getCurrentUserInfo(Request $request) public function getCurrentUserInfo(Request $request)
{ {
@ -742,12 +740,14 @@ class UsersController extends Controller
* @author [E. Taylor] [<dev@evantaylor.name>] * @author [E. Taylor] [<dev@evantaylor.name>]
* @param int $userId * @param int $userId
* @since [v6.0.0] * @since [v6.0.0]
* @return JsonResponse * @return \Illuminate\Http\JsonResponse
*/ */
public function restore($userId = null) public function restore($userId)
{ {
$this->authorize('delete', User::class);
if ($user = User::withTrashed()->find($userId)) { if ($user = User::withTrashed()->find($userId)) {
$this->authorize('delete', $user); $this->authorize('delete', $user);
if ($user->deleted_at == '') { if ($user->deleted_at == '') {
@ -766,8 +766,6 @@ class UsersController extends Controller
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.restored')), 200); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.restored')), 200);
} }
// Check validation to make sure we're not restoring a user with the same username as an existing user
return response()->json(Helper::formatStandardApiResponse('error', null, $user->getErrors()));
} }
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found')), 200); return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found')), 200);

View file

@ -427,10 +427,6 @@ class LoginController extends Controller
return redirect()->route('two-factor')->with('error', trans('auth/message.two_factor.code_required')); return redirect()->route('two-factor')->with('error', trans('auth/message.two_factor.code_required'));
} }
if (! $request->has('two_factor_secret')) { // TODO this seems almost the same as above?
return redirect()->route('two-factor')->with('error', 'Two-factor code is required.');
}
$user = Auth::user(); $user = Auth::user();
$secret = $request->input('two_factor_secret'); $secret = $request->input('two_factor_secret');
@ -439,7 +435,7 @@ class LoginController extends Controller
$user->saveQuietly(); $user->saveQuietly();
$request->session()->put('2fa_authed', $user->id); $request->session()->put('2fa_authed', $user->id);
return redirect()->route('home')->with('success', 'You are logged in!'); return redirect()->route('home')->with('success', trans('auth/message.signin.success'));
} }
return redirect()->route('two-factor')->with('error', trans('auth/message.two_factor.invalid_code')); return redirect()->route('two-factor')->with('error', trans('auth/message.two_factor.invalid_code'));
@ -537,7 +533,7 @@ class LoginController extends Controller
$minutes = round($seconds / 60); $minutes = round($seconds / 60);
$message = \Lang::get('auth/message.throttle', ['minutes' => $minutes]); $message = trans('auth/message.throttle', ['minutes' => $minutes]);
return redirect()->back() return redirect()->back()
->withInput($request->only($this->username(), 'remember')) ->withInput($request->only($this->username(), 'remember'))

View file

@ -28,8 +28,8 @@ class ProfileController extends Controller
*/ */
public function getIndex() public function getIndex()
{ {
$this->authorize('self.profile');
$user = Auth::user(); $user = Auth::user();
return view('account/profile', compact('user')); return view('account/profile', compact('user'));
} }
@ -42,6 +42,7 @@ class ProfileController extends Controller
*/ */
public function postIndex(ImageUploadRequest $request) public function postIndex(ImageUploadRequest $request)
{ {
$this->authorize('self.profile');
$user = Auth::user(); $user = Auth::user();
$user->first_name = $request->input('first_name'); $user->first_name = $request->input('first_name');
$user->last_name = $request->input('last_name'); $user->last_name = $request->input('last_name');
@ -67,7 +68,7 @@ class ProfileController extends Controller
if ($user->save()) { if ($user->save()) {
return redirect()->route('profile')->with('success', trans('account.general.profile_updated')); return redirect()->route('profile')->with('success', trans('account/general.profile_updated'));
} }
return redirect()->back()->withInput()->withErrors($user->getErrors()); return redirect()->back()->withInput()->withErrors($user->getErrors());

View file

@ -933,7 +933,7 @@ class ReportsController extends Controller
$diff = ($asset->purchase_cost - $depreciation); $diff = ($asset->purchase_cost - $depreciation);
$row[] = Helper::formatCurrencyOutput($depreciation); $row[] = Helper::formatCurrencyOutput($depreciation);
$row[] = Helper::formatCurrencyOutput($diff); $row[] = Helper::formatCurrencyOutput($diff);
$row[] = ($asset->depreciation) ? $asset->depreciated_date()->format('Y-m-d') : ''; $row[] = (($asset->depreciation) && ($asset->depreciated_date())) ? $asset->depreciated_date()->format('Y-m-d') : '';
} }
if ($request->filled('checkout_date')) { if ($request->filled('checkout_date')) {

View file

@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\URL;
@ -106,17 +107,7 @@ class SettingsController extends Controller
$start_settings['owner_is_admin'] = false; $start_settings['owner_is_admin'] = false;
} }
if ((is_writable(storage_path())) $start_settings['writable'] = $this->storagePathIsWritable();
&& (is_writable(storage_path().'/framework'))
&& (is_writable(storage_path().'/framework/cache'))
&& (is_writable(storage_path().'/framework/sessions'))
&& (is_writable(storage_path().'/framework/views'))
&& (is_writable(storage_path().'/logs'))
) {
$start_settings['writable'] = true;
} else {
$start_settings['writable'] = false;
}
$start_settings['gd'] = extension_loaded('gd'); $start_settings['gd'] = extension_loaded('gd');
@ -145,6 +136,19 @@ class SettingsController extends Controller
} }
} }
/**
* Determine if the app storage path is writable.
*/
protected function storagePathIsWritable(): bool
{
return File::isWritable(storage_path()) &&
File::isWritable(storage_path('framework')) &&
File::isWritable(storage_path('framework/cache')) &&
File::isWritable(storage_path('framework/sessions')) &&
File::isWritable(storage_path('framework/views')) &&
File::isWritable(storage_path('logs'));
}
/** /**
* Save the first admin user from Setup. * Save the first admin user from Setup.
* *
@ -347,9 +351,9 @@ class SettingsController extends Controller
$setting->load_remote = $request->input('load_remote', 0); $setting->load_remote = $request->input('load_remote', 0);
$setting->thumbnail_max_h = $request->input('thumbnail_max_h'); $setting->thumbnail_max_h = $request->input('thumbnail_max_h');
$setting->privacy_policy_link = $request->input('privacy_policy_link'); $setting->privacy_policy_link = $request->input('privacy_policy_link');
$setting->depreciation_method = $request->input('depreciation_method'); $setting->depreciation_method = $request->input('depreciation_method');
$setting->dash_chart_type = $request->input('dash_chart_type'); $setting->dash_chart_type = $request->input('dash_chart_type');
$setting->profile_edit = $request->input('profile_edit', 0);
if ($request->input('per_page') != '') { if ($request->input('per_page') != '') {
$setting->per_page = $request->input('per_page'); $setting->per_page = $request->input('per_page');

View file

@ -17,7 +17,9 @@ use App\Notifications\WelcomeNotification;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Password; use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Storage;
use Redirect; use Redirect;
use Str; use Str;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
@ -333,19 +335,24 @@ class UsersController extends Controller
*/ */
public function destroy(DeleteUserRequest $request, $id = null) public function destroy(DeleteUserRequest $request, $id = null)
{ {
$this->authorize('delete', User::class); $this->authorize('delete', User::class);
$user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc'); if ($user = User::find($id)) {
if (($user) && ($user->deleted_at = '')) { $this->authorize('delete', $user);
// Delete the user
$user->delete(); if ($user->delete()) {
return redirect()->route('users.index')->with('success', trans('admin/users/message.success.delete')); if (Storage::disk('public')->exists('avatars/' . $user->avatar)) {
try {
Storage::disk('public')->delete('avatars/' . $user->avatar);
} catch (\Exception $e) {
Log::debug($e);
}
}
return redirect()->route('users.index')->with('success', trans('admin/users/message.success.delete'));
}
} }
return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found'));
return redirect()->route('users.index')
->with('error', trans('admin/users/message.user_not_found', compact('id')));
} }
@ -600,6 +607,7 @@ class UsersController extends Controller
$this->authorize('view', User::class); $this->authorize('view', User::class);
$user = User::where('id', $id)->withTrashed()->first(); $user = User::where('id', $id)->withTrashed()->first();
// Make sure they can view this particular user // Make sure they can view this particular user
$this->authorize('view', $user); $this->authorize('view', $user);
@ -655,6 +663,8 @@ class UsersController extends Controller
*/ */
public function sendPasswordReset($id) public function sendPasswordReset($id)
{ {
$this->authorize('view', User::class);
if (($user = User::find($id)) && ($user->activated == '1') && ($user->email != '') && ($user->ldap_import == '0')) { if (($user = User::find($id)) && ($user->activated == '1') && ($user->email != '') && ($user->ldap_import == '0')) {
$credentials = ['email' => trim($user->email)]; $credentials = ['email' => trim($user->email)];

View file

@ -49,10 +49,10 @@ class CheckForTwoFactor
// Otherwise make sure they're enrolled and show them the 2FA code screen // Otherwise make sure they're enrolled and show them the 2FA code screen
if ((Auth::user()->two_factor_secret != '') && (Auth::user()->two_factor_enrolled == '1')) { if ((Auth::user()->two_factor_secret != '') && (Auth::user()->two_factor_enrolled == '1')) {
return redirect()->route('two-factor')->with('info', 'Please enter your two-factor authentication code.'); return redirect()->route('two-factor')->with('info', trans('auth/message.two_factor.enter_two_factor_code'));
} }
return redirect()->route('two-factor-enroll')->with('success', 'Please enroll a device in two-factor authentication.'); return redirect()->route('two-factor-enroll')->with('success', trans('auth/message.two_factor.please_enroll'));
} }
} }

View file

@ -6,7 +6,7 @@ use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate;
class DeleteUserRequest extends FormRequest class DeleteUserRequest extends FormRequest
@ -19,18 +19,12 @@ class DeleteUserRequest extends FormRequest
*/ */
public function authorize(): bool public function authorize(): bool
{ {
return true; return Gate::allows('delete', User::class);
} }
/** public function prepareForValidation(): void
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{ {
$user_to_delete = User::withTrashed()->find(request()->route('user'));
$user_to_delete = User::find(request()->route('user'));
if ($user_to_delete) { if ($user_to_delete) {
$this->merge([ $this->merge([
@ -41,30 +35,41 @@ class DeleteUserRequest extends FormRequest
'assigned_assets' => $user_to_delete->assets()->count(), 'assigned_assets' => $user_to_delete->assets()->count(),
'assigned_licenses' => $user_to_delete->licenses()->count(), 'assigned_licenses' => $user_to_delete->licenses()->count(),
'assigned_accessories' => $user_to_delete->accessories()->count(), 'assigned_accessories' => $user_to_delete->accessories()->count(),
'deleted_at' => $user_to_delete->deleted_at,
]); ]);
} }
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [ return [
'id' => ['exists:users,id'], 'user' => Rule::notIn([auth()->user()->id]),
'user' => Rule::notIn([Auth::user()->id]),
'managed_users' => Rule::in([0]), 'managed_users' => Rule::in([0]),
'managed_locations' => Rule::in([0]), 'managed_locations' => Rule::in([0]),
'assigned_assets' => Rule::in([0]), 'assigned_assets' => Rule::in([0]),
'assigned_licenses' => Rule::in([0]), 'assigned_licenses' => Rule::in([0]),
'assigned_accessories' => Rule::in([0]), 'assigned_accessories' => Rule::in([0]),
'deleted_at' => Rule::in([null]),
]; ];
} }
public function messages(): array public function messages(): array
{ {
$user_to_delete = User::find(request()->route('user')); $user_to_delete = User::withTrashed()->find(request()->route('user'));
$messages = ['id.exists' => trans('admin/users/message.user_not_found')]; $messages = [];
if ($user_to_delete) { if ($user_to_delete) {
$messages = array_merge([ $messages = array_merge([
'user.exists' => trans('admin/users/message.user_not_found'),
// Cannot delete yourself // Cannot delete yourself
'user.not_in' => trans('admin/users/message.error.cannot_delete_yourself'), 'user.not_in' => trans('admin/users/message.error.cannot_delete_yourself'),
@ -84,6 +89,8 @@ class DeleteUserRequest extends FormRequest
// assigned accessories is not 0 // assigned accessories is not 0
'assigned_accessories.in' => trans_choice('admin/users/message.error.delete_has_accessories_var', $user_to_delete->accessories()->count(), ['count' => $user_to_delete->accessories()->count()]), 'assigned_accessories.in' => trans_choice('admin/users/message.error.delete_has_accessories_var', $user_to_delete->accessories()->count(), ['count' => $user_to_delete->accessories()->count()]),
'deleted_at.in' => trans('admin/users/message.user_deleted_warning'),
], $messages); ], $messages);
} }

View file

@ -49,7 +49,12 @@ class ActionlogsTransformer
public function transformActionlog (Actionlog $actionlog, $settings = null) public function transformActionlog (Actionlog $actionlog, $settings = null)
{ {
$icon = $actionlog->present()->icon(); $icon = $actionlog->present()->icon();
$custom_fields = CustomField::all();
static $custom_fields = false;
if ($custom_fields === false) {
$custom_fields = CustomField::all();
}
if ($actionlog->filename!='') { if ($actionlog->filename!='') {
$icon = Helper::filetype_icon($actionlog->filename); $icon = Helper::filetype_icon($actionlog->filename);
@ -217,13 +222,30 @@ class ActionlogsTransformer
*/ */
public function changedInfo(array $clean_meta) public function changedInfo(array $clean_meta)
{ $location = Location::withTrashed()->get(); {
$supplier = Supplier::withTrashed()->get(); static $location = false;
$model = AssetModel::withTrashed()->get(); static $supplier = false;
$status = Statuslabel::withTrashed()->get(); static $model = false;
$company = Company::get(); static $status = false;
static $company = false;
if ($location === false) {
$location = Location::select('id', 'name')->withTrashed()->get();
}
if ($supplier === false) {
$supplier = Supplier::select('id', 'name')->withTrashed()->get();
}
if ($model === false) {
$model = AssetModel::select('id', 'name')->withTrashed()->get();
}
if ($status === false) {
$status = Statuslabel::select('id', 'name')->withTrashed()->get();
}
if ($company === false) {
$company = Company::select('id', 'name')->get();
}
if(array_key_exists('rtd_location_id',$clean_meta)) { if(array_key_exists('rtd_location_id',$clean_meta)) {
$oldRtd = $location->find($clean_meta['rtd_location_id']['old']); $oldRtd = $location->find($clean_meta['rtd_location_id']['old']);

View file

@ -20,7 +20,9 @@ class AssetImporter extends ItemImporter
{ {
parent::__construct($filename); parent::__construct($filename);
if (!is_null(Statuslabel::first())) { $this->defaultStatusLabelId = Statuslabel::first()->id;
if (!is_null(Statuslabel::deployable()->first())) {
$this->defaultStatusLabelId = Statuslabel::deployable()->first()->id; $this->defaultStatusLabelId = Statuslabel::deployable()->first()->id;
} }
} }
@ -102,7 +104,7 @@ class AssetImporter extends ItemImporter
$this->item['expected_checkin'] = trim($this->findCsvMatch($row, 'expected_checkin')); $this->item['expected_checkin'] = trim($this->findCsvMatch($row, 'expected_checkin'));
$this->item['last_audit_date'] = trim($this->findCsvMatch($row, 'last_audit_date')); $this->item['last_audit_date'] = trim($this->findCsvMatch($row, 'last_audit_date'));
$this->item['next_audit_date'] = trim($this->findCsvMatch($row, 'next_audit_date')); $this->item['next_audit_date'] = trim($this->findCsvMatch($row, 'next_audit_date'));
$this->item['asset_eol_date'] = trim($this->findCsvMatch($row, 'next_audit_date')); $this->item['asset_eol_date'] = trim($this->findCsvMatch($row, 'asset_eol_date'));
$this->item['asset_tag'] = $asset_tag; $this->item['asset_tag'] = $asset_tag;
// We need to save the user if it exists so that we can checkout to user later. // We need to save the user if it exists so that we can checkout to user later.

View file

@ -62,6 +62,12 @@ class Asset extends Depreciable
*/ */
protected $table = 'assets'; protected $table = 'assets';
/**
* Leaving this commented out, since we need to test further, but this would eager load the model relationship every single
* time the asset model is loaded.
*/
// protected $with = ['model'];
/** /**
* Whether the model should inject it's identifier to the unique * Whether the model should inject it's identifier to the unique
* validation rules before attempting validation. If this property * validation rules before attempting validation. If this property
@ -568,7 +574,7 @@ class Asset extends Depreciable
*/ */
public function assignedType() public function assignedType()
{ {
return strtolower(class_basename($this->assigned_type)); return $this->assigned_type ? strtolower(class_basename($this->assigned_type)) : null;
} }
@ -984,6 +990,14 @@ class Asset extends Depreciable
); );
} }
protected function lastAuditDate(): Attribute
{
return Attribute::make(
get: fn ($value) => $value ? Carbon::parse($value)->format('Y-m-d H:i:s') : null,
set: fn ($value) => $value ? Carbon::parse($value)->format('Y-m-d H:i:s') : null,
);
}
protected function lastCheckout(): Attribute protected function lastCheckout(): Attribute
{ {
return Attribute::make( return Attribute::make(

View file

@ -173,10 +173,14 @@ class Depreciable extends SnipeModel
public function depreciated_date() public function depreciated_date()
{ {
$date = date_create($this->purchase_date); if (($this->purchase_date) && ($this->get_depreciation())) {
date_add($date, date_interval_create_from_date_string($this->get_depreciation()->months.' months')); $date = date_create($this->purchase_date);
return date_add($date, date_interval_create_from_date_string($this->get_depreciation()->months.' months'));//date_format($date, 'Y-m-d'); //don't bake-in format, for internationalization
}
return null;
return $date; //date_format($date, 'Y-m-d'); //don't bake-in format, for internationalization
} }
// it's necessary for unit tests // it's necessary for unit tests

View file

@ -204,6 +204,23 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
return $this->checkPermissionSection('superuser'); return $this->checkPermissionSection('superuser');
} }
/**
* Checks if the can edit their own profile
*
* @author A. Gianotto <snipe@snipe.net>
* @since [v6.3.4]
* @return bool
*/
public function canEditProfile() : bool {
$setting = Setting::getSettings();
if ($setting->profile_edit == 1) {
return true;
}
return false;
}
/** /**
* Checks if the user is deletable * Checks if the user is deletable
* *
@ -572,7 +589,6 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
if ($format=='firstname.lastname') { if ($format=='firstname.lastname') {
$username = str_slug($first_name) . '.' . str_slug($last_name); $username = str_slug($first_name) . '.' . str_slug($last_name);
} elseif ($format == 'lastnamefirstinitial') { } elseif ($format == 'lastnamefirstinitial') {
$username = str_slug($last_name.substr($first_name, 0, 1)); $username = str_slug($last_name.substr($first_name, 0, 1));
} elseif ($format == 'firstintial.lastname') { } elseif ($format == 'firstintial.lastname') {
@ -589,7 +605,9 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo
$username = str_slug($first_name).str_slug($last_name); $username = str_slug($first_name).str_slug($last_name);
} elseif ($format == 'firstnamelastinitial') { } elseif ($format == 'firstnamelastinitial') {
$username = str_slug(($first_name.substr($last_name, 0, 1))); $username = str_slug(($first_name.substr($last_name, 0, 1)));
} } elseif ($format == 'lastname.firstname') {
$username = str_slug($last_name).'.'.str_slug($first_name);
}
} }
$user['first_name'] = $first_name; $user['first_name'] = $first_name;

View file

@ -92,7 +92,7 @@ class AssetObserver
// only modify the 'next' one if it's *bigger* than the stored base // only modify the 'next' one if it's *bigger* than the stored base
// //
if($next_asset_tag > $settings->next_auto_tag_base) { if ($next_asset_tag > $settings->next_auto_tag_base && $next_asset_tag < PHP_INT_MAX) {
$settings->next_auto_tag_base = $next_asset_tag; $settings->next_auto_tag_base = $next_asset_tag;
$settings->save(); $settings->save();
} }

View file

@ -21,6 +21,7 @@ use Illuminate\Routing\UrlGenerator;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\URL;
/** /**
* This service provider handles setting the observers on models * This service provider handles setting the observers on models
@ -31,7 +32,7 @@ use Illuminate\Support\Facades\Log;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
/** /**
* Custom email array validation * Bootstrap application services.
* *
* @author [A. Gianotto] [<snipe@snipe.net>] * @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v3.0] * @since [v3.0]
@ -39,19 +40,24 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot(UrlGenerator $url) public function boot(UrlGenerator $url)
{ {
if (env('APP_FORCE_TLS')) { /**
if (strpos(env('APP_URL'), 'https') === 0) { * This is a workaround for proxies/reverse proxies that don't always pass the proper headers.
$url->forceScheme('https'); *
} else { * Here, we check if the APP_URL starts with https://, which we should always honor,
Log::debug("'APP_FORCE_TLS' is set to true, but 'APP_URL' does not start with 'https://'. Will not force TLS on connections."); * regardless of how well the proxy or network is configured.
} *
* We'll force the https scheme if the APP_URL starts with https://, or if APP_FORCE_TLS is set to true.
*
*/
if ((strpos(env('APP_URL'), 'https://') === 0) || (env('APP_FORCE_TLS'))) {
$url->forceScheme('https');
} }
// TODO - isn't it somehow 'gauche' to check the environment directly; shouldn't we be using config() somehow? // TODO - isn't it somehow 'gauche' to check the environment directly; shouldn't we be using config() somehow?
if ( ! env('APP_ALLOW_INSECURE_HOSTS')) { // unless you set APP_ALLOW_INSECURE_HOSTS, you should PROHIBIT forging domain parts of URL via Host: headers if ( ! env('APP_ALLOW_INSECURE_HOSTS')) { // unless you set APP_ALLOW_INSECURE_HOSTS, you should PROHIBIT forging domain parts of URL via Host: headers
$url_parts = parse_url(config('app.url')); $url_parts = parse_url(config('app.url'));
if ($url_parts && array_key_exists('scheme', $url_parts) && array_key_exists('host', $url_parts)) { // check for the *required* parts of a bare-minimum URL if ($url_parts && array_key_exists('scheme', $url_parts) && array_key_exists('host', $url_parts)) { // check for the *required* parts of a bare-minimum URL
\URL::forceRootUrl(config('app.url')); URL::forceRootUrl(config('app.url'));
} else { } else {
Log::error("Your APP_URL in your .env is misconfigured - it is: ".config('app.url').". Many things will work strangely unless you fix it."); Log::error("Your APP_URL in your .env is misconfigured - it is: ".config('app.url').". Many things will work strangely unless you fix it.");
} }

View file

@ -232,5 +232,12 @@ class AuthServiceProvider extends ServiceProvider
|| $user->can('update', User::class) || $user->can('update', User::class)
|| $user->can('create', User::class); || $user->can('create', User::class);
}); });
// This determines whether the user can edit their profile based on the setting in Admin > General
Gate::define('self.profile', function ($user) {
return $user->canEditProfile();
});
} }
} }

View file

@ -61,7 +61,7 @@
"phpspec/prophecy": "^1.10", "phpspec/prophecy": "^1.10",
"pragmarx/google2fa-laravel": "^1.3", "pragmarx/google2fa-laravel": "^1.3",
"rollbar/rollbar-laravel": "^8.0", "rollbar/rollbar-laravel": "^8.0",
"spatie/laravel-backup": "^8.0", "spatie/laravel-backup": "^8.8",
"spatie/laravel-ignition": "^2.0", "spatie/laravel-ignition": "^2.0",
"tecnickcom/tc-lib-barcode": "^1.15", "tecnickcom/tc-lib-barcode": "^1.15",
"tecnickcom/tcpdf": "^6.5", "tecnickcom/tcpdf": "^6.5",
@ -70,17 +70,17 @@
}, },
"suggest": { "suggest": {
"ext-ldap": "*", "ext-ldap": "*",
"ext-zip": "*" "ext-zip": "*",
"ext-exif": "*"
}, },
"require-dev": { "require-dev": {
"brianium/paratest": "^v6.4.4", "brianium/paratest": "^v6.4.4",
"fakerphp/faker": "^1.16", "fakerphp/faker": "^1.16",
"larastan/larastan": "^2.9",
"mockery/mockery": "^1.4", "mockery/mockery": "^1.4",
"nunomaduro/larastan": "^2.0",
"nunomaduro/phpinsights": "^2.7", "nunomaduro/phpinsights": "^2.7",
"php-mock/php-mock-phpunit": "^2.8", "php-mock/php-mock-phpunit": "^2.10",
"phpunit/php-token-stream": "^3.1", "phpunit/phpunit": "^9.6.19",
"phpunit/phpunit": "^9.0",
"squizlabs/php_codesniffer": "^3.5", "squizlabs/php_codesniffer": "^3.5",
"symfony/css-selector": "^4.4", "symfony/css-selector": "^4.4",
"symfony/dom-crawler": "^4.4", "symfony/dom-crawler": "^4.4",

2283
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -112,7 +112,7 @@ return [
| |
*/ */
'fallback_locale' => 'en-US', 'fallback_locale' => env('FALLBACK_APP_LOCALE', 'en'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View file

@ -137,6 +137,11 @@ return [
'mail' => [ 'mail' => [
'to' => env('MAIL_BACKUP_NOTIFICATION_ADDRESS', null), 'to' => env('MAIL_BACKUP_NOTIFICATION_ADDRESS', null),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
], ],
'slack' => [ 'slack' => [
@ -152,6 +157,20 @@ return [
'icon' => null, 'icon' => null,
], ],
'discord' => [
'webhook_url' => '',
/*
* If this is an empty string, the name field on the webhook will be used.
*/
'username' => '',
/*
* If this is an empty string, the avatar on the webhook will be used.
*/
'avatar_url' => '',
],
], ],
/* /*

View file

@ -1,10 +1,10 @@
<?php <?php
return array ( return array (
'app_version' => 'v7.0.3', 'app_version' => 'v7.0.5',
'full_app_version' => 'v7.0.3 - build 13980-', 'full_app_version' => 'v7.0.5 - build 14092-g294fb1f77',
'build_version' => '13980', 'build_version' => '14092',
'prerelease_version' => '', 'prerelease_version' => '',
'hash_version' => '', 'hash_version' => 'g294fb1f77',
'full_hash' => 'v7.0.3', 'full_hash' => 'v7.0.5-77-g294fb1f77',
'branch' => 'develop', 'branch' => 'develop',
); );

View file

@ -38,6 +38,16 @@ class UserFactory extends Factory
]; ];
} }
public function deletedUser()
{
return $this->state(function () {
return [
'deleted_at' => $this->faker->dateTime(),
];
});
}
public function firstAdmin() public function firstAdmin()
{ {
return $this->state(function () { return $this->state(function () {

View file

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('settings', function (Blueprint $table) {
$table->boolean('profile_edit')->nullable()->default(1);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('settings', function (Blueprint $table) {
if (Schema::hasColumn('settings', 'profile_edit')) {
$table->dropColumn('profile_edit');
}
});
}
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -18,7 +18,7 @@
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=ec0a01609bec55e90f0692d86cb81625", "/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=ec0a01609bec55e90f0692d86cb81625",
"/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397",
"/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da", "/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da",
"/css/dist/all.css": "/css/dist/all.css?id=0f9956c66f93c6417f69f0134c6ae128", "/css/dist/all.css": "/css/dist/all.css?id=c18576427f178a39b395c950a130233e",
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7",
"/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0141634c24336be626e05c8b77d1fa27", "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0141634c24336be626e05c8b77d1fa27",
@ -29,9 +29,9 @@
"/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=96d16b1bdb177fd796c810b9e706c780", "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=96d16b1bdb177fd796c810b9e706c780",
"/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=8994b282f9f3b7a00380bb1e2731a4bf", "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=8994b282f9f3b7a00380bb1e2731a4bf",
"/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=111e341dba724e1df946e8d1f406a7bd", "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=111e341dba724e1df946e8d1f406a7bd",
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=5f79123a6750afd34dbf565faec3dda3", "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=56d8ef58cbae76d63d504ff8d69cf382",
"/js/build/vendor.js": "/js/build/vendor.js?id=179bfe20e8767f7df32658c6b5a10ca3", "/js/build/vendor.js": "/js/build/vendor.js?id=179bfe20e8767f7df32658c6b5a10ca3",
"/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=e5918703a22f8992c4c98f1dbbecb8f7", "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=1635e7bbab779359c9b97121a8203521",
"/js/dist/all.js": "/js/dist/all.js?id=e37ce44903f83119fe3d52717200022e", "/js/dist/all.js": "/js/dist/all.js?id=e37ce44903f83119fe3d52717200022e",
"/js/dist/all-defer.js": "/js/dist/all-defer.js?id=75d841799f917cbcacf6b87698379726", "/js/dist/all-defer.js": "/js/dist/all-defer.js?id=75d841799f917cbcacf6b87698379726",
"/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397",

View file

@ -2,10 +2,10 @@
return array( return array(
'personal_api_keys' => 'crwdns6798:0crwdne6798:0', 'personal_api_keys' => 'crwdns6798:0crwdne6798:0',
'api_key_warning' => 'crwdns6800:0crwdne6800:0', 'api_key_warning' => 'crwdns12268:0crwdne12268:0',
'api_base_url' => 'crwdns6802:0crwdne6802:0', 'api_base_url' => 'crwdns6802:0crwdne6802:0',
'api_base_url_endpoint' => 'crwdns6804:0crwdne6804:0', 'api_base_url_endpoint' => 'crwdns6804:0crwdne6804:0',
'api_token_expiration_time' => 'crwdns6806:0crwdne6806:0', 'api_token_expiration_time' => 'crwdns6806:0crwdne6806:0',
'api_reference' => 'crwdns6808:0crwdne6808:0', 'api_reference' => 'crwdns12270:0crwdne12270:0',
'profile_updated' => 'crwdns12202:0crwdne12202:0', 'profile_updated' => 'crwdns12202:0crwdne12202:0',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'crwdns650:0crwdne650:0', 'does_not_exist' => 'crwdns650:0crwdne650:0',
'assoc_users' => 'crwdns651:0crwdne651:0', 'assoc_users' => 'crwdns12272:0crwdne12272:0',
'assoc_assets' => 'crwdns1404:0crwdne1404:0', 'assoc_assets' => 'crwdns1404:0crwdne1404:0',
'assoc_child_loc' => 'crwdns1405:0crwdne1405:0', 'assoc_child_loc' => 'crwdns1405:0crwdne1405:0',
'assigned_assets' => 'crwdns11179:0crwdne11179:0', 'assigned_assets' => 'crwdns11179:0crwdne11179:0',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'crwdns1678:0crwdne1678:0', 'zerofill_count' => 'crwdns1678:0crwdne1678:0',
'username_format_help' => 'crwdns5918:0crwdne5918:0', 'username_format_help' => 'crwdns5918:0crwdne5918:0',
'oauth_title' => 'crwdns6403:0crwdne6403:0', 'oauth_title' => 'crwdns6403:0crwdne6403:0',
'oauth_clients' => 'crwdns12246:0crwdne12246:0',
'oauth' => 'crwdns6405:0crwdne6405:0', 'oauth' => 'crwdns6405:0crwdne6405:0',
'oauth_help' => 'crwdns6407:0crwdne6407:0', 'oauth_help' => 'crwdns6407:0crwdne6407:0',
'oauth_no_clients' => 'crwdns12248:0crwdne12248:0',
'oauth_secret' => 'crwdns12250:0crwdne12250:0',
'oauth_authorized_apps' => 'crwdns12252:0crwdne12252:0',
'oauth_redirect_url' => 'crwdns12254:0crwdne12254:0',
'oauth_name_help' => 'crwdns12256:0crwdne12256:0',
'oauth_scopes' => 'crwdns12258:0crwdne12258:0',
'oauth_callback_url' => 'crwdns12260:0crwdne12260:0',
'create_client' => 'crwdns12262:0crwdne12262:0',
'no_scopes' => 'crwdns12264:0crwdne12264:0',
'asset_tag_title' => 'crwdns6409:0crwdne6409:0', 'asset_tag_title' => 'crwdns6409:0crwdne6409:0',
'barcode_title' => 'crwdns6411:0crwdne6411:0', 'barcode_title' => 'crwdns6411:0crwdne6411:0',
'barcodes' => 'crwdns6413:0crwdne6413:0', 'barcodes' => 'crwdns6413:0crwdne6413:0',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'crwdns5952:0crwdne5952:0', 'lastname_firstinitial' => 'crwdns5952:0crwdne5952:0',
'firstinitial.lastname' => 'crwdns5954:0crwdne5954:0', 'firstinitial.lastname' => 'crwdns5954:0crwdne5954:0',
'firstnamelastinitial' => 'crwdns5956:0crwdne5956:0', 'firstnamelastinitial' => 'crwdns5956:0crwdne5956:0',
'lastnamefirstname' => 'crwdns12266:0crwdne12266:0',
'first_name' => 'crwdns1053:0crwdne1053:0', 'first_name' => 'crwdns1053:0crwdne1053:0',
'first_name_format' => 'crwdns1647:0crwdne1647:0', 'first_name_format' => 'crwdns1647:0crwdne1647:0',
'files' => 'crwdns1996:0crwdne1996:0', 'files' => 'crwdns1996:0crwdne1996:0',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => '私有API 金鑰', 'personal_api_keys' => '私有API 金鑰',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Ligging bestaan nie.', 'does_not_exist' => 'Ligging bestaan nie.',
'assoc_users' => 'Hierdie ligging is tans gekoppel aan ten minste een gebruiker en kan nie uitgevee word nie. Dateer asseblief u gebruikers op om nie meer hierdie ligging te verwys nie en probeer weer.', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Hierdie ligging is tans geassosieer met ten minste een bate en kan nie uitgevee word nie. Dateer asseblief jou bates op om nie meer hierdie ligging te verwys nie en probeer weer.', 'assoc_assets' => 'Hierdie ligging is tans geassosieer met ten minste een bate en kan nie uitgevee word nie. Dateer asseblief jou bates op om nie meer hierdie ligging te verwys nie en probeer weer.',
'assoc_child_loc' => 'Hierdie ligging is tans die ouer van ten minste een kind se plek en kan nie uitgevee word nie. Werk asseblief jou liggings by om nie meer hierdie ligging te verwys nie en probeer weer.', 'assoc_child_loc' => 'Hierdie ligging is tans die ouer van ten minste een kind se plek en kan nie uitgevee word nie. Werk asseblief jou liggings by om nie meer hierdie ligging te verwys nie en probeer weer.',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Lengte van bate-etikette, insluitend zerofill', 'zerofill_count' => 'Lengte van bate-etikette, insluitend zerofill',
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.', 'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
'oauth_title' => 'OAuth API Settings', 'oauth_title' => 'OAuth API Settings',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Settings', 'oauth_help' => 'Oauth Endpoint Settings',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Update Asset Tag Settings', 'asset_tag_title' => 'Update Asset Tag Settings',
'barcode_title' => 'Update Barcode Settings', 'barcode_title' => 'Update Barcode Settings',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Eerste naam', 'first_name' => 'Eerste naam',
'first_name_format' => 'Voornaam (jane@example.com)', 'first_name_format' => 'Voornaam (jane@example.com)',
'files' => 'Files', 'files' => 'Files',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Location does not exist.', 'does_not_exist' => 'Location does not exist.',
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Length of asset tags, including zerofill', 'zerofill_count' => 'Length of asset tags, including zerofill',
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.', 'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
'oauth_title' => 'OAuth API Settings', 'oauth_title' => 'OAuth API Settings',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Settings', 'oauth_help' => 'Oauth Endpoint Settings',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Update Asset Tag Settings', 'asset_tag_title' => 'Update Asset Tag Settings',
'barcode_title' => 'Update Barcode Settings', 'barcode_title' => 'Update Barcode Settings',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'First Name', 'first_name' => 'First Name',
'first_name_format' => 'First Name (jane@example.com)', 'first_name_format' => 'First Name (jane@example.com)',
'files' => 'Files', 'files' => 'Files',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'مفاتيح API الشخصية', 'personal_api_keys' => 'مفاتيح API الشخصية',
'api_key_warning' => 'عند إنشاء رمز API، تأكد من نسخه على الفور لأنه 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
لن يكون مرئيا لك مرة أخرى.',
'api_base_url' => 'عنوان URL الأساسي API الخاص بك موجود في:', 'api_base_url' => 'عنوان URL الأساسي API الخاص بك موجود في:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'تم تعيين رموز API لانتهاء صلاحيتها في:', 'api_token_expiration_time' => 'تم تعيين رموز API لانتهاء صلاحيتها في:',
'api_reference' => 'الرجاء التحقق من مرجع API <a href="https://snipe-it.readme.io/reference" target="_blank"></a> إلى 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
العثور على نقاط نهاية API المحددة ووثائق API الإضافية.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'الموقع غير موجود.', 'does_not_exist' => 'الموقع غير موجود.',
'assoc_users' => 'هذا الموقع مرتبط حاليا بمستخدم واحد على الأقل ولا يمكن حذفه. يرجى تحديث المستخدمين لم يعد يشيروا إلى هذا الموقع ثم أعد المحاولة. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'هذا الموقع مرتبط حاليا بمادة عرض واحدة على الأقل ولا يمكن حذفها. يرجى تحديث مواد العرض لم تعد تشير إلى هذا الموقع ثم أعد المحاولة. ', 'assoc_assets' => 'هذا الموقع مرتبط حاليا بمادة عرض واحدة على الأقل ولا يمكن حذفها. يرجى تحديث مواد العرض لم تعد تشير إلى هذا الموقع ثم أعد المحاولة. ',
'assoc_child_loc' => 'هذا الموقع هو حاليا أحد الوالدين لموقع طفل واحد على الأقل ولا يمكن حذفه. يرجى تحديث مواقعك لم تعد تشير إلى هذا الموقع ثم أعد المحاولة.', 'assoc_child_loc' => 'هذا الموقع هو حاليا أحد الوالدين لموقع طفل واحد على الأقل ولا يمكن حذفه. يرجى تحديث مواقعك لم تعد تشير إلى هذا الموقع ثم أعد المحاولة.',
'assigned_assets' => 'الأصول المعينة', 'assigned_assets' => 'الأصول المعينة',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'طول ترميز الأصل، بما في ذلك تعبئة الاصفار', 'zerofill_count' => 'طول ترميز الأصل، بما في ذلك تعبئة الاصفار',
'username_format_help' => 'سيتم استخدام هذا الإعداد فقط من قبل عملية الاستيراد إذا لم يتم توفير اسم المستخدم ويتعين علينا إنشاء اسم مستخدم لك.', 'username_format_help' => 'سيتم استخدام هذا الإعداد فقط من قبل عملية الاستيراد إذا لم يتم توفير اسم المستخدم ويتعين علينا إنشاء اسم مستخدم لك.',
'oauth_title' => 'إعدادات API OAuth', 'oauth_title' => 'إعدادات API OAuth',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'إعدادات نقطة النهاية Oauth', 'oauth_help' => 'إعدادات نقطة النهاية Oauth',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'تحديث إعدادات علامة الأصل', 'asset_tag_title' => 'تحديث إعدادات علامة الأصل',
'barcode_title' => 'تحديث إعدادات الباركود', 'barcode_title' => 'تحديث إعدادات الباركود',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)', 'lastname_firstinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
'firstinitial.lastname' => 'الاسم الأخير الأول (jsmith@example.com)', 'firstinitial.lastname' => 'الاسم الأخير الأول (jsmith@example.com)',
'firstnamelastinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)', 'firstnamelastinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'الإسم الأول', 'first_name' => 'الإسم الأول',
'first_name_format' => 'الاسم الأول (jane@example.com)', 'first_name_format' => 'الاسم الأول (jane@example.com)',
'files' => 'الملفات', 'files' => 'الملفات',
@ -245,7 +246,7 @@ return [
'requested_assets_menu' => 'الأصول المطلوبة', 'requested_assets_menu' => 'الأصول المطلوبة',
'request_canceled' => 'تم إلغاء الطلب', 'request_canceled' => 'تم إلغاء الطلب',
'request_item' => 'Request this item', 'request_item' => 'Request this item',
'external_link_tooltip' => 'External link to', 'external_link_tooltip' => 'رابط خارجي إلى',
'save' => 'حفظ', 'save' => 'حفظ',
'select_var' => 'اختر :thing... ', // this will eventually replace all of our other selects 'select_var' => 'اختر :thing... ', // this will eventually replace all of our other selects
'select' => 'تحديد', 'select' => 'تحديد',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Частни API ключове', 'personal_api_keys' => 'Частни API ключове',
'api_key_warning' => 'Когато се генерират API token, копирайте ги веднага защото 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
няма да бъдат видими в последствие.',
'api_base_url' => 'Вашият API основен URL се намира на:', 'api_base_url' => 'Вашият API основен URL се намира на:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API ключа ще изтиче на:', 'api_token_expiration_time' => 'API ключа ще изтиче на:',
'api_reference' => 'Прочетете <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> за да 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
намерите специфични API endpoints и допълнителна API документация.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Местоположението не съществува.', 'does_not_exist' => 'Местоположението не съществува.',
'assoc_users' => 'Местоположението е свързано с поне един потребител и не може да бъде изтрито. Моля, актуализирайте потребителите, така че да не са свързани с това местоположение и опитайте отново. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Местоположението е свързано с поне един актив и не може да бъде изтрито. Моля, актуализирайте активите, така че да не са свързани с това местоположение и опитайте отново. ', 'assoc_assets' => 'Местоположението е свързано с поне един актив и не може да бъде изтрито. Моля, актуализирайте активите, така че да не са свързани с това местоположение и опитайте отново. ',
'assoc_child_loc' => 'В избраното местоположение е присъединено едно или повече местоположения. Моля преместете ги в друго и опитайте отново.', 'assoc_child_loc' => 'В избраното местоположение е присъединено едно или повече местоположения. Моля преместете ги в друго и опитайте отново.',
'assigned_assets' => 'Изписани Активи', 'assigned_assets' => 'Изписани Активи',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Дължина на етикети на актив, включително zerofill', 'zerofill_count' => 'Дължина на етикети на актив, включително zerofill',
'username_format_help' => 'Тази настройка се изпозлва само при импортиране, ако потребителя не е въведен и ние трябва да му генерираме потребителско име.', 'username_format_help' => 'Тази настройка се изпозлва само при импортиране, ако потребителя не е въведен и ние трябва да му генерираме потребителско име.',
'oauth_title' => 'OAuth API Настройки', 'oauth_title' => 'OAuth API Настройки',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint настройки', 'oauth_help' => 'Oauth Endpoint настройки',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Обнови настроките на етикета на актива', 'asset_tag_title' => 'Обнови настроките на етикета на актива',
'barcode_title' => 'Обнови настройките на баркод', 'barcode_title' => 'Обнови настройките на баркод',
'barcodes' => 'Баркоди', 'barcodes' => 'Баркоди',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Фамилия и Първа буква от име (ivanov_i@example.com)', 'lastname_firstinitial' => 'Фамилия и Първа буква от име (ivanov_i@example.com)',
'firstinitial.lastname' => 'Първа буква от името и Фамилия (i.ivanov@example.com)', 'firstinitial.lastname' => 'Първа буква от името и Фамилия (i.ivanov@example.com)',
'firstnamelastinitial' => 'Име и първа буква от фамилия (ivani@example.com)', 'firstnamelastinitial' => 'Име и първа буква от фамилия (ivani@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Собствено име', 'first_name' => 'Собствено име',
'first_name_format' => 'Име (jane@example.com)', 'first_name_format' => 'Име (jane@example.com)',
'files' => 'Файлове', 'files' => 'Файлове',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Location does not exist.', 'does_not_exist' => 'Location does not exist.',
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Length of asset tags, including zerofill', 'zerofill_count' => 'Length of asset tags, including zerofill',
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.', 'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
'oauth_title' => 'OAuth API Settings', 'oauth_title' => 'OAuth API Settings',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Settings', 'oauth_help' => 'Oauth Endpoint Settings',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Update Asset Tag Settings', 'asset_tag_title' => 'Update Asset Tag Settings',
'barcode_title' => 'Update Barcode Settings', 'barcode_title' => 'Update Barcode Settings',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'First Name', 'first_name' => 'First Name',
'first_name_format' => 'First Name (jane@example.com)', 'first_name_format' => 'First Name (jane@example.com)',
'files' => 'Files', 'files' => 'Files',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Location does not exist.', 'does_not_exist' => 'Location does not exist.',
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Length of asset tags, including zerofill', 'zerofill_count' => 'Length of asset tags, including zerofill',
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.', 'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
'oauth_title' => 'OAuth API Settings', 'oauth_title' => 'OAuth API Settings',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Settings', 'oauth_help' => 'Oauth Endpoint Settings',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Update Asset Tag Settings', 'asset_tag_title' => 'Update Asset Tag Settings',
'barcode_title' => 'Update Barcode Settings', 'barcode_title' => 'Update Barcode Settings',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'First Name', 'first_name' => 'First Name',
'first_name_format' => 'First Name (jane@example.com)', 'first_name_format' => 'First Name (jane@example.com)',
'files' => 'Files', 'files' => 'Files',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Osobní API klíče', 'personal_api_keys' => 'Osobní API klíče',
'api_key_warning' => 'Při generování tokenu API se ujistěte, že jej ihned zkopírujete, protože 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
nebudou viditelné.',
'api_base_url' => 'Základní adresa API je umístěna na:', 'api_base_url' => 'Základní adresa API je umístěna na:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokeny vyprší:', 'api_token_expiration_time' => 'API tokeny vyprší:',
'api_reference' => 'Zkontrolujte prosím <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> pro 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
nalezení konkrétního koncového bodu a další API dokumentaci.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Místo neexistuje.', 'does_not_exist' => 'Místo neexistuje.',
'assoc_users' => 'Toto umístění je spojeno s alespoň jedním uživatelem a nemůže být smazáno. Aktualizujte uživatele aby nenáleželi k tomuto umístění a zkuste to znovu. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Toto umístění je spojeno s alespoň jedním majetkem a nemůže být smazáno. Aktualizujte majetky tak aby nenáleželi k tomuto umístění a zkuste to znovu. ', 'assoc_assets' => 'Toto umístění je spojeno s alespoň jedním majetkem a nemůže být smazáno. Aktualizujte majetky tak aby nenáleželi k tomuto umístění a zkuste to znovu. ',
'assoc_child_loc' => 'Toto umístění je nadřazené alespoň jednomu umístění a nelze jej smazat. Aktualizujte své umístění tak, aby na toto umístění již neodkazovalo a zkuste to znovu. ', 'assoc_child_loc' => 'Toto umístění je nadřazené alespoň jednomu umístění a nelze jej smazat. Aktualizujte své umístění tak, aby na toto umístění již neodkazovalo a zkuste to znovu. ',
'assigned_assets' => 'Přiřazený majetek', 'assigned_assets' => 'Přiřazený majetek',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Délka značek majetku včetně zerofill', 'zerofill_count' => 'Délka značek majetku včetně zerofill',
'username_format_help' => 'Toto nastavení bude použito pouze v případě, že není zadáno uživatelské jméno a my pro vás musíme vygenerovat uživatelské jméno.', 'username_format_help' => 'Toto nastavení bude použito pouze v případě, že není zadáno uživatelské jméno a my pro vás musíme vygenerovat uživatelské jméno.',
'oauth_title' => 'Nastavení OAuth API', 'oauth_title' => 'Nastavení OAuth API',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Nastavení koncových bodů Oauth', 'oauth_help' => 'Nastavení koncových bodů Oauth',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Aktualizovat nastavení inventárních čísel', 'asset_tag_title' => 'Aktualizovat nastavení inventárních čísel',
'barcode_title' => 'Aktualizovat nastavení čárového kódu', 'barcode_title' => 'Aktualizovat nastavení čárového kódu',
'barcodes' => 'Čárové kódy', 'barcodes' => 'Čárové kódy',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Příjmení Iniciál (novak_j@example.com)', 'lastname_firstinitial' => 'Příjmení Iniciál (novak_j@example.com)',
'firstinitial.lastname' => 'Iniciál Príjmení (j.novak@example.com)', 'firstinitial.lastname' => 'Iniciál Príjmení (j.novak@example.com)',
'firstnamelastinitial' => 'Jméno Iniciál(josefn@example.com)', 'firstnamelastinitial' => 'Jméno Iniciál(josefn@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Jméno', 'first_name' => 'Jméno',
'first_name_format' => 'Jméno (jane@example.com)', 'first_name_format' => 'Jméno (jane@example.com)',
'files' => 'Soubory', 'files' => 'Soubory',

View file

@ -6,6 +6,6 @@ return array(
'action' => 'Akce', 'action' => 'Akce',
'by' => 'Vytvořil', 'by' => 'Vytvořil',
'item' => 'Položka', 'item' => 'Položka',
'no_matching_records' => 'No matching records found', 'no_matching_records' => 'Nebyly nalezeny žádné odpovídající záznamy',
); );

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Nid yw\'r lleoliad yn bodoli.', 'does_not_exist' => 'Nid yw\'r lleoliad yn bodoli.',
'assoc_users' => 'Mae\'r lleoliad yma wedi perthnasu i oleiaf un defnyddiwr a nid yw\'n bosib dileu. Diweddarwch eich defnyddwyr i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Mae\'r lleoliad yma wedi perthnasu i oleiaf un ased a nid yw\'n bosib dileu. Diweddarwch eich asedau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ', 'assoc_assets' => 'Mae\'r lleoliad yma wedi perthnasu i oleiaf un ased a nid yw\'n bosib dileu. Diweddarwch eich asedau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ',
'assoc_child_loc' => 'Mae\'r lleoliad yma yn rhiant i oleiaf un lleoliad a nid yw\'n bosib dileu. Diweddarwch eich lleoliadau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ', 'assoc_child_loc' => 'Mae\'r lleoliad yma yn rhiant i oleiaf un lleoliad a nid yw\'n bosib dileu. Diweddarwch eich lleoliadau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Hyd y tagiau asedau, gan gynnwys zerofill', 'zerofill_count' => 'Hyd y tagiau asedau, gan gynnwys zerofill',
'username_format_help' => 'Dim ond os na ddarperir enw defnyddiwr y bydd y gosodiad hwn yn cael ei ddefnyddio a bod yn rhaid i ni gynhyrchu enw defnyddiwr i chi.', 'username_format_help' => 'Dim ond os na ddarperir enw defnyddiwr y bydd y gosodiad hwn yn cael ei ddefnyddio a bod yn rhaid i ni gynhyrchu enw defnyddiwr i chi.',
'oauth_title' => 'OAuth API Settings', 'oauth_title' => 'OAuth API Settings',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Settings', 'oauth_help' => 'Oauth Endpoint Settings',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Update Asset Tag Settings', 'asset_tag_title' => 'Update Asset Tag Settings',
'barcode_title' => 'Update Barcode Settings', 'barcode_title' => 'Update Barcode Settings',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
'firstinitial.lastname' => 'Llythyren Cyntaf Enw Cyntaf Cyfenw (jsmith@example.com)', 'firstinitial.lastname' => 'Llythyren Cyntaf Enw Cyntaf Cyfenw (jsmith@example.com)',
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Enw cyntaf', 'first_name' => 'Enw cyntaf',
'first_name_format' => 'Enw Cyntaf (jane@example.com)', 'first_name_format' => 'Enw Cyntaf (jane@example.com)',
'files' => 'Ffeiliau', 'files' => 'Ffeiliau',

View file

@ -2,10 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personlige API-nøgler', 'personal_api_keys' => 'Personlige API-nøgler',
'api_key_warning' => 'Når du genererer en API-nøgle, skal du sørge for at kopiere det ned med det samme, da de ikke vil være synlige for dig igen.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
'api_base_url' => 'Din basisadressen til API\'en er:', 'api_base_url' => 'Din basisadressen til API\'en er:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API-nøgler er indstillet til at udløbe efter:', 'api_token_expiration_time' => 'API-nøgler er indstillet til at udløbe efter:',
'api_reference' => 'Se venligst i <a href="https://snipe-it.readme.io/reference" target="_blank">API-manualen</a> for at finde specifikke API-endpoints og yderligere API-dokumentation.', 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Beliggenhed findes ikke.', 'does_not_exist' => 'Beliggenhed findes ikke.',
'assoc_users' => 'Denne placering er i øjeblikket forbundet med mindst en bruger og kan ikke slettes. Opdater dine brugere for ikke længere at henvise til denne placering, og prøv igen.', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Denne placering er i øjeblikket forbundet med mindst ét aktiv og kan ikke slettes. Opdater dine aktiver for ikke længere at henvise til denne placering, og prøv igen.', 'assoc_assets' => 'Denne placering er i øjeblikket forbundet med mindst ét aktiv og kan ikke slettes. Opdater dine aktiver for ikke længere at henvise til denne placering, og prøv igen.',
'assoc_child_loc' => 'Denne placering er for øjeblikket forælder på mindst et barns placering og kan ikke slettes. Opdater dine placeringer for ikke længere at henvise til denne placering, og prøv igen.', 'assoc_child_loc' => 'Denne placering er for øjeblikket forælder på mindst et barns placering og kan ikke slettes. Opdater dine placeringer for ikke længere at henvise til denne placering, og prøv igen.',
'assigned_assets' => 'Tildelte aktiver', 'assigned_assets' => 'Tildelte aktiver',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Længde af aktivetiketter, herunder zerofill', 'zerofill_count' => 'Længde af aktivetiketter, herunder zerofill',
'username_format_help' => 'Denne indstilling vil kun blive brugt af importprocessen, hvis et brugernavn ikke er angivet, og vi er nødt til at generere et brugernavn til dig.', 'username_format_help' => 'Denne indstilling vil kun blive brugt af importprocessen, hvis et brugernavn ikke er angivet, og vi er nødt til at generere et brugernavn til dig.',
'oauth_title' => 'OAuth API Indstillinger', 'oauth_title' => 'OAuth API Indstillinger',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Indstillinger', 'oauth_help' => 'Oauth Endpoint Indstillinger',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Opdater Aktiv Tag Indstillinger', 'asset_tag_title' => 'Opdater Aktiv Tag Indstillinger',
'barcode_title' => 'Opdater Stregkode Indstillinger', 'barcode_title' => 'Opdater Stregkode Indstillinger',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Efternavn første bogstav i fornavn (smith_j@example.com)', 'lastname_firstinitial' => 'Efternavn første bogstav i fornavn (smith_j@example.com)',
'firstinitial.lastname' => 'Første bogstav i fornavn.efternavn (j.smith@example.com)', 'firstinitial.lastname' => 'Første bogstav i fornavn.efternavn (j.smith@example.com)',
'firstnamelastinitial' => 'Fornavn førstebogstav i efternavn (janes@example.com)', 'firstnamelastinitial' => 'Fornavn førstebogstav i efternavn (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Fornavn', 'first_name' => 'Fornavn',
'first_name_format' => 'Fornavn (jane@example.com)', 'first_name_format' => 'Fornavn (jane@example.com)',
'files' => 'Filer', 'files' => 'Filer',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Persönliche API-Schlüssel', 'personal_api_keys' => 'Persönliche API-Schlüssel',
'api_key_warning' => 'Wenn Sie ein API-Token generieren, stellen Sie sicher, dass Sie diesen sofort kopieren, da er 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
nicht mehr für Sie sichtbar sein wird.',
'api_base_url' => 'Ihre API Basis-URL befindet sich unter:', 'api_base_url' => 'Ihre API Basis-URL befindet sich unter:',
'api_base_url_endpoint' => '/&lt;Endpunkt&gt;', 'api_base_url_endpoint' => '/&lt;Endpunkt&gt;',
'api_token_expiration_time' => 'API-Token sollen ablaufen in:', 'api_token_expiration_time' => 'API-Token sollen ablaufen in:',
'api_reference' => 'Bitte lesen Sie die <a href="https://snipe-it.readme.io/reference" target="_blank">API Dokumentation</a> um 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
Informationen über die verfügbaren API endpoints und ihre Verwendung zu erhalten.',
'profile_updated' => 'Konto erfolgreich aktualisiert', 'profile_updated' => 'Konto erfolgreich aktualisiert',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Standort nicht verfügbar.', 'does_not_exist' => 'Standort nicht verfügbar.',
'assoc_users' => 'Dieser Standort ist aktuell mindestens einem Benutzer zugewiesen und kann nicht gelöscht werden. Bitte entfernen Sie die Standortzuweisung bei den jeweiligen Benutzern und versuchen Sie es erneut. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Dieser Standort ist aktuell mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entfernen Sie die Standortzuweisung bei den jeweiligen Gegenständen und versuchen Sie es erneut diesen Standort zu entfernen. ', 'assoc_assets' => 'Dieser Standort ist aktuell mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entfernen Sie die Standortzuweisung bei den jeweiligen Gegenständen und versuchen Sie es erneut diesen Standort zu entfernen. ',
'assoc_child_loc' => 'Dieser Ort ist aktuell mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte Orte aktualisieren, so dass dieser Standort nicht mehr verknüpft ist und erneut versuchen. ', 'assoc_child_loc' => 'Dieser Ort ist aktuell mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte Orte aktualisieren, so dass dieser Standort nicht mehr verknüpft ist und erneut versuchen. ',
'assigned_assets' => 'Zugeordnete Assets', 'assigned_assets' => 'Zugeordnete Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Länge der Asset Tags, inklusive zerofill', 'zerofill_count' => 'Länge der Asset Tags, inklusive zerofill',
'username_format_help' => 'Diese Einstellung wird nur beim Import benutzt, wenn kein Benutzername angegeben wurde und ein Benutzername generiert werden muss.', 'username_format_help' => 'Diese Einstellung wird nur beim Import benutzt, wenn kein Benutzername angegeben wurde und ein Benutzername generiert werden muss.',
'oauth_title' => 'OAuth API Einstellungen', 'oauth_title' => 'OAuth API Einstellungen',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'OAuth Endpunkt Einstellungen', 'oauth_help' => 'OAuth Endpunkt Einstellungen',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Asset Tag Einstellungen aktualisieren', 'asset_tag_title' => 'Asset Tag Einstellungen aktualisieren',
'barcode_title' => 'Barcode Einstellungen aktualisieren', 'barcode_title' => 'Barcode Einstellungen aktualisieren',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Nachname_Initiale des Vornamens (mustermann_e@beispiel.de)', 'lastname_firstinitial' => 'Nachname_Initiale des Vornamens (mustermann_e@beispiel.de)',
'firstinitial.lastname' => 'Initiale des Vornamens.Nachname (e.mustermann@beispiel.de)', 'firstinitial.lastname' => 'Initiale des Vornamens.Nachname (e.mustermann@beispiel.de)',
'firstnamelastinitial' => 'Vorname und Initiale des Nachnamen (erika_m@beispiel.de)', 'firstnamelastinitial' => 'Vorname und Initiale des Nachnamen (erika_m@beispiel.de)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Vorname', 'first_name' => 'Vorname',
'first_name_format' => 'Vorname (jane@example.com)', 'first_name_format' => 'Vorname (jane@example.com)',
'files' => 'Dateien', 'files' => 'Dateien',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Persönliche API-Schlüssel', 'personal_api_keys' => 'Persönliche API-Schlüssel',
'api_key_warning' => 'Wenn Du ein API-Token generierst, stelle sicher, dass Du es sofort danach kopierst, da es 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
nicht mehr für Dich sichtbar sein wird.',
'api_base_url' => 'Deine API Basis-URL befindet sich unter:', 'api_base_url' => 'Deine API Basis-URL befindet sich unter:',
'api_base_url_endpoint' => '/&lt;Endpunkt&gt;', 'api_base_url_endpoint' => '/&lt;Endpunkt&gt;',
'api_token_expiration_time' => 'API-Token sollen ablaufen in:', 'api_token_expiration_time' => 'API-Token sollen ablaufen in:',
'api_reference' => 'Bitte lese die <a href="https://snipe-it.readme.io/reference" target="_blank">API Dokumentation</a> um 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
Informationen über die verfügbaren API endpoints und ihre Verwendung zu erhalten.',
'profile_updated' => 'Konto erfolgreich aktualisiert', 'profile_updated' => 'Konto erfolgreich aktualisiert',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Standort existiert nicht.', 'does_not_exist' => 'Standort existiert nicht.',
'assoc_users' => 'Dieser Standort ist mindestens einem Benutzer zugewiesen und kann nicht gelöscht werden. Bitte entferne die Standortzuweisung bei den jeweiligen Benutzern und versuche erneut, diesen Standort zu entfernen. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Dieser Standort ist mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entferne die Standortzuweisung bei den jeweiligen Gegenständen und versuche erneut, diesen Standort zu entfernen. ', 'assoc_assets' => 'Dieser Standort ist mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entferne die Standortzuweisung bei den jeweiligen Gegenständen und versuche erneut, diesen Standort zu entfernen. ',
'assoc_child_loc' => 'Dieser Standort ist mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte aktualisiere Deine Standorte, so dass dieser Standort nicht mehr verknüpft ist, und versuche es erneut. ', 'assoc_child_loc' => 'Dieser Standort ist mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte aktualisiere Deine Standorte, so dass dieser Standort nicht mehr verknüpft ist, und versuche es erneut. ',
'assigned_assets' => 'Zugeordnete Assets', 'assigned_assets' => 'Zugeordnete Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Länge der Asset Tags, inklusive führender Nullen', 'zerofill_count' => 'Länge der Asset Tags, inklusive führender Nullen',
'username_format_help' => 'Diese Einstellung wird nur beim Import benutzt, wenn kein Benutzername angegeben wurde und wir einen Benutzernamen für Dich generieren müssen.', 'username_format_help' => 'Diese Einstellung wird nur beim Import benutzt, wenn kein Benutzername angegeben wurde und wir einen Benutzernamen für Dich generieren müssen.',
'oauth_title' => 'OAuth API Einstellungen', 'oauth_title' => 'OAuth API Einstellungen',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpunkt Einstellungen', 'oauth_help' => 'Oauth Endpunkt Einstellungen',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Asset Tag Einstellungen aktualisieren', 'asset_tag_title' => 'Asset Tag Einstellungen aktualisieren',
'barcode_title' => 'Barcode Einstellungen aktualisieren', 'barcode_title' => 'Barcode Einstellungen aktualisieren',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Nachname_Initial des Vornamens (mustermann_e@beispiel.de)', 'lastname_firstinitial' => 'Nachname_Initial des Vornamens (mustermann_e@beispiel.de)',
'firstinitial.lastname' => 'Initial des Vornamens.Nachname (e.mustermann@beispiel.de)', 'firstinitial.lastname' => 'Initial des Vornamens.Nachname (e.mustermann@beispiel.de)',
'firstnamelastinitial' => 'Vorname_Initial des Nachnamen (erika_m@beispiel.de)', 'firstnamelastinitial' => 'Vorname_Initial des Nachnamen (erika_m@beispiel.de)',
'lastnamefirstname' => 'Nach- und Vorname (mustermann.jana@example.com)',
'first_name' => 'Vorname', 'first_name' => 'Vorname',
'first_name_format' => 'Vorname (erika@beispiel.de)', 'first_name_format' => 'Vorname (erika@beispiel.de)',
'files' => 'Dateien', 'files' => 'Dateien',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Προσωπικά Κλειδιά Api', 'personal_api_keys' => 'Προσωπικά Κλειδιά Api',
'api_key_warning' => 'Κατά τη δημιουργία ενός διακριτικού API, φροντίστε να το αντιγράψετε αμέσως καθώς 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
δεν θα είναι ορατό σε σας ξανά.',
'api_base_url' => 'Η βάση url σας API βρίσκεται στο:', 'api_base_url' => 'Η βάση url σας API βρίσκεται στο:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'Τα API tokens έχουν οριστεί να λήγουν:', 'api_token_expiration_time' => 'Τα API tokens έχουν οριστεί να λήγουν:',
'api_reference' => 'Παρακαλούμε ελέγξτε τον <a href="https://snipe-it.readme.io/reference" target="_blank">API κωδικό</a> στο 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
βρείτε συγκεκριμένα endpoints API και πρόσθετη τεκμηρίωση API.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Η τοποθεσία δεν υπάρχει.', 'does_not_exist' => 'Η τοποθεσία δεν υπάρχει.',
'assoc_users' => 'Αυτή η θέση είναι επί του παρόντος σχετίζεται με τουλάχιστον ένα χρήστη και δεν μπορεί να διαγραφεί. Παρακαλούμε να ενημερώσετε τους χρήστες σας να μην αναφέρονται σε αυτήν τη θέση και δοκιμάστε ξανά. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Αυτή η τοποθεσία συσχετίζεται προς το παρόν με τουλάχιστον ένα στοιχείο και δεν μπορεί να διαγραφεί. Ενημερώστε τα στοιχεία σας ώστε να μην αναφέρονται πλέον στην τοποθεσία αυτή και να προσπαθήσετε ξανά.', 'assoc_assets' => 'Αυτή η τοποθεσία συσχετίζεται προς το παρόν με τουλάχιστον ένα στοιχείο και δεν μπορεί να διαγραφεί. Ενημερώστε τα στοιχεία σας ώστε να μην αναφέρονται πλέον στην τοποθεσία αυτή και να προσπαθήσετε ξανά.',
'assoc_child_loc' => 'Αυτή η τοποθεσία είναι αυτήν τη στιγμή γονέας τουλάχιστον μιας τοποθεσίας παιδιού και δεν μπορεί να διαγραφεί. Ενημερώστε τις τοποθεσίες σας ώστε να μην αναφέρονται πλέον σε αυτήν την τοποθεσία και δοκιμάστε ξανά.', 'assoc_child_loc' => 'Αυτή η τοποθεσία είναι αυτήν τη στιγμή γονέας τουλάχιστον μιας τοποθεσίας παιδιού και δεν μπορεί να διαγραφεί. Ενημερώστε τις τοποθεσίες σας ώστε να μην αναφέρονται πλέον σε αυτήν την τοποθεσία και δοκιμάστε ξανά.',
'assigned_assets' => 'Αντιστοιχισμένα Στοιχεία Ενεργητικού', 'assigned_assets' => 'Αντιστοιχισμένα Στοιχεία Ενεργητικού',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Μήκος ετικετών ενεργητικού, συμπεριλαμβανομένου του zerofill', 'zerofill_count' => 'Μήκος ετικετών ενεργητικού, συμπεριλαμβανομένου του zerofill',
'username_format_help' => 'Αυτή η ρύθμιση θα χρησιμοποιηθεί μόνο από τη διαδικασία εισαγωγής εάν δεν παρέχεται ένα όνομα χρήστη και πρέπει να δημιουργήσουμε ένα όνομα χρήστη για εσάς.', 'username_format_help' => 'Αυτή η ρύθμιση θα χρησιμοποιηθεί μόνο από τη διαδικασία εισαγωγής εάν δεν παρέχεται ένα όνομα χρήστη και πρέπει να δημιουργήσουμε ένα όνομα χρήστη για εσάς.',
'oauth_title' => 'Ρυθμίσεις Oauth Api', 'oauth_title' => 'Ρυθμίσεις Oauth Api',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'Oauth', 'oauth' => 'Oauth',
'oauth_help' => 'Ρυθμίσεις Τελικού Σημείου Oauth', 'oauth_help' => 'Ρυθμίσεις Τελικού Σημείου Oauth',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Ενημέρωση Ρυθμίσεων Ετικετών Παγίων', 'asset_tag_title' => 'Ενημέρωση Ρυθμίσεων Ετικετών Παγίων',
'barcode_title' => 'Ενημέρωση Ρυθμίσεων Barcode', 'barcode_title' => 'Ενημέρωση Ρυθμίσεων Barcode',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Πρώτο Όνομα Αρχικό (smith_j@example.com)', 'lastname_firstinitial' => 'Πρώτο Όνομα Αρχικό (smith_j@example.com)',
'firstinitial.lastname' => 'Πρώτο Αρχικό Όνομα (j.smith@example.com)', 'firstinitial.lastname' => 'Πρώτο Αρχικό Όνομα (j.smith@example.com)',
'firstnamelastinitial' => 'Επίθετο Όνομα (janes@example.com)', 'firstnamelastinitial' => 'Επίθετο Όνομα (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Όνομα', 'first_name' => 'Όνομα',
'first_name_format' => 'Όνομα (jane@example.com)', 'first_name_format' => 'Όνομα (jane@example.com)',
'files' => 'Αρχεία', 'files' => 'Αρχεία',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base URL is located at:', 'api_base_url' => 'Your API base URL is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Location does not exist.', 'does_not_exist' => 'Location does not exist.',
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Length of asset tags, including zerofill', 'zerofill_count' => 'Length of asset tags, including zerofill',
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.', 'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
'oauth_title' => 'OAuth API Settings', 'oauth_title' => 'OAuth API Settings',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Settings', 'oauth_help' => 'Oauth Endpoint Settings',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Update Asset Tag Settings', 'asset_tag_title' => 'Update Asset Tag Settings',
'barcode_title' => 'Update Barcode Settings', 'barcode_title' => 'Update Barcode Settings',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'First Name', 'first_name' => 'First Name',
'first_name_format' => 'First Name (jane@example.com)', 'first_name_format' => 'First Name (jane@example.com)',
'files' => 'Files', 'files' => 'Files',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Lokasi tidak ada.', 'does_not_exist' => 'Lokasi tidak ada.',
'assoc_users' => 'Saat ini kategori ini terkait dengan setidaknya satu pengguna dan tidak dapat dihapus. Silahkan perbaharui pengguna anda untuk tidak lagi tereferensi dengan kategori ini dan coba lagi. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'Saat ini kategori ini terkait dengan setidaknya satu pengguna dan tidak dapat dihapus. Silahkan perbaharui pengguna anda untuk tidak lagi tereferensi dengan kategori ini dan coba lagi. ', 'assoc_assets' => 'Saat ini kategori ini terkait dengan setidaknya satu pengguna dan tidak dapat dihapus. Silahkan perbaharui pengguna anda untuk tidak lagi tereferensi dengan kategori ini dan coba lagi. ',
'assoc_child_loc' => 'Lokasi ini saat ini merupakan induk dari setidaknya satu lokasi anak dan tidak dapat dihapus. Perbarui lokasi Anda agar tidak lagi merujuk lokasi ini dan coba lagi. ', 'assoc_child_loc' => 'Lokasi ini saat ini merupakan induk dari setidaknya satu lokasi anak dan tidak dapat dihapus. Perbarui lokasi Anda agar tidak lagi merujuk lokasi ini dan coba lagi. ',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -287,8 +287,18 @@ return [
'zerofill_count' => 'Panjang tag aset, termasuk isian kosong', 'zerofill_count' => 'Panjang tag aset, termasuk isian kosong',
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.', 'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
'oauth_title' => 'OAuth API Settings', 'oauth_title' => 'OAuth API Settings',
'oauth_clients' => 'OAuth Clients',
'oauth' => 'OAuth', 'oauth' => 'OAuth',
'oauth_help' => 'Oauth Endpoint Settings', 'oauth_help' => 'Oauth Endpoint Settings',
'oauth_no_clients' => 'You have not created any OAuth clients yet.',
'oauth_secret' => 'Secret',
'oauth_authorized_apps' => 'Authorized Applications',
'oauth_redirect_url' => 'Redirect URL',
'oauth_name_help' => ' Something your users will recognize and trust.',
'oauth_scopes' => 'Scopes',
'oauth_callback_url' => 'Your application authorization callback URL.',
'create_client' => 'Create Client',
'no_scopes' => 'No scopes',
'asset_tag_title' => 'Update Asset Tag Settings', 'asset_tag_title' => 'Update Asset Tag Settings',
'barcode_title' => 'Update Barcode Settings', 'barcode_title' => 'Update Barcode Settings',
'barcodes' => 'Barcodes', 'barcodes' => 'Barcodes',

View file

@ -134,6 +134,7 @@ return [
'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)',
'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)',
'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)',
'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)',
'first_name' => 'Nama Pertama', 'first_name' => 'Nama Pertama',
'first_name_format' => 'Nama Depan (jane@example.com)', 'first_name_format' => 'Nama Depan (jane@example.com)',
'files' => 'Berkas', 'files' => 'Berkas',

View file

@ -2,12 +2,10 @@
return array( return array(
'personal_api_keys' => 'Personal API Keys', 'personal_api_keys' => 'Personal API Keys',
'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.',
will not be visible to you again.',
'api_base_url' => 'Your API base url is located at:', 'api_base_url' => 'Your API base url is located at:',
'api_base_url_endpoint' => '/&lt;endpoint&gt;', 'api_base_url_endpoint' => '/&lt;endpoint&gt;',
'api_token_expiration_time' => 'API tokens are set to expire in:', 'api_token_expiration_time' => 'API tokens are set to expire in:',
'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to 'api_reference' => 'Please check the <a href="https://snipe-it.readme.io/reference" target="_blank">API reference</a> to find specific API endpoints and additional API documentation.',
find specific API endpoints and additional API documentation.',
'profile_updated' => 'Account successfully updated', 'profile_updated' => 'Account successfully updated',
); );

View file

@ -3,7 +3,7 @@
return array( return array(
'does_not_exist' => 'Location does not exist.', 'does_not_exist' => 'Location does not exist.',
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ', 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ',
'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ',
'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ',
'assigned_assets' => 'Assigned Assets', 'assigned_assets' => 'Assigned Assets',

View file

@ -327,7 +327,6 @@ return [
'labels' => 'Labels', 'labels' => 'Labels',
'labels_title' => 'Update Label Settings', 'labels_title' => 'Update Label Settings',
'labels_help' => 'Label sizes &amp; settings', 'labels_help' => 'Label sizes &amp; settings',
'purge' => 'Purge',
'purge_keywords' => 'permanently delete', 'purge_keywords' => 'permanently delete',
'purge_help' => 'Purge Deleted Records', 'purge_help' => 'Purge Deleted Records',
'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.', 'ldap_extension_warning' => 'It does not look like the LDAP extension is installed or enabled on this server. You can still save your settings, but you will need to enable the LDAP extension for PHP before LDAP syncing or login will work.',
@ -374,5 +373,7 @@ return [
'database_driver' => 'Database Driver', 'database_driver' => 'Database Driver',
'bs_table_storage' => 'Table Storage', 'bs_table_storage' => 'Table Storage',
'timezone' => 'Timezone', 'timezone' => 'Timezone',
'profile_edit' => 'Edit Profile',
'profile_edit_help' => 'Allow users to edit their own profiles.',
]; ];

View file

@ -14,6 +14,5 @@ return [
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ', 'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
'google_login' => 'Login with Google Workspace', 'google_login' => 'Login with Google Workspace',
'google_login_failed' => 'Google Login failed, please try again.', 'google_login_failed' => 'Google Login failed, please try again.',
]; ];

Some files were not shown because too many files have changed in this diff Show more