Merge branch 'main' into main

This commit is contained in:
Donald Zou 2025-04-20 15:45:18 +08:00 committed by GitHub
commit 7ac153848b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 784 additions and 148 deletions

View File

@ -1,50 +0,0 @@
name: Docker-Analyze
on:
schedule:
- cron: "0 0 * * *" # Daily at midnight UTC
workflow_dispatch:
inputs:
trigger-build:
description: 'Trigger a manual build and push'
default: 'true'
env:
DOCKER_IMAGE: donaldzou/wgdashboard
jobs:
docker_analyze:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
- name: Install Docker Scout
run: |
echo "Installing Docker Scout..."
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s --
echo "Docker Scout installed successfully."
- name: Analyze Docker image with Docker Scout
id: analyze-image
run: |
echo "Analyzing Docker image with Docker Scout..."
docker scout cves ${{ env.DOCKER_IMAGE }}:latest > scout-results.txt
cat scout-results.txt
echo "Docker Scout analysis completed."
- name: Fail if critical CVEs are found
run: |
if grep -q "0C" scout-results.txt; then
echo "No critical vulnerabilities found! Continueing."
exit 0
else
echo "At least one critical vulnerabilities found! Exiting."
exit 1
fi

View File

@ -1,8 +1,10 @@
name: Docker-Build
name: Docker Scan and Build
on:
push:
branches: [ main ]
schedule:
- cron: "0 0 * * *" # Daily at midnight UTC
workflow_dispatch:
inputs:
trigger-build:
@ -13,7 +15,7 @@ env:
DOCKER_IMAGE: donaldzou/wgdashboard
jobs:
docker_build:
docker_build_analyze:
runs-on: ubuntu-latest
strategy:
fail-fast: false
@ -21,17 +23,17 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@ -42,3 +44,12 @@ jobs:
push: true
tags: ${{ env.DOCKER_IMAGE }}:latest
platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7
- name: Docker Scout
id: docker-scout
uses: docker/scout-action@v1
with:
command: cves
image: ${{ env.DOCKER_IMAGE }}:latest
only-severities: critical,high,medium,low,unspecified
github-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -0,0 +1,28 @@
name: Qodana
on:
workflow_dispatch:
pull_request:
push:
branches: # Specify your branches here
- main # The 'main' branch
- v4.2-dev
jobs:
qodana:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
checks: write
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
fetch-depth: 0 # a full history is required for pull request analysis
- name: 'Qodana Scan'
uses: JetBrains/qodana-action@v2024.3
with:
pr-mode: false
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_2090978292 }}
QODANA_ENDPOINT: 'https://qodana.cloud'

View File

@ -19,12 +19,19 @@
<p align="center">
<img src="https://forthebadge.com/images/badges/built-with-love.svg">
</p>
<p align="center">
<a href="https://github.com/donaldzou/wireguard-dashboard/releases/latest"><img src="https://img.shields.io/github/v/release/donaldzou/wireguard-dashboard"></a>
<a href="https://wakatime.com/badge/github/donaldzou/WGDashboard"><img src="https://wakatime.com/badge/github/donaldzou/WGDashboard.svg" alt="wakatime"></a>
<a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fdonaldzou%2FWGDashboard&count_bg=%2379C83D&title_bg=%23555555&icon=github.svg&icon_color=%23E7E7E7&title=Visitor&edge_flat=false"/></a>
<a href="https://hitscounter.dev"><img src="https://hitscounter.dev/api/hit?url=https%3A%2F%2Fgithub.com%2Fdonaldzou%2FWGDashboard&label=Visitor&icon=github&color=%230a58ca"></a>
<img src="https://img.shields.io/docker/pulls/donaldzou/wgdashboard?logo=docker&label=Docker%20Image%20Pulls&labelColor=ffffff">
</p>
<p align="center"><b>This project is supported by</b></p>
<p align="center">
<a href="https://m.do.co/c/a84cb9aac585">
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" width="201px">
</a>
</p>
<p align="center">Monitoring WireGuard is not convenient, in most case, you'll need to login to your server and type <code>wg show</code>. That's why this project is being created, to view and manage all WireGuard configurations in a easy way.</p>
<p align="center">With all these awesome features, while keeping it <b>easy to install and use</b></p>

6
qodana.yaml Normal file
View File

@ -0,0 +1,6 @@
version: "1.0"
linter: jetbrains/qodana-python:2024.3
profile:
name: qodana.recommended
include:
- name: CheckDependencyLicenses

View File

