🚀 Add Nostr profile job, Hungarian translations, and Horizon integration

- Introduced `FetchNostrProfileJob` for retrieving and updating user Nostr profiles.
- Added Hungarian translations (`auth.php`, `passwords.php`, `validation.php`, and others) for improved localization.
- Integrated Laravel Horizon for enhanced queue management (`HorizonServiceProvider` added, `composer.json` updated).
- Updated German and Spanish language files to fix duplicate keys.
- Minor route addition for testing Nostr profile job dispatch.
This commit is contained in:
HolgerHatGarKeineNode
2025-11-24 00:38:37 +01:00
parent bf14c1d89c
commit 8c1923f826
18 changed files with 1836 additions and 384 deletions

View File

@@ -0,0 +1,203 @@
<?php
namespace App\Jobs;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
use Ramsey\Uuid\Uuid;
use swentel\nostr\Filter\Filter;
use swentel\nostr\Key\Key;
use swentel\nostr\Message\RequestMessage;
use swentel\nostr\Relay\Relay;
use swentel\nostr\Relay\RelaySet;
use swentel\nostr\Request\Request;
use swentel\nostr\Subscription\Subscription;
class FetchNostrProfileJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(
public ?User $user = null,
) {}
public function handle(): void
{
// Determine which users to process
if ($this->user) {
if (!$this->user->nostr) {
\Log::info('No nostr profile for user', ['user_id' => $this->user->id]);
return;
}
$users = collect([$this->user]);
} else {
$users = User::query()->whereNotNull('nostr')->get();
\Log::info('Fetching nostr profiles for multiple users', ['count' => $users->count()]);
}
// Filter valid npub authors
$authors = $users
->pluck('nostr')
->map(fn($nostr) => trim($nostr))
->filter(fn($nostr) => str_starts_with($nostr, 'npub1'))
->unique()
->values()
->toArray();
if (empty($authors)) {
\Log::warning('No valid nostr authors found');
return;
}
// Setup filter for kind 0 (profile metadata)
$subscription = new Subscription();
$filter = new Filter();
$filter->setAuthors($authors);
$filter->setKinds([0]);
$requestMessage = new RequestMessage($subscription->getId(), [$filter]);
// Setup relay set
$relays = [
new Relay('wss://nos.lol'),
new Relay('wss://relay.nostr.band'),
];
$relaySet = new RelaySet();
$relaySet->setRelays($relays);
// Send request
$request = new Request($relaySet, $requestMessage);
try {
\Log::info('Fetching from relays', ['relay_count' => count($relays), 'author_count' => count($authors)]);
$response = $request->send();
$updated = 0;
$totalMessages = 0;
foreach ($response as $relayUrl => $relayResponses) {
$messageCount = count($relayResponses);
$totalMessages += $messageCount;
\Log::info('Received messages from relay', ['url' => $relayUrl, 'count' => $messageCount]);
foreach ($relayResponses as $message) {
if (!isset($message->event)) {
continue;
}
try {
$profile = json_decode($message->event->content, true, 512, JSON_THROW_ON_ERROR);
if (isset($profile['picture'])) {
$npub = (new Key)->convertPublicKeyToBech32($message->event->pubkey);
$user = User::query()->where('nostr', $npub)->first();
if (isset($profile['name'])) {
$user->name = $profile['name'];
$user->save();
}
if ($user) {
$this->downloadAndSaveProfilePhoto($user, $profile['picture']);
$updated++;
}
}
} catch (\JsonException $e) {
\Log::error('Failed to decode profile', [
'error' => $e->getMessage(),
'relay' => $relayUrl,
'pubkey' => $message->event->pubkey,
]);
} catch (\Exception $e) {
\Log::error('Failed to download profile photo', [
'error' => $e->getMessage(),
'relay' => $relayUrl,
'pubkey' => $message->event->pubkey,
]);
}
}
}
\Log::info('Finished updating nostr profiles', [
'total_messages' => $totalMessages,
'updated_count' => $updated,
]);
} catch (\Exception $e) {
\Log::error('Failed to fetch from relays', ['error' => $e->getMessage()]);
}
}
private function downloadAndSaveProfilePhoto(User $user, string $photoUrl): void
{
try {
// Download the image from the URL
$response = Http::timeout(10)->get($photoUrl);
if (!$response->successful()) {
\Log::warning('Failed to download profile photo', [
'user_id' => $user->id,
'url' => $photoUrl,
'status' => $response->status(),
]);
return;
}
// Store the file and update the user
tap($user->profile_photo_path, function ($previous) use ($user, $response, $photoUrl) {
$extension = $this->getImageExtension($response->header('Content-Type'), $photoUrl);
$path = 'profile-photos/'.Uuid::uuid1().$extension;
Storage::disk('public')
->put(
$path,
$response->body(),
);
$user->forceFill([
'profile_photo_path' => $path,
])->save();
if ($previous) {
Storage::disk('public')->delete($previous);
}
});
\Log::info('Profile photo updated from Nostr', [
'user_id' => $user->id,
'url' => $photoUrl,
]);
} catch (\Exception $e) {
\Log::error('Failed to save profile photo', [
'user_id' => $user->id,
'url' => $photoUrl,
'error' => $e->getMessage(),
]);
}
}
private function getImageExtension(?string $contentType, string $url): string
{
// Try to get extension from content type
if ($contentType) {
$mimeMap = [
'image/jpeg' => 'jpg',
'image/jpg' => 'jpg',
'image/png' => 'png',
'image/gif' => 'gif',
'image/webp' => 'webp',
];
if (isset($mimeMap[$contentType])) {
return $mimeMap[$contentType];
}
}
// Fallback to URL extension
$pathInfo = pathinfo(parse_url($url, PHP_URL_PATH));
return $pathInfo['extension'] ?? 'jpg';
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Laravel\Horizon\Horizon;
use Laravel\Horizon\HorizonApplicationServiceProvider;
class HorizonServiceProvider extends HorizonApplicationServiceProvider
{
/**
* Bootstrap any application services.
*/
public function boot(): void
{
parent::boot();
// Horizon::routeSmsNotificationsTo('15556667777');
// Horizon::routeMailNotificationsTo('example@example.com');
// Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel');
}
/**
* Register the Horizon gate.
*
* This gate determines who can access Horizon in non-local environments.
*/
protected function gate(): void
{
Gate::define('viewHorizon', function ($user = null) {
return in_array(optional($user)->email, [
//
]);
});
}
}

View File

@@ -2,5 +2,6 @@
return [
App\Providers\AppServiceProvider::class,
App\Providers\HorizonServiceProvider::class,
App\Providers\VoltServiceProvider::class,
];

View File

@@ -14,6 +14,7 @@
"druc/laravel-langscanner": "^2.3",
"ezadr/lnurl-php": "^1.0",
"laravel/framework": "^12.0",
"laravel/horizon": "^5.40",
"laravel/nightwatch": "^1.18",
"laravel/sanctum": "^4.0",
"laravel/tinker": "^2.10.1",
@@ -36,6 +37,7 @@
"spatie/laravel-tags": "^4.10",
"staudenmeir/eloquent-has-many-deep": "^1.21",
"stefro/laravel-lang-country": "^4.1",
"swentel/nostr-php": "^1.9",
"woodsandwalker/laravel-countries": "^1.5"
},
"require-dev": {

724
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "5250639a903d48341be5195e9d652432",
"content-hash": "24839b4dce28e55155e9d485831b812c",
"packages": [
{
"name": "akuechler/laravel-geoly",
@@ -1202,6 +1202,86 @@
],
"time": "2023-10-12T05:21:21+00:00"
},
{
"name": "genkgo/php-asn1",
"version": "v2.8.0",
"source": {
"type": "git",
"url": "https://github.com/genkgo/php-asn1.git",
"reference": "4de712c68bbf51c00551cb45f55642e30fed1fdb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/genkgo/php-asn1/zipball/4de712c68bbf51c00551cb45f55642e30fed1fdb",
"reference": "4de712c68bbf51c00551cb45f55642e30fed1fdb",
"shasum": ""
},
"require": {
"php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "~2.0",
"phpunit/phpunit": "^9.0"
},
"suggest": {
"ext-bcmath": "BCmath is the fallback extension for big integer calculations",
"ext-curl": "For loading OID information from the web if they have not bee defined statically",
"ext-gmp": "GMP is the preferred extension for big integer calculations",
"phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"FG\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Frederik Bosch",
"email": "f.bosch@genkgo.nl",
"role": "Author"
},
{
"name": "Friedrich Große",
"email": "friedrich.grosse@gmail.com",
"homepage": "https://github.com/FGrosse",
"role": "Author"
},
{
"name": "All contributors",
"homepage": "https://github.com/genkgo/php-asn1/contributors"
}
],
"description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.",
"homepage": "https://github.com/FGrosse/PHPASN1",
"keywords": [
"DER",
"asn.1",
"asn1",
"ber",
"binary",
"decoding",
"encoding",
"x.509",
"x.690",
"x509",
"x690"
],
"support": {
"issues": "https://github.com/genkgo/php-asn1/issues",
"source": "https://github.com/genkgo/php-asn1/tree/v2.8.0"
},
"time": "2025-02-12T20:20:53+00:00"
},
{
"name": "graham-campbell/result-type",
"version": "v1.1.3",
@@ -2038,6 +2118,86 @@
},
"time": "2025-11-18T15:16:10+00:00"
},
{
"name": "laravel/horizon",
"version": "v5.40.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/horizon.git",
"reference": "bc15081bd94a150ca5f299e6b3a5217a05708f97"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/horizon/zipball/bc15081bd94a150ca5f299e6b3a5217a05708f97",
"reference": "bc15081bd94a150ca5f299e6b3a5217a05708f97",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-pcntl": "*",
"ext-posix": "*",
"illuminate/contracts": "^9.21|^10.0|^11.0|^12.0",
"illuminate/queue": "^9.21|^10.0|^11.0|^12.0",
"illuminate/support": "^9.21|^10.0|^11.0|^12.0",
"nesbot/carbon": "^2.17|^3.0",
"php": "^8.0",
"ramsey/uuid": "^4.0",
"symfony/console": "^6.0|^7.0",
"symfony/error-handler": "^6.0|^7.0",
"symfony/polyfill-php83": "^1.28",
"symfony/process": "^6.0|^7.0"
},
"require-dev": {
"mockery/mockery": "^1.0",
"orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
"phpstan/phpstan": "^1.10|^2.0",
"phpunit/phpunit": "^9.0|^10.4|^11.5|^12.0",
"predis/predis": "^1.1|^2.0|^3.0"
},
"suggest": {
"ext-redis": "Required to use the Redis PHP driver.",
"predis/predis": "Required when not using the Redis PHP driver (^1.1|^2.0|^3.0)."
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"Horizon": "Laravel\\Horizon\\Horizon"
},
"providers": [
"Laravel\\Horizon\\HorizonServiceProvider"
]
},
"branch-alias": {
"dev-master": "6.x-dev"
}
},
"autoload": {
"psr-4": {
"Laravel\\Horizon\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Dashboard and code-driven configuration for Laravel queues.",
"keywords": [
"laravel",
"queue"
],
"support": {
"issues": "https://github.com/laravel/horizon/issues",
"source": "https://github.com/laravel/horizon/tree/v5.40.0"
},
"time": "2025-11-11T22:41:12+00:00"
},
{
"name": "laravel/nightwatch",
"version": "v1.18.1",
@@ -3004,6 +3164,60 @@
],
"time": "2025-11-18T12:17:23+00:00"
},
{
"name": "leigh/chacha20",
"version": "0.2.0",
"source": {
"type": "git",
"url": "https://github.com/lt/PHP-ChaCha20.git",
"reference": "7aeffd53228be384b4a8986c9a8d9578acb171a4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lt/PHP-ChaCha20/zipball/7aeffd53228be384b4a8986c9a8d9578acb171a4",
"reference": "7aeffd53228be384b4a8986c9a8d9578acb171a4",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "~5.0"
},
"type": "library",
"autoload": {
"files": [
"lib/functions.php"
],
"psr-4": {
"ChaCha20\\": "lib"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Leigh",
"homepage": "https://github.com/lt"
}
],
"description": "Pure PHP implementation of the ChaCha20 encryption algorithm.",
"homepage": "https://github.com/lt/PHP-ChaCha20",
"keywords": [
"cipher",
"encryption",
"security",
"stream"
],
"support": {
"issues": "https://github.com/lt/PHP-ChaCha20/issues",
"source": "https://github.com/lt/PHP-ChaCha20/tree/0.2.0"
},
"abandoned": true,
"time": "2016-01-14T11:24:17+00:00"
},
{
"name": "livewire/flux",
"version": "v2.6.1",
@@ -4179,6 +4393,96 @@
},
"time": "2025-09-24T15:06:41+00:00"
},
{
"name": "paragonie/ecc",
"version": "v2.5.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/phpecc.git",
"reference": "d25bd2aab9b1205db1cf3aa3e83531d4549377bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/phpecc/zipball/d25bd2aab9b1205db1cf3aa3e83531d4549377bf",
"reference": "d25bd2aab9b1205db1cf3aa3e83531d4549377bf",
"shasum": ""
},
"require": {
"ext-gmp": "*",
"genkgo/php-asn1": "^2",
"paragonie/sodium_compat": "^1|^2",
"php": "^7.1||^8.0"
},
"require-dev": {
"bitcoin/bips": "dev-master",
"c2sp/wycheproof": "dev-master",
"ext-json": "*",
"phpunit/phpunit": "^6|^7|^8|^9",
"squizlabs/php_codesniffer": "^2|^3",
"symfony/yaml": "^2.6|^3.0|^4|^5|^6|^7",
"vimeo/psalm": "^2|^3|^4|^5|^6"
},
"suggest": {
"ext-openssl": "(PHP 8.1, OpenSSL 3+) Improved performance, less worries about side-channels"
},
"type": "library",
"autoload": {
"psr-4": {
"Mdanter\\Ecc\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com",
"role": "New Maintainer"
},
{
"name": "Matyas Danter",
"homepage": "http://matejdanter.com/",
"role": "Previous Author"
},
{
"name": "Thibaud Fabre",
"email": "thibaud@aztech.io",
"homepage": "http://aztech.io",
"role": "Previous Maintainer"
},
{
"name": "Thomas Kerin",
"email": "afk11@users.noreply.github.com",
"role": "Previous Maintainer"
}
],
"description": "PHP Elliptic Curve Cryptography library",
"homepage": "https://github.com/phpecc/phpecc",
"keywords": [
"Diffie",
"ECDSA",
"Hellman",
"curve",
"ecdh",
"elliptic",
"nistp192",
"nistp224",
"nistp256",
"nistp384",
"nistp521",
"phpecc",
"secp256k1",
"secp256r1"
],
"support": {
"issues": "https://github.com/paragonie/phpecc/issues",
"source": "https://github.com/paragonie/phpecc/tree/v2.5.0"
},
"time": "2025-07-19T01:25:49+00:00"
},
{
"name": "paragonie/sodium_compat",
"version": "v2.4.0",
@@ -4350,6 +4654,359 @@
],
"time": "2025-08-21T11:53:16+00:00"
},
{
"name": "phrity/comparison",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/sirn-se/phrity-comparison.git",
"reference": "aedd44d59db08de7d6c31812d1490c22aab35c92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sirn-se/phrity-comparison/zipball/aedd44d59db08de7d6c31812d1490c22aab35c92",
"reference": "aedd44d59db08de7d6c31812d1490c22aab35c92",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.0 | ^11.0 | ^12.0",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Phrity\\Comparison\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sören Jensen",
"email": "sirn@sirn.se",
"homepage": "https://phrity.sirn.se"
}
],
"description": "Interfaces and helper trait for comparing objects. Comparator for sort and filter applications.",
"homepage": "https://phrity.sirn.se/comparison",
"keywords": [
"comparable",
"comparator",
"comparison",
"equalable",
"filter",
"sort"
],
"support": {
"issues": "https://github.com/sirn-se/phrity-comparison/issues",
"source": "https://github.com/sirn-se/phrity-comparison/tree/1.4.0"
},
"time": "2025-05-26T20:12:39+00:00"
},
{
"name": "phrity/http",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/sirn-se/phrity-http.git",
"reference": "536e3e46e6220d171a59599ed1f4da9f6b6244fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sirn-se/phrity-http/zipball/536e3e46e6220d171a59599ed1f4da9f6b6244fc",
"reference": "536e3e46e6220d171a59599ed1f4da9f6b6244fc",
"shasum": ""
},
"require": {
"php": "^8.1",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.1 | ^2.0"
},
"require-dev": {
"guzzlehttp/psr7": "^2.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.0 | ^11.0 | ^12.0",
"robiningelbrecht/phpunit-coverage-tools": "^1.9",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Phrity\\Http\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sören Jensen",
"email": "sirn@sirn.se",
"homepage": "https://phrity.sirn.se"
}
],
"description": "Utilities and interfaces for handling HTTP.",
"homepage": "https://phrity.sirn.se/http",
"keywords": [
"HTTP Factories",
"http",
"psr-17"
],
"support": {
"issues": "https://github.com/sirn-se/phrity-http/issues",
"source": "https://github.com/sirn-se/phrity-http/tree/1.0.0"
},
"time": "2025-09-07T17:04:26+00:00"
},
{
"name": "phrity/net-stream",
"version": "2.3.1",
"source": {
"type": "git",
"url": "https://github.com/sirn-se/phrity-net-stream.git",
"reference": "c621bb3108a5a02bba64df2e5f0cd7ada02665b5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sirn-se/phrity-net-stream/zipball/c621bb3108a5a02bba64df2e5f0cd7ada02665b5",
"reference": "c621bb3108a5a02bba64df2e5f0cd7ada02665b5",
"shasum": ""
},
"require": {
"php": "^8.1",
"phrity/util-errorhandler": "^1.1",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.1 | ^2.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.0 | ^11.0 | ^12.0",
"phrity/net-uri": "^2.0",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Phrity\\Net\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sören Jensen",
"email": "sirn@sirn.se",
"homepage": "https://phrity.sirn.se"
}
],
"description": "Socket stream classes implementing PSR-7 Stream and PSR-17 StreamFactory",
"homepage": "https://phrity.sirn.se/net-stream",
"keywords": [
"Socket",
"client",
"psr-17",
"psr-7",
"server",
"stream",
"stream factory"
],
"support": {
"issues": "https://github.com/sirn-se/phrity-net-stream/issues",
"source": "https://github.com/sirn-se/phrity-net-stream/tree/2.3.1"
},
"time": "2025-08-08T09:51:04+00:00"
},
{
"name": "phrity/net-uri",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/sirn-se/phrity-net-uri.git",
"reference": "08de4cf07e439c4708f572249659f09198ac99f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sirn-se/phrity-net-uri/zipball/08de4cf07e439c4708f572249659f09198ac99f0",
"reference": "08de4cf07e439c4708f572249659f09198ac99f0",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "^8.1",
"phrity/comparison": "^1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.1 | ^2.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.0 | ^11.0 | ^12.0",
"phrity/util-errorhandler": "^1.1",
"squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-intl": "Enables IDN conversion for non-ASCII domains"
},
"type": "library",
"autoload": {
"psr-4": {
"Phrity\\Net\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sören Jensen",
"email": "sirn@sirn.se",
"homepage": "https://phrity.sirn.se"
}
],
"description": "PSR-7 Uri and PSR-17 UriFactory implementation",
"homepage": "https://phrity.sirn.se/net-uri",
"keywords": [
"psr-17",
"psr-7",
"uri",
"uri factory"
],
"support": {
"issues": "https://github.com/sirn-se/phrity-net-uri/issues",
"source": "https://github.com/sirn-se/phrity-net-uri/tree/2.2.0"
},
"time": "2025-05-25T13:05:13+00:00"
},
{
"name": "phrity/util-errorhandler",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/sirn-se/phrity-util-errorhandler.git",
"reference": "9825f15ef9b4a93252ce53ca8962278832d834da"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sirn-se/phrity-util-errorhandler/zipball/9825f15ef9b4a93252ce53ca8962278832d834da",
"reference": "9825f15ef9b4a93252ce53ca8962278832d834da",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.0 | ^11.0 | ^12.0",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Phrity\\Util\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sören Jensen",
"email": "sirn@sirn.se",
"homepage": "https://phrity.sirn.se"
}
],
"description": "Inline error handler; catch and resolve errors for code block.",
"homepage": "https://phrity.sirn.se/util-errorhandler",
"keywords": [
"error",
"warning"
],
"support": {
"issues": "https://github.com/sirn-se/phrity-util-errorhandler/issues",
"source": "https://github.com/sirn-se/phrity-util-errorhandler/tree/1.2.1"
},
"time": "2025-08-08T09:48:45+00:00"
},
{
"name": "phrity/websocket",
"version": "3.6.0",
"source": {
"type": "git",
"url": "https://github.com/sirn-se/websocket-php.git",
"reference": "3f16b2564a230bbce716cccaff2f6156a60a8798"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sirn-se/websocket-php/zipball/3f16b2564a230bbce716cccaff2f6156a60a8798",
"reference": "3f16b2564a230bbce716cccaff2f6156a60a8798",
"shasum": ""
},
"require": {
"php": "^8.1",
"phrity/http": "^1.0",
"phrity/net-stream": "^2.3",
"phrity/net-uri": "^2.1",
"psr/http-message": "^1.1 | ^2.0",
"psr/log": "^1.0 | ^2.0 | ^3.0"
},
"require-dev": {
"guzzlehttp/psr7": "^2.0",
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.0 | ^11.0 | ^12.0",
"phrity/logger-console": "^1.0",
"phrity/net-mock": "^2.3",
"phrity/util-errorhandler": "^1.1",
"robiningelbrecht/phpunit-coverage-tools": "^1.9",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"autoload": {
"psr-4": {
"WebSocket\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"ISC"
],
"authors": [
{
"name": "Fredrik Liljegren"
},
{
"name": "Sören Jensen",
"email": "sirn@sirn.se",
"homepage": "https://phrity.sirn.se"
}
],
"description": "WebSocket client and server",
"homepage": "https://phrity.sirn.se/websocket",
"keywords": [
"client",
"server",
"websocket"
],
"support": {
"issues": "https://github.com/sirn-se/websocket-php/issues",
"source": "https://github.com/sirn-se/websocket-php/tree/3.6.0"
},
"time": "2025-09-08T16:21:41+00:00"
},
{
"name": "psr/clock",
"version": "1.0.0",
@@ -6800,6 +7457,71 @@
},
"time": "2025-11-13T06:15:42+00:00"
},
{
"name": "swentel/nostr-php",
"version": "1.9.2",
"source": {
"type": "git",
"url": "https://github.com/nostrver-se/nostr-php.git",
"reference": "8fb8337354b2e9d48a901276c7814d7fa7b25653"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nostrver-se/nostr-php/zipball/8fb8337354b2e9d48a901276c7814d7fa7b25653",
"reference": "8fb8337354b2e9d48a901276c7814d7fa7b25653",
"shasum": ""
},
"require": {
"bitwasp/bech32": "^0.0.1",
"ext-gmp": "*",
"ext-xml": "*",
"leigh/chacha20": "^0.2.0",
"paragonie/ecc": "^2.4",
"php": ">=8.1 <8.5",
"phrity/websocket": "^3.0",
"simplito/elliptic-php": "^1.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.51",
"phpunit/phpunit": "^10.5"
},
"type": "library",
"autoload": {
"psr-4": {
"swentel\\nostr\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sebastian Hagens",
"email": "info@sebastix.nl",
"homepage": "https://sebastix.nl",
"role": "Developer & maintainer"
},
{
"name": "Kristof De Jaeger",
"homepage": "https://realize.be",
"role": "Original author"
}
],
"description": "Nostr helper library for PHP",
"homepage": "https://nostr-php.dev",
"keywords": [
"library",
"nostr"
],
"support": {
"chat": "https://t.me/nostr_php",
"issue": "https://github.com/swentel/nostr-php/issues",
"issues": "https://github.com/nostrver-se/nostr-php/issues",
"source": "https://github.com/nostrver-se/nostr-php/tree/1.9.2"
},
"time": "2025-06-04T14:51:06+00:00"
},
{
"name": "symfony/clock",
"version": "v7.3.0",

230
config/horizon.php Normal file
View File

@@ -0,0 +1,230 @@
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Horizon Name
|--------------------------------------------------------------------------
|
| This name appears in notifications and in the Horizon UI. Unique names
| can be useful while running multiple instances of Horizon within an
| application, allowing you to identify the Horizon you're viewing.
|
*/
'name' => env('HORIZON_NAME'),
/*
|--------------------------------------------------------------------------
| Horizon Domain
|--------------------------------------------------------------------------
|
| This is the subdomain where Horizon will be accessible from. If this
| setting is null, Horizon will reside under the same domain as the
| application. Otherwise, this value will serve as the subdomain.
|
*/
'domain' => env('HORIZON_DOMAIN'),
/*
|--------------------------------------------------------------------------
| Horizon Path
|--------------------------------------------------------------------------
|
| This is the URI path where Horizon will be accessible from. Feel free
| to change this path to anything you like. Note that the URI will not
| affect the paths of its internal API that aren't exposed to users.
|
*/
'path' => env('HORIZON_PATH', 'horizon'),
/*
|--------------------------------------------------------------------------
| Horizon Redis Connection
|--------------------------------------------------------------------------
|
| This is the name of the Redis connection where Horizon will store the
| meta information required for it to function. It includes the list
| of supervisors, failed jobs, job metrics, and other information.
|
*/
'use' => 'default',
/*
|--------------------------------------------------------------------------
| Horizon Redis Prefix
|--------------------------------------------------------------------------
|
| This prefix will be used when storing all Horizon data in Redis. You
| may modify the prefix when you are running multiple installations
| of Horizon on the same server so that they don't have problems.
|
*/
'prefix' => env(
'HORIZON_PREFIX',
Str::slug(env('APP_NAME', 'laravel'), '_').'_horizon:'
),
/*
|--------------------------------------------------------------------------
| Horizon Route Middleware
|--------------------------------------------------------------------------
|
| These middleware will get attached onto each Horizon route, giving you
| the chance to add your own middleware to this list or change any of
| the existing middleware. Or, you can simply stick with this list.
|
*/
'middleware' => ['web'],
/*
|--------------------------------------------------------------------------
| Queue Wait Time Thresholds
|--------------------------------------------------------------------------
|
| This option allows you to configure when the LongWaitDetected event
| will be fired. Every connection / queue combination may have its
| own, unique threshold (in seconds) before this event is fired.
|
*/
'waits' => [
'redis:default' => 60,
],
/*
|--------------------------------------------------------------------------
| Job Trimming Times
|--------------------------------------------------------------------------
|
| Here you can configure for how long (in minutes) you desire Horizon to
| persist the recent and failed jobs. Typically, recent jobs are kept
| for one hour while all failed jobs are stored for an entire week.
|
*/
'trim' => [
'recent' => 60,
'pending' => 60,
'completed' => 60,
'recent_failed' => 10080,
'failed' => 10080,
'monitored' => 10080,
],
/*
|--------------------------------------------------------------------------
| Silenced Jobs
|--------------------------------------------------------------------------
|
| Silencing a job will instruct Horizon to not place the job in the list
| of completed jobs within the Horizon dashboard. This setting may be
| used to fully remove any noisy jobs from the completed jobs list.
|
*/
'silenced' => [
// App\Jobs\ExampleJob::class,
],
'silenced_tags' => [
// 'notifications',
],
/*
|--------------------------------------------------------------------------
| Metrics
|--------------------------------------------------------------------------
|
| Here you can configure how many snapshots should be kept to display in
| the metrics graph. This will get used in combination with Horizon's
| `horizon:snapshot` schedule to define how long to retain metrics.
|
*/
'metrics' => [
'trim_snapshots' => [
'job' => 24,
'queue' => 24,
],
],
/*
|--------------------------------------------------------------------------
| Fast Termination
|--------------------------------------------------------------------------
|
| When this option is enabled, Horizon's "terminate" command will not
| wait on all of the workers to terminate unless the --wait option
| is provided. Fast termination can shorten deployment delay by
| allowing a new instance of Horizon to start while the last
| instance will continue to terminate each of its workers.
|
*/
'fast_termination' => false,
/*
|--------------------------------------------------------------------------
| Memory Limit (MB)
|--------------------------------------------------------------------------
|
| This value describes the maximum amount of memory the Horizon master
| supervisor may consume before it is terminated and restarted. For
| configuring these limits on your workers, see the next section.
|
*/
'memory_limit' => 64,
/*
|--------------------------------------------------------------------------
| Queue Worker Configuration
|--------------------------------------------------------------------------
|
| Here you may define the queue worker settings used by your application
| in all environments. These supervisors and settings handle all your
| queued jobs and will be provisioned by Horizon during deployment.
|
*/
'defaults' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'auto',
'autoScalingStrategy' => 'time',
'maxProcesses' => 1,
'maxTime' => 0,
'maxJobs' => 0,
'memory' => 128,
'tries' => 1,
'timeout' => 60,
'nice' => 0,
],
],
'environments' => [
'production' => [
'supervisor-1' => [
'maxProcesses' => 10,
'balanceMaxShift' => 1,
'balanceCooldown' => 3,
],
],
'local' => [
'supervisor-1' => [
'maxProcesses' => 3,
],
],
],
];

