diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java
index f84140f15..a1b7b9ab2 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/Contributors.java
@@ -103,6 +103,7 @@ public class Contributors {
new Contributor("TheLittle_Yang", LANG),
new Contributor("inductor", LANG),
new Contributor("ringoXD", LANG),
+ new Contributor("yu_solt", LANG),
new Contributor("lis2a", LANG)
};
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java b/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java
index 68c2d1c39..e2cdeb6fa 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/settings/locale/LangCode.java
@@ -32,7 +32,7 @@ public enum LangCode {
FI("suomi", "AuroraLS3, KasperiP"),
FR("français", "CyanTech, Aurelien & Nogapra"),
IT("Italiano", "Malachiel & Mastory_Md5"),
- JA("\u65E5\u672C\u8A9E", "yukieji, inductor, lis2a & ringoXD"),
+ JA("\u65E5\u672C\u8A9E", "yukieji, inductor, lis2a, yu_solt & ringoXD"),
KO("\uD55C\uAD6D\uC5B4", "Guinness_Akihiko"),
NL("Nederlands", "Sander0542"),
RU("русский", "Saph1s, Perhun_Pak, BratishkaErik & stashenko"),
diff --git a/Plan/common/src/main/resources/assets/plan/locale/locale_JA.yml b/Plan/common/src/main/resources/assets/plan/locale/locale_JA.yml
index ccb0a11da..c83d6d05a 100644
--- a/Plan/common/src/main/resources/assets/plan/locale/locale_JA.yml
+++ b/Plan/common/src/main/resources/assets/plan/locale/locale_JA.yml
@@ -54,7 +54,7 @@ command:
manage:
confirm: "> §c実行を確認するために引数「-a」を追加します: ${0}"
confirmOverwrite: "${0}のデータは上書きされます!"
- confirmPartialRemoval: "Join Address Data for Server ${0} in ${1} will be removed!"
+ confirmPartialRemoval: "${1}のサーバー${0}の結合アドレスデータが削除されます"
confirmRemoval: "${0}のデータは削除されます!"
fail: "> §c何かがうまくいきませんでした: ${0}"
failFileNotFound: "> §c「${0}」にファイルが見つかりませんでした"
@@ -64,16 +64,16 @@ command:
failSameServer: "このサーバーをアンインストールするサーバーとして指定することはできません(あなたがこのサーバーにログインしているため)"
hotswap: "§e新しいデータベースに交換することを忘れないで下さい(/plan db hotswap ${0})。そして、プラグインをリロードして下さい"
importers: "インポーター:"
- preparing: "Preparing.."
- progress: "${0} / ${1} を処理中.."
- start: "> §2データを処理中です.."
+ preparing: "準備中..."
+ progress: "${0} / ${1} を処理中..."
+ start: "> §2データを処理中です..."
success: "> §a成功しました!"
- playerRemoval: "「${1}」から「${0}」のデータを削除中.."
- removal: "「${0}」からPlanのデータを削除中.."
+ playerRemoval: "「${1}」から「${0}」のデータを削除中..."
+ removal: "「${0}」からPlanのデータを削除中..."
serverUninstalled: "§aサーバーがまだ追加中の場合、データベースに追加済みとして表示されます"
- unregister: "「${0}」の登録を解除中.."
+ unregister: "「${0}」の登録を解除中..."
warnDbNotOpen: "§eデータベースは${0}です - 想定以上の時間がかかるかもしれません"
- write: "「${0}」に書き込み中です.."
+ write: "「${0}」に書き込み中です..."
fail:
emptyString: "検索欄は空欄にできません"
invalidArguments: "「${0}」とします。「${1}」"
@@ -163,10 +163,10 @@ command:
description: "Jsonで保存されているプレイヤーデータを表示します"
inDepth: "プレイヤーのデータをJsonでダウンロードできるようにします。このJsonには全てのプレイヤーデータが格納されています"
logout:
- description: "Log out other users from the panel."
- inDepth: "Give username argument to log out another user from the panel, give * as argument to log out everyone."
+ description: "他のユーザーをパネルからログアウトします"
+ inDepth: "パネルから別のユーザーをログアウトするにはusername引数を指定し、全員をログアウトするには引数として * を指定します"
migrateToOnlineUuids:
- description: "Migrate offline uuid data to online uuids"
+ description: "オフラインUUIDデータをオンラインUUIDに移行する"
network:
description: "「ネットワーク」のページのURLを表示します"
inDepth: "「/network」ページへのリンクを取得します、これは「ネットワーク」が有効時のみ実行されます"
@@ -183,7 +183,7 @@ command:
description: "「Plan」を再起動します"
inDepth: "このプラグインを一度無効にし、有効にします。この時、コンフィグの変更が反映されます"
removejoinaddresses:
- description: "Remove join addresses of a specified server"
+ description: "指定したサーバーの参加アドレスを削除します"
search:
description: "プレイヤー名を検索します"
inDepth: "名前が一致もしくは、部分一致する全てのプレイヤーを表示します"
@@ -226,6 +226,7 @@ command:
info:
database: " §2現在のデータベース: §f${0}"
proxy: " §2BungeeCordに接続済み: §f${0}"
+ serverUUID: " §2Server UUID: §f${0}"
update: " §2利用可能なアップデート: §f${0}"
version: " §2バージョン: §f${0}"
generic:
@@ -234,16 +235,20 @@ html:
button:
nightMode: "ナイトモード"
calendar:
- new: "New:"
+ new: "新しい:"
unique: "接続したプレイヤーの総数:"
description:
newPlayerRetention: "この値は、以前のプレイヤーに基づいた予測です。"
- noGameServers: "Some data requires Plan to be installed on game servers."
+ noData24h: "サーバーは24日間以上データを送信していません"
+ noData30d: "サーバーは30日間以上データを送信していません"
+ noData7d: "サーバーは7日間以上データを送信していません"
+ noGameServers: "一部のデータでは、ゲーム サーバーにプランをインストールする必要があります"
noGeolocations: "位置情報の収集は設定で有効にする必要があります(GeoLite2のEULAに同意してください)。"
noServerOnlinActivity: "オンラインアクティビティを表示するサーバーがありません"
noServers: "データーベース内に登録されたサーバーが見つかりません"
- noServersLong: 'It appears that Plan is not installed on any game servers or not connected to the same database. See wiki for Network tutorial.'
- noSpongeChunks: "Chunks unavailable on Sponge"
+ noServersLong: 'プランがどのゲーム サーバーにもインストールされていないか、同じデータベースに接続されていないようです。ネットワーク チュートリアルについては、ウィキを参考にしてください'
+ noSpongeChunks: "スポンジではチャンクを利用できません"
+ performanceNoGameServers: "TPS、エンティティ、またはチャンクデータは、ゲーム ティックループがないため、プロキシサーバーから収集されません"
predictedNewPlayerRetention: "これは以前のプレーヤーから基づいた予測値です"
error:
401Unauthorized: "未認証状態です"
@@ -259,13 +264,13 @@ html:
generic: "エラーが発生したため認証に失敗しました"
loginFailed: "入力されたユーザー名とパスワードが間違っています"
noCookie: "ユーザーのクッキーが存在しません"
- registrationFailed: "Registration failed, try again (The code expires after 15 minutes)"
+ registrationFailed: "登録に失敗しました。もう一度お試しください (コードの有効期限は 15 分後に切れます)"
userNotFound: "入力されたユーザーは存在しません"
authFailed: "認証に失敗しました"
authFailedTips: "- 登録したユーザーを「/plan register 」で確認できます。
- 入力したユーザー名とパスワードが正しいことを確認して下さい
- ユーザー名とパスワードは大文字と小文字が区別されています
パスワードを忘れた場合は、管理者に古いユーザーを削除して新しくユーザーを再登録するよう依頼して下さい"
noServersOnline: "リクエストを処理するサーバーがオンラインではありません"
playerNotSeen: "プレイヤーはこのサーバーでプレイしていません"
- serverNotExported: "Server doesn't exist, its data might not have been exported yet."
+ serverNotExported: "サーバーが存在しないため、データがまだエクスポートされていない可能性があります"
serverNotSeen: "サーバーが存在しません"
generic:
none: "なし"
@@ -296,7 +301,7 @@ html:
averageSessionLength: "平均接続時間"
averageSessions: "平均セッション"
averageTps: "平均TPS"
- averageTps7days: "Average TPS (7 days)"
+ averageTps7days: "平均TPS(7日)"
banned: "BAN履歴"
bestPeak: "全体のピークタイム"
bestPing: "最高Ping値"
@@ -318,7 +323,7 @@ html:
downtime: "ダウンタイム"
duringLowTps: "TPSの低下までの時間:"
entities: "エンティティ数"
- exported: "Data export time"
+ exported: "データエクスポート時間"
favoriteServer: "お気に入りのサーバー"
firstSession: "初参加"
firstSessionLength:
@@ -332,46 +337,46 @@ html:
ortographic: "正射図法"
geolocations: "地域"
help:
- activityIndexBasis: "Activity index is based on non-AFK playtime in the past 3 weeks (21 days). Each week is considered separately."
- activityIndexExample1: "If someone plays as much as threshold every week, they are given activity index ~3."
- activityIndexExample2: "Very active is ~2x the threshold (y ≥ 3.75)."
- activityIndexExample3: "The index approaches 5 indefinitely."
- activityIndexVisual: "Here is a visualization of the curve where y = activity index, and x = playtime per week / threshold."
- activityIndexWeek: "Week {}"
- examples: "Examples"
+ activityIndexBasis: "アクティビティ インデックスは、過去 3 週間 (21 日間) の非 AFK プレイ時間に基づいています。各週は個別に考慮されます"
+ activityIndexExample1: "誰かが毎週しきい値に達するほどプレイした場合、その人にはアクティビティインデックス~3が与えられます"
+ activityIndexExample2: "非常にアクティブとは、しきい値の約 2 倍です (y ≥ 3.75)"
+ activityIndexExample3: "指数は限りなく 5 に近づきます"
+ activityIndexVisual: "これは、y = アクティビティ指数、x = 週あたりのプレイ時間 / しきい値である曲線を視覚化したものです"
+ activityIndexWeek: "週 {}"
+ examples: "例"
graph:
- labels: "下部のラベルをクリックすることで、グループの表示/非表示を切り替えられます。"
+ labels: "下部のラベルをクリックすることで、グループの表示/非表示を切り替えられます"
title: "グラフ"
- zoom: "グラフをクリック+ドラッグで拡大できます。"
- playtimeUnit: "hours"
+ zoom: "グラフをクリック+ドラッグで拡大できます"
+ playtimeUnit: "時間"
retention:
- calculationStep1: "まず、 '<>' を使ってデータをフィルタリングします。範囲外の登録日を持つプレイヤーは無視されます。"
+ calculationStep1: "まず、 '<>' を使ってデータをフィルタリングします。範囲外の登録日を持つプレイヤーは無視されます"
calculationStep2: "次に、 '<0>' を使ってプレイヤーのグループをグループ化します。 '<1>' を使った例: 2023年1月に登録された全プレイヤー、2023年2月に登録された全プレイヤーなど"
- calculationStep3: "次に '<0>' と '<1>' のオプションでレンダリングするものを選択します。"
- calculationStep4: "'<>' はグラフがいくつのポイントを持つか制御します。例えば、'日' は1日に1ポイントです。"
- calculationStep5: "計算されたポイントを元に、全プレイヤーがその条件でチェックされます。"
- calculationStep6: "下のX軸を選択すると、条件が表示されます。"
- calculationStepDate: "この視覚化は、あなたのサーバーで今も遊んでいるプレイヤーのグループを表示します。可視化には最後にログインした日付が使われます。 x < 最後のログイン日 だった場合、プレイヤーがグラフ上に表示されます。"
- calculationStepDeltas: "この視覚化は、Y軸にプレイヤー数を使うのが最も効果的です。可視化には、プレイヤーの純増を示します。(プレイヤーの加入数からしばらく遊んでいないプレイヤー数を引いた値の事です。)この視覚化では、登録日と最終ログイン日を使用します。 登録日 < x < 最終ログイン日 の場合、プレイヤーがグラフ上に表示されます。"
- calculationStepPlaytime: "この視覚化は、ゲームプレイのループがあなたのサーバー内でどれだけプレイヤーを飽きさせないかを示します。可視化にはプレイ時間が使用されます。 x < プレイ時間 の場合、プレイヤーがグラフ上に表示されます。"
- calculationStepTime: "この視覚化は、サーバーに初めて参加した後、どのぐらいの時間そのサーバーで遊び続けているかを示します。可視化には登録日からの経過時間が使用されます。 x < 登録日からの経過時間 の場合、プレイヤーがグラフ上に表示されます。"
- compareJoinAddress: "参加アドレスでグループ化することで、異なるサイトで宣伝した場合の測定が可能になります。"
- compareMonths: "'<0>' を '<1>' に変更することで、異なる月を比較することができます。"
+ calculationStep3: "次に '<0>' と '<1>' のオプションでレンダリングするものを選択します"
+ calculationStep4: "'<>' はグラフがいくつのポイントを持つか制御します。例えば、'日' は1日に1ポイントです"
+ calculationStep5: "計算されたポイントを元に、全プレイヤーがその条件でチェックされます"
+ calculationStep6: "下のX軸を選択すると、条件が表示されます"
+ calculationStepDate: "この視覚化は、あなたのサーバーで今も遊んでいるプレイヤーのグループを表示します。可視化には最後にログインした日付が使われます。 x < 最後のログイン日 だった場合、プレイヤーがグラフ上に表示されます"
+ calculationStepDeltas: "この視覚化は、Y軸にプレイヤー数を使うのが最も効果的です。可視化には、プレイヤーの純増を示します。(プレイヤーの加入数からしばらく遊んでいないプレイヤー数を引いた値の事です。)この視覚化では、登録日と最終ログイン日を使用します。 登録日 < x < 最終ログイン日 の場合、プレイヤーがグラフ上に表示されます"
+ calculationStepPlaytime: "この視覚化は、ゲームプレイのループがあなたのサーバー内でどれだけプレイヤーを飽きさせないかを示します。可視化にはプレイ時間が使用されます。 x < プレイ時間 の場合、プレイヤーがグラフ上に表示されます"
+ calculationStepTime: "この視覚化は、サーバーに初めて参加した後、どのぐらいの時間そのサーバーで遊び続けているかを示します。可視化には登録日からの経過時間が使用されます。 x < 登録日からの経過時間 の場合、プレイヤーがグラフ上に表示されます"
+ compareJoinAddress: "参加アドレスでグループ化することで、異なるサイトで宣伝した場合の測定が可能になります"
+ compareMonths: "'<0>' を '<1>' に変更することで、異なる月を比較することができます"
examples:
- adCampaign: "Comparing player gain of different ad campaigns using different Join Addresses (anonymized)"
- deltas: "<> shows net gain of players."
- pattern: "A general pattern emerges when all players start leaving the server at the same time"
- plateau: "Comparing player gain of different months. Plateaus suggest there were players Plan doesn't know about. In this example Plan was installed in January 2022."
- playtime: "Playtime tells how long the gameplay loop keeps players engaged on your server."
- stack: "Cumulative player gain can be checked with stacked player count as Y axis"
+ adCampaign: "異なる参加アドレス (匿名化) を使用した異なる広告キャンペーンのプレイヤーの利益の比較"
+ deltas: "<>はプレイヤーの純利益を示します"
+ pattern: "すべてのプレイヤーが同時にサーバーから離れ始めると、一般的なパターンが現れます"
+ plateau: "異なる月のプレイヤーの獲得量を比較します。プラトーは、プランが知らない選手がいたと示唆している。この例では、プランは 2022 年 1 月にインストールされました"
+ playtime: "プレイタイムは、ゲームプレイループがプレイヤーをサーバー上でどれだけ長く関与させ続けるかを示します"
+ stack: "プレイヤーの累積獲得数は、積み重ねられたプレイヤー数を Y 軸として確認できます"
howIsItCalculated: "どうやって計算しているのか"
howIsItCalculatedData: "このグラフはプレイヤーのデータから生成されたものです:"
- options: "オプションを選択して、プレイヤー推移のさまざまな側面を分析できます。"
- retentionBasis: "New player retention is calculated based on session data. If a registered player has played within latter half of the timespan, they are considered retained."
+ options: "オプションを選択して、プレイヤー推移のさまざまな側面を分析できます"
+ retentionBasis: "新規プレーヤーの維持率はセッション データに基づいて計算されます。登録選手がタイムスパンの後半以内にプレイした場合、その選手は登録とみなされます"
testPrompt: "試してみよう:"
testResult: "Test result"
- threshold: "Threshold"
- thresholdUnit: "hours / week"
+ threshold: "しきい値"
+ thresholdUnit: "時間/週"
tips: "ヒント"
usingTheGraph: "グラフを使う"
hourByHour: "1時間ごと"
@@ -401,7 +406,7 @@ html:
loneNewbieJoins: "新しく一人での参加"
longestSession: "最長接続時間"
lowTpsSpikes: "TPSの低下値"
- lowTpsSpikes7days: "Low TPS Spikes (7 days)"
+ lowTpsSpikes7days: "TPSの低下値(7日)"
maxFreeDisk: "ディスクの最大空き容量"
medianSessionLength: "セッションの長さの中央値"
minFreeDisk: "ディスクの最低空き容量"
@@ -419,7 +424,7 @@ html:
new: "新規"
newPlayerRetention: "新規プレイヤーの継続率"
newPlayers: "新規プレイヤー"
- newPlayers7days: "New Players (7 days)"
+ newPlayers7days: "新しいプレイヤー(7日)"
nickname: "ニックネーム"
noDataToDisplay: "表示するデータがありません"
now: "現在"
@@ -437,17 +442,17 @@ html:
player: "プレイヤー"
playerDeaths: "プレイヤーによるキル"
playerKills: "プレイヤーキル"
- playerKillsVictimIndicator: "Player was killed within 24h of first time they were seen (Time since registered: <>)."
+ playerKillsVictimIndicator: "プレイヤーは最初に目撃されてから、24時間以内に殺されました (登録からの経過時間: <>)."
playerList: "プレイヤー一覧"
playerOverview: "プレイヤーの概要"
playerPage: "プレイヤーページ"
playerRetention: "プレイヤー推移"
playerbase: "プレイヤーベース"
playerbaseDevelopment: "登録されているプレイヤーの推移"
- playerbaseOverview: "Playerbase Overview"
+ playerbaseOverview: "プレイヤーベースの概要"
players: "プレイヤー"
playersOnline: "オンラインのプレイヤー"
- playersOnlineNow: "Players Online (Now)"
+ playersOnlineNow: "オンラインのプレイヤー(今)"
playersOnlineOverview: "接続状況の概要"
playtime: "プレイ時間"
plugins: "プラグイン"
@@ -471,7 +476,7 @@ html:
relativeJoinActivity: "オンラインと活動との関係性"
retention:
groupByNone: "グルーピング無し"
- groupByTime: "Group registered by"
+ groupByTime: "登録したグループ"
inAnytime: "全期間"
inLast180d: "直近6ヶ月"
inLast30d: "直近30日"
@@ -480,7 +485,7 @@ html:
inLast7d: "直近7日"
inLast90d: "直近3ヶ月"
playersRegisteredInTime: "登録日"
- retainedPlayersPercentage: "Retained Players %"
+ retainedPlayersPercentage: "登録したプレイヤー %"
timeSinceRegistered: "登録日からの経過時間"
timeStep: "時間幅"
secondDeadliestWeapon: "2番目にPvPで使用されている武器"
@@ -582,64 +587,64 @@ html:
query:
filter:
activity:
- text: "are in Activity Groups"
+ text: "アクティビティグループに属しています"
banStatus:
name: "BAN状況"
banned: "BAN済"
country:
- text: "have joined from country"
+ text: "から参加しました"
generic:
allPlayers: "全てのプレイヤー"
- and: "and "
- start: "of Players who "
+ and: "と"
+ start: "のプレイヤーの"
hasPlayedOnServers:
- name: "Has played on one of servers"
- text: "have played on at least one of"
+ name: "いずれかのサーバーでプレイしたことがある"
+ text: "少なくとも1つでプレイしたことがある"
hasPluginBooleanValue:
- name: "Has plugin boolean value"
- text: "have Plugin boolean value"
+ name: "プラグインのブール値を持ちます"
+ text: "プラグインのブール値を持つ"
joinAddress:
- text: "joined with address"
+ text: "参加したアドレス"
nonOperators: "オペレーターでない"
notBanned: "BANされていない"
operatorStatus:
name: "オペレーターステータス"
operators: "オペレーター"
playedBetween:
- text: "Played between"
+ text: "プレイヤーの間"
pluginGroup:
- name: "Group: "
- text: "are in ${plugin}'s ${group} Groups"
+ name: "グループ: "
+ text: "${plugin}の${group}に属しています"
registeredBetween:
- text: "Registered between"
- skipped: "Skipped"
+ text: "の間に登録されました"
+ skipped: "スキップ"
title:
activityGroup: "活動時間のグループ"
- view: " View:"
+ view: " ビュー:"
filters:
add: "フィルタを追加する.."
loading: "フィルタを読み込み中.."
generic:
- are: "`are`"
+ are: "`それは`"
label:
- from: ">from"
+ from: ">から"
makeAnother: "別のクエリを作る"
servers:
all: "以下に含まれる全てのサーバー"
- many: "using data of {number} servers"
- single: "using data of 1 server"
- two: "using data of 2 servers"
- to: ">to"
+ many: "{number}つのサーバーのデータを使用しています"
+ single: "1つのサーバーのデータを使用しています"
+ two: "2つのサーバーのデータを使用しています"
+ to: ">に"
view: "ビューを表示"
performQuery: "クエリを実行!"
results:
- match: "matched ${resultCount} players"
- none: "Query produced 0 results"
+ match: "${resultCount}のプレイヤーがマッチしました"
+ none: "クエリで生成された結果は0件でした"
title: "クエリ結果"
title:
- activity: "Activity of matched players"
- activityOnDate: 'Activity on '
- sessionsWithinView: "Sessions within view"
+ activity: "マッチしたプレイヤーのアクティビティ"
+ activityOnDate: 'アクティビティ '
+ sessionsWithinView: "ビュー内のセッション"
text: "クエリ<"
register:
completion: "登録を完了するには"
@@ -648,12 +653,13 @@ html:
completion3: "ゲームの中で以下のコマンドを実行し、登録を完了させてください:"
completion4: "もしくは、サーバーコンソールを使う場合:"
createNewUser: "新規ユーザーを作成"
+ disabled: "新規ユーザーの登録は無効になっています"
error:
- checkFailed: "Checking registration status failed: "
- failed: "Registration failed: "
+ checkFailed: "登録ステータスの確認に失敗しました: "
+ failed: "登録に失敗しました: "
noPassword: "パスワードを指定する必要があります"
noUsername: "ユーザー名を指定する必要があります"
- usernameLength: "Username can be up to 50 characters, yours is "
+ usernameLength: "ユーザー名は、50文字以内です。あなたの名前は "
login: "もうアカウントがありますか?ログインはこちら!"
passwordTip: "パスワードは8文字以上である必要がありますが、その他の制限はありません。"
register: "登録"
@@ -675,27 +681,27 @@ html:
online: " オンライン"
with: "