This commit is contained in:
AuroraLS3 2023-07-21 16:53:53 +00:00
parent 895a56618d
commit 7f34a2ca75
5 changed files with 403 additions and 567 deletions

View File

@ -340,23 +340,23 @@ html:
activityIndexWeek: "Week {}"
examples: "Examples"
graph:
labels: "You can hide/show a group by clicking on the label at the bottom."
title: "Graph"
zoom: "You can Zoom in by click + dragging on the graph."
labels: "下部のラベルをクリックすることで、グループの表示/非表示を切り替えられます。"
title: "グラフ"
zoom: "グラフをクリック+ドラッグで拡大できます。"
playtimeUnit: "hours"
retention:
calculationStep1: "First the data is filtered using '<>' option. Any players with 'registerDate' outside the time range are ignored."
calculationStep2: "Then it is grouped into groups of players using '<0>' option, eg. With '<1>': All players who registered in January 2023, February 2023, etc"
calculationStep3: "Then the '<0>' and '<1>' options select which visualization to render."
calculationStep4: "'<>' controls how many points the graph has, eg. 'Days' has one point per day."
calculationStep5: "On each calculated point all players are checked for the condition."
calculationStep6: "Select X Axis below to see conditions."
calculationStepDate: "This visualization shows the different groups of players that are still playing on your server. The visualization uses lastSeen date. If x < lastSeenDate, the player is visible on the graph."
calculationStepDeltas: "This visualization is most effective using Player Count as the Y Axis. The visualization shows net gain of players (How many players joined minus players who stopped playing). The visualization uses both registered and lastSeen dates. If registerDate < x < lastSeenDate, the player is visible on the graph."
calculationStepPlaytime: "This visualization tells how long the gameplay loop keeps players engaged on your server. The visualization uses playtime. If x < playtime, the player is visible on the graph."
calculationStepTime: "This visualization tells how long people keep coming back to play on the server after they join the first time. The visualization uses timeDifference. If x < timeDifference, the player is visible on the graph."
compareJoinAddress: "Grouping by join address allows measuring advertising campaigns on different sites."
compareMonths: "You can compare different months by changing the '<0>' option to '<1>'"
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>' に変更することで、異なる月を比較することができます。"
examples:
adCampaign: "Comparing player gain of different ad campaigns using different Join Addresses (anonymized)"
deltas: "<> shows net gain of players."
@ -364,19 +364,19 @@ html:
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"
howIsItCalculated: "How it is calculated"
howIsItCalculatedData: "The graph is generated from player data:"
options: "Select the options to analyze different aspects of Player Retention."
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."
testPrompt: "Test it out:"
testPrompt: "試してみよう:"
testResult: "Test result"
threshold: "Threshold"
thresholdUnit: "hours / week"
tips: "Tips"
usingTheGraph: "Using the Graph"
tips: "ヒント"
usingTheGraph: "グラフを使う"
hourByHour: "1時間ごと"
inactive: "休止中"
indexInactive: "休止中"
inactive: "非アクティブ"
indexInactive: "非アクティブ"
indexRegular: "しばしばログインしている"
information: "インフォメーション"
insights: "Insights"
@ -546,12 +546,12 @@ html:
xAxis: "X軸"
yAxis: "Y軸"
login:
failed: "ログインに失敗: "
failed: "ログインできません!: "
forgotPassword: "パスワードを忘れた?"
forgotPassword1: "Forgot password? Unregister and register again."
forgotPassword2: "Use the following command in game to remove your current user:"
forgotPassword3: "Or using console:"
forgotPassword4: "After using the command, "
forgotPassword1: "パスワードを忘れましたか? アカウントの登録を解除して、再登録してください。"
forgotPassword2: "アカウントを削除するには、ゲーム内でこのコマンドを使用してください:"
forgotPassword3: "もしくは、サーバーの管理画面から行ってください。:"
forgotPassword4: "コマンドを入力した後, "
login: "ログイン"
logout: "ログアウト"
password: "パスワード"
@ -618,7 +618,7 @@ html:
view: " View:"
filters:
add: "フィルタを追加する.."
loading: "フィルタ読み込み中.."
loading: "フィルタ読み込み中.."
generic:
are: "`are`"
label:
@ -725,7 +725,7 @@ plugin:
loadedServerInfo: "Server identifier loaded: ${0}"
loadingServerInfo: "Loading server identifying information"
no: "ない"
today: "'日'"
today: "'日'"
unavailable: "利用不可"
unknown: "不明"
yes: "ある"
@ -740,7 +740,7 @@ plugin:
webserver:
fail:
SSLContext: "Webサーバー: SSLコンテキストの初期化に失敗しました。"
certFileEOF: "Webサーバー: 証明書ファイルをロード中にEOFエラーが発生しました (ファイルがになっていないか確認してください)"
certFileEOF: "Webサーバー: 証明書ファイルをロード中にEOFエラーが発生しました (ファイルがになっていないか確認してください)"
certStoreLoad: "Webサーバー: SSL証明書のロードに失敗しました"
portInUse: "Webサーバー: 初期化が正常に終了しませんでした。ポート番号(${0})は使用されていませんか?"
notify:
@ -750,7 +750,7 @@ plugin:
certificateExpiresPassed: "Webserver: Certificate has expired, consider renewing the certificate."
certificateExpiresSoon: "Webserver: Certificate expires in ${0}, consider renewing the certificate."
certificateNoSuchAlias: "Webserver: Certificate with alias '${0}' was not found inside the keystore file '${1}'."
http: "Webサーバー: 証明書が存在ません -> HTTPサーバーを使用します"
http: "Webサーバー: 証明書が存在ません -> HTTPサーバーを使用します"
ipWhitelist: "Webサーバー: IPのホワイトリストが有効になっています"
ipWhitelistBlock: "Webサーバー: 「${0}」の「${1}」へのアクセスが拒否されました(ホワイトリストには未登録です)"
noCertFile: "Webサーバー: 次のパスに保存された認証キーファイルが存在しません: ${0}"