View File

@@ -115,6 +115,7 @@
"Edit City": "",
"Edit Venue": "",
"Einführung": "",
"Einundzwanzig Portal": "",
"Email": "E-Mail",
"Email Address": "E-Mail-Adresse",
"Email address": "E-Mail-Adresse",
@@ -457,6 +458,5 @@
"Öffnen/RSVP": "",
"Über den Dozenten": "",
"Über den Kurs": "",
"Über uns": "",
"Einundzwanzig Portal": ""
"Über uns": ""
}

View File

@@ -115,6 +115,7 @@
"Edit City": "Edit City",
"Edit Venue": "Edit Venue",
"Einführung": "Introduction",
"Einundzwanzig Portal": "Twenty One Portal",
"Email": "Email",
"Email Address": "Email Address",
"Email address": "Email address",
@@ -457,6 +458,5 @@
"Öffnen/RSVP": "Open/RSVP",
"Über den Dozenten": "About the lecturer",
"Über den Kurs": "About the course",
"Über uns": "About us",
"Einundzwanzig Portal": "Twenty One Portal"
"Über uns": "About us"
}

View File

@@ -115,6 +115,7 @@
"Edit City": "Editar ciudad",
"Edit Venue": "Editar lugar",
"Einführung": "Introducción",
"Einundzwanzig Portal": "Portal Veintiuno",
"Email": "Correo electrónico",
"Email Address": "Correo electrónico",
"Email address": "Correo electrónico",
@@ -456,6 +457,5 @@
"Öffnen/RSVP": "Abrir/RSVP",
"Über den Dozenten": "Sobre el profesor",
"Über den Kurs": "Sobre el curso",
"Über uns": "Sobre nosotros",
"Einundzwanzig Portal": "Portal Veintiuno"
"Über uns": "Sobre nosotros"
}