@ -4,51 +4,86 @@
"lang_name": "Arabic",
"lang_name_localized": "العربية"
},
{
"lang_id": "be",
"lang_name": "Belarusian",
"lang_name_localized": "Беларуская"
},
{
"lang_id": "zh-cn",
"lang_name": "Chinese (Simplified)",
"lang_name_localized": "中文(简体)"
},
{
"lang_id": "zh-hk",
"lang_name": "Chinese (Traditional)",
"lang_name_localized": "中文(繁體)"
},
{
"lang_id": "cs",
"lang_name": "Czech",
"lang_name_localized": "Česky"
},
{
"lang_id": "de-de",
"lang_name": "German",
"lang_name_localized": "Deutsch"
},
{
"lang_id": "en",
"lang_name": "English",
"lang_name_localized": "English"
},
{
"lang_id": "es-es",
"lang_name": "Spanish",
"lang_name_localized": "Español"
},
{
"lang_id": "fr-ca",
"lang_name": "French (Quebec)",
"lang_name_localized": "Français (Québec)"
},
{
"lang_id": "it-it",
"lang_name": "Italian",
"lang_name_localized": "Italiano"
},
{
"lang_id": "ko",
"lang_name": "Korean",
"lang_name_localized": "한국어"
},
{
"lang_id": "nl-nl",
"lang_name": "Dutch",
"lang_name_localized": "Nederlands"
},
{
"lang_id": "en",
"lang_name": "English",
"lang_name_localized": "English"
},
{
"lang_id": "fa",
"lang_name": "Farsi",
"lang_name_localized": "فارسی"
},
{
"lang_id": "fr-ca",
"lang_name": "French (Quebec)",
"lang_name_localized": "Français (Québec)"
},
{
"lang_id": "de-de",
"lang_name": "German",
"lang_name_localized": "Deutsch"
},
{
"lang_id": "it-it",
"lang_name": "Italian",
"lang_name_localized": "Italiano"
},
{
"lang_id": "ja-jp",
"lang_name": "Japanese",
"lang_name_localized": "日本語"
},
{
"lang_id": "ko",
"lang_name": "Korean",
"lang_name_localized": "한국어"
},
{
"lang_id": "pl",
"lang_name": "Polish",
"lang_name_localized": "Polski"
},
{
"lang_id": "ru",
"lang_name": "Russian",
"lang_name_localized": "Русский"
},
{
"lang_id": "es-es",
"lang_name": "Spanish",
"lang_name_localized": "Español"
},
{
"lang_id": "sv-se",
"lang_name": "Swedish",
"lang_name_localized": "Svenska"
},
{
"lang_id": "th",
"lang_name": "Thai",
@ -63,30 +98,5 @@
"lang_id": "uk",
"lang_name": "Ukrainian",
"lang_name_localized": "Українська"
},
{
"lang_id": "zh-cn",
"lang_name": "Chinese (Simplified)",
"lang_name_localized": "中文(简体)"
},
{
"lang_id": "zh-hk",
"lang_name": "Chinese (Traditional)",
"lang_name_localized": "中文(繁體)"
},
{
"lang_id": "sv-se",
"lang_name": "Swedish",
"lang_name_localized": "Svenska"
},
{
"lang_id": "pl",
"lang_name": "Polish",
"lang_name_localized": "Polski"
},
{
"lang_id": "be",
"lang_name": "Belarusian",
"lang_name_localized": "Беларуская"
}
]

312
src/static/locale/fa.json Normal file
View File

