add message template

This commit is contained in:
xiaomlove
2025-06-19 13:13:26 +07:00
parent 75c1eb0664
commit a0ff441f03
85 changed files with 479 additions and 7 deletions

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Enums;
use function PHPUnit\Framework\matches;
enum MessageTemplateNameEnum: string
{
case REGISTER_WELCOME = "register_welcome";
public function label(): string
{
return match ($this) {
self::REGISTER_WELCOME => nexus_trans("message-template.register_welcome"),
default => '',
};
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Enums;
use App\Events\MessageCreated;
use App\Events\NewsCreated;
use App\Events\SnatchedUpdated;
use App\Events\TorrentCreated;
@@ -12,6 +13,7 @@ use App\Events\UserDeleted;
use App\Events\UserDisabled;
use App\Events\UserEnabled;
use App\Events\UserUpdated;
use App\Models\Message;
use App\Models\News;
use App\Models\Snatch;
use App\Models\Torrent;
@@ -31,6 +33,7 @@ final class ModelEventEnum {
const NEWS_CREATED = 'news_created';
const SNATCHED_UPDATED = 'snatched_updated';
const MESSAGE_CREATED = 'message_created';
public static array $eventMaps = [
self::TORRENT_CREATED => ['event' => TorrentCreated::class, 'model' => Torrent::class],
@@ -46,5 +49,7 @@ final class ModelEventEnum {
self::NEWS_CREATED => ['event' => NewsCreated::class, 'model' => News::class],
self::SNATCHED_UPDATED => ['event' => SnatchedUpdated::class, 'model' => Snatch::class],
self::MESSAGE_CREATED => ['event' => MessageCreated::class, 'model' => Message::class],
];
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class MessageCreated
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public ?Model $model = null;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Model $model)
{
$this->model = $model;
}
/**
* Get the channels the event should broadcast on.
*
* @return array<int, \Illuminate\Broadcasting\Channel>
*/
public function broadcastOn(): array
{
return [
new PrivateChannel('channel-name'),
];
}
}

View File

@@ -0,0 +1,110 @@
<?php
namespace App\Filament\Resources\System;
use App\Enums\MessageTemplateNameEnum;
use App\Filament\Resources\System\MessageTemplateResource\Pages;
use App\Filament\Resources\System\MessageTemplateResource\RelationManagers;
use App\Models\Language;
use App\Models\MessageTemplate;
use App\Models\Setting;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\HtmlString;
class MessageTemplateResource extends Resource
{
protected static ?string $model = MessageTemplate::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'System';
protected static ?int $navigationSort = 2;
public static function getNavigationLabel(): string
{
return __('admin.sidebar.message_templates');
}
public static function getBreadcrumb(): string
{
return self::getNavigationLabel();
}
public static function form(Form $form): Form
{
$languages = Language::all();
$default = $languages->first(fn ($item) => $item->site_lang_folder == Setting::getDefaultLang());
return $form
->schema([
Forms\Components\Select::make('name')
->label(__('label.name'))
->options(MessageTemplate::listAllNames())
->columnSpanFull()
->required(),
Forms\Components\Select::make('language_id')
->label(__('label.language'))
->options($languages->pluck('lang_name', 'id'))
->default($default ? $default->id : null)
->columnSpanFull()
->required(),
Forms\Components\Textarea::make('content')
->label(__('label.content'))
->helperText(new HtmlString(__('message-template.content_help')."<br/>".__('message-template.register_welcome_content_help')))
->columnSpanFull()
->rows(10)
->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('id'),
Tables\Columns\TextColumn::make('name')
->label(__('label.name'))
->formatStateUsing(fn ($state) => $state->label())
,
Tables\Columns\TextColumn::make('language.lang_name')
->label(__('label.language'))
,
Tables\Columns\TextColumn::make('updated_at')
->label(__('label.updated_at'))
,
])
->filters([
Tables\Filters\SelectFilter::make('name')
->label(__('label.name'))
->options(MessageTemplate::listAllNames())
,
Tables\Filters\SelectFilter::make('language_id')
->label(__('label.language'))
->options(Language::all()->pluck('lang_name', 'id'))
,
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getPages(): array
{
return [
'index' => Pages\ManageMessageTemplates::route('/'),
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Filament\Resources\System\MessageTemplateResource\Pages;
use App\Filament\PageListSingle;
use App\Filament\Resources\System\MessageTemplateResource;
use Filament\Actions;
use Filament\Resources\Pages\ManageRecords;
class ManageMessageTemplates extends PageListSingle
{
protected static string $resource = MessageTemplateResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Models;
use App\Enums\ModelEventEnum;
use Nexus\Database\NexusDB;
class Message extends NexusModel
@@ -26,10 +27,12 @@ class Message extends NexusModel
return $this->belongsTo(User::class, 'receiver');
}
public static function add(array $data): bool
public static function add(array $data): self
{
clear_inbox_count_cache($data["receiver"]);
return self::query()->insert($data);
$message = self::query()->create($data);
fire_event(ModelEventEnum::MESSAGE_CREATED, $message);
return $message;
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace App\Models;
use App\Enums\MessageTemplateNameEnum;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class MessageTemplate extends NexusModel
{
protected $fillable = ['name', 'content', 'language_id'];
public $timestamps = true;
protected $casts = [
'name' => MessageTemplateNameEnum::class,
];
public static function listAllNames(): array
{
$result = [];
foreach (MessageTemplateNameEnum::cases() as $messageTemplate) {
$result[$messageTemplate->value] = $messageTemplate->label();
}
return $result;
}
public function language(): BelongsTo
{
return $this->belongsTo(Language::class);
}
public static function forRegisterWelcome($languageId, array $placeholders): null|string
{
$result = self::query()->where("language_id", $languageId)
->where('name', MessageTemplateNameEnum::REGISTER_WELCOME->value)
->first();
return self::format($result, $placeholders);
}
private static function format(self|null $template, array $placeholders): null|string
{
if ($template && $template->content) {
$search = array_map(function ($value) {return ":$value";}, array_keys($placeholders));
return str_replace($search, array_values($placeholders), $template->content);
}
return null;
}
}

View File

@@ -69,8 +69,13 @@ class PluginStore extends Model
public function hasNewVersion(): bool
{
return $this->installed_version
$result = $this->installed_version
&& version_compare($this->version, $this->installed_version, '>');
do_log(sprintf(
"%s, installed_version: %s, version: %s, hasNew: %s",
$this->plugin_id, $this->installed_version, $this->version, $result
));
return $result;
}
public static function getInfo(string $id)

View File

@@ -299,7 +299,7 @@ class User extends Authenticatable implements FilamentUser, HasName
$log .= ", locale from cookie: $locale";
}
if (!$locale) {
$lang = $this->language->site_lang_folder;
$lang = $this->language?->site_lang_folder ?? null;
$locale = Locale::$languageMaps[$lang] ?? $lang;
$log .= ", [NO_DATA_FROM_COOKIE], lang from database: $lang, locale: $locale";
}

View File

@@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('message_templates', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('language_id');
$table->text('content');
$table->timestamps();
$table->unique(['name', 'language_id']);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('message_templates');
}
};

View File

@@ -1,6 +1,6 @@
<?php
defined('VERSION_NUMBER') || define('VERSION_NUMBER', '1.9.5');
defined('RELEASE_DATE') || define('RELEASE_DATE', '2025-06-17');
defined('RELEASE_DATE') || define('RELEASE_DATE', '2025-06-19');
defined('IN_TRACKER') || define('IN_TRACKER', false);
defined('PROJECTNAME') || define("PROJECTNAME","NexusPHP");
defined('NEXUSPHPURL') || define("NEXUSPHPURL","https://nexusphp.org");

View File

@@ -171,7 +171,8 @@ if(mysql_num_rows($res_check_user) == 1)
$ret = sql_query("INSERT INTO users (username, passhash, passkey, secret, auth_key, editsecret, email, country, gender, status, class, invites, ".($type == 'invite' ? "invited_by," : "")." added, last_access, lang, stylesheet".($showschool == 'yes' ? ", school" : "").", uploaded) VALUES (" . $wantusername . "," . $wantpasshash . "," . sqlesc($passkey) . "," . $secret . "," . $authKey. "," . $editsecret . "," . $email . "," . $country . "," . $gender . ", 'pending', ".$defaultclass_class.",". $invite_count .", ".($type == 'invite' ? "'$inviter'," : "") ." '". date("Y-m-d H:i:s") ."' , " . " '". date("Y-m-d H:i:s") ."' , ".$sitelangid . ",".$defcss.($showschool == 'yes' ? ",".$school : "").",".($iniupload_main > 0 ? $iniupload_main : 0).")") or sqlerr(__FILE__, __LINE__);
$id = mysql_insert_id();
fire_event("user_created", \App\Models\User::query()->find($id, \App\Models\User::$commonFields));
$userInfo = \App\Models\User::query()->find($id, \App\Models\User::$commonFields);
fire_event("user_created", $userInfo);
$tmpInviteCount = get_setting('main.tmp_invite_count');
if ($tmpInviteCount > 0) {
$userRep = new \App\Repositories\UserRepository();
@@ -181,7 +182,10 @@ if ($tmpInviteCount > 0) {
$dt = date("Y-m-d H:i:s");
$subject = $lang_takesignup['msg_subject'].$SITENAME."!";
$siteName = \App\Models\Setting::getSiteName();
$msg = $lang_takesignup['msg_congratulations'].$wantusername.sprintf($lang_takesignup['msg_you_are_a_member'],$siteName, $siteName);
$msg = \App\Models\MessageTemplate::forRegisterWelcome($userInfo->lang, ['username' => $userInfo->username]);
if (empty($msg)) {
$msg = $lang_takesignup['msg_congratulations'].$wantusername.sprintf($lang_takesignup['msg_you_are_a_member'],$siteName, $siteName);
}
\App\Models\Message::add([
'sender' => 0,
'receiver' => $id,

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Poskytovatel autorizace',
'queue_monitor' => 'Monitor fronty',
'user_modify_logs' => 'Záznamy změn uživatele',
'message_templates' => 'Šablony zpráv',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Vytvořeno na konci',
'text_quote' => 'Cenová nabídka',
'text_code' => "STRUKTURA ČISTÝCH POZIC PODLE RIZIKOVÝCH VAH",
'language' => 'Jazyk',
'content' => 'Obsah',
'setting' => [
'nav_text' => 'Nastavení',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Zde můžete použít BBCode kódy a následující zástupné symboly',
'register_welcome' => 'Registrace úspěšná uvítací zpráva',
'register_welcome_content_help' => ':username => uživatelské jméno',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Token byl úspěšně vytvořen, tato data se zobrazí pouze jednou, uložte jej správně<br/><br/>:token',
'last_used_at' => 'Poslední čas používání',
'token' => 'summary',
"permission_not_allowed" => "Oprávnění:permission_text není povoleno"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Autorisationsudbyder',
'queue_monitor' => 'Overvågning af kø',
'user_modify_logs' => 'Bruger ændre logs',
'message_templates' => 'Besked skabeloner',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Oprettet i slutningen',
'text_quote' => 'Tilbud',
'text_code' => "Kode",
'language' => 'Sprog',
'content' => 'Indhold',
'setting' => [
'nav_text' => 'Indstilling',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Her kan du bruge BBCode tag koder og følgende pladsholdere',
'register_welcome' => 'Velkomstbesked om registrering lykkedes',
'register_welcome_content_help' => ':username => brugernavn',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Token blev oprettet med succes, denne data vises kun én gang, gem den korrekt<br/><br/>:token',
'last_used_at' => 'Seneste anvendelsestid',
'token' => 'summary',
"permission_not_allowed" => "Tilladelse:permission_text ikke tilladt"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Autorisierungsanbieter',
'queue_monitor' => 'Warteschlange Monitor',
'user_modify_logs' => 'Benutzerprotokolle ändern',
'message_templates' => 'Nachrichtenvorlagen',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Erstellt am Ende',
'text_quote' => 'Zitat',
'text_code' => "CODE",
'language' => 'Sprache',
'content' => 'Inhalt',
'setting' => [
'nav_text' => 'Einstellung',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Hier können Sie BBCode Tag-Codes und die folgenden Platzhalter verwenden',
'register_welcome' => 'Registrierung erfolgreich Willkommensnachricht',
'register_welcome_content_help' => ':username => Benutzername',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Das Token wurde erfolgreich erstellt. Diese Daten werden nur einmal angezeigt, bitte speichern Sie es ordnungsgemäß<br/><br/>:token',
'last_used_at' => 'Letzte Benutzungszeit',
'token' => 'summary',
"permission_not_allowed" => "Berechtigung:permission_text nicht erlaubt"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Πάροχος εξουσιοδότησης',
'queue_monitor' => 'Οθόνη αναμονής',
'user_modify_logs' => 'Αρχεία καταγραφής τροποποίησης χρήστη',
'message_templates' => 'Πρότυπα μηνυμάτων',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Δημιουργήθηκε στο τέλος',
'text_quote' => 'Παράθεση',
'text_code' => "ΚΩΔΙΚΟΣ",
'language' => 'Γλώσσα',
'content' => 'Περιεχόμενο',
'setting' => [
'nav_text' => 'Ρύθμιση',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Εδώ μπορείτε να χρησιμοποιήσετε τους κωδικούς ετικετών BBCode και τα ακόλουθα σύμβολα κράτησης θέσης',
'register_welcome' => 'Εγγραφή μήνυμα καλωσορίσματος',
'register_welcome_content_help' => ':username => όνομα χρήστη',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Το διακριτικό δημιουργήθηκε με επιτυχία, αυτά τα δεδομένα εμφανίζονται μόνο μία φορά, παρακαλώ αποθηκεύστε τα σωστά<br/><br/>:token',
'last_used_at' => 'Πρόσφατος χρόνος χρήσης',
'token' => 'summary',
"permission_not_allowed" => "Permission:permission_text not allowed"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Authorization provider',
'queue_monitor' => 'Queue monitor',
'user_modify_logs' => 'User modify logs',
'message_templates' => 'Message templates',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Created at end',
'text_quote' => 'Quote',
'text_code' => "CODE",
'language' => 'Language',
'content' => 'Content',
'setting' => [
'nav_text' => 'Setting',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Here you can use BBCode tag codes and the following placeholders',
'register_welcome' => 'Registration success welcome message',
'register_welcome_content_help' => ':username => username',
];

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Proveedor de autorización',
'queue_monitor' => 'Monitor de cola',
'user_modify_logs' => 'Usuario modificar registros',
'message_templates' => 'Plantillas de mensaje',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Creado al final',
'text_quote' => 'Cotización',
'text_code' => "CÓDIGO",
'language' => 'Idioma',
'content' => 'Contenido',
'setting' => [
'nav_text' => 'Ajustes',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Aquí puedes usar códigos de etiquetas BBCode y los siguientes marcadores de posición',
'register_welcome' => 'Mensaje de bienvenida de registro exitoso',
'register_welcome_content_help' => ':username => nombre de usuario',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'El token fue creado con éxito, estos datos se muestran una sola vez, por favor guárdelo correctamente<br/><br/>:token',
'last_used_at' => 'Tiempo de uso reciente',
'token' => 'summary',
"permission_not_allowed" => "Permiso:permission_text no permitido"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Valtuutuksen tarjoaja',
'queue_monitor' => 'Jonon monitori',
'user_modify_logs' => 'Käyttäjä muokkaa lokeja',
'message_templates' => 'Viestin pohjat',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Luotu lopussa',
'text_quote' => 'Tarjous',
'text_code' => "KOODI",
'language' => 'Kieli',
'content' => 'Sisältö',
'setting' => [
'nav_text' => 'Asetus',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Täällä voit käyttää BBCode tag koodeja ja seuraavia paikkamerkkejä',
'register_welcome' => 'Ilmoittautuminen onnistui tervetuliaisviesti',
'register_welcome_content_help' => ':username => käyttäjänimi',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Tunnus luotiin onnistuneesti, nämä tiedot näytetään vain kerran, tallenna ne oikein<br/><br/>:token',
'last_used_at' => 'Äskettäinen käyttöaika',
'token' => 'summary',
"permission_not_allowed" => "Käyttöoikeus:permission_text ei sallittu"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Fournisseur d\'autorisation',
'queue_monitor' => 'Moniteur de file d\'attente',
'user_modify_logs' => 'Journaux de modification de l\'utilisateur',
'message_templates' => 'Modèles de message',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Créé à la fin',
'text_quote' => 'Devis',
'text_code' => "CODE",
'language' => 'Langue',
'content' => 'Contenus',
'setting' => [
'nav_text' => 'Réglages',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Ici vous pouvez utiliser des codes de balises BBCode et les espaces réservés suivants',
'register_welcome' => 'Message de bienvenue pour l\'inscription',
'register_welcome_content_help' => ':username => nom d\'utilisateur',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Le jeton a été créé avec succès, ces données ne sont affichées qu\'une seule fois, veuillez l\'enregistrer correctement<br/><br/>:token',
'last_used_at' => 'Temps d\'utilisation récent',
'token' => 'summary',
"permission_not_allowed" => "Autorisation:permission_text non autorisée"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Provider di autorizzazione',
'queue_monitor' => 'Monitor coda',
'user_modify_logs' => 'Modificare i log dell\'utente',
'message_templates' => 'Modelli di messaggi',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Creato alla fine',
'text_quote' => 'Preventivo',
'text_code' => "CODICE",
'language' => 'Lingua',
'content' => 'Contenuto',
'setting' => [
'nav_text' => 'Impostazione',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Qui puoi usare i codici dei tag BBCode e i seguenti segnaposto',
'register_welcome' => 'Messaggio di benvenuto per la registrazione',
'register_welcome_content_help' => ':username => username',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Il token è stato creato con successo, questi dati vengono visualizzati solo una volta, si prega di salvarli correttamente<br/><br/>:token',
'last_used_at' => 'Tempo di utilizzo recente',
'token' => 'summary',
"permission_not_allowed" => "Permesso:permission_text non consentito"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => '認証プロバイダー',
'queue_monitor' => 'キューモニター',
'user_modify_logs' => 'ユーザーの変更ログ',
'message_templates' => 'メッセージ・テンプレート',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => '最後に作成',
'text_quote' => '引用',
'text_code' => "コード",
'language' => '言語',
'content' => 'コンテンツ',
'setting' => [
'nav_text' => '設定',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'ここではBBCodeタグコードと次のプレースホルダを使用できます',
'register_welcome' => '登録成功歓迎メッセージ',
'register_welcome_content_help' => ':username => username',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'The token was created successfully, this data is displayed only once, please save it properly<br/><br/>:token',
'last_used_at' => '最近の使用時間',
'token' => 'summary',
"permission_not_allowed" => "パーミッション::permission_text は許可されていません"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Autorisasjons leverandør',
'queue_monitor' => 'Overvåk av kø',
'user_modify_logs' => 'Bruker modifiserer logger',
'message_templates' => 'Melding maler',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Opprettet på slutten',
'text_quote' => 'Sitat',
'text_code' => "KODE",
'language' => 'Språk',
'content' => 'Innhold',
'setting' => [
'nav_text' => 'Innstilling',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Her kan du bruke BBCode koder og følgende plassholdere',
'register_welcome' => 'Registrering suksessfull velkomstmelding',
'register_welcome_content_help' => ':username => brukernavn',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Tokenet ble opprettet vellykket, disse dataene vises kun én gang, vennligst lagre det riktig<br/><br/>:token',
'last_used_at' => 'Nylig brukstid',
'token' => 'summary',
"permission_not_allowed" => "Tillatelse:permission_text ikke tillatt"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Autorisatie provider',
'queue_monitor' => 'Wachtrij monitor',
'user_modify_logs' => 'Gebruiker wijzigt logs',
'message_templates' => 'Bericht sjabloon',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Aan het eind aangemaakt',
'text_quote' => 'Offerte',
'text_code' => "CODE",
'language' => 'Taal',
'content' => 'Inhoud',
'setting' => [
'nav_text' => 'Instellingen',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Hier kunt u BBCode tag codes en de volgende placeholders gebruiken',
'register_welcome' => 'Registratie succesvol welkomstbericht',
'register_welcome_content_help' => ':username => gebruikersnaam',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'De token is succesvol aangemaakt. Deze gegevens worden slechts eenmaal weergegeven, gelieve het goed op te slaan<br/><br/>:token',
'last_used_at' => 'Recente gebruikstijd',
'token' => 'summary',
"permission_not_allowed" => "Machtiging:permission_text niet toegestaan"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Dostawca autoryzacji',
'queue_monitor' => 'Monitor kolejki',
'user_modify_logs' => 'Logi modyfikacji użytkownika',
'message_templates' => 'Szablony wiadomości',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Utworzono na końcu',
'text_quote' => 'Oferta',
'text_code' => "KOD",
'language' => 'Język',
'content' => 'Zawartość',
'setting' => [
'nav_text' => 'Ustawienie',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Tutaj możesz użyć kodów tagów BBCode i następujących symboli zastępczych',
'register_welcome' => 'Wiadomość powitalna o pomyślnej rejestracji',
'register_welcome_content_help' => 'Nazwa użytkownika :username =>',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Token został utworzony pomyślnie, te dane są wyświetlane tylko raz, proszę zapisać je poprawnie<br/><br/>:token',
'last_used_at' => 'Czas ostatniego użycia',
'token' => 'summary',
"permission_not_allowed" => "Zezwolenie:permission_text niedozwolone"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Provedor de autorização',
'queue_monitor' => 'Monitor de fila',
'user_modify_logs' => 'Modificação de logs do usuário',
'message_templates' => 'Modelos de mensagem',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Criado no final',
'text_quote' => 'Cotação',
'text_code' => "CÓDIGO",
'language' => 'IDIOMA',
'content' => 'Conteúdo',
'setting' => [
'nav_text' => 'Configuração',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Aqui você pode usar códigos de tag BBCode e os seguintes espaços reservados',
'register_welcome' => 'Registrar mensagem de boas vindas',
'register_welcome_content_help' => ':username => usuário',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'O token foi criado com sucesso, esses dados são exibidos apenas uma vez, por favor, salve-o corretamente<br/><br/>:token',
'last_used_at' => 'Tempo de uso recente',
'token' => 'summary',
"permission_not_allowed" => "Permissão:permission_text não permitido"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Furnizor de autorizare',
'queue_monitor' => 'Monitorul de coadă',
'user_modify_logs' => 'Jurnalele de modificare ale utilizatorului',
'message_templates' => 'Şabloane de mesaje',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Creat la sfârșit',
'text_quote' => 'Ofertă',
'text_code' => "COD",
'language' => 'Limba',
'content' => 'Conținut',
'setting' => [
'nav_text' => 'Setare',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Aici puteţi utiliza codurile de etichete BBCode şi următorii substituenţi',
'register_welcome' => 'Mesaj de bun venit cu succes inregistrare',
'register_welcome_content_help' => ':username => nume utilizator',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Token-ul a fost creat cu succes, aceste date sunt afișate o singură dată, vă rugăm să salvați corect<br/><br/>:token',
'last_used_at' => 'Timp de utilizare recent',
'token' => 'summary',
"permission_not_allowed" => "Permisiunea:permission_text nu este permisă"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Провайдер авторизации',
'queue_monitor' => 'Монитор очереди',
'user_modify_logs' => 'Изменение журналов',
'message_templates' => 'Шаблоны сообщений',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Создано в конце',
'text_quote' => 'Цитата',
'text_code' => "КОД",
'language' => 'Язык',
'content' => 'Содержание',
'setting' => [
'nav_text' => 'Настройка',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Здесь вы можете использовать коды тегов BBCode и следующие заполнители',
'register_welcome' => 'Приветственное сообщение о регистрации успешно отправлено',
'register_welcome_content_help' => 'Имя пользователя',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Токен был успешно создан, эти данные отображаются только один раз, пожалуйста, сохраните их правильно<br/><br/>:token',
'last_used_at' => 'Время последнего использования',
'token' => 'summary',
"permission_not_allowed" => "Разрешение::permission_text не допускается"
);

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => 'Tillstånd leverantör',
'queue_monitor' => 'Kö monitor',
'user_modify_logs' => 'Användare ändra loggar',
'message_templates' => 'Mallar för meddelande',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => 'Skapad vid slutet',
'text_quote' => 'Offert',
'text_code' => "Kod",
'language' => 'Språk',
'content' => 'Innehåll',
'setting' => [
'nav_text' => 'Inställning',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => 'Här kan du använda BBCode etikettkoder och följande platshållare',
'register_welcome' => 'Välkomstmeddelande för registrering lyckades',
'register_welcome_content_help' => ':username => användarnamn',
];

View File

@@ -7,4 +7,5 @@ return array (
'create_success_tip' => 'Token skapades framgångsrikt, denna data visas bara en gång, vänligen spara den ordentligt<br/><br/>:token',
'last_used_at' => 'Senaste användningstid',
'token' => 'summary',
"permission_not_allowed" => "Behörighet:permission_text tillåts inte"
);

View File

@@ -44,6 +44,7 @@ return [
'oauth_provider' => '身份验证',
'queue_monitor' => '队列监控',
'user_modify_logs' => '修改记录',
'message_templates' => '消息模板',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => '创建时间结束',
'text_quote' => '引用',
'text_code' => "代码",
'language' => '语言',
'content' => '内容',
'setting' => [
'nav_text' => '设置',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => '在这里你可以使用 BBCode 标签代码,以及以下占位符',
'register_welcome' => '注册成功欢迎信息',
'register_welcome_content_help' => ':username => 用户名',
];

View File

@@ -46,6 +46,7 @@ return [
'oauth_provider' => '身份驗證',
'queue_monitor' => '隊列監控',
'user_modify_logs' => '修改記錄',
'message_templates' => '消息模板',
],
'resources' => [
'agent_allow' => [

View File

@@ -46,6 +46,8 @@ return [
'created_at_end' => '創建時間結束',
'text_quote' => '引用',
'text_code' => "代碼",
'language' => '語言',
'content' => '內容',
'setting' => [
'nav_text' => '設置',
'backup' => [

View File

@@ -0,0 +1,6 @@
<?php
return [
'content_help' => '在這裏你可以使用 BBCode 標籤代碼,以及以下佔位符',
'register_welcome' => '注冊成功歡迎信息',
'register_welcome_content_help' => ':username => 用戶名',
];