fix(tutorial): add korean locale and profile settings page
This commit is contained in:
parent
d4d7313374
commit
e53b8d6a48
200
locales/index.d.ts
vendored
200
locales/index.d.ts
vendored
@ -5123,6 +5123,18 @@ export interface Locale extends ILocale {
|
||||
* 敏感な内容のメディアをダブルクリックして表示
|
||||
*/
|
||||
"sensitiveDoubleClickRequired": string;
|
||||
/**
|
||||
* チュートリアルをスキップできないようにする
|
||||
*/
|
||||
"prohibitSkippingInitialTutorial": string;
|
||||
/**
|
||||
* 新規登録したユーザーに表示されるチュートリアルをスキップできないようにします。チュートリアルを完了しなかったりチュートリアルページを回避したりした場合でも、強制的にリダイレクトされます。
|
||||
*/
|
||||
"prohibitSkippingInitialTutorialDescription": string;
|
||||
/**
|
||||
* オンボーディング
|
||||
*/
|
||||
"onboarding": string;
|
||||
"_bubbleGame": {
|
||||
/**
|
||||
* 遊び方
|
||||
@ -5326,72 +5338,6 @@ export interface Locale extends ILocale {
|
||||
*/
|
||||
"silenceDescription": string;
|
||||
};
|
||||
"_initialAccountSetting": {
|
||||
/**
|
||||
* アカウントの作成が完了しました!
|
||||
*/
|
||||
"accountCreated": string;
|
||||
/**
|
||||
* さっそくアカウントの初期設定を行いましょう。
|
||||
*/
|
||||
"letsStartAccountSetup": string;
|
||||
/**
|
||||
* まずはあなたのプロフィールを設定しましょう。
|
||||
*/
|
||||
"letsFillYourProfile": string;
|
||||
/**
|
||||
* プロフィール設定
|
||||
*/
|
||||
"profileSetting": string;
|
||||
/**
|
||||
* プライバシー設定
|
||||
*/
|
||||
"privacySetting": string;
|
||||
/**
|
||||
* これらの設定は後から変更できます。
|
||||
*/
|
||||
"theseSettingsCanEditLater": string;
|
||||
/**
|
||||
* この他にも様々な設定を「設定」ページから行えます。ぜひ後で確認してみてください。
|
||||
*/
|
||||
"youCanEditMoreSettingsInSettingsPageLater": string;
|
||||
/**
|
||||
* タイムラインを構築するため、気になるユーザーをフォローしてみましょう。
|
||||
*/
|
||||
"followUsers": string;
|
||||
/**
|
||||
* プッシュ通知を有効にすると{name}の通知をお使いのデバイスで受け取ることができます。
|
||||
*/
|
||||
"pushNotificationDescription": ParameterizedString<"name">;
|
||||
/**
|
||||
* 初期設定が完了しました!
|
||||
*/
|
||||
"initialAccountSettingCompleted": string;
|
||||
/**
|
||||
* {name}をお楽しみください!
|
||||
*/
|
||||
"haveFun": ParameterizedString<"name">;
|
||||
/**
|
||||
* このまま{name}(Misskey)の使い方についてのチュートリアルに進むこともできますが、ここで中断してすぐに使い始めることもできます。
|
||||
*/
|
||||
"youCanContinueTutorial": ParameterizedString<"name">;
|
||||
/**
|
||||
* チュートリアルを開始
|
||||
*/
|
||||
"startTutorial": string;
|
||||
/**
|
||||
* 初期設定をスキップしますか?
|
||||
*/
|
||||
"skipAreYouSure": string;
|
||||
/**
|
||||
* 初期設定をあとでやり直しますか?
|
||||
*/
|
||||
"laterAreYouSure": string;
|
||||
/**
|
||||
* Botアカウントは管理者を必ず記載する必要があります。以下から管理者のアカウントを選択してください。
|
||||
*/
|
||||
"mustBeSetBotOwner": string;
|
||||
};
|
||||
"_initialTutorial": {
|
||||
/**
|
||||
* チュートリアルを見る
|
||||
@ -5505,6 +5451,16 @@ export interface Locale extends ILocale {
|
||||
*/
|
||||
"description3": ParameterizedString<"link">;
|
||||
};
|
||||
"_followUsers": {
|
||||
/**
|
||||
* 誰もフォローしていない状態だと、ホームタイムラインには何も表示されません。
|
||||
*/
|
||||
"description1": string;
|
||||
/**
|
||||
* タイムラインを構築するため、気になるユーザーをフォローしてみましょう。
|
||||
*/
|
||||
"description2": string;
|
||||
};
|
||||
"_postNote": {
|
||||
/**
|
||||
* ノートの投稿設定
|
||||
@ -5605,6 +5561,52 @@ export interface Locale extends ILocale {
|
||||
*/
|
||||
"doItToContinue": string;
|
||||
};
|
||||
"_pushNotification": {
|
||||
/**
|
||||
* プッシュ通知を有効にすると{name}の通知をお使いのデバイスで受け取ることができます。
|
||||
*/
|
||||
"description": ParameterizedString<"name">;
|
||||
};
|
||||
"_privacySettings": {
|
||||
/**
|
||||
* プライバシー設定
|
||||
*/
|
||||
"title": string;
|
||||
/**
|
||||
* 多くのユーザーが利用しているプライバシー関連の設定項目をリストアップしました。必要に応じて変更してください。
|
||||
*/
|
||||
"description": string;
|
||||
/**
|
||||
* これらの設定は後から変更できます。
|
||||
*/
|
||||
"theseSettingsCanEditLater": string;
|
||||
/**
|
||||
* この他にも様々な設定を「設定」ページから行えます。ぜひ後で確認してみてください。
|
||||
*/
|
||||
"youCanEditMoreSettingsInSettingsPageLater": string;
|
||||
};
|
||||
"_profileSettings": {
|
||||
/**
|
||||
* プライバシー設定
|
||||
*/
|
||||
"title": string;
|
||||
/**
|
||||
* 多くのユーザーが利用しているプライバシー関連の設定項目をリストアップしました。必要に応じて変更してください。
|
||||
*/
|
||||
"description": string;
|
||||
/**
|
||||
* これらの設定は後から変更できます。
|
||||
*/
|
||||
"theseSettingsCanEditLater": string;
|
||||
/**
|
||||
* この他にも様々な設定を「設定」ページから行えます。ぜひ後で確認してみてください。
|
||||
*/
|
||||
"youCanEditMoreSettingsInSettingsPageLater": string;
|
||||
/**
|
||||
* Botアカウントは管理者を必ず記載する必要があります。以下から管理者のアカウントを選択してください。
|
||||
*/
|
||||
"mustBeSetBotOwner": string;
|
||||
};
|
||||
"_done": {
|
||||
/**
|
||||
* チュートリアルは終了です🎉
|
||||
@ -5614,6 +5616,72 @@ export interface Locale extends ILocale {
|
||||
* ここで紹介した機能はほんの一部にすぎません。Misskeyの使い方をより詳しく知るには、{link}をご覧ください。
|
||||
*/
|
||||
"description": ParameterizedString<"link">;
|
||||
/**
|
||||
* {name}をお楽しみください!
|
||||
*/
|
||||
"haveFun": ParameterizedString<"name">;
|
||||
/**
|
||||
* このチュートリアルは、「もっと!」→「情報」→「チュートリアルを見る」からいつでも見返すことができます。
|
||||
*/
|
||||
"youCanReferTutorialBy": string;
|
||||
};
|
||||
"_onboardingLanding": {
|
||||
/**
|
||||
* アカウントの作成が完了しました!
|
||||
*/
|
||||
"accountCreated": string;
|
||||
/**
|
||||
* ようこそ、{name}へ!
|
||||
*/
|
||||
"welcomeToX": ParameterizedString<"name">;
|
||||
/**
|
||||
* 「{name}に登録したは良いものの、どう使えばいいか分からない…💦」といったことを防ぐために、まずはMisskeyの基本的な使い方を学びましょう。
|
||||
*/
|
||||
"description": ParameterizedString<"name">;
|
||||
/**
|
||||
* このチュートリアルの所要時間は{min}分程度です。
|
||||
* チュートリアルを完了すると実績が解除されます。
|
||||
*/
|
||||
"takesAbout": ParameterizedString<"min">;
|
||||
/**
|
||||
* このサーバーの管理者は新規ユーザーにチュートリアルを完了することを義務付けています。
|
||||
* チュートリアルを完了するまでMisskeyを使い始めることはできません。
|
||||
*/
|
||||
"adminForcesToTakeTutorial": string;
|
||||
};
|
||||
"_onboardingDone": {
|
||||
/**
|
||||
* お疲れ様でした!次のステップに進んで、{name}をもっと楽しめるようにしましょう。
|
||||
*/
|
||||
"description": ParameterizedString<"name">;
|
||||
/**
|
||||
* 元のページに戻る
|
||||
*/
|
||||
"backToOriginalPath": string;
|
||||
/**
|
||||
* あなたがアクセスしようとしていたページに戻ります。
|
||||
*/
|
||||
"backToOriginalPathDescription": string;
|
||||
/**
|
||||
* プロフィール設定
|
||||
*/
|
||||
"profile": string;
|
||||
/**
|
||||
* 他のユーザーが親しみやすいように、プロフィールをつくりましょう。
|
||||
*/
|
||||
"profileDescription": string;
|
||||
/**
|
||||
* 人気のノートやユーザーを見つけて交流をはじめましょう。
|
||||
*/
|
||||
"exploreDescription": string;
|
||||
/**
|
||||
* ホーム画面に進む
|
||||
*/
|
||||
"goToTimeline": string;
|
||||
/**
|
||||
* 設定等を行わず、通常のホーム画面(タイムライン)に進みます。
|
||||
*/
|
||||
"goToTimelineDescription": string;
|
||||
};
|
||||
};
|
||||
"_timelineDescription": {
|
||||
|
@ -1278,6 +1278,7 @@ temporarilySeeThis: "無視して表示する"
|
||||
sensitiveDoubleClickRequired: "敏感な内容のメディアをダブルクリックして表示"
|
||||
prohibitSkippingInitialTutorial: "チュートリアルをスキップできないようにする"
|
||||
prohibitSkippingInitialTutorialDescription: "新規登録したユーザーに表示されるチュートリアルをスキップできないようにします。チュートリアルを完了しなかったりチュートリアルページを回避したりした場合でも、強制的にリダイレクトされます。"
|
||||
onboarding: "オンボーディング"
|
||||
|
||||
_bubbleGame:
|
||||
howToPlay: "遊び方"
|
||||
@ -1335,24 +1336,6 @@ _announcement:
|
||||
silence: "非通知"
|
||||
silenceDescription: "オンにすると、このお知らせは通知されず、既読にする必要もなくなります。"
|
||||
|
||||
_initialAccountSetting:
|
||||
accountCreated: "アカウントの作成が完了しました!"
|
||||
letsStartAccountSetup: "さっそくアカウントの初期設定を行いましょう。"
|
||||
letsFillYourProfile: "まずはあなたのプロフィールを設定しましょう。"
|
||||
profileSetting: "プロフィール設定"
|
||||
privacySetting: "プライバシー設定"
|
||||
theseSettingsCanEditLater: "これらの設定は後から変更できます。"
|
||||
youCanEditMoreSettingsInSettingsPageLater: "この他にも様々な設定を「設定」ページから行えます。ぜひ後で確認してみてください。"
|
||||
followUsers: "タイムラインを構築するため、気になるユーザーをフォローしてみましょう。"
|
||||
pushNotificationDescription: "プッシュ通知を有効にすると{name}の通知をお使いのデバイスで受け取ることができます。"
|
||||
initialAccountSettingCompleted: "初期設定が完了しました!"
|
||||
haveFun: "{name}をお楽しみください!"
|
||||
youCanContinueTutorial: "このまま{name}(Misskey)の使い方についてのチュートリアルに進むこともできますが、ここで中断してすぐに使い始めることもできます。"
|
||||
startTutorial: "チュートリアルを開始"
|
||||
skipAreYouSure: "初期設定をスキップしますか?"
|
||||
laterAreYouSure: "初期設定をあとでやり直しますか?"
|
||||
mustBeSetBotOwner: "Botアカウントは管理者を必ず記載する必要があります。以下から管理者のアカウントを選択してください。"
|
||||
|
||||
_initialTutorial:
|
||||
launchTutorial: "チュートリアルを見る"
|
||||
title: "チュートリアル"
|
||||
@ -1419,9 +1402,15 @@ _initialTutorial:
|
||||
description: "プッシュ通知を有効にすると{name}の通知をお使いのデバイスで受け取ることができます。"
|
||||
_privacySettings:
|
||||
title: "プライバシー設定"
|
||||
description1: "多くのユーザーが利用しているプライバシー関連の設定項目をリストアップしました。必要に応じて変更してください。"
|
||||
description: "多くのユーザーが利用しているプライバシー関連の設定項目をリストアップしました。必要に応じて変更してください。"
|
||||
theseSettingsCanEditLater: "これらの設定は後から変更できます。"
|
||||
youCanEditMoreSettingsInSettingsPageLater: "この他にも様々な設定を「設定」ページから行えます。ぜひ後で確認してみてください。"
|
||||
_profileSettings:
|
||||
title: "プライバシー設定"
|
||||
description: "多くのユーザーが利用しているプライバシー関連の設定項目をリストアップしました。必要に応じて変更してください。"
|
||||
theseSettingsCanEditLater: "これらの設定は後から変更できます。"
|
||||
youCanEditMoreSettingsInSettingsPageLater: "この他にも様々な設定を「設定」ページから行えます。ぜひ後で確認してみてください。"
|
||||
mustBeSetBotOwner: "Botアカウントは管理者を必ず記載する必要があります。以下から管理者のアカウントを選択してください。"
|
||||
_done:
|
||||
title: "チュートリアルは終了です🎉"
|
||||
description: "ここで紹介した機能はほんの一部にすぎません。Misskeyの使い方をより詳しく知るには、{link}をご覧ください。"
|
||||
|
@ -1263,6 +1263,7 @@ temporarilySeeThis: "무시하고 표시하기"
|
||||
sensitiveDoubleClickRequired: "민감한 내용의 미디어를 더블 클릭해서 표시"
|
||||
prohibitSkippingInitialTutorial: "チュートリアルをスキップできないようにする"
|
||||
prohibitSkippingInitialTutorialDescription: "新規登録したユーザーに表示されるチュートリアルをスキップできないようにします。チュートリアルを完了しなかったりチュートリアルページを回避したりした場合でも、強制的にリダイレクトされます。"
|
||||
onboarding: "온보딩"
|
||||
_bubbleGame:
|
||||
howToPlay: "설명"
|
||||
hold: "홀드"
|
||||
@ -1321,22 +1322,6 @@ _announcement:
|
||||
dialogAnnouncementUxWarn: "다이얼로그 형태의 알림이 동시에 2개 이상 존재하는 경우, 유저 경험에 악영향을 끼칠 수 있으므로 신중히 결정하십시오."
|
||||
silence: "조용히 알림"
|
||||
silenceDescription: "활성화하면 공지사항에 대한 알림이 가지 않게 되며, 확인 버튼을 누를 필요가 없게 됩니다."
|
||||
_initialAccountSetting:
|
||||
accountCreated: "계정 생성이 완료되었습니다!"
|
||||
letsStartAccountSetup: "계정의 초기 설정을 진행합니다."
|
||||
letsFillYourProfile: "우선 나의 프로필을 설정해 보아요."
|
||||
profileSetting: "프로필 설정"
|
||||
privacySetting: "프라이버시 설정"
|
||||
theseSettingsCanEditLater: "이 설정들은 나중에도 변경할 수 있습니다."
|
||||
youCanEditMoreSettingsInSettingsPageLater: "이 외에도 '설정' 페이지에서 다양한 설정을 나의 입맛에 맞게 조절할 수 있습니다. 꼭 확인해 보세요!"
|
||||
followUsers: "관심사가 맞는 유저를 팔로우하여 타임라인을 가꾸어 봅시다."
|
||||
pushNotificationDescription: "푸시 알림을 활성화하면 {name}의 알림을 나의 기기에서 받아볼 수 있게 됩니다."
|
||||
initialAccountSettingCompleted: "초기 설정을 모두 마쳤습니다!"
|
||||
haveFun: "{name}와 함께 즐거운 시간 보내세요!"
|
||||
youCanContinueTutorial: "이대로 {name}(Misskey)의 사용법에 대해 튜토리얼을 진행할 수도 있지만, 여기서 중단하고 바로 시작할 수도 있습니다."
|
||||
startTutorial: "튜토리얼 시작"
|
||||
skipAreYouSure: "초기 설정을 중단하시겠습니까?"
|
||||
laterAreYouSure: "초기 설정을 나중에 진행하시겠습니까?"
|
||||
_initialTutorial:
|
||||
launchTutorial: "튜토리얼 보기"
|
||||
title: "튜토리얼"
|
||||
@ -1400,32 +1385,38 @@ _initialTutorial:
|
||||
sensitiveSucceeded: "파일을 첨부할 때에는 서버의 가이드라인에 따라 적절히 열람주의를 설정해 주시기 바랍니다."
|
||||
doItToContinue: "이미지를 열람 주의로 설정하면 다음으로 넘어갈 수 있게 됩니다."
|
||||
_pushNotification:
|
||||
description: "プッシュ通知を有効にすると{name}の通知をお使いのデバイスで受け取ることができます。"
|
||||
description: "푸시 알림을 활성화하면 {name}의 알림을 나의 기기에서 받아볼 수 있게 됩니다."
|
||||
_privacySettings:
|
||||
title: "プライバシー設定"
|
||||
description1: "多くのユーザーが利用しているプライバシー関連の設定項目をリストアップしました。必要に応じて変更してください。"
|
||||
theseSettingsCanEditLater: "これらの設定は後から変更できます。"
|
||||
youCanEditMoreSettingsInSettingsPageLater: "この他にも様々な設定を「設定」ページから行えます。ぜひ後で確認してみてください。"
|
||||
title: "프라이버시 설정"
|
||||
description: "대부분의 초기 사용자가 설정하는 것을 권장하는 옵션들입니다. 입맛에 맞게 변경해보세요."
|
||||
theseSettingsCanEditLater: "이 설정들은 나중에도 변경할 수 있습니다."
|
||||
youCanEditMoreSettingsInSettingsPageLater: "이외의 옵션은 '설정' 페이지에 있으니, 나중에 꼭 확인해보시기 바랍니다."
|
||||
_profileSettings:
|
||||
title: "나를 소개해봅시다!"
|
||||
description: "노트를 올리기 전에, 나에 대한 설명을 하는 곳입니다."
|
||||
theseSettingsCanEditLater: "이 설정들은 나중에도 변경할 수 있습니다."
|
||||
youCanEditMoreSettingsInSettingsPageLater: "이외의 옵션은 '설정' 페이지에 있으니, 나중에 꼭 확인해보시기 바랍니다."
|
||||
mustBeSetBotOwner: "Bot 계정은 반드시 관리자를 기재해야 합니다. 아래에서 관리자 계정을 선택하세요."
|
||||
_done:
|
||||
title: "튜토리얼이 끝났습니다! 🎉"
|
||||
title: "튜토리얼이 완료! 🎉"
|
||||
description: "여기에서 소개한 기능은 극히 일부에 지나지 않습니다. Misskey의 사용 방법을 더 자세히 알아보려면 {link}를 확인해 주세요!"
|
||||
haveFun: "{name}をお楽しみください!"
|
||||
youCanReferTutorialBy: "このチュートリアルは、「もっと!」→「情報」→「チュートリアルを見る」からいつでも見返すことができます。"
|
||||
haveFun: "{name}에서 즐거운 시간 보내시기 바랍니다!"
|
||||
youCanReferTutorialBy: "이 튜토리얼은 [더 보기! -> 정보 -> 튜토리얼 보기]에서 다시 볼 수 있습니다."
|
||||
_onboardingLanding:
|
||||
accountCreated: "アカウントの作成が完了しました!"
|
||||
welcomeToX: "ようこそ、{name}へ!"
|
||||
description: "「{name}に登録したは良いものの、どう使えばいいか分からない…💦」といったことを防ぐために、まずはMisskeyの基本的な使い方を学びましょう。"
|
||||
takesAbout: "このチュートリアルの所要時間は{min}分程度です。\nチュートリアルを完了すると実績が解除されます。"
|
||||
adminForcesToTakeTutorial: "このサーバーの管理者は新規ユーザーにチュートリアルを完了することを義務付けています。\nチュートリアルを完了するまでMisskeyを使い始めることはできません。"
|
||||
accountCreated: "계정 생성을 완료했습니다!"
|
||||
welcomeToX: "{name}에 오신 것을 환영합니다 😎"
|
||||
description: "「{name}에 계정은 만들었는데, 도저히 사용법을 모르겠다...」\n같은 일이 일어나지 않도록, 기본적인 가이드를 배워봅시다."
|
||||
takesAbout: "본 튜토리얼은 대략 {min}분 정도 소요됩니다.\n튜토리얼이 완료되면 도전 과제를 달성하게 됩니다."
|
||||
adminForcesToTakeTutorial: "서버의 관리자가 튜토리얼 진행을 강제했습니다.\nMisskey를 계속 이용하려면 튜토리얼을 진행해주세요."
|
||||
_onboardingDone:
|
||||
description: "お疲れ様でした!次のステップに進んで、{name}をもっと楽しめるようにしましょう。"
|
||||
backToOriginalPath: "元のページに戻る"
|
||||
backToOriginalPathDescription: "あなたがアクセスしようとしていたページに戻ります。"
|
||||
profile: "プロフィール設定"
|
||||
profileDescription: "他のユーザーが親しみやすいように、プロフィールをつくりましょう。"
|
||||
exploreDescription: "人気のノートやユーザーを見つけて交流をはじめましょう。"
|
||||
goToTimeline: "ホーム画面に進む"
|
||||
goToTimelineDescription: "設定等を行わず、通常のホーム画面(タイムライン)に進みます。"
|
||||
description: "수고하셨습니다! {name}에서 할 만한 것들을 아래에 모아봤습니다."
|
||||
backToOriginalPath: "원래 있던 페이지로"
|
||||
backToOriginalPathDescription: "튜토리얼에 진입하기 전에 보고 있던 페이지로 이동합니다."
|
||||
profile: "프로필 설정"
|
||||
profileDescription: "더 많은 프로필 관련 설정 (배너, 추가 정보, 고양이...) 을 진행합니다."
|
||||
exploreDescription: "지금 여기에서 인기 있는 노트 또는 사용자를 더 탐색해봅니다."
|
||||
goToTimeline: "타임라인으로"
|
||||
goToTimelineDescription: "설정을 더 진행하지 않고, 홈 타임라인으로 돌아갑니다."
|
||||
_timelineDescription:
|
||||
home: "홈 타임라인에서는, 내가 팔로우한 계정의 게시물을 볼 수 있습니다."
|
||||
local: "로컬 타임라인에서는, 이 서버의 모든 유저의 게시물을 볼 수 있습니다."
|
||||
|
@ -12,7 +12,7 @@ import { version, lang, updateLocale, locale } from '@/config.js';
|
||||
import { applyTheme } from '@/scripts/theme.js';
|
||||
import { isDeviceDarkmode } from '@/scripts/is-device-darkmode.js';
|
||||
import { updateI18n } from '@/i18n.js';
|
||||
import { $i, iAmModerator, refreshAccount, login } from '@/account.js';
|
||||
import { $i, iAmAdmin, refreshAccount, login } from '@/account.js';
|
||||
import { defaultStore, ColdDeviceStorage } from '@/store.js';
|
||||
import { fetchInstance, instance } from '@/instance.js';
|
||||
import { deviceKind } from '@/scripts/device-kind.js';
|
||||
@ -21,7 +21,6 @@ import { getUrlWithoutLoginId } from '@/scripts/login-id.js';
|
||||
import { getAccountFromId } from '@/scripts/get-account-from-id.js';
|
||||
import { deckStore } from '@/ui/deck/deck-store.js';
|
||||
import { miLocalStorage } from '@/local-storage.js';
|
||||
import { claimedAchievements } from '@/scripts/achievements.js';
|
||||
import { fetchCustomEmojis } from '@/custom-emojis.js';
|
||||
import { setupRouter } from '@/router/definition.js';
|
||||
|
||||
@ -120,7 +119,7 @@ export async function common(createVue: () => App<Element>) {
|
||||
await deckStore.ready;
|
||||
|
||||
// 2024年4月1日JST以降に作成されたアカウントで、チュートリアルを完了していない通常ユーザーの場合、チュートリアルにリダイレクト
|
||||
if (!instance.canSkipInitialTutorial && $i && !iAmModerator && defaultStore.state.accountSetupWizard !== -1 && !location.pathname.startsWith('/onboarding') && !location.pathname.startsWith('/signup-complete')) {
|
||||
if (!instance.canSkipInitialTutorial && $i && !iAmAdmin && defaultStore.state.accountSetupWizard !== -1 && !location.pathname.startsWith('/onboarding') && !location.pathname.startsWith('/signup-complete')) {
|
||||
const param = new URLSearchParams();
|
||||
param.set('redirected_from', location.pathname + location.search + location.hash);
|
||||
location.replace('/onboarding?' + param.toString());
|
||||
|
@ -5,7 +5,9 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
<template>
|
||||
<div class="_gaps">
|
||||
<MkInfo>{{ i18n.ts._initialAccountSetting.theseSettingsCanEditLater }}</MkInfo>
|
||||
<div style="word-break: auto-phrase; text-align: center; padding: 0 16px;">{{ i18n.ts._initialTutorial._profileSettings.description }}</div>
|
||||
|
||||
<MkInfo>{{ i18n.ts._initialTutorial._profileSettings.theseSettingsCanEditLater }}</MkInfo>
|
||||
|
||||
<FormSlot>
|
||||
<template #label>{{ i18n.ts.avatar }}</template>
|
||||
@ -31,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
<div v-if="useAsBot" class="_gaps_m">
|
||||
<div>
|
||||
<MkInfo>{{ i18n.ts._initialAccountSetting.mustBeSetBotOwner }}</MkInfo>
|
||||
<MkInfo>{{ i18n.ts._initialTutorial._profileSettings.mustBeSetBotOwner }}</MkInfo>
|
||||
</div>
|
||||
<div>
|
||||
<MkButton @click="selectBotOwner">{{ i18n.ts.selectUser }}</MkButton>
|
||||
@ -39,7 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<MkInfo>{{ i18n.ts._initialAccountSetting.youCanEditMoreSettingsInSettingsPageLater }}</MkInfo>
|
||||
<MkInfo>{{ i18n.ts._initialTutorial._profileSettings.youCanEditMoreSettingsInSettingsPageLater }}</MkInfo>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -80,6 +80,15 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="page === 7" key="tutorialPage_7" :class="$style.pageContainer">
|
||||
<div :class="$style.pageRoot">
|
||||
<MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
|
||||
<div class="_gaps">
|
||||
<XProfileSettings/>
|
||||
</div>
|
||||
</MkSpacer>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="page === 8" key="tutorialPage_8" :class="$style.pageContainer">
|
||||
<div :class="$style.pageRoot">
|
||||
<MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
|
||||
<div class="_gaps">
|
||||
@ -88,7 +97,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</MkSpacer>
|
||||
</div>
|
||||
</div>
|
||||
<slot v-else-if="page === 8" key="tutorialPage_8" name="finish" :close="() => emit('close')" :prev="prev">
|
||||
<slot v-else-if="page === 9" key="tutorialPage_9" name="finish" :close="() => emit('close')" :prev="prev">
|
||||
<div :class="$style.centerPage">
|
||||
<MkAnimBg style="position: absolute; top: 0;" :scale="1.5"/>
|
||||
<MkSpacer :marginMin="20" :marginMax="28">
|
||||
@ -124,7 +133,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
<script lang="ts">
|
||||
|
||||
// チュートリアルの枚数を増やしたら必ず変更すること!!
|
||||
export const MAX_PAGE = 8;
|
||||
export const MAX_PAGE = 9;
|
||||
|
||||
</script>
|
||||
|
||||
@ -136,8 +145,10 @@ import XTimeline from '@/components/MkTutorial.Timeline.vue';
|
||||
import XFollowUsers from '@/components/MkTutorial.FollowUsers.vue';
|
||||
import XPostNote from '@/components/MkTutorial.PostNote.vue';
|
||||
import XSensitive from '@/components/MkTutorial.Sensitive.vue';
|
||||
import XProfileSettings from '@/components/MkTutorial.Profile.vue';
|
||||
import XPrivacySettings from '@/components/MkTutorial.PrivacySettings.vue';
|
||||
import MkAnimBg from '@/components/MkAnimBg.vue';
|
||||
import { defaultStore } from '@/store.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { instance } from '@/instance.js';
|
||||
import { host } from '@/config.js';
|
||||
@ -164,6 +175,7 @@ const page = ref(props.initialPage ?? 0);
|
||||
watch(page, (to) => {
|
||||
if (to === MAX_PAGE) {
|
||||
claimAchievement('tutorialCompleted');
|
||||
defaultStore.set('accountSetupWizard', -1);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -15,7 +15,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
<span v-else-if="page === 4"><i class="ti ti-user-plus"></i> {{ i18n.ts.follow }}</span>
|
||||
<span v-else-if="page === 5"><i class="ti ti-pencil-plus"></i> {{ i18n.ts._initialTutorial._postNote.title }}</span>
|
||||
<span v-else-if="page === 6"><i class="ti ti-eye-exclamation"></i> {{ i18n.ts._initialTutorial._howToMakeAttachmentsSensitive.title }}</span>
|
||||
<span v-else-if="page === 7"><i class="ti ti-lock"></i> {{ i18n.ts.privacy }}</span>
|
||||
<span v-else-if="page === 7"><i class="ti ti-user"></i> {{ i18n.ts._initialTutorial._profileSettings.title }}</span>
|
||||
<span v-else-if="page === 8"><i class="ti ti-lock"></i> {{ i18n.ts._initialTutorial._privacySettings.title }}</span>
|
||||
<span v-else-if="page === MAX_PAGE"><!-- なんもなし --></span>
|
||||
<span v-else>{{ i18n.ts._initialTutorial.title }}</span>
|
||||
</div>
|
||||
@ -126,6 +127,7 @@ import { i18n } from '@/i18n.js';
|
||||
import { instance } from '@/instance.js';
|
||||
import { host } from '@/config.js';
|
||||
import { confirm as osConfirm } from '@/os.js';
|
||||
import { defaultStore } from '@/store.js';
|
||||
|
||||
import MkAnimBg from '@/components/MkAnimBg.vue';
|
||||
import MkButton from '@/components/MkButton.vue';
|
||||
@ -155,6 +157,7 @@ async function cancel() {
|
||||
|
||||
if (confirm.canceled) return;
|
||||
|
||||
defaultStore.set('accountSetupWizard', -1);
|
||||
location.href = '/';
|
||||
}
|
||||
|
||||
@ -232,8 +235,8 @@ onMounted(() => {
|
||||
// #endregion
|
||||
|
||||
definePageMetadata(() => ({
|
||||
title: 'Onboarding',
|
||||
description: 'Welcome to Misskey!',
|
||||
title: i18n.ts.onboarding,
|
||||
description: i18n.ts.headlineMisskey,
|
||||
}));
|
||||
</script>
|
||||
|
||||
|
@ -24,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
</div>
|
||||
</MkSpacer>
|
||||
<MkFooterSpacer/>
|
||||
</mkstickycontainer>
|
||||
</MkStickyContainer>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
@ -10,6 +10,7 @@ import { instance } from '@/instance.js';
|
||||
import { host } from '@/config.js';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { $i } from '@/account.js';
|
||||
import { defaultStore } from '@/store.js';
|
||||
|
||||
function toolsMenuItems(): MenuItem[] {
|
||||
return [{
|
||||
@ -112,7 +113,8 @@ export function openInstanceMenu(ev: MouseEvent) {
|
||||
text: i18n.ts._initialTutorial.launchTutorial,
|
||||
icon: 'ti ti-presentation',
|
||||
action: () => {
|
||||
os.popup(defineAsyncComponent(() => import('@/components/MkTutorialDialog.vue')), {}, {}, 'closed');
|
||||
defaultStore.set('accountSetupWizard', 0);
|
||||
location.href = '/onboarding';
|
||||
},
|
||||
} : undefined, {
|
||||
type: 'link',
|
||||
|
Loading…
Reference in New Issue
Block a user