Address changes.

This commit is contained in:
Cody Cook 2025-02-22 17:20:19 -08:00
commit 635b3ddcbc
59 changed files with 7249 additions and 2745 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -32,6 +32,9 @@ class CDN
]);
}
/**
* @throws \Exception
*/
public function uploadFile(string $localPath, string $remotePath, string $mimeType, string $acl = 'private')
{
try {
@ -48,6 +51,9 @@ class CDN
}
}
/**
* @throws \Exception
*/
public function renameFile(string $oldRemotePath, string $newRemotePath)
{
// S3 does not support renaming directly. Copy then delete.

View file

@ -49,4 +49,18 @@ class DJs
$stmt->close();
return $djs;
}
public function search(string $query, int $page = 1, int $resultsPerPage = 10): array {
$offset = ($page - 1) * $resultsPerPage;
$likeQuery = "%" . $query . "%";
$stmt = $this->db->prepare("SELECT * FROM djs WHERE name LIKE ? OR bio LIKE ? LIMIT ?, ?");
$stmt->bind_param("ssii", $likeQuery, $likeQuery, $offset, $resultsPerPage);
$stmt->execute();
$result = $stmt->get_result();
$djs = $result->fetch_all(MYSQLI_ASSOC);
$stmt->close();
return $djs;
}
}

View file

@ -4,32 +4,32 @@ namespace DJMixHosting;
class DownloadMix
{
private $db;
private $mix;
private $ready = false;
private $name;
private $djs;
private $filename;
private $url;
private $mix_id;
private Database $db;
private Mix $mix;
private bool $ready = false;
private string $name;
private string $djs;
private string $filename;
private string $url;
private int $mix_id;
private $content;
private $filesize = 0;
private $ext;
private int $filesize = 0;
private string $ext;
public function __construct($mix, $db)
{
$this->db = $db;
$this->mix = $mix;
$this->mix_id = $mix->get_id();
$this->mix_id = $mix->getId();
$this->preDownload();
}
private function preDownload()
private function preDownload(): void
{
$this->name = $this->mix->get_name();
$buildDJs = $this->mix->get_djs();
$this->url = $this->mix->get_url();
$this->name = $this->mix->getName();
$buildDJs = $this->mix->getDJs();
$this->url = $this->mix->getUrl();
$this->djs = '';
$djCount = 0;
foreach ($buildDJs as $dj) {
@ -42,7 +42,7 @@ class DownloadMix
}
public function download()
public function download(): void
{
$this->loadDownload();
if (!$this->ready) {
@ -56,23 +56,24 @@ class DownloadMix
}
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Length: " . $this->filesize);
header("Content-Disposition: attachment; filename=\"" . $this->filename . "\"");
echo $this->content;
}
}
private function loadDownload()
private function loadDownload(): void
{
$this->content = file_get_contents($this->url);
$this->filesize = strlen($this->content);
$this->ext = pathinfo(basename($this->url), PATHINFO_EXTENSION);
$this->filename = $this->djs . ' - ' . $this->name . ' (Downloaded from UtahsDJs.com).' . pathinfo(basename($this->url), PATHINFO_EXTENSION);
$this->filename = $this->djs . ' - ' . $this->name . ' (Downloaded from UtahsDJs.com).' . $this->ext;
if ($this->filesize > 0) {
$this->ready = true;
}
}
private function checkForMixDownloadCount()
private function checkForMixDownloadCount(): bool
{
$stmt = $this->db->prepare("SELECT * FROM mix_meta WHERE attribute = 'downloads' and mix_id = ?");
$stmt->bind_param('i', $this->mix_id);
@ -87,7 +88,7 @@ class DownloadMix
}
}
private function incrementMixDownloadCount()
private function incrementMixDownloadCount(): void
{
$stmt = $this->db->prepare("UPDATE mix_meta SET value = value + 1 WHERE attribute = 'downloads' and mix_id = ?");
$stmt->bind_param('i', $this->mix_id);
@ -95,7 +96,7 @@ class DownloadMix
$stmt->close();
}
private function addMixDownloadCount()
private function addMixDownloadCount(): void
{
$stmt = $this->db->prepare("INSERT INTO mix_meta (mix_id, attribute, value) VALUES (?, 'downloads', 1)");
$stmt->bind_param('i', $this->mix_id);
@ -103,4 +104,9 @@ class DownloadMix
$stmt->close();
}
public function getExt(): string
{
return $this->ext;
}
}

View file

@ -52,4 +52,17 @@ class Genres
$stmt->close();
return $genres;
}
public function search(string $query, int $page = 1, int $resultsPerPage = 10): array {
$offset = ($page - 1) * $resultsPerPage;
$likeQuery = "%" . $query . "%";
$stmt = $this->db->prepare("SELECT * FROM genres WHERE name LIKE ? LIMIT ?, ?");
$stmt->bind_param("sii", $likeQuery, $offset, $resultsPerPage);
$stmt->execute();
$result = $stmt->get_result();
$genres = $result->fetch_all(MYSQLI_ASSOC);
$stmt->close();
return $genres;
}
}

73
classes/Mixes.php Normal file
View file

@ -0,0 +1,73 @@
<?php
namespace DJMixHosting;
class Mixes
{
private $db;
private $mixes = [];
public function __construct($db)
{
$this->db = $db;
// Automatically load all mixes upon instantiation.
if (!$this->load_all_mixes()) {
// Optionally, handle errors or fallback logic here.
return false;
}
return true;
}
/**
* Load all mixes from the database.
*
* @return bool
*/
private function load_all_mixes(): bool
{
$mixes = $this->get_all_mixes();
if ($mixes) {
$this->mixes = $mixes;
return true;
}
return false;
}
/**
* Retrieve all mixes.
*
* @param string $order The sort order (ASC or DESC).
* @return array
*/
public function get_all_mixes(string $order = "ASC"): array
{
// Assuming your mix table has a column called "name"
$stmt = $this->db->prepare("SELECT * FROM mix ORDER BY title $order");
$stmt->execute();
$result = $stmt->get_result();
$mixes = $result->fetch_all(MYSQLI_ASSOC);
$stmt->close();
return $mixes;
}
/**
* Search mixes by name and description.
*
* @param string $query The search keyword.
* @param int $page The current page number.
* @param int $resultsPerPage The number of results per page.
* @return array
*/
public function search(string $query, int $page = 1, int $resultsPerPage = 10): array
{
$offset = ($page - 1) * $resultsPerPage;
$likeQuery = "%" . $query . "%";
// Adjust the SQL if your mix table uses different column names (e.g., title instead of name)
$stmt = $this->db->prepare("SELECT * FROM mix WHERE title LIKE ? OR description LIKE ? LIMIT ?, ?");
$stmt->bind_param("ssii", $likeQuery, $likeQuery, $offset, $resultsPerPage);
$stmt->execute();
$result = $stmt->get_result();
$mixes = $result->fetch_all(MYSQLI_ASSOC);
$stmt->close();
return $mixes;
}
}

View file

@ -52,4 +52,17 @@ class Mixshows
$stmt->close();
return $mixshows;
}
public function search(string $query, int $page = 1, int $resultsPerPage = 10): array {
$offset = ($page - 1) * $resultsPerPage;
$likeQuery = "%" . $query . "%";
$stmt = $this->db->prepare("SELECT * FROM shows WHERE name LIKE ? OR description LIKE ? LIMIT ?, ?");
$stmt->bind_param("ssii", $likeQuery, $likeQuery, $offset, $resultsPerPage);
$stmt->execute();
$result = $stmt->get_result();
$mixshows = $result->fetch_all(MYSQLI_ASSOC);
$stmt->close();
return $mixshows;
}
}

View file

@ -1,36 +1,64 @@
<?php
namespace DJMixHosting;
class RSS
{
class RSS {
private string $channelTitle;
private string $channelLink;
private string $channelDescription;
private array $items = [];
private string $pubDateFormat = "D, d M Y H:i:s O";
private $db;
private string $header = '<?xml version="1.0" encoding="UTF-8" ?>';
private string $rss = '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0">';
private function itemMix($mix)
{
$output = new Mix($mix, $this->db);
if ($output->get_recorded() != "") {
$pubdate = date('D, d M Y H:i:s O', strtotime($output->get_recorded()));
} elseif ($output->get_created() != "") {
$pubdate = date('D, d M Y H:i:s O', strtotime($output->get_created()));
} else {
$pubdate = date('D, d M Y H:i:s O', strtotime('2008-01-01 12:00:00'));
}
echo '<item>';
echo '<title>' . $output->get_name() . '</title>';
echo '<description>' . $output->get_description() . '</description>';
echo '<link>' . $output->get_url() . '</link>';
echo '<guid>' . $output->get_slug() . '</guid>';
echo '<pubDate>' . $pubdate . '</pubDate>';
echo '</item>';
public function __construct(string $title, string $link, string $description) {
$this->channelTitle = $title;
$this->channelLink = $link;
$this->channelDescription = $description;
}
}
/**
* Add an item to the RSS feed.
*
* @param string $title Item title.
* @param string $description Item description.
* @param string $link Item URL.
* @param string $pubDate A date/time string (accepted by strtotime).
*/
public function addItem(string $title, string $description, string $link, string $pubDate): void {
$this->items[] = [
'title' => htmlspecialchars($title),
'description' => htmlspecialchars($description),
'link' => $link,
'guid' => $link,
'pubDate' => date($this->pubDateFormat, strtotime($pubDate))
];
}
/**
* Generate the complete RSS XML.
*
* @return string The RSS XML string.
*/
public function generateXML(): string {
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$xml .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' . "\n";
$xml .= " <channel>\n";
$xml .= " <title>{$this->channelTitle}</title>\n";
$xml .= " <link>{$this->channelLink}</link>\n";
$xml .= " <description>{$this->channelDescription}</description>\n";
$xml .= " <lastBuildDate>" . date($this->pubDateFormat) . "</lastBuildDate>\n";
// Optionally add additional channel tags here
foreach ($this->items as $item) {
$xml .= " <item>\n";
$xml .= " <title>{$item['title']}</title>\n";
$xml .= " <description>{$item['description']}</description>\n";
$xml .= " <link>{$item['link']}</link>\n";
$xml .= " <guid>{$item['guid']}</guid>\n";
$xml .= " <pubDate>{$item['pubDate']}</pubDate>\n";
$xml .= " </item>\n";
}
$xml .= " </channel>\n";
$xml .= "</rss>";
return $xml;
}
}

View file

@ -2,29 +2,27 @@
namespace DJMixHosting;
use DateMalformedStringException;
use DateTime;
use Exception;
use Random\RandomException;
use Aws\Ses\SesClient;
use Aws\Exception\AwsException;
class User {
private $db;
private $id;
private $username;
private $firstName;
private $lastName;
private $email;
private $location;
private $bio;
private $created;
private $updated;
private $verified;
private $role;
private $img = "";
private $api_key;
private Database $db;
private string $id;
private string $username;
private string $firstName;
private string $lastName;
private string $email;
private string $location;
private string $bio;
private string $created;
private string $updated;
private bool $verified;
private string $role;
private string $img = "";
private string $api_key;
public function __construct($db, $id = null) {
$this->db = $db;
@ -36,7 +34,8 @@ class User {
/**
* Load user data from the database by id.
*/
private function loadUserById($id) {
private function loadUserById($id): void
{
$stmt = $this->db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
@ -56,9 +55,9 @@ class User {
$this->updated = $user_data['lastupdated'];
$this->role = $user_data['isAdmin'] ? 'admin' : 'user';
// These fields are not in your table; assign defaults or remove them.
$this->location = "";
$this->bio = "";
// New fields loaded from the database
$this->location = $user_data['location'] ?? "";
$this->bio = $user_data['bio'] ?? "";
}
}
@ -69,7 +68,7 @@ class User {
*/
public function newUser(string $username, string $password, string $email, string $firstName, string $lastName): int {
if ($this->check_existing_user($username, $email)) {
throw new \Random\RandomException("User already exists");
throw new RandomException("User already exists");
}
$this->username = $username;
$this->email = $email;
@ -87,8 +86,8 @@ class User {
$this->img = "";
$this->api_key = bin2hex(random_bytes(32));
$stmt = $this->db->prepare("INSERT INTO users (username, password, email, firstName, lastName, img, emailVerified) VALUES (?, ?, ?, ?, ?, '', 0)");
$stmt->bind_param("sssss", $this->username, $password_hashed, $this->email, $this->firstName, $this->lastName);
$stmt = $this->db->prepare("INSERT INTO users (username, password, email, firstName, lastName, img, emailVerified, apiKey, location, bio) VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?, ?)");
$stmt->bind_param("sssssssss", $this->username, $password_hashed, $this->email, $this->firstName, $this->lastName, $this->img, $this->api_key, $this->location, $this->bio);
$stmt->execute();
$userId = $stmt->insert_id;
$stmt->close();
@ -97,8 +96,8 @@ class User {
return $userId;
}
private function check_existing_user($username, $email) {
private function check_existing_user($username, $email): false|array|null
{
$stmt = $this->db->prepare("SELECT * FROM users WHERE username = ? OR email = ?");
$stmt->bind_param("ss", $username, $email);
$stmt->execute();
@ -113,8 +112,10 @@ class User {
*
* Returns the user data array if successful. In case of failure,
* a string error message is returned.
* @throws DateMalformedStringException
*/
public function login($email, $password) {
public function login($email, $password): array|string
{
// Retrieve user record by email
$stmt = $this->db->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
@ -161,6 +162,7 @@ class User {
* Update (or create) a record in the login_attempts table for a failed attempt.
* If attempts reach 3, set a lockout that doubles each time.
* Returns the current number of attempts.
* @throws DateMalformedStringException
*/
private function updateFailedAttempt($email) {
// Check for an existing record
@ -187,31 +189,27 @@ class User {
$stmt = $this->db->prepare("UPDATE login_attempts SET attempts = ?, lockouts = ?, last_attempt = NOW(), lockout_until = ? WHERE email = ?");
$lockout_until_str = $lockout_until->format('Y-m-d H:i:s');
$stmt->bind_param("iiss", $attempts, $lockouts, $lockout_until_str, $email);
$stmt->execute();
$stmt->close();
} else {
$stmt = $this->db->prepare("UPDATE login_attempts SET attempts = ?, last_attempt = NOW() WHERE email = ?");
$stmt->bind_param("is", $attempts, $email);
$stmt->execute();
$stmt->close();
}
return $attempts;
} else {
// Create a new record for this email
$attempts = 1;
$lockouts = 0;
$stmt = $this->db->prepare("INSERT INTO login_attempts (email, attempts, lockouts, last_attempt) VALUES (?, ?, ?, NOW())");
$stmt->bind_param("sii", $email, $attempts, $lockouts);
$stmt->execute();
$stmt->close();
return $attempts;
}
$stmt->execute();
$stmt->close();
return $attempts;
}
/**
* Reset the login_attempts record for the given email.
*/
private function resetLoginAttempts($email) {
private function resetLoginAttempts($email): void
{
$stmt = $this->db->prepare("DELETE FROM login_attempts WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
@ -224,12 +222,12 @@ class User {
* @param string $newEmail
* @param array $config Configuration array for AWS SES and app settings.
* @return string Success message.
* @throws \Exception on validation or email-sending failure.
* @throws Exception on validation or email-sending failure.
*/
public function updateEmail(string $newEmail, array $config): string {
$newEmail = filter_var($newEmail, FILTER_VALIDATE_EMAIL);
if (!$newEmail) {
throw new \Exception("Invalid email format.");
throw new Exception("Invalid email format.");
}
// Update email and mark as unverified.
@ -258,7 +256,11 @@ class User {
return "Email updated. A verification email has been sent to your new address.";
}
public function updateName($firstName, $lastName) {
/**
* @throws Exception
*/
public function updateName($firstName, $lastName): string
{
// Update the user's name.
$stmt = $this->db->prepare("UPDATE users SET firstName = ?, lastName = ? WHERE id = ?");
$stmt->bind_param("ssi", $firstName, $lastName, $this->id);
@ -274,7 +276,11 @@ class User {
return "Name updated successfully.";
}
public function updatePassword($currentPassword, $newPassword, $confirmPassword) {
/**
* @throws Exception
*/
public function updatePassword($currentPassword, $newPassword, $confirmPassword): string
{
// Retrieve the current password hash.
$stmt = $this->db->prepare("SELECT password FROM users WHERE id = ?");
$stmt->bind_param("i", $this->id);
@ -307,7 +313,11 @@ class User {
return "Password updated successfully.";
}
public function updateUsername($newUsername) {
/**
* @throws Exception
*/
public function updateUsername($newUsername): string
{
// Validate username format.
if (!preg_match('/^[a-zA-Z0-9_]{3,25}$/', $newUsername)) {
throw new Exception("Invalid username format.");
@ -339,7 +349,7 @@ class User {
*
* @param string $verification_code The code submitted by the user.
* @return string Success message.
* @throws \Exception If the code is invalid or expired.
* @throws Exception If the code is invalid or expired.
*/
public function verifyEmail(string $verification_code): string {
// Look up the verification record for this user and code
@ -351,14 +361,14 @@ class User {
$stmt->close();
if (!$record) {
throw new \Exception("Invalid verification code.");
throw new Exception("Invalid verification code.");
}
// Check if the verification code has expired
$current_time = new \DateTime();
$expires_at = new \DateTime($record['expires_at']);
$current_time = new DateTime();
$expires_at = new DateTime($record['expires_at']);
if ($current_time > $expires_at) {
throw new \Exception("Verification code has expired. Please request a new one.");
throw new Exception("Verification code has expired. Please request a new one.");
}
// Update the user's record to mark the email as verified
@ -379,18 +389,50 @@ class User {
return "Email verified successfully.";
}
// New setters for location and bio
/**
* @throws Exception
*/
public function setLocation(string $location): string {
$stmt = $this->db->prepare("UPDATE users SET location = ? WHERE id = ?");
$stmt->bind_param("si", $location, $this->id);
if ($stmt->execute()) {
$this->location = $location;
$stmt->close();
return "Location updated successfully.";
}
$stmt->close();
throw new Exception("Failed to update location.");
}
/**
* @throws Exception
*/
public function setBio(string $bio): string {
$stmt = $this->db->prepare("UPDATE users SET bio = ? WHERE id = ?");
$stmt->bind_param("si", $bio, $this->id);
if ($stmt->execute()) {
$this->bio = $bio;
$stmt->close();
return "Bio updated successfully.";
}
$stmt->close();
throw new Exception("Failed to update bio.");
}
// Getter methods
public function getId() { return $this->id; }
public function getUsername() { return $this->username; }
public function getFirstName() { return $this->firstName; }
public function getLastName() { return $this->lastName; }
public function getEmail() { return $this->email; }
public function getLocation() { return $this->location; }
public function getBio() { return $this->bio; }
public function getCreated() { return $this->created; }
public function getUpdated() { return $this->updated; }
public function getVerified() { return $this->verified; }
public function getRole() { return $this->role; }
public function getImg() { return $this->img; }
public function getApiKey() { return $this->api_key; }
public function getId(): string { return $this->id; }
public function getUsername(): string { return $this->username; }
public function getFirstName(): string { return $this->firstName; }
public function getLastName(): string { return $this->lastName; }
public function getEmail(): string { return $this->email; }
public function getLocation(): string { return $this->location; }
public function getBio(): string { return $this->bio; }
public function getCreated(): string { return $this->created; }
public function getUpdated(): string { return $this->updated; }
public function getVerified(): string { return $this->verified; }
public function getRole(): string { return $this->role; }
public function getImg(): string { return $this->img; }
public function getApiKey(): string { return $this->api_key; }
}

View file

@ -17,7 +17,8 @@
"php": ">=8.2.0",
"phpunit/phpunit": ">=11",
"yosymfony/toml": "*",
"ext-zip": "*"
"ext-zip": "*",
"ext-iconv": "*"
},
"autoload": {
"psr-4": {

View file

@ -72,7 +72,7 @@ require_once 'includes/header.php';
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body">
<?php echo $result['ok'] ? 'Message sent successfully!' : 'An error occurred while sending the message.'; ?>
<?php echo $result['ok'] ? $locale['messageSentSuccess'] : $locale['messageSentError']; ?>
</div>
</div>
</div>
@ -96,29 +96,29 @@ require_once 'includes/header.php';
<div class="row mb-5 text-center">
<div class="col-lg-8 mx-auto">
<h1 class="display-4 mb-3"><?php echo $locale['contactus']; ?></h1>
<p class="lead text-muted">We'd love to hear from you. Send us a message and we'll respond as soon as possible.</p>
<p class="lead text-muted"><?php echo $locale['contactUs2']; ?></p>
</div>
</div>
<div class="row">
<!-- Contact Form -->
<div class="col-lg-7 mb-4 mb-lg-0">
<div class="col mb-lg-0">
<div class="contact-form">
<h3 class="mb-4">Send us a Message</h3>
<h3 class="mb-4"><?php echo $locale['messageSendUs']; ?></h3>
<form action="/contact" method="post">
<div class="mb-4">
<label for="name" class="form-label">Name</label>
<label for="name" class="form-label"><?php echo $locale['name']; ?></label>
<input type="text" class="form-control form-control-lg" id="name" name="name" value="<?php echo htmlspecialchars($userName); ?>" required>
</div>
<div class="mb-4">
<label for="email" class="form-label">Email</label>
<label for="email" class="form-label"><?php echo $locale['email']; ?></label>
<input type="email" class="form-control form-control-lg" id="email" name="email" value="<?php echo htmlspecialchars($userEmail); ?>" required>
</div>
<div class="mb-4">
<label for="message" class="form-label">Message</label>
<label for="message" class="form-label"><?php echo $locale['message']; ?></label>
<textarea class="form-control form-control-lg" id="message" name="message" rows="5" required></textarea>
</div>
<button type="submit" class="btn btn-primary btn-lg px-5">Send Message</button>
<button type="submit" class="btn btn-primary btn-lg px-5"><?php echo $locale['messageSend']; ?></button>
</form>
</div>
</div>

24
dj.php
View file

@ -138,13 +138,15 @@ require_once 'includes/header.php';
$mixes = $dj->getDJMixes();
if (!empty($mixes)) {
// Add header row for the table-like layout
echo '<div class="row font-weight-bold mb-2">';
echo '<div class="col-md text-truncate">' . $locale['mixName'] . '</div>';
echo '<div class="col-md">' . $locale['genres'] . '</div>';
echo '<div class="col-md">' . $locale['duration'] . '</div>';
echo '<div class="col-md">' . $locale['year'] . '</div>';
echo '</div>';
echo '<hr class="my-2">'; // Optional horizontal rule for separation
?>
<div class="row font-weight-bold mb-2">
<div class="col-md text-truncate"><?php echo $locale['mixName'];?></div>
<div class="col-md"><?php echo $locale['genres']; ?></div>
<div class="col-md"><?php echo $locale['duration'];?></div>
<div class="col-md"><?php echo $locale['year'];?></div>
</div>
<hr class="my-2">
<?php
}
$count = 0;
@ -245,10 +247,10 @@ require_once 'includes/header.php';
<script>
document.addEventListener('DOMContentLoaded', function () {
var shareBtn = document.getElementById('shareBtn');
var shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
var copyLinkBtn = document.getElementById("copyLinkBtn");
var urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
const shareBtn = document.getElementById('shareBtn');
const shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
const copyLinkBtn = document.getElementById("copyLinkBtn");
const urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
shareBtn.addEventListener('click', function () {
shareModal.show();

View file

@ -7,81 +7,217 @@ use DJMixHosting\Database;
use Aws\Ses\SesClient;
use Aws\Exception\AwsException;
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['email'])) {
$email = trim($_POST['email']);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$_SESSION['error'] = "Invalid email format.";
$db = new Database($config);
// Ensure a CSRF token exists.
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
// Determine if we are in reset stage based on GET parameter.
$isResetStage = false;
$verification_code = "";
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['code'])) {
$verification_code = trim($_GET['code']);
$isResetStage = true;
}
// Process POST submissions.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Validate the CSRF token.
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'] ?? '')) {
$_SESSION['error'] = "Invalid CSRF token.";
header("Location: forgot-password.php");
exit;
}
$db = new Database($config);
// Check if email exists in the system
$stmt = $db->prepare("SELECT id, username FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();
$userData = $result->fetch_assoc();
$stmt->close();
// If a verification code is provided, we are in reset mode.
if (isset($_POST['verification_code']) && !empty($_POST['verification_code'])) {
// Always show a success message (to avoid disclosing which emails are registered)
$_SESSION['success'] = "If the email exists in our system, a password reset link has been sent.";
// Rate limiting for reset attempts.
if (!isset($_SESSION['attempts'])) {
$_SESSION['attempts'] = 0;
$_SESSION['first_attempt_time'] = time();
}
$_SESSION['attempts']++;
if ($_SESSION['attempts'] > 5 && (time() - $_SESSION['first_attempt_time']) < 900) { // 15 minutes
$_SESSION['error'] = "Too many attempts. Please try again later.";
header("Location: forgot-password.php?code=" . urlencode($_POST['verification_code']));
exit;
}
if (time() - $_SESSION['first_attempt_time'] >= 900) {
$_SESSION['attempts'] = 1;
$_SESSION['first_attempt_time'] = time();
}
if ($userData) {
$user_id = $userData['id'];
// Generate a password reset verification code valid for 15 minutes
$verification_code = bin2hex(random_bytes(16));
$expires_at = date("Y-m-d H:i:s", strtotime("+15 minutes"));
// Process the reset.
$verification_code = trim($_POST['verification_code']);
$username = trim($_POST['username'] ?? '');
$new_password = $_POST['new_password'] ?? '';
$confirm_password = $_POST['confirm_password'] ?? '';
// Insert a record with purpose 'password_reset'
$stmt = $db->prepare("REPLACE INTO email_verifications (user_id, email, verification_code, expires_at, purpose) VALUES (?, ?, ?, ?, 'password_reset')");
$stmt->bind_param("isss", $user_id, $email, $verification_code, $expires_at);
if (empty($verification_code) || empty($username) || empty($new_password) || empty($confirm_password)) {
$_SESSION['error'] = $locale['allFieldsRequired'];
header("Location: forgot-password.php?code=" . urlencode($verification_code));
exit;
}
if ($new_password !== $confirm_password) {
$_SESSION['error'] = $locale['passwordMismatch'];
header("Location: forgot-password.php?code=" . urlencode($verification_code));
exit;
}
if (!validate_password($new_password)) {
$_SESSION['error'] = $locale['passwordRequirements'];
header("Location: forgot-password.php?code=" . urlencode($verification_code));
exit;
}
// Look up the password reset record.
$stmt = $db->prepare("SELECT * FROM email_verifications WHERE verification_code = ? AND purpose = 'password_reset'");
$stmt->bind_param("s", $verification_code);
$stmt->execute();
$result = $stmt->get_result();
$record = $result->fetch_assoc();
$stmt->close();
if (!$record) {
$_SESSION['error'] = $locale['resetExpiredInvalid'];
header("Location: forgot-password.php?code=" . urlencode($verification_code));
exit;
}
// Check expiration.
$current_time = new DateTime();
$expires_at = new DateTime($record['expires_at']);
if ($current_time > $expires_at) {
$_SESSION['error'] = $locale['resetExpired'];
header("Location: forgot-password.php?code=" . urlencode($verification_code));
exit;
}
// Verify the username matches the record.
$stmt = $db->prepare("SELECT id, username FROM users WHERE id = ? AND username = ?");
$stmt->bind_param("is", $record['user_id'], $username);
$stmt->execute();
$userData = $stmt->get_result()->fetch_assoc();
$stmt->close();
if (!$userData) {
$_SESSION['error'] = $locale['codeCredsInvalid'];
header("Location: forgot-password.php?code=" . urlencode($verification_code));
exit;
}
// Update the user's password.
$hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
$stmt = $db->prepare("UPDATE users SET password = ? WHERE id = ?");
$stmt->bind_param("si", $hashed_password, $userData['id']);
$stmt->execute();
$stmt->close();
// Send password reset email via AWS SES
$sesClient = new SesClient([
'version' => 'latest',
'region' => $config['aws']['ses']['region'],
'credentials' => [
'key' => $config['aws']['ses']['access_key'],
'secret' => $config['aws']['ses']['secret_key'],
]
]);
// Remove the password reset record.
$stmt = $db->prepare("DELETE FROM email_verifications WHERE verification_code = ? AND purpose = 'password_reset'");
$stmt->bind_param("s", $verification_code);
$stmt->execute();
$stmt->close();
$sender_email = $config['aws']['ses']['sender_email'];
$recipient_email = $email;
$subject = "Password Reset Request";
$reset_link = $config['app']['url'] . "/password-reset.php?code={$verification_code}";
$body_text = "You have requested to reset your password. Please click the link below to reset your password:\n\n";
$body_text .= "{$reset_link}\n\nIf you did not request this, please ignore this email. This link will expire in 15 minutes.";
session_regenerate_id(true);
$_SESSION['success'] = $locale['passwordResetSuccess'];
header("Location: /login");
exit;
try {
$result = $sesClient->sendEmail([
'Destination' => [
'ToAddresses' => [$recipient_email],
],
'ReplyToAddresses' => [$sender_email],
'Source' => $sender_email,
'Message' => [
'Body' => [
'Text' => [
} else {
// Otherwise, we are processing a forgot password request.
$email = trim($_POST['email'] ?? '');
if (empty($email)) {
$_SESSION['error'] = $locale['enterEmailAddressPlease'];
header("Location: /forgot-password");
exit;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$_SESSION['error'] = $locale['emailInvalid'];
header("Location: /forgot-password");
exit;
}
// Check if email exists in the system.
$stmt = $db->prepare("SELECT id, username FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();
$userData = $result->fetch_assoc();
$stmt->close();
// Always display a success message (even if the email isnt registered) to avoid disclosing registered emails.
$_SESSION['success'] = $locale['passwordResetSent'];
if ($userData) {
$user_id = $userData['id'];
// Generate a password reset verification code valid for 15 minutes.
$verification_code = bin2hex(random_bytes(16));
$expires_at = date("Y-m-d H:i:s", strtotime("+15 minutes"));
// Insert a record for the password reset.
$stmt = $db->prepare("REPLACE INTO email_verifications (user_id, email, verification_code, expires_at, purpose) VALUES (?, ?, ?, ?, 'password_reset')");
$stmt->bind_param("isss", $user_id, $email, $verification_code, $expires_at);
$stmt->execute();
$stmt->close();
// Send the password reset email via AWS SES.
$sesClient = new SesClient([
'version' => 'latest',
'region' => $config['aws']['ses']['region'],
'credentials' => [
'key' => $config['aws']['ses']['access_key'],
'secret' => $config['aws']['ses']['secret_key'],
]
]);
$sender_email = $config['aws']['ses']['sender_email'];
$recipient_email = $email;
$subject = "Password Reset Request";
$reset_link = $config['app']['url'] . "/forgot-password.php?code={$verification_code}";
$body_text = $locale['passwordResetRequested'] . "\n\n";
$body_text .= "{$reset_link}\n\n";
$body_text .= $locale['passwordResetUnrequested'];
try {
$sesClient->sendEmail([
'Destination' => [
'ToAddresses' => [$recipient_email],
],
'ReplyToAddresses' => [$sender_email],
'Source' => $sender_email,
'Message' => [
'Body' => [
'Text' => [
'Charset' => 'UTF-8',
'Data' => $body_text,
],
],
'Subject' => [
'Charset' => 'UTF-8',
'Data' => $body_text,
'Data' => $subject,
],
],
'Subject' => [
'Charset' => 'UTF-8',
'Data' => $subject,
],
],
]);
} catch (AwsException $e) {
// Optionally log the error without disclosing details to the user.
]);
} catch (AwsException $e) {
// Log the error as needed.
}
}
header("Location: /forgot-password");
exit;
}
header("Location: forgot-password.php");
exit;
}
// Helper function to validate password strength.
function validate_password($password) {
if (strlen($password) < 8) return false;
if (!preg_match('/[A-Z]/', $password)) return false;
if (!preg_match('/[a-z]/', $password)) return false;
if (!preg_match('/[0-9]/', $password)) return false;
return true;
}
require_once 'includes/header.php';
@ -92,27 +228,59 @@ require_once 'includes/header.php';
<div class="row justify-content-center">
<div class="col-lg-5">
<?php
if(isset($_SESSION['error'])) {
echo '<div class="alert alert-danger alert-dismissible fade show mb-4" role="alert">' . htmlspecialchars($_SESSION['error']) . '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>';
if (isset($_SESSION['error'])) {
echo '<div class="alert alert-danger alert-dismissible fade show mb-4" role="alert">'
. htmlspecialchars($_SESSION['error']) .
'<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>';
unset($_SESSION['error']);
}
if(isset($_SESSION['success'])) {
echo '<div class="alert alert-success alert-dismissible fade show mb-4" role="alert">' . htmlspecialchars($_SESSION['success']) . '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>';
if (isset($_SESSION['success'])) {
echo '<div class="alert alert-success alert-dismissible fade show mb-4" role="alert">'
. htmlspecialchars($_SESSION['success']) .
'<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>';
unset($_SESSION['success']);
}
?>
<div class="card shadow-sm border-0">
<div class="card-body p-4">
<h3 class="text-center mb-4">Forgot Password</h3>
<form action="forgot-password.php" method="post" class="needs-validation" novalidate>
<div class="mb-3">
<label for="email" class="form-label">Enter your email address</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<button type="submit" class="btn btn-primary w-100">Submit</button>
</form>
<?php if ($isResetStage): ?>
<!-- Reset Password Form -->
<div class="card shadow-sm border-0">
<div class="card-body p-4">
<h3 class="text-center mb-4"><?php echo $locale['passwordReset']; ?></h3>
<form action="/forgot-password.php" method="post" class="needs-validation" novalidate>
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
<input type="hidden" name="verification_code" value="<?php echo htmlspecialchars($verification_code); ?>">
<div class="mb-3">
<label for="username" class="form-label"><?php echo $locale['enterYourUsername']; ?></label>
<input type="text" class="form-control" id="username" name="username" required>
</div>
<div class="mb-3">
<label for="new_password" class="form-label"><?php echo $locale['newPassword']; ?></label>
<input type="password" class="form-control" id="new_password" name="new_password" required>
</div>
<div class="mb-3">
<label for="confirm_password" class="form-label"><?php echo $locale['confirmPassword']; ?></label>
<input type="password" class="form-control" id="confirm_password" name="confirm_password" required>
</div>
<button type="submit" class="btn btn-primary w-100"><?php echo $locale['passwordReset']; ?></button>
</form>
</div>
</div>
</div>
<?php else: ?>
<!-- Forgot Password Request Form -->
<div class="card shadow-sm border-0">
<div class="card-body p-4">
<h3 class="text-center mb-4"><?php echo $locale['forgotPassword']; ?></h3>
<form action="/forgot-password.php" method="post" class="needs-validation" novalidate>
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
<div class="mb-3">
<label for="email" class="form-label"><?php echo $locale['emailaddressEnter']; ?></label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<button type="submit" class="btn btn-primary w-100"><?php echo $locale['submit']; ?></button>
</form>
</div>
</div>
<?php endif; ?>
</div>
</div>
</div>

View file

@ -52,10 +52,7 @@ require_once 'includes/header.php';
<img src="<?php echo $genre->get_img(); ?>"
alt="avatar"
class="rounded-circle img-fluid" style="width: 150px;">
<h5 class="my-3"><?php echo $genre->get_name();
?></h5>
</p>
<h5 class="my-3"><?php echo $genre->get_name();?></h5>
</div>
</div>
@ -110,11 +107,11 @@ require_once 'includes/header.php';
$output = new Mix($mix, $db);
echo '<div class="row">';
echo '<p class="mb-0">';
echo '<a href="/mix/' . $output->get_slug() . '">';
echo $output->get_name();
echo '<a href="/mix/' . $output->getSlug() . '">';
echo $output->getName();
echo '</a>';
echo ' &dash; ';
$djs = $output->get_djs();
$djs = $output->getDJs();
$djCount = 0;
foreach ($djs as $dj) {
echo '<a href="/dj/' . $dj->getSlug() . '">';
@ -168,10 +165,10 @@ require_once 'includes/header.php';
<script>
document.addEventListener('DOMContentLoaded', function () {
var shareBtn = document.getElementById('shareBtn');
var shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
var copyLinkBtn = document.getElementById("copyLinkBtn");
var urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
const shareBtn = document.getElementById('shareBtn');
const shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
const copyLinkBtn = document.getElementById("copyLinkBtn");
const urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
shareBtn.addEventListener('click', function () {
shareModal.show();

View file

@ -4,10 +4,13 @@
<div class="row mb-3">
<div class="col text-center">
<ul class="list-inline">
<li class="list-inline-item"><a href="/contact">Contact Us</a></li>
<li class="list-inline-item"><a href="/privacy">Privacy Policy</a></li>
<li class="list-inline-item"><a href="/contact"><?php echo $locale['contactus'];?></a></li>
<li class="list-inline-item"><a href="/privacy"><?php echo $locale['privacyPolicy']?></a></li>
<!-- Uncomment the following line once you have a Terms & Conditions page -->
<!-- <li class="list-inline-item"><a href="/terms">Terms & Conditions</a></li> -->
<!-- <li class="list-inline-item"><a href="/terms"><?php
// echo $locale['termsAndConditions'];
?>
</a></li> -->
</ul>
</div>
</div>
@ -15,16 +18,18 @@
<!-- Copyright Text -->
<div class="row mb-2">
<div class="col text-center">
<p><?php echo "&copy; 2008 - " . date('Y') . " " . $locale['allrightsreserved']; ?></p>
<p><?php echo "&copy; " . $config['app']['copyright_start_date'] . " - " . date('Y') . " " . $locale['allrightsreserved']; ?></p>
</div>
</div>
<!-- Software Credit -->
<?php if ($config['app']['made_using']){?>
<div class="row">
<div class="col text-center">
<p>Created using <a href="https://gitea.threefifteen.info/cody/dj_mix_hosting_software">DJ Mix Hosting Software</a></p>
<p><?php echo $locale['createdUsing']?> <a href="https://gitea.threefifteen.info/cody/dj_mix_hosting_software"><?php echo $locale['djmixhostingsoftware'];?></a></p>
</div>
</div>
<?php } ?>
</div>
</footer>

View file

@ -3,6 +3,7 @@
// read toml config file
require_once 'vendor/autoload.php';
use Random\RandomException;
use Yosymfony\Toml\Toml;
use DJMixHosting\SessionManager;
@ -11,6 +12,14 @@ require_once 'functions/i18n.php';
// Instead of including sessions.php, start the session via SessionManager:
SessionManager::start();
if (empty($_SESSION['csrf_token'])) {
try {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
} catch (RandomException $e) {
die("An error occurred. Please try again.");
}
}
require_once 'includes/lang_loader.php';
$mixshowsPages = ["/mixshows", "/mixshows/", "/mixshows.php"];

View file

@ -36,9 +36,8 @@ $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
<div class="d-flex align-items-center">
<!-- Search form remains outside the dropdown -->
<form class="d-flex me-3" role="search">
<input class="form-control me-2" type="search" placeholder="<?php echo $locale['search']; ?>"
aria-label="<?php echo $locale['search']; ?>">
<form class="d-flex me-3" role="search" action="/search.php" method="get">
<input class="form-control me-2" type="search" name="q" placeholder="<?php echo $locale['search']; ?>" aria-label="<?php echo $locale['search']; ?>">
<button class="btn btn-outline-success" type="submit"><?php echo $locale['search']; ?></button>
</form>
@ -62,7 +61,7 @@ $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
<label for="languageSelect" class="visually-hidden">Language Selector</label>
<select class="form-select" id="languageSelect" onchange="location = this.value;">
<?php
if (isset($_SERVER["REQUIEST_URI"])) {
if (isset($_SERVER["REQUEST_URI"])) {
$currentUrl = strtok($_SERVER["REQUEST_URI"], '?') ?? '/';
} else {
$currentUrl = '/';
@ -94,7 +93,7 @@ $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
<script>
// Dark mode toggle script
function toggleDarkMode() {
var html = document.documentElement;
const html = document.documentElement;
if (html.getAttribute('data-bs-theme') === 'dark') {
html.removeAttribute('data-bs-theme'); // Switch to light mode
localStorage.setItem('darkmode', 'false');
@ -107,7 +106,7 @@ $current_lang = $_SESSION['lang'] ?? $config['app']['locale'];
}
function updateDarkModeOnServer(value) {
var xhr = new XMLHttpRequest();
const xhr = new XMLHttpRequest();
xhr.open('POST', '/settings.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {

View file

@ -2,18 +2,18 @@
require_once 'includes/globals.php';
$title = $locale['home'];
require_once 'includes/header.php'; ?>
<section>
<div class="container py-5">
<div class="row">
<div class="col">
<nav aria-label="breadcrumb" class="bg-body-tertiary rounded-3 p-3 mb-4">
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item active"><a href="/"><?php echo $locale['home']; ?></a></li>
</ol>
</nav>
<section>
<div class="container py-5">
<div class="row">
<div class="col">
<nav aria-label="breadcrumb" class="bg-body-tertiary rounded-3 p-3 mb-4">
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item active"><a href="/"><?php echo $locale['home']; ?></a></li>
</ol>
</nav>
</div>
</div>
</div>
</div>
</section>
</section>
<?php require_once 'includes/footer.php'; ?>

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'email' => 'Email',
'location' => 'Location',
'welcome' => 'Welkom by ons webwerf!',
'description' => 'Dit is \'n beskrywing in Engels.',
'desc' => 'Beskrywing',
'userProfile' => "Gebruikerprofiel",
'user' => 'Gebruiker',
'home' => 'Huis',
'djName' => 'DJ Naam',
'email' => 'E-pos',
'location' => 'Ligging',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
'submit' => 'Dien in',
'login' => 'Teken in',
'message' => 'Boodskap',
'follow' => 'Volg',
'djs' => 'DJ\'s',
"djNotFound" => "Kon nie DJ laai nie; of die DJ is nie gevind nie of hierdie DJ is privaat.",
"notfound" => "Bladsy nie gevind nie",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
"genreNotFound" => "Kon nie genre laai nie; of die genre is nie gevind nie, was leeg, of hierdie genre is privaat.",
"mix-count" => "Mengsel Teller",
"mixes" => "Mengsels",
"mix" => "Mengsel",
"mixNotFound" => "Kon nie mengsel laai nie; of die mengsel is nie gevind nie, was leeg, of hierdie mengsel is privaat.",
"mixshowNotFound" => "Kon nie mengshow laai nie; of die mengshow is nie gevind nie, was leeg, of hierdie mengshow is privaat.",
"mixName" => "Mengsel Naam",
"mixDescription" => "Mengsel Beskrywing",
"mixLength" => "Mengsel Lengte",
"mixGenre" => "Mengsel Genre",
"view" => "Sien",
"mixname" => "Mengsel Naam",
"search" => "Soek",
"searchResults" => "Soek Resultate",
"searchResultsFor" => "Soek Resultate vir",
"searchResultsFound" => "Soek Resultate Gevind",
"tracklist" => "Tracklys",
"lastupdated" => "Laas opdateer",
"duration" => "Duur",
"hour" => "uur",
"hours" => "ure",
"minute" => "minuut",
"minutes" => "minute",
"second" => "sekonde",
"seconds" => "sekondes",
"by" => "deur",
"added" => "Gekoop",
"recorded" => "Opgeneem",
"audioNotSupported" => "Jou blaaier ondersteun nie die klankelement nie.",
"downloads" => "Aflaai",
"download" => "Aflaai",
"downloadMix" => "Laai Mengsel Af",
"plays" => "Speel",
"play" => "Speel",
"contactus" => "Kontak Ons",
"allrightsreserved" => "Alle regte voorbehou.",
"mixshows" => "Mengshows",
"mixshow" => "Mengshow",
"mixshowName" => "Mengshow Naam",
"share" => "Deel",
"sahrethismix" => "Deel hierdie mengsel",
"sharethismixshow" => "Deel hierdie mengshow",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "Jaar",
"sharetotwitter" => "Deel na X (voorheen Twitter)",
"sharetofb" => "Deel na Facebook",
"sharetoig" => "Deel na Instagram",
"copyurl" => "Kopieer URL",
"urlcopiedtoclipboard" => "URL na clipboard gekopieer",
"failedtocopyurl" => "Kon nie URL kopieer nie",
"name" => "Naam",
"username" => "Gebruikersnaam",
"logout" => "Teken uit",
"upload" => "Laai op",
"loginToVerifyEmail" => "Jy moet ingelogde wees om jou e-pos te verifieer.",
"loginToUploadMix" => "Jy moet ingelogde wees om 'n mengsel te laai.",
"verificationCodeRequired" => "Verifikasiekode is nodig.",
"recordedDate" => "Opgeneem Datum",
"noUploadedFileFound" => "Geen opgelaaide lêer gevind nie. Laai asseblief 'n mengsel lêer op.",
"mixTitleRequired" => "Mengsel titel is nodig.",
"errorUploadCDN" => "Fout tydens die oplaaien van die lêer na CDN: ",
"errorSavingMixDB" => "Fout tydens die stoor van die mengsel in die databasis.",
"uploadedPendingApproval" => "Mengsel suksesvol opgelaai en wag vir goedkeuring.",
"uploadHeader1" => "Laai jou mengsel op na Utah se DJ's",
"uploadAlertHeader" => "Belangrike Oplaai Inligting",
"uploadAlert1" => "Utah se DJ's is hoofsaaklik 'n argiefprojek wat toegewyd is aan die bewarings van die geskiedenis en kultuur van EDM DJ's in Utah. Jou oplaai dra by tot hierdie historiese rekord.",
"uploadHeader2" => "Voor jy opgelaai",
"uploadAlert2" => "Verifieer dat al die DJ's betrokke in ons databasis gelys is. As 'n DJ nie gelys is nie, moet hulle bygevoeg en goedgekeur word voordat hulle opgelaai kan word.",
"uploadAlert3" => "Kyk of toepaslike genres beskikbaar is vir jou mengsel. Nuwe genres vereis goedkeuring voor hulle gebruik kan word.",
"uploadAlert4" => "Jy kan nuwe DJ of genre versoeke indien deur jou profielinstellings.",
"uploadProcess" => "Oplaai Proses",
"uploadProcess1" => "Laai jou mengsel lêer op (MP3 of ZIP formaat)",
"uploadProcess2" => "Voer mengsel besonderhede in, insluitend titel, beskrywing, en opnamesdatum",
"uploadProcess3" => "Kies toepaslike genres en DJ's",
"uploadProcess4" => "Dien vir hersiening in",
"uploadAMix" => "Laai 'n Mengsel op",
"uploadSelectMix" => "Kies Mengsel Lêer (MP3 of ZIP)",
"uploadMaxFileSize" => "Maximale lêergrootte: 500MB",
"uploadFile" => "Laai Lêer op",
"uploadSelectGenres" => "Kies Genres (tik om te soek)",
"uploadSelectDJSMax3" => "Kies DJ's (Maximaal 3)",
"uploadSubmitMix" => "Dien Mengsel in",
"uploadSelectDJ1" => "Kies DJ 1",
"uploadSelectDJ2" => "Kies DJ 2 (opsioneel)",
"uploadSelectDJ3" => "Kies DJ 3 (opsioneel)",
"userAlreadyExists" => "Gebruiker bestaan reeds.",
"allFieldsRequired" => "Alle velde is nodig.",
"passwordsDoNotMatch" => "Die wagwoorde stem nie ooreen nie.",
"invalidEmail" => "Ongeldige e-posFORMAAK.",
"invalidUsername" => "Ongeldige gebruikersnaamFORMAAK.",
"verifyEmailAddress" => "Verifieer jou e-pos adres",
"registerThankYou" => "Dankie dat u geregistreer het by ",
"registerVerifyEmail" => "Verifieer asseblief jou e-pos adres deur die skakel hieronder te klik of deur die verifikasiekode in jou profiel in te voer:",
"registerVerifyCodeIs" => "Jou verifikasiekode is: ",
"registerVerifyTimeout" => "Hierdie kode sal in 15 minute verval.",
"password" => "Wagwoord",
"rememberMe" => "Onthou My",
"forgotPassword" => "Vergeet Wagwoord",
"dontHaveAccount" => "Het jy nie 'n rekening nie?",
"signUp" => "Teken Aan",
"passwordResetSent" => "As die e-pos in ons stelsel bestaan, is 'n wagwoord herstelskakel gestuur.",
"passwordResetRequested" => "Jy het versoek om jou wagwoord te herstel. Klik asseblief op die skakel hieronder om jou wagwoord te herstel:",
"passwordResetUnrequested" => "As jy nie hierdie versoek gedoen het nie, ignoreer asseblief hierdie e-pos. Hierdie skakel sal in 15 minute verval.",
"emailaddressEnter" => "Voer jou e-pos adres in",
"messageSentSuccess" => "Boodskap suksesvol gestuur.",
"messageSentError" => "Daar het 'n fout plaasgevind terwyl die boodskap gestuur is.",
"contactUs2" => "Ons hoor graag van jou. Stuur vir ons 'n boodskap en ons sal so gou moontlik reageer.",
"messageSendUs" => "Stuur vir Ons 'n Boodskap",
"messageSend" => "Stuur Boodskap",
"passwordReset" => "Herstel Wagwoord",
"enterYourUsername" => "Voer jou gebruikersnaam in",
"newPassword" => "Nuwe Wagwoord",
"confirmPassword" => "Bevestig Nuwe Wagwoord",
"passwordResetSuccess" => "Jou wagwoord is suksesvol teruggestel. Log in met jou nuwe wagwoord.",
"enterEmailAddressPlease" => "Voer asseblief jou e-pos adres in.",
"emailInvalid" => "Ongeldige e-pos formaat.",
"passwordMismatch" => "Wagwoorde stem nie ooreen nie.",
"passwordRequirements" => "Wagwoord moet minstens 8 karakters lank wees en ook hoofletters, kleinletters, asook 'n nommer insluit.",
"resetExpiredInvalid" => "Ongeldige of vervalde wagwoord herstelkode.",
"resetExpired" => "Wagwoord herstelkode het verval.",
"codeCredsInvalid" => "Ongeldige geloofsbriewe of verifikasiekode.",
"change" => "Verander",
"changePicture" => "Verander Prentjie",
"verify" => "Verifieer",
"createdUsing" => "Geskep met behulp van",
"djmixhostingsoftware" => "DJ Mengsel Gasheer Sagteware",
"privacyPolicy" => "Privaatheidsbeleid",
"termsAndConditions" => "Voorwaardes en bepalings",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => 'مرحبا بكم في موقعنا على الإنترنت!',
'description' => 'هذا وصف بالإنكليزية.',
'welcome' => 'مرحبًا بك في موقعنا!',
'description' => 'هذه وصف باللغة الإنجليزية.',
'desc' => 'الوصف',
'userProfile' => "الملف الشخصي للمستخدم",
'user' => 'المستخدم',
'home' => 'المنزل',
'djName' => 'اسم DJ',
'userProfile' => "ملف المستخدم",
'user' => 'مستخدم',
'home' => 'الرئيسية',
'djName' => 'اسم الدي جي',
'email' => 'البريد الإلكتروني',
'location' => 'الموقع',
'bio' => 'بيو',
'bio' => 'السيرة الذاتية',
'submit' => 'إرسال',
'login' => 'تسجيل الدخول',
'message' => 'رسالة',
'follow' => 'اتبع',
'follow' => 'متابعة',
'djs' => 'دي جي',
"djNotFound" => "تعذر تحميل DJ; إما لم يتم العثور على DJ أو هذا DJ خاص.",
"notfound" => "لم يتم العثور على الصفحة",
"genre" => "النوع",
"djNotFound" => "تعذر تحميل الدي جي؛ إما أن الدي جي غير موجود أو أن هذا الدي جي خاص.",
"notfound" => "الصفحة غير موجودة",
"genre" => "نوع الموسيقى",
"genres" => "أنواع الموسيقى",
"genreNotFound" => "لا يمكن تحميل النوع الجيد؛ إما لم يتم العثور على هذا النوع، أو كان فارغا، أو هذا النوع خاص.",
"mix-count" => "عدد المزيج",
"mixes" => "خلط",
"mix" => "خليط",
"mixNotFound" => "تعذر تحميل المزيج ؛ إما لم يتم العثور على المزيج ، أو كان فارغا، أو هذا المزيج خاص.",
"mixshowNotFound" => "تعذر تحميل الخليط؛ إما لم يتم العثور على الخليط، أو كان فارغاً، أو هذا الخليط خاص.",
"mixName" => "اسم المزيج",
"mixDescription" => "وصف المزيج",
"mixLength" => "مزيج الطول",
"mixGenre" => "خلط النوع",
"genreNotFound" => "تعذر تحميل النوع؛ إما أن النوع غير موجود، فارغ، أو أن هذا النوع خاص.",
"mix-count" => "عدد الميكسات",
"mixes" => "الميكسات",
"mix" => "ميكس",
"mixNotFound" => "تعذر تحميل الميكس؛ إما أن الميكس غير موجود، فارغ، أو أن هذا الميكس خاص.",
"mixshowNotFound" => "تعذر تحميل عرض الميكس؛ إما أن عرض الميكس غير موجود، فارغ، أو أن هذا العرض خاص.",
"mixName" => "اسم الميكس",
"mixDescription" => "وصف الميكس",
"mixLength" => "مدة الميكس",
"mixGenre" => "نوع الميكس",
"view" => "عرض",
"mixname" => "اسم المزيج",
"search" => "البحث",
"mixname" => "اسم الميكس",
"search" => "بحث",
"searchResults" => "نتائج البحث",
"searchResultsFor" => "نتائج البحث عن",
"searchResultsFound" => "تم العثور على نتائج البحث",
"tracklist" => "قائمة التتبع",
"searchResultsFor" => "نتائج البحث لـ",
"searchResultsFound" => "نتائج البحث الموجودة",
"tracklist" => "قائمة المسارات",
"lastupdated" => "آخر تحديث",
"duration" => "المدة",
"hour" => "ساعة",
@ -45,32 +45,111 @@ return [
"second" => "ثانية",
"seconds" => "ثواني",
"by" => "بواسطة",
"added" => "أضيف",
"recorded" => "مسجلة",
"audioNotSupported" => "المتصفح الخاص بك لا يدعم عنصر الصوت.",
"downloads" => "التنزيلات",
"download" => "تنزيل",
"added" => "تم الإضافة",
"recorded" => "تم التسجيل",
"audioNotSupported" => "متصفحك لا يدعم عنصر الصوت.",
"downloads" => "التحميلات",
"download" => "تحميل",
"downloadMix" => "تحميل الميكس",
"plays" => "مشغلات",
"plays" => "العمليات",
"play" => "تشغيل",
"contactus" => "اتصل بنا",
"allrightsreserved" => "جميع الحقوق محفوظة.",
"mixshows" => "المزج",
"mixshows" => "عروض الميكس",
"mixshow" => "عرض ميكس",
"mixshowName" => "اسم المزج",
"mixshowName" => "اسم عرض الميكس",
"share" => "مشاركة",
"sahrethismix" => "شارك هذا المزيج",
"sharethismixshow" => "شارك هذا المزيج",
"rss" => "RSS",
"year" => "السنة",
"sharetotwitter" => "شارك إلى X (تويتر سابقاً)",
"sahrethismix" => "مشاركة هذا الميكس",
"sharethismixshow" => "مشاركة هذا عرض الميكس",
"rss" => "آر إس إس",
"year" => "سنة",
"sharetotwitter" => "مشاركة على X (سابقًا تويتر)",
"sharetofb" => "مشاركة على Facebook",
"sharetoig" => "مشاركة على Instagram",
"sharetoig" => "مشاركة على إنستغرام",
"copyurl" => "نسخ الرابط",
"urlcopiedtoclipboard" => "تم نسخ عنوان URL إلى الحافظة",
"failedtocopyurl" => "فشل في نسخ الرابط",
"urlcopiedtoclipboard" => "تم نسخ الرابط إلى الحافظة",
"failedtocopyurl" => "فشل نسخ الرابط",
"name" => "الاسم",
"username" => "اسم المستخدم",
"logout" => "تسجيل الخروج",
"upload" => "تحميل",
"upload" => "رفع",
"loginToVerifyEmail" => "يجب أن تكون مسجلاً للدخول للتحقق من بريدك الإلكتروني.",
"loginToUploadMix" => "يجب أن تكون مسجلاً للدخول لرفع مزيج.",
"verificationCodeRequired" => "رمز التحقق مطلوب.",
"recordedDate" => "تاريخ التسجيل",
"noUploadedFileFound" => "لم يتم العثور على ملف تم رفعه. يرجى رفع ملف ميكس.",
"mixTitleRequired" => "العنوان المطلوب للميكس.",
"errorUploadCDN" => "خطأ في رفع الملف إلى CDN: ",
"errorSavingMixDB" => "خطأ في حفظ الميكس إلى قاعدة البيانات.",
"uploadedPendingApproval" => "تم رفع الميكس بنجاح وهو في انتظار الموافقة.",
"uploadHeader1" => "قم بتحميل الميكس الخاص بك إلى دي جيز يوتا",
"uploadAlertHeader" => "معلومات تحميل مهمة",
"uploadAlert1" => "دي جيز يوتا هو مشروع أرشيفي يهدف إلى الحفاظ على تاريخ وثقافة كهربائية الدي جي في يوتا. تساهم تحميلاتك في هذا السجل التاريخي.",
"uploadHeader2" => "قبل أن تقوم بالتحميل",
"uploadAlert2" => "تحقق من أن جميع الدي جي المعنيين مدرجين في قاعدة البيانات لدينا. إذا لم يكن الدي جي مدرجًا، يجب إضافته والموافقة عليه قبل التحميل.",
"uploadAlert3" => "تحقق من وجود أنواع مناسبة لميكسك. الأنواع الجديدة تحتاج إلى موافقة قبل أن يمكن استخدامها.",
"uploadAlert4" => "يمكنك تقديم طلبات جديدة للدي جي أو الأنواع من خلال إعدادات ملفك الشخصي.",
"uploadProcess" => "عملية التحميل",
"uploadProcess1" => "قم بتحميل ملف الميكس الخاص بك (بتنسيق MP3 أو ZIP)",
"uploadProcess2" => "أدخل تفاصيل الميكس، بما في ذلك العنوان، الوصف، وتاريخ التسجيل",
"uploadProcess3" => "اختر الأنواع والدي جي المناسبة",
"uploadProcess4" => "قدم للمراجعة",
"uploadAMix" => "قم بتحميل ميكس",
"uploadSelectMix" => "اختر ملف الميكس (MP3 أو ZIP)",
"uploadMaxFileSize" => "حجم الملف الأقصى: 500MB",
"uploadFile" => "رفع الملف",
"uploadSelectGenres" => "اختر الأنواع (اكتب للبحث)",
"uploadSelectDJSMax3" => "اختر دي جي (حد أقصى 3)",
"uploadSubmitMix" => "قديم الميكس",
"uploadSelectDJ1" => "اختر دي جي 1",
"uploadSelectDJ2" => "اختر دي جي 2 (اختياري)",
"uploadSelectDJ3" => "اختر دي جي 3 (اختياري)",
"userAlreadyExists" => "المستخدم موجود بالفعل.",
"allFieldsRequired" => "جميع الحقول مطلوبة.",
"passwordsDoNotMatch" => "كلمات السر غير متطابقة.",
"invalidEmail" => "تنسيق البريد الإلكتروني غير صالح.",
"invalidUsername" => "تنسيق اسم المستخدم غير صالح.",
"verifyEmailAddress" => "تحقق من عنوان بريدك الإلكتروني",
"registerThankYou" => "شكرًا لتسجيلك في ",
"registerVerifyEmail" => "يرجى التحقق من عنوان بريدك الإلكتروني عن طريق النقر على الرابط أدناه أو بإدخال رمز التحقق في ملفك الشخصي:",
"registerVerifyCodeIs" => "رمز التحقق الخاص بك هو: ",
"registerVerifyTimeout" => "هذا الرمز سينتهي صلاحيته بعد 15 دقيقة.",
"password" => "كلمة المرور",
"rememberMe" => "تذكرني",
"forgotPassword" => "نسيت كلمة المرور",
"dontHaveAccount" => "لا تملك حسابًا؟",
"signUp" => "اشترك",
"passwordResetSent" => "إذا كان البريد الإلكتروني موجودًا في نظامنا، فقد تم إرسال رابط إعادة تعيين كلمة المرور.",
"passwordResetRequested" => "لقد طلبت إعادة تعيين كلمة المرور الخاصة بك. يرجى النقر على الرابط أدناه لإعادة تعيين كلمة مرورك:",
"passwordResetUnrequested" => "إذا لم تطلب ذلك، يرجى تجاهل هذا البريد الإلكتروني. هذا الرابط سينتهي صلاحيته بعد 15 دقيقة.",
"emailaddressEnter" => "أدخل عنوان بريدك الإلكتروني",
"messageSentSuccess" => "تم إرسال الرسالة بنجاح.",
"messageSentError" => "حدث خطأ أثناء إرسال الرسالة.",
"contactUs2" => "نود أن نسمع منك. أرسل لنا رسالة وسنرد عليها في أقرب وقت ممكن.",
"messageSendUs" => "أرسل لنا رسالة",
"messageSend" => "أرسل رسالة",
"passwordReset" => "إعادة تعيين كلمة المرور",
"enterYourUsername" => "أدخل اسم المستخدم الخاص بك",
"newPassword" => "كلمة مرور جديدة",
"confirmPassword" => "تأكيد كلمة المرور الجديدة",
"passwordResetSuccess" => "تم إعادة تعيين كلمة المرور بنجاح. يرجى تسجيل الدخول باستخدام كلمة المرور الجديدة الخاصة بك.",
"enterEmailAddressPlease" => "يرجى إدخال عنوان بريدك الإلكتروني.",
"emailInvalid" => "تنسيق البريد الإلكتروني غير صالح.",
"passwordMismatch" => "كلمات المرور غير متطابقة.",
"passwordRequirements" => "يجب أن تكون كلمة المرور مكونة من 8 أحرف على الأقل وتتضمن أحرف كبيرة وصغيرة، بالإضافة إلى رقم.",
"resetExpiredInvalid" => "رمز إعادة تعيين كلمة المرور غير صالح أو expired.",
"resetExpired" => "انتهت صلاحية رمز إعادة تعيين كلمة المرور.",
"codeCredsInvalid" => "بيانات الاعتماد أو رمز التحقق غير صالح.",
"change" => "تغيير",
"changePicture" => "تغيير الصورة",
"verify" => "تحقق",
"createdUsing" => "تم الإنشاء باستخدام",
"djmixhostingsoftware" => "برنامج استضافة ميكس الدي جي",
"privacyPolicy" => "سياسة الخصوصية",
"termsAndConditions" => "الشروط والأحكام",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'welcome' => 'Benvingut al nostre lloc web!',
'description' => 'Aquesta és una descripció en anglès.',
'desc' => 'Descripció',
'userProfile' => "Perfil d'Usuari",
'user' => 'Usuari',
'home' => 'Inici',
'djName' => 'Nom del DJ',
'email' => 'Correu electrònic',
'location' => 'Ubicació',
'bio' => 'Biografia',
'submit' => 'Enviar',
'login' => 'Inicia sessió',
'message' => 'Missatge',
'follow' => 'Seguir',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"djNotFound" => "No s'ha pogut carregar el DJ; O bé no s'ha trobat el DJ o aquest DJ és privat.",
"notfound" => "Pàgina no trobada",
"genre" => "Gènere",
"genres" => "Gèneres",
"genreNotFound" => "No s'ha pogut carregar el gènere; O bé no s'ha trobat el gènere, estava buit, o aquest gènere és privat.",
"mix-count" => "Compte de mescles",
"mixes" => "Mescles",
"mix" => "Mescla",
"mixNotFound" => "No s'ha pogut carregar la mescla; O bé no s'ha trobat la mescla, estava buida, o aquesta mescla és privada.",
"mixshowNotFound" => "No s'ha pogut carregar el mixshow; O bé no s'ha trobat el mixshow, estava buit, o aquest mixshow és privat.",
"mixName" => "Nom de la mescla",
"mixDescription" => "Descripció de la mescla",
"mixLength" => "Durada de la mescla",
"mixGenre" => "Gènere de la mescla",
"view" => "Veure",
"mixname" => "Nom de la mescla",
"search" => "Cerca",
"searchResults" => "Resultats de la cerca",
"searchResultsFor" => "Resultats de la cerca per",
"searchResultsFound" => "Resultats de la cerca trobats",
"tracklist" => "Llista de pistes",
"lastupdated" => "Última actualització",
"duration" => "Durada",
"hour" => "hora",
"hours" => "hores",
"minute" => "minut",
"minutes" => "minuts",
"second" => "segon",
"seconds" => "segons",
"by" => "per",
"added" => "Afegit",
"recorded" => "Registrat",
"audioNotSupported" => "El teu navegador no suporta l'element d'àudio.",
"downloads" => "Descarregues",
"download" => "Descarregar",
"downloadMix" => "Descarregar mescla",
"plays" => "Reproduccions",
"play" => "Reproduir",
"contactus" => "Contacta'ns",
"allrightsreserved" => "Tots els drets reservats.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
"mixshowName" => "Nom del mixshow",
"share" => "Comparteix",
"sahrethismix" => "Comparteix aquesta mescla",
"sharethismixshow" => "Comparteix aquest mixshow",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "Any",
"sharetotwitter" => "Comparteix a X (antigament Twitter)",
"sharetofb" => "Comparteix a Facebook",
"sharetoig" => "Comparteix a Instagram",
"copyurl" => "Copia l'URL",
"urlcopiedtoclipboard" => "URL copiat al porta-retalls",
"failedtocopyurl" => "Error al copiar l'URL",
"name" => "Nom",
"username" => "Nom d'usuari",
"logout" => "Tanca sessió",
"upload" => "Carregar",
"loginToVerifyEmail" => "Has d'iniciar sessió per verificar el teu correu electrònic.",
"loginToUploadMix" => "Has d'iniciar sessió per carregar una mescla.",
"verificationCodeRequired" => "El codi de verificació és requerit.",
"recordedDate" => "Data de registre",
"noUploadedFileFound" => "No s'ha trobat cap fitxer carregat. Si us plau, carregueu un fitxer de mescla.",
"mixTitleRequired" => "El títol de la mescla és requerit.",
"errorUploadCDN" => "Error en carregar fitxer al CDN: ",
"errorSavingMixDB" => "Error en desar la mescla a la base de dades.",
"uploadedPendingApproval" => "Mescla carregada correctament i pendent d'aprovació.",
"uploadHeader1" => "Carrega la teva mescla a DJs d'Utah",
"uploadAlertHeader" => "Informació important sobre la càrrega",
"uploadAlert1" => "DJs d'Utah és un projecte principalment d'arxiu dedicat a preservar la història i la cultura dels DJs de EDM a Utah. Les teves càrregues contribueixen a aquest registre històric.",
"uploadHeader2" => "Abans de carregar",
"uploadAlert2" => "Verifica que tots els DJs involucrats estiguin llistats a la nostra base de dades. Si un DJ no està llistat, haurà de ser afegit i aprovat abans de la càrrega.",
"uploadAlert3" => "Verifica que hi hagi gèneres apropiats disponibles per a la teva mescla. Nous gèneres requereixen aprovació abans que puguin ser utilitzats.",
"uploadAlert4" => "Pots enviar nous DJs o sol·licituds de gènere a través de la configuració del teu perfil.",
"uploadProcess" => "Procés de càrrega",
"uploadProcess1" => "Carrega el teu fitxer de mescla (format MP3 o ZIP)",
"uploadProcess2" => "Introdueix els detalls de la mescla, incloent títol, descripció i data de registre",
"uploadProcess3" => "Selecciona gèneres i DJs rellevants",
"uploadProcess4" => "Enviar per revisió",
"uploadAMix" => "Carrega una mescla",
"uploadSelectMix" => "Selecciona el fitxer de mescla (MP3 o ZIP)",
"uploadMaxFileSize" => "Mida màxima del fitxer: 500MB",
"uploadFile" => "Carregar fitxer",
"uploadSelectGenres" => "Selecciona gèneres (escriu per cercar)",
"uploadSelectDJSMax3" => "Selecciona DJs (màxim 3)",
"uploadSubmitMix" => "Enviar mescla",
"uploadSelectDJ1" => "Selecciona DJ 1",
"uploadSelectDJ2" => "Selecciona DJ 2 (opcional)",
"uploadSelectDJ3" => "Selecciona DJ 3 (opcional)",
"userAlreadyExists" => "L'usuari ja existeix.",
"allFieldsRequired" => "Tots els camps són obligatoris.",
"passwordsDoNotMatch" => "Les contrasenyes no coincideixen.",
"invalidEmail" => "Format de correu electrònic invàlid.",
"invalidUsername" => "Format de nom d'usuari invàlid.",
"verifyEmailAddress" => "Verifica la teva adreça de correu electrònic",
"registerThankYou" => "Gràcies per registrar-te a ",
"registerVerifyEmail" => "Si us plau, verifica la teva adreça de correu electrònic fent clic al següent enllaç o introduint el codi de verificació al teu perfil:",
"registerVerifyCodeIs" => "El teu codi de verificació és: ",
"registerVerifyTimeout" => "Aquest codi caducarà en 15 minuts.",
"password" => "Contrasenya",
"rememberMe" => "Recorda'm",
"forgotPassword" => "Has oblidat la contrasenya",
"dontHaveAccount" => "No tens un compte?",
"signUp" => "Registra't",
"passwordResetSent" => "Si el correu electrònic existeix al nostre sistema, s'ha enviat un enllaç per restablir la contrasenya.",
"passwordResetRequested" => "Has sol·licitat restablir la teva contrasenya. Si us plau, fes clic a l'enllaç següent per restablir la teva contrasenya:",
"passwordResetUnrequested" => "Si no has sol·licitat això, si us plau, ignora aquest correu electrònic. Aquest enllaç caducarà en 15 minuts.",
"emailaddressEnter" => "Introdueix la teva adreça de correu electrònic",
"messageSentSuccess" => "Missatge enviat correctament.",
"messageSentError" => "S'ha produït un error en enviar el missatge.",
"contactUs2" => "Ens encantaria saber de vosaltres. Envia'ns un missatge i et respondrem el més aviat possible.",
"messageSendUs" => "Envia'ns un missatge",
"messageSend" => "Enviar missatge",
"passwordReset" => "Restablir contrasenya",
"enterYourUsername" => "Introdueix el teu nom d'usuari",
"newPassword" => "Nova contrasenya",
"confirmPassword" => "Confirma nova contrasenya",
"passwordResetSuccess" => "La teva contrasenya s'ha restablert correctament. Si us plau, inicia sessió amb la teva nova contrasenya.",
"enterEmailAddressPlease" => "Si us plau, introdueix la teva adreça de correu electrònic.",
"emailInvalid" => "Format de correu electrònic invàlid.",
"passwordMismatch" => "Les contrasenyes no coincideixen.",
"passwordRequirements" => "La contrasenya ha de tenir almenys 8 caràcters de longitud i incloure lletres majúscules i minúscules, així com un número.",
"resetExpiredInvalid" => "Codi de restabliment de contrasenya invàlid o caducat.",
"resetExpired" => "El codi de restabliment de contrasenya ha caducat.",
"codeCredsInvalid" => "Credencials o codi de verificació invàlids.",
"change" => "Canviar",
"changePicture" => "Canviar imatge",
"verify" => "Verificar",
"createdUsing" => "Creat amb",
"djmixhostingsoftware" => "Programari d'allotjament de mescles de DJ",
"privacyPolicy" => "Política de privadesa",
"termsAndConditions" => "Termes i condicions",
];

View file

@ -1,43 +1,43 @@
<?php
return [
'welcome' => 'Vítejte na našich webových stránkách!',
'description' => 'To je popis v angličtině.',
'desc' => 'L 343, 22.12.2009, s. 1).',
'description' => 'Toto je popis v angličtině.',
'desc' => 'Popis',
'userProfile' => "Profil uživatele",
'user' => 'Uživatel',
'home' => 'Domů',
'djName' => 'Název DJ',
'email' => 'E-mailová adresa',
'location' => 'Poloha',
'home' => 'Domov',
'djName' => 'Jméno DJ',
'email' => 'E-mail',
'location' => 'Umístění',
'bio' => 'Bio',
'submit' => 'Odeslat',
'login' => 'Přihlásit se',
'message' => 'Zpráva',
'follow' => 'Sledovat',
'djs' => 'DJs',
"djNotFound" => "Nelze načíst DJ; buď nebyl nalezen DJ nebo je tento DJ soukromý.",
'djs' => 'DJe',
"djNotFound" => "Nepodařilo se načíst DJ; buď DJ nebyl nalezen, nebo je tento DJ soukromý.",
"notfound" => "Stránka nenalezena",
"genre" => "Žánr",
"genres" => "Genres",
"genreNotFound" => "Nelze načíst genre; buď nebyl žánr nalezen, byl prázdný, nebo tento žánr je soukromý.",
"mix-count" => "Počet smíšených",
"mixes" => "Směsi",
"mix" => "Míchat",
"mixNotFound" => "Nelze načíst mix; buď směs nebyla nalezena, byla prázdná, nebo je tato směs soukromá.",
"mixshowNotFound" => "Nelze načíst mixshow; buď mixshow nebyl nalezen, byl prázdný, nebo je tento mixshow soukromý.",
"mixName" => "Směsný název",
"mixDescription" => "Smíchat popis",
"mixLength" => "Míchat délku",
"mixGenre" => "Míchat žánr",
"genres" => "Žánry",
"genreNotFound" => "Nepodařilo se načíst žánr; buď žánr nebyl nalezen, byl prázdný nebo je tento žánr soukromý.",
"mix-count" => "Počet mixů",
"mixes" => "Mixy",
"mix" => "Mix",
"mixNotFound" => "Nepodařilo se načíst mix; buď mix nebyl nalezen, byl prázdný nebo je tento mix soukromý.",
"mixshowNotFound" => "Nepodařilo se načíst mixshow; buď mixshow nebyl nalezen, byl prázdný nebo je tento mixshow soukromý.",
"mixName" => "Název mixu",
"mixDescription" => "Popis mixu",
"mixLength" => "Délka mixu",
"mixGenre" => "Žánr mixu",
"view" => "Zobrazit",
"mixname" => "Směsný název",
"mixname" => "Název mixu",
"search" => "Hledat",
"searchResults" => "Výsledky hledání",
"searchResultsFor" => "Výsledky hledání pro",
"searchResultsFound" => "Nalezeny výsledky hledání",
"tracklist" => "Seznam stop",
"searchResultsFound" => "Nalezené výsledky hledání",
"tracklist" => "Seznam skladeb",
"lastupdated" => "Naposledy aktualizováno",
"duration" => "Doba trvání",
"duration" => "Délka",
"hour" => "hodina",
"hours" => "hodiny",
"minute" => "minuta",
@ -46,31 +46,110 @@ return [
"seconds" => "sekundy",
"by" => "od",
"added" => "Přidáno",
"recorded" => "Zaznamenáno",
"audioNotSupported" => "Váš prohlížeč nepodporuje zvukový prvek.",
"recorded" => "Nahráno",
"audioNotSupported" => "Váš prohlížeč nepodporuje prvek audio.",
"downloads" => "Stahování",
"download" => "Stáhnout",
"downloadMix" => "Stáhnout směs",
"plays" => "Hraje",
"play" => "Hrát",
"downloadMix" => "Stáhnout mix",
"plays" => "Přehrání",
"play" => "Přehrát",
"contactus" => "Kontaktujte nás",
"allrightsreserved" => "Všechna práva vyhrazena.",
"mixshows" => "Směšovače",
"mixshows" => "Mixshowy",
"mixshow" => "Mixshow",
"mixshowName" => "Název Mixshow",
"mixshowName" => "Název mixshow",
"share" => "Sdílet",
"sahrethismix" => "Sdílet tuto skladbu",
"sharethismixshow" => "Sdílet tento mixshow",
"sahrethismix" => "Sdílet tento mix",
"sharethismixshow" => "Sdílet tuto mixshow",
"rss" => "RSS",
"year" => "Rok",
"sharetotwitter" => "Sdílet na X (dříve Twitter)",
"sharetofb" => "Sdílet na Facebook",
"sharetoig" => "Sdílet na Instagramu",
"sharetoig" => "Sdílet na Instagram",
"copyurl" => "Kopírovat URL",
"urlcopiedtoclipboard" => "URL zkopírováno do schránky",
"failedtocopyurl" => "Kopírování URL se nezdařilo",
"name" => "Název",
"urlcopiedtoclipboard" => "URL byla zkopírována do schránky",
"failedtocopyurl" => "Nepodařilo se zkopírovat URL",
"name" => "Jméno",
"username" => "Uživatelské jméno",
"logout" => "Odhlásit se",
"upload" => "Nahrát",
"loginToVerifyEmail" => "Musíte být přihlášeni, abyste ověřili svou e-mailovou adresu.",
"loginToUploadMix" => "Musíte být přihlášeni, abyste nahráli mix.",
"verificationCodeRequired" => "Je vyžadován ověřovací kód.",
"recordedDate" => "Datum nahrání",
"noUploadedFileFound" => "Žádný nahraný soubor nebyl nalezen. Prosím, nahrajte soubor mixu.",
"mixTitleRequired" => "Název mixu je požadován.",
"errorUploadCDN" => "Chyba při nahrávání souboru na CDN: ",
"errorSavingMixDB" => "Chyba při ukládání mixu do databáze.",
"uploadedPendingApproval" => "Mix byl úspěšně nahrán a čeká na schválení.",
"uploadHeader1" => "Nahrajte svůj mix pro DJs v Utahu",
"uploadAlertHeader" => "Důležité informace o nahrávání",
"uploadAlert1" => "DJs v Utahu jsou především archivním projektem zaměřeným na zachování historie a kultury EDM DJ v Utahu. Vaše nahrávky přispívají k této historické dokumentaci.",
"uploadHeader2" => "Před nahráním",
"uploadAlert2" => "Ověřte, že všichni DJové zapojení jsou uvedeni v naší databázi. Pokud DJ není uveden, musí být přidán a schválen před nahráním.",
"uploadAlert3" => "Zkontrolujte, že pro váš mix jsou k dispozici odpovídající žánry. Nové žánry vyžadují schválení před jejich použitím.",
"uploadAlert4" => "Můžete zaslat nové žádosti o DJ nebo žánr prostřednictvím nastavení svého profilu.",
"uploadProcess" => "Proces nahrávání",
"uploadProcess1" => "Nahrajte svůj soubor mixu (ve formátu MP3 nebo ZIP)",
"uploadProcess2" => "Zadejte podrobnosti o mixu, včetně názvu, popisu a data nahrávání",
"uploadProcess3" => "Vyberte příslušné žánry a DJy",
"uploadProcess4" => "Odeslat k posouzení",
"uploadAMix" => "Nahrát mix",
"uploadSelectMix" => "Vyberte soubor mixu (ve formátu MP3 nebo ZIP)",
"uploadMaxFileSize" => "Maximální velikost souboru: <b>500</b> MB",
"uploadFile" => "Nahrát soubor",
"uploadSelectGenres" => "Vyberte žánry (napište pro hledání)",
"uploadSelectDJSMax3" => "Vyberte DJe (maximálně 3)",
"uploadSubmitMix" => "Odeslat mix",
"uploadSelectDJ1" => "Vyberte DJ 1",
"uploadSelectDJ2" => "Vyberte DJ 2 (volitelné)",
"uploadSelectDJ3" => "Vyberte DJ 3 (volitelné)",
"userAlreadyExists" => "Uživatel již existuje.",
"allFieldsRequired" => "Všechna pole jsou povinná.",
"passwordsDoNotMatch" => "Hesla se neshodují.",
"invalidEmail" => "Neplatný formát e-mailu.",
"invalidUsername" => "Neplatný formát uživatelského jména.",
"verifyEmailAddress" => "Ověřte svou e-mailovou adresu",
"registerThankYou" => "Děkujeme za registraci na ",
"registerVerifyEmail" => "Prosím ověřte svou e-mailovou adresu kliknutím na odkaz níže nebo zadáním ověřovacího kódu do svého profilu:",
"registerVerifyCodeIs" => "Váš ověřovací kód je: ",
"registerVerifyTimeout" => "Tento kód vyprší za 15 minut.",
"password" => "Heslo",
"rememberMe" => "Zapamatovat si mě",
"forgotPassword" => "Zapomněli jste heslo",
"dontHaveAccount" => "Nemáte účet?",
"signUp" => "Registrovat se",
"passwordResetSent" => "Pokud e-mail existuje v našem systému, byl odeslán odkaz na resetování hesla.",
"passwordResetRequested" => "Požádali jste o resetování hesla. Prosím, klikněte na odkaz níže pro resetování vašeho hesla:",
"passwordResetUnrequested" => "Pokud jste to nepožadovali, prosím ignorujte tento e-mail. Tento odkaz vyprší za 15 minut.",
"emailaddressEnter" => "Zadejte svou e-mailovou adresu",
"messageSentSuccess" => "Zpráva byla úspěšně odeslána.",
"messageSentError" => "Při odesílání zprávy došlo k chybě.",
"contactUs2" => "Rádi bychom od Vás slyšeli. Pošlete nám zprávu a odpovíme co nejdříve.",
"messageSendUs" => "Pošlete nám zprávu",
"messageSend" => "Odeslat zprávu",
"passwordReset" => "Resetovat heslo",
"enterYourUsername" => "Zadejte své uživatelské jméno",
"newPassword" => "Nové heslo",
"confirmPassword" => "Potvrďte nové heslo",
"passwordResetSuccess" => "Vaše heslo bylo úspěšně resetováno. Prosím, přihlaste se s vaším novým heslem.",
"enterEmailAddressPlease" => "Prosím zadejte svou e-mailovou adresu.",
"emailInvalid" => "Neplatný formát e-mailu.",
"passwordMismatch" => "Hesla se neshodují.",
"passwordRequirements" => "Heslo musí mít alespoň 8 znaků a obsahovat velká a malá písmena, stejně jako číslo.",
"resetExpiredInvalid" => "Neplatný nebo vypršený kód pro resetování hesla.",
"resetExpired" => "Kód pro resetování hesla vypršel.",
"codeCredsInvalid" => "Neplatné údaje nebo ověřovací kód.",
"change" => "Změnit",
"changePicture" => "Změnit obrázek",
"verify" => "Ověřit",
"createdUsing" => "Vytvořeno pomocí",
"djmixhostingsoftware" => "Software pro hosting DJ mixů",
"privacyPolicy" => "Zásady ochrany osobních údajů",
"termsAndConditions" => "Podmínky a ujednání",
];

View file

@ -2,41 +2,41 @@
return [
'welcome' => 'Velkommen til vores hjemmeside!',
'description' => 'Dette er en beskrivelse på engelsk.',
'desc' => 'Varebeskrivelse',
'userProfile' => "Bruger Profil",
'desc' => 'Beskrivelse',
'userProfile' => "Brugerprofil",
'user' => 'Bruger',
'home' => 'Hjem',
'djName' => 'DJ Navn',
'email' => 'E-mail',
'location' => 'Placering',
'bio' => 'Bio',
'email' => 'Mail',
'location' => 'Beliggenhed',
'bio' => 'Biografi',
'submit' => 'Indsend',
'login' => 'Login',
'login' => 'Log ind',
'message' => 'Besked',
'follow' => 'Følg',
'djs' => 'DJs',
"djNotFound" => "Kunne ikke indlæse DJ; enten blev DJ ikke fundet eller denne DJ er privat.",
"djNotFound" => "Kunne ikke indlæse DJ; enten blev DJ ikke fundet, eller denne DJ er privat.",
"notfound" => "Siden blev ikke fundet",
"genre" => "Genre",
"genres" => "Genres",
"genres" => "Genrer",
"genreNotFound" => "Kunne ikke indlæse genre; enten blev genren ikke fundet, var tom, eller denne genre er privat.",
"mix-count" => "Bland Antal",
"mixes" => "Blandinger",
"mix" => "Bland",
"mixNotFound" => "Kunne ikke indlæse mix. Enten blev blandingen ikke fundet, var tom, eller også er dette miks privat.",
"mixshowNotFound" => "Kunne ikke indlæse mixshow; enten blev mixshowet ikke fundet, var tomt, eller dette mixshow er privat.",
"mixName" => "Mix Navn",
"mixDescription" => "Bland Beskrivelse",
"mixLength" => "Bland Længde",
"mixGenre" => "Mix Genre",
"mix-count" => "Mixantal",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Kunne ikke indlæse mix; enten blev mixet ikke fundet, var tomt, eller dette mix er privat.",
"mixshowNotFound" => "Kunne ikke indlæse mixshow; enten blev mixshow ikke fundet, var tomt, eller dette mixshow er privat.",
"mixName" => "Mixnavn",
"mixDescription" => "Mixbeskrivelse",
"mixLength" => "Mixlængde",
"mixGenre" => "Mixgenre",
"view" => "Vis",
"mixname" => "Mix Navn",
"mixname" => "Mixnavn",
"search" => "Søg",
"searchResults" => "Søge Resultater",
"searchResults" => "Søgeresultater",
"searchResultsFor" => "Søgeresultater for",
"searchResultsFound" => "Søgeresultater Fundet",
"tracklist" => "Sporliste",
"lastupdated" => "Sidst Opdateret",
"searchResultsFound" => "Fundne søgeresultater",
"tracklist" => "Trackliste",
"lastupdated" => "Seneste opdatering",
"duration" => "Varighed",
"hour" => "time",
"hours" => "timer",
@ -47,30 +47,109 @@ return [
"by" => "af",
"added" => "Tilføjet",
"recorded" => "Optaget",
"audioNotSupported" => "Din browser understøtter ikke lydelementet.",
"audioNotSupported" => "Din browser understøtter ikke audio-elementet.",
"downloads" => "Downloads",
"download" => "Hent",
"downloadMix" => "Download Blanding",
"plays" => "Afspil",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Afspilninger",
"play" => "Afspil",
"contactus" => "Kontakt Os",
"allrightsreserved" => "Alle rettigheder forbeholdt.",
"contactus" => "Kontakt os",
"allrightsreserved" => "Alle rettigheder forbeholdes.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Navn",
"mixshowName" => "Mixshow navn",
"share" => "Del",
"sahrethismix" => "Del dette mix",
"sharethismixshow" => "Del dette mixshow",
"rss" => "RSS",
"year" => "År",
"sharetotwitter" => "Del til X (tidligere Twitter)",
"sharetofb" => "Del Facebook",
"sharetoig" => "Del Instagram",
"copyurl" => "Kopiér URL",
"sharetofb" => "Del til Facebook",
"sharetoig" => "Del til Instagram",
"copyurl" => "Kopier URL",
"urlcopiedtoclipboard" => "URL kopieret til udklipsholder",
"failedtocopyurl" => "Kopiering af URL mislykkedes",
"failedtocopyurl" => "Kunne ikke kopiere URL",
"name" => "Navn",
"username" => "Brugernavn",
"logout" => "Log Ud",
"logout" => "Log ud",
"upload" => "Upload",
"loginToVerifyEmail" => "Du skal være logget ind for at bekræfte din e-mail.",
"loginToUploadMix" => "Du skal være logget ind for at uploade et mix.",
"verificationCodeRequired" => "Verifikationskode er nødvendig.",
"recordedDate" => "Optaget dato",
"noUploadedFileFound" => "Ingen uploaded fil fundet. Upload venligst en mixfil.",
"mixTitleRequired" => "Mixtitel er nødvendig.",
"errorUploadCDN" => "Fejl ved upload af fil til CDN: ",
"errorSavingMixDB" => "Fejl ved gemme mix til databasen.",
"uploadedPendingApproval" => "Mixet er uploadet succesfuldt og venter på godkendelse.",
"uploadHeader1" => "Upload dit mix til Utahs DJs",
"uploadAlertHeader" => "Vigtig uploadinformation",
"uploadAlert1" => "Utahs DJs er primært et arkiveringsprojekt dedikeret til at bevare historien og kulturen af EDM DJs i Utah. Dine uploads bidrager til denne historiske optegnelse.",
"uploadHeader2" => "Før du uploader",
"uploadAlert2" => "Bekræft, at alle involverede DJs er opført i vores database. Hvis en DJ ikke er opført, skal de tilføjes og godkendes, før de uploades.",
"uploadAlert3" => "Tjek, at relevante genrer er tilgængelige for dit mix. Nye genrer kræver godkendelse, før de kan bruges.",
"uploadAlert4" => "Du kan indsende nye DJ- eller genreanmodninger gennem dine profilindstillinger.",
"uploadProcess" => "Upload proces",
"uploadProcess1" => "Upload din mixfil (MP3 eller ZIP-format)",
"uploadProcess2" => "Indtast mixdetaljer, herunder titel, beskrivelse og optagedato",
"uploadProcess3" => "Vælg relevante genrer og DJs",
"uploadProcess4" => "Indsend til gennemgang",
"uploadAMix" => "Upload et mix",
"uploadSelectMix" => "Vælg mixfil (MP3 eller ZIP)",
"uploadMaxFileSize" => "Maksimal filstørrelse: 500MB",
"uploadFile" => "Upload fil",
"uploadSelectGenres" => "Vælg genrer (skriv for at søge)",
"uploadSelectDJSMax3" => "Vælg DJs (maksimum 3)",
"uploadSubmitMix" => "Indsend Mix",
"uploadSelectDJ1" => "Vælg DJ 1",
"uploadSelectDJ2" => "Vælg DJ 2 (valgfrit)",
"uploadSelectDJ3" => "Vælg DJ 3 (valgfrit)",
"userAlreadyExists" => "Bruger findes allerede.",
"allFieldsRequired" => "Alle felter er påkrævet.",
"passwordsDoNotMatch" => "Adgangskoder matcher ikke.",
"invalidEmail" => "Ugyldigt e-mailformat.",
"invalidUsername" => "Ugyldigt brugernavnformat.",
"verifyEmailAddress" => "Bekræft din e-mailadresse",
"registerThankYou" => "Tak fordi du registrerede dig på ",
"registerVerifyEmail" => "Bekræft venligst din e-mailadresse ved at klikke på linket nedenfor, eller ved at indtaste verifikationskoden i din profil:",
"registerVerifyCodeIs" => "Din verifikationskode er: ",
"registerVerifyTimeout" => "Denne kode udløber om 15 minutter.",
"password" => "Adgangskode",
"rememberMe" => "Husk mig",
"forgotPassword" => "Glemt adgangskode",
"dontHaveAccount" => "Har du ikke en konto?",
"signUp" => "Tilmeld dig",
"passwordResetSent" => "Hvis e-mailen findes i vores system, er et link til nulstilling af adgangskoden blevet sendt.",
"passwordResetRequested" => "Du har anmodet om at nulstille din adgangskode. Klik venligst på linket nedenfor for at nulstille din adgangskode:",
"passwordResetUnrequested" => "Hvis du ikke anmodede om dette, bedes du ignorere denne e-mail. Dette link vil udløbe om 15 minutter.",
"emailaddressEnter" => "Indtast din e-mailadresse",
"messageSentSuccess" => "Besked sendt succesfuldt.",
"messageSentError" => "Der opstod en fejl under sending af beskeden.",
"contactUs2" => "Vi vil elske at høre fra dig. Send os en besked, og vi vil reagere så hurtigt som muligt.",
"messageSendUs" => "Send os en besked",
"messageSend" => "Send besked",
"passwordReset" => "Nulstil adgangskode",
"enterYourUsername" => "Indtast dit brugernavn",
"newPassword" => "Ny adgangskode",
"confirmPassword" => "Bekræft ny adgangskode",
"passwordResetSuccess" => "Din adgangskode er blevet nulstillet succesfuldt. Log venligst ind med din nye adgangskode.",
"enterEmailAddressPlease" => "Indtast venligst din e-mailadresse.",
"emailInvalid" => "Ugyldigt e-mailformat.",
"passwordMismatch" => "Adgangskoder matcher ikke.",
"passwordRequirements" => "Adgangskoden skal være mindst 8 tegn lang og inkludere store og små bogstaver samt et tal.",
"resetExpiredInvalid" => "Ugyldig eller udløbet nulstillingskode.",
"resetExpired" => "Nulstillingskoden er udløbet.",
"codeCredsInvalid" => "Ugyldige legitimationsoplysninger eller verifikationskode.",
"change" => "Ændre",
"changePicture" => "Ændre billede",
"verify" => "Bekræft",
"createdUsing" => "Oprettet ved hjælp af",
"djmixhostingsoftware" => "DJ Mix Hosting Software",
"privacyPolicy" => "Privatlivspolitik",
"termsAndConditions" => "Vilkår og betingelser",
];

View file

@ -5,72 +5,151 @@ return [
'desc' => 'Beschreibung',
'userProfile' => "Benutzerprofil",
'user' => 'Benutzer',
'home' => 'Zuhause',
'home' => 'Startseite',
'djName' => 'DJ-Name',
'email' => 'E-Mail',
'location' => 'Standort',
'bio' => 'Bio',
'submit' => 'Absenden',
'bio' => 'Biografie',
'submit' => 'Einreichen',
'login' => 'Anmelden',
'message' => 'Nachricht',
'follow' => 'Folgen',
'djs' => 'DJs',
"djNotFound" => "DJ konnte nicht geladen werden. Entweder wurde der DJ nicht gefunden oder dieser DJ ist privat.",
"djNotFound" => "DJ konnte nicht geladen werden; entweder wurde der DJ nicht gefunden oder dieser DJ ist privat.",
"notfound" => "Seite nicht gefunden",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Genre konnte nicht geladen werden; entweder wurde das Genre nicht gefunden, war leer oder dieses Genre ist privat.",
"mix-count" => "Mix-Anzahl",
"mixes" => "Mischungen",
"mix-count" => "Mixanzahl",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Mix konnte nicht geladen werden; entweder wurde der Mix nicht gefunden, war leer oder dieser Mix ist privat.",
"mixshowNotFound" => "Mixshow konnte nicht geladen werden; entweder wurde die Mixshow nicht gefunden, war leer oder diese Mixshow ist privat.",
"mixName" => "Mix-Name",
"mixDescription" => "Mix-Beschreibung",
"mixLength" => "Mix-Länge",
"mixGenre" => "Genre mischen",
"view" => "Ansicht",
"mixname" => "Mix-Name",
"search" => "Suchen",
"mixName" => "Mixname",
"mixDescription" => "Mixbeschreibung",
"mixLength" => "Mixlänge",
"mixGenre" => "Mixgenre",
"view" => "Ansehen",
"mixname" => "Mixname",
"search" => "Suche",
"searchResults" => "Suchergebnisse",
"searchResultsFor" => "Suchergebnisse für",
"searchResultsFound" => "Suchergebnisse gefunden",
"searchResultsFound" => "Gefundene Suchergebnisse",
"tracklist" => "Trackliste",
"lastupdated" => "Zuletzt aktualisiert",
"duration" => "Dauer",
"hour" => "std",
"hours" => "std",
"minute" => "minute",
"minutes" => "minuten",
"second" => "sekunde",
"hour" => "Stunde",
"hours" => "Stunden",
"minute" => "Minute",
"minutes" => "Minuten",
"second" => "Sekunde",
"seconds" => "Sekunden",
"by" => "von",
"added" => "Hinzugefügt",
"recorded" => "Aufgenommen",
"audioNotSupported" => "Ihr Browser unterstützt das Audio-Element nicht.",
"audioNotSupported" => "Ihr Browser unterstützt das Audioelement nicht.",
"downloads" => "Downloads",
"download" => "Download",
"download" => "Herunterladen",
"downloadMix" => "Mix herunterladen",
"plays" => "Spielt",
"plays" => "Spiele",
"play" => "Abspielen",
"contactus" => "Kontaktiere uns",
"allrightsreserved" => "Alle Rechte vorbehalten.",
"mixshows" => "Mix-Shows",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mix-Show-Name",
"mixshowName" => "Mixshow-Name",
"share" => "Teilen",
"sahrethismix" => "Diesen Mix teilen",
"sharethismixshow" => "Diese Mixshow teilen",
"sahrethismix" => "Teile diesen Mix",
"sharethismixshow" => "Teile diese Mixshow",
"rss" => "RSS",
"year" => "Jahr",
"sharetotwitter" => "Auf X teilen (ehemals Twitter)",
"sharetofb" => "Auf Facebook teilen",
"sharetoig" => "Auf Instagram teilen",
"sharetotwitter" => "Teilen mit X (ehemals Twitter)",
"sharetofb" => "Teilen auf Facebook",
"sharetoig" => "Teilen auf Instagram",
"copyurl" => "URL kopieren",
"urlcopiedtoclipboard" => "URL in Zwischenablage kopiert",
"failedtocopyurl" => "Fehler beim Kopieren der URL",
"urlcopiedtoclipboard" => "URL in die Zwischenablage kopiert",
"failedtocopyurl" => "URL konnte nicht kopiert werden",
"name" => "Name",
"username" => "Benutzername",
"logout" => "Abmelden",
"upload" => "Hochladen",
"loginToVerifyEmail" => "Sie müssen angemeldet sein, um Ihre E-Mail zu überprüfen.",
"loginToUploadMix" => "Sie müssen angemeldet sein, um einen Mix hochzuladen.",
"verificationCodeRequired" => "Überprüfungs-Code ist erforderlich.",
"recordedDate" => "Aufnahmedatum",
"noUploadedFileFound" => "Kein hochgeladenes Datei gefunden. Bitte laden Sie eine Mix-Datei hoch.",
"mixTitleRequired" => "Mix-Titel ist erforderlich.",
"errorUploadCDN" => "Fehler beim Hochladen der Datei zu CDN: ",
"errorSavingMixDB" => "Fehler beim Speichern des Mixes in der Datenbank.",
"uploadedPendingApproval" => "Mix erfolgreich hochgeladen und wartet auf Genehmigung.",
"uploadHeader1" => "Laden Sie Ihren Mix bei Utah's DJs hoch",
"uploadAlertHeader" => "Wichtige Informationen zum Hochladen",
"uploadAlert1" => "Utah's DJs ist hauptsächlich ein Archivprojekt, das der Erhaltung der Geschichte und Kultur von EDM-DJs in Utah gewidmet ist. Ihre Uploads tragen zu diesem historischen Dokument bei.",
"uploadHeader2" => "Vor dem Hochladen",
"uploadAlert2" => "Überprüfen Sie, dass alle beteiligten DJs in unserer Datenbank aufgeführt sind. Wenn ein DJ nicht aufgeführt ist, muss er hinzugefügt und genehmigt werden, bevor Sie hochladen.",
"uploadAlert3" => "Überprüfen Sie, dass geeignete Genres für Ihren Mix verfügbar sind. Neue Genres benötigen eine Genehmigung, bevor sie verwendet werden können.",
"uploadAlert4" => "Sie können neue DJ- oder Genre-Anfragen über Ihre Profileinstellungen einreichen.",
"uploadProcess" => "Hochladeprozess",
"uploadProcess1" => "Laden Sie Ihre Mix-Datei (MP3- oder ZIP-Format) hoch",
"uploadProcess2" => "Geben Sie Mix-Details an, einschließlich Titel, Beschreibung und Aufnahmedatum",
"uploadProcess3" => "Wählen Sie passende Genres und DJs aus",
"uploadProcess4" => "Zur Überprüfung einreichen",
"uploadAMix" => "Einen Mix hochladen",
"uploadSelectMix" => "Wählen Sie die Mix-Datei (MP3 oder ZIP) aus",
"uploadMaxFileSize" => "Maximale Dateigröße: 500 MB",
"uploadFile" => "Datei hochladen",
"uploadSelectGenres" => "Genres auswählen (tippen, um zu suchen)",
"uploadSelectDJSMax3" => "DJs auswählen (maximal 3)",
"uploadSubmitMix" => "Mix einreichen",
"uploadSelectDJ1" => "DJ 1 auswählen",
"uploadSelectDJ2" => "DJ 2 auswählen (optional)",
"uploadSelectDJ3" => "DJ 3 auswählen (optional)",
"userAlreadyExists" => "Benutzer existiert bereits.",
"allFieldsRequired" => "Alle Felder sind erforderlich.",
"passwordsDoNotMatch" => "Passwörter stimmen nicht überein.",
"invalidEmail" => "Ungültiges E-Mail-Format.",
"invalidUsername" => "Ungültiges Benutzername-Format.",
"verifyEmailAddress" => "Bestätigen Sie Ihre E-Mail-Adresse",
"registerThankYou" => "Vielen Dank für Ihre Registrierung bei ",
"registerVerifyEmail" => "Bitte überprüfen Sie Ihre E-Mail-Adresse, indem Sie auf den Link unten klicken oder den Überprüfungscode in Ihrem Profil eingeben:",
"registerVerifyCodeIs" => "Ihr Überprüfungscode ist: ",
"registerVerifyTimeout" => "Dieser Code läuft in 15 Minuten ab.",
"password" => "Passwort",
"rememberMe" => "Merk dir mich",
"forgotPassword" => "Passwort vergessen",
"dontHaveAccount" => "Haben Sie kein Konto?",
"signUp" => "Registrieren",
"passwordResetSent" => "Wenn die E-Mail in unserem System existiert, wurde ein Link zum Zurücksetzen des Passworts gesendet.",
"passwordResetRequested" => "Sie haben beantragt, Ihr Passwort zurückzusetzen. Bitte klicken Sie auf den Link unten, um Ihr Passwort zurückzusetzen:",
"passwordResetUnrequested" => "Wenn Sie dies nicht angefordert haben, ignorieren Sie bitte diese E-Mail. Dieser Link läuft in 15 Minuten ab.",
"emailaddressEnter" => "Geben Sie Ihre E-Mail-Adresse ein",
"messageSentSuccess" => "Nachricht erfolgreich gesendet.",
"messageSentError" => "Beim Senden der Nachricht ist ein Fehler aufgetreten.",
"contactUs2" => "Wir würden uns freuen, von dir zu hören. Schicken Sie uns eine Nachricht und wir werden so bald wie möglich antworten.",
"messageSendUs" => "Senden Sie uns eine Nachricht",
"messageSend" => "Nachricht senden",
"passwordReset" => "Passwort zurücksetzen",
"enterYourUsername" => "Geben Sie Ihren Benutzernamen ein",
"newPassword" => "Neues Passwort",
"confirmPassword" => "Neues Passwort bestätigen",
"passwordResetSuccess" => "Ihr Passwort wurde erfolgreich zurückgesetzt. Bitte melden Sie sich mit Ihrem neuen Passwort an.",
"enterEmailAddressPlease" => "Bitte geben Sie Ihre E-Mail-Adresse ein.",
"emailInvalid" => "Ungültiges E-Mail-Format.",
"passwordMismatch" => "Passwörter stimmen nicht überein.",
"passwordRequirements" => "Das Passwort muss mindestens 8 Zeichen lang sein und Groß- und Kleinbuchstaben sowie eine Zahl enthalten.",
"resetExpiredInvalid" => "Ungültiger oder abgelaufener Passwort-Zurücksetz-Code.",
"resetExpired" => "Der Passwort-Zurücksetz-Code ist abgelaufen.",
"codeCredsInvalid" => "Ungültige Anmeldeinformationen oder Überprüfungscode.",
"change" => "Ändern",
"changePicture" => "Bild ändern",
"verify" => "Überprüfen",
"createdUsing" => "Erstellt mit",
"djmixhostingsoftware" => "DJ-Mix-Hosting-Software",
"privacyPolicy" => "Datenschutzbestimmungen",
"termsAndConditions" => "Allgemeine Geschäftsbedingungen",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => 'Καλώς ήλθατε στην ιστοσελίδα μας!',
'description' => 'Αυτή είναι μια περιγραφή στα αγγλικά.',
'welcome' => 'Καλώς ήρθατε στην ιστοσελίδα μας!',
'description' => 'Αυτή είναι μια περιγραφή στα Αγγλικά.',
'desc' => 'Περιγραφή',
'userProfile' => "Προφίλ Χρήστη",
'user' => 'Χρήστης',
'home' => 'Αρχική',
'djName' => 'Όνομα DJ',
'email' => 'E-mail',
'email' => 'Ηλεκτρονικό Ταχυδρομείο',
'location' => 'Τοποθεσία',
'bio' => 'Βιογραφικό',
'submit' => 'Υποβολή',
'login' => 'Είσοδος',
'login' => 'Σύνδεση',
'message' => 'Μήνυμα',
'follow' => 'Ακολουθήστε',
'follow' => 'Ακολούθησε',
'djs' => 'DJ',
"djNotFound" => "Δεν ήταν δυνατή η φόρτωση του DJ, ούτε ο DJ βρέθηκε ούτε αυτός ο DJ είναι ιδιωτικός.",
"djNotFound" => "Δεν ήταν δυνατή η φόρτωση του DJ· είτε ο DJ δεν βρέθηκε είτε αυτός ο DJ είναι ιδιωτικός.",
"notfound" => "Η σελίδα δεν βρέθηκε",
"genre" => "Είδος",
"genres" => "Genres",
"genreNotFound" => "Δεν ήταν δυνατή η φόρτωση είδους. Είτε το είδος δεν βρέθηκε, ήταν άδειο, είτε αυτό το είδος είναι ιδιωτικό.",
"mix-count" => "Αριθμός Μεικτών",
"mixes" => "Μείγματα",
"mix" => "Μείγμα",
"mixNotFound" => "Δεν ήταν δυνατή η φόρτωση του μείγματος. Είτε το μείγμα δεν βρέθηκε, ήταν άδειο, είτε αυτό το μίγμα είναι ιδιωτικό.",
"mixshowNotFound" => "Δεν ήταν δυνατή η φόρτωση του mixshow. Είτε το mixshow δεν βρέθηκε, ήταν άδειο, είτε αυτό το mixshow είναι ιδιωτικό.",
"mixName" => "Όνομα Μεικτού",
"mixDescription" => "Περιγραφή Μεικτού",
"mixLength" => "Μήκος Μείγματος",
"mixGenre" => "Είδος Μείγματος",
"genres" => "Είδη",
"genreNotFound" => "Δεν ήταν δυνατή η φόρτωση είδους· είτε το είδος δεν βρέθηκε, ήταν κενό ή αυτό το είδος είναι ιδιωτικό.",
"mix-count" => "Πλήθος μιξ",
"mixes" => "Μίξεις",
"mix" => "Μίξη",
"mixNotFound" => "Δεν ήταν δυνατή η φόρτωση μίξης· είτε η μίξη δεν βρέθηκε, ήταν κενή ή αυτή η μίξη είναι ιδιωτική.",
"mixshowNotFound" => "Δεν ήταν δυνατή η φόρτωση του mixshow· είτε το mixshow δεν βρέθηκε, ήταν κενό ή αυτό το mixshow είναι ιδιωτικό.",
"mixName" => "Όνομα Μίξης",
"mixDescription" => "Περιγραφή Μίξης",
"mixLength" => "Διάρκεια Μίξης",
"mixGenre" => "Είδος Μίξης",
"view" => "Προβολή",
"mixname" => "Όνομα Μεικτού",
"mixname" => "Όνομα Μίξης",
"search" => "Αναζήτηση",
"searchResults" => "Αποτελέσματα Αναζήτησης",
"searchResultsFor" => "Αποτελέσματα αναζήτησης για",
"searchResultsFound" => "Βρέθηκαν Αποτελέσματα Αναζήτησης",
"tracklist" => "Ανίχνευση",
"searchResultsFor" => "Αποτελέσματα Αναζήτησης για",
"searchResultsFound" => "Βρέθηκαν αποτελέσματα αναζήτησης",
"tracklist" => "Λίστα κομματιών",
"lastupdated" => "Τελευταία Ενημέρωση",
"duration" => "Διάρκεια",
"hour" => "ώρα",
@ -47,30 +47,109 @@ return [
"by" => "από",
"added" => "Προστέθηκε",
"recorded" => "Ηχογραφήθηκε",
"audioNotSupported" => "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει το στοιχείο ήχου.",
"audioNotSupported" => "Ο περιηγητής σας δεν υποστηρίζει το στοιχείο ήχου.",
"downloads" => "Λήψεις",
"download" => "Λήψη",
"downloadMix" => "Κατεβάστε Το Mix",
"plays" => "Παίζει",
"downloadMix" => "Λήψη Μίξης",
"plays" => "Αναπαραγωγές",
"play" => "Αναπαραγωγή",
"contactus" => "Επικοινωνήστε Μαζί Μας",
"allrightsreserved" => "Με επιφύλαξη παντός δικαιώματος.",
"mixshows" => "Μείγματα",
"mixshow" => "Mixshow",
"contactus" => "Επικοινωνήστε μαζί μας",
"allrightsreserved" => "Όλα τα δικαιώματα διατηρούνται.",
"mixshows" => "Μιξάρισμα",
"mixshow" => "Μιξάρισμα",
"mixshowName" => "Όνομα Mixshow",
"share" => "Κοινοποίηση",
"sahrethismix" => "Μοιραστείτε αυτό το μίγμα",
"sharethismixshow" => "Μοιραστείτε αυτό το μίγμα",
"sahrethismix" => "Κοινοποιήστε αυτή τη μίξη",
"sharethismixshow" => "Κοινοποιήστε αυτό το mixshow",
"rss" => "RSS",
"year" => "Έτος",
"sharetotwitter" => "Μοιραστείτε στο X (πρώην Twitter)",
"sharetotwitter" => "Κοινοποίηση στο X (πρώην Twitter)",
"sharetofb" => "Κοινοποίηση στο Facebook",
"sharetoig" => "Κοινοποίηση στο Instagram",
"copyurl" => "Αντιγραφή URL",
"urlcopiedtoclipboard" => "Το URL αντιγράφηκε στο πρόχειρο",
"failedtocopyurl" => "Αποτυχία αντιγραφής URL",
"failedtocopyurl" => "Απέτυχε η αντιγραφή του URL",
"name" => "Όνομα",
"username" => "Όνομα Χρήστη",
"logout" => "Αποσύνδεση",
"upload" => "Ανέβασμα",
"upload" => "Ανεβάστε",
"loginToVerifyEmail" => "Πρέπει να είστε συνδεδεμένοι για να επαληθεύσετε το ηλεκτρονικό σας ταχυδρομείο.",
"loginToUploadMix" => "Πρέπει να είστε συνδεδεμένοι για να ανεβάσετε μια μίξη.",
"verificationCodeRequired" => "Απαιτείται κωδικός επαλήθευσης.",
"recordedDate" => "Ημερομηνία Ηχογράφησης",
"noUploadedFileFound" => "Δεν βρέθηκε κανένα αρχείο ανεβασμένο. Παρακαλώ ανεβάστε ένα αρχείο μίξης.",
"mixTitleRequired" => "Ο τίτλος της μίξης είναι υποχρεωτικός.",
"errorUploadCDN" => "Σφάλμα κατά την αποθήκευση αρχείου στο CDN: ",
"errorSavingMixDB" => "Σφάλμα κατά την αποθήκευση της μίξης στη βάση δεδομένων.",
"uploadedPendingApproval" => "Η μίξη ανέβηκε επιτυχώς και εκκρεμεί έγκριση.",
"uploadHeader1" => "Ανεβάστε τη μίξη σας στους DJs της Utah",
"uploadAlertHeader" => "Σημαντικές Πληροφορίες Ανεβάσματος",
"uploadAlert1" => "Οι DJs της Utah είναι κατά κύριο λόγο ένα αρχειακό έργο αφιερωμένο στη διατήρηση της ιστορίας και του πολιτισμού των DJs EDM στην Utah. Οι αναρτήσεις σας συμβάλλουν σε αυτήν την ιστορική καταγραφή.",
"uploadHeader2" => "Πριν Ανεβάσετε",
"uploadAlert2" => "Επιβεβαιώστε ότι όλοι οι DJs που συμμετέχουν είναι καταχωρημένοι στη βάση δεδομένων μας. Εάν ένας DJ δεν είναι καταχωρημένος, πρέπει να προστεθεί και να εγκριθεί πριν από την ανάρτηση.",
"uploadAlert3" => "Ελέγξτε ότι οι κατάλληλοι μουσικοί τύποι είναι διαθέσιμοι για τη μίξη σας. Νέοι τύποι απαιτούν έγκριση πριν μπορέσουν να χρησιμοποιηθούν.",
"uploadAlert4" => "Μπορείτε να υποβάλετε αιτήματα για νέους DJs ή μουσικά είδη μέσω των ρυθμίσεων του προφίλ σας.",
"uploadProcess" => "Διαδικασία Ανέβασης",
"uploadProcess1" => "Ανεβάστε το αρχείο μίξης σας (σε μορφή MP3 ή ZIP)",
"uploadProcess2" => "Εισάγετε λεπτομέρειες μίξης, συμπεριλαμβανομένου του τίτλου, της περιγραφής και της ημερομηνίας ηχογράφησης",
"uploadProcess3" => "Επιλέξτε σχετικά είδη και DJs",
"uploadProcess4" => "Υποβάλετε για έλεγχο",
"uploadAMix" => "Ανεβάστε μια Μίξη",
"uploadSelectMix" => "Επιλέξτε το Αρχείο Μίξης (MP3 ή ZIP)",
"uploadMaxFileSize" => "Μέγιστο μέγεθος αρχείου: 500MB",
"uploadFile" => "Ανεβάστε Αρχείο",
"uploadSelectGenres" => "Επιλέξτε Είδη (πληκτρολογήστε για αναζήτηση)",
"uploadSelectDJSMax3" => "Επιλέξτε DJs (Μέγιστο 3)",
"uploadSubmitMix" => "Υποβάλετε Μίξη",
"uploadSelectDJ1" => "Επιλέξτε DJ 1",
"uploadSelectDJ2" => "Επιλέξτε DJ 2 (προαιρετικά)",
"uploadSelectDJ3" => "Επιλέξτε DJ 3 (προαιρετικά)",
"userAlreadyExists" => "Ο χρήστης υπάρχει ήδη.",
"allFieldsRequired" => "Όλα τα πεδία είναι υποχρεωτικά.",
"passwordsDoNotMatch" => "Οι κωδικοί δεν ταιριάζουν.",
"invalidEmail" => "Μη έγκυρη μορφή ηλεκτρονικού ταχυδρομείου.",
"invalidUsername" => "Μη έγκυρη μορφή ονόματος χρήστη.",
"verifyEmailAddress" => "Επιβεβαιώστε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας",
"registerThankYou" => "Σας ευχαριστούμε που εγγραφείτε στο ",
"registerVerifyEmail" => "Παρακαλώ επιβεβαιώστε τη διεύθυνση ηλεκτρονικού σας ταχυδρομείου κάνοντας κλικ στον παρακάτω σύνδεσμο ή πληκτρολογώντας τον κωδικό επαλήθευσης στο προφίλ σας:",
"registerVerifyCodeIs" => "Ο κωδικός επαλήθευσής σας είναι: ",
"registerVerifyTimeout" => "Αυτός ο κωδικός θα λήξει σε 15 λεπτά.",
"password" => "Κωδικός πρόσβασης",
"rememberMe" => "Να με θυμάσαι",
"forgotPassword" => "Ξεχάσατε τον κωδικό πρόσβασης",
"dontHaveAccount" => "Δεν έχετε λογαριασμό;",
"signUp" => "Εγγραφή",
"passwordResetSent" => "Εάν το ηλεκτρονικό ταχυδρομείο υπάρχει στο σύστημά μας, έχει σταλεί σύνδεσμος επαναφοράς κωδικού πρόσβασης.",
"passwordResetRequested" => "Έχετε ζητήσει να επαναφέρετε τον κωδικό πρόσβασης σας. Παρακαλώ κάντε κλικ στον παρακάτω σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασης σας:",
"passwordResetUnrequested" => "Εάν δεν ζητήσατε αυτό, παρακαλώ αγνοήστε αυτό το ηλεκτρονικό ταχυδρομείο. Αυτός ο σύνδεσμος θα λήξει σε 15 λεπτά.",
"emailaddressEnter" => "Εισάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας",
"messageSentSuccess" => "Το μήνυμα στάλθηκε με επιτυχία.",
"messageSentError" => "Παρουσιάστηκε σφάλμα κατά την αποστολή του μηνύματος.",
"contactUs2" => "Θα θέλαμε να ακούσουμε από εσάς. Στείλτε μας ένα μήνυμα και θα απαντήσουμε το συντομότερο δυνατό.",
"messageSendUs" => "Στείλτε μας ένα μήνυμα",
"messageSend" => "Στείλτε Μήνυμα",
"passwordReset" => "Επαναφορά Κωδικού Πρόσβασης",
"enterYourUsername" => "Εισάγετε το όνομα χρήστη σας",
"newPassword" => "Νέος Κωδικός Πρόσβασης",
"confirmPassword" => "Επιβεβαίωση Νέου Κωδικού Πρόσβασης",
"passwordResetSuccess" => "Ο κωδικός πρόσβασης έχει επαναφερθεί με επιτυχία. Παρακαλώ συνδεθείτε με τον νέο κωδικό πρόσβασης σας.",
"enterEmailAddressPlease" => "Παρακαλώ εισάγετε τη διεύθυνση ηλεκτρονικού σας ταχυδρομείου.",
"emailInvalid" => "Μη έγκυρη μορφή ηλεκτρονικού ταχυδρομείου.",
"passwordMismatch" => "Οι κωδικοί δεν ταιριάζουν.",
"passwordRequirements" => "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον 8 χαρακτήρες και να περιλαμβάνει κεφαλαία και μικρά γράμματα, καθώς και έναν αριθμό.",
"resetExpiredInvalid" => "Μη έγκυρος ή ληγμένος κωδικός επαναφοράς κωδικού πρόσβασης.",
"resetExpired" => "Ο κωδικός επαναφοράς κωδικού πρόσβασης έχει λήξει.",
"codeCredsInvalid" => "Μη έγκυρα διαπιστευτήρια ή κωδικός επαλήθευσης.",
"change" => "Αλλαγή",
"changePicture" => "Αλλαγή Εικόνας",
"verify" => "Επιβεβαίωση",
"createdUsing" => "Δημιουργήθηκε χρησιμοποιώντας",
"djmixhostingsoftware" => "Λογισμικό Φιλοξενίας DJ Mix",
"privacyPolicy" => "Πολιτική Απορρήτου",
"termsAndConditions" => "Όροι και Προϋποθέσεις",
];

View file

@ -82,6 +82,74 @@ return [
"errorUploadCDN" => "Error uploading file to CDN: ",
"errorSavingMixDB" => "Error saving mix to database.",
"uploadedPendingApproval" => "Mix uploaded successfully and is pending approval.",
"uploadHeader1" => "Upload your mix to Utah's DJs"
"uploadHeader1" => "Upload your mix to Utah's DJs",
"uploadAlertHeader" => "Important Upload Information",
"uploadAlert1" => "Utah's DJs is primarily an archival project dedicated to preserving the history and culture of EDM DJs in Utah. Your uploads contribute to this historical record.",
"uploadHeader2" => "Before You Upload",
"uploadAlert2" => "Verify that all DJs involved are listed in our database. If a DJ is not listed, they must be added and approved before uploading.",
"uploadAlert3" => "Check that appropriate genres are available for your mix. New genres require approval before they can be used.",
"uploadAlert4" => "You can submit new DJ or genre requests through your profile settings.",
"uploadProcess" => "Upload Process",
"uploadProcess1" => "Upload your mix file (MP3 or ZIP format)",
"uploadProcess2" => "Enter mix details, including title, description, and recording date",
"uploadProcess3" => "Select relevant genres and DJs",
"uploadProcess4" => "Submit for review",
"uploadAMix" => "Upload a Mix",
"uploadSelectMix" => "Select Mix File (MP3 or ZIP)",
"uploadMaxFileSize" => "Maximum file size: 500MB",
"uploadFile" => "Upload File",
"uploadSelectGenres" => "Select Genres (type to search)",
"uploadSelectDJSMax3" => "Select DJs (Maximum 3)",
"uploadSubmitMix" => "Submit Mix",
"uploadSelectDJ1" => "Select DJ 1",
"uploadSelectDJ2" => "Select DJ 2 (optional)",
"uploadSelectDJ3" => "Select DJ 3 (optional)",
"userAlreadyExists" => "User already exists.",
"allFieldsRequired" => "All fields are required.",
"passwordsDoNotMatch" => "Passwords do not match.",
"invalidEmail" => "Invalid email format.",
"invalidUsername" => "Invalid username format.",
"verifyEmailAddress" => "Verify Your Email Address",
"registerThankYou" => "Thank you for registering at ",
"registerVerifyEmail" => "Please verify your email address by clicking the link below or by entering the verification code in your profile:",
"registerVerifyCodeIs" => "Your verification code is: ",
"registerVerifyTimeout" => "This code will expire in 15 minutes.",
"password" => "Password",
"rememberMe" => "Remember Me",
"forgotPassword" => "Forgot Password",
"dontHaveAccount" => "Don't have an account?",
"signUp" => "Sign Up",
"passwordResetSent" => "If the email exists in our system, a password reset link has been sent.",
"passwordResetRequested" => "You have requested to reset your password. Please click the link below to reset your password:",
"passwordResetUnrequested" => "If you did not request this, please ignore this email. This link will expire in 15 minutes.",
"emailaddressEnter" => "Enter your email address",
"messageSentSuccess" => "Message sent successfully.",
"messageSentError" => "An error occurred while sending the message.",
"contactUs2" => "We'd love to hear from you. Send us a message and we'll respond as soon as possible.",
"messageSendUs" => "Send Us a Message",
"messageSend" => "Send Message",
"passwordReset" => "Reset Password",
"enterYourUsername" => "Enter your username",
"newPassword" => "New Password",
"confirmPassword" => "Confirm New Password",
"passwordResetSuccess" => "Your password has been reset successfully. Please log in with your new password.",
"enterEmailAddressPlease" => "Please enter your email address.",
"emailInvalid" => "Invalid email format.",
"passwordMismatch" => "Passwords do not match.",
"passwordRequirements" => "Password must be at least 8 characters long and include upper and lower case letters, as well as a number.",
"resetExpiredInvalid" => "Invalid or expired password reset code.",
"resetExpired" => "Password reset code has expired.",
"codeCredsInvalid" => "Invalid credentials or verification code.",
"change" => "Change",
"changePicture" => "Change Picture",
"verify" => "Verify",
"createdUsing" => "Created using",
"djmixhostingsoftware" => "DJ Mix Hosting Software",
"privacyPolicy" => "Privacy Policy",
"termsAndConditions" => "Terms and Conditions",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => '¡Bienvenido a nuestro sitio web!',
'description' => 'This is a description in Spanish.',
'description' => 'Esta es una descripción en inglés.',
'desc' => 'Descripción',
'userProfile' => "Perfil de usuario",
'user' => 'Usuario',
'home' => 'Inicio',
'djName' => 'Nombre DJ',
'email' => 'E-mail',
'djName' => 'Nombre del DJ',
'email' => 'Correo electrónico',
'location' => 'Ubicación',
'bio' => 'Bio',
'bio' => 'Biografía',
'submit' => 'Enviar',
'login' => 'Ingresar',
'login' => 'Iniciar sesión',
'message' => 'Mensaje',
'follow' => 'Seguir',
'djs' => 'DJs',
"djNotFound" => "No se pudo cargar el DJ; o el DJ no se encontró o este DJ es privado.",
"djNotFound" => "No se pudo cargar el DJ; o no se encontró al DJ o este DJ es privado.",
"notfound" => "Página no encontrada",
"genre" => "Género",
"genres" => "Genres",
"genreNotFound" => "No se pudo cargar el género; o el género no fue encontrado, estaba vacío, o este género es privado.",
"mix-count" => "Conteo Mix",
"genres" => "Géneros",
"genreNotFound" => "No se pudo cargar el género; o no se encontró el género, estaba vacío o este género es privado.",
"mix-count" => "Conteo de mezclas",
"mixes" => "Mezclas",
"mix" => "Mezcla",
"mixNotFound" => "No se pudo cargar la mezcla; o bien la mezcla no fue encontrada, estaba vacía, o esta mezcla es privada.",
"mixshowNotFound" => "No se pudo cargar mixshow; o bien el mixshow no fue encontrado, estaba vacío, o este mixshow es privado.",
"mixName" => "Mezclar nombre",
"mixDescription" => "Mezclar descripción",
"mixLength" => "Mezclar longitud",
"mixGenre" => "Mezclar género",
"mixNotFound" => "No se pudo cargar la mezcla; o no se encontró la mezcla, estaba vacía o esta mezcla es privada.",
"mixshowNotFound" => "No se pudo cargar el programa de mezcla; o no se encontró el programa de mezcla, estaba vacío o este programa de mezcla es privado.",
"mixName" => "Nombre de la mezcla",
"mixDescription" => "Descripción de la mezcla",
"mixLength" => "Duración de la mezcla",
"mixGenre" => "Género de la mezcla",
"view" => "Ver",
"mixname" => "Mezclar nombre",
"mixname" => "Nombre de la mezcla",
"search" => "Buscar",
"searchResults" => "Resultados de búsqueda",
"searchResultsFor" => "Resultados de búsqueda para",
"searchResultsFound" => "Resultados de búsqueda encontrados",
"tracklist" => "Lista de seguimiento",
"tracklist" => "Lista de pistas",
"lastupdated" => "Última actualización",
"duration" => "Duración",
"hour" => "hora",
@ -45,22 +45,22 @@ return [
"second" => "segundo",
"seconds" => "segundos",
"by" => "por",
"added" => "Añadido",
"recorded" => "Registrado",
"audioNotSupported" => "Su navegador no soporta el elemento de audio.",
"added" => "Agregado",
"recorded" => "Grabado",
"audioNotSupported" => "Tu navegador no soporta el elemento de audio.",
"downloads" => "Descargas",
"download" => "Descargar",
"downloadMix" => "Descargar Mix",
"downloadMix" => "Descargar Mezcla",
"plays" => "Reproducciones",
"play" => "Jugar",
"contactus" => "Contáctenos",
"play" => "Reproducir",
"contactus" => "Contáctanos",
"allrightsreserved" => "Todos los derechos reservados.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Nombre de Mixshow",
"mixshows" => "Programas de mezcla",
"mixshow" => "Programa de mezcla",
"mixshowName" => "Nombre del programa de mezcla",
"share" => "Compartir",
"sahrethismix" => "Compartir esta mezcla",
"sharethismixshow" => "Compartir este mixshow",
"sharethismixshow" => "Compartir este programa de mezcla",
"rss" => "RSS",
"year" => "Año",
"sharetotwitter" => "Compartir en X (anteriormente Twitter)",
@ -70,7 +70,86 @@ return [
"urlcopiedtoclipboard" => "URL copiada al portapapeles",
"failedtocopyurl" => "Error al copiar la URL",
"name" => "Nombre",
"username" => "Usuario",
"username" => "Nombre de usuario",
"logout" => "Cerrar sesión",
"upload" => "Subir",
"loginToVerifyEmail" => "Debes haber iniciado sesión para verificar tu correo electrónico.",
"loginToUploadMix" => "Debes haber iniciado sesión para subir una mezcla.",
"verificationCodeRequired" => "Se requiere código de verificación.",
"recordedDate" => "Fecha de grabación",
"noUploadedFileFound" => "No se encontró ningún archivo subido. Por favor, sube un archivo de mezcla.",
"mixTitleRequired" => "Se requiere el título de la mezcla.",
"errorUploadCDN" => "Error al subir el archivo a CDN: ",
"errorSavingMixDB" => "Error al guardar la mezcla en la base de datos.",
"uploadedPendingApproval" => "Mezcla subida correctamente y está pendiente de aprobación.",
"uploadHeader1" => "Sube tu mezcla a los DJs de Utah",
"uploadAlertHeader" => "Información importante sobre la carga",
"uploadAlert1" => "Los DJs de Utah son principalmente un proyecto de archivo dedicado a preservar la historia y cultura de los DJs de EDM en Utah. Tus cargas contribuyen a este registro histórico.",
"uploadHeader2" => "Antes de subir",
"uploadAlert2" => "Verifica que todos los DJs involucrados estén listados en nuestra base de datos. Si un DJ no está listado, debe ser agregado y aprobado antes de subir.",
"uploadAlert3" => "Verifica que los géneros apropiados estén disponibles para tu mezcla. Los nuevos géneros requieren aprobación antes de poder ser utilizados.",
"uploadAlert4" => "Puedes enviar nuevas solicitudes de DJ o género a través de la configuración de tu perfil.",
"uploadProcess" => "Proceso de carga",
"uploadProcess1" => "Sube tu archivo de mezcla (formato MP3 o ZIP)",
"uploadProcess2" => "Ingresa los detalles de la mezcla, incluyendo el título, la descripción y la fecha de grabación",
"uploadProcess3" => "Selecciona los géneros y DJs relevantes",
"uploadProcess4" => "Enviar para revisión",
"uploadAMix" => "Sube una mezcla",
"uploadSelectMix" => "Selecciona el archivo de mezcla (MP3 o ZIP)",
"uploadMaxFileSize" => "Tamaño máximo del archivo: 500MB",
"uploadFile" => "Subir archivo",
"uploadSelectGenres" => "Seleccionar géneros (escribe para buscar)",
"uploadSelectDJSMax3" => "Seleccionar DJs (máximo 3)",
"uploadSubmitMix" => "Enviar mezcla",
"uploadSelectDJ1" => "Seleccionar DJ 1",
"uploadSelectDJ2" => "Seleccionar DJ 2 (opcional)",
"uploadSelectDJ3" => "Seleccionar DJ 3 (opcional)",
"userAlreadyExists" => "El usuario ya existe.",
"allFieldsRequired" => "Todos los campos son obligatorios.",
"passwordsDoNotMatch" => "Las contraseñas no coinciden.",
"invalidEmail" => "Formato de correo electrónico inválido.",
"invalidUsername" => "Formato de nombre de usuario inválido.",
"verifyEmailAddress" => "Verifica tu dirección de correo electrónico",
"registerThankYou" => "Gracias por registrarte en ",
"registerVerifyEmail" => "Por favor verifica tu dirección de correo electrónico haciendo clic en el enlace a continuación o ingresando el código de verificación en tu perfil:",
"registerVerifyCodeIs" => "Tu código de verificación es: ",
"registerVerifyTimeout" => "Este código expirará en 15 minutos.",
"password" => "Contraseña",
"rememberMe" => "Recuérdame",
"forgotPassword" => "¿Olvidaste tu contraseña?",
"dontHaveAccount" => "¿No tienes una cuenta?",
"signUp" => "Registrarse",
"passwordResetSent" => "Si el correo electrónico existe en nuestro sistema, se ha enviado un enlace para restablecer la contraseña.",
"passwordResetRequested" => "Has solicitado restablecer tu contraseña. Por favor haz clic en el enlace de abajo para restablecer tu contraseña:",
"passwordResetUnrequested" => "Si no solicitaste esto, por favor ignora este correo electrónico. Este enlace expirará en 15 minutos.",
"emailaddressEnter" => "Ingresa tu dirección de correo electrónico",
"messageSentSuccess" => "Mensaje enviado con éxito.",
"messageSentError" => "Ocurrió un error al enviar el mensaje.",
"contactUs2" => "Nos encantaría saber de ti. Envíanos un mensaje y te responderemos lo antes posible.",
"messageSendUs" => "Envíanos un mensaje",
"messageSend" => "Enviar mensaje",
"passwordReset" => "Restablecer contraseña",
"enterYourUsername" => "Ingresa tu nombre de usuario",
"newPassword" => "Nueva contraseña",
"confirmPassword" => "Confirmar nueva contraseña",
"passwordResetSuccess" => "Tu contraseña ha sido restablecida correctamente. Por favor inicia sesión con tu nueva contraseña.",
"enterEmailAddressPlease" => "Por favor ingresa tu dirección de correo electrónico.",
"emailInvalid" => "Formato de correo electrónico inválido.",
"passwordMismatch" => "Las contraseñas no coinciden.",
"passwordRequirements" => "La contraseña debe tener al menos 8 caracteres y debe incluir letras en mayúsculas y minúsculas, así como un número.",
"resetExpiredInvalid" => "Código de restablecimiento de contraseña inválido o expirado.",
"resetExpired" => "El código de restablecimiento de contraseña ha expirado.",
"codeCredsInvalid" => "Credenciales inválidas o código de verificación.",
"change" => "Cambiar",
"changePicture" => "Cambiar imagen",
"verify" => "Verificar",
"createdUsing" => "Creado usando",
"djmixhostingsoftware" => "Software de alojamiento de mezclas de DJ",
"privacyPolicy" => "Política de privacidad",
"termsAndConditions" => "Términos y condiciones",
];

View file

@ -1,42 +1,42 @@
<?php
return [
'welcome' => 'Tervetuloa sivustollemme!',
'description' => 'Tämä on englanninkielinen kuvaus.',
'welcome' => 'Tervetuloa verkkosivustollemme!',
'description' => 'Tämä on kuvaus englanniksi.',
'desc' => 'Kuvaus',
'userProfile' => "Käyttäjän Profiili",
'userProfile' => "Käyttäjäprofiili",
'user' => 'Käyttäjä',
'home' => 'Koti',
'djName' => 'DJ Nimi',
'home' => 'Aloitus',
'djName' => 'DJ:n nimi',
'email' => 'Sähköposti',
'location' => 'Sijainti',
'bio' => 'Bio',
'submit' => 'Lähetä',
'login' => 'Kirjaudu',
'login' => 'Kirjaudu sisään',
'message' => 'Viesti',
'follow' => 'Seuraa',
'djs' => 'DJ',
"djNotFound" => "DJ ei voitu ladata. DJ ei löytynyt tai tämä DJ on yksityinen.",
"notfound" => "Sivua ei löydy",
"genre" => "Lajityyppi",
"genres" => "Genres",
"genreNotFound" => "Lajityyppiä ei voitu ladata. Lajityyppiä ei löydetty, se oli tyhjä, tai tämä lajityyppi on yksityinen.",
"mix-count" => "Sekoita Lukumäärä",
"mixes" => "Sekoitukset",
"mix" => "Sekoita",
"mixNotFound" => "Sekoitusta ei voitu ladata. Sekoitus ei löytynyt, se oli tyhjä, tai tämä sekoitus on yksityinen.",
"mixshowNotFound" => "Sekoitusnäyttöä ei voitu ladata. Sekoitusnäyttöä ei löytynyt, se oli tyhjä, tai tämä mixshow on yksityinen.",
"mixName" => "Sekoita Nimi",
"mixDescription" => "Sekoita Kuvaus",
"mixLength" => "Sekoita Pituus",
"mixGenre" => "Sekoita Lajityyppi",
'djs' => 'DJ:t',
"djNotFound" => "DJ:tä ei voitu ladata; joko DJ:tä ei löytynyt tai tämä DJ on yksityinen.",
"notfound" => "Sivua ei löytynyt",
"genre" => "Genret",
"genres" => "Genre",
"genreNotFound" => "Genreä ei voitu ladata; joko genreä ei löytynyt, se oli tyhjää tai tämä genre on yksityinen.",
"mix-count" => "Miksausten lukumäärä",
"mixes" => "Miksauksia",
"mix" => "Miksaus",
"mixNotFound" => "Miksausta ei voitu ladata; joko miksauksia ei löytynyt, se oli tyhjää tai tämä miksaus on yksityinen.",
"mixshowNotFound" => "Miksashowta ei voitu ladata; joko miksashowta ei löytynyt, se oli tyhjää tai tämä miksashow on yksityinen.",
"mixName" => "Miksauksen nimi",
"mixDescription" => "Miksauksen kuvaus",
"mixLength" => "Miksauksen pituus",
"mixGenre" => "Miksauksen genre",
"view" => "Näytä",
"mixname" => "Sekoita Nimi",
"search" => "Etsi",
"mixname" => "Miksauksen nimi",
"search" => "Haku",
"searchResults" => "Hakutulokset",
"searchResultsFor" => "Hae tuloksia",
"searchResultsFound" => "Hakutulokset Löydetty",
"tracklist" => "Kappalelilista",
"lastupdated" => "Viimeksi Päivitetty",
"searchResultsFor" => "Hakutulokset haulle",
"searchResultsFound" => "Hakutuloksia löydetty",
"tracklist" => "Kappalelista",
"lastupdated" => "Viimeksi päivitetty",
"duration" => "Kesto",
"hour" => "tunti",
"hours" => "tuntia",
@ -44,33 +44,112 @@ return [
"minutes" => "minuuttia",
"second" => "sekunti",
"seconds" => "sekuntia",
"by" => "mennessä",
"by" => "tekijä",
"added" => "Lisätty",
"recorded" => "Tallennettu",
"audioNotSupported" => "Selaimesi ei tue äänielementtiä.",
"audioNotSupported" => "Selaimesi ei tue audio-elementtiä.",
"downloads" => "Lataukset",
"download" => "Lataa",
"downloadMix" => "Lataa Mix",
"plays" => "Soittajat",
"play" => "Toista",
"contactus" => "Ota Yhteyttä",
"downloadMix" => "Lataa miksauksesi",
"plays" => "Soitot",
"play" => "Soita",
"contactus" => "Ota meihin yhteyttä",
"allrightsreserved" => "Kaikki oikeudet pidätetään.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Nimi",
"mixshows" => "Miksashowt",
"mixshow" => "Miksashow",
"mixshowName" => "Miksashown nimi",
"share" => "Jaa",
"sahrethismix" => "Jaa tämä sekoitus",
"sharethismixshow" => "Jaa tämä mixshow",
"sahrethismix" => "Jaa tämä miksauksen",
"sharethismixshow" => "Jaa tämä miksashow",
"rss" => "RSS",
"year" => "Vuosi",
"sharetotwitter" => "Jaa kohtaan X (entinen Twitter)",
"sharetotwitter" => "Jaa X:lle (ent. Twitter)",
"sharetofb" => "Jaa Facebookiin",
"sharetoig" => "Jaa Instagramiin",
"copyurl" => "Kopioi URL",
"urlcopiedtoclipboard" => "URL kopioitu leikepöydälle",
"copyurl" => "Kopioi URL-osoite",
"urlcopiedtoclipboard" => "URL-osoite kopioitu leikepöydälle",
"failedtocopyurl" => "URL-osoitteen kopiointi epäonnistui",
"name" => "Nimi",
"username" => "Käyttäjätunnus",
"logout" => "Kirjaudu Ulos",
"upload" => "Lähetä",
"username" => "Käyttäjänimi",
"logout" => "Kirjaudu ulos",
"upload" => "Lataa",
"loginToVerifyEmail" => "Sinun on kirjauduttava sisään vahvistaaksesi sähköpostisi.",
"loginToUploadMix" => "Sinun on kirjauduttava sisään ladataksesi miksauksen.",
"verificationCodeRequired" => "Vahvistuskoodi on pakollinen.",
"recordedDate" => "Tallennettu päivämäärä",
"noUploadedFileFound" => "Yhtään ladattua tiedostoa ei löytynyt. Lataa miksauksen tiedosto.",
"mixTitleRequired" => "Miksauksen otsikko on pakollinen.",
"errorUploadCDN" => "Virhe ladattaessa tiedostoa CDN:ään: ",
"errorSavingMixDB" => "Virhe tallennettaessa miksauksen tietokantaan.",
"uploadedPendingApproval" => "Miksaus ladattu onnistuneesti ja se odottaa hyväksyntää.",
"uploadHeader1" => "Lataa miksauksesi Utahin DJ:lle",
"uploadAlertHeader" => "Tärkeää lataustietoa",
"uploadAlert1" => "Utahin DJ:t on pääasiassa arkistoprojekti, joka on omistettu EDM DJ:iden historian ja kulttuurin säilyttämiselle Utahiin. Latauksesi edistävät tätä historiallista asiakirjaa.",
"uploadHeader2" => "Ennen lataamista",
"uploadAlert2" => "Vahvista, että kaikki asiasta kiinnostuneet DJ:t on lueteltu tietokannassamme. Jos DJ:tä ei ole luettelossa, hänen on oltava lisätty ja hyväksytty ennen lataamista.",
"uploadAlert3" => "Tarkista, että asianmukaiset genret ovat saatavilla miksauksellesi. Uudet genret vaativat hyväksynnän ennen kuin niitä voidaan käyttää.",
"uploadAlert4" => "Voit lähettää uusia DJ- tai genrepyyntöjä profiilisi asetusten kautta.",
"uploadProcess" => "Latausprosessi",
"uploadProcess1" => "Lataa miksauksen tiedosto (MP3- tai ZIP-muodossa)",
"uploadProcess2" => "Syötä miksauksen tiedot, mukaan lukien otsikko, kuvaus ja tallennuspäivämäärä",
"uploadProcess3" => "Valitse relevantit genret ja DJ:t",
"uploadProcess4" => "Lähetä tarkastettavaksi",
"uploadAMix" => "Lataa miksaus",
"uploadSelectMix" => "Valitse miksauksen tiedosto (MP3 tai ZIP)",
"uploadMaxFileSize" => "Maksimi tiedostokoko: 500MB",
"uploadFile" => "Lataa tiedosto",
"uploadSelectGenres" => "Valitse genret (kirjoita etsiäksesi)",
"uploadSelectDJSMax3" => "Valitse DJ:t (max. 3)",
"uploadSubmitMix" => "Lähetä miksauksen",
"uploadSelectDJ1" => "Valitse DJ 1",
"uploadSelectDJ2" => "Valitse DJ 2 (valinnainen)",
"uploadSelectDJ3" => "Valitse DJ 3 (valinnainen)",
"userAlreadyExists" => "Käyttäjä on jo olemassa.",
"allFieldsRequired" => "Kaikkien kenttien täyttäminen on pakollista.",
"passwordsDoNotMatch" => "Salasanat eivät täsmää.",
"invalidEmail" => "Virheellinen sähköpostimuoto.",
"invalidUsername" => "Virheellinen käyttäjänimimuoto.",
"verifyEmailAddress" => "Vahvista sähköpostiosoitteesi",
"registerThankYou" => "Kiitos rekisteröitymisestäsi osoitteessa ",
"registerVerifyEmail" => "Vahvista sähköpostiosoitteesi napsauttamalla alla olevaa linkkiä tai syöttämällä vahvistuskoodi profiiliisi:",
"registerVerifyCodeIs" => "Vahvistuskoodisi on: ",
"registerVerifyTimeout" => "Tämä koodi vanhenee 15 minuutin kuluttua.",
"password" => "Salasana",
"rememberMe" => "Muista minut",
"forgotPassword" => "Unohditko salasanasi",
"dontHaveAccount" => "Ei oletko sinulla tiliä?",
"signUp" => "Rekisteröidy",
"passwordResetSent" => "Jos sähköposti on olemassa järjestelmässämme, salasanan palautuslinkki on lähetetty.",
"passwordResetRequested" => "Olet pyytänyt salasanasi palauttamista. Napsauta alla olevaa linkkiä palauttaaksesi salasanasi:",
"passwordResetUnrequested" => "Jos et pyytänyt tätä, seuraa vain sähköpostia. Tämä linkki vanhenee 15 minuutin kuluttua.",
"emailaddressEnter" => "Syötä sähköpostiosoitteesi",
"messageSentSuccess" => "Viesti lähetetty onnistuneesti.",
"messageSentError" => "Viestin lähettämisessä tapahtui virhe.",
"contactUs2" => "Haluaisimme kuulla sinulta. Lähetä meille viesti ja vastaamme niin pian kuin mahdollista.",
"messageSendUs" => "Lähetä meille viesti",
"messageSend" => "Lähetä viesti",
"passwordReset" => "Palauta salasana",
"enterYourUsername" => "Syötä käyttäjänimesi",
"newPassword" => "Uusi salasana",
"confirmPassword" => "Vahvista uusi salasana",
"passwordResetSuccess" => "Salasanasi on palautettu onnistuneesti. Kirjaudu sisään uudella salasanallasi.",
"enterEmailAddressPlease" => "Ole hyvä ja syötä sähköpostiosoitteesi.",
"emailInvalid" => "Virheellinen sähköpostimuoto.",
"passwordMismatch" => "Salasanat eivät täsmää.",
"passwordRequirements" => "Salasanan on oltava vähintään 8 merkkiä pitkä ja sisällettävä isoja ja pieniä kirjaimia sekä numero.",
"resetExpiredInvalid" => "Virheellinen tai vanhentunut salasanan palautuskoodi.",
"resetExpired" => "Salasanan palautuskoodi on vanhentunut.",
"codeCredsInvalid" => "Virheelliset tunnistetiedot tai vahvistuskoodi.",
"change" => "Muokata",
"changePicture" => "Vaihda kuva",
"verify" => "Vahvista",
"createdUsing" => "Luotu käyttäen",
"djmixhostingsoftware" => "DJ Mix Hosting Software",
"privacyPolicy" => "Tietosuojakäytäntö",
"termsAndConditions" => "Käyttöehdot",
];

View file

@ -2,16 +2,16 @@
return [
'welcome' => 'Maligayang pagdating sa aming website!',
'description' => 'Ito ay isang paglalarawan sa Tagalog.',
'desc' => 'Description',
'desc' => 'Paglalarawan',
'userProfile' => "Profile ng User",
'user' => 'User',
'home' => 'Home',
'user' => 'Gumagamit',
'home' => 'Bahay',
'djName' => 'Pangalan ng DJ',
'email' => 'Email',
'location' => 'Lokasyon',
'bio' => 'Bio',
'submit' => 'Isumite',
'login' => 'Login',
'login' => 'Mag-login',
'message' => 'Mensahe',
'follow' => 'Sundan',
'djs' => 'DJs',
@ -22,9 +22,9 @@ return [
"genreNotFound" => "Hindi ma-load ang dyanra; maaaring hindi nakita ang dyanra, walang laman, o pribado ang dyanra na ito.",
"mix-count" => "Bilang ng Mix",
"mixes" => "Mga Mix",
"mix" => "Mix",
"mix" => "Halo-halo",
"mixNotFound" => "Hindi ma-load ang mix; maaaring hindi nakita ang mix, walang laman, o pribado ang mix na ito.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixshowNotFound" => "Hindi ma-load ang mixshow; maaaring hindi nahanap ang mixshow, walang laman, o pribado ang mixshow na ito.",
"mixName" => "Pangalan ng Mix",
"mixDescription" => "Mix Paglalarawan",
"mixLength" => "Haba ng Mix",
@ -35,42 +35,121 @@ return [
"searchResults" => "Mga Resulta ng Paghahanap",
"searchResultsFor" => "Mga resulta ng paghahanap para sa",
"searchResultsFound" => "Natagpuan ang mga Resulta ng Paghahanap",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"tracklist" => "Listahan ng mga Pista",
"lastupdated" => "Huling Na-update",
"duration" => "Tagal",
"hour" => "oras",
"hours" => "mga oras",
"minute" => "minuto",
"minutes" => "mga minuto",
"second" => "segundo",
"seconds" => "mga segundo",
"by" => "ng",
"added" => "Idinagdag",
"recorded" => "Naitala",
"audioNotSupported" => "Ang iyong browser ay hindi sinusuportahan ang audio element.",
"downloads" => "Mga Download",
"download" => "I-download",
"downloadMix" => "I-download ang Mix",
"plays" => "Mga Pag-play",
"play" => "I-play",
"contactus" => "Makipag-ugnayan sa Amin",
"allrightsreserved" => "Lahat ng karapatan ay nakalaan.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
"mixshowName" => "Pangalan ng Mixshow",
"share" => "Ibahagi",
"sahrethismix" => "Ibahagi ang mix na ito",
"sharethismixshow" => "Ibahagi ang mixshow na ito",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"year" => "Taon",
"sharetotwitter" => "Ibahagi sa X (dati Twitter)",
"sharetofb" => "Ibahagi sa Facebook",
"sharetoig" => "Ibahagi sa Instagram",
"copyurl" => "Kopyahin ang URL",
"urlcopiedtoclipboard" => "URL na kopya sa clipboard",
"failedtocopyurl" => "Nabigong kopyahin ang URL",
"name" => "Pangalan",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"logout" => "Mag-Logout",
"upload" => "I-upload",
"loginToVerifyEmail" => "Dapat kang naka-login upang i-verify ang iyong email.",
"loginToUploadMix" => "Dapat kang naka-login upang mag-upload ng mix.",
"verificationCodeRequired" => "Kinakailangan ang verification code.",
"recordedDate" => "Naitalang Petsa",
"noUploadedFileFound" => "Walang na-upload na file na natagpuan. Mangyaring mag-upload ng isang mix file.",
"mixTitleRequired" => "Kinakailangan ang pamagat ng mix.",
"errorUploadCDN" => "Error sa pag-upload ng file sa CDN: ",
"errorSavingMixDB" => "Error sa pag-save ng mix sa database.",
"uploadedPendingApproval" => "Ang mix ay matagumpay na na-upload at nakabinbin ang approval.",
"uploadHeader1" => "I-upload ang iyong mix sa Utah's DJs",
"uploadAlertHeader" => "Mahalagang Impormasyon sa Pag-upload",
"uploadAlert1" => "Ang Utah's DJs ay pangunahing isang archival project na naglalayong mapanatili ang kasaysayan at kultura ng mga EDM DJs sa Utah. Ang iyong mga uploads ay nag-aambag sa kasaysayan.",
"uploadHeader2" => "Bago Ka Mag-upload",
"uploadAlert2" => "I-verify na ang lahat ng DJs na kasangkot ay nakalista sa aming database. Kung ang isang DJ ay hindi nakalista, dapat itong idagdag at aprubahan bago mag-upload.",
"uploadAlert3" => "Tiyakin na ang mga angkop na dyanra ay available para sa iyong mix. Ang mga bagong dyanra ay nangangailangan ng approval bago ito magamit.",
"uploadAlert4" => "Maaari kang magsumite ng mga bagong kahilingan para sa DJ o dyanra sa pamamagitan ng iyong mga setting sa profile.",
"uploadProcess" => "Proseso ng Pag-upload",
"uploadProcess1" => "I-upload ang iyong mix file (MP3 o ZIP format)",
"uploadProcess2" => "Ipasok ang mga detalye ng mix, kasama ang pamagat, paglalarawan, at petsa ng pag-record",
"uploadProcess3" => "Pumili ng mga nauugnay na dyanra at DJs",
"uploadProcess4" => "Isumite para sa pagsusuri",
"uploadAMix" => "Mag-upload ng Mix",
"uploadSelectMix" => "Pumili ng Mix File (MP3 o ZIP)",
"uploadMaxFileSize" => "Maximum na laki ng file: 500MB",
"uploadFile" => "I-upload ang File",
"uploadSelectGenres" => "Pumili ng mga Dyanra (mag-type upang maghanap)",
"uploadSelectDJSMax3" => "Pumili ng DJs (Maximum 3)",
"uploadSubmitMix" => "Isumite ang Mix",
"uploadSelectDJ1" => "Pumili ng DJ 1",
"uploadSelectDJ2" => "Pumili ng DJ 2 (opsyonal)",
"uploadSelectDJ3" => "Pumili ng DJ 3 (opsyonal)",
"userAlreadyExists" => "Umiiral na ang User.",
"allFieldsRequired" => "Lahat ng mga field ay kinakailangan.",
"passwordsDoNotMatch" => "Ang mga password ay hindi magkatugma.",
"invalidEmail" => "Hindi wastong format ng email.",
"invalidUsername" => "Hindi wastong format ng username.",
"verifyEmailAddress" => "I-verify ang Iyong Email Address",
"registerThankYou" => "Salamat sa pagrehistro sa ",
"registerVerifyEmail" => "Mangyaring i-verify ang iyong email address sa pamamagitan ng pag-click sa link sa ibaba o sa pamamagitan ng pagpasok ng verification code sa iyong profile:",
"registerVerifyCodeIs" => "Ang iyong verification code ay: ",
"registerVerifyTimeout" => "Ang code na ito ay mag-e-expire sa loob ng 15 minuto.",
"password" => "Password",
"rememberMe" => "Tandaan Mo Ako",
"forgotPassword" => "Nakalimutan ang Password",
"dontHaveAccount" => "Wala ka bang account?",
"signUp" => "Mag-sign Up",
"passwordResetSent" => "Kung ang email ay umiiral sa aming sistema, ang link para sa pag-reset ng password ay naipadala na.",
"passwordResetRequested" => "Humiling ka ng pag-reset ng iyong password. Mangyaring i-click ang link sa ibaba upang i-reset ang iyong password:",
"passwordResetUnrequested" => "Kung hindi mo ito humiling, mangyaring balewalain ang email na ito. Ang link na ito ay mag-e-expire sa loob ng 15 minuto.",
"emailaddressEnter" => "Ipasok ang iyong email address",
"messageSentSuccess" => "Matagumpay na naipadala ang mensahe.",
"messageSentError" => "Nagkaroon ng error habang pinapadala ang mensahe.",
"contactUs2" => "Gusto naming makarinig mula sa iyo. Magpadala sa amin ng mensahe at tutugon kami sa lalong madaling panahon.",
"messageSendUs" => "Mag-send sa Amin ng Mensahe",
"messageSend" => "I-send ang Mensahe",
"passwordReset" => "I-reset ang Password",
"enterYourUsername" => "Ipasok ang iyong username",
"newPassword" => "Bagong Password",
"confirmPassword" => "Kumpirmahin ang Bagong Password",
"passwordResetSuccess" => "Matagumpay na na-reset ang iyong password. Mangyaring mag-login gamit ang iyong bagong password.",
"enterEmailAddressPlease" => "Mangyaring ipasok ang iyong email address.",
"emailInvalid" => "Hindi wastong format ng email.",
"passwordMismatch" => "Ang mga password ay hindi magkatugma.",
"passwordRequirements" => "Ang Password ay dapat hindi bababa sa 8 characters ang haba at dapat kasama ang mga uppercase at lowercase letters, gayundin ang isang numero.",
"resetExpiredInvalid" => "Hindi wastong o nag-expire na password reset code.",
"resetExpired" => "Ang password reset code ay nag-expire na.",
"codeCredsInvalid" => "Hindi wastong kredensyal o verification code.",
"change" => "Baguhin",
"changePicture" => "Baguhin ang Larawan",
"verify" => "I-verify",
"createdUsing" => "Nilikhang gamit ang",
"djmixhostingsoftware" => "Software para sa Pagho-host ng DJ Mix",
"privacyPolicy" => "Patakaran sa Privacy",
"termsAndConditions" => "Mga Tuntunin at Kundisyon",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => 'Bienvenue sur notre site Web!',
'welcome' => 'Bienvenue sur notre site web !',
'description' => 'Ceci est une description en français.',
'desc' => 'Libellé',
'desc' => 'Description',
'userProfile' => "Profil de l'utilisateur",
'user' => 'Utilisateur',
'home' => 'Domicile',
'home' => 'Accueil',
'djName' => 'Nom du DJ',
'email' => 'Courriel',
'location' => 'Localisation',
'bio' => 'Bio',
'email' => 'E-mail',
'location' => 'Lieu',
'bio' => 'Biographie',
'submit' => 'Soumettre',
'login' => 'Se connecter',
'login' => 'Connexion',
'message' => 'Message',
'follow' => 'Suivre',
'djs' => 'DJs',
"djNotFound" => "Impossible de charger le DJ; soit le DJ n'a pas été trouvé, soit ce DJ est privé.",
"notfound" => "Page introuvable",
"djNotFound" => "Impossible de charger le DJ ; soit le DJ n'a pas été trouvé, soit ce DJ est privé.",
"notfound" => "Page non trouvée",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Impossible de charger le genre, soit le genre n'a pas été trouvé, soit ce genre est privé.",
"mix-count" => "Nombre de mixages",
"genreNotFound" => "Impossible de charger le genre ; soit le genre n'a pas été trouvé, soit il est vide, soit ce genre est privé.",
"mix-count" => "Compteur de mix",
"mixes" => "Mixes",
"mix" => "Mélanger",
"mixNotFound" => "Impossible de charger le mixage; soit le mixage n'a pas été trouvé, soit le mixage est vide, soit ce mixage est privé.",
"mixshowNotFound" => "Impossible de charger le mixshow ; soit le mixshow n'a pas été trouvé, soit le mixshow est vide, soit ce mixshow est privé.",
"mixName" => "Nom du mixage",
"mixDescription" => "Description du mixage",
"mixLength" => "Longueur du mixage",
"mixGenre" => "Mélanger le genre",
"mix" => "Mix",
"mixNotFound" => "Impossible de charger le mix ; soit le mix n'a pas été trouvé, soit il est vide, soit ce mix est privé.",
"mixshowNotFound" => "Impossible de charger le mixshow ; soit le mixshow n'a pas été trouvé, soit il est vide, soit ce mixshow est privé.",
"mixName" => "Nom du mix",
"mixDescription" => "Description du mix",
"mixLength" => "Durée du mix",
"mixGenre" => "Genre du mix",
"view" => "Voir",
"mixname" => "Nom du mixage",
"search" => "Chercher",
"mixname" => "Nom du mix",
"search" => "Recherche",
"searchResults" => "Résultats de recherche",
"searchResultsFor" => "Résultats de recherche pour",
"searchResultsFound" => "Résultats de recherche trouvés",
"tracklist" => "Liste de suivi",
"tracklist" => "Liste de pistes",
"lastupdated" => "Dernière mise à jour",
"duration" => "Durée",
"hour" => "heure",
@ -47,23 +47,23 @@ return [
"by" => "par",
"added" => "Ajouté",
"recorded" => "Enregistré",
"audioNotSupported" => "Votre navigateur ne supporte pas l'élément audio.",
"audioNotSupported" => "Votre navigateur ne prend pas en charge l'élément audio.",
"downloads" => "Téléchargements",
"download" => "Télécharger",
"downloadMix" => "Télécharger Mix",
"plays" => "Jouer",
"downloadMix" => "Télécharger le mix",
"plays" => "Lectures",
"play" => "Jouer",
"contactus" => "Contactez-nous",
"allrightsreserved" => "Tous droits réservés.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Nom du Mixshow",
"mixshowName" => "Nom du mixshow",
"share" => "Partager",
"sahrethismix" => "Partager ce mix",
"sharethismixshow" => "Partager ce mixshow",
"rss" => "Flux RSS",
"rss" => "RSS",
"year" => "Année",
"sharetotwitter" => "Partager vers X (anciennement Twitter)",
"sharetotwitter" => "Partager sur X (anciennement Twitter)",
"sharetofb" => "Partager sur Facebook",
"sharetoig" => "Partager sur Instagram",
"copyurl" => "Copier l'URL",
@ -72,5 +72,84 @@ return [
"name" => "Nom",
"username" => "Nom d'utilisateur",
"logout" => "Déconnexion",
"upload" => "Charger",
"upload" => "Télécharger",
"loginToVerifyEmail" => "Vous devez être connecté pour vérifier votre email.",
"loginToUploadMix" => "Vous devez être connecté pour télécharger un mix.",
"verificationCodeRequired" => "Le code de vérification est requis.",
"recordedDate" => "Date d'enregistrement",
"noUploadedFileFound" => "Aucun fichier téléchargé trouvé. Veuillez télécharger un fichier mix.",
"mixTitleRequired" => "Le titre du mix est requis.",
"errorUploadCDN" => "Erreur lors du téléchargement du fichier sur le CDN : ",
"errorSavingMixDB" => "Erreur lors de l'enregistrement du mix dans la base de données.",
"uploadedPendingApproval" => "Mix téléchargé avec succès et en attente d'approbation.",
"uploadHeader1" => "Téléchargez votre mix sur les DJs de l'Utah",
"uploadAlertHeader" => "Informations importantes sur le téléchargement",
"uploadAlert1" => "Les DJs de l'Utah sont principalement un projet d'archivage dédié à la préservation de l'histoire et de la culture des DJs EDM en Utah. Vos téléchargements contribuent à cet historique.",
"uploadHeader2" => "Avant de télécharger",
"uploadAlert2" => "Vérifiez que tous les DJs impliqués sont listés dans notre base de données. Si un DJ n'est pas listé, il doit être ajouté et approuvé avant le téléchargement.",
"uploadAlert3" => "Vérifiez que les genres appropriés sont disponibles pour votre mix. Les nouveaux genres nécessitent une approbation avant de pouvoir être utilisés.",
"uploadAlert4" => "Vous pouvez soumettre de nouvelles demandes de DJ ou de genre via les paramètres de votre profil.",
"uploadProcess" => "Processus de téléchargement",
"uploadProcess1" => "Téléchargez votre fichier mix (format MP3 ou ZIP)",
"uploadProcess2" => "Entrez les détails du mix, y compris le titre, la description et la date d'enregistrement",
"uploadProcess3" => "Sélectionnez les genres et les DJs pertinents",
"uploadProcess4" => "Soumettre pour révision",
"uploadAMix" => "Téléchargez un mix",
"uploadSelectMix" => "Sélectionnez le fichier mix (MP3 ou ZIP)",
"uploadMaxFileSize" => "Taille maximale du fichier : 500 Mo",
"uploadFile" => "Télécharger le fichier",
"uploadSelectGenres" => "Sélectionnez les genres (taper pour rechercher)",
"uploadSelectDJSMax3" => "Sélectionnez les DJs (maximum 3)",
"uploadSubmitMix" => "Soumettre le mix",
"uploadSelectDJ1" => "Sélectionnez DJ 1",
"uploadSelectDJ2" => "Sélectionnez DJ 2 (optionnel)",
"uploadSelectDJ3" => "Sélectionnez DJ 3 (optionnel)",
"userAlreadyExists" => "L'utilisateur existe déjà.",
"allFieldsRequired" => "Tous les champs sont requis.",
"passwordsDoNotMatch" => "Les mots de passe ne correspondent pas.",
"invalidEmail" => "Format d'email invalide.",
"invalidUsername" => "Format de nom d'utilisateur invalide.",
"verifyEmailAddress" => "Vérifiez votre adresse email",
"registerThankYou" => "Merci de vous être enregistré sur ",
"registerVerifyEmail" => "Veuillez vérifier votre adresse email en cliquant sur le lien ci-dessous ou en entrant le code de vérification dans votre profil :",
"registerVerifyCodeIs" => "Votre code de vérification est : ",
"registerVerifyTimeout" => "Ce code expirera dans 15 minutes.",
"password" => "Mot de passe",
"rememberMe" => "Se souvenir de moi",
"forgotPassword" => "Mot de passe oublié",
"dontHaveAccount" => "Vous n'avez pas de compte ?",
"signUp" => "Inscrivez-vous",
"passwordResetSent" => "Si l'email existe dans notre système, un lien de réinitialisation du mot de passe a été envoyé.",
"passwordResetRequested" => "Vous avez demandé à réinitialiser votre mot de passe. Veuillez cliquer sur le lien ci-dessous pour réinitialiser votre mot de passe :",
"passwordResetUnrequested" => "Si vous n'avez pas fait cette demande, veuillez ignorer cet email. Ce lien expirera dans 15 minutes.",
"emailaddressEnter" => "Entrez votre adresse email",
"messageSentSuccess" => "Message envoyé avec succès.",
"messageSentError" => "Une erreur s'est produite lors de l'envoi du message.",
"contactUs2" => "Nous serions ravis de recevoir de votre part. Envoyez-nous un message et nous répondrons dès que possible.",
"messageSendUs" => "Envoyez-nous un message",
"messageSend" => "Envoyer le message",
"passwordReset" => "Réinitialiser le mot de passe",
"enterYourUsername" => "Entrez votre nom d'utilisateur",
"newPassword" => "Nouveau mot de passe",
"confirmPassword" => "Confirmer le nouveau mot de passe",
"passwordResetSuccess" => "Votre mot de passe a été réinitialisé avec succès. Veuillez vous connecter avec votre nouveau mot de passe.",
"enterEmailAddressPlease" => "Veuillez entrer votre adresse email.",
"emailInvalid" => "Format d'email invalide.",
"passwordMismatch" => "Les mots de passe ne correspondent pas.",
"passwordRequirements" => "Le mot de passe doit contenir au moins 8 caractères et inclure des lettres majuscules et minuscules, ainsi qu'un chiffre.",
"resetExpiredInvalid" => "Code de réinitialisation du mot de passe invalide ou expiré.",
"resetExpired" => "Le code de réinitialisation du mot de passe a expiré.",
"codeCredsInvalid" => "Identifiants ou code de vérification invalides.",
"change" => "Changer",
"changePicture" => "Changer de photo",
"verify" => "Vérifier",
"createdUsing" => "Créé à l'aide de",
"djmixhostingsoftware" => "Logiciel d'hébergement de mix DJ",
"privacyPolicy" => "Politique de confidentialité",
"termsAndConditions" => "Conditions générales",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
'welcome' => 'ברוכים הבאים לאתר שלנו!',
'description' => 'זו תיאור באנגלית.',
'desc' => 'תיאור',
'userProfile' => "פרופיל משתמש",
'user' => 'משתמש',
'home' => 'בית',
'djName' => 'שם די.ג\'יי',
'email' => 'דוא"ל',
'location' => 'מיקום',
'bio' => 'ביוגרפיה',
'submit' => 'שלח',
'login' => 'כניסה',
'message' => 'הודעה',
'follow' => 'עקוב',
'djs' => 'די.ג\'ייז',
"djNotFound" => "לא ניתן היה לטעון די.ג'יי; או שהדי.ג'יי לא נמצא או שהדי.ג'יי הזה פרטי.",
"notfound" => "העמוד לא נמצא",
"genre" => "ז'אנר",
"genres" => "ז'אנרים",
"genreNotFound" => "לא ניתן היה לטעון ז'אנר; או שהז'אנר לא נמצא, היה ריק, או שהז'אנר הזה פרטי.",
"mix-count" => "ספירת מיקס",
"mixes" => "מיקסים",
"mix" => "מיקס",
"mixNotFound" => "לא ניתן היה לטעון מיקס; או שהמיקס לא נמצא, היה ריק, או שהמיקס הזה פרטי.",
"mixshowNotFound" => "לא ניתן היה לטעון מיקסשואו; או שהמיקסשואו לא נמצא, היה ריק, או שהמיקסשואו הזה פרטי.",
"mixName" => "שם המיקס",
"mixDescription" => "תיאור המיקס",
"mixLength" => "אורך המיקס",
"mixGenre" => "ז'אנר המיקס",
"view" => "צפה",
"mixname" => "שם המיקס",
"search" => "חיפוש",
"searchResults" => "תוצאות חיפוש",
"searchResultsFor" => "תוצאות חיפוש עבור",
"searchResultsFound" => "תוצאות חיפוש נמצאו",
"tracklist" => "רשימת שירים",
"lastupdated" => "עדכון אחרון",
"duration" => "משך",
"hour" => "שעה",
"hours" => "שעות",
"minute" => "דקה",
"minutes" => "דקות",
"second" => "שנייה",
"seconds" => "שניות",
"by" => "על ידי",
"added" => "נוסף",
"recorded" => "הוקלט",
"audioNotSupported" => "הדפדפן שלך אינו תומך ביישום האודיו.",
"downloads" => "הורדות",
"download" => "הורדה",
"downloadMix" => "הורדת מיקס",
"plays" => "הקשבות",
"play" => "נגן",
"contactus" => "צור קשר",
"allrightsreserved" => "כל הזכויות שמורות.",
"mixshows" => "מיקסשואים",
"mixshow" => "מיקסשואו",
"mixshowName" => "שם מיקסשואו",
"share" => "שתף",
"sahrethismix" => "שתף מיקס זה",
"sharethismixshow" => "שתף את המיקסשואו הזה",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "שנה",
"sharetotwitter" => "שתף ל-X (לשעבר טוויטר)",
"sharetofb" => "שתף לפייסבוק",
"sharetoig" => "שתף לאינסטגרם",
"copyurl" => "העתק כתובת URL",
"urlcopiedtoclipboard" => "כתובת URL הועתקה ללוח",
"failedtocopyurl" => "שגיאה בהעתקת כתובת URL",
"name" => "שם",
"username" => "שם משתמש",
"logout" => "התנתק",
"upload" => "העלה",
"loginToVerifyEmail" => "עליך להתחבר כדי לאמת את הדוא\"ל שלך.",
"loginToUploadMix" => "עליך להתחבר כדי להעלות מיקס.",
"verificationCodeRequired" => "דרוש קוד אימות.",
"recordedDate" => "תאריך הקלטה",
"noUploadedFileFound" => "לא נמצא קובץ שהועלה. אנא העלה קובץ מיקס.",
"mixTitleRequired" => "דרוש כותרת מיקס.",
"errorUploadCDN" => "שגיאה בהעלאת קובץ ל-CDN: ",
"errorSavingMixDB" => "שגיאה בשמירת המיקס בבסיס הנתונים.",
"uploadedPendingApproval" => "המיקס הועלה בהצלחה וממתין לאישור.",
"uploadHeader1" => "העלה את המיקס שלך לדי.ג'ייז של מדינת יוטה",
"uploadAlertHeader" => "מידע חשוב על העלאה",
"uploadAlert1" => "די.ג'ייז של מדינת יוטה הוא בעיקר פרויקט ארכיון המוקדש לשימור ההיסטוריה והתרבות של די.ג'ייז EDM במדינת יוטה. ההעלאות שלך תורמות לרישום ההיסטורי הזה.",
"uploadHeader2" => "לפני העלאה",
"uploadAlert2" => "וודא שכל הדי.ג'ייז המעורבים רשומים בבסיס הנתונים שלנו. אם די.ג'יי אינו רשום, יש להוסיף ולהאשר אותו לפני ההעלאה.",
"uploadAlert3" => "בדוק שהז'אנרים המתאימים זמינים עבור המיקס שלך. ז'אנרים חדשים require approval before they can be used.",
"uploadAlert4" => "אתה יכול להגיש בקשות חדשות לדי.ג'ייז או ז'אנרים דרך הגדרות הפרופיל שלך.",
"uploadProcess" => "תהליך העלאה",
"uploadProcess1" => "העלה את קובץ המיקס שלך (בפורמט MP3 או ZIP)",
"uploadProcess2" => "הזן את פרטי המיקס, כולל כותרת, תיאור ותאריך הקלטה",
"uploadProcess3" => "בחר ז'אנרים ודי.ג'ייז רלוונטיים",
"uploadProcess4" => "שלח לבדיקה",
"uploadAMix" => "העלאת מיקס",
"uploadSelectMix" => "בחר את קובץ המיקס (MP3 או ZIP)",
"uploadMaxFileSize" => "גודל הקובץ המרבי: 500MB",
"uploadFile" => "העלה קובץ",
"uploadSelectGenres" => "בחר ז'אנרים (כתובת כדי לחפש)",
"uploadSelectDJSMax3" => "בחר די.ג'ייז (עד 3)",
"uploadSubmitMix" => "שלח מיקס",
"uploadSelectDJ1" => "בחר די.ג'יי 1",
"uploadSelectDJ2" => "בחר די.ג'יי 2 (אופציונלי)",
"uploadSelectDJ3" => "בחר די.ג'יי 3 (אופציונלי)",
"userAlreadyExists" => "המשתמש כבר קיים.",
"allFieldsRequired" => "כל השדות נדרשים.",
"passwordsDoNotMatch" => "הסיסמאות אינן תואמות.",
"invalidEmail" => "פורמט דוא\"ל לא חוקי.",
"invalidUsername" => "פורמט שם משתמש אינו חוקי.",
"verifyEmailAddress" => "אמת את כתובת האימייל שלך",
"registerThankYou" => "תודה שנרשמת ב- ",
"registerVerifyEmail" => "אנא אמת את כתובת האימייל שלך על ידי לחיצה על הקישור למטה או על ידי הזנת קוד האימות בפרופיל שלך:",
"registerVerifyCodeIs" => "קוד האימות שלך הוא: ",
"registerVerifyTimeout" => "קוד זה יפוג תוך 15 דקות.",
"password" => "סיסמה",
"rememberMe" => "זכור אותי",
"forgotPassword" => "שכחת סיסמה",
"dontHaveAccount" => "אין לך חשבון?",
"signUp" => "הרשמה",
"passwordResetSent" => "אם הדוא\"ל קיים במערכת שלנו, נשלח קישור לאיפוס סיסמה.",
"passwordResetRequested" => "בקשת לאיפוס הסיסמה שלך. אנא לחץ על הקישור למטה כדי לאפס את הסיסמה שלך:",
"passwordResetUnrequested" => "אם לא ביקשת זאת, אנא התעלם מהאימייל הזה. קישור זה יפוג תוך 15 דקות.",
"emailaddressEnter" => "הזן את כתובת האימייל שלך",
"messageSentSuccess" => "ההודעה נשלחה בהצלחה.",
"messageSentError" => "אירעה שגיאה במהלך שליחת ההודעה.",
"contactUs2" => "נשמח לשמוע ממך. שלחו לנו הודעה ונשיב בהקדם האפשרי.",
"messageSendUs" => "שלח לנו הודעה",
"messageSend" => "שלח הודעה",
"passwordReset" => "איפוס סיסמה",
"enterYourUsername" => "הזן את שם המשתמש שלך",
"newPassword" => "סיסמה חדשה",
"confirmPassword" => "אשר סיסמה חדשה",
"passwordResetSuccess" => "הסיסמה שלך הוזמנה בהצלחה. אנא התחבר עם הסיסמה החדשה שלך.",
"enterEmailAddressPlease" => "אנא הזן את כתובת האימייל שלך.",
"emailInvalid" => "פורמט דוא\"ל לא חוקי.",
"passwordMismatch" => "הסיסמאות אינן תואמות.",
"passwordRequirements" => "הסיסמה חייבת להיות לפחות 8 תווים ולכלול אותיות גדולות וקטנות, כמו גם מספר.",
"resetExpiredInvalid" => "קוד איפוס סיסמה לא חוקי או פג.",
"resetExpired" => "קוד איפוס הסיסמה פג.",
"codeCredsInvalid" => "אישורים או קוד אימות לא חוקיים.",
"change" => "שנה",
"changePicture" => "שנה תמונה",
"verify" => "אמת",
"createdUsing" => "נוצר באמצעות",
"djmixhostingsoftware" => "תוכנת אירוח מיקס די.ג'יי",
"privacyPolicy" => "מדיניות פרטיות",
"termsAndConditions" => "תנאים והגבלות",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'welcome' => 'Üdvözöljük a weboldalunkon!',
'description' => 'Ez egy angol nyelvű leírás.',
'desc' => 'Leírás',
'userProfile' => "Felhasználói profil",
'user' => 'Felhasználó',
'home' => 'Kezdőlap',
'djName' => 'DJ neve',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
'location' => 'Helyszín',
'bio' => 'Összegzés',
'submit' => 'Küldés',
'login' => 'Bejelentkezés',
'message' => 'Üzenet',
'follow' => 'Követés',
'djs' => 'DJ-k',
"djNotFound" => "Nem sikerült betölteni a DJ-t; vagy a DJ nem található, vagy ez a DJ privát.",
"notfound" => "Az oldal nem található",
"genre" => "Műfaj",
"genres" => "Műfajok",
"genreNotFound" => "Nem sikerült betölteni a műfajt; vagy a műfaj nem található, üres, vagy ez a műfaj privát.",
"mix-count" => "Mixek száma",
"mixes" => "Mixek",
"mix" => "Keverés",
"mixNotFound" => "Nem sikerült betölteni a mixet; vagy a mix nem található, üres, vagy ez a mix privát.",
"mixshowNotFound" => "Nem sikerült betölteni a mixshow-t; vagy a mixshow nem található, üres, vagy ez a mixshow privát.",
"mixName" => "Mix neve",
"mixDescription" => "Mix leírása",
"mixLength" => "Mix hossza",
"mixGenre" => "Mix műfaja",
"view" => "Megtekintés",
"mixname" => "Mix neve",
"search" => "Keresés",
"searchResults" => "Keresési eredmények",
"searchResultsFor" => "Keresési eredmények a következőre",
"searchResultsFound" => "Talált keresési eredmények",
"tracklist" => "Zenei lista",
"lastupdated" => "Utolsó frissítés",
"duration" => "Időtartam",
"hour" => "óra",
"hours" => "órák",
"minute" => "perc",
"minutes" => "percek",
"second" => "másodperc",
"seconds" => "másodpercek",
"by" => "által",
"added" => "Hozzáadva",
"recorded" => "Rögzítve",
"audioNotSupported" => "A böngésződ nem támogatja a hang elemet.",
"downloads" => "Letöltések",
"download" => "Letöltés",
"downloadMix" => "Mix letöltése",
"plays" => "Lejátszások",
"play" => "Lejátszás",
"contactus" => "Kapcsolatfelvétel",
"allrightsreserved" => "Minden jog fenntartva.",
"mixshows" => "Mixshow-k",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
"mixshowName" => "Mixshow neve",
"share" => "Megosztás",
"sahrethismix" => "Oszd meg ezt a mixet",
"sharethismixshow" => "Oszd meg ezt a mixshow-t",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "Év",
"sharetotwitter" => "Megosztás X-nek (korábban Twitter)",
"sharetofb" => "Megosztás Facebookon",
"sharetoig" => "Megosztás Instagramon",
"copyurl" => "URL másolása",
"urlcopiedtoclipboard" => "URL másolva a vágólapra",
"failedtocopyurl" => "URL másolása nem sikerült",
"name" => "Név",
"username" => "Felhasználónév",
"logout" => "Kijelentkezés",
"upload" => "Feltöltés",
"loginToVerifyEmail" => "Be kell jelentkezned a leveled ellenőrzéséhez.",
"loginToUploadMix" => "Be kell jelentkezned a mix feltöltéséhez.",
"verificationCodeRequired" => "A megerősítő kód kötelező.",
"recordedDate" => "Rögzítési dátum",
"noUploadedFileFound" => "Nem találtunk feltöltött fájlt. Kérjük, töltsd fel a mix fájlt.",
"mixTitleRequired" => "A mix címe kötelező.",
"errorUploadCDN" => "Hiba a fájl feltöltése során a CDN-re: ",
"errorSavingMixDB" => "Hiba a mix adatbázisba mentésekor.",
"uploadedPendingApproval" => "A mix sikeresen feltöltve, és jóváhagyásra vár.",
"uploadHeader1" => "Töltsd fel a mixet Utah DJ-inek",
"uploadAlertHeader" => "Fontos feltöltési információk",
"uploadAlert1" => "Utah DJ-i olyan archívum projekt, amely az EDM DJ-k történetének és kultúrájának megőrzésére összpontosít. A feltöltéseid hozzájárulnak ehhez a történelmi feljegyzéshez.",
"uploadHeader2" => "A feltöltés előtt",
"uploadAlert2" => "Ellenőrizd, hogy az összes érintett DJ fel van-e tüntetve az adatbázisunkban. Ha egy DJ nincs felsorolva, azt hozzá kell adni és jóvá kell hagyni a feltöltés előtt.",
"uploadAlert3" => "Ellenőrizd, hogy az megfelelő műfajok elérhetők-e a mixedhez. Az új műfajok jóváhagyást igényelnek a használat előtt.",
"uploadAlert4" => "Új DJ-k vagy műfajok kérését a profil beállításaidon keresztül küldheted el.",
"uploadProcess" => "Feltöltési folyamat",
"uploadProcess1" => "Töltsd fel a mix fájlodat (MP3 vagy ZIP formátumban)",
"uploadProcess2" => "Add meg a mix adatait, beleértve a címet, leírást és rögzítési dátumot",
"uploadProcess3" => "Válaszd ki a megfelelő műfajokat és DJ-ket",
"uploadProcess4" => "Küldés ellenőrzésre",
"uploadAMix" => "Mix feltöltése",
"uploadSelectMix" => "Válaszd ki a Mix fájlt (MP3 vagy ZIP)",
"uploadMaxFileSize" => "Maximális fájlméret: 500MB",
"uploadFile" => "Fájl feltöltése",
"uploadSelectGenres" => "Válaszd ki a műfajokat (típus a kereséshez)",
"uploadSelectDJSMax3" => "Válaszd ki a DJ-ket (Maximum 3)",
"uploadSubmitMix" => "Mix beküldése",
"uploadSelectDJ1" => "Válaszd ki az 1. DJ-t",
"uploadSelectDJ2" => "Válaszd ki a 2. DJ-t (opcionális)",
"uploadSelectDJ3" => "Válaszd ki a 3. DJ-t (opcionális)",
"userAlreadyExists" => "A felhasználó már létezik.",
"allFieldsRequired" => "Minden mező kitöltése kötelező.",
"passwordsDoNotMatch" => "A jelszavak nem egyeznek.",
"invalidEmail" => "Érvénytelen email formátum.",
"invalidUsername" => "Érvénytelen felhasználónév formátum.",
"verifyEmailAddress" => "Ellenőrizd az email címedet",
"registerThankYou" => "Köszönjük, hogy regisztráltál itt: ",
"registerVerifyEmail" => "Kérlek, ellenőrizd az email címedet az alábbi linken keresztül, vagy a megerősítő kód megadásával a profilodban:",
"registerVerifyCodeIs" => "A megerősítő kódod: ",
"registerVerifyTimeout" => "Ez a kód 15 perc múlva lejár.",
"password" => "Jelszó",
"rememberMe" => "Emlékezz rám",
"forgotPassword" => "Elfelejtetted a jelszavad",
"dontHaveAccount" => "Nincs fiókod?",
"signUp" => "Regisztrálj",
"passwordResetSent" => "Ha az email cím már létezik a rendszerünkben, jelszó-visszaállító linket küldtünk.",
"passwordResetRequested" => "Kérted a jelszavad visszaállítását. Kérlek, kattints az alábbi linkre a jelszavad visszaállításához:",
"passwordResetUnrequested" => "Ha nem kérted ezt, kérlek, hagyd figyelmen kívül ezt az emailt. Ez a link 15 perc múlva lejár.",
"emailaddressEnter" => "Add meg az email címedet",
"messageSentSuccess" => "Üzenet sikeresen elküldve.",
"messageSentError" => "Hiba történt az üzenet küldésekor.",
"contactUs2" => "Szeretnénk hallani önről. Küldjön üzenetet, és a lehető leghamarabb válaszolunk.",
"messageSendUs" => "Küldj nekünk üzenetet",
"messageSend" => "Üzenet küldése",
"passwordReset" => "Jelszó visszaállítása",
"enterYourUsername" => "Add meg a felhasználónevedet",
"newPassword" => "Új jelszó",
"confirmPassword" => "Új jelszó megerősítése",
"passwordResetSuccess" => "A jelszavad sikeresen visszaállítva. Kérlek, lépj be az új jelszavaddal.",
"enterEmailAddressPlease" => "Kérlek, add meg az email címedet.",
"emailInvalid" => "Érvénytelen email formátum.",
"passwordMismatch" => "A jelszavak nem egyeznek.",
"passwordRequirements" => "A jelszónak legalább 8 karakter hosszúnak kell lennie, és tartalmaznia kell nagy- és kisbetűket, valamint egy számot.",
"resetExpiredInvalid" => "Érvénytelen vagy lejárt jelszó-visszaállítási kód.",
"resetExpired" => "A jelszó-visszaállítási kód lejárt.",
"codeCredsInvalid" => "Érvénytelen hitelesítési adatok vagy ellenőrző kód.",
"change" => "Változás",
"changePicture" => "Kép megváltoztatása",
"verify" => "Ellenőrzés",
"createdUsing" => "Készítette",
"djmixhostingsoftware" => "DJ Mix Hosting Szoftver",
"privacyPolicy" => "Adatvédelmi irányelvek",
"termsAndConditions" => "Felhasználási feltételek",
];

View file

@ -1,6 +1,6 @@
<?php
return [
'welcome' => 'Benvenuto nel nostro sito Web!',
'welcome' => 'Benvenuto nel nostro sito web!',
'description' => 'Questa è una descrizione in inglese.',
'desc' => 'Descrizione',
'userProfile' => "Profilo Utente",
@ -9,32 +9,32 @@ return [
'djName' => 'Nome DJ',
'email' => 'Email',
'location' => 'Posizione',
'bio' => 'Bio',
'bio' => 'Biografia',
'submit' => 'Invia',
'login' => 'Accedi',
'login' => 'Accesso',
'message' => 'Messaggio',
'follow' => 'Segui',
'djs' => 'DJ',
"djNotFound" => "Impossibile caricare DJ; o il DJ non è stato trovato o questo DJ è privato.",
"djNotFound" => "Impossibile caricare il DJ; o il DJ non è stato trovato o questo DJ è privato.",
"notfound" => "Pagina non trovata",
"genre" => "Genere",
"genres" => "Genres",
"genreNotFound" => "Impossibile caricare il genere; o il genere non è stato trovato, è vuoto, o questo genere è privato.",
"genres" => "Generi",
"genreNotFound" => "Impossibile caricare il genere; o il genere non è stato trovato, era vuoto, o questo genere è privato.",
"mix-count" => "Conteggio Mix",
"mixes" => "Miscele",
"mix" => "Miscela",
"mixNotFound" => "Impossibile caricare il mix; o il mix non è stato trovato, è vuoto, o questo mix è privato.",
"mixshowNotFound" => "Impossibile caricare mixshow; o il mixshow non è stato trovato, è stato vuoto, o questo mixshow è privato.",
"mixes" => "Mix",
"mix" => "Mix",
"mixNotFound" => "Impossibile caricare il mix; o il mix non è stato trovato, era vuoto, o questo mix è privato.",
"mixshowNotFound" => "Impossibile caricare il mixshow; o il mixshow non è stato trovato, era vuoto, o questo mixshow è privato.",
"mixName" => "Nome Mix",
"mixDescription" => "Descrizione Mix",
"mixLength" => "Miscela Lunghezza",
"mixGenre" => "Miscelare Genere",
"mixLength" => "Durata Mix",
"mixGenre" => "Genere Mix",
"view" => "Visualizza",
"mixname" => "Nome Mix",
"search" => "Cerca",
"searchResults" => "Risultati Della Ricerca",
"searchResultsFor" => "Risultati della ricerca per",
"searchResultsFound" => "Risultati Di Ricerca Trovati",
"searchResults" => "Risultati di ricerca",
"searchResultsFor" => "Risultati di ricerca per",
"searchResultsFound" => "Risultati di ricerca trovati",
"tracklist" => "Tracklist",
"lastupdated" => "Ultimo Aggiornamento",
"duration" => "Durata",
@ -44,7 +44,7 @@ return [
"minutes" => "minuti",
"second" => "secondo",
"seconds" => "secondi",
"by" => "di",
"by" => "da",
"added" => "Aggiunto",
"recorded" => "Registrato",
"audioNotSupported" => "Il tuo browser non supporta l'elemento audio.",
@ -52,10 +52,10 @@ return [
"download" => "Scarica",
"downloadMix" => "Scarica Mix",
"plays" => "Riproduzioni",
"play" => "Gioca",
"play" => "Riproduci",
"contactus" => "Contattaci",
"allrightsreserved" => "Tutti i diritti riservati.",
"mixshows" => "Mixshow",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Nome Mixshow",
"share" => "Condividi",
@ -63,14 +63,93 @@ return [
"sharethismixshow" => "Condividi questo mixshow",
"rss" => "RSS",
"year" => "Anno",
"sharetotwitter" => "Condividi su X (ex Twitter)",
"sharetotwitter" => "Condividi su X (precedentemente Twitter)",
"sharetofb" => "Condividi su Facebook",
"sharetoig" => "Condividi su Instagram",
"copyurl" => "Copia URL",
"urlcopiedtoclipboard" => "URL copiato negli appunti",
"failedtocopyurl" => "Impossibile copiare l'URL",
"failedtocopyurl" => "Errore nella copia dell'URL",
"name" => "Nome",
"username" => "Username",
"logout" => "Esci",
"username" => "Nome Utente",
"logout" => "Disconnetti",
"upload" => "Carica",
"loginToVerifyEmail" => "Devi connetterti per verificare la tua email.",
"loginToUploadMix" => "Devi connetterti per caricare un mix.",
"verificationCodeRequired" => "Il codice di verifica è richiesto.",
"recordedDate" => "Data di Registrazione",
"noUploadedFileFound" => "Nessun file caricato trovato. Si prega di caricare un file mix.",
"mixTitleRequired" => "Il titolo del mix è richiesto.",
"errorUploadCDN" => "Errore durante il caricamento del file nel CDN: ",
"errorSavingMixDB" => "Errore durante il salvataggio del mix nel database.",
"uploadedPendingApproval" => "Mix caricato con successo e in attesa di approvazione.",
"uploadHeader1" => "Carica il tuo mix nei DJ dell'Utah",
"uploadAlertHeader" => "Informazioni importanti sul caricamento",
"uploadAlert1" => "I DJ dell'Utah sono principalmente un progetto archivistico dedicato alla conservazione della storia e della cultura dei DJ EDM in Utah. I tuoi caricamenti contribuiscono a questo record storico.",
"uploadHeader2" => "Prima di Caricare",
"uploadAlert2" => "Verifica che tutti i DJ coinvolti siano elencati nel nostro database. Se un DJ non è elencato, deve essere aggiunto e approvato prima del caricamento.",
"uploadAlert3" => "Controlla che siano disponibili generi appropriati per il tuo mix. I nuovi generi richiedono approvazione prima di poter essere utilizzati.",
"uploadAlert4" => "Puoi inviare richieste di nuovi DJ o generi tramite le impostazioni del tuo profilo.",
"uploadProcess" => "Processo di Caricamento",
"uploadProcess1" => "Carica il tuo file mix (formato MP3 o ZIP)",
"uploadProcess2" => "Inserisci i dettagli del mix, incluso titolo, descrizione e data di registrazione",
"uploadProcess3" => "Seleziona generi e DJ rilevanti",
"uploadProcess4" => "Invia per la revisione",
"uploadAMix" => "Carica un Mix",
"uploadSelectMix" => "Seleziona File Mix (MP3 o ZIP)",
"uploadMaxFileSize" => "Dimensione massima del file: 500MB",
"uploadFile" => "Carica File",
"uploadSelectGenres" => "Seleziona Generi (digita per cercare)",
"uploadSelectDJSMax3" => "Seleziona DJ (Massimo 3)",
"uploadSubmitMix" => "Invia Mix",
"uploadSelectDJ1" => "Seleziona DJ 1",
"uploadSelectDJ2" => "Seleziona DJ 2 (opzionale)",
"uploadSelectDJ3" => "Seleziona DJ 3 (opzionale)",
"userAlreadyExists" => "Utente già esistente.",
"allFieldsRequired" => "Tutti i campi sono obbligatori.",
"passwordsDoNotMatch" => "Le password non corrispondono.",
"invalidEmail" => "Formato email non valido.",
"invalidUsername" => "Formato nome utente non valido.",
"verifyEmailAddress" => "Verifica il tuo indirizzo email",
"registerThankYou" => "Grazie per esserti registrato su ",
"registerVerifyEmail" => "Si prega di verificare il proprio indirizzo email facendo clic sul link qui sotto o inserendo il codice di verifica nel proprio profilo:",
"registerVerifyCodeIs" => "Il tuo codice di verifica è: ",
"registerVerifyTimeout" => "Questo codice scadrà in 15 minuti.",
"password" => "Password",
"rememberMe" => "Ricordami",
"forgotPassword" => "Hai dimenticato la password",
"dontHaveAccount" => "Non hai un account?",
"signUp" => "Registrati",
"passwordResetSent" => "Se l'email esiste nel nostro sistema, è stato inviato un link per il reset della password.",
"passwordResetRequested" => "Hai richiesto di ripristinare la tua password. Si prega di fare clic sul link qui sotto per ripristinare la password:",
"passwordResetUnrequested" => "Se non hai richiesto questo, ignora questa email. Questo link scadrà in 15 minuti.",
"emailaddressEnter" => "Inserisci il tuo indirizzo email",
"messageSentSuccess" => "Messaggio inviato con successo.",
"messageSentError" => "Si è verificato un errore durante l'invio del messaggio.",
"contactUs2" => "Ci piacerebbe sentire da te. Inviaci un messaggio e risponderemo il prima possibile.",
"messageSendUs" => "Inviaci un messaggio",
"messageSend" => "Invia messaggio",
"passwordReset" => "Resetta la Password",
"enterYourUsername" => "Inserisci il tuo nome utente",
"newPassword" => "Nuova Password",
"confirmPassword" => "Conferma Nuova Password",
"passwordResetSuccess" => "La tua password è stata ripristinata con successo. Si prega di accedere con la nuova password.",
"enterEmailAddressPlease" => "Si prega di inserire il proprio indirizzo email.",
"emailInvalid" => "Formato email non valido.",
"passwordMismatch" => "Le password non corrispondono.",
"passwordRequirements" => "La password deve essere lunga almeno 8 caratteri e includere lettere maiuscole e minuscole, oltre a un numero.",
"resetExpiredInvalid" => "Codice di reset della password non valido o scaduto.",
"resetExpired" => "Il codice di reset della password è scaduto.",
"codeCredsInvalid" => "Credenziali o codice di verifica non validi.",
"change" => "Cambia",
"changePicture" => "Cambia immagine",
"verify" => "Verifica",
"createdUsing" => "Creato utilizzando",
"djmixhostingsoftware" => "Software di Hosting DJ Mix",
"privacyPolicy" => "Informativa sulla privacy",
"termsAndConditions" => "Termini e condizioni",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => '私たちのウェブサイトへようこそ!',
'description' => 'これは英語の説明です。',
'welcome' => '私たちのウェブサイトへようこそ',
'description' => 'これは英語の説明です。',
'desc' => '説明',
'userProfile' => "ユーザープロフィー",
'userProfile' => "ユーザープロファイ",
'user' => 'ユーザー',
'home' => 'ホーム',
'djName' => 'DJ 名',
'email' => 'Eメールアドレス',
'djName' => 'DJ名',
'email' => 'メール',
'location' => '場所',
'bio' => '略歴',
'bio' => 'プロフィール',
'submit' => '送信',
'login' => 'ログイン',
'message' => 'メッセージ',
'follow' => 'フォロー',
'djs' => 'DJ',
"djNotFound" => "DJをロードできませんでした。DJが見つからないか、DJがプライベートです。",
"djNotFound" => "DJを読み込めませんでした。DJが見つからなかったか、プライベートのDJです。",
"notfound" => "ページが見つかりません",
"genre" => "ジャンル",
"genres" => "Genres",
"genreNotFound" => "ジャンルをロードできませんでした。ジャンルが見つかりませんでした。空でしたか、このジャンルはプライベートです。",
"genres" => "ジャンル",
"genreNotFound" => "ジャンルを読み込めませんでした。ジャンルが見つからなかったか、空であるか、プライベートのジャンルです。",
"mix-count" => "ミックス数",
"mixes" => "ミックス",
"mix" => "ミックス",
"mixNotFound" => "ミックスをロードできませんでした。ミックスが見つかりませんでした。空であるか、このミックスがプライベートです。",
"mixshowNotFound" => "mixshowをロードできませんでした。mixshowが見つかりませんでした。空か、このmixshowはプライベートです。",
"mixNotFound" => "ミックスを読み込めませんでした。ミックスが見つからなかったか、空であるか、プライベートのミックスです。",
"mixshowNotFound" => "ミックスショーを読み込めませんでした。ミックスショーが見つからなかったか、空であるか、プライベートのミックスショーです。",
"mixName" => "ミックス名",
"mixDescription" => "ミックスの説明",
"mixLength" => "ミックス長さ",
"mixLength" => "ミックス長さ",
"mixGenre" => "ミックスジャンル",
"view" => "表示",
"mixname" => "ミックス名",
"search" => "検索",
"searchResults" => "検索結果",
"searchResultsFor" => "検索結果",
"searchResultsFound" => "検索結果が見つかりました",
"searchResultsFor" => "検索結果",
"searchResultsFound" => "見つかった検索結果",
"tracklist" => "トラックリスト",
"lastupdated" => "最終更新",
"duration" => "期間",
"hour" => "",
"hour" => "",
"hours" => "時間",
"minute" => "",
"minutes" => "",
"second" => "",
"seconds" => "",
"by" => "作成者:",
"added" => "追加ました",
"recorded" => "記録済み",
"audioNotSupported" => "お使いのブラウザーは audio 要素をサポートしていません。",
"by" => "によって",
"added" => "追加されました",
"recorded" => "録音",
"audioNotSupported" => "あなたのブラウザはオーディオ要素をサポートしていません。",
"downloads" => "ダウンロード",
"download" => "ダウンロード",
"downloadMix" => "ミックスをダウンロード",
"plays" => "再生",
"plays" => "再生",
"play" => "再生",
"contactus" => "お問い合わせ",
"allrightsreserved" => "All rights reserved.",
"allrightsreserved" => "すべての権利を保留します。",
"mixshows" => "ミックスショー",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "共有",
"sahrethismix" => "このミックスを共有",
"sharethismixshow" => "このミックスショーを共有",
"mixshow" => "ミックスショー",
"mixshowName" => "ミックスショー名",
"share" => "シェア",
"sahrethismix" => "このミックスをシェア",
"sharethismixshow" => "このミックスショーをシェア",
"rss" => "RSS",
"year" => "",
"sharetotwitter" => "X(旧 Twitter)で共有",
"sharetofb" => "Facebookで共有",
"sharetoig" => "Instagramで共有",
"sharetotwitter" => "X以前のTwitterにシェア",
"sharetofb" => "Facebookにシェア",
"sharetoig" => "Instagramにシェア",
"copyurl" => "URLをコピー",
"urlcopiedtoclipboard" => "URL をクリップボードにコピーしました",
"urlcopiedtoclipboard" => "URLがクリップボードにコピーされました",
"failedtocopyurl" => "URLのコピーに失敗しました",
"name" => "名前",
"username" => "ユーザー名",
"logout" => "ログアウト",
"upload" => "アップロード",
"loginToVerifyEmail" => "メールを確認するにはログインする必要があります。",
"loginToUploadMix" => "ミックスをアップロードするにはログインする必要があります。",
"verificationCodeRequired" => "確認コードが必要です。",
"recordedDate" => "録音日",
"noUploadedFileFound" => "アップロードされたファイルが見つかりません。ミックスファイルをアップロードしてください。",
"mixTitleRequired" => "ミックスタイトルは必須です。",
"errorUploadCDN" => "CDNへのファイルのアップロード中にエラーが発生しました ",
"errorSavingMixDB" => "ミックスをデータベースに保存中にエラーが発生しました。",
"uploadedPendingApproval" => "ミックスは正常にアップロードされ、承認待ちです。",
"uploadHeader1" => "ユタ州のDJへのミックスをアップロードする",
"uploadAlertHeader" => "重要なアップロード情報",
"uploadAlert1" => "ユタ州のDJは、ユタ州のEDM DJの歴史と文化を保存することを目的とした主にアーカイブプロジェクトです。あなたのアップロードはこの歴史的記録に貢献します。",
"uploadHeader2" => "アップロードする前に",
"uploadAlert2" => "関与するすべてのDJが私たちのデータベースにリストされていることを確認してください。DJがリストされていない場合は、アップロードする前に追加され、承認されなければなりません。",
"uploadAlert3" => "ミックスに適切なジャンルが利用可能であることを確認してください。新しいジャンルは使用する前に承認が必要です。",
"uploadAlert4" => "新しいDJやジャンルのリクエストをプロフィール設定を通じて送信できます。",
"uploadProcess" => "アップロードプロセス",
"uploadProcess1" => "ミックスファイルをアップロードMP3またはZIP形式",
"uploadProcess2" => "タイトル、説明、録音日を含むミックスの詳細を入力",
"uploadProcess3" => "関連するジャンルとDJを選択",
"uploadProcess4" => "レビューのために提出",
"uploadAMix" => "ミックスをアップロード",
"uploadSelectMix" => "ミックスファイルを選択MP3またはZIP",
"uploadMaxFileSize" => "最大ファイルサイズ500MB",
"uploadFile" => "ファイルをアップロード",
"uploadSelectGenres" => "ジャンルを選択(検索するには入力)",
"uploadSelectDJSMax3" => "DJを選択最大<b>3</b>名)",
"uploadSubmitMix" => "ミックスを提出",
"uploadSelectDJ1" => "DJ<b>1</b>を選択",
"uploadSelectDJ2" => "DJ<b>2</b>を選択(任意)",
"uploadSelectDJ3" => "DJ<b>3</b>を選択(任意)",
"userAlreadyExists" => "ユーザーはすでに存在します。",
"allFieldsRequired" => "すべてのフィールドは必須です。",
"passwordsDoNotMatch" => "パスワードが一致しません。",
"invalidEmail" => "無効なメール形式。",
"invalidUsername" => "無効なユーザー名形式。",
"verifyEmailAddress" => "メールアドレスを確認してください",
"registerThankYou" => "登録ありがとうございます ",
"registerVerifyEmail" => "以下のリンクをクリックするか、プロフィールに確認コードを入力することで、メールアドレスを確認してください:",
"registerVerifyCodeIs" => "あなたの確認コードは: ",
"registerVerifyTimeout" => "このコードは<b>15</b>分で期限切れになります。",
"password" => "パスワード",
"rememberMe" => "ログインを記憶する",
"forgotPassword" => "パスワードを忘れた",
"dontHaveAccount" => "アカウントをお持ちですか?",
"signUp" => "サインアップ",
"passwordResetSent" => "メールがシステムに存在する場合は、パスワードリセットリンクが送信されました。",
"passwordResetRequested" => "パスワードをリセットするリクエストをしました。パスワードをリセットするには、以下のリンクをクリックしてください:",
"passwordResetUnrequested" => "これをリクエストしていない場合は、このメールを無視してください。このリンクは<b>15</b>分で期限切れになります。",
"emailaddressEnter" => "あなたのメールアドレスを入力してください",
"messageSentSuccess" => "メッセージを正常に送信しました。",
"messageSentError" => "メッセージを送信中にエラーが発生しました。",
"contactUs2" => "ご連絡いただければ幸いです。メッセージを送っていただければ、できるだけ早くご返信いたします。",
"messageSendUs" => "メッセージを送信する",
"messageSend" => "メッセージを送信",
"passwordReset" => "パスワードをリセット",
"enterYourUsername" => "ユーザー名を入力してください",
"newPassword" => "新しいパスワード",
"confirmPassword" => "新しいパスワードの確認",
"passwordResetSuccess" => "パスワードが正常にリセットされました。新しいパスワードでログインしてください。",
"enterEmailAddressPlease" => "メールアドレスを入力してください。",
"emailInvalid" => "無効なメール形式。",
"passwordMismatch" => "パスワードが一致しません。",
"passwordRequirements" => "パスワードは<b>8</b>文字以上で、大文字と小文字、数字を含む必要があります。",
"resetExpiredInvalid" => "無効または期限切れのパスワードリセットコード。",
"resetExpired" => "パスワードリセットコードの期限が切れました。",
"codeCredsInvalid" => "無効な認証情報または確認コード。",
"change" => "変更",
"changePicture" => "画像を変更",
"verify" => "確認",
"createdUsing" => "使用して作成しました",
"djmixhostingsoftware" => "DJミックスホスティングソフトウェア",
"privacyPolicy" => "プライバシーポリシー",
"termsAndConditions" => "利用規約",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
'welcome' => '우리 웹사이트에 오신 것을 환영합니다!',
'description' => '영어로 된 설명입니다.',
'desc' => '설명',
'userProfile' => "사용자 프로필",
'user' => '사용자',
'home' => '',
'djName' => 'DJ 이름',
'email' => '이메일',
'location' => '위치',
'bio' => '소개',
'submit' => '제출',
'login' => '로그인',
'message' => '메시지',
'follow' => '팔로우',
'djs' => 'DJ',
"djNotFound" => "DJ를 로드할 수 없습니다. DJ를 찾을 수 없거나 이 DJ는 개인 설정입니다.",
"notfound" => "페이지를 찾을 수 없습니다.",
"genre" => "장르",
"genres" => "장르들",
"genreNotFound" => "장르를 로드할 수 없습니다. 장르를 찾을 수 없거나 비어 있거나 이 장르는 개인 설정입니다.",
"mix-count" => "믹스 수",
"mixes" => "믹스",
"mix" => "믹스",
"mixNotFound" => "믹스를 로드할 수 없습니다. 믹스를 찾을 수 없거나 비어 있거나 이 믹스는 개인 설정입니다.",
"mixshowNotFound" => "믹스쇼를 로드할 수 없습니다. 믹스쇼를 찾을 수 없거나 비어 있거나 이 믹스쇼는 개인 설정입니다.",
"mixName" => "믹스 이름",
"mixDescription" => "믹스 설명",
"mixLength" => "믹스 길이",
"mixGenre" => "믹스 장르",
"view" => "보기",
"mixname" => "믹스 이름",
"search" => "검색",
"searchResults" => "검색 결과",
"searchResultsFor" => "에 대한 검색 결과",
"searchResultsFound" => "검색 결과가 발견되었습니다.",
"tracklist" => "트랙리스트",
"lastupdated" => "마지막 업데이트",
"duration" => "재생 시간",
"hour" => "시간",
"hours" => "시간",
"minute" => "",
"minutes" => "",
"second" => "",
"seconds" => "",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
"added" => "추가됨",
"recorded" => "녹음됨",
"audioNotSupported" => "당신의 브라우저는 오디오 요소를 지원하지 않습니다.",
"downloads" => "다운로드",
"download" => "다운로드",
"downloadMix" => "믹스 다운로드",
"plays" => "재생 횟수",
"play" => "재생",
"contactus" => "문의하기",
"allrightsreserved" => "모든 권리 보유.",
"mixshows" => "믹스쇼",
"mixshow" => "믹스쇼",
"mixshowName" => "믹스쇼 이름",
"share" => "공유",
"sahrethismix" => "이 믹스를 공유하세요",
"sharethismixshow" => "이 믹스쇼를 공유하세요",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "연도",
"sharetotwitter" => "X(구 트위터)로 공유하기",
"sharetofb" => "페이스북으로 공유하기",
"sharetoig" => "인스타그램으로 공유하기",
"copyurl" => "URL 복사",
"urlcopiedtoclipboard" => "URL이 클립보드에 복사되었습니다.",
"failedtocopyurl" => "URL 복사에 실패했습니다.",
"name" => "이름",
"username" => "사용자 이름",
"logout" => "로그아웃",
"upload" => "업로드",
"loginToVerifyEmail" => "이메일을 확인하려면 로그인해야 합니다.",
"loginToUploadMix" => "믹스를 업로드하려면 로그인해야 합니다.",
"verificationCodeRequired" => "인증 코드가 필요합니다.",
"recordedDate" => "녹음 날짜",
"noUploadedFileFound" => "업로드된 파일이 없습니다. 믹스 파일을 업로드하세요.",
"mixTitleRequired" => "믹스 제목은 필수입니다.",
"errorUploadCDN" => "CDN에 파일 업로드 중 오류 발생: ",
"errorSavingMixDB" => "믹스를 데이터베이스에 저장하는 중 오류가 발생했습니다.",
"uploadedPendingApproval" => "믹스가 성공적으로 업로드되었으며 승인 대기 중입니다.",
"uploadHeader1" => "유타의 DJ에게 믹스를 업로드하세요",
"uploadAlertHeader" => "중요한 업로드 정보",
"uploadAlert1" => "유타의 DJ는 주로 유타의 EDM DJ의 역사와 문화를 보존하는 아카이브 프로젝트입니다. 귀하의 업로드는 이 역사적 기록에 기여합니다.",
"uploadHeader2" => "업로드 전에",
"uploadAlert2" => "모든 관련 DJ가 우리의 데이터베이스에 나열되어 있는지 확인하세요. DJ가 나열되어 있지 않은 경우, 업로드 전에 추가되고 승인되어야 합니다.",
"uploadAlert3" => "믹스를 위한 적절한 장르가 제공되는지 확인하세요. 새로운 장르는 사용하기 전에 승인이 필요합니다.",
"uploadAlert4" => "프로필 설정을 통해 새로운 DJ 또는 장르 요청을 제출할 수 있습니다.",
"uploadProcess" => "업로드 절차",
"uploadProcess1" => "믹스 파일을 업로드하세요 (MP3 또는 ZIP 형식)",
"uploadProcess2" => "믹스 세부정보를 입력하세요. 제목, 설명 및 녹음 날짜 포함",
"uploadProcess3" => "관련 장르 및 DJ 선택",
"uploadProcess4" => "검토를 위해 제출",
"uploadAMix" => "믹스 업로드",
"uploadSelectMix" => "믹스 파일 선택 (MP3 또는 ZIP)",
"uploadMaxFileSize" => "최대 파일 크기: 500MB",
"uploadFile" => "파일 업로드",
"uploadSelectGenres" => "장르 선택 (검색하여 입력)",
"uploadSelectDJSMax3" => "DJ 선택 (최대 <b>3</b>명)",
"uploadSubmitMix" => "믹스 제출",
"uploadSelectDJ1" => "DJ 1 선택",
"uploadSelectDJ2" => "DJ 2 선택 (선택 사항)",
"uploadSelectDJ3" => "DJ 3 선택 (선택 사항)",
"userAlreadyExists" => "사용자가 이미 존재합니다.",
"allFieldsRequired" => "모든 필드는 필수입니다.",
"passwordsDoNotMatch" => "비밀번호가 일치하지 않습니다.",
"invalidEmail" => "유효하지 않은 이메일 형식입니다.",
"invalidUsername" => "유효하지 않은 사용자 이름 형식입니다.",
"verifyEmailAddress" => "이메일 주소 확인",
"registerThankYou" => "등록해 주셔서 감사합니다.",
"registerVerifyEmail" => "아래 링크를 클릭하거나 프로필에 인증 코드를 입력하여 이메일 주소를 확인하세요:",
"registerVerifyCodeIs" => "귀하의 인증 코드는: ",
"registerVerifyTimeout" => "이 코드는 <b>15</b>분 후에 만료됩니다.",
"password" => "비밀번호",
"rememberMe" => "로그인 상태 유지",
"forgotPassword" => "비밀번호를 잊으셨나요?",
"dontHaveAccount" => "계정이 없으신가요?",
"signUp" => "가입하기",
"passwordResetSent" => "이메일이 시스템에 존재하면 비밀번호 재설정 링크가 전송되었습니다.",
"passwordResetRequested" => "비밀번호 재설정을 요청하셨습니다. 비밀번호를 재설정하려면 아래 링크를 클릭하세요:",
"passwordResetUnrequested" => "이 요청을 하지 않으셨다면 이 이메일을 무시하세요. 이 링크는 <b>15</b>분 후에 만료됩니다.",
"emailaddressEnter" => "이메일 주소를 입력하세요.",
"messageSentSuccess" => "메시지가 성공적으로 전송되었습니다.",
"messageSentError" => "메시지를 전송하는 중 오류가 발생했습니다.",
"contactUs2" => "여러분의 의견을 듣고 싶습니다. 메시지를 보내주시면 최대한 빨리 답변해드리겠습니다.",
"messageSendUs" => "메시지를 보내주세요.",
"messageSend" => "메시지 보내기",
"passwordReset" => "비밀번호 재설정",
"enterYourUsername" => "사용자 이름을 입력하세요.",
"newPassword" => "새 비밀번호",
"confirmPassword" => "새 비밀번호 확인",
"passwordResetSuccess" => "비밀번호가 성공적으로 재설정되었습니다. 새 비밀번호로 로그인하세요.",
"enterEmailAddressPlease" => "이메일 주소를 입력하세요.",
"emailInvalid" => "유효하지 않은 이메일 형식입니다.",
"passwordMismatch" => "비밀번호가 일치하지 않습니다.",
"passwordRequirements" => "비밀번호는 최소 <b>8</b>자 이상이어야 하며, 대문자와 소문자, 숫자를 포함해야 합니다.",
"resetExpiredInvalid" => "유효하지 않거나 만료된 비밀번호 재설정 코드입니다.",
"resetExpired" => "비밀번호 재설정 코드가 만료되었습니다.",
"codeCredsInvalid" => "유효하지 않은 자격 증명 또는 인증 코드입니다.",
"change" => "변경",
"changePicture" => "사진 변경",
"verify" => "확인",
"createdUsing" => "사용하여 생성됨",
"djmixhostingsoftware" => "DJ 믹스 호스팅 소프트웨어",
"privacyPolicy" => "개인정보 보호정책",
"termsAndConditions" => "약관",
];

View file

@ -1,45 +1,45 @@
<?php
return [
'welcome' => 'Welkom op onze Website!',
'welcome' => 'Welkom op onze website!',
'description' => 'Dit is een beschrijving in het Engels.',
'desc' => 'Beschrijving',
'userProfile' => "Gebruikers Profiel",
'userProfile' => "Gebruik Profiel",
'user' => 'Gebruiker',
'home' => 'Startpagina',
'home' => 'Start',
'djName' => 'DJ Naam',
'email' => 'E-mailadres',
'email' => 'E-mail',
'location' => 'Locatie',
'bio' => 'Bio',
'submit' => 'Bevestigen',
'login' => 'Aanmelden',
'message' => 'bericht',
'bio' => 'Biografie',
'submit' => 'Verzend',
'login' => 'Inloggen',
'message' => 'Bericht',
'follow' => 'Volgen',
'djs' => 'DJs',
"djNotFound" => "Kan de DJ niet laden; ofwel de DJ is niet gevonden of deze DJ is privé.",
'djs' => 'DJ\'s',
"djNotFound" => "Kon DJ niet laden; hetzij de DJ is niet gevonden of deze DJ is privé.",
"notfound" => "Pagina niet gevonden",
"genre" => "genre",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Kon geen genre laden; of het genre is niet gevonden, was leeg, of dit genre is privé.",
"mix-count" => "Aantal Mix",
"genreNotFound" => "Kon genre niet laden; hetzij het genre is niet gevonden, was leeg, of dit genre is privé.",
"mix-count" => "Mix Aantal",
"mixes" => "Mixen",
"mix" => "Mengen",
"mixNotFound" => "Kon mixen niet laden; of de mix is niet gevonden, was leeg, of deze mix is privé.",
"mixshowNotFound" => "Kon mixshow niet laden; of de mixshow is niet gevonden, was leeg, of deze mixshow is privé.",
"mix" => "Mix",
"mixNotFound" => "Kon mix niet laden; hetzij de mix is niet gevonden, was leeg, of deze mix is privé.",
"mixshowNotFound" => "Kon mixshow niet laden; hetzij de mixshow is niet gevonden, was leeg, of deze mixshow is privé.",
"mixName" => "Mix Naam",
"mixDescription" => "Beschrijving mixen",
"mixDescription" => "Mix Beschrijving",
"mixLength" => "Mix Lengte",
"mixGenre" => "Mix genre",
"view" => "Bekijken",
"mixGenre" => "Mix Genre",
"view" => "Bekijk",
"mixname" => "Mix Naam",
"search" => "Zoeken",
"searchResults" => "Zoek resultaten",
"searchResults" => "Zoekresultaten",
"searchResultsFor" => "Zoekresultaten voor",
"searchResultsFound" => "Zoekresultaten gevonden",
"tracklist" => "Tracklist",
"lastupdated" => "Laatst bijgewerkt",
"searchResultsFound" => "Zoekresultaten Gevonden",
"tracklist" => "Tracklijst",
"lastupdated" => "Laatst Bijgewerkt",
"duration" => "Duur",
"hour" => "uur",
"hours" => "Uren",
"hours" => "uren",
"minute" => "minuut",
"minutes" => "minuten",
"second" => "seconde",
@ -48,29 +48,108 @@ return [
"added" => "Toegevoegd",
"recorded" => "Opgenomen",
"audioNotSupported" => "Uw browser ondersteunt het audio-element niet.",
"downloads" => "downloads",
"download" => "downloaden",
"downloadMix" => "Download mixen",
"plays" => "Speelt",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Afspelen",
"play" => "Afspelen",
"contactus" => "Contacteer ons",
"allrightsreserved" => "Alle rechten voorbehouden.format@@0",
"mixshows" => "Mixseries",
"contactus" => "Neem contact met ons op",
"allrightsreserved" => "Alle rechten voorbehouden.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Naam",
"share" => "Delen",
"share" => "Deel",
"sahrethismix" => "Deel deze mix",
"sharethismixshow" => "Deel deze mixshow",
"rss" => "RSS",
"year" => "jaar",
"sharetotwitter" => "Deel met X (voorheen Twitter)",
"sharetofb" => "Delen op Facebook",
"sharetoig" => "Delen op Instagram",
"copyurl" => "URL kopiëren",
"year" => "Jaar",
"sharetotwitter" => "Deel naar X (voorheen Twitter)",
"sharetofb" => "Deel naar Facebook",
"sharetoig" => "Deel naar Instagram",
"copyurl" => "Kopieer URL",
"urlcopiedtoclipboard" => "URL gekopieerd naar klembord",
"failedtocopyurl" => "Kopiëren van URL mislukt",
"name" => "naam",
"failedtocopyurl" => "Kopiëren van URL is mislukt",
"name" => "Naam",
"username" => "Gebruikersnaam",
"logout" => "Afmelden",
"logout" => "Uitloggen",
"upload" => "Uploaden",
"loginToVerifyEmail" => "U moet ingelogd zijn om uw e-mail te verifiëren.",
"loginToUploadMix" => "U moet ingelogd zijn om een mix te uploaden.",
"verificationCodeRequired" => "Verificatiecode is vereist.",
"recordedDate" => "Opnamedatum",
"noUploadedFileFound" => "Geen geüpload bestand gevonden. Upload alstublieft een mixbestand.",
"mixTitleRequired" => "Mix titel is vereist.",
"errorUploadCDN" => "Fout bij het uploaden van bestand naar CDN: ",
"errorSavingMixDB" => "Fout bij het opslaan van mix in de database.",
"uploadedPendingApproval" => "Mix succesvol geüpload en wacht op goedkeuring.",
"uploadHeader1" => "Upload uw mix naar Utah's DJ's",
"uploadAlertHeader" => "Belangrijke Uploadinformatie",
"uploadAlert1" => "Utah's DJ's is voornamelijk een archiveringsproject dat is gewijd aan het behoud van de geschiedenis en cultuur van EDM DJ's in Utah. Uw uploads dragen bij aan dit historische record.",
"uploadHeader2" => "Voordat u uploadt",
"uploadAlert2" => "Verifieer of alle betrokken DJ's in onze database zijn vermeld. Als een DJ niet is vermeld, moeten ze worden toegevoegd en goedgekeurd voordat ze kunnen worden geüpload.",
"uploadAlert3" => "Controleer of de relevante genres beschikbaar zijn voor uw mix. Nieuwe genres vereisen goedkeuring voordat ze kunnen worden gebruikt.",
"uploadAlert4" => "U kunt nieuwe DJ- of genreverzoeken indienen via uw profielinstellingen.",
"uploadProcess" => "Uploadproces",
"uploadProcess1" => "Upload uw mixbestand (MP3 of ZIP-formaat)",
"uploadProcess2" => "Voer mixdetails in, inclusief titel, beschrijving en opnamedatum",
"uploadProcess3" => "Selecteer relevante genres en DJ's",
"uploadProcess4" => "Dien in voor beoordeling",
"uploadAMix" => "Upload een Mix",
"uploadSelectMix" => "Selecteer Mix Bestand (MP3 of ZIP)",
"uploadMaxFileSize" => "Maximale bestandsgrootte: 500MB",
"uploadFile" => "Upload Bestand",
"uploadSelectGenres" => "Selecteer Genres (typ om te zoeken)",
"uploadSelectDJSMax3" => "Selecteer DJ's (Maximaal 3)",
"uploadSubmitMix" => "Dien Mix in",
"uploadSelectDJ1" => "Selecteer DJ 1",
"uploadSelectDJ2" => "Selecteer DJ 2 (optioneel)",
"uploadSelectDJ3" => "Selecteer DJ 3 (optioneel)",
"userAlreadyExists" => "Gebruiker bestaat al.",
"allFieldsRequired" => "Alle velden zijn vereisten.",
"passwordsDoNotMatch" => "Wachtwoorden komen niet overeen.",
"invalidEmail" => "Ongeldig e-mailformaat.",
"invalidUsername" => "Ongeldig gebruikersnaamformaat.",
"verifyEmailAddress" => "Verifieer uw e-mailadres",
"registerThankYou" => "Bedankt voor het registreren op ",
"registerVerifyEmail" => "Verifieer alstublieft uw e-mailadres door op de onderstaande link te klikken of de verificatiecode in uw profiel in te voeren:",
"registerVerifyCodeIs" => "Uw verificatiecode is: ",
"registerVerifyTimeout" => "Deze code verloopt over 15 minuten.",
"password" => "Wachtwoord",
"rememberMe" => "Onthoud me",
"forgotPassword" => "Wachtwoord vergeten",
"dontHaveAccount" => "Heeft u geen account?",
"signUp" => "Aanmelden",
"passwordResetSent" => "Als de e-mail in ons systeem bestaat, is er een link voor het opnieuw instellen van het wachtwoord verzonden.",
"passwordResetRequested" => "U heeft gevraagd om uw wachtwoord opnieuw in te stellen. Klik op de onderstaande link om uw wachtwoord opnieuw in te stellen:",
"passwordResetUnrequested" => "Als u dit niet hebt aangevraagd, kunt u deze e-mail negeren. Deze link verloopt over 15 minuten.",
"emailaddressEnter" => "Voer uw e-mailadres in",
"messageSentSuccess" => "Bericht succesvol verzonden.",
"messageSentError" => "Er was een fout opgetreden bij het verzenden van het bericht.",
"contactUs2" => "We horen graag van jou. Stuur ons een bericht en we reageren zo snel mogelijk.",
"messageSendUs" => "Stuur ons een bericht",
"messageSend" => "Bericht verzenden",
"passwordReset" => "Wachtwoord opnieuw instellen",
"enterYourUsername" => "Voer uw gebruikersnaam in",
"newPassword" => "Nieuw Wachtwoord",
"confirmPassword" => "Bevestig Nieuw Wachtwoord",
"passwordResetSuccess" => "Uw wachtwoord is succesvol opnieuw ingesteld. Log in met uw nieuwe wachtwoord.",
"enterEmailAddressPlease" => "Voer alstublieft uw e-mailadres in.",
"emailInvalid" => "Ongeldig e-mailformaat.",
"passwordMismatch" => "Wachtwoorden komen niet overeen.",
"passwordRequirements" => "Wachtwoord moet minimaal 8 tekens lang zijn en zowel hoofdletters als kleine letters, evenals een cijfer bevatten.",
"resetExpiredInvalid" => "Ongeldige of verlopen wachtwoord resetcode.",
"resetExpired" => "Wachtwoord resetcode is verlopen.",
"codeCredsInvalid" => "Ongeldige inloggegevens of verificatiecode.",
"change" => "Wijzig",
"changePicture" => "Wijzig Foto",
"verify" => "Verifiëren",
"createdUsing" => "Gemaakt met",
"djmixhostingsoftware" => "DJ Mix Hosting Software",
"privacyPolicy" => "Privacybeleid",
"termsAndConditions" => "Voorwaarden en bepalingen",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => 'Velkommen til vår hjemmeside!',
'welcome' => 'Velkommen til vår nettside!',
'description' => 'Dette er en beskrivelse på engelsk.',
'desc' => 'Beskrivelse',
'userProfile' => "Bruker profil",
'userProfile' => "Brukerprofil",
'user' => 'Bruker',
'home' => 'Hjem',
'djName' => 'DJ Navn',
'djName' => 'DJ-navn',
'email' => 'E-post',
'location' => 'Sted',
'bio' => 'Biografi',
'submit' => 'Send',
'login' => 'Innlogging',
'bio' => 'Bio',
'submit' => 'Send inn',
'login' => 'Logg inn',
'message' => 'Melding',
'follow' => 'Følg',
'djs' => 'DJ\'er',
"djNotFound" => "Kan ikke laste DJ; enten DJ var ikke funnet, eller denne DJ er privat.",
'djs' => 'DJ-er',
"djNotFound" => "Kunne ikke laste inn DJ; enten ble ikke DJ-en funnet, eller denne DJ-en er privat.",
"notfound" => "Siden ble ikke funnet",
"genre" => "Sjanger",
"genres" => "Genres",
"genreNotFound" => "Kan ikke laste sjanger; sjangeren ble ikke funnet, var tom, eller sjangeren er privat.",
"mix-count" => "Antall blandinger",
"mixes" => "Mixes",
"mix" => "Bland",
"mixNotFound" => "Kunne ikke laste blanding, verken var blandingen tom, eller så var denne blandingen privat.",
"mixshowNotFound" => "Kan ikke laste mixshow; verken ble ikke funnet, var tom, eller denne blandingen er privat.",
"mixName" => "Blandet navn",
"mixDescription" => "Bland beskrivelse",
"mixLength" => "Blandet lengde",
"mixGenre" => "Bland sjanger",
"genres" => "Sjanger",
"genreNotFound" => "Kunne ikke laste inn sjanger; enten ble ikke sjangeren funnet, var tom, eller denne sjangeren er privat.",
"mix-count" => "Mix Antall",
"mixes" => "Mikser",
"mix" => "Blande",
"mixNotFound" => "Kunne ikke laste inn mix; enten ble ikke miksen funnet, var tom, eller denne miksen er privat.",
"mixshowNotFound" => "Kunne ikke laste inn mixshow; enten ble ikke mixshowet funnet, var tomt, eller dette mixshowet er privat.",
"mixName" => "Mix-navn",
"mixDescription" => "Mixbeskrivelse",
"mixLength" => "Mixlengde",
"mixGenre" => "Mixsjanger",
"view" => "Vis",
"mixname" => "Blandet navn",
"mixname" => "Mixnavn",
"search" => "Søk",
"searchResults" => "Resultat av søket",
"searchResults" => "Søkeresultater",
"searchResultsFor" => "Søkeresultater for",
"searchResultsFound" => "Søkeresultater funnet",
"tracklist" => "Turliste",
"tracklist" => "Låtliste",
"lastupdated" => "Sist oppdatert",
"duration" => "Varighet",
"hour" => "time",
@ -45,32 +45,111 @@ return [
"second" => "sekund",
"seconds" => "sekunder",
"by" => "av",
"added" => "Lagt",
"recorded" => "Tømt",
"audioNotSupported" => "Din nettleser støtter ikke lydelementet.",
"added" => "Lagt til",
"recorded" => "Registrert",
"audioNotSupported" => "Nettleseren din støtter ikke audio-elementet.",
"downloads" => "Nedlastinger",
"download" => "Nedlasting",
"downloadMix" => "Last ned Blanding",
"plays" => "Spillforsøk",
"download" => "Last ned",
"downloadMix" => "Last ned mix",
"plays" => "Mikse",
"play" => "Spill",
"contactus" => "Kontakt oss",
"allrightsreserved" => "Med enerett.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"allrightsreserved" => "Alle rettigheter reservert.",
"mixshows" => "Mixshow",
"mixshow" => "Blandeshow",
"mixshowName" => "Mixshow navn",
"share" => "Del",
"sahrethismix" => "Del denne blandingen",
"sharethismixshow" => "Del denne blandingen",
"sahrethismix" => "Del denne miksen",
"sharethismixshow" => "Del dette mixshowet",
"rss" => "RSS",
"year" => "År",
"sharetotwitter" => "Del til X (tidligere Twitter)",
"sharetofb" => "Del Facebook",
"sharetoig" => "Del Instagram",
"sharetofb" => "Del til Facebook",
"sharetoig" => "Del til Instagram",
"copyurl" => "Kopier URL",
"urlcopiedtoclipboard" => "URL kopiert til utklippstavlen",
"failedtocopyurl" => "Klarte ikke å kopiere URL",
"urlcopiedtoclipboard" => "URL kopiert til utklippstavle",
"failedtocopyurl" => "Kunne ikke kopiere URL",
"name" => "Navn",
"username" => "Brukernavn",
"logout" => "Logg",
"logout" => "Logg ut",
"upload" => "Last opp",
"loginToVerifyEmail" => "Du må være logget inn for å verifisere e-posten din.",
"loginToUploadMix" => "Du må være logget inn for å laste opp en mix.",
"verificationCodeRequired" => "Verifiseringskode er påkrevd.",
"recordedDate" => "Registrert dato",
"noUploadedFileFound" => "Ingen opplastet fil funnet. Vennligst last opp en mixfil.",
"mixTitleRequired" => "Mix-tittel er påkrevd.",
"errorUploadCDN" => "Feil ved opplasting av fil til CDN: ",
"errorSavingMixDB" => "Feil ved lagring av mix til databasen.",
"uploadedPendingApproval" => "Mix lastet opp suksessfullt og venter på godkjenning.",
"uploadHeader1" => "Last opp miksen din til Utahs DJ-er",
"uploadAlertHeader" => "Viktig opplastingsinformasjon",
"uploadAlert1" => "Utahs DJ-er er primært et arkivprosjekt dedikert til å bevare historien og kulturen til EDM DJ-er i Utah. Dine opplastninger bidrar til dette historiske opptegnelsen.",
"uploadHeader2" => "Før du laster opp",
"uploadAlert2" => "Verifiser at alle DJ-er som er involvert er oppført i databasen vår. Hvis en DJ ikke er oppført, må de legges til og godkjennes før opplasting.",
"uploadAlert3" => "Kontroller at passende sjangere er tilgjengelige for miksen din. Nye sjangere krever godkjenning før de kan brukes.",
"uploadAlert4" => "Du kan sende inn nye DJ- eller sjangerforespørsel gjennom profilinnstillingene dine.",
"uploadProcess" => "Opplastingsprosess",
"uploadProcess1" => "Last opp miksefilen din (MP3 eller ZIP format)",
"uploadProcess2" => "Legg inn detaljer om miksen, inkludert tittel, beskrivelse og opptaksdato",
"uploadProcess3" => "Velg relevante sjangere og DJ-er",
"uploadProcess4" => "Send inn for vurdering",
"uploadAMix" => "Last opp en Mix",
"uploadSelectMix" => "Velg Mix-fil (MP3 eller ZIP)",
"uploadMaxFileSize" => "Maksimal filstørrelse: 500MB",
"uploadFile" => "Last opp fil",
"uploadSelectGenres" => "Velg sjangere (skriv for å søke)",
"uploadSelectDJSMax3" => "Velg DJ-er (Maksimalt 3)",
"uploadSubmitMix" => "Send inn Mix",
"uploadSelectDJ1" => "Velg DJ 1",
"uploadSelectDJ2" => "Velg DJ 2 (valgfritt)",
"uploadSelectDJ3" => "Velg DJ 3 (valgfritt)",
"userAlreadyExists" => "Bruker finnes allerede.",
"allFieldsRequired" => "Alle felt er påkrevd.",
"passwordsDoNotMatch" => "Passordene stemmer ikke overens.",
"invalidEmail" => "Ugyldig e-postformat.",
"invalidUsername" => "Ugyldig brukernavnsformat.",
"verifyEmailAddress" => "Verifiser e-postadressen din",
"registerThankYou" => "Takk for at du registrerte deg hos ",
"registerVerifyEmail" => "Vennligst verifiser e-postadressen din ved å klikke på lenken nedenfor eller ved å skrive inn verifiseringskoden i profilen din:",
"registerVerifyCodeIs" => "Din verifiseringskode er: ",
"registerVerifyTimeout" => "Denne koden vil utløpe om 15 minutter.",
"password" => "Passord",
"rememberMe" => "Husk meg",
"forgotPassword" => "Glemt passord",
"dontHaveAccount" => "Har du ikke en konto?",
"signUp" => "Registrer deg",
"passwordResetSent" => "Hvis e-posten finnes i systemet vårt, har en tilbakestillingslenke blitt sendt.",
"passwordResetRequested" => "Du har bedt om å tilbakestille passordet ditt. Vennligst klikk på lenken nedenfor for å tilbakestille passordet ditt:",
"passwordResetUnrequested" => "Hvis du ikke ba om dette, vennligst se bort fra denne e-posten. Denne lenken vil utløpe om 15 minutter.",
"emailaddressEnter" => "Skriv inn e-postadressen din",
"messageSentSuccess" => "Melding sendt.",
"messageSentError" => "En feil oppstod under sending av meldingen.",
"contactUs2" => "Vi vil gjerne høre fra deg. Send oss en melding, så vi vil svare så snart som mulig.",
"messageSendUs" => "Send oss en melding",
"messageSend" => "Send melding",
"passwordReset" => "Tilbakestill passord",
"enterYourUsername" => "Skriv inn brukernavnet ditt",
"newPassword" => "Nytt passord",
"confirmPassword" => "Bekreft nytt passord",
"passwordResetSuccess" => "Passordet ditt har blitt tilbakestilt. Vennligst logg inn med ditt nye passord.",
"enterEmailAddressPlease" => "Vennligst skriv inn e-postadressen din.",
"emailInvalid" => "Ugyldig e-postformat.",
"passwordMismatch" => "Passordene stemmer ikke overens.",
"passwordRequirements" => "Passordet må være minst 8 tegn langt og inkludere store og små bokstaver, samt et tall.",
"resetExpiredInvalid" => "Ugyldig eller utløpt kode for tilbakestilling av passord.",
"resetExpired" => "Koden for tilbakestilling av passord har utløpt.",
"codeCredsInvalid" => "Ugyldige legitimasjoner eller verifiseringskode.",
"change" => "Endre",
"changePicture" => "Endre bilde",
"verify" => "Verifiser",
"createdUsing" => "Opprettet med",
"djmixhostingsoftware" => "DJ Blande Vert programvare",
"privacyPolicy" => "Personvernerklæring",
"termsAndConditions" => "Vilkår og betingelser",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => 'Witamy na naszej stronie internetowej!',
'welcome' => 'Witaj na naszej stronie!',
'description' => 'To jest opis w języku angielskim.',
'desc' => 'Opis',
'userProfile' => "Profil użytkownika",
'userProfile' => "Profil Użytkownika",
'user' => 'Użytkownik',
'home' => 'Strona główna',
'djName' => 'Nazwa DJ',
'email' => 'E-mail',
'djName' => 'Nazwa DJ-a',
'email' => 'Email',
'location' => 'Lokalizacja',
'bio' => 'Bio',
'bio' => 'Biografia',
'submit' => 'Prześlij',
'login' => 'Logowanie',
'login' => 'Zaloguj się',
'message' => 'Wiadomość',
'follow' => 'Śledź',
'follow' => 'Obserwuj',
'djs' => 'DJ-e',
"djNotFound" => "Nie można załadować DJ; DJ nie został znaleziony lub ten DJ jest prywatny.",
"djNotFound" => "Nie można załadować miksy; albo mieszanina nie została znaleziona, była pusta lub ta miksy jest prywatna.",
"notfound" => "Strona nie znaleziona",
"genre" => "Gatunek",
"genres" => "Gatunki",
"genreNotFound" => "Nie można załadować gatunku; albo gatunek nie został znaleziony, był pusty lub ten gatunek jest prywatny.",
"mix-count" => "Liczba mieszanek",
"genreNotFound" => "Nie można załadować gatunku; albo gatunek nie został znaleziony, był pusty, albo ten gatunek jest prywatny.",
"mix-count" => "Liczba miksów",
"mixes" => "Mixy",
"mix" => "Mieszanina",
"mix" => "Mixy",
"mixNotFound" => "Nie można załadować miksy; albo mieszanina nie została znaleziona, była pusta lub ta miksy jest prywatna.",
"mixshowNotFound" => "Nie można załadować mixshow; albo mixshow nie został znaleziony, był pusty, albo mixshow jest prywatny.",
"mixshowNotFound" => "Nie można załadować mixshow; albo mixshow nie został znaleziony, był pusty, albo ten mixshow jest prywatny.",
"mixName" => "Nazwa mixu",
"mixDescription" => "Opis mieszaniny",
"mixLength" => "Długość mieszania",
"mixGenre" => "Mieszać gatunek",
"view" => "Widok",
"mixDescription" => "Opis mixu",
"mixLength" => "Czas trwania mixu",
"mixGenre" => "Gatunek mixu",
"view" => "Zobacz",
"mixname" => "Nazwa mixu",
"search" => "Szukaj",
"searchResults" => "Wyniki wyszukiwania",
"searchResultsFor" => "Wyniki wyszukiwania dla",
"searchResultsFound" => "Znaleziono wyniki wyszukiwania",
"tracklist" => "Lista ścieżek",
"searchResultsFound" => "Znalezione wyniki wyszukiwania",
"tracklist" => "Lista utworów",
"lastupdated" => "Ostatnia aktualizacja",
"duration" => "Czas trwania",
"hour" => "godzina",
@ -46,31 +46,110 @@ return [
"seconds" => "sekundy",
"by" => "przez",
"added" => "Dodano",
"recorded" => "Zapisane",
"recorded" => "Nagrane",
"audioNotSupported" => "Twoja przeglądarka nie obsługuje elementu audio.",
"downloads" => "Pobrania",
"download" => "Pobierz",
"downloadMix" => "Pobierz Mix",
"plays" => "Odtwarzaj",
"downloadMix" => "Pobierz mix",
"plays" => "Odtwarzania",
"play" => "Odtwórz",
"contactus" => "Skontaktuj się z nami",
"allrightsreserved" => "Wszystkie prawa zastrzeżone.",
"mixshows" => "Mieszanki",
"mixshow" => "Mixshow",
"mixshowName" => "Nazwa Mixshow",
"allrightsreserved" => "Wszelkie prawa zastrzeżone.",
"mixshows" => "Mixshow",
"mixshow" => "Nazwa mixshow",
"mixshowName" => "Nazwa mixshow",
"share" => "Udostępnij",
"sahrethismix" => "Udostępnij ten koszyk",
"sahrethismix" => "Udostępnij ten mix",
"sharethismixshow" => "Udostępnij ten mixshow",
"rss" => "RSS",
"year" => "W związku z tym Komisja stwierdza, że środek 1 stanowi pomoc państwa w rozumieniu art. 107 ust. 1 Traktatu.",
"sharetotwitter" => "Udostępnij do X (dawniej Twitter)",
"year" => "Rok",
"sharetotwitter" => "Udostępnij na X (dawniej Twitter)",
"sharetofb" => "Udostępnij na Facebooku",
"sharetoig" => "Udostępnij na Instagramie",
"copyurl" => "Kopiuj adres URL",
"urlcopiedtoclipboard" => "Adres URL skopiowany do schowka",
"failedtocopyurl" => "Nie udało się skopiować adresu URL",
"name" => "Nazwisko",
"copyurl" => "Skopiuj URL",
"urlcopiedtoclipboard" => "URL skopiowany do schowka",
"failedtocopyurl" => "Nie udało się skopiować URL",
"name" => "Nazwa",
"username" => "Nazwa użytkownika",
"logout" => "Wyloguj się",
"upload" => "Prześlij",
"loginToVerifyEmail" => "Musisz być zalogowany, aby zweryfikować swój email.",
"loginToUploadMix" => "Musisz być zalogowany, aby przesłać mix.",
"verificationCodeRequired" => "Kod weryfikacji jest wymagany.",
"recordedDate" => "Data nagrania",
"noUploadedFileFound" => "Nie znaleziono przesłanego pliku. Proszę przesłać plik mixu.",
"mixTitleRequired" => "Tytuł mixu jest wymagany.",
"errorUploadCDN" => "Błąd podczas przesyłania pliku do CDN: ",
"errorSavingMixDB" => "Błąd zapisywania mixu w bazie danych.",
"uploadedPendingApproval" => "Mix został pomyślnie przesłany i czeka na zatwierdzenie.",
"uploadHeader1" => "Prześlij swój mix do DJ-ów z Utah",
"uploadAlertHeader" => "Ważne informacje dotyczące przesyłania",
"uploadAlert1" => "DJ-e z Utah to przede wszystkim projekt archiwalny poświęcony zachowaniu historii i kultury DJ-ów EDM w Utah. Twoje przesyłki przyczyniają się do tego historycznego zapisu.",
"uploadHeader2" => "Przed przesłaniem",
"uploadAlert2" => "Sprawdź, czy wszyscy DJ-e zaangażowani są wymienieni w naszej bazie danych. Jeśli DJ nie jest wymieniony, musi zostać dodany i zatwierdzony przed przesłaniem.",
"uploadAlert3" => "Sprawdź, czy odpowiednie gatunki są dostępne dla Twojego mixu. Nowe gatunki wymagają zatwierdzenia przed ich użyciem.",
"uploadAlert4" => "Możesz zgłaszać nowe prośby o DJ-ów lub gatunki przez ustawienia swojego profilu.",
"uploadProcess" => "Proces przesyłania",
"uploadProcess1" => "Prześlij swój plik mixu (format MP3 lub ZIP)",
"uploadProcess2" => "Wprowadź szczegóły mixu, w tym tytuł, opis i datę nagrania",
"uploadProcess3" => "Wybierz odpowiednie gatunki i DJ-ów",
"uploadProcess4" => "Złóż do przeglądu",
"uploadAMix" => "Prześlij mix",
"uploadSelectMix" => "Wybierz plik mixu (MP3 lub ZIP)",
"uploadMaxFileSize" => "Maksymalny rozmiar pliku: <b>500</b> MB",
"uploadFile" => "Prześlij plik",
"uploadSelectGenres" => "Wybierz gatunki (wpisz, aby wyszukać)",
"uploadSelectDJSMax3" => "Wybierz DJ-a (maksymalnie 3)",
"uploadSubmitMix" => "Wyślij mix",
"uploadSelectDJ1" => "Wybierz DJ-a 1",
"uploadSelectDJ2" => "Wybierz DJ-a 2 (opcjonalnie)",
"uploadSelectDJ3" => "Wybierz DJ-a 3 (opcjonalnie)",
"userAlreadyExists" => "Użytkownik już istnieje.",
"allFieldsRequired" => "Wszystkie pola są wymagane.",
"passwordsDoNotMatch" => "Hasła nie pasują.",
"invalidEmail" => "Nieprawidłowy format email.",
"invalidUsername" => "Nieprawidłowy format nazwy użytkownika.",
"verifyEmailAddress" => "Zweryfikuj swój adres email",
"registerThankYou" => "Dziękujemy za zarejestrowanie się na ",
"registerVerifyEmail" => "Proszę zweryfikować swój adres email, klikając w poniższy link lub wpisując kod weryfikacyjny w swoim profilu:",
"registerVerifyCodeIs" => "Twój kod weryfikacyjny to: ",
"registerVerifyTimeout" => "Ten kod wygaśnie za 15 minut.",
"password" => "Hasło",
"rememberMe" => "Zapamiętaj mnie",
"forgotPassword" => "Nie pamiętasz hasła",
"dontHaveAccount" => "Nie masz konta?",
"signUp" => "Zarejestruj się",
"passwordResetSent" => "Jeśli email istnieje w naszym systemie, link do resetowania hasła został wysłany.",
"passwordResetRequested" => "Poprosiłeś o zresetowanie hasła. Proszę kliknij w poniższy link, aby zresetować swoje hasło:",
"passwordResetUnrequested" => "Jeśli nie żądałeś tego, zignoruj ten email. Ten link wygaśnie za 15 minut.",
"emailaddressEnter" => "Wpisz swój adres email",
"messageSentSuccess" => "Wiadomość wysłana pomyślnie.",
"messageSentError" => "Wystąpił błąd podczas wysyłania wiadomości.",
"contactUs2" => "Chcielibyśmy usłyszeć od Ciebie. Wyślij nam wiadomość, a my odpowiemy tak szybko, jak to możliwe.",
"messageSendUs" => "Wyślij nam wiadomość",
"messageSend" => "Wyślij wiadomość",
"passwordReset" => "Zresetuj hasło",
"enterYourUsername" => "Wpisz swoją nazwę użytkownika",
"newPassword" => "Nowe hasło",
"confirmPassword" => "Potwierdź nowe hasło",
"passwordResetSuccess" => "Twoje hasło zostało pomyślnie zresetowane. Proszę zalogować się za pomocą nowego hasła.",
"enterEmailAddressPlease" => "Proszę wpisać swój adres email.",
"emailInvalid" => "Nieprawidłowy format email.",
"passwordMismatch" => "Hasła nie pasują.",
"passwordRequirements" => "Hasło musi mieć co najmniej 8 znaków i zawierać wielkie i małe litery oraz cyfrę.",
"resetExpiredInvalid" => "Nieprawidłowy lub wygasły kod resetowania hasła.",
"resetExpired" => "Kod resetowania hasła wygasł.",
"codeCredsInvalid" => "Nieprawidłowe dane logowania lub kod weryfikacyjny.",
"change" => "Zmień",
"changePicture" => "Zmień zdjęcie",
"verify" => "Zweryfikuj",
"createdUsing" => "Utworzono przy użyciu",
"djmixhostingsoftware" => "Oprogramowanie do hostingu mixów DJ-skich",
"privacyPolicy" => "Polityka prywatności",
"termsAndConditions" => "Warunki",
];

View file

@ -2,75 +2,154 @@
return [
'welcome' => 'Bem-vindo ao nosso site!',
'description' => 'Esta é uma descrição em inglês.',
'desc' => 'Descrição:',
'userProfile' => "Informações do Perfil",
'desc' => 'Descrição',
'userProfile' => "Perfil do Usuário",
'user' => 'Usuário',
'home' => 'Residencial',
'home' => 'Início',
'djName' => 'Nome do DJ',
'email' => 'e-mail',
'location' => 'Local:',
'email' => 'Email',
'location' => 'Localização',
'bio' => 'Biografia',
'submit' => 'submeter',
'login' => 'Conectar-se',
'message' => 'mensagem',
'submit' => 'Enviar',
'login' => 'Login',
'message' => 'Mensagem',
'follow' => 'Seguir',
'djs' => 'DJs',
"djNotFound" => "Não foi possível carregar DJ; ou o DJ não foi encontrado ou este DJ é privado.",
"djNotFound" => "Não foi possível carregar o DJ; ou o DJ não foi encontrado ou este DJ é privado.",
"notfound" => "Página não encontrada",
"genre" => "gênero",
"genres" => "Genres",
"genre" => "Gênero",
"genres" => "Gêneros",
"genreNotFound" => "Não foi possível carregar o gênero; ou o gênero não foi encontrado, estava vazio ou este gênero é privado.",
"mix-count" => "Contador de misturas",
"mixes" => "Misturar",
"mix" => "Mistura",
"mixNotFound" => "Não foi possível carregar o mix; ou a mistura não foi encontrada, estava vazia, ou esta mistura é privada.",
"mix-count" => "Contagem de Mix",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Não foi possível carregar a mixagem; ou a mixagem não foi encontrada, estava vazia ou esta mixagem é privada.",
"mixshowNotFound" => "Não foi possível carregar o mixshow; ou o mixshow não foi encontrado, estava vazio ou este mixshow é privado.",
"mixName" => "Nome do mix",
"mixDescription" => "Descrição Misto",
"mixLength" => "Comprimento Misturado",
"mixGenre" => "Gênero misto",
"view" => "Visualizar",
"mixname" => "Nome do mix",
"search" => "Pesquisa",
"mixName" => "Nome da Mix",
"mixDescription" => "Descrição da Mix",
"mixLength" => "Duração da Mix",
"mixGenre" => "Gênero da Mix",
"view" => "Ver",
"mixname" => "Nome da Mix",
"search" => "Pesquisar",
"searchResults" => "Resultados da Pesquisa",
"searchResultsFor" => "Resultados da Pesquisa para",
"searchResultsFound" => "Resultados da Pesquisa Encontrados",
"tracklist" => "Acompanhamento",
"lastupdated" => "Última atualização",
"tracklist" => "Playlist",
"lastupdated" => "Última Atualização",
"duration" => "Duração",
"hour" => "hora",
"hours" => "horas",
"minute" => "minuto",
"minutes" => "Minutos",
"minutes" => "minutos",
"second" => "segundo",
"seconds" => "segundos",
"by" => "Por",
"by" => "por",
"added" => "Adicionado",
"recorded" => "Gravado",
"audioNotSupported" => "Seu navegador não suporta o elemento de áudio.",
"downloads" => "Downloads",
"download" => "BAIXAR",
"download" => "Download",
"downloadMix" => "Baixar Mix",
"plays" => "Reproduções",
"plays" => "Reproduz",
"play" => "Reproduzir",
"contactus" => "Entre em contato",
"contactus" => "Entre em Contato Conosco",
"allrightsreserved" => "Todos os direitos reservados.",
"mixshows" => "Misturas",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Nome do Mixshow",
"share" => "Compartilhar",
"sahrethismix" => "Compartilhe esta mistura",
"sahrethismix" => "Compartilhar esta mixagem",
"sharethismixshow" => "Compartilhar este mixshow",
"rss" => "Resposta",
"year" => "ano",
"sharetotwitter" => "Compartilhar para X (antigo Twitter)",
"rss" => "RSS",
"year" => "Ano",
"sharetotwitter" => "Compartilhar no X (anteriormente Twitter)",
"sharetofb" => "Compartilhar no Facebook",
"sharetoig" => "Compartilhar com o Instagram",
"sharetoig" => "Compartilhar no Instagram",
"copyurl" => "Copiar URL",
"urlcopiedtoclipboard" => "URL copiado para área de transferência",
"failedtocopyurl" => "Falha ao copiar URL",
"name" => "Nome:",
"username" => "Usuário:",
"logout" => "Desconectar",
"upload" => "Transferir",
"urlcopiedtoclipboard" => "URL copiada para a área de transferência",
"failedtocopyurl" => "Falha ao copiar a URL",
"name" => "Nome",
"username" => "Nome de Usuário",
"logout" => "Sair",
"upload" => "Enviar",
"loginToVerifyEmail" => "Você deve estar logado para verificar seu email.",
"loginToUploadMix" => "Você deve estar logado para enviar uma mixagem.",
"verificationCodeRequired" => "O código de verificação é obrigatório.",
"recordedDate" => "Data Gravada",
"noUploadedFileFound" => "Nenhum arquivo enviado encontrado. Por favor, envie um arquivo de mixagem.",
"mixTitleRequired" => "O título da mixagem é obrigatório.",
"errorUploadCDN" => "Erro ao enviar arquivo para a CDN: ",
"errorSavingMixDB" => "Erro ao salvar a mixagem no banco de dados.",
"uploadedPendingApproval" => "Mixagem enviada com sucesso e aguardando aprovação.",
"uploadHeader1" => "Envie sua mixagem para os DJs de Utah",
"uploadAlertHeader" => "Informações Importantes de Upload",
"uploadAlert1" => "Os DJs de Utah são principalmente um projeto de arquivo dedicado a preservar a história e a cultura dos DJs de EDM em Utah. Seus uploads contribuem para este registro histórico.",
"uploadHeader2" => "Antes de Enviar",
"uploadAlert2" => "Verifique se todos os DJs envolvidos estão listados em nosso banco de dados. Se um DJ não estiver listado, ele deve ser adicionado e aprovado antes de enviar.",
"uploadAlert3" => "Verifique se os gêneros apropriados estão disponíveis para sua mixagem. Novos gêneros requerem aprovação antes de poderem ser usados.",
"uploadAlert4" => "Você pode enviar novos pedidos de DJs ou gêneros através das configurações do seu perfil.",
"uploadProcess" => "Processo de Envio",
"uploadProcess1" => "Envie seu arquivo de mixagem (formato MP3 ou ZIP)",
"uploadProcess2" => "Insira os detalhes da mixagem, incluindo título, descrição e data de gravação",
"uploadProcess3" => "Selecione gêneros e DJs relevantes",
"uploadProcess4" => "Enviar para revisão",
"uploadAMix" => "Enviar uma Mixagem",
"uploadSelectMix" => "Selecione o Arquivo da Mixagem (MP3 ou ZIP)",
"uploadMaxFileSize" => "Tamanho máximo do arquivo: 500MB",
"uploadFile" => "Enviar Arquivo",
"uploadSelectGenres" => "Selecione Gêneros (digite para pesquisar)",
"uploadSelectDJSMax3" => "Selecione DJs (Máximo 3)",
"uploadSubmitMix" => "Enviar Mixagem",
"uploadSelectDJ1" => "Selecione DJ 1",
"uploadSelectDJ2" => "Selecione DJ 2 (opcional)",
"uploadSelectDJ3" => "Selecione DJ 3 (opcional)",
"userAlreadyExists" => "Usuário já existe.",
"allFieldsRequired" => "Todos os campos são obrigatórios.",
"passwordsDoNotMatch" => "As senhas não coincidem.",
"invalidEmail" => "Formato de email inválido.",
"invalidUsername" => "Formato de nome de usuário inválido.",
"verifyEmailAddress" => "Verifique seu endereço de email",
"registerThankYou" => "Obrigado por se registrar em ",
"registerVerifyEmail" => "Por favor, verifique seu endereço de email clicando no link abaixo ou inserindo o código de verificação em seu perfil:",
"registerVerifyCodeIs" => "Seu código de verificação é: ",
"registerVerifyTimeout" => "Esse código expirará em 15 minutos.",
"password" => "Senha",
"rememberMe" => "Lembrar de mim",
"forgotPassword" => "Esqueceu a senha",
"dontHaveAccount" => "Não tem uma conta?",
"signUp" => "Inscrever-se",
"passwordResetSent" => "Se o email existe em nosso sistema, um link para redefinir a senha foi enviado.",
"passwordResetRequested" => "Você solicitou a redefinição da sua senha. Por favor, clique no link abaixo para redefinir sua senha:",
"passwordResetUnrequested" => "Se você não solicitou isso, por favor, ignore este email. Este link irá expirar em 15 minutos.",
"emailaddressEnter" => "Digite seu endereço de email",
"messageSentSuccess" => "Mensagem enviada com sucesso.",
"messageSentError" => "Ocorreu um erro ao enviar a mensagem.",
"contactUs2" => "Nós adoraríamos ouvi-lo. Envie-nos uma mensagem e responderemos o mais rápido possível.",
"messageSendUs" => "Envie-nos uma Mensagem",
"messageSend" => "Enviar Mensagem",
"passwordReset" => "Redefinir Senha",
"enterYourUsername" => "Digite seu nome de usuário",
"newPassword" => "Nova Senha",
"confirmPassword" => "Confirmar Nova Senha",
"passwordResetSuccess" => "Sua senha foi redefinida com sucesso. Por favor, faça login com sua nova senha.",
"enterEmailAddressPlease" => "Por favor, insira seu endereço de email.",
"emailInvalid" => "Formato de email inválido.",
"passwordMismatch" => "As senhas não coincidem.",
"passwordRequirements" => "A senha deve ter pelo menos 8 caracteres e incluir letras maiúsculas e minúsculas, além de um número.",
"resetExpiredInvalid" => "Código de redefinição de senha inválido ou expirado.",
"resetExpired" => "O código de redefinição de senha expirou.",
"codeCredsInvalid" => "Credenciais inválidas ou código de verificação.",
"change" => "Alterar",
"changePicture" => "Alterar Foto",
"verify" => "Verificar",
"createdUsing" => "Criado usando",
"djmixhostingsoftware" => "Software de Hospedagem de Mix de DJ",
"privacyPolicy" => "Política de Privacidade",
"termsAndConditions" => "Termos e Condições",
];

View file

@ -2,75 +2,154 @@
return [
'welcome' => 'Bem-vindo ao nosso site!',
'description' => 'Esta é uma descrição em inglês.',
'desc' => 'Descrição:',
'userProfile' => "Informações do Perfil",
'desc' => 'Descrição',
'userProfile' => "Perfil do Usuário",
'user' => 'Usuário',
'home' => 'Residencial',
'home' => 'Início',
'djName' => 'Nome do DJ',
'email' => 'e-mail',
'location' => 'Local:',
'bio' => 'Biografia',
'submit' => 'submeter',
'login' => 'Conectar-se',
'message' => 'mensagem',
'email' => 'Email',
'location' => 'Localização',
'bio' => 'Bio',
'submit' => 'Enviar',
'login' => 'Entrar',
'message' => 'Mensagem',
'follow' => 'Seguir',
'djs' => 'DJs',
"djNotFound" => "Não foi possível carregar DJ; ou o DJ não foi encontrado ou este DJ é privado.",
"djNotFound" => "Não foi possível carregar o DJ; ou o DJ não foi encontrado ou este DJ é privado.",
"notfound" => "Página não encontrada",
"genre" => "gênero",
"genres" => "Genres",
"genre" => "Gênero",
"genres" => "Gêneros",
"genreNotFound" => "Não foi possível carregar o gênero; ou o gênero não foi encontrado, estava vazio ou este gênero é privado.",
"mix-count" => "Contador de misturas",
"mixes" => "Misturar",
"mix" => "Mistura",
"mixNotFound" => "Não foi possível carregar o mix; ou a mistura não foi encontrada, estava vazia, ou esta mistura é privada.",
"mix-count" => "Contagem de Mixes",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Não foi possível carregar a mix; ou a mix não foi encontrada, estava vazia ou esta mix é privada.",
"mixshowNotFound" => "Não foi possível carregar o mixshow; ou o mixshow não foi encontrado, estava vazio ou este mixshow é privado.",
"mixName" => "Nome do mix",
"mixDescription" => "Descrição Misto",
"mixLength" => "Comprimento Misturado",
"mixGenre" => "Gênero misto",
"view" => "Visualizar",
"mixname" => "Nome do mix",
"search" => "Pesquisa",
"searchResults" => "Resultados da Pesquisa",
"searchResultsFor" => "Resultados da Pesquisa para",
"searchResultsFound" => "Resultados da Pesquisa Encontrados",
"tracklist" => "Acompanhamento",
"lastupdated" => "Última atualização",
"mixName" => "Nome da Mix",
"mixDescription" => "Descrição da Mix",
"mixLength" => "Duração da Mix",
"mixGenre" => "Gênero da Mix",
"view" => "Ver",
"mixname" => "Nome da Mix",
"search" => "Buscar",
"searchResults" => "Resultados da Busca",
"searchResultsFor" => "Resultados da Busca para",
"searchResultsFound" => "Resultados da Busca Encontrados",
"tracklist" => "Lista de faixas",
"lastupdated" => "Última Atualização",
"duration" => "Duração",
"hour" => "hora",
"hours" => "horas",
"minute" => "minuto",
"minutes" => "Minutos",
"minutes" => "minutos",
"second" => "segundo",
"seconds" => "segundos",
"by" => "Por",
"by" => "por",
"added" => "Adicionado",
"recorded" => "Gravado",
"audioNotSupported" => "Seu navegador não suporta o elemento de áudio.",
"downloads" => "Downloads",
"download" => "BAIXAR",
"download" => "Baixar",
"downloadMix" => "Baixar Mix",
"plays" => "Reproduções",
"plays" => "Reproduz",
"play" => "Reproduzir",
"contactus" => "Entre em contato",
"contactus" => "Entre em Contato Conosco",
"allrightsreserved" => "Todos os direitos reservados.",
"mixshows" => "Misturas",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Nome do Mixshow",
"share" => "Compartilhar",
"sahrethismix" => "Compartilhe esta mistura",
"sahrethismix" => "Compartilhar esta mix",
"sharethismixshow" => "Compartilhar este mixshow",
"rss" => "Resposta",
"year" => "ano",
"sharetotwitter" => "Compartilhar para X (antigo Twitter)",
"rss" => "RSS",
"year" => "Ano",
"sharetotwitter" => "Compartilhar no X (antigo Twitter)",
"sharetofb" => "Compartilhar no Facebook",
"sharetoig" => "Compartilhar com o Instagram",
"sharetoig" => "Compartilhar no Instagram",
"copyurl" => "Copiar URL",
"urlcopiedtoclipboard" => "URL copiado para área de transferência",
"failedtocopyurl" => "Falha ao copiar URL",
"name" => "Nome:",
"username" => "Usuário:",
"logout" => "Desconectar",
"upload" => "Transferir",
"urlcopiedtoclipboard" => "URL copiada para a área de transferência",
"failedtocopyurl" => "Falha ao copiar a URL",
"name" => "Nome",
"username" => "Nome de Usuário",
"logout" => "Sair",
"upload" => "Carregar",
"loginToVerifyEmail" => "Você precisa estar logado para verificar seu email.",
"loginToUploadMix" => "Você precisa estar logado para carregar uma mix.",
"verificationCodeRequired" => "Código de verificação é necessário.",
"recordedDate" => "Data Gravada",
"noUploadedFileFound" => "Nenhum arquivo carregado encontrado. Por favor, carregue um arquivo de mix.",
"mixTitleRequired" => "Título da mix é obrigatório.",
"errorUploadCDN" => "Erro ao carregar o arquivo para o CDN: ",
"errorSavingMixDB" => "Erro ao salvar a mix no banco de dados.",
"uploadedPendingApproval" => "Mix carregada com sucesso e está aguardando aprovação.",
"uploadHeader1" => "Carregue sua mix para os DJs de Utah",
"uploadAlertHeader" => "Informações Importantes de Carregamento",
"uploadAlert1" => "Os DJs de Utah são principalmente um projeto arquivístico dedicado a preservar a história e cultura dos DJs de EDM em Utah. Seus uploads contribuem para este registro histórico.",
"uploadHeader2" => "Antes de Carregar",
"uploadAlert2" => "Verifique se todos os DJs envolvidos estão listados em nosso banco de dados. Se um DJ não estiver listado, ele deve ser adicionado e aprovado antes de carregar.",
"uploadAlert3" => "Verifique se os gêneros apropriados estão disponíveis para sua mix. Novos gêneros exigem aprovação antes de serem utilizados.",
"uploadAlert4" => "Você pode enviar novos pedidos de DJ ou gênero através das configurações do seu perfil.",
"uploadProcess" => "Processo de Carregamento",
"uploadProcess1" => "Carregue seu arquivo de mix (formato MP3 ou ZIP)",
"uploadProcess2" => "Insira os detalhes da mix, incluindo título, descrição e data de gravação",
"uploadProcess3" => "Selecione gêneros e DJs relevantes",
"uploadProcess4" => "Enviar para revisão",
"uploadAMix" => "Carregar uma Mix",
"uploadSelectMix" => "Selecione o arquivo de Mix (MP3 ou ZIP)",
"uploadMaxFileSize" => "Tamanho máximo do arquivo: 500MB",
"uploadFile" => "Carregar arquivo",
"uploadSelectGenres" => "Selecionar Gêneros (digite para pesquisar)",
"uploadSelectDJSMax3" => "Selecionar DJs (Máximo 3)",
"uploadSubmitMix" => "Enviar Mix",
"uploadSelectDJ1" => "Selecionar DJ 1",
"uploadSelectDJ2" => "Selecionar DJ 2 (opcional)",
"uploadSelectDJ3" => "Selecionar DJ 3 (opcional)",
"userAlreadyExists" => "Usuário já existe.",
"allFieldsRequired" => "Todos os campos são obrigatórios.",
"passwordsDoNotMatch" => "As senhas não coincidem.",
"invalidEmail" => "Formato de email inválido.",
"invalidUsername" => "Formato de nome de usuário inválido.",
"verifyEmailAddress" => "Verifique seu endereço de email",
"registerThankYou" => "Obrigado por se registrar em ",
"registerVerifyEmail" => "Por favor, verifique seu endereço de email clicando no link abaixo ou inserindo o código de verificação em seu perfil:",
"registerVerifyCodeIs" => "Seu código de verificação é: ",
"registerVerifyTimeout" => "Este código expirará em 15 minutos.",
"password" => "Senha",
"rememberMe" => "Lembre-se de Mim",
"forgotPassword" => "Esqueceu a Senha",
"dontHaveAccount" => "Não tem uma conta?",
"signUp" => "Registre-se",
"passwordResetSent" => "Se o email existir em nosso sistema, um link para redefinir a senha foi enviado.",
"passwordResetRequested" => "Você solicitou redefinir sua senha. Por favor, clique no link abaixo para redefinir sua senha:",
"passwordResetUnrequested" => "Se você não solicitou isso, ignore este email. Este link expirará em 15 minutos.",
"emailaddressEnter" => "Insira seu endereço de email",
"messageSentSuccess" => "Mensagem enviada com sucesso.",
"messageSentError" => "Ocorreu um erro ao enviar a mensagem.",
"contactUs2" => "Nós adoraríamos ouvi-lo. Envie-nos uma mensagem e responderemos o mais rápido possível.",
"messageSendUs" => "Envie-nos uma Mensagem",
"messageSend" => "Enviar Mensagem",
"passwordReset" => "Redefinir Senha",
"enterYourUsername" => "Insira seu nome de usuário",
"newPassword" => "Nova Senha",
"confirmPassword" => "Confirmar Nova Senha",
"passwordResetSuccess" => "Sua senha foi redefinida com sucesso. Por favor, faça login com sua nova senha.",
"enterEmailAddressPlease" => "Por favor, insira seu endereço de email.",
"emailInvalid" => "Formato de email inválido.",
"passwordMismatch" => "As senhas não coincidem.",
"passwordRequirements" => "A senha deve ter pelo menos 8 caracteres e incluir letras maiúsculas e minúsculas, além de um número.",
"resetExpiredInvalid" => "Código de redefinição de senha inválido ou expirado.",
"resetExpired" => "O código de redefinição de senha expirou.",
"codeCredsInvalid" => "Credenciais ou código de verificação inválidos.",
"change" => "Alterar",
"changePicture" => "Alterar Imagem",
"verify" => "Verificar",
"createdUsing" => "Criado usando",
"djmixhostingsoftware" => "Software de Hospedagem de Mix de DJ",
"privacyPolicy" => "Política de Privacidade",
"termsAndConditions" => "Termos e Condições",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => 'Bun venit pe site-ul nostru!',
'welcome' => 'Bine ați venit pe site-ul nostru!',
'description' => 'Aceasta este o descriere în engleză.',
'desc' => 'Descriere',
'userProfile' => "Profil utilizator",
'user' => 'Utilizator',
'home' => 'Acasă',
'djName' => 'Nume DJ',
'email' => 'E-mail',
'location' => 'Locaţie',
'bio' => 'Bio',
'submit' => 'Trimiteți',
'login' => 'Autentificare',
'djName' => 'Numele DJ-ului',
'email' => 'Email',
'location' => 'Locație',
'bio' => 'Biografie',
'submit' => 'Trimite',
'login' => 'Conectare',
'message' => 'Mesaj',
'follow' => 'Urmărește',
'djs' => 'DJ',
"djNotFound" => "Nu s-a putut încărca DJ; fie DJ nu a fost găsit, fie acest DJ este privat.",
'djs' => 'DJ-i',
"djNotFound" => "Nu am putut încărca DJ-ul; fie DJ-ul nu a fost găsit, fie acest DJ este privat.",
"notfound" => "Pagina nu a fost găsită",
"genre" => "Gen",
"genres" => "Genres",
"genreNotFound" => "Nu s-a putut încărca genul; fie genul nu a fost găsit, fie era gol, fie acest gen este privat.",
"mix-count" => "Numărul amestecurilor",
"genres" => "Genuri",
"genreNotFound" => "Nu am putut încărca genul; fie genul nu a fost găsit, fie este gol, fie acest gen este privat.",
"mix-count" => "Număr mixuri",
"mixes" => "Mixuri",
"mix" => "Amestecă",
"mixNotFound" => "Nu s-a putut încărca mixul; fie mixul nu a fost găsit, a fost gol, fie acest mix este privat.",
"mixshowNotFound" => "Nu s-a putut încărca mixshow-ul; fie emisiunea mixtă nu a fost găsită, a fost goală, fie acest spectacol mixt este privat.",
"mixName" => "Nume mix",
"mixDescription" => "Descriere mix",
"mixLength" => "Amestecă lungimea",
"mixGenre" => "Amestecă genul",
"mix" => "Amestec",
"mixNotFound" => "Nu am putut încărca mixul; fie mixul nu a fost găsit, fie este gol, fie acest mix este privat.",
"mixshowNotFound" => "Nu am putut încărca mixshow; fie mixshow-ul nu a fost găsit, fie este gol, fie acest mixshow este privat.",
"mixName" => "Numele mixului",
"mixDescription" => "Descriere mix",
"mixLength" => "Durată mix",
"mixGenre" => "Gen mix",
"view" => "Vizualizare",
"mixname" => "Nume mix",
"mixname" => "Numele mixului",
"search" => "Caută",
"searchResults" => "Rezultatele căutării",
"searchResults" => "Rezultate căutare",
"searchResultsFor" => "Rezultate căutare pentru",
"searchResultsFound" => "Rezultate Căutare găsite",
"tracklist" => "Lista de urmărire",
"searchResultsFound" => "Rezultate căutare găsite",
"tracklist" => "Lista pieselor",
"lastupdated" => "Ultima actualizare",
"duration" => "Durată",
"hour" => "oră",
@ -47,30 +47,109 @@ return [
"by" => "de",
"added" => "Adăugat",
"recorded" => "Înregistrat",
"audioNotSupported" => "Browserul dvs. nu acceptă elementul audio.",
"audioNotSupported" => "Browserul dumneavoastră nu suportă elementul audio.",
"downloads" => "Descărcări",
"download" => "Descărcare",
"downloadMix" => "Descarcă Mixul",
"plays" => "Jocuri",
"play" => "Redare",
"contactus" => "Contactează-ne",
"download" => "Descarcă",
"downloadMix" => "Descarcă mixul",
"plays" => "Ascultări",
"play" => "Ascultă",
"contactus" => "Contactați-ne",
"allrightsreserved" => "Toate drepturile rezervate.",
"mixshows" => "Amestec",
"mixshow" => "Mixshow",
"mixshowName" => "Nume Mixshow",
"mixshows" => "Emisiuni de amestec",
"mixshow" => "Emisiune de amestec",
"mixshowName" => "Numele mixshow-ului",
"share" => "Distribuie",
"sahrethismix" => "Distribuie acest mix",
"sharethismixshow" => "Distribuie acest spectacol mixt",
"sharethismixshow" => "Distribuie acest mixshow",
"rss" => "RSS",
"year" => "An",
"sharetotwitter" => "Distribuie pe X (anterior Twitter)",
"sharetotwitter" => "Distribuie pe X (fostul Twitter)",
"sharetofb" => "Distribuie pe Facebook",
"sharetoig" => "Distribuie pe Instagram",
"copyurl" => "Copiază URL-ul",
"copyurl" => "Copiază URL",
"urlcopiedtoclipboard" => "URL copiat în clipboard",
"failedtocopyurl" => "Copierea adresei URL a eșuat",
"failedtocopyurl" => "Eșec la copierea URL-ului",
"name" => "Nume",
"username" => "Nume",
"username" => "Nume utilizator",
"logout" => "Deconectare",
"upload" => "Incarca",
"upload" => "Încărcare",
"loginToVerifyEmail" => "Trebuie să fiți conectat pentru a verifica adresa dvs. de email.",
"loginToUploadMix" => "Trebuie să fiți conectat pentru a încărca un mix.",
"verificationCodeRequired" => "Codul de verificare este necesar.",
"recordedDate" => "Data înregistrării",
"noUploadedFileFound" => "Nu a fost găsit niciun fișier încărcat. Vă rugăm să încărcați un fișier mix.",
"mixTitleRequired" => "Titlul mixului este necesar.",
"errorUploadCDN" => "Eroare la încărcarea fișierului pe CDN: ",
"errorSavingMixDB" => "Eroare la salvarea mixului în baza de date.",
"uploadedPendingApproval" => "Mixul a fost încărcat cu succes și așteaptă aprobat.",
"uploadHeader1" => "Încărcați mixul dvs. la DJ-ii din Utah",
"uploadAlertHeader" => "Informații importante despre încărcare",
"uploadAlert1" => "DJ-ii din Utah este în principal un proiect arhivistic dedicat conservării istoriei și culturii DJ-ilor EDM din Utah. Încărcările dvs. contribuie la această înregistrare istorică.",
"uploadHeader2" => "Înainte de a încărca",
"uploadAlert2" => "Verificați că toți DJ-ii implicați sunt listați în baza noastră de date. Dacă un DJ nu este listat, trebuie să fie adăugat și aprobat înainte de a-l încărca.",
"uploadAlert3" => "Verificați că genurile adecvate sunt disponibile pentru mixul dvs. Genurile noi necesită aprobat înainte de a putea fi folosite.",
"uploadAlert4" => "Puteți trimite cereri pentru DJ i noi sau genuri prin setările profilului dvs.",
"uploadProcess" => "Procesul de încărcare",
"uploadProcess1" => "Încărcați fișierul mixului (format MP3 sau ZIP)",
"uploadProcess2" => "Introduceți detalii despre mix, inclusiv titlul, descrierea și data înregistrării",
"uploadProcess3" => "Selectați genurile și DJ-ii relevanți",
"uploadProcess4" => "Trimiteți pentru revizuire",
"uploadAMix" => "Încărcați un mix",
"uploadSelectMix" => "Selectați fișierul mixului (MP3 sau ZIP)",
"uploadMaxFileSize" => "Dimensiunea maximă a fișierului: 500MB",
"uploadFile" => "Încărcați fișier",
"uploadSelectGenres" => "Selectați genuri (tastați pentru a căuta)",
"uploadSelectDJSMax3" => "Selectați DJ-i (Maximum 3)",
"uploadSubmitMix" => "Trimiteți mixul",
"uploadSelectDJ1" => "Selectați DJ 1",
"uploadSelectDJ2" => "Selectați DJ 2 (opțional)",
"uploadSelectDJ3" => "Selectați DJ 3 (opțional)",
"userAlreadyExists" => "Utilizatorul există deja.",
"allFieldsRequired" => "Toate câmpurile sunt obligatorii.",
"passwordsDoNotMatch" => "Parolele nu se potrivesc.",
"invalidEmail" => "Format de email invalid.",
"invalidUsername" => "Format de nume de utilizator invalid.",
"verifyEmailAddress" => "Verificați adresa dumneavoastră de email",
"registerThankYou" => "Vă mulțumim pentru înregistrarea la ",
"registerVerifyEmail" => "Vă rugăm să verificați adresa dvs. de email făcând clic pe linkul de mai jos sau introducând codul de verificare în profilul dvs.:",
"registerVerifyCodeIs" => "Codul dvs. de verificare este: ",
"registerVerifyTimeout" => "Acest cod va expira în 15 minute.",
"password" => "Parolă",
"rememberMe" => "Amintește-ți de mine",
"forgotPassword" => "Ați uitat parola",
"dontHaveAccount" => "Nu aveți un cont?",
"signUp" => "Înscriere",
"passwordResetSent" => "Dacă emailul există în sistemul nostru, a fost trimis un link de resetare a parolei.",
"passwordResetRequested" => "Ați solicitat resetarea parolei. Vă rugăm să faceți clic pe linkul de mai jos pentru a reseta parola:",
"passwordResetUnrequested" => "Dacă nu ați solicitat acest lucru, vă rugăm să ignorați acest email. Acest link va expira în 15 minute.",
"emailaddressEnter" => "Introduceți adresa dvs. de email",
"messageSentSuccess" => "Mesaj trimis cu succes.",
"messageSentError" => "A apărut o eroare în timpul trimiterii mesajului.",
"contactUs2" => "Ne-ar plăcea să auzim de la tine. Trimiteți-ne un mesaj și vom răspunde cât mai curând posibil.",
"messageSendUs" => "Trimiteți-ne un mesaj",
"messageSend" => "Trimite mesajul",
"passwordReset" => "Resetare parolă",
"enterYourUsername" => "Introduceți numele dvs. de utilizator",
"newPassword" => "Parolă nouă",
"confirmPassword" => "Confirmare parolă nouă",
"passwordResetSuccess" => "Parola dvs. a fost resetată cu succes. Vă rugăm să vă conectați cu noua parolă.",
"enterEmailAddressPlease" => "Vă rugăm să introduceți adresa dvs. de email.",
"emailInvalid" => "Format de email invalid.",
"passwordMismatch" => "Parolele nu se potrivesc.",
"passwordRequirements" => "Parola trebuie să aibă cel puțin 8 caractere și să includă litere mari, mici și un număr.",
"resetExpiredInvalid" => "Cod de resetare a parolei invalid sau expirat.",
"resetExpired" => "Codul de resetare a parolei a expirat.",
"codeCredsInvalid" => "Credențiale sau cod de verificare invalid.",
"change" => "Schimbare",
"changePicture" => "Schimbă imaginea",
"verify" => "Verificare",
"createdUsing" => "Creat folosind",
"djmixhostingsoftware" => "Software de găzduire a mixurilor DJ",
"privacyPolicy" => "Politica de confidențialitate",
"termsAndConditions" => "Termeni și condiții",
];

View file

@ -5,72 +5,151 @@ return [
'desc' => 'Описание',
'userProfile' => "Профиль пользователя",
'user' => 'Пользователь',
'home' => 'Домашний',
'home' => 'Главная',
'djName' => 'Имя DJ',
'email' => 'Почта',
'email' => 'Электронная почта',
'location' => 'Местоположение',
'bio' => 'Био',
'bio' => 'Биография',
'submit' => 'Отправить',
'login' => 'Логин',
'login' => 'Вход',
'message' => 'Сообщение',
'follow' => 'Подписаться',
'djs' => 'DJ',
"djNotFound" => "Не удалось загрузить DJ; либо DJ не найден или этот DJ является приватным.",
'follow' => 'Следить',
'djs' => 'DJ-еи',
"djNotFound" => "Не удалось загрузить DJ; либо DJ не найден, либо он закрыт.",
"notfound" => "Страница не найдена",
"genre" => "Жанр",
"genres" => "Жанры",
"genreNotFound" => "Не удалось загрузить жанр; либо жанр не найден, был пуст, или этот жанр является приватным.",
"mix-count" => "Кол-во миксов",
"genreNotFound" => "Не удалось загрузить жанр; либо жанр не найден, пуст, либо он закрыт.",
"mix-count" => "Количество миксов",
"mixes" => "Миксы",
"mix" => "Микс",
"mixNotFound" => "Не удалось загрузить смесь; либо смесь не найдена, либо эта смесь является приватной.",
"mixshowNotFound" => "Не удалось загрузить mixshow; либо mixshow не найден, либо эта mixshow является приватной.",
"mixName" => "Название микса",
"mixDescription" => "Описание смеси",
"mixLength" => "Длина микса",
"mixGenre" => "Смешанный жанр",
"view" => "Вид",
"mixname" => "Название микса",
"search" => "Искать",
"mixNotFound" => "Не удалось загрузить микс; либо микс не найден, пуст, либо он закрыт.",
"mixshowNotFound" => "Не удалось загрузить микшоу; либо микшоу не найдено, пусто, либо оно закрыто.",
"mixName" => "Имя микса",
"mixDescription" => "Описание микса",
"mixLength" => "Длительность микса",
"mixGenre" => "Жанр микса",
"view" => "Просмотр",
"mixname" => "Имя микса",
"search" => "Поиск",
"searchResults" => "Результаты поиска",
"searchResultsFor" => "Результаты поиска для",
"searchResultsFound" => "Найдены результаты поиска",
"tracklist" => "Список треков",
"searchResultsFound" => "Найдено результатов поиска",
"tracklist" => "Треклист",
"lastupdated" => "Последнее обновление",
"duration" => "Продолжительность",
"hour" => "час",
"hours" => "часов",
"hours" => "часа",
"minute" => "минута",
"minutes" => "минуты",
"second" => "секунда",
"seconds" => "секунд",
"seconds" => "секунды",
"by" => "от",
"added" => "Добавлено",
"recorded" => "Записанные",
"audioNotSupported" => "Ваш браузер не поддерживает элемент звука.",
"recorded" => "Записано",
"audioNotSupported" => "Ваш браузер не поддерживает элемент аудио.",
"downloads" => "Загрузки",
"download" => "Скачать",
"downloadMix" => "Скачать Mix",
"plays" => "Играет",
"download" => "Загрузить",
"downloadMix" => "Загрузить микс",
"plays" => "Прослушивания",
"play" => "Играть",
"contactus" => "Свяжитесь с нами",
"allrightsreserved" => "Все права защищены.",
"mixshows" => "Смешанные шоу",
"mixshow" => "Mixshow",
"mixshowName" => "Название Mixshow",
"mixshows" => "Микшоу",
"mixshow" => "Микшоу",
"mixshowName" => "Имя микшоу",
"share" => "Поделиться",
"sahrethismix" => "Поделиться этой смесью",
"sharethismixshow" => "Поделиться этой смесительной шоу",
"rss" => "RSS-лента",
"sahrethismix" => "Поделиться этим миксом",
"sharethismixshow" => "Поделиться этим микшоу",
"rss" => "RSS",
"year" => "Год",
"sharetotwitter" => "Поделиться с X (ранее Twitter)",
"sharetotwitter" => "Поделиться в X (ранее Twitter)",
"sharetofb" => "Поделиться на Facebook",
"sharetoig" => "Поделиться в Instagram",
"copyurl" => "Копировать URL",
"copyurl" => "Скопировать URL",
"urlcopiedtoclipboard" => "URL скопирован в буфер обмена",
"failedtocopyurl" => "Не удалось скопировать URL",
"name" => "Наименование",
"name" => "Имя",
"username" => "Имя пользователя",
"logout" => "Выйти",
"upload" => "Выгрузить",
"logout" => "Выход",
"upload" => "Загрузить",
"loginToVerifyEmail" => "Вы должны войти в систему, чтобы подтвердить свою электронную почту.",
"loginToUploadMix" => "Вы должны войти в систему, чтобы загрузить микс.",
"verificationCodeRequired" => "Код подтверждения обязателен.",
"recordedDate" => "Дата записи",
"noUploadedFileFound" => "Не найден загруженный файл. Пожалуйста, загрузите файл микса.",
"mixTitleRequired" => "Название микса обязательно.",
"errorUploadCDN" => "Ошибка при загрузке файла на CDN: ",
"errorSavingMixDB" => "Ошибка при сохранении микса в базе данных.",
"uploadedPendingApproval" => "Микс успешно загружен и ожидает одобрения.",
"uploadHeader1" => "Загрузите свой микс в DJ из Юты",
"uploadAlertHeader" => "Важная информация о загрузке",
"uploadAlert1" => "DJ из Юты - это в первую очередь архивный проект, посвященный сохранению истории и культуры EDM DJ в Юте. Ваши загрузки делают этот исторический отчет.",
"uploadHeader2" => "Перед загрузкой",
"uploadAlert2" => "Убедитесь, что все DJ, участвующие, указаны в нашей базе данных. Если DJ не указан, его необходимо добавить и одобрить перед загрузкой.",
"uploadAlert3" => "Проверьте, что соответствующие жанры доступны для вашего микса. Новые жанры требуют одобрения, прежде чем их можно будет использовать.",
"uploadAlert4" => "Вы можете подать заявку на новых DJ или жанры через настройки вашего профиля.",
"uploadProcess" => "Процесс загрузки",
"uploadProcess1" => "Загрузите файл микса (формат MP3 или ZIP)",
"uploadProcess2" => "Введите детали микса, включая название, описание и дату записи",
"uploadProcess3" => "Выберите соответствующие жанры и DJ",
"uploadProcess4" => "Отправить на проверку",
"uploadAMix" => "Загрузить микс",
"uploadSelectMix" => "Выберите файл микса (MP3 или ZIP)",
"uploadMaxFileSize" => "Максимальный размер файла: <b>500</b> МБ",
"uploadFile" => "Загрузить файл",
"uploadSelectGenres" => "Выберите жанры (введите для поиска)",
"uploadSelectDJSMax3" => "Выберите DJ (максимум 3)",
"uploadSubmitMix" => "Отправить микс",
"uploadSelectDJ1" => "Выберите DJ 1",
"uploadSelectDJ2" => "Выберите DJ 2 (по желанию)",
"uploadSelectDJ3" => "Выберите DJ 3 (по желанию)",
"userAlreadyExists" => "Пользователь уже существует.",
"allFieldsRequired" => "Все поля обязательны для заполнения.",
"passwordsDoNotMatch" => "Пароли не совпадают.",
"invalidEmail" => "Неверный формат электронной почты.",
"invalidUsername" => "Неверный формат имени пользователя.",
"verifyEmailAddress" => "Подтвердите свой адрес электронной почты",
"registerThankYou" => "Спасибо за регистрацию на ",
"registerVerifyEmail" => "Пожалуйста, подтвердите свой адрес электронной почты, нажав на ссылку ниже или введя код подтверждения в вашем профиле:",
"registerVerifyCodeIs" => "Ваш код подтверждения: ",
"registerVerifyTimeout" => "Этот код истечет через 15 минут.",
"password" => "Пароль",
"rememberMe" => "Запомнить меня",
"forgotPassword" => "Забыли пароль",
"dontHaveAccount" => "Нет аккаунта?",
"signUp" => "Зарегистрироваться",
"passwordResetSent" => "Если электронная почта есть в нашей системе, ссылка для сброса пароля была отправлена.",
"passwordResetRequested" => "Вы запросили сброс пароля. Пожалуйста, нажмите на ссылку ниже, чтобы сбросить пароль:",
"passwordResetUnrequested" => "Если вы не запрашивали это, игнорируйте это сообщение. Эта ссылка истечет через 15 минут.",
"emailaddressEnter" => "Введите ваш адрес электронной почты",
"messageSentSuccess" => "Сообщение успешно отправлено.",
"messageSentError" => "Произошла ошибка при отправке сообщения.",
"contactUs2" => "Мы будем рады услышать от вас. Отправьте нам сообщение и мы ответим как можно скорее.",
"messageSendUs" => "Отправьте нам сообщение",
"messageSend" => "Отправить сообщение",
"passwordReset" => "Сбросить пароль",
"enterYourUsername" => "Введите ваше имя пользователя",
"newPassword" => "Новый пароль",
"confirmPassword" => "Подтвердите новый пароль",
"passwordResetSuccess" => "Ваш пароль был успешно сброшен. Пожалуйста, войдите с новым паролем.",
"enterEmailAddressPlease" => "Пожалуйста, введите ваш адрес электронной почты.",
"emailInvalid" => "Неверный формат электронной почты.",
"passwordMismatch" => "Пароли не совпадают.",
"passwordRequirements" => "Пароль должен содержать не менее 8 символов и включать заглавные и строчные буквы, а также цифры.",
"resetExpiredInvalid" => "Неверный или истекший код сброса пароля.",
"resetExpired" => "Код сброса пароля истек.",
"codeCredsInvalid" => "Неверные учетные данные или код подтверждения.",
"change" => "Изменить",
"changePicture" => "Изменить изображение",
"verify" => "Подтвердить",
"createdUsing" => "Создано с использованием",
"djmixhostingsoftware" => "Программное обеспечение для хостинга DJ-миксов",
"privacyPolicy" => "Политика конфиденциальности",
"termsAndConditions" => "Условия и положения",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
'welcome' => 'Добродошли на нашу веб страницу!',
'description' => 'Ово је опис на енглеском.',
'desc' => 'Опис',
'userProfile' => "Кориснички профил",
'user' => 'Корисник',
'home' => 'Почетна',
'djName' => 'Име DJ-а',
'email' => 'Е-пошта',
'location' => 'Локација',
'bio' => 'Биографија',
'submit' => 'Поднесите',
'login' => 'Пријава',
'message' => 'Порука',
'follow' => 'Прати',
'djs' => 'DJ-еви',
"djNotFound" => "Није могуће учитати DJ-а; или DJ није пронађен или је овај DJ приватан.",
"notfound" => "Страница није пронађена",
"genre" => "Жанр",
"genres" => "Жанрови",
"genreNotFound" => "Није могуће учитати жанр; или жанр није пронађен, био је празан, или је овај жанр приватан.",
"mix-count" => "Број микса",
"mixes" => "Миксови",
"mix" => "Микс",
"mixNotFound" => "Није могуће учитати микс; или микс није пронађен, био је празан, или је овај микс приватан.",
"mixshowNotFound" => "Није могуће учитати микшоу; или микшоу није пронађен, био је празан, или је овај микшоу приватан.",
"mixName" => "Име микса",
"mixDescription" => "Опис микса",
"mixLength" => "Дужина микса",
"mixGenre" => "Жанр мика",
"view" => "Прегледај",
"mixname" => "Име микса",
"search" => "Претрага",
"searchResults" => "Резултати претраге",
"searchResultsFor" => "Резултати претраге за",
"searchResultsFound" => "Пронађени резултати претраге",
"tracklist" => "Трака",
"lastupdated" => "Последње ажурирање",
"duration" => "Трајање",
"hour" => "сат",
"hours" => "сати",
"minute" => "минут",
"minutes" => "минуте",
"second" => "секунда",
"seconds" => "секунди",
"by" => "по",
"added" => "Додато",
"recorded" => "Записано",
"audioNotSupported" => "Ваш прегледач не подржава аудио елемент.",
"downloads" => "Преузимања",
"download" => "Преузми",
"downloadMix" => "Преузми микс",
"plays" => "Плаи",
"play" => "Плаи",
"contactus" => "Контактирајте нас",
"allrightsreserved" => "Сва права задржана.",
"mixshows" => "Микшоу",
"mixshow" => "Микшоу",
"mixshowName" => "Име микшоу",
"share" => "Подели",
"sahrethismix" => "Поделите овај микс",
"sharethismixshow" => "Поделите ову микшоу",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "Година",
"sharetotwitter" => "Подели на X (преименован у Твитер)",
"sharetofb" => "Подели на Фејсбук",
"sharetoig" => "Подели на Инстаграм",
"copyurl" => "Копирај URL",
"urlcopiedtoclipboard" => "URL је копиран у клипборд",
"failedtocopyurl" => "Неуспело копирање URL-а",
"name" => "Име",
"username" => "Корисничко име",
"logout" => "Одјава",
"upload" => "Отпремите",
"loginToVerifyEmail" => "Морате бити пријављени да бисте потврдили вашу е-пошту.",
"loginToUploadMix" => "Морате бити пријављени да бисте отпремили микс.",
"verificationCodeRequired" => "Код за верификацију је обавезан.",
"recordedDate" => "Датум снимања",
"noUploadedFileFound" => "Није пронађен ниједан отпремљен фајл. Молимо вас да отпремите микс фајл.",
"mixTitleRequired" => "Назив микса је обавезан.",
"errorUploadCDN" => "Грешка при отпремању фајла на CDN: ",
"errorSavingMixDB" => "Грешка при чувању микса у бази података.",
"uploadedPendingApproval" => "Микс је успешно отпремљен и чека одобрење.",
"uploadHeader1" => "Отпремите свој микс на DJ-еве из Јуте",
"uploadAlertHeader" => "Важно информације о отпремању",
"uploadAlert1" => "DJ-еви из Јуте је пре свега архива пројекат посвећен очувању историје и културе EDM DJ-ева у Јути. Ваши отпремљени материјали доприносе овом историјском запису.",
"uploadHeader2" => "Пре него што отпремите",
"uploadAlert2" => "Проверите да ли су сви DJ-еви укључени у нашој бази података. Ако DJ није укључен, мора бити додат и одобрен пре отпремања.",
"uploadAlert3" => "Проверите да ли су одговарајући жанрови доступни за ваш микс. Нови жанрови захтевају одобрење пре него што се могу користити.",
"uploadAlert4" => "Можете поднети захтеве за нове DJ-еве или жанрове путем подешавања вашег профила.",
"uploadProcess" => "Процес отпремања",
"uploadProcess1" => "Отпремите свој микс фајл (MP3 или ZIP формат)",
"uploadProcess2" => "Унесите детаље о миксу, укључујући назив, опис и датум снимања",
"uploadProcess3" => "Изаберите релевантне жанрове и DJ-еве",
"uploadProcess4" => "Поднесите на преглед",
"uploadAMix" => "Отпремите микс",
"uploadSelectMix" => "Изаберите микс фајл (MP3 или ZIP)",
"uploadMaxFileSize" => "Максимална величина фајла: <b>500</b> МБ",
"uploadFile" => "Отпремите фајл",
"uploadSelectGenres" => "Изаберите жанрове (наведите за претрагу)",
"uploadSelectDJSMax3" => "Изаберите DJ-а (Максимум 3)",
"uploadSubmitMix" => "Поднесите микс",
"uploadSelectDJ1" => "Изаберите DJ 1",
"uploadSelectDJ2" => "Изаберите DJ 2 (опционо)",
"uploadSelectDJ3" => "Изаберите DJ 3 (опционо)",
"userAlreadyExists" => "Корисник већ постоји.",
"allFieldsRequired" => "Сва поља су обавезна.",
"passwordsDoNotMatch" => "Лозинке се не поклапају.",
"invalidEmail" => "Невалидан формат е-поште.",
"invalidUsername" => "Невалидан формат корисничког имена.",
"verifyEmailAddress" => "Потврдите вашу е-пошту",
"registerThankYou" => "Хвала што сте се регистровали на ",
"registerVerifyEmail" => "Молимо вас да потврдите вашу е-пошту кликом на линк испод или уношењем кода за верификацију у ваш профил:",
"registerVerifyCodeIs" => "Ваш код за верификацију је: ",
"registerVerifyTimeout" => "Овај код ће истећи за 15 минута.",
"password" => "Лозинка",
"rememberMe" => "Запамти ме",
"forgotPassword" => "Заборавили сте лозинку",
"dontHaveAccount" => "Немате налог?",
"signUp" => "Региструј се",
"passwordResetSent" => "Ако е-пошта постоји у нашем систему, линк за ресетовање лозинке је послат.",
"passwordResetRequested" => "Затражили сте ресетовање лозинке. Молимо вас да кликнете на линк испод да бисте ресетовали лозинку:",
"passwordResetUnrequested" => "Ако нисте затражили ово, игноришите ову е-пошту. Овај линк ће истећи за 15 минута.",
"emailaddressEnter" => "Унесите вашу е-пошту",
"messageSentSuccess" => "Порука успешно послата.",
"messageSentError" => "Дошло је до грешке током слања поруке.",
"contactUs2" => "Волели бисмо да чујемо од вас. Пошаљите нам поруку и ми ћемо одговорити у најкраћем могућем року.",
"messageSendUs" => "Пошаљите нам поруку",
"messageSend" => "Пошаљи поруку",
"passwordReset" => "Ресетуј лозинку",
"enterYourUsername" => "Унесите ваше корисничко име",
"newPassword" => "Нова лозинка",
"confirmPassword" => "Потврдите нову лозинку",
"passwordResetSuccess" => "Ваша лозинка је успешно ресетована. Молимо вас да се пријавите са новом лозинком.",
"enterEmailAddressPlease" => "Молимо вас да унесете вашу е-пошту.",
"emailInvalid" => "Невалидан формат е-поште.",
"passwordMismatch" => "Лозинке се не поклапају.",
"passwordRequirements" => "Лозинка мора имати најмање 8 знакова и укључивати велика и мала слова, као и број.",
"resetExpiredInvalid" => "Невалидан или истекао код за ресетовање лозинке.",
"resetExpired" => "Код за ресетовање лозинке је истекао.",
"codeCredsInvalid" => "Невалидне акредитиве или код за верификацију.",
"change" => "Промени",
"changePicture" => "Промени слику",
"verify" => "Потврдите",
"createdUsing" => "Креирано коришћењем",
"djmixhostingsoftware" => "Софтеар за хостовање DJ микса",
"privacyPolicy" => "Политика приватности",
"termsAndConditions" => "Услови и одредбе",
];

View file

@ -1,41 +1,41 @@
<?php
return [
'welcome' => 'Välkommen till vår webbplats!',
'welcome' => 'Välkommen till vår hemsida!',
'description' => 'Detta är en beskrivning på engelska.',
'desc' => 'Beskrivning',
'userProfile' => "Användarprofil",
'user' => 'Användare',
'home' => 'Hem',
'djName' => 'DJ namn',
'djName' => 'DJ-namn',
'email' => 'E-post',
'location' => 'Plats',
'bio' => 'Bio',
'bio' => 'Biografi',
'submit' => 'Skicka',
'login' => 'Inloggning',
'login' => 'Logga in',
'message' => 'Meddelande',
'follow' => 'Följ',
'djs' => 'DJ',
"djNotFound" => "Kunde inte ladda DJ; antingen hittades DJ:n eller så är DJ:n privat.",
"notfound" => "Sidan hittades inte",
'djs' => 'DJ:s',
"djNotFound" => "Kunde inte ladda DJ; antingen hittades inte DJ:n eller så är denna DJ privat.",
"notfound" => "Sidan kunde inte hittas",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Kunde inte ladda genr; antingen hittades genren, var tom, eller så är denna genre privat.",
"mix-count" => "Antal blandningar",
"mixes" => "Blandningar",
"mix" => "Blanda",
"mixNotFound" => "Kunde inte ladda mix; antingen hittades blandningen inte, var tom, eller denna blandning är privat.",
"mixshowNotFound" => "Kunde inte ladda mixshow; antingen hittades inte mixshowen, var tom, eller så är denna mixshow privat.",
"mixName" => "Blanda namn",
"mixDescription" => "Blanda beskrivning",
"mixLength" => "Blanda längd",
"mixGenre" => "Blanda genre",
"genres" => "Genrer",
"genreNotFound" => "Gick inte att ladda genre; antingen hittades inte genren, var tom, eller så är denna genre privat.",
"mix-count" => "Mixantal",
"mixes" => "Mixar",
"mix" => "Mix",
"mixNotFound" => "Gick inte att ladda mix; antingen hittades inte mixen, var tom, eller så är denna mix privat.",
"mixshowNotFound" => "Gick inte att ladda mixshow; antingen hittades inte mixshowen, var tom, eller så är denna mixshow privat.",
"mixName" => "Mixnamn",
"mixDescription" => "Mixbeskrivning",
"mixLength" => "Mixlängd",
"mixGenre" => "Mixgenre",
"view" => "Visa",
"mixname" => "Blanda namn",
"mixname" => "Mixnamn",
"search" => "Sök",
"searchResults" => "Sök resultat",
"searchResults" => "Sökresultat",
"searchResultsFor" => "Sökresultat för",
"searchResultsFound" => "Sökresultat hittades",
"tracklist" => "Spårlista",
"tracklist" => "Låtlista",
"lastupdated" => "Senast uppdaterad",
"duration" => "Varaktighet",
"hour" => "timme",
@ -46,31 +46,110 @@ return [
"seconds" => "sekunder",
"by" => "av",
"added" => "Tillagd",
"recorded" => "Inspelat",
"recorded" => "Inspelad",
"audioNotSupported" => "Din webbläsare stöder inte ljudelementet.",
"downloads" => "Nedladdningar",
"download" => "Hämta",
"download" => "Ladda ner",
"downloadMix" => "Ladda ner mix",
"plays" => "Pjäser",
"plays" => "Spelningar",
"play" => "Spela",
"contactus" => "Kontakta oss",
"allrightsreserved" => "Alla rättigheter reserverade.",
"mixshows" => "Blandningsserier",
"allrightsreserved" => "Alla rättigheter förbehållna.",
"mixshows" => "Mixshower",
"mixshow" => "Mixshow",
"mixshowName" => "Mixseriens namn",
"mixshowName" => "Mixshow namn",
"share" => "Dela",
"sahrethismix" => "Dela denna mix",
"sharethismixshow" => "Dela denna mixshow",
"rss" => "RSS",
"year" => "År",
"sharetotwitter" => "Dela till X (tidigare Twitter)",
"sharetofb" => "Dela Facebook",
"sharetoig" => "Dela Instagram",
"sharetofb" => "Dela till Facebook",
"sharetoig" => "Dela till Instagram",
"copyurl" => "Kopiera URL",
"urlcopiedtoclipboard" => "URL kopierad till urklipp",
"failedtocopyurl" => "Kunde inte kopiera URL",
"failedtocopyurl" => "Kopiering av URL misslyckades",
"name" => "Namn",
"username" => "Användarnamn",
"logout" => "Utloggning",
"logout" => "Logga ut",
"upload" => "Ladda upp",
"loginToVerifyEmail" => "Du måste vara inloggad för att verifiera din e-post.",
"loginToUploadMix" => "Du måste vara inloggad för att ladda upp en mix.",
"verificationCodeRequired" => "Verifieringskod krävs.",
"recordedDate" => "Inspelningsdatum",
"noUploadedFileFound" => "Ingen uppladdad fil hittades. Var vänlig ladda upp en mixfil.",
"mixTitleRequired" => "Mixnamn krävs.",
"errorUploadCDN" => "Fel vid uppladdning av fil till CDN: ",
"errorSavingMixDB" => "Fel vid sparande av mix till databasen.",
"uploadedPendingApproval" => "Mixen har laddats upp framgångsrikt och väntar på godkännande.",
"uploadHeader1" => "Ladda upp din mix till Utahs DJs",
"uploadAlertHeader" => "Viktig uppladdningsinformation",
"uploadAlert1" => "Utahs DJs är främst ett arkivprojekt som ägnar sig åt att bevara historien och kulturen av EDM DJs i Utah. Dina uppladdningar bidrar till denna historiska dokumentation.",
"uploadHeader2" => "Innan du laddar upp",
"uploadAlert2" => "Verifiera att alla involverade DJs är listade i vår databas. Om en DJ inte är listad måste de läggas till och godkännas innan uppladdning.",
"uploadAlert3" => "Kontrollera att lämpliga genrer är tillgängliga för din mix. Nya genrer kräver godkännande innan de kan användas.",
"uploadAlert4" => "Du kan skicka nya DJ- eller genreförfrågningar genom dina profilinställningar.",
"uploadProcess" => "Uppladdningsprocess",
"uploadProcess1" => "Ladda upp din mixfil (MP3 eller ZIP-format)",
"uploadProcess2" => "Ange mixdetaljer, inklusive titel, beskrivning och inspelningsdatum",
"uploadProcess3" => "Välj relevanta genrer och DJs",
"uploadProcess4" => "Skicka för granskning",
"uploadAMix" => "Ladda upp en mix",
"uploadSelectMix" => "Välj mixfil (MP3 eller ZIP)",
"uploadMaxFileSize" => "Max filstorlek: 500MB",
"uploadFile" => "Ladda upp fil",
"uploadSelectGenres" => "Välj genrer (skriv för att söka)",
"uploadSelectDJSMax3" => "Välj DJs (Max 3)",
"uploadSubmitMix" => "Skicka mix",
"uploadSelectDJ1" => "Välj DJ 1",
"uploadSelectDJ2" => "Välj DJ 2 (valfritt)",
"uploadSelectDJ3" => "Välj DJ 3 (valfritt)",
"userAlreadyExists" => "Användaren finns redan.",
"allFieldsRequired" => "Alla fält är obligatoriska.",
"passwordsDoNotMatch" => "Lösenorden matchar inte.",
"invalidEmail" => "Ogiltigt e-postformat.",
"invalidUsername" => "Ogiltigt användarnamnformat.",
"verifyEmailAddress" => "Verifiera din e-postadress",
"registerThankYou" => "Tack för att du registrerade dig på ",
"registerVerifyEmail" => "Vänligen verifiera din e-postadress genom att klicka på länken nedan eller genom att ange verifieringskoden i din profil:",
"registerVerifyCodeIs" => "Din verifieringskod är: ",
"registerVerifyTimeout" => "Denna kod går ut om 15 minuter.",
"password" => "Lösenord",
"rememberMe" => "Kom ihåg mig",
"forgotPassword" => "Glömt lösenordet",
"dontHaveAccount" => "Har du inget konto?",
"signUp" => "Registrera dig",
"passwordResetSent" => "Om e-posten finns i vårt system har en länk för att återställa lösenordet skickats.",
"passwordResetRequested" => "Du har begärt att återställa ditt lösenord. Vänligen klicka på länken nedan för att återställa ditt lösenord:",
"passwordResetUnrequested" => "Om du inte begärde detta, ignorera detta e-postmeddelande. Denna länk går ut om 15 minuter.",
"emailaddressEnter" => "Ange din e-postadress",
"messageSentSuccess" => "Meddelandet skickades framgångsrikt.",
"messageSentError" => "Ett fel inträffade vid skickandet av meddelandet.",
"contactUs2" => "Vi vill gärna höra från dig. Skicka oss ett meddelande så svarar vi så snart som möjligt.",
"messageSendUs" => "Skicka oss ett meddelande",
"messageSend" => "Skicka meddelande",
"passwordReset" => "Återställ lösenord",
"enterYourUsername" => "Ange ditt användarnamn",
"newPassword" => "Nytt lösenord",
"confirmPassword" => "Bekräfta nytt lösenord",
"passwordResetSuccess" => "Ditt lösenord har återställts framgångsrikt. Vänligen logga in med ditt nya lösenord.",
"enterEmailAddressPlease" => "Vänligen ange din e-postadress.",
"emailInvalid" => "Ogiltigt e-postformat.",
"passwordMismatch" => "Lösenorden matchar inte.",
"passwordRequirements" => "Lösenordet måste vara minst 8 tecken långt och inkludera versaler och gemener, samt ett nummer.",
"resetExpiredInvalid" => "Ogiltig eller utgått lösenordsåterställningskod.",
"resetExpired" => "Lösenordsåterställningskoden har gått ut.",
"codeCredsInvalid" => "Ogiltiga uppgifter eller verifieringskod.",
"change" => "Ändra",
"changePicture" => "Ändra bild",
"verify" => "Verkställa",
"createdUsing" => "Skapad med hjälp av",
"djmixhostingsoftware" => "DJ Mix Värdtjänstprogramvara",
"privacyPolicy" => "Integritetspolicy",
"termsAndConditions" => "Villkor",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
'welcome' => 'Web Sitemize Hoş Geldiniz!',
'description' => 'Bu, İngilizce\'de bir tanımdır.',
'desc' => 'ıklama',
'userProfile' => "Kullanıcı Profili",
'user' => 'Kullanıcı',
'home' => 'Anasayfa',
'djName' => 'DJ Adı',
'email' => 'E-posta',
'location' => 'Konum',
'bio' => 'Biyografi',
'submit' => 'Gönder',
'login' => 'Giriş',
'message' => 'Mesaj',
'follow' => 'Takip Et',
'djs' => 'DJ\'ler',
"djNotFound" => "DJ yüklenemedi; ya DJ bulunamadı ya da bu DJ özel.",
"notfound" => "Sayfa bulunamadı",
"genre" => "Tür",
"genres" => "Türler",
"genreNotFound" => "Tür yüklenemedi; ya tür bulunamadı, ya boştu ya da bu tür özel.",
"mix-count" => "Mix Sayısı",
"mixes" => "Mix'ler",
"mix" => "Karıştır",
"mixNotFound" => "Mix yüklenemedi; ya mix bulunamadı, ya boştu ya da bu mix özel.",
"mixshowNotFound" => "Mixshow yüklenemedi; ya mixshow bulunamadı, ya boştu ya da bu mixshow özel.",
"mixName" => "Mix Adı",
"mixDescription" => "Mix ıklaması",
"mixLength" => "Mix Süresi",
"mixGenre" => "Mix Türü",
"view" => "Görüntüle",
"mixname" => "Mix Adı",
"search" => "Ara",
"searchResults" => "Arama Sonuçları",
"searchResultsFor" => "Arama Sonuçları için",
"searchResultsFound" => "Bulunan Arama Sonuçları",
"tracklist" => "Parça Listesi",
"lastupdated" => "Son Güncellenme",
"duration" => "Süre",
"hour" => "saat",
"hours" => "saatler",
"minute" => "dakika",
"minutes" => "dakikalar",
"second" => "sanaye",
"seconds" => "saniyeler",
"by" => "tarafından",
"added" => "Eklendi",
"recorded" => "Kaydedildi",
"audioNotSupported" => "Tarayıcınız ses öğesini desteklemiyor.",
"downloads" => "İndirmeler",
"download" => "İndir",
"downloadMix" => "Mix'i İndir",
"plays" => "Dinlemeler",
"play" => "Dinlet",
"contactus" => "Bize Ulaşın",
"allrightsreserved" => "Tüm hakları saklıdır.",
"mixshows" => "Mixshow'lar",
"mixshow" => "Karıştırma Şovu",
"mixshowName" => "Mixshow Adı",
"share" => "Paylaş",
"sahrethismix" => "Bu mix'i paylaş",
"sharethismixshow" => "Bu mixshow'u paylaş",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "Yıl",
"sharetotwitter" => "X'e Paylaş (eski adıyla Twitter)",
"sharetofb" => "Facebook'a Paylaş",
"sharetoig" => "Instagram'a Paylaş",
"copyurl" => "URL'yi Kopyala",
"urlcopiedtoclipboard" => "URL panoya kopyalandı",
"failedtocopyurl" => "URL kopyalanamadı",
"name" => "Ad",
"username" => "Kullanıcı Adı",
"logout" => "Çıkış Yap",
"upload" => "Yükle",
"loginToVerifyEmail" => "E-posta adresinizi doğrulamak için giriş yapmalısınız.",
"loginToUploadMix" => "Mix yüklemek için giriş yapmalısınız.",
"verificationCodeRequired" => "Doğrulama kodu gereklidir.",
"recordedDate" => "Kaydedilen Tarih",
"noUploadedFileFound" => "Yüklenmiş dosya bulunamadı. Lütfen bir mix dosyası yükleyin.",
"mixTitleRequired" => "Mix başlığı gereklidir.",
"errorUploadCDN" => "CDN'ye dosya yükleme hatası: ",
"errorSavingMixDB" => "Mix veritabanına kaydedilemedi.",
"uploadedPendingApproval" => "Mix başarıyla yüklendi ve onay bekliyor.",
"uploadHeader1" => "Mixinizi Utah'lı DJ'lere yükleyin",
"uploadAlertHeader" => "Önemli Yükleme Bilgileri",
"uploadAlert1" => "Utah'lı DJ'ler, Utah'daki EDM DJ'lerinin tarihini ve kültürünü korumaya adanmış öncelikle bir arşiv projesidir. Yüklemeleriniz, bu tarihsel kayda katkıda bulunur.",
"uploadHeader2" => "Yüklemeden Önce",
"uploadAlert2" => "İlgili tüm DJ'lerin veritabanımızda listelendiğinden emin olun. Eğer bir DJ listede yoksa, yüklemeden önce eklenmeli ve onaylanmalıdır.",
"uploadAlert3" => "Mix'iniz için uygun türlerin mevcut olduğundan emin olun. Yeni türlerin kullanılabilmesi için onay gereklidir.",
"uploadAlert4" => "Yeni DJ veya tür taleplerini profil ayarlarınızdan gönderebilirsiniz.",
"uploadProcess" => "Yükleme Süreci",
"uploadProcess1" => "Mix dosyanızı yükleyin (MP3 veya ZIP formatında)",
"uploadProcess2" => "Mix detaylarını girin, başlık, açıklama ve kayıt tarihi dahil",
"uploadProcess3" => "İlgili türleri ve DJ'leri seçin",
"uploadProcess4" => "İnceleme için gönder",
"uploadAMix" => "Bir Mix Yükle",
"uploadSelectMix" => "Mix Dosyasını Seçin (MP3 veya ZIP)",
"uploadMaxFileSize" => "Maksimum dosya boyutu: 500MB",
"uploadFile" => "Dosya Yükle",
"uploadSelectGenres" => "Türleri Seçin (arama yapmak için yazın)",
"uploadSelectDJSMax3" => "DJ'leri Seçin (Maksimum 3)",
"uploadSubmitMix" => "Mix'i Gönder",
"uploadSelectDJ1" => "DJ 1'i Seçin",
"uploadSelectDJ2" => "DJ 2'yi Seçin (isteğe bağlı)",
"uploadSelectDJ3" => "DJ 3'ü Seçin (isteğe bağlı)",
"userAlreadyExists" => "Kullanıcı zaten mevcut.",
"allFieldsRequired" => "Tüm alanlar gereklidir.",
"passwordsDoNotMatch" => "Şifreler eşleşmiyor.",
"invalidEmail" => "Geçersiz e-posta formatı.",
"invalidUsername" => "Geçersiz kullanıcı adı formatı.",
"verifyEmailAddress" => "E-posta Adresinizi Doğrulayın",
"registerThankYou" => " kaydolduğunuz için teşekkür ederiz",
"registerVerifyEmail" => "Lütfen e-posta adresinizi aşağıdaki bağlantıya tıklayarak veya profilinize doğrulama kodunu girerek doğrulayın:",
"registerVerifyCodeIs" => "Doğrulama kodunuz: ",
"registerVerifyTimeout" => "Bu kod 15 dakika içinde geçersiz olacaktır.",
"password" => "Şifre",
"rememberMe" => "Beni Hatırla",
"forgotPassword" => "Şifremi Unuttum",
"dontHaveAccount" => "Hesabınız yok mu?",
"signUp" => "Kayıt Ol",
"passwordResetSent" => "E-posta sistemimizde mevcutsa, bir şifre sıfırlama bağlantısı gönderildi.",
"passwordResetRequested" => "Şifrenizi sıfırlamak için bu bağlantıya tıklayın:",
"passwordResetUnrequested" => "Eğer bu istekte bulunmadıysanız, lütfen bu e-postayı dikkate almayın. Bu bağlantı 15 dakika içinde geçersiz olacaktır.",
"emailaddressEnter" => "Lütfen e-posta adresinizi girin",
"messageSentSuccess" => "Mesaj başarıyla gönderildi.",
"messageSentError" => "Mesaj gönderilirken bir hata oluştu.",
"contactUs2" => "Sizden haber almak isteriz. Bize bir mesaj gönderin, en kısa sürede yanıt verelim.",
"messageSendUs" => "Bize Bir Mesaj Gönder",
"messageSend" => "Mesaj Gönder",
"passwordReset" => "Şifreyi Sıfırla",
"enterYourUsername" => "Kullanıcı adınızı girin",
"newPassword" => "Yeni Şifre",
"confirmPassword" => "Yeni Şifreyi Onayla",
"passwordResetSuccess" => "Şifreniz başarıyla sıfırlandı. Lütfen yeni şifrenizle giriş yapın.",
"enterEmailAddressPlease" => "Lütfen e-posta adresinizi girin.",
"emailInvalid" => "Geçersiz e-posta formatı.",
"passwordMismatch" => "Şifreler eşleşmiyor.",
"passwordRequirements" => "Şifre en az 8 karakter uzunluğunda olmalı ve büyük ve küçük harfler ile bir rakam içermelidir.",
"resetExpiredInvalid" => "Geçersiz veya süresi dolmuş şifre sıfırlama kodu.",
"resetExpired" => "Şifre sıfırlama kodu süresi dolmuştur.",
"codeCredsInvalid" => "Geçersiz kimlik bilgileri veya doğrulama kodu.",
"change" => "Değiştir",
"changePicture" => "Resmi Değiştir",
"verify" => "Doğrula",
"createdUsing" => "Şu kullanılarak oluşturuldu",
"djmixhostingsoftware" => "DJ Mix Barındırma Yazılımı",
"privacyPolicy" => "Gizlilik Politikası",
"termsAndConditions" => "Kullanım Şartları",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Ласкаво просимо на наш сайт!',
'description' => 'Це опис англійською.',
'welcome' => 'Ласкаво просимо на наш веб-сайт!',
'description' => 'Це опис англійською мовою.',
'desc' => 'Опис',
'userProfile' => "Профіль користувача",
'user' => 'Користувач',
'home' => 'Домашній екран',
'home' => 'Головна',
'djName' => 'Ім\'я DJ',
'email' => 'Ел. пошта',
'location' => 'Місцезнаходження',
'bio' => 'Біо',
'submit' => 'Ввести',
'login' => 'Логін',
'email' => 'Електронна пошта',
'location' => 'Локація',
'bio' => 'Біографія',
'submit' => 'Відправити',
'login' => 'Увійти',
'message' => 'Повідомлення',
'follow' => 'Слідкувати',
'djs' => 'Діс',
"djNotFound" => "Не можливо завантажити DJ; або DJ не знайдено, або цей DJ приватний.",
"notfound" => "Сторінка не знайдена",
'follow' => 'Слідкуйте',
'djs' => 'DJ',
"djNotFound" => "Не вдалося завантажити DJ; або DJ не знайдено, або цей DJ приватний.",
"notfound" => "Сторінку не знайдено",
"genre" => "Жанр",
"genres" => "Genres",
"genreNotFound" => "Не вдалося завантажити жанр, або жанр не було знайдено, було порожнім, або цей жанр є приватним.",
"mix-count" => "Лічильник міксів",
"mixes" => "Змішати",
"mix" => "Змішати",
"mixNotFound" => "Не вдалось завантажити мікс; або суміш не знайдена, була порожня, або ця суміш приватна.",
"mixshowNotFound" => "Не вдалося завантажити шоу, або не знайдене змішування, було порожнім, або це змішання є приватним.",
"mixName" => "Змішане ім'я",
"mixDescription" => "Змішати опис",
"mixLength" => "Довжина мікса",
"mixGenre" => "Мікс-жанр",
"view" => "Дивитись",
"mixname" => "Змішане ім'я",
"genres" => "Жанри",
"genreNotFound" => "Не вдалося завантажити жанр; або жанр не знайдено, був пустим, або цей жанр приватний.",
"mix-count" => "Кількість міксів",
"mixes" => "Мікси",
"mix" => "Мікс",
"mixNotFound" => "Не вдалося завантажити мікс; або мікс не знайдено, був пустим, або цей мікс приватний.",
"mixshowNotFound" => "Не вдалося завантажити мікс-шоу; або мікс-шоу не знайдено, був пустим, або це мікс-шоу приватне.",
"mixName" => "Назва міксу",
"mixDescription" => "Опис міксу",
"mixLength" => "Тривалість міксу",
"mixGenre" => "Жанр міксу",
"view" => "Перегляд",
"mixname" => "Назва міксу",
"search" => "Пошук",
"searchResults" => "Результати пошуку",
"searchResultsFor" => "Результати пошуку для",
"searchResultsFound" => "Результати пошуку знайдено",
"tracklist" => "Список треків",
"lastupdated" => "Востаннє оновлено",
"searchResultsFound" => "Знайдено результатів пошуку",
"tracklist" => "Треклист",
"lastupdated" => "Останнє оновлення",
"duration" => "Тривалість",
"hour" => "година",
"hours" => "годин",
"hours" => "години",
"minute" => "хвилина",
"minutes" => "хвилин",
"minutes" => "хвилини",
"second" => "секунда",
"seconds" => "секунди",
"by" => "за",
"by" => "від",
"added" => "Додано",
"recorded" => "Записано",
"audioNotSupported" => "Ваш браузер не підтримує аудіоелемент.",
"downloads" => "Завантажень",
"download" => "Звантажити",
"downloadMix" => "Завантажити Mix",
"plays" => "Ігри",
"play" => "Відтворити",
"contactus" => "Зв’язатись з нами",
"allrightsreserved" => "Усі права захищені.",
"mixshows" => "Змішані серіали",
"mixshow" => "Mixshow",
"mixshowName" => "Змішане ім'я",
"share" => "Поділитись",
"sahrethismix" => "Поділитися цим мікшуванням",
"sharethismixshow" => "Поділитися цим мікшалом",
"audioNotSupported" => "Ваш браузер не підтримує аудіо елемент.",
"downloads" => "Завантаження",
"download" => "Завантажити",
"downloadMix" => "Завантажити мікс",
"plays" => "Виконання",
"play" => "Виконати",
"contactus" => "Зв'яжіться з нами",
"allrightsreserved" => "Всі права захищені.",
"mixshows" => "Мікс-шоу",
"mixshow" => "Мікс-шоу",
"mixshowName" => "Назва мікс-шоу",
"share" => "Поділитися",
"sahrethismix" => "Поділитися цим міксом",
"sharethismixshow" => "Поділитися цим мікс-шоуном",
"rss" => "RSS",
"year" => "Рік",
"sharetotwitter" => "Поділитись до X (раніше Twitter)",
"sharetofb" => "Поділитись у Facebook",
"sharetotwitter" => "Поділитися з X (раніше Twitter)",
"sharetofb" => "Поділитися у Facebook",
"sharetoig" => "Поділитися в Instagram",
"copyurl" => "Копіювати посилання",
"urlcopiedtoclipboard" => "URL скопійовано до буферу обміну",
"failedtocopyurl" => "Не вдалося скопіювати URL-адресу",
"copyurl" => "Скопіювати URL",
"urlcopiedtoclipboard" => "URL скопійовано в буфер обміну",
"failedtocopyurl" => "Не вдалося скопіювати URL",
"name" => "Ім'я",
"username" => "Ім'я користувача",
"logout" => "Вихід із системи",
"upload" => "Вивантажити",
"logout" => "Вийти",
"upload" => "Завантажити",
"loginToVerifyEmail" => "Вам потрібно увійти, щоб підтвердити свою електронну пошту.",
"loginToUploadMix" => "Вам потрібно увійти, щоб завантажити мікс.",
"verificationCodeRequired" => "Код підтвердження є обов'язковим.",
"recordedDate" => "Дата запису",
"noUploadedFileFound" => "Не знайдено завантажений файл. Будь ласка, завантажте файл міксу.",
"mixTitleRequired" => "Назва міксу є обов'язковою.",
"errorUploadCDN" => "Помилка під час завантаження файлу на CDN: ",
"errorSavingMixDB" => "Помилка збереження міксу в базі даних.",
"uploadedPendingApproval" => "Мікс успішно завантажено та очікує схвалення.",
"uploadHeader1" => "Завантажте свій мікс для DJ з Юти",
"uploadAlertHeader" => "Важлива інформація для завантаження",
"uploadAlert1" => "DJ з Юти - це перш за все архівний проект, присвячений збереженню історії та культури EDM DJ в Юті. Ваші завантаження сприяють цій історичній пам'яті.",
"uploadHeader2" => "Перед завантаженням",
"uploadAlert2" => "Перевірте, що всі залучені DJ внесені до нашої бази даних. Якщо DJ не вказаний, його потрібно додати та затвердити перед завантаженням.",
"uploadAlert3" => "Перевірте, щоб відповідні жанри були доступні для вашого міксу. Нові жанри потребують затвердження перед використанням.",
"uploadAlert4" => "Ви можете подавати нові запити на DJ або жанри через налаштування свого профілю.",
"uploadProcess" => "Процес завантаження",
"uploadProcess1" => "Завантажте файл міксу (формат MP3 або ZIP)",
"uploadProcess2" => "Введіть деталі міксу, включаючи назву, опис та дату запису",
"uploadProcess3" => "Виберіть відповідні жанри та DJ",
"uploadProcess4" => "Подати на розгляд",
"uploadAMix" => "Завантажити мікс",
"uploadSelectMix" => "Виберіть файл міксу (MP3 або ZIP)",
"uploadMaxFileSize" => "Максимальний розмір файлу: <b>500</b> МБ",
"uploadFile" => "Завантажити файл",
"uploadSelectGenres" => "Виберіть жанри (введіть для пошуку)",
"uploadSelectDJSMax3" => "Виберіть DJ (максимум 3)",
"uploadSubmitMix" => "Подати мікс",
"uploadSelectDJ1" => "Вибрати DJ 1",
"uploadSelectDJ2" => "Вибрати DJ 2 (необов'язково)",
"uploadSelectDJ3" => "Вибрати DJ 3 (необов'язково)",
"userAlreadyExists" => "Користувач вже існує.",
"allFieldsRequired" => "Усі поля є обов'язковими.",
"passwordsDoNotMatch" => "Паролі не співпадають.",
"invalidEmail" => "Неправильний формат електронної пошти.",
"invalidUsername" => "Неправильний формат імені користувача.",
"verifyEmailAddress" => "Підтвердіть свою електронну пошту",
"registerThankYou" => "Дякуємо за реєстрацію на ",
"registerVerifyEmail" => "Будь ласка, підтвердіть свою електронну пошту, натиснувши на посилання нижче або ввівши код підтвердження у своєму профілі:",
"registerVerifyCodeIs" => "Ваш код підтвердження: ",
"registerVerifyTimeout" => "Цей код буде дійсним 15 хвилин.",
"password" => "Пароль",
"rememberMe" => "Запам'ятати мене",
"forgotPassword" => "Забули пароль",
"dontHaveAccount" => "Немає облікового запису?",
"signUp" => "Зареєструватися",
"passwordResetSent" => "Якщо електронна пошта існує в нашій системі, посилання для скидання пароля було надіслано.",
"passwordResetRequested" => "Ви запросили скидання пароля. Будь ласка, натисніть на посилання нижче, щоб скинути свій пароль:",
"passwordResetUnrequested" => "Якщо ви не запитували цього, будь ласка, проігноруйте цей лист. Це посилання буде дійсним 15 хвилин.",
"emailaddressEnter" => "Введіть свою електронну пошту",
"messageSentSuccess" => "Повідомлення надіслано успішно.",
"messageSentError" => "Сталася помилка під час надсилання повідомлення.",
"contactUs2" => "Ми хотіли б почути вашу відповідь. Надішліть нам повідомлення, і ми відповімо якомога швидше.",
"messageSendUs" => "Надішліть нам повідомлення",
"messageSend" => "Надіслати повідомлення",
"passwordReset" => "Скинути пароль",
"enterYourUsername" => "Введіть своє ім'я користувача",
"newPassword" => "Новий пароль",
"confirmPassword" => "Підтвердити новий пароль",
"passwordResetSuccess" => "Ваш пароль було успішно скинуто. Будь ласка, увійдіть з новим паролем.",
"enterEmailAddressPlease" => "Будь ласка, введіть свою електронну пошту.",
"emailInvalid" => "Неправильний формат електронної пошти.",
"passwordMismatch" => "Паролі не співпадають.",
"passwordRequirements" => "Пароль повинен бути не менше 8 символів і містити великі та маленькі літери, а також цифри.",
"resetExpiredInvalid" => "Неправильний або прострочений код скидання пароля.",
"resetExpired" => "Код скидання пароля прострочений.",
"codeCredsInvalid" => "Неправильні облікові дані або код підтвердження.",
"change" => "Змінити",
"changePicture" => "Змінити зображення",
"verify" => "Підтвердити",
"createdUsing" => "Створено за допомогою",
"djmixhostingsoftware" => "Програмне забезпечення для хостингу DJ міксів",
"privacyPolicy" => "Політика конфіденційності",
"termsAndConditions" => "Умови обслуговування",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'welcome' => 'Chào mừng bạn đến với trang web của chúng tôi!',
'description' => 'Đây là mô tả bằng tiếng Anh.',
'desc' => 'Mô tả',
'userProfile' => "Hồ sơ người dùng",
'user' => 'Người dùng',
'home' => 'Trang chủ',
'djName' => 'Tên DJ',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
'location' => 'Địa điểm',
'bio' => 'Tiểu sử',
'submit' => 'Gửi',
'login' => 'Đăng nhập',
'message' => 'Tin nhắn',
'follow' => 'Theo dõi',
'djs' => 'DJ',
"djNotFound" => "Không thể tải DJ; hoặc DJ không được tìm thấy hoặc DJ này là riêng tư.",
"notfound" => "Trang không tìm thấy",
"genre" => "Thể loại",
"genres" => "Các thể loại",
"genreNotFound" => "Không thể tải thể loại; hoặc thể loại không được tìm thấy, trống, hoặc thể loại này là riêng tư.",
"mix-count" => "Số lượng mix",
"mixes" => "Các mix",
"mix" => "Trộn",
"mixNotFound" => "Không thể tải mix; hoặc mix không được tìm thấy, trống, hoặc mix này là riêng tư.",
"mixshowNotFound" => "Không thể tải mixshow; hoặc mixshow không được tìm thấy, trống, hoặc mixshow này là riêng tư.",
"mixName" => "Tên mix",
"mixDescription" => "Mô tả mix",
"mixLength" => "Thời gian mix",
"mixGenre" => "Thể loại mix",
"view" => "Xem",
"mixname" => "Tên mix",
"search" => "Tìm kiếm",
"searchResults" => "Kết quả tìm kiếm",
"searchResultsFor" => "Kết quả tìm kiếm cho",
"searchResultsFound" => "Kết quả tìm kiếm được tìm thấy",
"tracklist" => "Danh sách bài hát",
"lastupdated" => "Cập nhật lần cuối",
"duration" => "Thời gian",
"hour" => "giờ",
"hours" => "giờ",
"minute" => "phút",
"minutes" => "phút",
"second" => "giây",
"seconds" => "giây",
"by" => "bởi",
"added" => "Đã thêm",
"recorded" => "Đã ghi âm",
"audioNotSupported" => "Trình duyệt của bạn không hỗ trợ phần tử audio.",
"downloads" => "Tải xuống",
"download" => "Tải xuống",
"downloadMix" => "Tải xuống mix",
"plays" => "Số lượt phát",
"play" => "Phát",
"contactus" => "Liên hệ với chúng tôi",
"allrightsreserved" => "Tất cả các quyền được bảo lưu.",
"mixshows" => "Chương trình trộn",
"mixshow" => "Chương trình trộn",
"mixshowName" => "Tên mixshow",
"share" => "Chia sẻ",
"sahrethismix" => "Chia sẻ mix này",
"sharethismixshow" => "Chia sẻ mixshow này",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "Năm",
"sharetotwitter" => "Chia sẻ đến X (trước đây là Twitter)",
"sharetofb" => "Chia sẻ đến Facebook",
"sharetoig" => "Chia sẻ đến Instagram",
"copyurl" => "Sao chép URL",
"urlcopiedtoclipboard" => "URL đã được sao chép vào clipboard",
"failedtocopyurl" => "Sao chép URL không thành công",
"name" => "Tên",
"username" => "Tên người dùng",
"logout" => "Đăng xuất",
"upload" => "Tải lên",
"loginToVerifyEmail" => "Bạn phải đăng nhập để xác minh email của mình.",
"loginToUploadMix" => "Bạn phải đăng nhập để tải lên một mix.",
"verificationCodeRequired" => "Mã xác minh là bắt buộc.",
"recordedDate" => "Ngày ghi âm",
"noUploadedFileFound" => "Không tìm thấy tệp đã tải lên. Vui lòng tải lên một tệp mix.",
"mixTitleRequired" => "Tiêu đề mix là bắt buộc.",
"errorUploadCDN" => "Lỗi khi tải tệp lên CDN: ",
"errorSavingMixDB" => "Lỗi khi lưu mix vào cơ sở dữ liệu.",
"uploadedPendingApproval" => "Mix đã được tải lên thành công và đang chờ phê duyệt.",
"uploadHeader1" => "Tải lên mix của bạn lên các DJ của Utah",
"uploadAlertHeader" => "Thông tin tải lên quan trọng",
"uploadAlert1" => "Các DJ của Utah chủ yếu là một dự án lưu trữ nhằm bảo tồn lịch sử và văn hóa của các DJ EDM ở Utah. Các tải lên của bạn góp phần vào hồ sơ lịch sử này.",
"uploadHeader2" => "Trước khi bạn tải lên",
"uploadAlert2" => "Xác minh rằng tất cả các DJ tham gia đều được liệt kê trong cơ sở dữ liệu của chúng tôi. Nếu một DJ không được liệt kê, họ phải được thêm vào và phê duyệt trước khi tải lên.",
"uploadAlert3" => "Kiểm tra rằng các thể loại phù hợp có sẵn cho mix của bạn. Các thể loại mới cần được phê duyệt trước khi có thể được sử dụng.",
"uploadAlert4" => "Bạn có thể gửi yêu cầu DJ hoặc thể loại mới thông qua cài đặt hồ sơ của bạn.",
"uploadProcess" => "Quá trình tải lên",
"uploadProcess1" => "Tải lên tệp mix của bạn (định dạng MP3 hoặc ZIP)",
"uploadProcess2" => "Nhập chi tiết mix, bao gồm tiêu đề, mô tả và ngày ghi âm",
"uploadProcess3" => "Chọn các thể loại và DJ phù hợp",
"uploadProcess4" => "Gửi để xem xét",
"uploadAMix" => "Tải lên một mix",
"uploadSelectMix" => "Chọn tệp mix (MP3 hoặc ZIP)",
"uploadMaxFileSize" => "Kích thước tệp tối đa: 500MB",
"uploadFile" => "Tải lên tệp",
"uploadSelectGenres" => "Chọn thể loại (gõ để tìm kiếm)",
"uploadSelectDJSMax3" => "Chọn DJ (Tối đa 3)",
"uploadSubmitMix" => "Gửi mix",
"uploadSelectDJ1" => "Chọn DJ 1",
"uploadSelectDJ2" => "Chọn DJ 2 (tùy chọn)",
"uploadSelectDJ3" => "Chọn DJ 3 (tùy chọn)",
"userAlreadyExists" => "Người dùng đã tồn tại.",
"allFieldsRequired" => "Tất cả các trường đều là bắt buộc.",
"passwordsDoNotMatch" => "Mật khẩu không khớp.",
"invalidEmail" => "Định dạng email không hợp lệ.",
"invalidUsername" => "Định dạng tên người dùng không hợp lệ.",
"verifyEmailAddress" => "Xác minh địa chỉ email của bạn",
"registerThankYou" => "Cảm ơn bạn đã đăng ký tại ",
"registerVerifyEmail" => "Vui lòng xác minh địa chỉ email của bạn bằng cách nhấp vào liên kết bên dưới hoặc nhập mã xác minh trong hồ sơ của bạn:",
"registerVerifyCodeIs" => "Mã xác minh của bạn là: ",
"registerVerifyTimeout" => "Mã này sẽ hết hạn trong 15 phút.",
"password" => "Mật khẩu",
"rememberMe" => "Nhớ tôi",
"forgotPassword" => "Quên mật khẩu",
"dontHaveAccount" => "Bạn không có tài khoản?",
"signUp" => "Đăng ký",
"passwordResetSent" => "Nếu email tồn tại trong hệ thống của chúng tôi, một liên kết đặt lại mật khẩu đã được gửi.",
"passwordResetRequested" => "Bạn đã yêu cầu đặt lại mật khẩu của bạn. Vui lòng nhấp vào liên kết dưới đây để đặt lại mật khẩu của bạn:",
"passwordResetUnrequested" => "Nếu bạn không yêu cầu điều này, hãy bỏ qua email này. Liên kết này sẽ hết hạn trong 15 phút.",
"emailaddressEnter" => "Nhập địa chỉ email của bạn",
"messageSentSuccess" => "Tin nhắn đã được gửi thành công.",
"messageSentError" => "Đã xảy ra lỗi khi gửi tin nhắn.",
"contactUs2" => "Chúng tôi rất mong nhận được phản hồi từ bạn. Hãy gửi tin nhắn cho chúng tôi và chúng tôi sẽ phản hồi sớm nhất có thể.",
"messageSendUs" => "Gửi cho chúng tôi một tin nhắn",
"messageSend" => "Gửi tin nhắn",
"passwordReset" => "Đặt lại mật khẩu",
"enterYourUsername" => "Nhập tên người dùng của bạn",
"newPassword" => "Mật khẩu mới",
"confirmPassword" => "Xác nhận mật khẩu mới",
"passwordResetSuccess" => "Mật khẩu của bạn đã được đặt lại thành công. Vui lòng đăng nhập bằng mật khẩu mới của bạn.",
"enterEmailAddressPlease" => "Vui lòng nhập địa chỉ email của bạn.",
"emailInvalid" => "Định dạng email không hợp lệ.",
"passwordMismatch" => "Mật khẩu không khớp.",
"passwordRequirements" => "Mật khẩu phải có ít nhất 8 ký tự và bao gồm chữ hoa và chữ thường, cũng như một số.",
"resetExpiredInvalid" => "Mã đặt lại mật khẩu không hợp lệ hoặc đã hết hạn.",
"resetExpired" => "Mã đặt lại mật khẩu đã hết hạn.",
"codeCredsInvalid" => "Thông tin xác thực hoặc mã xác minh không hợp lệ.",
"change" => "Thay đổi",
"changePicture" => "Thay đổi hình ảnh",
"verify" => "Xác minh",
"createdUsing" => "Được tạo bằng",
"djmixhostingsoftware" => "Phần mềm lưu trữ DJ Mix",
"privacyPolicy" => "Chính sách bảo mật",
"termsAndConditions" => "Điều khoản và điều kiện",
];

View file

@ -1,43 +1,43 @@
<?php
return [
'welcome' => '欢迎来到我们的网站!',
'description' => '这是英文描述。',
'description' => '这是一个英文描述。',
'desc' => '描述',
'userProfile' => "用户资料",
'user' => '用户',
'home' => '首页',
'djName' => 'DJ 名称',
'email' => '电子邮件地址',
'location' => '地点',
'bio' => '个人信息',
'email' => '电子邮件',
'location' => '位置',
'bio' => '简介',
'submit' => '提交',
'login' => '登录',
'message' => '留言',
'message' => '消息',
'follow' => '关注',
'djs' => 'DJs',
"djNotFound" => "无法加载 DJ要么找不到 DJ ,要么此 DJ 是私有的。",
"notfound" => "找不到页面",
"genre" => "流派",
"genres" => "Genres",
"genreNotFound" => "无法加载基因;要么找不到基因,要么是空的,要么这种基因是私人的。",
"mix-count" => "合计数",
"mixes" => "混音",
"mix" => "混音",
"mixNotFound" => "无法加载混合物;混合物未找到, 为空, 或者这种混合是私有的。",
"mixshowNotFound" => "无法加载mixshow要么找不到mixshow要么是空的要么这个mixshow是私有的。",
"mixName" => "名称",
"mixDescription" => "描述",
"mixLength" => "合长度",
"mixGenre" => "合流体",
'djs' => 'DJ',
"djNotFound" => "无法加载DJ DJ未找到或此DJ是私密的。",
"notfound" => "页面未找到",
"genre" => "流派",
"genres" => "流派",
"genreNotFound" => "无法加载流派; 流派未找到、为空或此流派是私密的。",
"mix-count" => "音数量",
"mixes" => "混音",
"mix" => "混音",
"mixNotFound" => "无法加载混音; 混音未找到、为空或此混音是私密的。",
"mixshowNotFound" => "无法加载混音节目; 混音节目未找到、为空或此混音节目是私密的。",
"mixName" => "名称",
"mixDescription" => "描述",
"mixLength" => "音时长",
"mixGenre" => "音流派",
"view" => "查看",
"mixname" => "名称",
"mixname" => "名称",
"search" => "搜索",
"searchResults" => "搜索结果",
"searchResultsFor" => "搜索结果",
"searchResultsFound" => "找到搜索结果",
"searchResultsFor" => "搜索结果",
"searchResultsFound" => "搜索结果已找到",
"tracklist" => "曲目列表",
"lastupdated" => "最后更新",
"duration" => "期限",
"duration" => "持续时间",
"hour" => "小时",
"hours" => "小时",
"minute" => "分钟",
@ -46,31 +46,110 @@ return [
"seconds" => "",
"by" => "",
"added" => "已添加",
"recorded" => "",
"recorded" => "",
"audioNotSupported" => "您的浏览器不支持音频元素。",
"downloads" => "下载",
"download" => "下载",
"downloadMix" => "下载 Mixx",
"downloadMix" => "下载混音",
"plays" => "播放",
"play" => "播放",
"contactus" => "联系我们",
"allrightsreserved" => "版权所有。",
"mixshows" => "合显示",
"mixshow" => "Mixshow",
"mixshowName" => "节目名称",
"allrightsreserved" => "所有权利保留",
"mixshows" => "音节目",
"mixshow" => "混音节目",
"mixshowName" => "节目名称",
"share" => "分享",
"sahrethismix" => "分享这个组合",
"sharethismixshow" => "分享此 mixshow",
"sahrethismix" => "分享这个混音",
"sharethismixshow" => "分享这个混音节目",
"rss" => "RSS",
"year" => "",
"sharetotwitter" => "分享到 X (旧的 Twitter)",
"sharetofb" => "分享 Facebook",
"sharetoig" => "分享 Instagram",
"year" => "",
"sharetotwitter" => "分享至 X (前称 Twitter)",
"sharetofb" => "分享 Facebook",
"sharetoig" => "分享 Instagram",
"copyurl" => "复制 URL",
"urlcopiedtoclipboard" => "URL 已复制到剪贴板",
"failedtocopyurl" => "无法复制 URL",
"failedtocopyurl" => "复制 URL 失败",
"name" => "名称",
"username" => "用户名",
"logout" => "注销",
"logout" => "退出",
"upload" => "上传",
"loginToVerifyEmail" => "您必须登录以验证您的电子邮件。",
"loginToUploadMix" => "您必须登录以上传混音。",
"verificationCodeRequired" => "需要验证码。",
"recordedDate" => "录制日期",
"noUploadedFileFound" => "未找到上传文件。请上传混音文件。",
"mixTitleRequired" => "混音标题是必需的。",
"errorUploadCDN" => "上传文件到 CDN 时出错: ",
"errorSavingMixDB" => "保存混音到数据库时出错。",
"uploadedPendingApproval" => "混音上传成功,待批准。",
"uploadHeader1" => "上传您的混音到犹他州的DJ",
"uploadAlertHeader" => "重要的上传信息",
"uploadAlert1" => "犹他州的DJ主要是一个档案项目致力于保护犹他州EDM DJ的历史和文化。您的上传为这段历史记录作出了贡献。",
"uploadHeader2" => "在您上传之前",
"uploadAlert2" => "验证所有参与的DJ是否在我们的数据库中列出。如果DJ未列出必须在上传之前添加并批准。",
"uploadAlert3" => "检查适当的流派是否可用于您的混音。新流派需要在使用之前获得批准。",
"uploadAlert4" => "您可以通过个人资料设置提交新的DJ或流派请求。",
"uploadProcess" => "上传过程",
"uploadProcess1" => "上传您的混音文件MP3或ZIP格式",
"uploadProcess2" => "输入混音详细信息,包括标题、描述和录制日期",
"uploadProcess3" => "选择相关流派和DJ",
"uploadProcess4" => "提交以供审核",
"uploadAMix" => "上传混音",
"uploadSelectMix" => "选择混音文件MP3或ZIP",
"uploadMaxFileSize" => "最大文件大小: 500MB",
"uploadFile" => "上传文件",
"uploadSelectGenres" => "选择流派(输入搜索)",
"uploadSelectDJSMax3" => "选择DJ最多3个",
"uploadSubmitMix" => "提交混音",
"uploadSelectDJ1" => "选择DJ 1",
"uploadSelectDJ2" => "选择DJ 2可选",
"uploadSelectDJ3" => "选择DJ 3可选",
"userAlreadyExists" => "用户已存在。",
"allFieldsRequired" => "所有字段都是必填的。",
"passwordsDoNotMatch" => "密码不匹配。",
"invalidEmail" => "无效的邮件格式。",
"invalidUsername" => "无效的用户名格式。",
"verifyEmailAddress" => "验证您的电子邮件地址",
"registerThankYou" => "感谢您在 注册 ",
"registerVerifyEmail" => "请通过点击以下链接或在您的个人资料中输入验证码来验证您的电子邮件地址:",
"registerVerifyCodeIs" => "您的验证码是: ",
"registerVerifyTimeout" => "该代码将在15分钟内失效。",
"password" => "密码",
"rememberMe" => "记住我",
"forgotPassword" => "忘记密码",
"dontHaveAccount" => "还没有账户?",
"signUp" => "注册",
"passwordResetSent" => "如果电子邮件在我们的系统中存在,密码重置链接已发送。",
"passwordResetRequested" => "您已请求重置密码。请点击以下链接重置您的密码:",
"passwordResetUnrequested" => "如果您没有请求此操作请忽略此电子邮件。此链接将在15分钟内失效。",
"emailaddressEnter" => "输入您的电子邮件地址",
"messageSentSuccess" => "消息发送成功。",
"messageSentError" => "发送消息时发生错误。",
"contactUs2" => "我们很乐意听到你的声音。给我们发送消息,我们将尽快回复。",
"messageSendUs" => "给我们发送消息",
"messageSend" => "发送消息",
"passwordReset" => "重置密码",
"enterYourUsername" => "输入您的用户名",
"newPassword" => "新密码",
"confirmPassword" => "确认新密码",
"passwordResetSuccess" => "您的密码已成功重置。请使用您的新密码登录。",
"enterEmailAddressPlease" => "请输入您的电子邮件地址。",
"emailInvalid" => "无效的邮件格式。",
"passwordMismatch" => "密码不匹配。",
"passwordRequirements" => "密码必须至少包含8个字符并包括大写字母、小写字母和数字。",
"resetExpiredInvalid" => "无效或过期的密码重置代码。",
"resetExpired" => "密码重置代码已过期。",
"codeCredsInvalid" => "无效的凭据或验证码。",
"change" => "更改",
"changePicture" => "更改图片",
"verify" => "验证",
"createdUsing" => "使用以下内容创建",
"djmixhostingsoftware" => "DJ混音托管软件",
"privacyPolicy" => "隐私政策",
"termsAndConditions" => "条款和条件",
];

View file

@ -1,76 +1,155 @@
<?php
return [
'welcome' => 'Welcome to our Website!',
'description' => 'This is a description in English.',
'desc' => 'Description',
'userProfile' => "User Profile",
'user' => 'User',
'home' => 'Home',
'djName' => 'DJ Name',
'email' => 'Email',
'location' => 'Location',
'bio' => 'Bio',
'submit' => 'Submit',
'login' => 'Login',
'message' => 'Message',
'follow' => 'Follow',
'djs' => 'DJs',
"djNotFound" => "Could not load DJ; either the DJ wasn't found or this DJ is private.",
"notfound" => "Page not found",
"genre" => "Genre",
"genres" => "Genres",
"genreNotFound" => "Could not load genre; either the genre wasn't found, was empty, or this genre is private.",
"mix-count" => "Mix Count",
"mixes" => "Mixes",
"mix" => "Mix",
"mixNotFound" => "Could not load mix; either the mix wasn't found, was empty, or this mix is private.",
"mixshowNotFound" => "Could not load mixshow; either the mixshow wasn't found, was empty, or this mixshow is private.",
"mixName" => "Mix Name",
"mixDescription" => "Mix Description",
"mixLength" => "Mix Length",
"mixGenre" => "Mix Genre",
"view" => "View",
"mixname" => "Mix Name",
"search" => "Search",
"searchResults" => "Search Results",
"searchResultsFor" => "Search Results for",
"searchResultsFound" => "Search Results Found",
"tracklist" => "Tracklist",
"lastupdated" => "Last Updated",
"duration" => "Duration",
"hour" => "hour",
"hours" => "hours",
"minute" => "minute",
"minutes" => "minutes",
"second" => "second",
"seconds" => "seconds",
"by" => "by",
"added" => "Added",
"recorded" => "Recorded",
"audioNotSupported" => "Your browser does not support the audio element.",
"downloads" => "Downloads",
"download" => "Download",
"downloadMix" => "Download Mix",
"plays" => "Plays",
"play" => "Play",
"contactus" => "Contact Us",
"allrightsreserved" => "All rights reserved.",
"mixshows" => "Mixshows",
"mixshow" => "Mixshow",
"mixshowName" => "Mixshow Name",
"share" => "Share",
"sahrethismix" => "Share this mix",
"sharethismixshow" => "Share this mixshow",
'welcome' => '歡迎來到我們的網站!',
'description' => '這是一個英語描述。',
'desc' => '描述',
'userProfile' => "用戶檔案",
'user' => '用戶',
'home' => '首頁',
'djName' => 'DJ 名稱',
'email' => '電子郵件',
'location' => '位置',
'bio' => '簡介',
'submit' => '提交',
'login' => '登錄',
'message' => '消息',
'follow' => '關注',
'djs' => 'DJ',
"djNotFound" => "無法加載 DJ要麼 DJ 找不到,要麼這位 DJ 是私有的。",
"notfound" => "找不到頁面",
"genre" => "類型",
"genres" => "類型",
"genreNotFound" => "無法加載類型;要麼類型不存在,為空,或此類型是私有的。",
"mix-count" => "混音數量",
"mixes" => "混音",
"mix" => "混音",
"mixNotFound" => "無法加載混音;要麼混音不存在,為空,或此混音是私有的。",
"mixshowNotFound" => "無法加載混音秀;要麼混音秀不存在,為空,或此混音秀是私有的。",
"mixName" => "混音名稱",
"mixDescription" => "混音描述",
"mixLength" => "混音長度",
"mixGenre" => "混音類型",
"view" => "查看",
"mixname" => "混音名稱",
"search" => "搜尋",
"searchResults" => "搜尋結果",
"searchResultsFor" => "搜尋結果",
"searchResultsFound" => "找到搜尋結果",
"tracklist" => "曲目列表",
"lastupdated" => "最後更新",
"duration" => "持續時間",
"hour" => "小時",
"hours" => "小時",
"minute" => "分鐘",
"minutes" => "分鐘",
"second" => "",
"seconds" => "",
"by" => "",
"added" => "已添加",
"recorded" => "已錄製",
"audioNotSupported" => "您的瀏覽器不支持音頻元素。",
"downloads" => "下載",
"download" => "下載",
"downloadMix" => "下載混音",
"plays" => "播放次數",
"play" => "播放",
"contactus" => "聯絡我們",
"allrightsreserved" => "版權所有。",
"mixshows" => "混音秀",
"mixshow" => "混音秀",
"mixshowName" => "混音秀名稱",
"share" => "分享",
"sahrethismix" => "分享此混音",
"sharethismixshow" => "分享此混音秀",
"rss" => "RSS",
"year" => "Year",
"sharetotwitter" => "Share to X (formerly Twitter)",
"sharetofb" => "Share to Facebook",
"sharetoig" => "Share to Instagram",
"copyurl" => "Copy URL",
"urlcopiedtoclipboard" => "URL copied to clipboard",
"failedtocopyurl" => "Failed to copy URL",
"name" => "Name",
"username" => "Username",
"logout" => "Logout",
"upload" => "Upload",
"year" => "年份",
"sharetotwitter" => "分享至X前Twitter",
"sharetofb" => "分享至Facebook",
"sharetoig" => "分享至Instagram",
"copyurl" => "複製網址",
"urlcopiedtoclipboard" => "網址已複製到剪貼簿",
"failedtocopyurl" => "複製網址失敗",
"name" => "名稱",
"username" => "用戶名",
"logout" => "登出",
"upload" => "上傳",
"loginToVerifyEmail" => "您必須登錄以驗證您的電子郵件。",
"loginToUploadMix" => "您必須登錄以上傳混音。",
"verificationCodeRequired" => "需要驗證碼。",
"recordedDate" => "錄製日期",
"noUploadedFileFound" => "未找到上傳文件。請上傳混音文件。",
"mixTitleRequired" => "混音標題是必需的。",
"errorUploadCDN" => "上傳文件到CDN時出錯",
"errorSavingMixDB" => "將混音存儲到數據庫時出錯。",
"uploadedPendingApproval" => "混音成功上傳,正在等待審核。",
"uploadHeader1" => "將您的混音上傳到猶他州的DJ",
"uploadAlertHeader" => "重要的上傳信息",
"uploadAlert1" => "猶他州的DJ主要是一個檔案保存項目致力於保存猶他州EDM DJ的歷史和文化。您的上傳有助於這個歷史記錄。",
"uploadHeader2" => "上傳前注意事項",
"uploadAlert2" => "確認所有參與的DJ都列在我們的數據庫中。如果DJ未列出必須先添加並批准才能上傳。",
"uploadAlert3" => "檢查您的混音是否有適當的類型可供使用。新類型需要批准後才能使用。",
"uploadAlert4" => "您可以通過您的檔案設置提交新的DJ或類型請求。",
"uploadProcess" => "上傳過程",
"uploadProcess1" => "上傳您的混音文件MP3或ZIP格式",
"uploadProcess2" => "輸入混音詳細信息,包括標題、描述和錄製日期",
"uploadProcess3" => "選擇相關的類型和DJ",
"uploadProcess4" => "提交審核",
"uploadAMix" => "上傳混音",
"uploadSelectMix" => "選擇混音文件MP3或ZIP",
"uploadMaxFileSize" => "最大文件大小500MB",
"uploadFile" => "上傳文件",
"uploadSelectGenres" => "選擇類型(輸入以搜尋)",
"uploadSelectDJSMax3" => "選擇DJ最多3位",
"uploadSubmitMix" => "提交混音",
"uploadSelectDJ1" => "選擇DJ 1",
"uploadSelectDJ2" => "選擇DJ 2可選",
"uploadSelectDJ3" => "選擇DJ 3可選",
"userAlreadyExists" => "用戶已存在。",
"allFieldsRequired" => "所有字段都是必需的。",
"passwordsDoNotMatch" => "密碼不匹配。",
"invalidEmail" => "電子郵件格式不正確。",
"invalidUsername" => "用戶名格式不正確。",
"verifyEmailAddress" => "驗證您的電子郵件地址",
"registerThankYou" => "感謝您在登錄時的註冊",
"registerVerifyEmail" => "請通過單擊下面的鏈接或在您的個人資料中輸入驗證碼來驗證您的電子郵件地址:",
"registerVerifyCodeIs" => "您的驗證碼是",
"registerVerifyTimeout" => "此代碼將在15分鐘內過期。",
"password" => "密碼",
"rememberMe" => "記住我",
"forgotPassword" => "忘記密碼",
"dontHaveAccount" => "沒有賬戶?",
"signUp" => "註冊",
"passwordResetSent" => "如果電子郵件在我們的系統中存在,則已發送密碼重設鏈接。",
"passwordResetRequested" => "您請求重置密碼。請單擊下面的鏈接以重置您的密碼:",
"passwordResetUnrequested" => "如果您沒有請求此操作請忽略此郵件。此鏈接將在15分鐘內過期。",
"emailaddressEnter" => "輸入您的電子郵件地址",
"messageSentSuccess" => "消息發送成功。",
"messageSentError" => "發送消息時出錯。",
"contactUs2" => "我們非常樂意收到您的來信。向我們發送訊息,我們將盡快回覆。",
"messageSendUs" => "發送我們一條消息",
"messageSend" => "發送消息",
"passwordReset" => "重置密碼",
"enterYourUsername" => "輸入您的用戶名",
"newPassword" => "新密碼",
"confirmPassword" => "確認新密碼",
"passwordResetSuccess" => "您的密碼已成功重置。請使用您的新密碼登錄。",
"enterEmailAddressPlease" => "請輸入您的電子郵件地址。",
"emailInvalid" => "電子郵件格式不正確。",
"passwordMismatch" => "密碼不匹配。",
"passwordRequirements" => "密碼必須至少 8 個字符並包含大小寫字母以及數字。",
"resetExpiredInvalid" => "無效或過期的密碼重置代碼。",
"resetExpired" => "密碼重置代碼已過期。",
"codeCredsInvalid" => "無效的憑證或驗證代碼。",
"change" => "更改",
"changePicture" => "更改圖片",
"verify" => "驗證",
"createdUsing" => "使用",
"djmixhostingsoftware" => "DJ混音托管軟體",
"privacyPolicy" => "隱私政策",
"termsAndConditions" => "條款與條件",
];

View file

@ -5,6 +5,7 @@ require_once 'vendor/autoload.php';
use DJMixHosting\Database;
use DJMixHosting\User;
use DJMixHosting\SessionManager;
use Random\RandomException;
// If a user is already logged in, redirect to profile.
if (SessionManager::getUser()) {
@ -14,7 +15,11 @@ if (SessionManager::getUser()) {
// Generate a CSRF token if one is not set
if (!isset($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
try {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
} catch (RandomException $e) {
die("An error occurred. Please try again.");
}
}
$title = $locale['home'];
@ -69,14 +74,14 @@ if (isset($_SESSION['error'])) {
<div class="col-lg-5">
<div class="card shadow-sm border-0">
<div class="card-body p-4">
<h3 class="text-center mb-4">Login</h3>
<h3 class="text-center mb-4"><?php echo $locale['login'];?></h3>
<form action="login.php" method="post" class="needs-validation" novalidate>
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<label for="email" class="form-label"><?php echo $locale['email'];?></label>
<input type="email" class="form-control form-control-lg" id="email" name="email" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<label for="password" class="form-label"><?php echo $locale['password'];?></label>
<div class="input-group">
<input type="password" class="form-control form-control-lg" id="password" name="password" required>
<button class="btn btn-outline-secondary px-3" type="button" id="togglePassword"
@ -87,18 +92,18 @@ if (isset($_SESSION['error'])) {
</div>
<div class="mb-4 form-check">
<input type="checkbox" class="form-check-input" id="rememberMe" name="remember_me">
<label class="form-check-label" for="rememberMe">Remember me</label>
<label class="form-check-label" for="rememberMe"><?php echo $locale['rememberMe'];?></label>
</div>
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
<button type="submit" class="btn btn-primary w-100 btn-lg mb-3">Login</button>
<button type="submit" class="btn btn-primary w-100 btn-lg mb-3"><?php echo $locale['login'];?></button>
<div class="text-center">
<a href="forgot-password.php" class="text-decoration-none">Forgot password?</a>
<a href="forgot-password.php" class="text-decoration-none"><?php echo $locale['forgotPassword'];?></a>
</div>
</form>
</div>
</div>
<div class="text-center mt-4">
<p class="mb-0">Don't have an account? <a href="register.php" class="text-decoration-none">Sign up</a></p>
<p class="mb-0"><?php echo $locale['dontHaveAccount'];?> <a href="/" class="text-decoration-none"><?php echo $locale['signUp'];?></a></p>
</div>
</div>
</div>

491
mix.php
View file

@ -39,6 +39,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
require_once 'includes/header.php'; ?>
<section>
<div class="container py-5">
<!-- breadcrumbs -->
<div class="row">
<div class="col">
<nav aria-label="breadcrumb" class="bg-body-tertiary rounded-3 p-3 mb-4">
@ -57,10 +58,13 @@ require_once 'includes/header.php'; ?>
</nav>
</div>
</div>
<!-- end of breadcrumbs -->
<?php if ($mixFound): ?>
<?php if ($mixFound) { ?>
<div class="row">
<!-- start column -->
<div class="col-lg-4">
<!-- cover card -->
<div class="card mb-4">
<div class="card-body bg-body-secondary text-center">
<?php
@ -74,9 +78,10 @@ require_once 'includes/header.php'; ?>
echo "<h2 class='text-muted mb-4 fs-6'>" . $mix->getDescription() . "</h2>";
}
?>
</p>
</div>
</div>
<!-- end cover card -->
<!-- player card -->
<div class="card mb-4">
<div class="card-body bg-body-secondary text-center">
<?php
@ -96,9 +101,11 @@ require_once 'includes/header.php'; ?>
<span id="current-time">0:00</span> / <span id="duration">0:00</span>
</div>
</div>
<?php } ?>
<?php } ?>
</div>
</div>
<!-- end player card -->
<!-- action card -->
<div class="card mb-4">
<div class="card-body bg-body-secondary text-center ">
<button type="button" id="shareBtn" class="w-100 mb-2 btn btn-secondary"
@ -116,9 +123,12 @@ require_once 'includes/header.php'; ?>
<?php endif; ?>
</div>
</div>
<!-- end action card -->
</div>
<!-- end column -->
<!-- start info column -->
<div class="col-lg-8">
<!-- start info card -->
<div class="card mb-4">
<div class="card-body bg-body-secondary">
<div class="row">
@ -294,7 +304,7 @@ require_once 'includes/header.php'; ?>
<?php echo $mix->getPlaycount(); ?>
</div>
</div>
<?php if ($mix->getUpdated() != ""): ?>
<?php if ($mix->getUpdated() != "") { ?>
<hr>
<div class="row">
<div class="col-sm-3">
@ -305,208 +315,160 @@ require_once 'includes/header.php'; ?>
<?php echo $mix->getUpdated(); ?>
</div>
</div>
<script>
<?php } ?>
</div>
</div>
<!-- end info card -->
<!-- start tracklist -->
<?php if ($mix->getTracklist() != []) { ?>
<div class='card mb-4 bg-body-secondary'>
<div class='card-body '>
<p class='mb-4'><span
class='text-primary font-italic me-1'><?php echo $locale['tracklist']; ?></span>
</p>
<ul class='list-group list-group-flush rounded-3 bg-body-secondary'>
<?php $tracklist = $mix->getTracklist();
foreach ($tracklist as $track) {
echo "<li class='list-group-item bg-body-secondary d-flex justify-content-between align-items-center'>";
echo $track;
echo "</li>";
}
?>
</ul>
</div>
</div>
<?php } ?>
<!-- end tracklist -->
document.addEventListener('DOMContentLoaded', function () {
const audioElement = document.querySelector('audio');
</div>
<!-- end info column -->
<!-- modals -->
if ('mediaSession' in navigator) {
navigator.mediaSession.metadata = new MediaMetadata({
title: '<?php echo addslashes($mix->getName()); ?>',
artist: '<?php
$djs = $mix->getDJs();
$djCount = count($djs);
$i = 0;
$djnamelist = [];
foreach ($djs as $dj) {
$djnamelist[] = $dj->getName();
$i++;
}
echo addslashes(implode(", ", $djnamelist));?>',
album: '<?php echo addslashes($mix->getName()); ?>',
artwork: [
{
src: '<?php echo $mix->getCover('small'); ?>',
sizes: '96x96',
type: 'image/jpeg'
},
{
src: '<?php echo $mix->getCover('large'); ?>',
sizes: '128x128',
type: 'image/jpeg'
}
]
});
// Define action handlers
navigator.mediaSession.setActionHandler('play', function () {
audioElement.play();
});
navigator.mediaSession.setActionHandler('pause', function () {
audioElement.pause();
});
audioElement.addEventListener('timeupdate', () => {
// Update the position state
navigator.mediaSession.setPositionState({
duration: audioElement.duration,
playbackRate: audioElement.playbackRate,
position: audioElement.currentTime
});
});
}
});
</script>
<?php endif; ?>
<div class="modal fade" id="shareModal" tabindex="-1" aria-labelledby="shareModalLabel"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="shareModalLabel"><?php echo $locale['share']; ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"
aria-label="Close"></button>
</div>
<div class="modal-body">
<?php
$url = 'https://utahsdjs.com/mix/' . $_GET['mix'];
$utm_params = '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
$share_url = urlencode($url . $utm_params);
?>
<a href="#" id="copyLinkBtn"
class="btn btn-secondary w-100 mb-2"><?php echo $locale['copyurl']; ?></a>
<a href="https://www.facebook.com/sharer/sharer.php?u=<?php echo $share_url; ?>"
target="_blank" class="btn btn-primary w-100 mb-2"
onclick="hideModal()"><?php echo $locale['sharetofb']; ?></a>
<a href="https://twitter.com/intent/tweet?url=<?php echo $share_url; ?>"
target="_blank" class="btn btn-dark w-100 mb-2"
onclick="hideModal()"><?php echo $locale['sharetotwitter']; ?></a>
</div>
</div>
</div>
</div>
<?php
if ($mix->getTracklist() != []) {
echo "<div class='card mb-4 bg-body-secondary'>";
echo "<div class='card-body '>";
echo "<p class='mb-4'><span class='text-primary font-italic me-1'>" . $locale['tracklist'] . "</span></p>";
echo "<ul class='list-group list-group-flush rounded-3 bg-body-secondary'>";
$tracklist = $mix->getTracklist();
foreach ($tracklist as $track) {
echo "<li class='list-group-item bg-body-secondary d-flex justify-content-between align-items-center'>";
echo $track;
echo "</li>";
}
echo "</ul>";
echo "</div>";
echo "</div>";
}
<!-- end modals -->
?>
<script>
</div>
</div>
</div>
<div class="modal fade" id="shareModal" tabindex="-1" aria-labelledby="shareModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="shareModalLabel"><?php echo $locale['share']; ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<?php
$url = 'https://utahsdjs.com/mix/' . $_GET['mix'];
$utm_params = '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
$share_url = urlencode($url . $utm_params);
?>
<a href="#" id="copyLinkBtn"
class="btn btn-secondary w-100 mb-2"><?php echo $locale['copyurl']; ?></a>
<a href="https://www.facebook.com/sharer/sharer.php?u=<?php echo $share_url; ?>"
target="_blank" class="btn btn-primary w-100 mb-2"
onclick="hideModal()"><?php echo $locale['sharetofb']; ?></a>
<a href="https://twitter.com/intent/tweet?url=<?php echo $share_url; ?>"
target="_blank" class="btn btn-dark w-100 mb-2"
onclick="hideModal()"><?php echo $locale['sharetotwitter']; ?></a>
</div>
</div>
</div>
</div>
document.addEventListener('DOMContentLoaded', function () {
const shareBtn = document.getElementById('shareBtn');
const shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
const copyLinkBtn = document.getElementById("copyLinkBtn");
const urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
<script>
document.addEventListener('DOMContentLoaded', function () {
var shareBtn = document.getElementById('shareBtn');
var shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
var copyLinkBtn = document.getElementById("copyLinkBtn");
var urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
shareBtn.addEventListener('click', function () {
shareModal.show();
});
copyLinkBtn.onclick = function () {
navigator.clipboard.writeText(urlToCopy).then(function () {
alert('<?php echo $locale['urlcopiedtoclipboard'];?>');
shareModal.hide();
}, function (err) {
alert('<?php echo $locale['failedtocopyurl'];?>: ' + err);
});
}
window.hideModal = function () {
shareModal.hide();
}
});
// when the audio is played, send a PUT request to the page to update the playcount
document.addEventListener('DOMContentLoaded', function () {
const audioElement = document.querySelector('audio');
audioElement.addEventListener('play', function () {
fetch(window.location.href, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({mix: '<?php echo $mix->getId(); ?>'}),
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
shareBtn.addEventListener('click', function () {
shareModal.show();
});
});
});
</script>
copyLinkBtn.onclick = function () {
navigator.clipboard.writeText(urlToCopy).then(function () {
alert('<?php echo $locale['urlcopiedtoclipboard'];?>');
shareModal.hide();
}, function (err) {
alert('<?php echo $locale['failedtocopyurl'];?>: ' + err);
});
}
window.hideModal = function () {
shareModal.hide();
}
});
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MusicRecording",
"name": "<?php echo $mix->getName(); ?>",
// when the audio is played, send a PUT request to the page to update the playcount
document.addEventListener('DOMContentLoaded', function () {
const audioElement = document.querySelector('audio');
audioElement.addEventListener('play', function () {
fetch(window.location.href, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({mix: '<?php echo $mix->getId(); ?>'}),
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
});
});
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MusicRecording",
"name": "<?php echo $mix->getName(); ?>",
"byArtist": {
"@type": "MusicGroup",
"name": "<?php
$djs = $mix->getDJs();
echo $djs[0]->getName();
?>",
$djs = $mix->getDJs();
echo $djs[0]->getName();
?>",
"image": "<?php echo $djs[0]->getImg(); ?>"
},
"inAlbum": {
"@type": "MusicAlbum",
"name": "<?php echo $mix->getName(); ?>"
},
},<?php
// genre could be blank so we need to check if it is empty
if (!empty($mix->getGenres())) {
?>
"genre": "<?php
$genre = new Genre($mix->getGenres()[0], $db);
echo $genre->get_name();
?>",
"url": "<?php echo "https://utahsdjs.com/mix/" . $mix->getSlug(); ?>",
$genre = new Genre($mix->getGenres()[0], $db);
echo $genre->get_name();
?>",<?php } ?>
"url": "<?php echo "https://utahsdjs.com/mix/" . $mix->getSlug(); ?>",
"image": "<?php echo $mix->getCover(); ?>",
"duration": "<?php echo $mix->getDuration()['S']; ?>",
<?php
// if recorded is empty, use created; if created is empty, use 2008-01-01;
if (empty($mix->getRecorded())) {
if (empty($mix->getCreated())) {
$recorded = '2008-01-01 00:00:00';
} else {
$recorded = $mix->getCreated();
}
} else {
$recorded = $mix->getRecorded();
<?php
// if recorded is empty, use created; if created is empty, use 2008-01-01;
if (empty($mix->getRecorded())) {
if (empty($mix->getCreated())) {
$recorded = '2008-01-01 00:00:00';
} else {
$recorded = $mix->getCreated();
}
} else {
$recorded = $mix->getRecorded();
} ?>
} ?>
"datePublished": "<?php echo $recorded; ?>",
"datePublished": "<?php echo $recorded; ?>",
"description": "<?php
if (empty($mix->getDescription())) {
$description = 'Listen to ' . $mix->getName() . ' on Utah\'s DJs.';
}
echo $mix->getDescription(); ?>",
if (empty($mix->getDescription())) {
$description = 'Listen to ' . $mix->getName() . ' on Utah\'s DJs.';
}
echo $mix->getDescription(); ?>",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": "https://schema.org/ListenAction",
@ -516,77 +478,128 @@ require_once 'includes/header.php'; ?>
}
</script>
<script>
$(document).ready(function () {
const audio = $('#audio')[0];
const playPauseBtn = $('#play-pause-btn');
const playPauseIcon = playPauseBtn.find('i');
const seekBar = $('#seek-bar');
const currentTime = $('#current-time');
const duration = $('#duration');
</script>
<script>
$(document).ready(function () {
const audio = $('#audio')[0];
const playPauseBtn = $('#play-pause-btn');
const playPauseIcon = playPauseBtn.find('i');
const seekBar = $('#seek-bar');
const currentTime = $('#current-time');
const duration = $('#duration');
function formatTime(seconds) {
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
seconds = Math.floor(seconds % 60);
function formatTime(seconds) {
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
seconds = Math.floor(seconds % 60);
if (hours > 0) {
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
} else {
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
}
if (hours > 0) {
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
} else {
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
}
function togglePlayPause() {
if (audio.paused) {
audio.play();
playPauseIcon.removeClass('fa-play').addClass('fa-pause');
} else {
audio.pause();
playPauseIcon.removeClass('fa-pause').addClass('fa-play');
}
}
function togglePlayPause() {
if (audio.paused) {
audio.play();
playPauseIcon.removeClass('fa-play').addClass('fa-pause');
} else {
audio.pause();
playPauseIcon.removeClass('fa-pause').addClass('fa-play');
}
}
audio.addEventListener('loadedmetadata', function () {
seekBar.attr('max', audio.duration);
duration.text(formatTime(audio.duration));
});
audio.addEventListener('loadedmetadata', function () {
seekBar.attr('max', audio.duration);
duration.text(formatTime(audio.duration));
});
playPauseBtn.click(togglePlayPause);
playPauseBtn.click(togglePlayPause);
seekBar.on('input', function () {
const time = seekBar.val();
audio.currentTime = time;
});
seekBar.on('input', function () {
const time = seekBar.val();
audio.currentTime = time;
});
audio.addEventListener('timeupdate', function () {
seekBar.val(audio.currentTime);
currentTime.text(formatTime(audio.currentTime));
});
audio.addEventListener('timeupdate', function () {
seekBar.val(audio.currentTime);
currentTime.text(formatTime(audio.currentTime));
});
audio.addEventListener('ended', function () {
playPauseIcon.removeClass('fa-pause').addClass('fa-play');
});
});
</script>
audio.addEventListener('ended', function () {
playPauseIcon.removeClass('fa-pause').addClass('fa-play');
});
});
</script>
<script>
document.addEventListener('DOMContentLoaded', function () {
const audioElement = document.querySelector('audio');
<?php else: ?>
<div class="row">
<div class="col">
<div class="alert alert-danger" role="alert">
<?php echo $locale['mixNotFound']; ?>
if ('mediaSession' in navigator) {
navigator.mediaSession.metadata = new MediaMetadata({
title: '<?php echo addslashes($mix->getName()); ?>',
artist: '<?php
$djs = $mix->getDJs();
$djCount = count($djs);
$i = 0;
$djnamelist = [];
foreach ($djs as $dj) {
$djnamelist[] = $dj->getName();
$i++;
}
echo addslashes(implode(", ", $djnamelist));?>',
album: '<?php echo addslashes($mix->getName()); ?>',
artwork: [
{
src: '<?php echo $mix->getCover('small'); ?>',
sizes: '96x96',
type: 'image/jpeg'
},
{
src: '<?php echo $mix->getCover('large'); ?>',
sizes: '128x128',
type: 'image/jpeg'
}
]
});
// Define action handlers
navigator.mediaSession.setActionHandler('play', function () {
audioElement.play();
});
navigator.mediaSession.setActionHandler('pause', function () {
audioElement.pause();
});
audioElement.addEventListener('timeupdate', () => {
// Update the position state
navigator.mediaSession.setPositionState({
duration: audioElement.duration,
playbackRate: audioElement.playbackRate,
position: audioElement.currentTime
});
});
}
});
</script>
<?php }
else { ?>
<div class="row">
<div class="col">
<div class="alert alert-danger" role="alert">
<?php echo $locale['mixNotFound']; ?>
</div>
</div>
</div>
</div>
<?php }
?>
</div>
<?php endif;
?>
</div>
</section>
<?php require_once 'includes/footer.php'; ?>
<?php require_once 'includes/footer.php';

View file

@ -97,7 +97,7 @@ require_once 'includes/header.php';
foreach ($mixes as $mix) {
$output = new Mix($mix['mix_id'], $db);
$genres = $output->get_genres();
$genres = $output->getGenres();
$genrelist = [];
foreach ($genres as $genre) {
@ -110,8 +110,8 @@ require_once 'includes/header.php';
// Column for mix name and link
echo '<div class="col-md">';
echo '<p class="mb-0 " >';
echo '<a href="/mix/' . $output->get_slug() . '">';
echo $output->get_name();
echo '<a href="/mix/' . $output->getSlug() . '">';
echo $output->getName();
echo '</a>';
echo '</p>';
echo '</div>'; // End column
@ -131,7 +131,7 @@ require_once 'includes/header.php';
// Column for duration
echo '<div class="col-md">';
echo '<p class="mb-0">';
$duration = $output->get_duration();
$duration = $output->getDuration();
echo $duration['t'];
echo '</p>';
echo '</div>'; // End column
@ -140,9 +140,9 @@ require_once 'includes/header.php';
echo '<div class="col-md">';
echo '<p class="mb-0">';
// date format should just be year
$date = $output->get_recorded();
$date = $output->getRecorded();
if ($date == "") {
$date = $output->get_created();
$date = $output->getCreated();
}
echo date('Y', strtotime($date));
@ -191,10 +191,10 @@ require_once 'includes/header.php';
<script>
document.addEventListener('DOMContentLoaded', function () {
var shareBtn = document.getElementById('shareBtn');
var shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
var copyLinkBtn = document.getElementById("copyLinkBtn");
var urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
const shareBtn = document.getElementById('shareBtn');
const shareModal = new bootstrap.Modal(document.getElementById('shareModal'));
const copyLinkBtn = document.getElementById("copyLinkBtn");
const urlToCopy = window.location.href + '?utm_source=website&utm_medium=share_modal&utm_campaign=sharing';
shareBtn.addEventListener('click', function () {
shareModal.show();

View file

@ -1,124 +0,0 @@
<?php
session_start();
require_once 'includes/globals.php';
require_once 'vendor/autoload.php';
use DJMixHosting\Database;
$db = new Database($config);
$verification_code = "";
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['code'])) {
$verification_code = trim($_GET['code']);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$verification_code = trim($_POST['verification_code'] ?? '');
$username = trim($_POST['username'] ?? '');
$new_password = $_POST['new_password'] ?? '';
$confirm_password = $_POST['confirm_password'] ?? '';
if (empty($verification_code) || empty($username) || empty($new_password) || empty($confirm_password)) {
$_SESSION['error'] = "All fields are required.";
header("Location: password-reset.php?code=" . urlencode($verification_code));
exit;
}
if ($new_password !== $confirm_password) {
$_SESSION['error'] = "Passwords do not match.";
header("Location: password-reset.php?code=" . urlencode($verification_code));
exit;
}
// Look up the password reset record (purpose 'password_reset')
$stmt = $db->prepare("SELECT * FROM email_verifications WHERE verification_code = ? AND purpose = 'password_reset'");
$stmt->bind_param("s", $verification_code);
$stmt->execute();
$result = $stmt->get_result();
$record = $result->fetch_assoc();
$stmt->close();
if (!$record) {
$_SESSION['error'] = "Invalid or expired password reset code.";
header("Location: password-reset.php?code=" . urlencode($verification_code));
exit;
}
// Check expiration
$current_time = new DateTime();
$expires_at = new DateTime($record['expires_at']);
if ($current_time > $expires_at) {
$_SESSION['error'] = "Password reset code has expired.";
header("Location: password-reset.php?code=" . urlencode($verification_code));
exit;
}
// Verify the username matches the record
$stmt = $db->prepare("SELECT id, username FROM users WHERE id = ? AND username = ?");
$stmt->bind_param("is", $record['user_id'], $username);
$stmt->execute();
$userData = $stmt->get_result()->fetch_assoc();
$stmt->close();
if (!$userData) {
$_SESSION['error'] = "Username does not match our records.";
header("Location: password-reset.php?code=" . urlencode($verification_code));
exit;
}
// Update the user's password
$hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
$stmt = $db->prepare("UPDATE users SET password = ? WHERE id = ?");
$stmt->bind_param("si", $hashed_password, $userData['id']);
$stmt->execute();
$stmt->close();
// Remove the password reset record
$stmt = $db->prepare("DELETE FROM email_verifications WHERE verification_code = ? AND purpose = 'password_reset'");
$stmt->bind_param("s", $verification_code);
$stmt->execute();
$stmt->close();
$_SESSION['success'] = "Your password has been reset successfully. Please log in with your new password.";
header("Location: login.php");
exit;
}
require_once 'includes/header.php';
?>
<section class="password-reset-section py-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-5">
<?php
if(isset($_SESSION['error'])) {
echo '<div class="alert alert-danger alert-dismissible fade show mb-4" role="alert">' . htmlspecialchars($_SESSION['error']) . '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>';
unset($_SESSION['error']);
}
?>
<div class="card shadow-sm border-0">
<div class="card-body p-4">
<h3 class="text-center mb-4">Reset Password</h3>
<form action="password-reset.php" method="post" class="needs-validation" novalidate>
<input type="hidden" name="verification_code" value="<?php echo htmlspecialchars($verification_code); ?>">
<div class="mb-3">
<label for="username" class="form-label">Enter your username</label>
<input type="text" class="form-control" id="username" name="username" required>
</div>
<div class="mb-3">
<label for="new_password" class="form-label">New Password</label>
<input type="password" class="form-control" id="new_password" name="new_password" required>
</div>
<div class="mb-3">
<label for="confirm_password" class="form-label">Confirm New Password</label>
<input type="password" class="form-control" id="confirm_password" name="confirm_password" required>
</div>
<button type="submit" class="btn btn-primary w-100">Reset Password</button>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
<?php require_once 'includes/footer.php'; ?>

File diff suppressed because it is too large Load diff

View file

@ -126,7 +126,7 @@ require_once 'includes/header.php';
<button type="button" class="btn btn-sm btn-secondary mb-2"
<?php echo ($editingDisabled) ? 'disabled' : ''; ?>
data-bs-toggle="modal" data-bs-target="#profilePictureModal">
Change Picture
<?php echo $locale['changePicture']; ?>
</button>
</div>
</div>
@ -134,10 +134,10 @@ require_once 'includes/header.php';
<div class="list-group mb-4">
<div class="list-group-item d-flex justify-content-between align-items-center">
<span><?php echo $locale['username']; ?>: <?php echo htmlspecialchars($userData['username']); ?></span>
<button type="button" class="btn btn-sm btn-secondary"
<button type="button" class="btn btn-sm btn-secondary me-1"
<?php echo ($editingDisabled) ? 'disabled' : ''; ?>
data-bs-toggle="modal" data-bs-target="#usernameModal">
Change
<?php echo $locale['change']; ?>
</button>
</div>
<div class="list-group-item d-flex justify-content-between align-items-center">
@ -146,29 +146,28 @@ require_once 'includes/header.php';
<button type="button" class="btn btn-sm btn-secondary me-1"
<?php echo ($editingDisabled) ? 'disabled' : ''; ?>
data-bs-toggle="modal" data-bs-target="#emailModal">
Change
</button><?php if (!$userData['emailVerified']): ?>
<?php echo $locale['change']; ?>
</button><?php if (!$userData['emailVerified']) { ?>
<button type="button" class="btn btn-sm btn-primary"
data-bs-toggle="modal" data-bs-target="#verifyEmailModal">
Verify
<?php echo $locale['verify']; ?>
</button>
<?php endif; ?>
</div>
<?php } ?></div>
</div>
<div class="list-group-item d-flex justify-content-between align-items-center">
<span><?php echo $locale['name']; ?>: <?php echo htmlspecialchars($userData['firstName'] . ' ' . $userData['lastName']); ?></span>
<button type="button" class="btn btn-sm btn-secondary"
<button type="button" class="btn btn-sm btn-secondary me-1"
<?php echo ($editingDisabled) ? 'disabled' : ''; ?>
data-bs-toggle="modal" data-bs-target="#nameModal">
Change
<?php echo $locale['change']; ?>
</button>
</div>
<div class="list-group-item d-flex justify-content-between align-items-center">
<span>Password</span>
<button type="button" class="btn btn-sm btn-secondary"
<button type="button" class="btn btn-sm btn-secondary me-1"
<?php echo ($editingDisabled) ? 'disabled' : ''; ?>
data-bs-toggle="modal" data-bs-target="#passwordModal">
Change
<?php echo $locale['change']; ?>
</button>
</div>
</div>

View file

@ -26,21 +26,21 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Basic validation
$errors = [];
if (empty($username) || empty($email) || empty($password) || empty($confirm_password) || empty($first_name) || empty($last_name)) {
$errors[] = "All fields are required.";
$errors[] = $locale['allFieldsRequired'];
}
if ($password !== $confirm_password) {
$errors[] = "Passwords do not match.";
$errors[] = $locale['passwordDoNotMatch'];
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Invalid email format.";
$errors[] = $locale['invalidEmail'];
}
if (!preg_match('/^[a-zA-Z0-9_]{3,25}$/', $username)) {
$errors[] = "Invalid username format.";
$errors[] = $locale['invalidUsername'];
}
if (!empty($errors)) {
$_SESSION['error'] = implode(" ", $errors);
header("Location: register.php");
header("Location: /register");
exit;
}
@ -52,7 +52,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$user_id = $user->newUser($username, $password, $email, $first_name, $last_name);
} catch (\Exception $e) {
$_SESSION['error'] = $e->getMessage();
header("Location: register.php");
header("Location: /register");
exit;
}
@ -84,11 +84,13 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
]);
$sender_email = $config['aws']['ses']['sender_email'];
$recipient_email = $email;
$subject = "Verify Your Email Address";
$subject = $locale['verifyEmailAddress'];
$verification_link = $config['app']['url'] . "/verify_email.php?code={$verification_code}";
$body_text = "Thank you for registering at " . $config['app']['name'] . ".\n\n";
$body_text .= "Please verify your email address by clicking the link below or by entering the verification code in your profile:\n\n";
$body_text .= "{$verification_link}\n\nYour verification code is: {$verification_code}\nThis code will expire in 15 minutes.";
$body_text = $locale['registerThankYou'] . $config['app']['name'] . ".\n\n";
$body_text .= $locale['registerVerifyEmail'] . "\n\n";
$body_text .= $verification_link . "\n\n";
$body_text .= $locale['registerVerifyCodeIs'] . $verification_code . "\n";
$body_text .= $locale['registerVerifyTimeout'];
try {
$sesClient->sendEmail([

110
rss.php
View file

@ -1,2 +1,112 @@
<?php
require_once 'includes/globals.php';
require_once 'vendor/autoload.php';
use DJMixHosting\RSS;
use DJMixHosting\DJ;
use DJMixHosting\Mixshow;
use DJMixHosting\Genre;
// Use your site configuration variables (defined in config.php)
$serverName = $config['app']['name'];
$serverUrl = $config['app']['url'];
// Set default channel information
$channelTitle = $serverName;
$channelDescription = "RSS feed for " . $serverName;
// Instantiate the RSS object
$rss = new RSS($channelTitle, $serverUrl, $channelDescription);
// Check if a mode and slug are provided via the rewritten URLs.
if (isset($_GET['mode']) && isset($_GET['slug'])) {
$mode = $_GET['mode'];
$slug = $_GET['slug'];
if ($mode === 'dj') {
// Load DJ using the new class.
$dj = new DJ($slug, $db);
if ($dj->getID() > 0) {
$channelTitle = $dj->getName() . " | " . $serverName;
$rss = new RSS($channelTitle, $serverUrl, "RSS feed for " . $channelTitle);
// Retrieve mixes for the DJ.
$mixes = $dj->getDJMixes();
foreach ($mixes as $mix) {
$title = $mix['title'] ?? (isset($mix['details']['title']) ? $mix['details']['title'] : "New Untitled Mix");
$description = (!empty($mix['description'])) ? $mix['description'] :
(isset($mix['details']['description']) ? $mix['details']['description'] : $title . " is a mix hosted on " . $serverName);
$link = $serverUrl . 'mix/' . $mix['slug'] . '/';
$pubDate = $mix['recorded'] ?? ($mix['created'] ?? '2008-01-01 12:00:00');
$rss->addItem($title, $description, $link, $pubDate);
}
}
} elseif ($mode === 'mixshow') {
// Load Mixshow using the new class.
$mixshow = new Mixshow($slug, $db);
if ($mixshow->get_id() > 0) {
$channelTitle = $mixshow->get_name() . " | " . $serverName;
$rss = new RSS($channelTitle, $serverUrl, "RSS feed for " . $channelTitle);
// The mixshow object returns an array of mix IDs.
$mixIDs = $mixshow->get_mixes(); // Each element should contain 'mix_id'
foreach ($mixIDs as $mixData) {
$mixID = $mixData['mix_id'];
// getMixByID() should be defined to return a mixs details as an associative array.
$mix = getMixByID($mixID);
if ($mix) {
$title = $mix['title'] ?? (isset($mix['details']['title']) ? $mix['details']['title'] : "New Untitled Mix");
$description = (!empty($mix['description'])) ? $mix['description'] :
(isset($mix['details']['description']) ? $mix['details']['description'] : $title . " is a mix hosted on " . $serverName);
$link = $serverUrl . 'mix/' . $mix['slug'] . '/';
$pubDate = $mix['recorded'] ?? ($mix['created'] ?? '2008-01-01 12:00:00');
$rss->addItem($title, $description, $link, $pubDate);
}
}
}
} elseif ($mode === 'genre') {
// For genres, we assume helper functions exist.
$genre = getGenreSlug($slug); // Should return an associative array with at least 'id' and 'genre'
if (!empty($genre['id'])) {
$channelTitle = $genre['genre'] . " | " . $serverName;
$rss = new RSS($channelTitle, $serverUrl, "RSS feed for " . $channelTitle);
// getMoreMixesByGenre() should return an array of mixes.
$mixes = array_reverse(getMoreMixesByGenre($genre['id']));
foreach ($mixes as $mix) {
$title = $mix['title'] ?? (isset($mix['details']['title']) ? $mix['details']['title'] : "New Untitled Mix");
$description = (!empty($mix['description'])) ? $mix['description'] :
(isset($mix['details']['description']) ? $mix['details']['description'] : $title . " is a mix hosted on " . $serverName);
$link = $serverUrl . 'mix/' . $mix['slug'] . '/';
$pubDate = $mix['recorded'] ?? ($mix['created'] ?? '2008-01-01 12:00:00');
$rss->addItem($title, $description, $link, $pubDate);
}
}
} else {
// Unknown mode fallback to all mixes.
$mixes = getAllMix();
foreach ($mixes as $mix) {
$title = $mix['title'] ?? (isset($mix['details']['title']) ? $mix['details']['title'] : "New Untitled Mix");
$description = (!empty($mix['description'])) ? $mix['description'] :
(isset($mix['details']['description']) ? $mix['details']['description'] : $title . " is a mix hosted on " . $serverName);
$link = $serverUrl . 'mix/' . $mix['slug'] . '/';
$pubDate = $mix['recorded'] ?? ($mix['created'] ?? '2008-01-01 12:00:00');
$rss->addItem($title, $description, $link, $pubDate);
}
}
} else {
// No mode provided default to a feed of all mixes.
$mixes = getAllMix();
foreach ($mixes as $mix) {
$title = $mix['title'] ?? (isset($mix['details']['title']) ? $mix['details']['title'] : "New Untitled Mix");
$description = (!empty($mix['description'])) ? $mix['description'] :
(isset($mix['details']['description']) ? $mix['details']['description'] : $title . " is a mix hosted on " . $serverName);
$link = $serverUrl . 'mix/' . $mix['slug'] . '/';
$pubDate = $mix['recorded'] ?? ($mix['created'] ?? '2008-01-01 12:00:00');
$rss->addItem($title, $description, $link, $pubDate);
}
}
// Set the appropriate header and output the RSS XML.
header("Content-type: application/rss+xml");
echo $rss->generateXML();

118
search.php Normal file
View file

@ -0,0 +1,118 @@
<?php
require_once 'includes/globals.php';
$title = "Search Results";
require_once 'includes/header.php';
// Get the search query and current page.
$query = isset($_GET['q']) ? trim($_GET['q']) : '';
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$resultsPerPage = 10;
if (empty($query)) {
echo "<div class='container py-5'><div class='alert alert-warning'>Please enter a search query.</div></div>";
require_once 'includes/footer.php';
exit;
}
// Instantiate the classes using your DB connection.
use DJMixHosting\DJs;
use DJMixHosting\Genres;
use DJMixHosting\Mixshows;
use DJMixHosting\Database;
use DJMixHosting\Mixes;
$db = new Database($config);
$djsObj = new DJs($db);
$genresObj = new Genres($db);
$mixshowsObj = new Mixshows($db);
$mixesObj = new Mixes($db);
// Execute the search methods.
$djsResults = $djsObj->search($query, $page, $resultsPerPage);
$genresResults = $genresObj->search($query, $page, $resultsPerPage);
$mixshowsResults = $mixshowsObj->search($query, $page, $resultsPerPage);
$mixesResults = $mixesObj->search($query, $page, $resultsPerPage);
// Combine and label results.
$results = [];
foreach ($djsResults as $result) {
$result['type'] = 'DJ';
$results[] = $result;
}
foreach ($genresResults as $result) {
$result['type'] = 'Genre';
$results[] = $result;
}
foreach ($mixshowsResults as $result) {
$result['type'] = 'Mixshow';
$results[] = $result;
}
foreach ($mixesResults as $result) {
$result['type'] = 'Mix';
// Rename title field to name for consistency.
$result['name'] = $result['title'];
$results[] = $result;
}
// (Optional) You can sort the combined results here if needed.
?>
<section>
<div class="container py-5">
<!-- Breadcrumb -->
<nav aria-label="breadcrumb" class="bg-body-tertiary rounded-3 p-3 mb-4">
<ol class="breadcrumb mb-0">
<li class="breadcrumb-item"><a href="/"><?php echo $locale['home']; ?></a></li>
<li class="breadcrumb-item active" aria-current="page">Search</li>
</ol>
</nav>
<!-- Search Heading -->
<h1 class="mb-4">Search Results for "<span class="text-primary"><?php echo htmlspecialchars($query); ?></span>"</h1>
<?php if (empty($results)): ?>
<div class="alert alert-info">No results found for your search query.</div>
<?php else: ?>
<div class="row">
<?php foreach ($results as $result): ?>
<div class="col-md-6 mb-4">
<div class="card h-100 shadow-sm">
<div class="card-body">
<h5 class="card-title">
<?php echo htmlspecialchars($result['name']); ?>
<span class="badge bg-secondary ms-2"><?php echo htmlspecialchars($result['type']); ?></span>
</h5>
<p class="card-text">
<?php echo htmlspecialchars($result['bio'] ?? $result['description'] ?? ''); ?>
</p>
</div>
<?php if (isset($result['slug'])): ?>
<div class="card-footer text-end bg-transparent border-0">
<a href="/<?php echo strtolower($result['type']); ?>/<?php echo htmlspecialchars($result['slug']); ?>" class="btn btn-sm btn-primary">View Details</a>
</div>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- Pagination -->
<nav aria-label="Search result pages">
<ul class="pagination justify-content-center">
<?php if ($page > 1): ?>
<li class="page-item">
<a class="page-link" href="/search.php?q=<?php echo urlencode($query); ?>&page=<?php echo $page - 1; ?>">Previous</a>
</li>
<?php endif; ?>
<li class="page-item">
<a class="page-link" href="/search.php?q=<?php echo urlencode($query); ?>&page=<?php echo $page + 1; ?>">Next</a>
</li>
</ul>
</nav>
</div>
</section>
<?php require_once 'includes/footer.php'; ?>

View file

@ -69,7 +69,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
// Simple slugify function
function slugify($text) {
function slugify($text): string
{
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
$text = preg_replace('~[^-\w]+~', '', $text);
@ -147,12 +148,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
unset($_SESSION['upload_task']);
$_SESSION['success'] = $locale['uploadedPendingApproval'];
header("Location: profile.php");
header("Location: /profile");
exit;
}
}
?>
<?php require_once 'includes/header.php'; ?>
require_once 'includes/header.php'; ?>
<section class="upload-section py-5">
<div class="container">
@ -170,46 +171,50 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<h3 class="card-title mb-4"><?php echo $locale['uploadHeader1'];?></h3>
<!-- Info Alert -->
<div class="alert alert-info">
<h4 class="alert-heading">Important Upload Information</h4>
<p>Utah's DJs is primarily an archival project dedicated to preserving the history and culture of EDM DJs in Utah. Your uploads contribute to this historical record.</p>
<h4 class="alert-heading"><?php echo $locale['uploadAlertHeader'];?></h4>
<p><?php echo $locale['uploadAlert1'];?></p>
</div>
<!-- Requirements -->
<h4 class="mb-3">Before You Upload</h4>
<h4 class="mb-3"><?php echo $locale['uploadHeader2'];?></h4>
<ul class="list-group list-group-flush mb-4">
<li class="list-group-item">
<i class="fas fa-check-circle text-success me-2"></i>
Verify that all DJs involved are listed in our database. If a DJ is not listed, they must be added and approved before uploading.
<?php echo $locale['uploadAlert2'];?>
</li>
<li class="list-group-item">
<i class="fas fa-check-circle text-success me-2"></i>
Check that appropriate genres are available for your mix. New genres require approval before they can be used.
<?php echo $locale['uploadAlert3'];?>
</li>
<li class="list-group-item">
<i class="fas fa-info-circle text-primary me-2"></i>
You can submit new DJ or genre requests through your profile settings.
<?php echo $locale['uploadAlert4'];?>
</li>
</ul>
<!-- Process Steps -->
<h4 class="mb-3">Upload Process</h4>
<h4 class="mb-3"><?php echo $locale['uploadProcess'];?></h4>
<ol class="list-group list-group-numbered mb-4">
<li class="list-group-item">Upload your mix file (MP3 or ZIP format)</li>
<li class="list-group-item">Enter mix details, including title, description, and recording date</li>
<li class="list-group-item">Select relevant genres and DJs</li>
<li class="list-group-item">Submit for review</li>
<li class="list-group-item"><?php echo $locale['uploadProcess1'];?></li>
<li class="list-group-item"><?php echo $locale['uploadProcess2'];?></li>
<li class="list-group-item"><?php echo $locale['uploadProcess3'];?></li>
<li class="list-group-item"><?php echo $locale['uploadProcess4'];?></li>
</ol>
<!-- Upload Form -->
<div class="card mt-4">
<div class="card-body">
<h4 class="card-title mb-4">Upload Your Mix</h4>
<h4 class="card-title mb-4"><?php echo $locale['uploadAMix'];?></h4>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="upload_file">
<div class="mb-3">
<label for="mix_file" class="form-label">Select Mix File (MP3 or ZIP)</label>
<input type="file" class="form-control" id="mix_file" name="mix_file" accept=".mp3,.zip" required>
<div class="form-text">Maximum file size: 500MB</div>
<label for="mix_file" class="form-label"><?php echo $locale['uploadSelectMix'];?></label>
<?php
// we need to take the file extensions from config allowed_file_types and comma separate them with periods
$acceptedFileTypes = implode(",", array_map(function($ext) { return "." . $ext; }, $config['uploads']['allowed_file_types']));
?>
<input type="file" class="form-control" id="mix_file" name="mix_file" accept="<?php echo $acceptedFileTypes; ?>" required>
<div class="form-text"><?php echo $locale['uploadMaxFileSize'];?></div>
</div>
<button type="submit" class="btn btn-primary">
<i class="fas fa-upload me-2"></i>Upload File
<i class="fas fa-upload me-2"></i><?php echo $locale['uploadFile'];?>
</button>
</form>
</div>
@ -246,19 +251,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<form action="/upload" method="post" class="needs-validation" novalidate>
<input type="hidden" name="action" value="submit_details">
<div class="mb-3">
<label for="title" class="form-label">Mix Title</label>
<label for="title" class="form-label"><?php echo $locale['mixName'];?></label>
<input type="text" class="form-control" id="title" name="title" required>
</div>
<div class="mb-3">
<label for="description" class="form-label">Mix Description</label>
<label for="description" class="form-label"><?php echo $locale['mixDescription'];?></label>
<textarea class="form-control" id="description" name="description" rows="3"></textarea>
</div>
<div class="mb-3">
<label for="recorded" class="form-label">Recorded Date</label>
<label for="recorded" class="form-label"><?php echo $locale['recordedDate'];?></label>
<input type="date" class="form-control" id="recorded" name="recorded" required>
</div>
<div class="mb-3">
<label for="genres" class="form-label">Select Genres (type to search)</label>
<label for="genres" class="form-label"><?php echo $locale['uploadSelectGenres'];?></label>
<select class="form-select" id="genres" name="genres[]" multiple required>
<?php foreach ($allGenres as $genre): ?>
<option value="<?php echo htmlspecialchars($genre['id']); ?>"><?php echo htmlspecialchars($genre['name']); ?></option>
@ -266,11 +271,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</select>
</div>
<div class="mb-3">
<label class="form-label">Select DJs (Maximum 3)</label>
<label class="form-label"><?php echo $locale['uploadSelectDJSMax3'];?></label>
<div class="row">
<div class="col">
<select class="form-select" name="dj1" required>
<option value="">Select DJ 1</option>
<option value=""><?php echo $locale['uploadSelectDJ1'];?></option>
<?php foreach ($allDJs as $dj): ?>
<option value="<?php echo htmlspecialchars($dj['id']); ?>"><?php echo htmlspecialchars($dj['name']); ?></option>
<?php endforeach; ?>
@ -278,7 +283,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</div>
<div class="col">
<select class="form-select" name="dj2">
<option value="">Select DJ 2 (Optional)</option>
<option value=""><?php echo $locale['uploadSelectDJ2'];?></option>
<?php foreach ($allDJs as $dj): ?>
<option value="<?php echo htmlspecialchars($dj['id']); ?>"><?php echo htmlspecialchars($dj['name']); ?></option>
<?php endforeach; ?>
@ -286,7 +291,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</div>
<div class="col">
<select class="form-select" name="dj3">
<option value="">Select DJ 3 (Optional)</option>
<option value=""><?php echo $locale['uploadSelectDJ3'];?></option>
<?php foreach ($allDJs as $dj): ?>
<option value="<?php echo htmlspecialchars($dj['id']); ?>"><?php echo htmlspecialchars($dj['name']); ?></option>
<?php endforeach; ?>
@ -294,7 +299,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Submit Mix</button>
<button type="submit" class="btn btn-primary"><?php echo $locale['uploadSubmitMix'];?></button>
</form>
</div>
</div>