@ -0,0 +1,312 @@
{
"Welcome to": "خوش آمدید",
"Username": "نام کاربری",
"Password": "رمز عبور",
"OTP from your authenticator": "رمز یک‌بارمصرف از برنامه احراز هویت شما",
"Sign In": "ورود",
"Signing In\\.\\.\\.": "ورود به سیستم...",
"Access Remote Server": "دسترسی به سرور از راه دور",
"Server": "سرور",
"Click": "کلیک",
"Pinging...": "در حال پینگ کردن...",
"to add your server": "برای افزودن سرور شما",
"Server List": "لیست سرور ها",
"Sorry, your username or password is incorrect.": "متأسفیم، نام کاربری یا رمز عبور شما نادرست است.",
"Home": "خانه",
"Settings": "تنظیمات",
"Tools": "ابزار ها",
"Sign Out": "خروج",
"Checking for update...": "در حال بررسی به‌روزرسانی...",
"You're on the latest version": "شما از آخرین نسخه استفاده می‌کنید",
"WireGuard Configurations": "پیکربندی‌های وایرگارد",
"You don't have any WireGuard configurations yet. Please check the configuration folder or change it in Settings. By default the folder is /etc/wireguard.": "شما هنوز هیچ پیکربندی وایرگاردی ندارید. لطفاً پوشه پیکربندی را بررسی کنید یا آن را در تنظیمات تغییر دهید. به‌طور پیش‌فرض، پوشه /etc/wireguard است.",
"Configuration": "پیکربندی",
"Configurations": "تنظیمات",
"Peers Default Settings": "تنظیمات پیش فرض Peers",
"Dashboard Theme": "تم داشبورد",
"Light": "روشن",
"Dark": "تاریک",
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "این تغییر به‌صورت سراسری اعمال خواهد شد و برای کد QR و فایل پیکربندی همه Peer`s اعمال می‌شود.",
"WireGuard Configurations Settings": "تنظیمات پیکربندی‌های وایرگارد",
"Configurations Directory": "پوشه پیکربندی‌ها",
"Remember to remove / at the end of your path. e.g /etc/wireguard": "به یاد داشته باشید که / را در انتهای مسیر خود حذف کنید. به عنوان مثال: /etc/wireguard",
"WGDashboard Account Settings": "تنظیمات حساب WGDashboard",
"رمز عبور فعلی": "",
"رمز عبور جدید": "",
"تکرار رمز عبور جدید": "",
"بروزرسانی رمز عبور": "",
"Multi-Factor Authentication \\(MFA\\)": "احراز هویت چند عاملی (MFA)",
"Reset": "بازنشانی",
"Setup": "نصب",
"API Keys": "API Keys",
"API Key": "API Key",
"Key": "کلید",
"Enabled": "فعال شد",
"Disabled": "غیرفعال شد",
"No WGDashboard API Key": "کلید API WGDashboard وجود ندارد",
"Expire At": "انقضا در",
"Are you sure to delete this API key\\?": "آیا مطمئن هستید که این کلید API را حذف می کنید؟",
"Create API Key": "ایجاد کلید API",
"When should this API Key expire\\?": "چه زمانی باید این کلید API منقضی شود؟",
"Never Expire": "نامحدود",
"Don't think that's a good idea": "پیشنهاد نمی شود",
"Creating\\.\\.\\.": "در ساختن...",
"Create": "ایجاد",
"Status": "وضعیت",
"On": "روشن",
"Off": "خاموش",
"Turning On\\.\\.\\.": "در حال روشن شدن...",
"Turning Off\\.\\.\\.": "در حال خاموش شدن ...",
"Address": "آدرس",
"Listen Port": "پورت گوش‌دادن",
"Public Key": "کلید عمومی",
"Connected Peers": "Peer`s متصل",
"Total Usage": "مصرف کل",
"Total Received": "مجموع دریافت شده",
"Total Sent": "مجموع ارسال شده",
"Peers Data Usage": "داده های مصرفی Peer`s",
"Real Time Received Data Usage": "داده های مصرفی دریافت شده در زمان واقعی",
"Real Time Sent Data Usage": "داده های مصرفی ارسال شده در زمان واقعی",
"Peer": "Peer",
"Peers": "Peers",
"Peer Settings": "تنظیمات Peer",
"Download All": "دانلود همه",
"Search Peers\\.\\.\\.": "جستجو Peer",
"Display": "نمایش",
"Sort By": "مرتب سازی براساس",
"Refresh Interval": "فاصله بازخوانی",
"Name": "نام",
"Allowed IPs": "IP های مجاز",
"Restricted": "محدود شده",
"(.*) Seconds": "1$ ثانیه",
"(.*) Minutes": "$1 دقیقه",
"Configuration Settings": "تنظیمات پیکربندی",
"Peer Jobs": "جاب peer",
"Active Jobs": "جاب های فعال",
"All Active Jobs": "همه جاب های فعال",
"Logs": "گزارش ها",
"Private Key": "کلید خصوصی",
"\\(Required for QR Code and Download\\)": "(برای کد QR و دانلود لازم است)",
"\\(Required\\)": "(الزامی)",
"Endpoint Allowed IPs": "IP های مجاز نقطه پایانی",
"DNS": "DNS",
"Optional Settings": "تنظیمات اختیاری",
"Pre-Shared Key": "کلید از قبل به اشتراک گذاشته شده",
"MTU": "MTU",
"Persistent Keepalive": " نگه‌داری پایدار اتصال",
"Reset Data Usage": "بازنشانی مصرف داده",
"Total": "مجموع",
"Sent": "ارسال",
"Received": "دریافت",
"Revert": "برگرداندن تغییرات",
"Save Peer": "ذخیره peer",
"QR Code": "QR Code",
"Schedule Jobs": "برنامه ریزی جاب ها",
"Job": "جاب",
"Job ID": "شناسه جاب",
"Unsaved Job": "جاب ذخیره نشده",
"This peer does not have any job yet\\.": "این peer هیچ جاب فعالی ندارد",
"if": "اگر",
"is": "هست",
"then": "سپس",
"larger than": "بزرگتر از",
"Date": "تاریخ",
"Restrict Peer": "محدود کردن peer",
"Delete Peer": "حذف peer",
"Edit": "ویرایش",
"Delete": "حذف",
"Deleting...": "درحال حذف ...",
"Cancel": "لغو",
"Save": "ذخیره",
"No active job at the moment\\.": " در حال حاضر هیچ جابی فعال نیست .",
"Jobs Logs": "گزارش جاب ها",
"Updated at": "بروزرسانی شده در",
"Refresh": "تازه کردن",
"Filter": "فیلتر",
"Success": "موفق",
"Failed": "ناموفق",
"Log ID": "شناسه گزارش",
"Message": "پیام",
"Share Peer": "به اشتراک گذاشتن peer",
"Currently the peer is not sharing": "این peer را نمی توان به اشتراک گذاشت",
"Sharing\\.\\.\\.": "اشتراک گذاری...",
"Start Sharing": "شروع اشتراک گذاری",
"Stop Sharing\\.\\.\\.": "توقف اشتراک گذاری...",
"Stop Sharing": "توقف اشتراک گذاری",
"Access Restricted": "دسترسی محدود شده",
"Restrict Access": "محدود کردن دسترسی",
"Restricting\\.\\.\\.": "محدود کردن...",
"Allow Access": "اجازه دسترسی",
"Allowing Access\\.\\.\\.": "اجازه دسترسی...",
"Download \\& QR Code is not available due to no private key set for this peer": "دانلود و کد QR در دسترس نیست چون کلید خصوصی برای این peer تنظیم نشده است.",
"Add Peers": "اضافه کردن peers",
"Bulk Add": "افزودن انبوه",
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "با افزودن گروهی Peers، نام هر peer به‌صورت خودکار تولید می‌شود و IP مجاز (Allowed IP) به اولین IP آزاد بعدی اختصاص داده خواهد شد.",
"How many peers you want to add\\?": "چند peer می خواهید اضافه کنید؟",
"You can add up to (.*) peers": "شما می‌توانید تا حداکثر $1 Peer اضافه کنید.",
"Use your own Private and Public Key": "از کلید خصوصی و عمومی خود استفاده کنید",
"Enter IP Address/CIDR": "نشانی IP یا محدوده CIDR را وارد کنید.",
"IP Address/CIDR": "IP Address/CIDR",
"or": "یا",
"Pick Available IP": "انتخاب IP موجود",
"No available IP containing": "هیچ IP قابل استفاده‌ای شامل این مقدار یافت نشد.",
"Add": "اضافه کردن",
"Adding\\.\\.\\.": "درحال اضافه کردن...",
"Failed to check available update": "عدم موفقیت در بررسی آپدیت‌های در دسترس.",
"Nice to meet you!": "!از آشنایی با شما خوشوقتم 😊",
"Please fill in the following fields to finish setup": "لطفاً فیلدهای زیر را برای تکمیل تنظیمات پر کنید.",
"Create an account": "ایجاد حساب کاربری",
"Enter an username you like": "یک نام کاربری دلخواه وارد کنید",
"Enter a password": "رمز عبور وارد کنید",
"\\(At least 8 characters and make sure is strong enough!\\)": "(حداقل ۸ کاراکتر و مطمئن شوید که رمز عبور به‌اندازه کافی قوی باشد!)",
"Confirm password": "تأیید رمز عبور",
"Next": "بعدی",
"Saving\\.\\.\\.": "درحال ذخیره کردن...",
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "۱. لطفاً کد QR زیر را اسکن کنید تا کد یک‌بار مصرف زمان‌دار (TOTP) را با برنامه احراز هویت دلخواه خود تولید کنید.",
"Or you can click the link below:": "یا می‌توانید روی لینک زیر کلیک کنید:",
"2\\. Enter the TOTP generated by your authenticator to verify": "۲. کد یک‌بار مصرف زمان‌دار (TOTP) تولیدشده توسط برنامه احراز هویت خود را وارد کنید تا تأیید انجام شود.",
"TOTP verified!": "کد TOTP با موفقیت تأیید شد!",
"I don't need MFA": "من به احراز هویت چندمرحله‌ای (MFA) نیاز ندارم.",
"Complete": "تکمیل شد",
"(v[0-9.]{1,}) is now available for update!": "نسخه$1 اکنون برای به‌روزرسانی در دسترس است!",
"Current Version:": "ورژن فعلی :",
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "اوه نه... این لینک یا منقضی شده یا نامعتبر است.",
"Scan QR Code with the WireGuard App to add peer": "کد QR را با اپلیکیشن WireGuard اسکن کنید تا Peer اضافه شود.",
"or click the button below to download the ": "یا روی دکمه زیر کلیک کنید تا فایل را دانلود کنید",
" file": " فایل",
"FROM ": "از ",
"(.*) is on": "$1 فعال است",
"(.*) is off": "$1 غیرفعال است",
"Allowed IPs is invalid": "مقدار Allowed IPs نامعتبر است",
"Peer created successfully": "peer با موفقیت ساخته شد",
"Please fill in all required box": "لطفاً تمام فیلدهای الزامی را پر کنید.",
"Please specify amount of peers you want to add": "لطفاً تعداد Peers که می‌خواهید اضافه کنید را مشخص کنید.",
"No more available IP can assign": "IP آزادی برای اختصاص دادن باقی نمانده است.",
"The maximum number of peers can add is (.*)": "حداکثر تعداد peer که می‌توان اضافه کرد عبارت است از: $1",
"Generating key pairs by bulk failed": "تولید گروهی کلیدهای جفتی (Key Pairs) با شکست مواجه شد.",
"Failed to add peers in bulk": "افزودن گروهی Peers با شکست مواجه شد.",
"This peer already exist": "این Peer از قبل وجود دارد.",
"This IP is not available: (.*)": " IP $1 در دسترس نیست:",
"Configuration does not exist": "پیکربندی وجود ندارد.",
"Peer does not exist": "peer وجود ندارد",
"Please provide a valid configuration name": "لطفاً یک نام پیکربندی معتبر وارد کنید.",
"Peer saved": "peer ذخیره شد",
"Allowed IPs already taken by another peer": "این IPها قبلاً به peer دیگری اختصاص داده شده‌اند.",
"Endpoint Allowed IPs format is incorrect": "فرمت IPهای مجاز در Endpoint نادرست است.",
"DNS format is incorrect": "فرمت DNS نادرست است.",
"MTU format is not correct": "فرمت MTU نادرست است.",
"Persistent Keepalive format is not correct": "فرمت Persistent Keepalive نادرست است.",
"Private key does not match with the public key": "کلید خصوصی با کلید عمومی مطابقت ندارد.",
"Update peer failed when updating Pre-Shared Key": "به‌روزرسانی کلید مشترک (Pre-Shared Key) برای peer با شکست مواجه شد.",
"Update peer failed when updating Allowed IPs": "به‌روزرسانی IPهای مجاز برای peer با شکست مواجه شد.",
"Update peer failed when saving the configuration": "ذخیره پیکربندی پس از به‌روزرسانی peer با شکست مواجه شد.",
"Peer data usage reset successfully": "میزان مصرف داده peer با موفقیت بازنشانی شد.",
"Peer download started": "دانلود peer آغاز شد.",
"Please specify one or more peers": "لطفاً یک یا چند peer را مشخص کنید.",
"Share link failed to create. Reason: (.*)": "ایجاد لینک اشتراک‌گذاری با شکست مواجه شد. دلیل: $1",
"Link expire date updated": "تاریخ انقضای لینک با موفقیت به‌روزرسانی شد.",
"Link expire date failed to update. Reason: (.*)": "به‌روزرسانی تاریخ انقضای لینک با شکست مواجه شد. دلیل: $1",
"Peer job saved": "جاب peer با موفقیت ذخیره شد.",
"Please specify job": "لطفاً یک جاب مشخص کنید.",
"Please specify peer and configuration": "لطفاً peer و پیکربندی را مشخص کنید.",
"Peer job deleted": "جاب peer حذف شد.",
"API Keys function is successfully enabled": "قابلیت کلیدهای API با موفقیت فعال شد.",
"API Keys function is successfully disabled": "قابلیت کلیدهای API با موفقیت غیرفعال شد.",
"API Keys function is failed to enable": "فعال‌سازی قابلیت کلیدهای API با شکست مواجه شد.",
"API Keys function is failed to disable": "غیرفعال‌سازی قابلیت کلیدهای API با شکست مواجه شد.",
"WGDashboard API Keys function is disabled": "قابلیت کلیدهای API در WGDashboard غیرفعال است.",
"WireGuard configuration path saved": "مسیر پیکربندی WireGuard ذخیره شد.",
"API Key deleted": "کلید API حذف شد.",
"API Key created": "کلید API ایجاد شد.",
"Sign in session ended, please sign in again": "نشست ورود به پایان رسیده است، لطفاً دوباره وارد شوید.",
"Please specify an IP Address (v4/v6)": "لطفاً یک آدرس IP نسخه ۴ یا ۶ مشخص کنید.",
"Please provide ipAddress and count": "لطفاً آدرس IP و تعداد را وارد کنید.",
"Please provide ipAddress": "لطفاً آدرس IP را وارد کنید.",
"Dashboard Language": "زبان داشبورد",
"Dashboard language update failed": "به‌روزرسانی زبان داشبورد با شکست مواجه شد.",
"Peer Remote Endpoint": "نقطه پایانی راه دور peer",
"New Configuration": "پیکربندی جدید",
"Configuration Name": "نام پیکربندی",
"Configuration name is invalid. Possible reasons:": "نام پیکربندی نامعتبر است. دلایل احتمالی:",
"Configuration name already exist.": "این نام پیکربندی از قبل وجود دارد.",
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen.": "نام پیکربندی فقط می‌تواند حداکثر شامل ۱۵ حرف کوچک/بزرگ، عدد، زیرخط، مساوی، علامت مثبت، نقطه و خط تیره باشد.",
"Invalid Port": "پورت نامعتبر است.",
"Save Configuration": "ذخیره پیکربندی",
"IP Address/CIDR is invalid": "آدرس IP یا CIDR نامعتبر است.",
"IP Address": "آدرس IP",
"Enter IP Address / Hostname": "آدرس IP یا نام میزبان را وارد کنید",
"IP Address / Hostname": "آدرس IP / نام میزبان",
"Dashboard IP Address & Listen Port": "آدرس IP و پورت شنود داشبورد",
"Count": "تعداد",
"Geolocation": "موقعیت جغرافیایی",
"Is Alive": "در دسترس است",
"Average / Min / Max Round Trip Time": "میانگین / کمترین / بیشترین زمان رفت‌وبرگشت",
"Sent / Received / Lost Package": "بسته‌های ارسال‌شده / دریافت‌شده / گم‌شده",
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "برای اعمال تغییرات آدرس IP و پورت شنود، باید WGDashboard را دستی راه‌اندازی مجدد کنید.",
"Restore Configuration": "بازیابی پیکربندی",
"Step (.*)": "مرحله $1",
"Select a backup you want to restore": "یک نسخه پشتیبان برای بازیابی انتخاب کنید.",
"Click to change a backup": "برای تغییر نسخه پشتیبان کلیک کنید.",
"Selected Backup": "نسخه پشتیبان انتخاب‌ شده",
"You don't have any configuration to restore": "هیچ پیکربندی برای بازیابی وجود ندارد.",
"Help": "راهنما",
"Backup": "پشتیبان‌گیری",
"([0-9].*) Backups?": "$1 نسخه پشتیبان",
"Yes": "بله",
"No": "خیر",
"Backup not selected": "نسخه پشتیبان انتخاب نشده است.",
"Confirm & edit restore information": "تأیید و ویرایش اطلاعات بازیابی",
"(.*) Available IP Address": "$1 آدرس IP در دسترس",
"Database File": "فایل پایگاه داده",
"Contain": "شامل",
"Restricted Peers?": "peerهای محدودشده؟",
"Restore": "بازیابی",
"Restoring": "در حال بازیابی",
"WGDashboard Settings": "تنظیمات WGDashboard",
"Peers Settings": "تنظیمات peerها",
"WireGuard Configuration Settings": "تنظیمات پیکربندی WireGuard",
"Appearance": "ظاهر",
"Theme": "قالب",
"Language": "زبان",
"Account Settings": "تنظیمات حساب کاربری",
"Peer Default Settings": "تنظیمات پیش‌فرض peer",
"Toggle When Start Up": "فعال‌سازی هنگام راه‌اندازی",
"Other Settings": "تنظیمات دیگر",
"Select Peers": "انتخاب peerها",
"Backup & Restore": "پشتیبان‌گیری و بازیابی",
"Delete Configuration": "حذف پیکربندی",
"Create Backup": "ایجاد نسخه پشتیبان",
"No backup yet, click the button above to create backup.": "هنوز نسخه پشتیبانی وجود ندارد، برای ایجاد نسخه پشتیبان روی دکمه بالا کلیک کنید.",
"Are you sure to delete this backup?": "آیا از حذف این نسخه پشتیبان مطمئن هستید؟",
"Are you sure to restore this backup?": "آیا از بازیابی این نسخه پشتیبان مطمئن هستید؟",
"Backup Date": "تاریخ پشتیبان‌گیری",
"File": "فایل",
"Are you sure to delete this configuration?": "آیا از حذف این پیکربندی مطمئن هستید؟",
"Once you deleted this configuration:": "پس از حذف این پیکربندی:",
"All connected peers will get disconnected": "تمام peerهای متصل قطع خواهند شد.",
"Both configuration file (.conf) and database table related to this configuration will get deleted": "هم فایل پیکربندی (.conf) و هم جدول پایگاه داده مرتبط با این پیکربندی حذف خواهند شد.",
"Checking backups...": "در حال بررسی نسخه‌های پشتیبان...",
"This configuration have ([0-9].*) backups": "این پیکربندی $1 نسخه پشتیبان دارد.",
"This configuration have no backup": "این پیکربندی هیچ نسخه پشتیبانی ندارد.",
"If you're sure, please type in the configuration name below and click Delete": "اگر مطمئن هستید، نام پیکربندی را در کادر زیر وارد کرده و روی حذف کلیک کنید.",
"Select All": "انتخاب همه",
"Clear Selection": "پاک کردن انتخاب",
"([0-9].*) Peers?": "$1 peer",
"Downloading": "در حال دانلود",
"Download Finished": "دانلود به پایان رسید",
"Done": "انجام شد",
"Are you sure to delete": "آیا از حذف مطمئن هستید؟",
"Are you sure to delete this peer?": "آیا از حذف این peer مطمئن هستید؟",
"Configuration deleted": "پیکربندی حذف شد.",
"Configuration saved": "پیکربندی ذخیره شد.",
"WGDashboard language update failed": "به‌روزرسانی زبان WGDashboard با شکست مواجه شد.",
"Configuration restored": "پیکربندی بازیابی شد.",
"Allowed IP already taken by another peer": "IP مجاز قبلاً توسط peerی دیگری استفاده شده است.",
"Failed to allow access of peer (.*)": "اجازه دسترسی به peer ($1) با شکست مواجه شد.",
"Failed to save configuration through WireGuard": "ذخیره پیکربندی از طریق WireGuard با شکست مواجه شد.",
"Allow access successfully": "دسترسی با موفقیت فعال شد.",
"Deleted ([0-9]{1,}) peer(s)": "$1 peer حذف شد.",
"Deleted ([0-9]{1,}) peer(s) successfully. Failed to delete ([0-9]{1,}) peer(s)": "$1 peer با موفقیت حذف شد. حذف $2 peer با شکست مواجه شد.",
"Restricted ([0-9]{1,}) peer(s)": "$1 peer محدود شد.",
"Restricted ([0-9]{1,}) peer(s) successfully. Failed to restrict ([0-9]{1,}) peer(s)": "$1 peer با موفقیت محدود شد. محدودسازی $2 peer با شکست مواجه شد."
}