View File

@@ -1,379 +1,456 @@
{
"Login - Bitcoin Meetups": "Bejelentkezés - Bitcoin Meetupok",
"Logge dich ein, um auf dein Bitcoin Meetup Konto zuzugreifen und an der Community teilzunehmen.": "Jelentkezz be a Bitcoin Meetup fiókodba, és csatlakozz a közösséghez.",
"Dashboard - Bitcoin Meetups": "Irányítópult - Bitcoin Meetupok",
"Verwalte deine Bitcoin Meetups, Events und Einstellungen in deinem persönlichen Dashboard.": "Kezeld Bitcoin meetupjaidat, eseményeidet és beállításaidat személyes irányítópultodon.",
"Willkommen bei Bitcoin Meetups": "Üdvözlünk a Bitcoin Meetupoknál",
"Entdecke die Bitcoin Community in deiner Nähe. Finde lokale Meetups und vernetze dich mit Gleichgesinnten.": "Fedezd fel a Bitcoin közösséget a közeledben. Találj helyi meetupokat és kapcsolódj hasonló gondolkodásúakhoz.",
"Follow the Rabbit - Bitcoin Journey": "Kövesd a Nyulat - Bitcoin Utazás",
"Starte deine Bitcoin-Reise und entdecke spannende Inhalte rund um Bitcoin und Blockchain.": "Kezdd el Bitcoin utazásodat és fedezz fel izgalmas tartalmakat a Bitcoinról és a blockchainről.",
"Neue Stadt hinzufügen - Bitcoin Meetups": "Új város hozzáadása - Bitcoin Meetupok",
"Füge eine neue Stadt hinzu, um Bitcoin Meetups in deiner Region zu organisieren.": "Adj hozzá egy új várost, hogy Bitcoin meetupokat szervezhess a régiódban.",
"Stadt bearbeiten - Bitcoin Meetups": "Város szerkesztése - Bitcoin Meetupok",
"Aktualisiere die Informationen für Bitcoin Meetup Standorte in deiner Stadt.": "Frissítsd a Bitcoin meetup helyszínek információit a városodban.",
"Städteübersicht - Bitcoin Meetups": "Városok áttekintése - Bitcoin Meetupok",
"Durchsuche alle Städte mit aktiven Bitcoin Meetups und finde Events in deiner Nähe.": "Böngészd az összes várost aktív Bitcoin meetupokkal és találj eseményeket a közeledben.",
"Neuen Kurs erstellen - Bitcoin Education": "Új kurzus létrehozása - Bitcoin Oktatás",
"Erstelle einen neuen Bitcoin-Bildungskurs und teile dein Wissen mit der Community.": "Hozz létre egy új Bitcoin oktatási kurzust és oszd meg tudásodat a közösséggel.",
"Kursevents bearbeiten - Bitcoin Education": "Kurzusesemények szerkesztése - Bitcoin Oktatás",
"Verwalte die Termine und Details deiner Bitcoin-Bildungsveranstaltungen.": "Kezeld Bitcoin oktatási rendezvényeid időpontjait és részleteit.",
"Kurs bearbeiten - Bitcoin Education": "Kurzus szerkesztése - Bitcoin Oktatás",
"Aktualisiere die Inhalte und Informationen deines Bitcoin-Bildungskurses.": "Frissítsd Bitcoin oktatási kurzusod tartalmát és információit.",
"Bitcoin Kurse - Übersicht": "Bitcoin Kurzusok - Áttekintés",
"Entdecke unsere vielfältigen Bitcoin-Bildungsangebote und Workshops.": "Fedezd fel változatos Bitcoin oktatási kínálatunkat és workshopjainkat.",
"Bitcoin Bildung & Kurse": "Bitcoin Oktatás & Kurzusok",
"Lerne alles über Bitcoin - von den Grundlagen bis zu fortgeschrittenen Themen.": "Tanulj mindent a Bitcoinról - az alapoktól a haladó témákig.",
"Dozent werden - Bitcoin Education": "Oktató leszek - Bitcoin Oktatás",
"Werde Bitcoin-Dozent und teile dein Expertenwissen mit der Community.": "Válj Bitcoin oktatóvá és oszd meg szakértői tudásodat a közösséggel.",
"Dozentenprofil bearbeiten": "Oktatói profil szerkesztése",
"Aktualisiere dein Profil als Bitcoin-Dozent und deine Kursangebote.": "Frissítsd Bitcoin oktatói profilodat és kurzuskínálatodat.",
"Bitcoin Dozenten - Übersicht": "Bitcoin Oktatók - Áttekintés",
"Lerne unsere erfahrenen Bitcoin-Dozenten und ihre Expertise kennen.": "Ismerd meg tapasztalt Bitcoin oktatóinkat és szakértelmüket.",
"Bitcoin Meetup Events verwalten": "Bitcoin Meetup események kezelése",
"Erstelle und bearbeite Bitcoin Meetup Events für deine Community.": "Hozz létre és szerkessz Bitcoin meetup eseményeket a közösséged számára.",
"Meetup bearbeiten - Bitcoin Events": "Meetup szerkesztése - Bitcoin Események",
"Aktualisiere die Details und Informationen deines Bitcoin Meetups.": "Frissítsd Bitcoin meetupod részleteit és információit.",
"Bitcoin Meetups - Alle Events": "Bitcoin Meetupok - Minden esemény",
"Finde alle aktuellen Bitcoin Meetups und Events in deiner Region.": "Találd meg az összes aktuális Bitcoin meetupot és eseményt a régiódban.",
"Bitcoin Meetups - Community Events": "Bitcoin Meetupok - Közösségi események",
"Entdecke Bitcoin Community Events und vernetze dich mit Gleichgesinnten.": "Fedezd fel a Bitcoin közösségi eseményeket és kapcsolódj hasonló gondolkodásúakhoz.",
"Bitcoin Event Details": "Bitcoin esemény részletei",
"Alle Informationen zum ausgewählten Bitcoin Meetup Event.": "Minden információ a kiválasztott Bitcoin meetup eseményről.",
"Bitcoin Meetups Karte": "Bitcoin Meetupok térkép",
"Finde Bitcoin Meetups in deiner Nähe mit unserer interaktiven Karte.": "Találj Bitcoin meetupokat a közeledben interaktív térképünkkel.",
"Erscheinungsbild - Einstellungen": "Megjelenés - Beállítások",
"Passe das Erscheinungsbild deines Bitcoin Meetup Profils an.": "Szabd testre Bitcoin meetup profilod megjelenését.",
"Konto löschen - Bitcoin Meetups": "Fiók törlése - Bitcoin Meetupok",
"Informationen zum Löschen deines Bitcoin Meetup Kontos.": "Információk Bitcoin meetup fiókod törléséről.",
"Passwort ändern - Bitcoin Meetups": "Jelszó módosítása - Bitcoin Meetupok",
"Ändere dein Passwort für mehr Sicherheit deines Bitcoin Meetup Kontos.": "Változtasd meg jelszavadat Bitcoin meetup fiókod nagyobb biztonsága érdekében.",
"Profil bearbeiten - Bitcoin Meetups": "Profil szerkesztése - Bitcoin Meetupok",
"Aktualisiere deine persönlichen Informationen und Profileinstellungen.": "Frissítsd személyes adataidat és profilbeállításaidat.",
"Neuen Veranstaltungsort erstellen": "Új helyszín létrehozása",
"Füge einen neuen Ort für Bitcoin Meetups und Events hinzu.": "Adj hozzá új helyszínt Bitcoin meetupokhoz és eseményekhez.",
"Veranstaltungsort bearbeiten": "Helyszín szerkesztése",
"Aktualisiere die Details eines Bitcoin Meetup Veranstaltungsortes.": "Frissítsd egy Bitcoin meetup helyszín részleteit.",
"Veranstaltungsorte - Übersicht": "Helyszínek - Áttekintés",
"Finde alle Veranstaltungsorte für Bitcoin Meetups und Events.": "Találd meg az összes helyszínt Bitcoin meetupokhoz és eseményekhez.",
"Willkommen": "Üdvözlünk",
"Toximalistisches Infotainment für bullische Bitcoiner.": "Toximalista infotainment bullish bitcoinerek számára.",
"no location set": "nincs helyszín beállítva",
"BooksForPlebs": "KönyvekPlebseknek",
"Lokale Buchausleihe für Bitcoin-Meetups.": "Helyi könyvkölcsönzés Bitcoin meetupokhoz.",
"Bitcoin - Rabbit Hole": "Bitcoin - Nyúlüreg",
"Dies ist ein großartiger Überblick über die Bitcoin-Kaninchenhöhle mit Zugängen zu Bereichen, die Bitcoin umfasst. Jedes Thema hat seine eigene Kaninchenhöhle, die durch Infografiken auf einfache und verständliche Weise visualisiert wird, mit QR-Codes, die zu erklärenden Videos und Artikeln führen. Viel Spaß auf Ihrer Entdeckungsreise!": "Ez egy nagyszerű áttekintés a Bitcoin nyúlüregről, hozzáféréssel a Bitcoin által érintett területekhez. Minden témának saját nyúlürege van, amely infografikákkal egyszerű és érthető módon van megjelenítve, QR-kódokkal, amelyek magyarázó videókhoz és cikkekhez vezetnek. Jó szórakozást a felfedező utadon!",
"Saved.": "Mentve.",
"Einundzwanzig Portal": "Huszonegy Portál",
"Sprache wählen": "Nyelv választása",
"Dashboard": "Irányítópult",
"Search": "Keresés",
"Repository": "Adattár",
"Documentation": "Dokumentáció",
"Settings": "Beállítások",
"Log Out": "Kijelentkezés",
"Platform": "Platform",
"Success!": "Sikeres!",
"Copied into clipboard": "Vágólapra másolva",
"App": "Alkalmazás",
"Meetups": "Meetupok",
"Karte": "Térkép",
"Kurse": "Kurzusok",
"Dozenten": "Oktatók",
"Diverses": "Egyebek",
"Orte/Gebiete": "Helyek/Területek",
"Städte/Gebiete": "Városok/Területek",
"Veranstaltungsorte": "Helyszínek",
"Sprache wechseln": "Nyelv váltása",
"Nächster Termin": "Következő időpont",
"Zusagen": "Részvétel",
"Vielleicht": "Talán",
"Telegram": "Telegram",
"Website": "Weboldal",
"Twitter": "Twitter",
"Matrix": "Matrix",
"Nostr": "Nostr",
"Simplex": "Simplex",
"Signal": "Signal",
"Details": "Részletek",
"Profile": "Profil",
"Password": "Jelszó",
"Appearance": "Megjelenés",
"Unauthorized": "Jogosulatlan",
"Payment Required": "Fizetés szükséges",
"Forbidden": "Tiltott",
"Not Found": "Nem található",
"Page Expired": "Oldal lejárt",
"Too Many Requests": "Túl sok kérés",
"Server Error": "Szerverhiba",
"Service Unavailable": "Szolgáltatás nem érhető el",
"Confirm password": "Jelszó megerősítése",
"This is a secure area of the application. Please confirm your password before continuing.": "Ez az alkalmazás biztonságos területe. Kérjük, erősítsd meg jelszavadat a folytatás előtt.",
"Confirm": "Megerősítés",
"A reset link will be sent if the account exists.": "Visszaállítási linket küldünk, ha a fiók létezik.",
"Forgot password": "Elfelejtett jelszó",
"Enter your email to receive a password reset link": "Add meg email címedet, hogy jelszó-visszaállítási linket kapj",
"Email Address": "Email cím",
"Email password reset link": "Jelszó-visszaállítási link emailben",
"Or, return to": "Vagy térj vissza",
"log in": "bejelentkezés",
"Willkommen zurück": "Üdv újra",
"Log in mit Nostr": "Bejelentkezés Nostrral",
"Copy": "Másolás",
"Click to connect": "Kattints a kapcsolódáshoz",
"Create an account": "Fiók létrehozása",
"Enter your details below to create your account": "Add meg adataidat alább fiókod létrehozásához",
"Name": "Név",
"Full name": "Teljes név",
"Email address": "Email cím",
"Create account": "Fiók létrehozása",
"Already have an account?": "Már van fiókod?",
"Log in": "Bejelentkezés",
"Reset password": "Jelszó visszaállítása",
"Please enter your new password below": "Kérjük, add meg új jelszavadat alább",
"Email": "Email",
"Please verify your email address by clicking on the link we just emailed to you.": "Kérjük, erősítsd meg email címedet az általunk küldött linkre kattintva.",
"A new verification link has been sent to the email address you provided during registration.": "Új megerősítő linket küldtünk a regisztráció során megadott email címre.",
"Resend verification email": "Megerősítő email újraküldése",
"Log out": "Kijelentkezés",
"City successfully created!": "Város sikeresen létrehozva!",
"Create City": "Város létrehozása",
"Basic Information": "Alapinformációk",
"Country": "Ország",
"Select a country": "Válassz országot",
"Coordinates": "Koordináták",
"Latitude": "Szélesség",
"Longitude": "Hosszúság",
"Demographics": "Demográfia",
"Population": "Népesség",
"Population Date": "Népesség dátuma",
"Cancel": "Mégse",
"City successfully updated!": "Város sikeresen frissítve!",
"Edit City": "Város szerkesztése",
"Update City": "Város frissítése",
"Cities": "Városok",
"Search cities...": "Városok keresése...",
"Created By": "Létrehozta",
"(and :count more error)": "(és még :count hiba)",
"(and :count more errors)": "(és még :count hiba)|(és még :count hiba)|(és még :count hiba)",
"2FA Recovery Codes": "2FA helyreállítási kódok",
"A decryption key is required.": "Dekódoló kulcs szükséges.",
"A new verification link has been sent to the email address you provided during registration.": "Egy új ellenőrző linket küldtek a regisztráció során megadott e-mail címre.",
"A new verification link has been sent to your email address.": "Új ellenőrző linket küldtünk az e-mail címére.",
"A reset link will be sent if the account exists.": "Ha a fiók létezik, akkor visszaállítást küldünk.",
"Abbrechen": "Mégse",
"Absagen": "Lemondás",
"Actions": "Műveletek",
"Edit": "Szerkesztés",
"Wähle dein Land...": "Válaszd ki országod...",
"Land": "Ország",
"Suche dein Land...": "Keresd országod...",
"Aktionen": "Műveletek",
"Aktiv": "Aktív",
"Aktualisiere dein Profil als Bitcoin-Dozent und deine Kursangebote.": "Frissítsd Bitcoin oktatói profilodat és kurzuskínálatodat.",
"Aktualisiere deine persönlichen Informationen und Profileinstellungen.": "Frissítsd személyes adataidat és profilbeállításaidat.",
"Aktualisiere die Details eines Bitcoin Meetup Veranstaltungsortes.": "Frissítsd egy Bitcoin meetup helyszín részleteit.",
"Aktualisiere die Details und Informationen deines Bitcoin Meetups.": "Frissítsd Bitcoin meetupod részleteit és információit.",
"Aktualisiere die Informationen für Bitcoin Meetup Standorte in deiner Stadt.": "Frissítsd a Bitcoin meetup helyszínek információit a városodban.",
"Aktualisiere die Inhalte und Informationen deines Bitcoin-Bildungskurses.": "Frissítsd Bitcoin oktatási kurzusod tartalmát és információit.",
"Aktualisiert am": "Frissítve",
"All rights reserved.": "Minden jog fenntartva.",
"Alle Informationen zum ausgewählten Bitcoin Meetup Event.": "Minden információ a kiválasztott Bitcoin meetup eseményről.",
"Alle Meetups anzeigen": "Minden meetup megjelenítése",
"Already have an account?": "Már van fiókja?",
"An welchem Tag beginnt das Event?": "Melyik napon kezdődik az esemény?",
"An welchem Tag endet das Event?": "Melyik napon ér véget az esemény?",
"An welchem Tag findet das Event statt?": "Melyik napon lesz az esemény?",
"Anmeldungen": "Regisztrációk",
"App": "Alkalmazás",
"Appearance": "Megjelenés",
"Are you sure you want to delete your account?": "Biztos benne, hogy törölni akarja fiókját?",
"Auf Karte sichtbar": "Látható a térképen",
"aus deinen Meetups entfernen?": "eltávolítani meetupjaid közül?",
"Ausführliche Beschreibung des Kurses": "A kurzus részletes leírása",
"Ausführliche Beschreibung und Biografie": "Részletes leírás és életrajz",
"Authentication Code": "Hitelesítési kód",
"Back": "Vissza",
"Basic Information": "Alapinformációk",
"Bearbeiten": "Szerkesztés",
"Beschreibe das Event...": "Írd le az eseményt...",
"Beschreibung": "Leírás",
"Bist du sicher, dass du dieses Event löschen möchtest?": "Biztos vagy benne, hogy törölni szeretnéd ezt az eseményt?",
"Bitcoin - Rabbit Hole": "Bitcoin - Nyúlüreg",
"Bitcoin Bildung & Kurse": "Bitcoin Oktatás & Kurzusok",
"Bitcoin Dozenten - Übersicht": "Bitcoin Oktatók - Áttekintés",
"Bitcoin Event Details": "Bitcoin esemény részletei",
"Bitcoin Kurse - Übersicht": "Bitcoin Kurzusok - Áttekintés",
"Bitcoin Meetup Events verwalten": "Bitcoin Meetup események kezelése",
"Bitcoin Meetups": "Bitcoin Meetupok",
"Bitcoin Meetups - Alle Events": "Bitcoin Meetupok - Minden esemény",
"Bitcoin Meetups - Community Events": "Bitcoin Meetupok - Közösségi események",
"Bitcoin Meetups Karte": "Bitcoin Meetupok térkép",
"BooksForPlebs": "KönyvekPlebseknek",
"Breitengrad": "Szélesség",
"Cancel": "Mégsem",
"Cities": "Városok",
"City": "Város",
"City successfully created!": "Város sikeresen létrehozva!",
"City successfully updated!": "Város sikeresen frissítve!",
"Click here to re-send the verification email.": "Kattintson ide az ellenőrző e-mail újbóli elküldéséhez.",
"Click to connect": "Kattints a kapcsolódáshoz",
"Close": "Közeli",
"Confirm": "Megerősítés",
"Confirm password": "Erősítse meg a jelszót",
"Confirm Password": "Jelszó megerősítése",
"Continue": "Folytatódik",
"Coordinates": "Koordináták",
"Copied into clipboard": "Vágólapra másolva",
"Copy": "Másolás",
"Country": "Ország",
"Create account": "Hozzon létre fiókot",
"Create an account": "Hozzon létre egy fiókot",
"Create City": "Város létrehozása",
"Create Venue": "Helyszín létrehozása",
"Created By": "Létrehozta",
"Current password": "Jelenlegi jelszó",
"Dark": "Sötét",
"Dashboard": "Műszerfal",
"Dashboard - Bitcoin Meetups": "Irányítópult - Bitcoin Meetupok",
"Datum": "Dátum",
"Dein Name": "Neved",
"Delete account": "Fiók törlése",
"Delete your account and all of its resources": "Törölje fiókját és minden erőforrását",
"Demographics": "Demográfia",
"Der Anzeigename für diesen Kurs": "A kurzus megjelenítendő neve",
"Der Anzeigename für dieses Meetup": "A meetup megjelenítendő neve",
"Der Dozent, der diesen Kurs leitet": "Az oktató, aki ezt a kurzust vezeti",
"Details": "Részletek",
"Details über das Event": "Az esemény részletei",
"Details/Anmelden": "Részletek/Regisztráció",
"Die Endzeit muss nach der Startzeit liegen.": "A befejezési időnek a kezdési idő után kell lennie.",
"Die nächstgrößte Stadt oder Ort": "A legközelebbi nagyobb város vagy hely",
"Dies ist ein großartiger Überblick über die Bitcoin-Kaninchenhöhle mit Zugängen zu Bereichen, die Bitcoin umfasst. Jedes Thema hat seine eigene Kaninchenhöhle, die durch Infografiken auf einfache und verständliche Weise visualisiert wird, mit QR-Codes, die zu erklärenden Videos und Artikeln führen. Viel Spaß auf Ihrer Entdeckungsreise!": "Ez egy nagyszerű áttekintés a Bitcoin nyúlüregről, hozzáféréssel a Bitcoin által érintett területekhez. Minden témának saját nyúlürege van, amely infografikákkal egyszerű és érthető módon van megjelenítve, QR-kódokkal, amelyek magyarázó videókhoz és cikkekhez vezetnek. Jó szórakozást a felfedező utadon!",
"Disable 2FA": "Tiltsa le a 2FA -t",
"Disabled": "Fogyatékkal élők",
"Diverses": "Egyebek",
"Documentation": "Dokumentáció",
"Don't have an account?": "Nincs fiókja?",
"Dozent": "Oktató",
"Dozent aktualisieren": "Oktató frissítése",
"Dozent auswählen": "Oktató kiválasztása",
"Dozent bearbeiten": "Oktató szerkesztése",
"Dozent erfolgreich aktualisiert!": "Oktató sikeresen frissítve!",
"Dozent erfolgreich erstellt!": "Oktató sikeresen létrehozva!",
"Dozent werden - Bitcoin Education": "Oktató leszek - Bitcoin Oktatás",
"Dozenten": "Oktatók",
"Dozenten anlegen": "Oktató létrehozása",
"Dozenten erstellen": "Oktató létrehozása",
"Dozentenprofil bearbeiten": "Oktatói profil szerkesztése",
"Du bist nicht eingloggt und musst deshalb den Namen selbst eintippen.": "Nem vagy bejelentkezve, ezért be kell írnod a nevedet.",
"Du kannst es jederzeit wieder hinzufügen.": "Bármikor újra hozzáadhatod.",
"Durchsuche alle Städte mit aktiven Bitcoin Meetups und finde Events in deiner Nähe.": "Böngészd az összes várost aktív Bitcoin meetupokkal és találj eseményeket a közeledben.",
"Each recovery code can be used once to access your account and will be removed after use. If you need more, click Regenerate Codes above.": "Minden helyreállítási kód egyszer használható a fiókjához való hozzáféréshez, és használat után eltávolítható. Ha még többre van szüksége, kattintson a fenti Regenerate kódokra.",
"Edit": "Szerkesztés",
"Edit City": "Város szerkesztése",
"Edit Venue": "Helyszín szerkesztése",
"Einführung": "Bevezetés",
"Einundzwanzig Portal": "Huszonegy Portál",
"Email": "E-mail",
"Email Address": "E-Mail Cím",
"Email address": "E -mail cím",
"Email password reset link": "E -mail jelszó -visszaállítás link",
"Enable 2FA": "Engedélyezze a 2FA -t",
"Enable Two-Factor Authentication": "Engedélyezze a két tényezős hitelesítést",
"Enabled": "Engedélyezve",
"Encrypted environment file already exists.": "A titkosított környezetfájl már létezik.",
"Encrypted environment file not found.": "A titkosított környezetfájl nem található.",
"Enddatum": "Befejezés dátuma",
"Endzeit": "Befejezési idő",
"Ensure your account is using a long, random password to stay secure": "Győződjön meg arról, hogy fiókja hosszú, véletlenszerű jelszót használ, hogy biztonságban maradjon",
"Entdecke Bitcoin Community Events und vernetze dich mit Gleichgesinnten.": "Fedezd fel a Bitcoin közösségi eseményeket és kapcsolódj hasonló gondolkodásúakhoz.",
"Entdecke die Bitcoin Community in deiner Nähe. Finde lokale Meetups und vernetze dich mit Gleichgesinnten.": "Fedezd fel a Bitcoin közösséget a közeledben. Találj helyi meetupokat és kapcsolódj hasonló gondolkodásúakhoz.",
"Entdecke unsere vielfältigen Bitcoin-Bildungsangebote und Workshops.": "Fedezd fel változatos Bitcoin oktatási kínálatunkat és workshopjainkat.",
"Enter the 6-digit code from your authenticator app.": "Írja be a 6 számjegyű kódot az Authenticator alkalmazásból.",
"Enter the authentication code provided by your authenticator application.": "Írja be a hitelesítési kódot a hitelesítő alkalmazás által biztosított hitelesítési kódot.",
"Enter your details below to create your account": "Írja be az alábbi adatait a fiók létrehozásához",
"Enter your email and password below to log in": "Írja be az alábbi e -mailt és jelszavát a bejelentkezéshez",
"Enter your email to receive a password reset link": "Írja be e -mailjét a jelszó -visszaállítás link fogadásához",
"Entfernen": "Eltávolítás",
"Environment file already exists.": "A környezetfájl már létezik.",
"Environment file not found.": "A környezeti fájl nem található.",
"errors": "hibákat",
"Erscheinungsbild - Einstellungen": "Megjelenés - Beállítások",
"Erstelle einen neuen Bitcoin-Bildungskurs und teile dein Wissen mit der Community.": "Hozz létre egy új Bitcoin oktatási kurzust és oszd meg tudásodat a közösséggel.",
"Erstelle und bearbeite Bitcoin Meetup Events für deine Community.": "Hozz létre és szerkessz Bitcoin meetup eseményeket a közösséged számára.",
"Ersteller des Dozenten": "Az oktató létrehozója",
"Ersteller des Kurses": "A kurzus létrehozója",
"Ersteller des Meetups": "A meetup létrehozója",
"Erstellt am": "Létrehozva",
"Erstellt von": "Létrehozta",
"Event aktualisieren": "Esemény frissítése",
"Event bearbeiten": "Esemény szerkesztése",
"Event Details": "Esemény részletei",
"Event erfolgreich aktualisiert!": "Esemény sikeresen frissítve!",
"Event erfolgreich erstellt!": "Esemény sikeresen létrehozva!",
"Event erfolgreich gelöscht!": "Esemény sikeresen törölve!",
"Event bearbeiten": "Esemény szerkesztése",
"Neues Event erstellen": "Új esemény létrehozása",
"Event Details": "Esemény részletei",
"Startdatum": "Kezdő dátum",
"An welchem Tag beginnt das Event?": "Melyik napon kezdődik az esemény?",
"Startzeit": "Kezdési idő",
"Um wie viel Uhr beginnt das Event?": "Hány órakor kezdődik az esemény?",
"Enddatum": "Befejezés dátuma",
"An welchem Tag endet das Event?": "Melyik napon ér véget az esemény?",
"Endzeit": "Befejezési idő",
"Um wie viel Uhr endet das Event?": "Hány órakor ér véget az esemény?",
"Veranstaltungsort": "Helyszín",
"Ort hinzufügen": "Helyszín hozzáadása",
"Veranstaltungsort auswählen": "Helyszín kiválasztása",
"Suche nach Ort...": "Helyszín keresése...",
"Wo findet das Event statt?": "Hol lesz az esemény?",
"Link": "Link",
"Link zu weiteren Informationen oder zur Anmeldung": "Link további információkhoz vagy regisztrációhoz",
"Abbrechen": "Mégse",
"Bist du sicher, dass du dieses Event löschen möchtest?": "Biztos vagy benne, hogy törölni szeretnéd ezt az eseményt?",
"Event löschen": "Esemény törlése",
"Event aktualisieren": "Esemény frissítése",
"Event erstellen": "Esemény létrehozása",
"Veranstaltungsort hinzufügen": "Helyszín hozzáadása",
"Event löschen": "Esemény törlése",
"Finde alle aktuellen Bitcoin Meetups und Events in deiner Region.": "Találd meg az összes aktuális Bitcoin meetupot és eseményt a régiódban.",
"Finde alle Veranstaltungsorte für Bitcoin Meetups und Events.": "Találd meg az összes helyszínt Bitcoin meetupokhoz és eseményekhez.",
"Finde Bitcoin Meetups in deiner Nähe mit unserer interaktiven Karte.": "Találj Bitcoin meetupokat a közeledben interaktív térképünkkel.",
"Finde deine lokale Community": "Találd meg helyi közösségedet",
"Follow the Rabbit - Bitcoin Journey": "Kövesd a Nyulat - Bitcoin Utazás",
"Forbidden": "Tiltott",
"Forgot password": "Elfelejtette a jelszót",
"Forgot your password?": "Elfelejtette a jelszavát?",
"Full name": "Teljes név",
"Füge eine neue Stadt hinzu, um Bitcoin Meetups in deiner Region zu organisieren.": "Adj hozzá egy új várost, hogy Bitcoin meetupokat szervezhess a régiódban.",
"Füge eine neue Stadt zur Datenbank hinzu.": "Adj hozzá új várost az adatbázishoz.",
"Füge einen neuen Ort für Bitcoin Meetups und Events hinzu.": "Adj hozzá új helyszínt Bitcoin meetupokhoz és eseményekhez.",
"Füge einen neuen Veranstaltungsort zur Datenbank hinzu.": "Adj hozzá új helyszínt az adatbázishoz.",
"z.B. Bitcoin Zentrum München": "pl. Bitcoin Központ Budapest",
"Stadt": "Város",
"Stadt auswählen": "Város kiválasztása",
"Suche passende Stadt...": "Megfelelő város keresése...",
"Straße": "Utca",
"z.B. Hauptstraße 1": "pl. Fő utca 1",
"Ort erstellen": "Helyszín létrehozása",
"Kurs erfolgreich erstellt!": "Kurzus sikeresen létrehozva!",
"Neuen Kurs erstellen": "Új kurzus létrehozása",
"Gemeinschaft": "Közösség",
"Gemeinschafts- oder Organisationsname": "Közösség vagy szervezet neve",
"Go to page :page": "Ugrás a :page. oldalra",
"Grundlegende Informationen": "Alapinformációk",
"Der Anzeigename für diesen Kurs": "A kurzus megjelenítendő neve",
"Dozent": "Oktató",
"Dozent auswählen": "Oktató kiválasztása",
"Suche passenden Dozenten...": "Megfelelő oktató keresése...",
"Der Dozent, der diesen Kurs leitet": "Az oktató, aki ezt a kurzust vezeti",
"Beschreibung": "Leírás",
"Ausführliche Beschreibung des Kurses": "A kurzus részletes leírása",
"Kurs erstellen": "Kurzus létrehozása",
"Kurs erfolgreich aktualisiert!": "Kurzus sikeresen frissítve!",
"Kurs bearbeiten": "Kurzus szerkesztése",
"Hello!": "Helló!",
"Hide Recovery Codes": "Elrejteni a helyreállítási kódokat",
"Ich komme": "Részt veszek",
"ID": "ID",
"System-generierte ID (nur lesbar)": "Rendszer által generált ID (csak olvasható)",
"Systeminformationen": "Rendszerinformációk",
"Erstellt von": "Létrehozta",
"Unbekannt": "Ismeretlen",
"Ersteller des Kurses": "A kurzus létrehozója",
"Erstellt am": "Létrehozva",
"Wann dieser Kurs erstellt wurde": "Mikor lett ez a kurzus létrehozva",
"Aktualisiert am": "Frissítve",
"Letzte Änderungszeit": "Utolsó módosítás ideje",
"Kurs aktualisieren": "Kurzus frissítése",
"Suche nach Kursen...": "Kurzusok keresése...",
"Neuer Kurs": "Új kurzus",
"Aktionen": "Műveletek",
"Bearbeiten": "Szerkesztés",
"Über den Kurs": "A kurzusról",
"Über den Dozenten": "Az oktatóról",
"Kommende Veranstaltungen": "Közelgő események",
"Anmeldungen": "Regisztrációk",
"Details/Anmelden": "Részletek/Regisztráció",
"Meine nächsten Meetup Termine": "Következő meetup időpontjaim",
"Keine bevorstehenden Termine": "Nincsenek közelgő időpontok",
"Meine Meetups": "Meetupjaim",
"Meetup hinzufügen...": "Meetup hozzáadása...",
"Meetup suchen...": "Meetup keresése...",
"Meetup entfernen?": "Meetup eltávolítása?",
"Möchtest du": "Szeretnéd",
"aus deinen Meetups entfernen?": "eltávolítani meetupjaid közül?",
"Du kannst es jederzeit wieder hinzufügen.": "Bármikor újra hozzáadhatod.",
"Entfernen": "Eltávolítás",
"Keine Meetups zugeordnet": "Nincsenek hozzárendelt meetupok",
"Dozent erfolgreich erstellt!": "Oktató sikeresen létrehozva!",
"Neuen Dozenten erstellen": "Új oktató létrehozása",
"Vollständiger Name des Dozenten": "Az oktató teljes neve",
"Untertitel": "Alcím",
"Kurze Berufsbezeichnung oder Rolle": "Rövid szakmai megnevezés vagy szerep",
"Status": "Státusz",
"If you did not create an account, no further action is required.": "Ha nem Ön hozta létre ezt a fiókot, akkor nincs további teendője.",
"If you did not request a password reset, no further action is required.": "Ha nem kezdeményzett jelszó helyreállítást, nincs további teendője.",
"If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Ha problémákba ütközik a \":actionText\" gombra kattintáskor, másolja be az allábi hivatkozást\na böngészőjébe:",
"Inaktiv": "Inaktív",
"Informationen zum Löschen deines Bitcoin Meetup Kontos.": "Információk Bitcoin meetup fiókod törléséről.",
"Invalid filename.": "Érvénytelen fájlnév.",
"Invalid JSON was returned from the route.": "Érvénytelen JSON-t adtak vissza az útvonalról.",
"Ist dieser Dozent aktiv?": "Ez az oktató aktív?",
"Einführung": "Bevezetés",
"Kalender-Stream-URL kopieren": "Naptár stream URL másolása",
"Karte": "Térkép",
"Kartenansicht öffnen": "Térképnézet megnyitása",
"Keine": "Nincs",
"Keine bevorstehenden Termine": "Nincsenek közelgő időpontok",
"Keine Meetups zugeordnet": "Nincsenek hozzárendelt meetupok",
"Kommende Veranstaltungen": "Közelgő események",
"Kontakt & Links": "Kapcsolat & Linkek",
"Konto löschen - Bitcoin Meetups": "Fiók törlése - Bitcoin Meetupok",
"Kurs aktualisieren": "Kurzus frissítése",
"Kurs bearbeiten": "Kurzus szerkesztése",
"Kurs bearbeiten - Bitcoin Education": "Kurzus szerkesztése - Bitcoin Oktatás",
"Kurs erfolgreich aktualisiert!": "Kurzus sikeresen frissítve!",
"Kurs erfolgreich erstellt!": "Kurzus sikeresen létrehozva!",
"Kurs erstellen": "Kurzus létrehozása",
"Kurse": "Kurzusok",
"Kursevents bearbeiten - Bitcoin Education": "Kurzusesemények szerkesztése - Bitcoin Oktatás",
"Kurze Berufsbezeichnung oder Rolle": "Rövid szakmai megnevezés vagy szerep",
"Kurze Beschreibung des Meetups": "A meetup rövid leírása",
"Kurze Vorstellung (wird auf Kurs-Seiten angezeigt)": "Rövid bemutatkozás (kurzus oldalakon jelenik meg)",
"Ausführliche Beschreibung und Biografie": "Részletes leírás és életrajz",
"Links & Soziale Medien": "Linkek & Közösségi média",
"Webseite": "Weboldal",
"Persönliche Webseite oder Portfolio": "Személyes weboldal vagy portfólió",
"Twitter Benutzername": "Twitter felhasználónév",
"Twitter-Handle ohne @ Symbol": "Twitter handle @ szimbólum nélkül",
"Nostr öffentlicher Schlüssel": "Nostr nyilvános kulcs",
"Zahlungsinformationen": "Fizetési információk",
"Land": "Ország",
"Land auswählen": "Ország kiválasztása",
"Latitude": "Szélesség",
"Lerne alles über Bitcoin - von den Grundlagen bis zu fortgeschrittenen Themen.": "Tanulj mindent a Bitcoinról - az alapoktól a haladó témákig.",
"Lerne unsere erfahrenen Bitcoin-Dozenten und ihre Expertise kennen.": "Ismerd meg tapasztalt Bitcoin oktatóinkat és szakértelmüket.",
"Letzte Änderungszeit": "Utolsó módosítás ideje",
"Light": "Fény",
"Lightning Adresse": "Lightning cím",
"Lightning Node ID": "Lightning Node ID",
"Lightning-Adresse für Zahlungen": "Lightning cím fizetésekhez",
"Link": "Link",
"Link zu weiteren Informationen": "Link további információkhoz",
"Link zu weiteren Informationen oder zur Anmeldung": "Link további információkhoz vagy regisztrációhoz",
"Link zur Telegram-Gruppe oder zum Kanal": "Link Telegram csoporthoz vagy csatornához",
"Links": "Linkek",
"Links & Soziale Medien": "Linkek & Közösségi média",
"LNURL": "LNURL",
"LNURL für Lightning-Zahlungen": "LNURL Lightning fizetésekhez",
"Node ID": "Node ID",
"Lightning Node ID": "Lightning Node ID",
"PayNym": "PayNym",
"PayNym für Bitcoin-Zahlungen": "PayNym Bitcoin fizetésekhez",
"Dozenten erstellen": "Oktató létrehozása",
"Dozent erfolgreich aktualisiert!": "Oktató sikeresen frissítve!",
"Dozent bearbeiten": "Oktató szerkesztése",
"Ersteller des Dozenten": "Az oktató létrehozója",
"Wann dieser Dozent erstellt wurde": "Mikor lett ez az oktató létrehozva",
"Dozent aktualisieren": "Oktató frissítése",
"Suche nach Dozenten...": "Oktatók keresése...",
"Dozenten anlegen": "Oktató létrehozása",
"Links": "Linkek",
"Aktiv": "Aktív",
"Inaktiv": "Inaktív",
"weitere Termine": "további időpontok",
"Datum": "Dátum",
"An welchem Tag findet das Event statt?": "Melyik napon lesz az esemény?",
"Uhrzeit": "Időpont",
"Um wie viel Uhr startet das Event?": "Hány órakor kezdődik az esemény?",
"Ort": "Helyszín",
"z.B. Café Mustermann, Hauptstr. 1": "pl. Mintakávézó, Fő utca 1",
"Beschreibe das Event...": "Írd le az eseményt...",
"Details über das Event": "Az esemény részletei",
"Link zu weiteren Informationen": "Link további információkhoz",
"Meetup erfolgreich erstellt!": "Meetup sikeresen létrehozva!",
"Neues Meetup erstellen": "Új meetup létrehozása",
"Der Anzeigename für dieses Meetup": "A meetup megjelenítendő neve",
"Stadt hinzufügen": "Város hozzáadása",
"Die nächstgrößte Stadt oder Ort": "A legközelebbi nagyobb város vagy hely",
"Auf Karte sichtbar": "Látható a térképen",
"Soll dieses Meetup auf der Karte angezeigt werden?": "Megjelenjen ez a meetup a térképen?",
"Kurze Beschreibung des Meetups": "A meetup rövid leírása",
"Offizielle Webseite oder Landingpage": "Hivatalos weboldal vagy landing oldal",
"Telegram Link": "Telegram link",
"Link zur Telegram-Gruppe oder zum Kanal": "Link Telegram csoporthoz vagy csatornához",
"Location": "Elhelyezkedés",
"log in": "bejelentkezik",
"Log in": "Bejelentkezés",
"Log in mit Nostr": "Bejelentkezés Nostrral",
"Log in to your account": "Jelentkezzen be fiókjába",
"Log Out": "Kijelentkezés",
"Log out": "Kijelentkezés",
"Logge dich ein, um auf dein Bitcoin Meetup Konto zuzugreifen und an der Community teilzunehmen.": "Jelentkezz be a Bitcoin Meetup fiókodba, és csatlakozz a közösséghez.",
"Login": "Bejelentkezés",
"Login - Bitcoin Meetups": "Bejelentkezés - Bitcoin Meetupok",
"login using a recovery code": "Jelentkezzen be egy helyreállítási kód segítségével",
"login using an authentication code": "Jelentkezzen be egy hitelesítési kód segítségével",
"Logout": "Kijelentkezés",
"Lokale Buchausleihe für Bitcoin-Meetups.": "Helyi könyvkölcsönzés Bitcoin meetupokhoz.",
"Longitude": "Hosszúság",
"Längengrad": "Hosszúság",
"Manage your profile and account settings": "Kezelje a profilját és a fiók beállításait",
"Manage your two-factor authentication settings": "Kezelje a két tényezős hitelesítési beállításait",
"Matrix": "Matrix",
"Matrix Gruppe": "Matrix csoport",
"Matrix-Raum Bezeichner oder Link": "Matrix szoba azonosító vagy link",
"Meetup aktualisieren": "Meetup frissítése",
"Meetup bearbeiten": "Meetup szerkesztése",
"Meetup bearbeiten - Bitcoin Events": "Meetup szerkesztése - Bitcoin Események",
"Meetup entfernen?": "Meetup eltávolítása?",
"Meetup erfolgreich aktualisiert!": "Meetup sikeresen frissítve!",
"Meetup erfolgreich erstellt!": "Meetup sikeresen létrehozva!",
"Meetup erstellen": "Meetup létrehozása",
"Meetup hinzufügen...": "Meetup hozzáadása...",
"Meetup suchen...": "Meetup keresése...",
"Meetups": "Meetupok",
"Mehr Informationen": "További információk",
"Meine Meetups": "Meetupjaim",
"Meine nächsten Meetup Termine": "Következő meetup időpontjaim",
"Möchtest du": "Szeretnéd",
"Name": "Név",
"Name eingeben": "Név megadása",
"Neue Stadt hinzufügen - Bitcoin Meetups": "Új város hozzáadása - Bitcoin Meetupok",
"Neuen Dozenten erstellen": "Új oktató létrehozása",
"Neuen Kurs erstellen": "Új kurzus létrehozása",
"Neuen Kurs erstellen - Bitcoin Education": "Új kurzus létrehozása - Bitcoin Oktatás",
"Neuen Veranstaltungsort erstellen": "Új helyszín létrehozása",
"Neuer Kurs": "Új kurzus",
"Neues Event erstellen": "Új esemény létrehozása",
"Neues Meetup erstellen": "Új meetup létrehozása",
"New password": "Új jelszó",
"no location set": "nincs helyszín beállítva",
"Node ID": "Node ID",
"Nostr": "Nostr",
"Nostr öffentlicher Schlüssel": "Nostr nyilvános kulcs",
"Nostr öffentlicher Schlüssel oder Bezeichner": "Nostr nyilvános kulcs vagy azonosító",
"Not Found": "Nem található",
"Nächster Termin": "Következő időpont",
"of": "a",
"Offizielle Webseite oder Landingpage": "Hivatalos weboldal vagy landing oldal",
"Once your account is deleted, all of its resources and data will also be permanently deleted. Please confirm you would like to permanently delete your account.": "Miután a fiókját törölték, az összes erőforrást és adatát véglegesen töröljük. Kérjük, erősítse meg, hogy tartósan törölje a fiókját.",
"Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "A fiók törlése után az összes erőforrás és adat véglegesen törlődik. Kérjük, adja meg jelszavát annak megerősítéséhez, hogy véglegesen törölni kívánja fiókját.",
"or you can": "vagy te is lehet",
"or, enter the code manually": "Vagy manuálisan írja be a kódot",
"Or, return to": "Vagy térjen vissza",
"Ort": "Helyszín",
"Ort erstellen": "Helyszín létrehozása",
"Ort hinzufügen": "Helyszín hozzáadása",
"Orte/Gebiete": "Helyek/Területek",
"Page Expired": "Lejárt oldal",
"Pagination Navigation": "Oldalszámozás Navigáció",
"Passe das Erscheinungsbild deines Bitcoin Meetup Profils an.": "Szabd testre Bitcoin meetup profilod megjelenését.",
"Password": "Jelszó",
"Passwort ändern - Bitcoin Meetups": "Jelszó módosítása - Bitcoin Meetupok",
"Payment Required": "fizetés szükséges",
"PayNym": "PayNym",
"PayNym für Bitcoin-Zahlungen": "PayNym Bitcoin fizetésekhez",
"Persönliche Webseite oder Portfolio": "Személyes weboldal vagy portfólió",
"Platform": "Platform",
"Please click the button below to verify your email address.": "Kérjük kattintson az alábbi gombra az e-mail címe megerősítéséhez.",
"Please confirm access to your account by entering one of your emergency recovery codes.": "Kérjük, erősítse meg a fiókjához való hozzáférést az egyik vészhelyzeti helyreállítási kód megadásával.",
"Please enter your new password below": "Kérjük, írja be az alábbiakban új jelszavát",
"Please verify your email address by clicking on the link we just emailed to you.": "Kérjük, ellenőrizze e -mail címét, ha rákattint a linkre, amelyet csak e -mailben küldünk neked.",
"Population": "Népesség",
"Population Date": "Népesség dátuma",
"Profil bearbeiten - Bitcoin Meetups": "Profil szerkesztése - Bitcoin Meetupok",
"Profile": "Profil",
"Recovery Code": "Helyreállítási kód",
"Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager.": "A helyreállítási kódok lehetővé teszik a hozzáférést, ha elveszítik a 2FA -eszközt. Tárolja őket egy biztonságos jelszókezelőben.",
"Regards,": "Üdvözlettel,",
"Regenerate Codes": "A kódok regenerálása",
"Register": "Regisztráció",
"Remember me": "Emlékezz rám",
"Repository": "Tároló",
"Resend verification email": "Helyezze vissza az ellenőrzési e -mailt",
"Reset password": "A jelszó visszaállítása",
"Reset Password": "Jelszó helyreállítás",
"Reset Password Notification": "Jelszó helyreállítás emlékeztető",
"results": "eredmények",
"Save": "Mentés",
"Saved.": "Elmentve.",
"Search": "Keresés",
"Search cities...": "Városok keresése...",
"Search venues...": "Helyszínek keresése...",
"Select a city": "Válassz várost",
"Select a country": "Válassz országot",
"Server Error": "Szerver hiba",
"Service Unavailable": "Szolgáltatás nem elérhető",
"Settings": "Beállítások",
"Showing": "Bemutató",
"Sign up": "Feliratkozás",
"Signal": "Signal",
"Signal Kontakt- oder Gruppeninformationen": "Signal kapcsolat vagy csoportinformációk",
"Simplex": "Simplex",
"SimpleX": "SimpleX",
"SimpleX Chat Kontaktinformationen": "SimpleX Chat kapcsolati információk",
"Signal Kontakt- oder Gruppeninformationen": "Signal kapcsolat vagy csoportinformációk",
"Zusätzliche Informationen": "További információk",
"Gemeinschaft": "Közösség",
"Keine": "Nincs",
"Gemeinschafts- oder Organisationsname": "Közösség vagy szervezet neve",
"Meetup erstellen": "Meetup létrehozása",
"Füge eine neue Stadt zur Datenbank hinzu.": "Adj hozzá új várost az adatbázishoz.",
"Stadtname": "Város neve",
"z.B. Berlin": "pl. Budapest",
"Land auswählen": "Ország kiválasztása",
"Breitengrad": "Szélesség",
"Längengrad": "Hosszúság",
"Stadt erstellen": "Város létrehozása",
"Meetup erfolgreich aktualisiert!": "Meetup sikeresen frissítve!",
"Meetup bearbeiten": "Meetup szerkesztése",
"Ersteller des Meetups": "A meetup létrehozója",
"Wann dieses Meetup erstellt wurde": "Mikor lett ez a meetup létrehozva",
"Meetup aktualisieren": "Meetup frissítése",
"Kalender-Stream-URL kopieren": "Naptár stream URL másolása",
"Suche nach Meetups...": "Meetupok keresése...",
"Mehr Informationen": "További információk",
"Teilnahme": "Részvétel",
"Du bist nicht eingloggt und musst deshalb den Namen selbst eintippen.": "Nem vagy bejelentkezve, ezért be kell írnod a nevedet.",
"Dein Name": "Neved",
"Name eingeben": "Név megadása",
"Ich komme": "Részt veszek",
"Absagen": "Lemondás",
"Zurück zum Meetup": "Vissza a meetuphoz",
"Über uns": "Rólunk",
"Kontakt & Links": "Kapcsolat & Linkek",
"Standort": "Helyszín",
"Zoom = STRG+Scroll": "Nagyítás = CTRL+Scroll",
"Öffnen/RSVP": "Megnyitás/RSVP",
"Update the appearance settings for your account": "Frissítsd fiókod megjelenési beállításait",
"Light": "Világos",
"Dark": "Sötét",
"System": "Rendszer",
"Delete account": "Fiók törlése",
"Delete your account and all of its resources": "Töröldd fiókodat és összes erőforrását",
"Are you sure you want to delete your account?": "Biztos vagy benne, hogy törölni szeretnéd fiókodat?",
"Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Miután fiókodat törlöd, minden erőforrása és adata véglegesen törlésre kerül. Kérjük, add meg jelszavadat a végleges törlés megerősítéséhez.",
"Update password": "Jelszó frissítése",
"Ensure your account is using a long, random password to stay secure": "Gondoskodj arról, hogy fiókod hosszú, véletlenszerű jelszót használjon a biztonság érdekében",
"Current password": "Jelenlegi jelszó",
"New password": "Új jelszó",
"Confirm Password": "Jelszó megerősítése",
"Save": "Mentés",
"Update your name and email address": "Frissítsd nevedet és email címedet",
"Your email address is unverified.": "Email címed még nincs megerősítve.",
"Click here to re-send the verification email.": "Kattints ide a megerősítő email újraküldéséhez.",
"A new verification link has been sent to your email address.": "Új megerősítő linket küldtünk email címedre.",
"Zeitzone": "Időzóna",
"Wähle deine Zeitzone aus...": "Válaszd ki időzónádat...",
"Soll dieses Meetup auf der Karte angezeigt werden?": "Megjelenjen ez a meetup a térképen?",
"Sprache wechseln": "Nyelv váltása",
"Sprache wählen": "Nyelv választása",
"Spracheinstellungen": "Nyelvi beállítások",
"Wähle deine Sprache aus...": "Válaszd ki nyelvedet...",
"Zeitzone erfolgreich aktualisiert": "Időzóna sikeresen frissítve",
"Wähle deine Zeitzone...": "Válaszd ki időzónádat...",
"Suche Zeitzone...": "Időzóna keresése...",
"Venue successfully created!": "Helyszín sikeresen létrehozva!",
"Create Venue": "Helyszín létrehozása",
"Venue Information": "Helyszín információk",
"City": "Város",
"Select a city": "Válassz várost",
"Stadt": "Város",
"Stadt auswählen": "Város kiválasztása",
"Stadt bearbeiten - Bitcoin Meetups": "Város szerkesztése - Bitcoin Meetupok",
"Stadt erstellen": "Város létrehozása",
"Stadt hinzufügen": "Város hozzáadása",
"Stadtname": "Város neve",
"Standort": "Helyszín",
"Startdatum": "Kezdő dátum",
"Starte deine Bitcoin-Reise und entdecke spannende Inhalte rund um Bitcoin und Blockchain.": "Kezdd el Bitcoin utazásodat és fedezz fel izgalmas tartalmakat a Bitcoinról és a blockchainről.",
"Startzeit": "Kezdési idő",
"Status": "Státusz",
"Straße": "Utca",
"Street": "Utca",
"Venue successfully updated!": "Helyszín sikeresen frissítve!",
"Edit Venue": "Helyszín szerkesztése",
"Städte/Gebiete": "Városok/Területek",
"Städteübersicht - Bitcoin Meetups": "Városok áttekintése - Bitcoin Meetupok",
"Success!": "Sikeres!",
"Suche dein Land...": "Keresd országod...",
"Suche nach Dozenten...": "Oktatók keresése...",
"Suche nach Kursen...": "Kurzusok keresése...",
"Suche nach Meetups...": "Meetupok keresése...",
"Suche nach Ort...": "Helyszín keresése...",
"Suche passende Stadt...": "Megfelelő város keresése...",
"Suche passenden Dozenten...": "Megfelelő oktató keresése...",
"Suche Zeitzone...": "Időzóna keresése...",
"System": "Rendszer",
"System-generierte ID (nur lesbar)": "Rendszer által generált ID (csak olvasható)",
"Systeminformationen": "Rendszerinformációk",
"Teilnahme": "Részvétel",
"Telegram": "Telegram",
"Telegram Link": "Telegram link",
"The given data was invalid.": "A megadott adatok érvénytelenek voltak.",
"The response is not a streamed response.": "A válasz nem streamelt válasz.",
"The response is not a view.": "A válasz nem nézet.",
"This action is unauthorized.": "Nincs elég jogosultsága végrehajtani ezt a műveletet.",
"This is a secure area of the application. Please confirm your password before continuing.": "Ez az alkalmazás biztonságos területe. Mielőtt folytatná, erősítse meg jelszavát.",
"This password reset link will expire in :count minutes.": "Ez a jelszó helyreállító hivatkozás :count perc múlva le fog járni.",
"to": "hogy",
"To finish enabling two-factor authentication, scan the QR code or enter the setup key in your authenticator app.": "A két tényezős hitelesítés engedélyezésének befejezéséhez írja be a QR-kódot, vagy írja be a Setup gombot az Authenticator alkalmazásba.",
"Toggle navigation": "Navigáció be/ki",
"Too Many Requests": "Túl sok lekérés",
"Toximalistisches Infotainment für bullische Bitcoiner.": "Toximalista infotainment bullish bitcoinerek számára.",
"Twitter": "Twitter",
"Twitter Benutzername": "Twitter felhasználónév",
"Twitter-Handle ohne @ Symbol": "Twitter handle @ szimbólum nélkül",
"Two Factor Authentication": "Két tényező hitelesítés",
"Two-Factor Auth": "Kéttényezős Auth",
"Two-Factor Authentication Enabled": "A két tényezős hitelesítés engedélyezve",
"Two-factor authentication is now enabled. Scan the QR code or enter the setup key in your authenticator app.": "A két tényezős hitelesítés már engedélyezve van. Vizsgálja meg a QR -kódot, vagy írja be a Setup gombot az Authenticator alkalmazásba.",
"Uhrzeit": "Időpont",
"Um wie viel Uhr beginnt das Event?": "Hány órakor kezdődik az esemény?",
"Um wie viel Uhr endet das Event?": "Hány órakor ér véget az esemény?",
"Um wie viel Uhr startet das Event?": "Hány órakor kezdődik az esemény?",
"Unauthorized": "Jogosulatlan",
"Unbekannt": "Ismeretlen",
"Untertitel": "Alcím",
"Update City": "Város frissítése",
"Update password": "A jelszó frissítése",
"Update the appearance settings for your account": "Frissítse a fiókjának megjelenési beállításait",
"Update Venue": "Helyszín frissítése",
"Update your account's appearance settings": "Frissítse a fiók megjelenési beállításait",
"Update your name and email address": "Frissítse a nevét és az e -mail címét",
"Venue Information": "Helyszín információk",
"Venue successfully created!": "Helyszín sikeresen létrehozva!",
"Venue successfully updated!": "Helyszín sikeresen frissítve!",
"Venues": "Helyszínek",
"Search venues...": "Helyszínek keresése...",
"Bitcoin Meetups": "Bitcoin Meetupok",
"Alle Meetups anzeigen": "Minden meetup megjelenítése",
"Kartenansicht öffnen": "Térképnézet megnyitása",
"Login": "Bejelentkezés",
"Veranstaltungsort": "Helyszín",
"Veranstaltungsort auswählen": "Helyszín kiválasztása",
"Veranstaltungsort bearbeiten": "Helyszín szerkesztése",
"Veranstaltungsort hinzufügen": "Helyszín hozzáadása",
"Veranstaltungsorte": "Helyszínek",
"Veranstaltungsorte - Übersicht": "Helyszínek - Áttekintés",
"Verbinde dich mit Bitcoinern in deiner Nähe": "Kapcsolódj bitcoinerekhez a közeledben",
"Finde deine lokale Community": "Találd meg helyi közösségedet",
"Manage your profile and account settings": "Kezeld profilodat és fiókbeállításaidat"
}
"Verify Authentication Code": "Ellenőrizze a hitelesítési kódot",
"Verify Email Address": "E-mail cím megerősítése",
"Verwalte deine Bitcoin Meetups, Events und Einstellungen in deinem persönlichen Dashboard.": "Kezeld Bitcoin meetupjaidat, eseményeidet és beállításaidat személyes irányítópultodon.",
"Verwalte die Termine und Details deiner Bitcoin-Bildungsveranstaltungen.": "Kezeld Bitcoin oktatási rendezvényeid időpontjait és részleteit.",
"Vielleicht": "Talán",
"View Recovery Codes": "A helyreállítási kódok megtekintése",
"Vollständiger Name des Dozenten": "Az oktató teljes neve",
"Wann dieser Dozent erstellt wurde": "Mikor lett ez az oktató létrehozva",
"Wann dieser Kurs erstellt wurde": "Mikor lett ez a kurzus létrehozva",
"Wann dieses Meetup erstellt wurde": "Mikor lett ez a meetup létrehozva",
"Webseite": "Weboldal",
"Website": "Weboldal",
"weitere Termine": "további időpontok",
"Werde Bitcoin-Dozent und teile dein Expertenwissen mit der Community.": "Válj Bitcoin oktatóvá és oszd meg szakértői tudásodat a közösséggel.",
"When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone.": "Ha engedélyezi a két tényezős hitelesítést, a bejelentkezés során a rendszer kéri a biztonságos PIN-kódot. Ez a PIN-kód a telefonján a TOTP által támogatott alkalmazásból származhat.",
"Whoops!": "Hoppá!",
"Willkommen": "Üdvözlünk",
"Willkommen bei Bitcoin Meetups": "Üdvözlünk a Bitcoin Meetupoknál",
"Willkommen zurück": "Üdv újra",
"With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.": "A két tényezős hitelesítés engedélyezésével a bejelentkezés során biztonságos, véletlenszerű csapot kér, amelyet a telefonján a TOTP által támogatott alkalmazásból lehet letölteni.",
"Wo findet das Event statt?": "Hol lesz az esemény?",
"Wähle dein Land...": "Válaszd ki országod...",
"Wähle deine Sprache aus...": "Válaszd ki nyelvedet...",
"Wähle deine Zeitzone aus...": "Válaszd ki időzónádat...",
"Wähle deine Zeitzone...": "Válaszd ki időzónádat...",
"You are receiving this email because we received a password reset request for your account.": "Azért kapja ezt az üzenetet, mert a fiókjára jelszó helyreállítási kérés érkezett.",
"Your email address is unverified.": "Az Ön e-mail címe nincs ellenőrizve.",
"z.B. Berlin": "pl. Budapest",
"z.B. Bitcoin Zentrum München": "pl. Bitcoin Központ Budapest",
"z.B. Café Mustermann, Hauptstr. 1": "pl. Mintakávézó, Fő utca 1",
"z.B. Hauptstraße 1": "pl. Fő utca 1",
"Zahlungsinformationen": "Fizetési információk",
"Zeitzone": "Időzóna",
"Zeitzone erfolgreich aktualisiert": "Időzóna sikeresen frissítve",
"Zoom = STRG+Scroll": "Nagyítás = CTRL+Scroll",
"Zurück zum Meetup": "Vissza a meetuphoz",
"Zusagen": "Részvétel",
"Zusätzliche Informationen": "További információk",
"Ändere dein Passwort für mehr Sicherheit deines Bitcoin Meetup Kontos.": "Változtasd meg jelszavadat Bitcoin meetup fiókod nagyobb biztonsága érdekében.",
"Öffnen/RSVP": "Megnyitás/RSVP",
"Über den Dozenten": "Az oktatóról",
"Über den Kurs": "A kurzusról",
"Über uns": "Rólunk"
}