View File

@ -15,31 +15,31 @@
"@fullcalendar/daygrid": "^5.11.5",
"@fullcalendar/react": "^5.11.5",
"@highcharts/map-collection": "^2.1.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.4.3",
"axios": "^1.4.0",
"bootstrap": "^5.3.0",
"datatables.net": "^1.13.4",
"datatables.net": "^1.13.5",
"datatables.net-bs5": "^1.13.4",
"datatables.net-responsive-bs5": "^2.4.1",
"datatables.net-responsive-bs5": "^2.5.0",
"highcharts": "^10.3.3",
"i18next": "^22.5.1",
"i18next-chained-backend": "^4.3.0",
"i18next": "^23.2.11",
"i18next-chained-backend": "^4.4.0",
"i18next-http-backend": "^2.2.1",
"i18next-localstorage-backend": "^4.1.1",
"masonry-layout": "^4.2.2",
"react": "^18.2.0",
"react-bootstrap": "^2.7.4",
"react-bootstrap": "^2.8.0",
"react-bootstrap-range-slider": "^3.0.8",
"react-dom": "^18.2.0",
"react-i18next": "^12.3.1",
"react-i18next": "^13.0.2",
"react-mcjsonchat": "^1.0.0",
"react-router-dom": "6",
"react-scripts": "5.0.1",
"sass": "^1.63.3",
"sass": "^1.64.0",
"source-map-explorer": "^2.5.2",
"swagger-ui": "^4.19.0",
"swagger-ui": "^5.1.3",
"web-vitals": "^3.0.2"
},
"scripts": {

View File

@ -52,7 +52,7 @@ const FilterDropdown = ({filterOptions, filters, setFilters}) => {
<h6 className="dropdown-header">{t('html.query.filters.add')}</h6>
<Scrollable>
{filterOptions.map(option => (
<Dropdown.Item key={option} onClick={() => addFilter(option)}>
<Dropdown.Item key={JSON.stringify(option)} onClick={() => addFilter(option)}>
{getReadableFilterName(option)}
</Dropdown.Item>
))}

View File

@ -29,7 +29,7 @@ const FilterList = ({filters, setFilters, setAsInvalid, setAsValid}) => {
return (
<ul id={"filters"} className={"filters"}>
{filters.map((filter, i) => <li key={JSON.stringify(filter)} className={"filter"}>
{filters.map((filter, i) => <li key={'filter-' + i} className={"filter"}>
<Filter filter={filter} index={i}
setFilterOptions={newOptions => updateFilterOptions(i, newOptions)}
removeFilter={() => removeFilter(i)}

File diff suppressed because it is too large Load Diff