View File

@ -0,0 +1,312 @@
{
"Welcome to": "ようこそ",
"Username": "ユーザー名",
"Password": "パスワード",
"OTP from your authenticator": "認証アプリで生成されたワンタイムパスワード",
"Sign In": "サインイン",
"Signing In\\.\\.\\.": "サインイン...",
"Access Remote Server": "リモートサーバーにアクセス",
"Server": "サーバー",
"Click": "クリック",
"Pinging...": "応答待機中...",
"to add your server": "してサーバーを追加",
"Server List": "サーバーリスト",
"Sorry, your username or password is incorrect.": "ユーザー名またはパスワードが間違っています",
"Home": "ホーム",
"Settings": "設定",
"Tools": "ツール",
"Sign Out": "サインアウト",
"Checking for update...": "アップデートを確認中...",
"You're on the latest version": "最新版利用しています",
"WireGuard Configurations": "WireGuard 構成",
"You don't have any WireGuard configurations yet. Please check the configuration folder or change it in Settings. By default the folder is /etc/wireguard.": "WireGuardの構成が見つかりません 構成ファイルの保存場所を確認するか、設定タブから構成ファイルの保存場所を変更してください デフォルトの構成ファイルの保存場所は /etc/wireguard です",
"Configuration": "構成",
"Configurations": "構成",
"Peers Default Settings": "デフォルトピア設定",
"Dashboard Theme": "ダッシュボードテーマ",
"Light": "ライトモード",
"Dark": "ダークモード",
"This will be changed globally, and will be apply to all peer's QR code and configuration file.": "これは全てのピアやQRコード、コンフィグファイルに変更が適用されます",
"WireGuard Configurations Settings": "WireGuard構成設定",
"Configurations Directory": "コンフィグ保存場所",
"Remember to remove / at the end of your path. e.g /etc/wireguard": "パスの最後の\"/\"は不要です。 例:/etc/wireguard",
"WGDashboard Account Settings": "WGDashboardアカウント設定",
"Current Password": "現在のパスワード",
"New Password": "新しいパスワード",
"Repeat New Password": "再度、新しいパスワードを入力してください",
"Update Password": "パスワードを更新",
"Multi-Factor Authentication \\(MFA\\)": "多要素認証",
"Reset": "リセット",
"Setup": "設定",
"API Keys": "APIキー",
"API Key": "APIキー",
"Key": "Key",
"Enabled": "有効",
"Disabled": "無効",
"No WGDashboard API Key": "APIキーがありません",
"Expire At": "有効期限",
"Are you sure to delete this API key\\?": "このAPIキーを削除してもよろしいですか",
"Create API Key": "APIキーを作成",
"When should this API Key expire\\?": "APIキーの有効期限を設定してください",
"Never Expire": "無期限",
"Don't think that's a good idea": "あまりおすすめはしません...",
"Creating\\.\\.\\.": "作成中...",
"Create": "作成",
"Status": "ステータス",
"On": "ON",
"Off": "OFF",
"Turning On\\.\\.\\.": "ONにしています...",
"Turning Off\\.\\.\\.": "OFFにしています...",
"Address": "アドレス",
"Listen Port": "待ち受けポート",
"Public Key": "公開鍵",
"Connected Peers": "接続しているピア",
"Total Usage": "総通信量",
"Total Received": "総受信量",
"Total Sent": "総送信量",
"Peers Data Usage": "ピア別データ使用量",
"Real Time Received Data Usage": "リアルタイム受信量",
"Real Time Sent Data Usage": "リアルタイム送信量",
"Peer": "ピア",
"Peers": "ピア",
"Peer Settings": "ピア設定",
"Download All": "全てダウンロード",
"Search Peers\\.\\.\\.": "ピアを検索",
"Display": "表示設定",
"Sort By": "並び替え",
"Refresh Interval": "更新間隔",
"Name": "名前",
"Allowed IPs": "Allowed IPs",
"Restricted": "制限",
"(.*) Seconds": "$1 秒",
"(.*) Minutes": "$1 分",
"Configuration Settings": "構成設定",
"Peer Jobs": "ピアジョブ",
"Active Jobs": "有効なジョブ",
"All Active Jobs": "全ての有効なジョブ",
"Logs": "ログ",
"Private Key": "秘密鍵",
"\\(Required for QR Code and Download\\)": "(QRコードかダウンロードが必要です)",
"\\(Required\\)": "(必須)",
"Endpoint Allowed IPs": "Endpoint Allowed IPs",
"DNS": "DNS",
"Optional Settings": "追加設定",
"Pre-Shared Key": "事前共有鍵",
"MTU": "MTU",
"Persistent Keepalive": "Persistent Keepalive",
"Reset Data Usage": "データ使用量をリセット",
"Total": "合計",
"Sent": "送信",
"Received": "受信",
"Revert": "反転",
"Save Peer": "ピアを保存",
"QR Code": "QRコード",
"Schedule Jobs": "スケジュールジョブ",
"Job": "ジョブ",
"Job ID": "ジョブID",
"Unsaved Job": "保存されていないジョブ",
"This peer does not have any job yet\\.": "このピアにはジョブがありません",
"if": "もし",
"is": "が",
"then": "だったら",
"larger than": "右記以降",
"Date": "日付",
"Restrict Peer": "ピアを制限",
"Delete Peer": "ピアを削除",
"Edit": "編集",
"Delete": "削除",
"Deleting...": "削除中...",
"Cancel": "キャンセル",
"Save": "保存",
"No active job at the moment\\.": "有効なジョブがありません",
"Jobs Logs": "ジョブログ",
"Updated at": "更新日",
"Refresh": "更新",
"Filter": "フィルター",
"Success": "成功",
"Failed": "失敗",
"Log ID": "ログID",
"Message": "メッセージ",
"Share Peer": "ピアを共有",
"Currently the peer is not sharing": "このピアは現在共有されていません",
"Sharing\\.\\.\\.": "共有中...",
"Start Sharing": "共有を開始",
"Stop Sharing\\.\\.\\.": "共有を停止中...",
"Stop Sharing": "共有を停止",
"Access Restricted": "アクセスを制限しました",
"Restrict Access": "アクセスを制限",
"Restricting\\.\\.\\.": "制限中...",
"Allow Access": "アクセス許可",
"Allowing Access\\.\\.\\.": "アクセスを許可しています...",
"Download \\& QR Code is not available due to no private key set for this peer": "このピアは秘密鍵が設定されていないため、ダウンロード・QRコードの利用が出来ません",
"Add Peers": "ピアを追加",
"Bulk Add": "複数追加",
"By adding peers by bulk, each peer's name will be auto generated, and Allowed IP will be assign to the next available IP\\.": "一括でピアを追加すると、各ピアの名前は自動生成され、Allowed IPは利用可能なIPが割り当てられます",
"How many peers you want to add\\?": "いくつピアを追加しますか?",
"You can add up to (.*) peers": "最大で $1 個追加できます",
"Use your own Private and Public Key": "既存の秘密鍵・公開鍵を利用する",
"Enter IP Address/CIDR": "IPアドレス/CIDRを入力してください",
"IP Address/CIDR": "IPアドレス/CIDR",
"or": "または",
"Pick Available IP": "利用可能なIPアドレスを選択する",
"No available IP containing": "利用可能なIPアドレスがありません",
"Add": "追加",
"Adding\\.\\.\\.": "追加中...",
"Failed to check available update": "アップデートの確認に失敗しました",
"Nice to meet you!": "はじめまして!",
"Please fill in the following fields to finish setup": "以下のフィールドを入力して、セットアップを完了してください",
"Create an account": "アカウントの作成",
"Enter an username you like": "ユーザー名を入力してください",
"Enter a password": "パスワードを入力してください",
"\\(At least 8 characters and make sure is strong enough!\\)": "(最低8文字以上の強力なものになってることを確認してください!)",
"Confirm password": "再度パスワードを入力してください",
"Next": "次へ",
"Saving\\.\\.\\.": "保存中...",
"1\\. Please scan the following QR Code to generate TOTP with your choice of authenticator": "1.QRコードを認証アプリでスキャンして、ワンタイムパスワードを生成してください",
"Or you can click the link below:": "または、以下のリンクをクリックしてください",
"2\\. Enter the TOTP generated by your authenticator to verify": "2.認証アプリで生成されたワンタイムパスワードを入力してください",
"TOTP verified!": "ワンタイムパスワードが認証出来ました!",
"I don't need MFA": "多要素認証は不要です",
"Complete": "完了",
"(v[0-9.]{1,}) is now available for update!": "$1 が利用可能です!",
"Current Version:": "現在のバージョン:",
"Oh no\\.\\.\\. This link is either expired or invalid\\.": "おっと...このリンクは有効期限が切れているか無効です",
"Scan QR Code with the WireGuard App to add peer": "WireGuardアプリでQRコードをスキャンしてピアを追加",
"or click the button below to download the ": "または、ボタンをクリックしてファイルをダウンロード",
" file": " ファイル",
"FROM ": "FROM",
"(.*) is on": "$1 がONになりました",
"(.*) is off": "$1 がOFFになりました",
"Allowed IPs is invalid": "無効なAllowed IPsです",
"Peer created successfully": "ピアの作成に成功しました",
"Please fill in all required box": "必須項目を全て入力してください",
"Please specify amount of peers you want to add": "追加したいピアの数を入力してください",
"No more available IP can assign": "割り当て可能なIPがありません",
"The maximum number of peers can add is (.*)": "最大で $1 個のピアを追加出来ます",
"Generating key pairs by bulk failed": "キーペアの一括生成に失敗しました",
"Failed to add peers in bulk": "ピアの一括作成に失敗しました",
"This peer already exist": "このピアは既に存在します",
"This IP is not available: (.*)": "このIPは利用できません $1",
"Configuration does not exist": "構成が存在しません",
"Peer does not exist": "ピアが存在しません",
"Please provide a valid configuration name": "有効な構成名を入力してください",
"Peer saved": "ピアを保存しました",
"Allowed IPs already taken by another peer": "このAllowed IPsは他のピアで使用されています",
"Endpoint Allowed IPs format is incorrect": "Endpoint Allowed IPsの形式が正しくありません",
"DNS format is incorrect": "DNSの形式が正しくありません",
"MTU format is not correct": "MTUの形式が正しくありません",
"Persistent Keepalive format is not correct": "Persistent Keepaliveの形式が正しくありません",
"Private key does not match with the public key": "秘密鍵が公開鍵と合致しません",
"Update peer failed when updating Pre-Shared Key": "ピアの更新が事前共有鍵の更新中に失敗しました",
"Update peer failed when updating Allowed IPs": "ピアの更新がAllowed IPsの更新中に失敗しました",
"Update peer failed when saving the configuration": "ピアの更新が構成の保存中に失敗しました",
"Peer data usage reset successfully": "ピアのデータ使用量をリセットしました",
"Peer download started": "ピアのダウンロードを開始しました",
"Please specify one or more peers": "1つまたは複数のピアを指定してください",
"Share link failed to create. Reason: (.*)": "共有リンクの作成に失敗しました 理由: $1",
"Link expire date updated": "リンクの有効期限を更新しました",
"Link expire date failed to update. Reason: (.*)": "リンクの有効期限の更新に失敗しました 理由: $1",
"Peer job saved": "ピアジョブを保存しました",
"Please specify job": "ジョブを指定してください",
"Please specify peer and configuration": "ピアまたは構成を指定してください",
"Peer job deleted": "ピアジョブを削除しました",
"API Keys function is successfully enabled": "APIキー機能を有効にしました",
"API Keys function is successfully disabled": "APIキー機能を無効にしました",
"API Keys function is failed to enable": "APIキー機能の有効化に失敗しました",
"API Keys function is failed to disable": "APIキー機能の無効化に失敗しました",
"WGDashboard API Keys function is disabled": "WGDashboard APIキー機能は無効になっています",
"WireGuard configuration path saved": "WireGuard構成の場所を保存しました",
"API Key deleted": "APIキーを削除しました",
"API Key created": "APIキーを作成しました",
"Sign in session ended, please sign in again": "セッションが終了しました 再度サインインしてください",
"Please specify an IP Address (v4/v6)": "IPアドレスを指定してください (v4/v6)",
"Please provide ipAddress and count": "IPアドレスと回数を入力してください",
"Please provide ipAddress": "IPアドレスを入力してください",
"Dashboard Language": "ダッシュボードの言語",
"Dashboard language update failed": "ダッシュボードの言語の更新に失敗しました",
"Peer Remote Endpoint": "Endpoint",
"New Configuration": "新規構成",
"Configuration Name": "構成名",
"Configuration name is invalid. Possible reasons:": "構成名が無効です 考えられる原因:",
"Configuration name already exist\\.": "構成名が既に存在します",
"Configuration name can only contain 15 lower/uppercase alphabet, numbers, underscore, equal sign, plus sign, period and hyphen\\.": "構成名には、小文字/大文字のアルファベット15文字、数字、アンダースコア、イコール、プラス、ピリオド、ハイフンのみを使用できます",
"Invalid Port": "無効なポート",
"Save Configuration": "構成を保存",
"IP Address/CIDR is invalid": "無効なIPアドレス/CIDR",
"IP Address": "IPアドレス",
"Enter IP Address / Hostname": "IPアドレス / ホスト名 を入力してください",
"IP Address / Hostname": "IPアドレス / ホスト名",
"Dashboard IP Address \\& Listen Port": "ダッシュボードIPアドレス & 待ち受けポート",
"Count": "回数",
"Geolocation": "場所",
"Is Alive": "ステータス",
"Average / Min / Max Round Trip Time": "平均 / 最小 / 最大 往復時間",
"Sent / Received / Lost Package": "送信 / 受信 / 損失 パッケージ",
"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port": "IPアドレスと待ち受けポートの変更を反映するにはWGDashboardを手動で再起動する必要があります",
"Restore Configuration": "構成を復元",
"Step (.*)": "ステップ $1",
"Select a backup you want to restore": "復元したいバックアップを選択してください",
"Click to change a backup": "クリックしてバックアップを変更する",
"Selected Backup": "選択したバックアップ",
"You don't have any configuration to restore": "復元可能な構成がありません",
"Help": "ヘルプ",
"Backup": "バックアップ",
"([0-9].*) Backups?": "$1 バックアップ?",
"Yes": "はい",
"No": "いいえ",
"Backup not selected": "バックアップが選択されていません",
"Confirm \\& edit restore information": "確定 & 復元情報を編集",
"(.*) Available IP Address": "$1 有効なIPアドレス",
"Database File": "データベースファイル",
"Contain": "含まれる",
"Restricted Peers?": "ピアを制限しますか?",
"Restore": "復元",
"Restoring": "復元中",
"WGDashboard Settings": "WGDashboard設定",
"Peers Settings": "ピア設定",
"WireGuard Configuration Settings": "WireGuard構成設定",
"Appearance": "外観",
"Theme": "テーマ",
"Language": "言語",
"Account Settings": "アカウント設定",
"Peer Default Settings": "ピアデフォルト設定",
"Toggle When Start Up": "起動時に有効化",
"Other Settings": "その他の設定",
"Select Peers": "ピアを選択",
"Backup & Restore": "バックアップ & 復元",
"Delete Configuration": "構成を削除",
"Create Backup": "バックアップを作成",
"No backup yet, click the button above to create backup\\.": "バックアップがありません ボタンをクリックしてバックアップを作成",
"Are you sure to delete this backup\\?": "バックアップを削除しますか?",
"Are you sure to restore this backup?\\": "バックアップから復元しますか?",
"Backup Date": "バックアップ日時",
"File": "ファイル",
"Are you sure to delete this configuration\\?": "この構成を本当に削除しますか?",
"Once you deleted this configuration\\:": "この構成を削除すると:",
"All connected peers will get disconnected": "全てのピアとの接続を失います",
"Both configuration file \\(\\.conf\\) and database table related to this configuration will get deleted": "この構成に関連する構成ファイル(.conf)とデータベーステーブルが削除されます",
"Checking backups...": "バックアップを確認中...",
"This configuration have ([0-9].*) backups": "この構成には $1 のバックアップがあります",
"This configuration have no backup": "この構成にはバックアップがありません",
"If you're sure, please type in the configuration name below and click Delete": "本当に削除して良いのであれば、以下に構成名を入力し、「削除」をクリックしてください",
"Select All": "全て選択",
"Clear Selection": "選択を解除",
"([0-9].*) Peers?": "$1 ピア?",
"Downloading": "ダウンロード中...",
"Download Finished": "ダウンロード完了",
"Done": "完了",
"Are you sure to delete": "本当に削除しますか",
"Are you sure to delete this peer\\?": "このピアを本当に削除してもよろしいですか?",
"Configuration deleted": "構成を削除しました",
"Configuration saved": "構成を保存しました",
"WGDashboard language update failed": "WGDashboardの言語の更新に失敗しました",
"Configuration restored": "構成を復元しました",
"Allowed IP already taken by another peer": "このAllowed IPは他のピアで使用されています",
"Failed to allow access of peer (.*)": "ピアのアクセス許可に失敗しました $1",
"Failed to save configuration through WireGuard": "WireGuardによる設定の保存に失敗しました。",
"Allow access successfully": "アクセス許可に成功しました",
"Deleted ([0-9]{1,}) peer\\(s\\)": "$1 個のピアを削除しました ",
"Deleted ([0-9]{1,}) peer\\(s\\) successfully. Failed to delete ([0-9]{1,}) peer\\(s\\)": "$1 個のピアの削除に成功し、 $2 個のピアの削除に失敗しました",
"Restricted ([0-9]{1,}) peer\\(s\\)": "$1 個のピアを制限しました",
"Restricted ([0-9]{1,}) peer\\(s\\) successfully. Failed to restrict ([0-9]{1,}) peer\\(s\\)": "$1 個のピアの制限に成功し、 $2 個のピアの制限に失敗しました"
}