9
lang/hu/auth.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
return [
'failed' => 'Rossz email-jelszó páros.',
'password' => 'A(z) :attribute jelszónak kell, hogy legyen!',
'throttle' => 'Túl sok próbálkozás. Kérjük próbálja újra :seconds másodperc múlva.',
];

8
lang/hu/pagination.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
declare(strict_types=1);
return [
'next' => 'Következő &raquo;',
'previous' => '&laquo; Előző',
];

11
lang/hu/passwords.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
return [
'reset' => 'Az új jelszó beállítva!',
'sent' => 'Jelszó-emlékeztető elküldve!',
'throttled' => 'Kérjük várjon, mielőtt újra megpróbálná.',
'token' => 'Ez az új jelszó generálásához tartozó token érvénytelen.',
'user' => 'Nem található felhasználó a megadott email címmel.',
];

158
lang/hu/validation.php Normal file
View File

@@ -0,0 +1,158 @@
<?php
declare(strict_types=1);
return [
'accepted' => 'A(z) :attribute el kell legyen fogadva!',
'accepted_if' => 'A :attribute-at el kell fogadni, amikor a :other az :value.',
'active_url' => 'A(z) :attribute nem érvényes url!',
'after' => 'A(z) :attribute :date utáni dátum kell, hogy legyen!',
'after_or_equal' => 'A(z) :attribute nem lehet korábbi dátum, mint :date!',
'alpha' => 'A(z) :attribute kizárólag betűket tartalmazhat!',
'alpha_dash' => 'A(z) :attribute kizárólag betűket, számokat és kötőjeleket tartalmazhat!',
'alpha_num' => 'A(z) :attribute kizárólag betűket és számokat tartalmazhat!',
'any_of' => 'A :attribute mező érvénytelen.',
'array' => 'A(z) :attribute egy tömb kell, hogy legyen!',
'ascii' => 'A :attribute csak egybájtos alfanumerikus karaktereket és szimbólumokat tartalmazhat.',
'before' => 'A(z) :attribute :date előtti dátum kell, hogy legyen!',
'before_or_equal' => 'A(z) :attribute nem lehet későbbi dátum, mint :date!',
'between' => [
'array' => 'A(z) :attribute :min - :max közötti elemet kell, hogy tartalmazzon!',
'file' => 'A(z) :attribute mérete :min és :max kilobájt között kell, hogy legyen!',
'numeric' => 'A(z) :attribute :min és :max közötti szám kell, hogy legyen!',
'string' => 'A(z) :attribute hossza :min és :max karakter között kell, hogy legyen!',
],
'boolean' => 'A(z) :attribute mező csak true vagy false értéket kaphat!',
'can' => 'A :attribute-es mező nem engedélyezett értéket tartalmaz.',
'confirmed' => 'A(z) :attribute nem egyezik a megerősítéssel.',
'contains' => 'A :attribute-es mezőből hiányzik a kötelező érték.',
'current_password' => 'A jelszó helytelen.',
'date' => 'A(z) :attribute nem érvényes dátum.',
'date_equals' => ':Attribute meg kell egyezzen a következővel: :date.',
'date_format' => 'A(z) :attribute nem egyezik az alábbi dátum formátummal :format!',
'decimal' => 'A :attribute-nak :decimal tizedesjegynek kell lennie.',
'declined' => 'A :attribute-at el kell utasítani.',
'declined_if' => 'A :attribute-at el kell utasítani, ha a :other az :value.',
'different' => 'A(z) :attribute és :other értékei különbözőek kell, hogy legyenek!',
'digits' => 'A(z) :attribute :digits számjegyű kell, hogy legyen!',
'digits_between' => 'A(z) :attribute értéke :min és :max közötti számjegy lehet!',
'dimensions' => 'A(z) :attribute felbontása nem megfelelő.',
'distinct' => 'A(z) :attribute értékének egyedinek kell lennie!',
'doesnt_contain' => 'A :attribute mező nem tartalmazhat a következők egyikét: :values.',
'doesnt_end_with' => 'A :attribute nem végződhet a következők egyikével: :values.',
'doesnt_start_with' => 'A :attribute nem kezdődhet a következők egyikével: :values.',
'email' => 'A(z) :attribute nem érvényes email formátum.',
'ends_with' => 'A(z) :attribute a következővel kell végződjön: :values',
'enum' => 'A kiválasztott :attribute érvénytelen.',
'exists' => 'A kiválasztott :attribute érvénytelen.',
'extensions' => 'A :attribute-es mezőnek a következő kiterjesztések valamelyikével kell rendelkeznie: :values.',
'file' => 'A(z) :attribute fájl kell, hogy legyen!',
'filled' => 'A(z) :attribute megadása kötelező!',
'gt' => [
'array' => 'A(z) :attribute több, mint :value elemet kell, hogy tartalmazzon.',
'file' => 'A(z) :attribute mérete nagyobb kell, hogy legyen, mint :value kilobájt.',
'numeric' => 'A(z) :attribute nagyobb kell, hogy legyen, mint :value!',
'string' => 'A(z) :attribute hosszabb kell, hogy legyen, mint :value karakter.',
],
'gte' => [
'array' => 'A(z) :attribute legalább :value elemet kell, hogy tartalmazzon.',
'file' => 'A(z) :attribute mérete nem lehet kevesebb, mint :value kilobájt.',
'numeric' => 'A(z) :attribute nagyobb vagy egyenlő kell, hogy legyen, mint :value!',
'string' => 'A(z) :attribute hossza nem lehet kevesebb, mint :value karakter.',
],
'hex_color' => 'A :attribute-es mezőnek érvényes hexadecimális színnek kell lennie.',
'image' => 'A(z) :attribute képfájl kell, hogy legyen!',
'in' => 'A kiválasztott :attribute érvénytelen.',
'in_array' => 'A(z) :attribute értéke nem található a(z) :other értékek között.',
'in_array_keys' => 'A :attribute mezőnek a következő kulcsok közül legalább egyet tartalmaznia kell: :values.',
'integer' => 'A(z) :attribute értéke szám kell, hogy legyen!',
'ip' => 'A(z) :attribute érvényes IP cím kell, hogy legyen!',
'ipv4' => 'A(z) :attribute érvényes IPv4 cím kell, hogy legyen!',
'ipv6' => 'A(z) :attribute érvényes IPv6 cím kell, hogy legyen!',
'json' => 'A(z) :attribute érvényes JSON szöveg kell, hogy legyen!',
'list' => 'A :attribute-es mezőnek listának kell lennie.',
'lowercase' => 'A :attribute-nak kisbetűnek kell lennie.',
'lt' => [
'array' => 'A(z) :attribute kevesebb, mint :value elemet kell, hogy tartalmazzon.',
'file' => 'A(z) :attribute mérete kisebb kell, hogy legyen, mint :value kilobájt.',
'numeric' => 'A(z) :attribute kisebb kell, hogy legyen, mint :value!',
'string' => 'A(z) :attribute rövidebb kell, hogy legyen, mint :value karakter.',
],
'lte' => [
'array' => 'A(z) :attribute legfeljebb :value elemet kell, hogy tartalmazzon.',
'file' => 'A(z) :attribute mérete nem lehet több, mint :value kilobájt.',
'numeric' => 'A(z) :attribute kisebb vagy egyenlő kell, hogy legyen, mint :value!',
'string' => 'A(z) :attribute hossza nem lehet több, mint :value karakter.',
],
'mac_address' => 'A :attribute-nak érvényes MAC-címnek kell lennie.',
'max' => [
'array' => 'A(z) :attribute legfeljebb :max elemet kell, hogy tartalmazzon.',
'file' => 'A(z) :attribute mérete nem lehet több, mint :max kilobájt.',
'numeric' => 'A(z) :attribute értéke nem lehet nagyobb, mint :max!',
'string' => 'A(z) :attribute hossza nem lehet több, mint :max karakter.',
],
'max_digits' => 'A :attribute nem lehet több :max számjegynél.',
'mimes' => 'A(z) :attribute kizárólag az alábbi fájlformátumok egyike lehet: :values.',
'mimetypes' => 'A(z) :attribute kizárólag az alábbi fájlformátumok egyike lehet: :values.',
'min' => [
'array' => 'A(z) :attribute legalább :min elemet kell, hogy tartalmazzon.',
'file' => 'A(z) :attribute mérete nem lehet kevesebb, mint :min kilobájt.',
'numeric' => 'A(z) :attribute értéke nem lehet kisebb, mint :min!',
'string' => 'A(z) :attribute hossza nem lehet kevesebb, mint :min karakter.',
],
'min_digits' => 'A :attribute-nak legalább :min számjegyből kell állnia.',
'missing' => 'A :attribute-as mezőnek hiányoznia kell.',
'missing_if' => 'A :attribute-as mezőnek hiányoznia kell, ha a :other az :value.',
'missing_unless' => 'A :attribute-as mezőnek hiányoznia kell, hacsak a :other nem :value.',
'missing_with' => 'A :attribute-as mezőnek hiányoznia kell, ha a :values szerepel.',
'missing_with_all' => 'A :attribute mezőnek hiányoznia kell, ha :values van jelen.',
'multiple_of' => 'A :attribute :value többszörösének kell lennie',
'not_in' => 'A(z) :attribute értéke érvénytelen.',
'not_regex' => 'A(z) :attribute formátuma érvénytelen.',
'numeric' => 'A(z) :attribute szám kell, hogy legyen!',
'password' => [
'letters' => 'A :attribute-nak legalább egy betűt kell tartalmaznia.',
'mixed' => 'A :attribute-nak legalább egy nagybetűt és egy kisbetűt kell tartalmaznia.',
'numbers' => 'A :attribute-nak legalább egy számot kell tartalmaznia.',
'symbols' => 'A :attribute-nak legalább egy szimbólumot kell tartalmaznia.',
'uncompromised' => 'Adatszivárgásban jelent meg az adott :attribute. Kérjük, válasszon másik :attribute-at.',
],
'present' => 'A(z) :attribute mező nem található!',
'present_if' => 'A :attribute-es mezőnek jelen kell lennie, ha a :other az :value.',
'present_unless' => 'A :attribute-es mezőnek jelen kell lennie, kivéve, ha a :other az :value.',
'present_with' => 'A :attribute-es mezőnek jelen kell lennie, ha :values van jelen.',
'present_with_all' => 'A :attribute mezőnek jelen kell lennie, ha :values van jelen.',
'prohibited' => 'A :attribute mező tilos.',
'prohibited_if' => 'A :attribute mező tilos, ha :other :value.',
'prohibited_if_accepted' => 'A :attribute mező tilos, ha :other elfogadásra kerül.',
'prohibited_if_declined' => 'A :attribute mező tilos, ha a :other -at elutasítják.',
'prohibited_unless' => 'A :attribute mező tilos, kivéve, ha :other a :values.',
'prohibits' => 'A :attribute mező tiltja, hogy :other jelen legyen.',
'regex' => 'A(z) :attribute formátuma érvénytelen.',
'required' => 'A(z) :attribute megadása kötelező!',
'required_array_keys' => 'A :attribute-as mezőnek a következő bejegyzéseket kell tartalmaznia: :values.',
'required_if' => 'A(z) :attribute megadása kötelező, ha a(z) :other értéke :value!',
'required_if_accepted' => 'A :attribute-as mező kitöltése kötelező, ha elfogadja a :other-at.',
'required_if_declined' => 'A :attribute-es mező kitöltése kötelező, ha a :other-at elutasítják.',
'required_unless' => 'A(z) :attribute megadása kötelező, ha a(z) :other értéke nem :values!',
'required_with' => 'A(z) :attribute megadása kötelező, ha a(z) :values érték létezik.',
'required_with_all' => 'A(z) :attribute megadása kötelező, ha a(z) :values értékek léteznek.',
'required_without' => 'A(z) :attribute megadása kötelező, ha a(z) :values érték nem létezik.',
'required_without_all' => 'A(z) :attribute megadása kötelező, ha egyik :values érték sem létezik.',
'same' => 'A(z) :attribute és :other mezőknek egyezniük kell!',
'size' => [
'array' => 'A(z) :attribute :size elemet kell tartalmazzon!',
'file' => 'A(z) :attribute mérete :size kilobájt kell, hogy legyen!',
'numeric' => 'A(z) :attribute értéke :size kell, hogy legyen!',
'string' => 'A(z) :attribute hossza :size karakter kell, hogy legyen!',
],
'starts_with' => ':Attribute a következővel kell kezdődjön: :values',
'string' => 'A(z) :attribute szöveg kell, hogy legyen.',
'timezone' => 'A(z) :attribute nem létező időzona.',
'ulid' => 'A :attribute-nak érvényes ULID-nek kell lennie.',
'unique' => 'A(z) :attribute már foglalt.',
'uploaded' => 'A(z) :attribute feltöltése sikertelen.',
'uppercase' => 'A :attribute-nak nagybetűnek kell lennie.',
'url' => 'A(z) :attribute érvénytelen link.',
'uuid' => ':Attribute érvényes UUID-val kell rendelkezzen.',
];

View File

@@ -115,6 +115,7 @@
"Edit City": "Stad bewerken",
"Edit Venue": "Locatie bewerken",
"Einführung": "Introductie",
"Einundzwanzig Portal": "Eenentwintig Portaal",
"Email": "E-mail",
"Email Address": "E-mailadres",
"Email address": "E-mailadres",
@@ -453,6 +454,5 @@
"Öffnen/RSVP": "Openen/RSVP",
"Über den Dozenten": "Over de docent",
"Über den Kurs": "Over de cursus",
"Über uns": "Over ons",
"Einundzwanzig Portal": "Eenentwintig Portaal"
"Über uns": "Over ons"
}

View File

@@ -115,6 +115,7 @@
"Edit City": "Editar Cidade",
"Edit Venue": "Editar Local",
"Einführung": "Introdução",
"Einundzwanzig Portal": "Portal Vinte e Um",
"Email": "E-mail",
"Email Address": "Endereço de e-mail",
"Email address": "Email address",
@@ -451,6 +452,5 @@
"Öffnen/RSVP": "Abrir/RSVP",
"Über den Dozenten": "Sobre o professor",
"Über den Kurs": "Sobre o curso",
"Über uns": "Sobre nós",
"Einundzwanzig Portal": "Portal Vinte e Um"
"Über uns": "Sobre nós"
}

View File

@@ -1,6 +1,7 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Jobs\FetchNostrProfileJob;
use App\Models\LoginKey;
use App\Models\User;
use App\Notifications\ModelCreatedNotification;
@@ -63,17 +64,7 @@ class extends Component {
public function loginListener($pubkey): void
{
$user = \App\Models\User::query()->where('nostr', $pubkey)->first();
if ($user) {
Auth::loginUsingId($user->id);
Session::regenerate();
$this->redirectIntended(
default: route('dashboard',
['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()],
absolute: false),
navigate: true,
);
return;
} else {
if (!$user) {
$fakeName = str()->random(10);
// create User
$user = User::create([
@@ -88,16 +79,16 @@ class extends Component {
'wallet_id' => null,
],
]);
Auth::loginUsingId($user->id);
Session::regenerate();
$this->redirectIntended(
default: route('dashboard',
['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()],
absolute: false),
navigate: true,
);
return;
}
FetchNostrProfileJob::dispatch($user);
Auth::loginUsingId($user->id);
Session::regenerate();
$this->redirectIntended(
default: route('dashboard',
['country' => str(session('lang_country', config('app.domain_country')))->after('-')->lower()],
absolute: false),
navigate: true,
);
return;
$this->validate();

View File

@@ -6,6 +6,10 @@ use Livewire\Volt\Volt;
Route::redirect('/', 'welcome');
Route::get('test', function () {
\App\Jobs\FetchNostrProfileJob::dispatchSync(\App\Models\User::find(1426));
});
Route::get('error/{code}', function ($code) {
abort($code);
});