feat(localization): add more dialog tokens

favorite
new_instance
youtube_api
launch_options
vrcx_updater
launch
export_friends_list
export_own_avatars
discord_names
This commit is contained in:
kamiya10
2022-12-25 00:07:20 +08:00
parent d4c80c7a9e
commit 6938c59457
3 changed files with 240 additions and 86 deletions

View File

@@ -2379,15 +2379,15 @@ html
span(v-if="!scope.data.children" v-text="scope.data.value")
//- dialog: favorite
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="favoriteDialog" :visible.sync="favoriteDialog.visible" title="Choose Group" width="300px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="favoriteDialog" :visible.sync="favoriteDialog.visible" :title="$t('dialog.favorite.header')" width="300px")
div(v-if="favoriteDialog.visible" v-loading="favoriteDialog.loading")
span(style="display:block;text-align:center") VRChat Favorites
span(style="display:block;text-align:center") {{ $t('dialog.favorite.vrchat_favorites') }}
template(v-if="favoriteDialog.currentGroup && favoriteDialog.currentGroup.key")
el-button(style="display:block;width:100%;margin:10px 0" @click="deleteFavorite(favoriteDialog.objectId)") #[i.el-icon-check] {{ favoriteDialog.currentGroup.displayName }} ({{ favoriteDialog.currentGroup.count }} / {{ favoriteDialog.currentGroup.capacity }})
template(v-else)
el-button(v-for="group in favoriteDialog.groups" :key="group" style="display:block;width:100%;margin:10px 0" @click="addFavorite(group)") {{ group.displayName }} ({{ group.count }} / {{ group.capacity }})
div(v-if="favoriteDialog.visible && favoriteDialog.type === 'world'" style="margin-top:20px")
span(style="display:block;text-align:center") Local Favorites
span(style="display:block;text-align:center") {{ $t('dialog.favorite.local_favorites') }}
template(v-for="group in localWorldFavoriteGroups" :key="group")
el-button(v-if="hasLocalWorldFavorite(favoriteDialog.objectId, group)" style="display:block;width:100%;margin:10px 0" @click="removeLocalWorldFavorite(favoriteDialog.objectId, group)") #[i.el-icon-check] {{ group }} ({{ getLocalWorldFavoriteGroupLength(group) }})
el-button(v-else style="display:block;width:100%;margin:10px 0" @click="addLocalWorldFavorite(favoriteDialog.objectId, group)") {{ group }} ({{ getLocalWorldFavoriteGroupLength(group) }})
@@ -2485,37 +2485,37 @@ html
el-button(type="primary" size="small" :disabled="bioDialog.loading" @click="saveBio") {{ $t('dialog.bio.update') }}
//- dialog: new instance
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="newInstanceDialog" :visible.sync="newInstanceDialog.visible" title="New Instance" width="600px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="newInstanceDialog" :visible.sync="newInstanceDialog.visible" :title="$t('dialog.new_instance.header')" width="600px")
el-form(v-if="newInstanceDialog.visible" :model="newInstanceDialog" label-width="130px")
el-form-item(label="Access Type")
el-form-item(:label="$t('dialog.new_instance.access_type')")
el-radio-group(v-model="newInstanceDialog.accessType" size="mini" @change="buildInstance")
el-radio-button(label="public")
el-radio-button(label="group")
el-radio-button(label="friends+")
el-radio-button(label="friends")
el-radio-button(label="invite+")
el-radio-button(label="invite")
el-radio-button(label="public") {{ $t('dialog.new_instance.access_type_public') }}
el-radio-button(label="group") {{ $t('dialog.new_instance.access_type_group') }}
el-radio-button(label="friends+") {{ $t('dialog.new_instance.access_type_friend_plus') }}
el-radio-button(label="friends") {{ $t('dialog.new_instance.access_type_friend') }}
el-radio-button(label="invite+") {{ $t('dialog.new_instance.access_type_invite_plus') }}
el-radio-button(label="invite") {{ $t('dialog.new_instance.access_type_invite') }}
//- el-form-item(label="Strict" v-if="newInstanceDialog.accessType === 'friends' || newInstanceDialog.accessType === 'invite'")
//- el-checkbox(v-model="newInstanceDialog.strict") Prevent non friends joining via URL/Instance ID
el-form-item(label="Region")
el-form-item(:label="$t('dialog.new_instance.region')")
el-radio-group(v-model="newInstanceDialog.region" size="mini" @change="buildInstance")
el-radio-button(label="US West")
el-radio-button(label="US East")
el-radio-button(label="Europe")
el-radio-button(label="Japan")
el-form-item(label="World ID")
el-radio-button(label="US West") {{ $t('dialog.new_instance.region_usw') }}
el-radio-button(label="US East") {{ $t('dialog.new_instance.region_use') }}
el-radio-button(label="Europe") {{ $t('dialog.new_instance.region_eu') }}
el-radio-button(label="Japan") {{ $t('dialog.new_instance.region_jp') }}
el-form-item(:label="$t('dialog.new_instance.world_id')")
el-input(v-model="newInstanceDialog.worldId" size="mini" @click.native="$event.target.tagName === 'INPUT' && $event.target.select()")
el-form-item(label="Instance ID")
el-input(v-model="newInstanceDialog.instanceName" placeholder="Random" size="mini")
el-form-item(label="Instance Creator" v-if="newInstanceDialog.accessType !== 'public' && newInstanceDialog.accessType !== 'group'")
el-select(v-model="newInstanceDialog.userId" clearable placeholder="Choose User" filterable style="width:100%")
el-option-group(v-if="API.currentUser" label="ME")
el-form-item(:label="$t('dialog.new_instance.instance_id')")
el-input(v-model="newInstanceDialog.instanceName" :placeholder="$t('dialog.new_instance.instance_id_placeholder')" size="mini")
el-form-item(:label="$t('dialog.new_instance.instance_creator')" v-if="newInstanceDialog.accessType !== 'public' && newInstanceDialog.accessType !== 'group'")
el-select(v-model="newInstanceDialog.userId" clearable :placeholder="$t('dialog.new_instance.instance_creator_placeholder')" filterable style="width:100%")
el-option-group(v-if="API.currentUser" :label="$t('side_panel.me')")
el-option.x-friend-item(:label="API.currentUser.displayName" :value="API.currentUser.id" style="height:auto")
.avatar(:class="userStatusClass(API.currentUser)")
img(v-lazy="userImage(API.currentUser)")
.detail
span.name(v-text="API.currentUser.displayName")
el-option-group(v-if="friendsGroup0.length" label="VIP")
el-option-group(v-if="friendsGroup0.length" :label="$t('side_panel.favorite')")
el-option.x-friend-item(v-for="friend in friendsGroup0" :key="friend.id" :label="friend.name" :value="friend.id" style="height:auto")
template(v-if="friend.ref")
.avatar(:class="userStatusClass(friend.ref)")
@@ -2523,7 +2523,7 @@ html
.detail
span.name(v-text="friend.ref.displayName" :style="{'color':friend.ref.$userColour}")
span(v-else v-text="friend.id")
el-option-group(v-if="friendsGroup1.length" label="ONLINE")
el-option-group(v-if="friendsGroup1.length" :label="$t('side_panel.online')")
el-option.x-friend-item(v-for="friend in friendsGroup1" :key="friend.id" :label="friend.name" :value="friend.id" style="height:auto")
template(v-if="friend.ref")
.avatar(:class="userStatusClass(friend.ref)")
@@ -2531,7 +2531,7 @@ html
.detail
span.name(v-text="friend.ref.displayName" :style="{'color':friend.ref.$userColour}")
span(v-else v-text="friend.id")
el-option-group(v-if="friendsGroup2.length" label="ACTIVE")
el-option-group(v-if="friendsGroup2.length" :label="$t('side_panel.active')")
el-option.x-friend-item(v-for="friend in friendsGroup2" :key="friend.id" :label="friend.name" :value="friend.id" style="height:auto")
template(v-if="friend.ref")
.avatar
@@ -2539,7 +2539,7 @@ html
.detail
span.name(v-text="friend.ref.displayName" :style="{'color':friend.ref.$userColour}")
span(v-else v-text="friend.id")
el-option-group(v-if="friendsGroup3.length" label="OFFLINE")
el-option-group(v-if="friendsGroup3.length" :label="$t('side_panel.offline')")
el-option.x-friend-item(v-for="friend in friendsGroup3" :key="friend.id" :label="friend.name" :value="friend.id" style="height:auto")
template(v-if="friend.ref")
.avatar
@@ -2547,32 +2547,32 @@ html
.detail
span.name(v-text="friend.ref.displayName" :style="{'color':friend.ref.$userColour}")
span(v-else v-text="friend.id")
el-form-item(label="Group ID" v-if="newInstanceDialog.accessType === 'group'")
el-form-item(:label="$t('dialog.new_instance.group_id')" v-if="newInstanceDialog.accessType === 'group'")
el-input(v-model="newInstanceDialog.groupId" placeholder="grp_UUID" size="mini")
el-form-item(label="Location")
el-form-item(:label="$t('dialog.new_instance.location')")
el-input(v-model="newInstanceDialog.location" size="mini" readonly)
el-form-item(label="URL")
el-form-item(:label="$t('dialog.new_instance.url')")
el-input(v-model="newInstanceDialog.url" size="mini" readonly @click.native="$event.target.tagName === 'INPUT' && $event.target.select()")
template(#footer)
el-button(size="small" @click="copyInstanceUrl(newInstanceDialog.location)") Copy URL
el-button(size="small" @click="selfInvite(newInstanceDialog.location)") Self Invite
el-button(size="small" @click="showInviteDialog(newInstanceDialog.location)" :disabled="(newInstanceDialog.accessType === 'friends' || newInstanceDialog.accessType === 'invite') && newInstanceDialog.userId !== API.currentUser.id") Invite
el-button(type="primary" size="small" @click="showLaunchDialog(newInstanceDialog.location, newInstanceDialog.secureOrShortName)") Launch
el-button(size="small" @click="copyInstanceUrl(newInstanceDialog.location)") {{ $t('dialog.new_instance.copy_url') }}
el-button(size="small" @click="selfInvite(newInstanceDialog.location)") {{ $t('dialog.new_instance.self_invite') }}
el-button(size="small" @click="showInviteDialog(newInstanceDialog.location)" :disabled="(newInstanceDialog.accessType === 'friends' || newInstanceDialog.accessType === 'invite') && newInstanceDialog.userId !== API.currentUser.id") {{ $t('dialog.new_instance.invite') }}
el-button(type="primary" size="small" @click="showLaunchDialog(newInstanceDialog.location, newInstanceDialog.secureOrShortName)") {{ $t('dialog.new_instance.launch') }}
//- dialog: launch options
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchOptionsDialog" :visible.sync="launchOptionsDialog.visible" title="Launch Options" width="500px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchOptionsDialog" :visible.sync="launchOptionsDialog.visible" :title="$t('dialog.launch_options.header')" width="500px")
div(style="font-size:12px")
| These options are for advanced users only. #[br]
| to change max fps: --fps=<N> e.g.) #[el-tag(size="mini") --fps=144]
| {{ $t('dialog.launch_options.description') }} #[br]
| {{ $t('dialog.launch_options.example') }} #[el-tag(size="mini") --fps=144]
el-input(type="textarea" v-model="launchOptionsDialog.launchArguments" size="mini" show-word-limit :autosize="{ minRows:2, maxRows:5 }" placeholder="" style="margin-top:10px")
div(style="font-size:12px;margin-top:10px")
| VRChat Path Override
| {{ $t('dialog.launch_options.path_override') }}
el-input(type="textarea" v-model="launchOptionsDialog.vrcLaunchPathOverride" placeholder="C:\\Program Files (x86)\\Steam\\steamapps\\common\\VRChat" :rows="1" style="dispaly:block;margin-top:10px")
template(#footer)
div(style="display:flex")
el-button(size="small" @click="openExternalLink('https://docs.vrchat.com/docs/launch-options')") VRChat Docs
el-button(size="small" @click="openExternalLink('https://docs.unity3d.com/Manual/CommandLineArguments.html')") Unity Manual
el-button(type="primary" size="small" :disabled="launchOptionsDialog.loading" @click="updateLaunchOptions" style="margin-left:auto") Save
el-button(size="small" @click="openExternalLink('https://docs.vrchat.com/docs/launch-options')") {{ $t('dialog.launch_options.vrchat_docs') }}
el-button(size="small" @click="openExternalLink('https://docs.unity3d.com/Manual/CommandLineArguments.html')") {{ $t('dialog.launch_options.unity_manual') }}
el-button(type="primary" size="small" :disabled="launchOptionsDialog.loading" @click="updateLaunchOptions" style="margin-left:auto") {{ $t('dialog.launch_options.save') }}
//- dialog: VRChat Config JSON
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="VRChatConfigDialog" :visible.sync="VRChatConfigDialog.visible" title="VRChat Config JSON" width="420px")
@@ -2621,14 +2621,14 @@ html
el-button(type="primary" size="small" :disabled="VRChatConfigDialog.loading" @click="saveVRChatConfigFile") Save
//- dialog: YouTube Api Dialog
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="youTubeApiDialog" :visible.sync="youTubeApiDialog.visible" title="YouTube API" width="400px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="youTubeApiDialog" :visible.sync="youTubeApiDialog.visible" :title="$t('dialog.youtube_api.header')" width="400px")
div(style='font-size:12px;')
| Enter your YouTube API Key (optional) #[br]
el-input(type="textarea" v-model="youTubeApiKey" placeholder="YouTube API Key" maxlength="39" show-word-limit style="dispaly:block;margin-top:10px")
| {{ $t('dialog.youtube_api.description') }} #[br]
el-input(type="textarea" v-model="youTubeApiKey" :placeholder="$t('dialog.youtube_api.placeholder')" maxlength="39" show-word-limit style="dispaly:block;margin-top:10px")
template(#footer)
div(style="display:flex")
el-button(size="small" @click="openExternalLink('https://rapidapi.com/blog/how-to-get-youtube-api-key/')") Guide
el-button(type="primary" size="small" @click="testYouTubeApiKey" style="margin-left:auto") Save
el-button(size="small" @click="openExternalLink('https://rapidapi.com/blog/how-to-get-youtube-api-key/')") {{ $t('dialog.youtube_api.guide') }}
el-button(type="primary" size="small" @click="testYouTubeApiKey" style="margin-left:auto") {{ $t('dialog.youtube_api.save') }}
//- dialog: Set World Tags
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="setWorldTagsDialog" :visible.sync="setWorldTagsDialog.visible" title="Set World Tags" width="400px")
@@ -2671,57 +2671,57 @@ html
el-button(size="small" @click="downloadDialog.visible = false") Close
//- dialog: update VRCX
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="VRCXUpdateDialog" :visible.sync="VRCXUpdateDialog.visible" title="VRCX Updater" width="400px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="VRCXUpdateDialog" :visible.sync="VRCXUpdateDialog.visible" :title="$t('dialog.vrcx_updater.header')" width="400px")
div(v-loading="checkingForVRCXUpdate" style="margin-top:15px")
div(v-if="VRCXUpdateDialog.updatePending" style="margin-bottom:15px")
span(v-text="pendingVRCXUpdate")
br
span Ready for install, restart VRCX to apply.
span {{ $t('dialog.vrcx_updater.ready_for_update') }}
el-select(v-model="branch" @change="loadBranchVersions" style="display:inline-block;width:150px;margin-right:15px")
el-option(v-once v-for="branch in branches" :key="branch.name" :label="branch.name" :value="branch.name")
el-select(v-model="VRCXUpdateDialog.release" style="display:inline-block;width:150px")
el-option(v-for="item in VRCXUpdateDialog.releases" :key="item.name" :label="item.tag_name" :value="item.name")
div(v-if="!VRCXUpdateDialog.updatePending && VRCXUpdateDialog.release === appVersion" style="margin-top:15px")
span VRCX is up to date.
span {{ $t('dialog.vrcx_updater.latest_version') }}
template(#footer)
el-button(v-if="(VRCXUpdateDialog.updatePending && VRCXUpdateDialog.release !== pendingVRCXUpdate) || VRCXUpdateDialog.release !== appVersion" type="primary" size="small" @click="installVRCXUpdate") Download
el-button(v-if="VRCXUpdateDialog.updatePending" type="primary" size="small" @click="restartVRCX") Install
el-button(v-if="(VRCXUpdateDialog.updatePending && VRCXUpdateDialog.release !== pendingVRCXUpdate) || VRCXUpdateDialog.release !== appVersion" type="primary" size="small" @click="installVRCXUpdate") {{ $t('dialog.vrcx_updater.download') }}
el-button(v-if="VRCXUpdateDialog.updatePending" type="primary" size="small" @click="restartVRCX") {{ $t('dialog.vrcx_updater.install') }}
//- dialog: launch
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchDialog" :visible.sync="launchDialog.visible" title="Launch" width="450px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchDialog" :visible.sync="launchDialog.visible" :title="$t('dialog.launch.header')" width="450px")
el-form(:model="launchDialog" label-width="80px")
el-form-item(label="URL")
el-form-item(:label="$t('dialog.launch.url')")
el-input(v-model="launchDialog.url" size="mini" @click.native="$event.target.tagName === 'INPUT' && $event.target.select()" style="width:260px")
el-tooltip(placement="right" content="Copy to clipboard" :disabled="hideTooltips")
el-tooltip(placement="right" :content="$t('dialog.launch.copy_tooltip')" :disabled="hideTooltips")
el-button(@click="copyInstanceMessage(launchDialog.url)" size="mini" icon="el-icon-s-order" style="margin-right:5px" circle)
el-form-item(v-if="launchDialog.shortUrl" label="Short URL")
el-tooltip(placement="top" style="margin-left:5px" content="Short URL's expire after a set period of time")
el-form-item(v-if="launchDialog.shortUrl" :label="$t('dialog.launch.short_url')")
el-tooltip(placement="top" style="margin-left:5px" :content="$t('dialog.launch.short_url_notice')")
i.el-icon-warning
el-input(v-model="launchDialog.shortUrl" size="mini" @click.native="$event.target.tagName === 'INPUT' && $event.target.select()" style="width:241px")
el-tooltip(placement="right" content="Copy to clipboard" :disabled="hideTooltips")
el-tooltip(placement="right" :content="$t('dialog.launch.copy_tooltip')" :disabled="hideTooltips")
el-button(@click="copyInstanceMessage(launchDialog.shortUrl)" size="mini" icon="el-icon-s-order" style="margin-right:5px" circle)
el-form-item(label="Location")
el-form-item(:label="$t('dialog.launch.location')")
el-input(v-model="launchDialog.location" size="mini" @click.native="$event.target.tagName === 'INPUT' && $event.target.select()" style="width:260px")
el-tooltip(placement="right" content="Copy to clipboard" :disabled="hideTooltips")
el-tooltip(placement="right" :content="$t('dialog.launch.copy_tooltip')" :disabled="hideTooltips")
el-button(@click="copyInstanceMessage(launchDialog.location)" size="mini" icon="el-icon-s-order" style="margin-right:5px" circle)
template(#footer)
el-checkbox(v-model="launchDialog.desktop" style="float:left;margin-top:5px") Start as Desktop (No VR)
el-button(size="small" @click="showPreviousInstanceInfoDialog(launchDialog.location)") Info
el-button(size="small" @click="showInviteDialog(launchDialog.location)" :disabled="!checkCanInvite(launchDialog.location)") Invite
el-button(type="primary" size="small" @click="launchGame(launchDialog.location, launchDialog.secureOrShortName)" :disabled="!launchDialog.secureOrShortName") Launch
el-checkbox(v-model="launchDialog.desktop" style="float:left;margin-top:5px") {{ $t('dialog.launch.start_as_desktop') }}
el-button(size="small" @click="showPreviousInstanceInfoDialog(launchDialog.location)") {{ $t('dialog.launch.info') }}
el-button(size="small" @click="showInviteDialog(launchDialog.location)" :disabled="!checkCanInvite(launchDialog.location)") {{ $t('dialog.launch.invite') }}
el-button(type="primary" size="small" @click="launchGame(launchDialog.location, launchDialog.secureOrShortName)" :disabled="!launchDialog.secureOrShortName") {{ $t('dialog.launch.launch') }}
//- dialog: export friends list
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="exportFriendsListDialog" title="Export Friends List" width="650px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="exportFriendsListDialog" :title="$t('dialog.export_friends_list.header')" width="650px")
el-input(type="textarea" v-if="exportFriendsListDialog" v-model="exportFriendsListContent" size="mini" rows="15" resize="none" readonly style="margin-top:15px" @click.native="$event.target.tagName === 'TEXTAREA' && $event.target.select()")
//- dialog: export avatars list
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="exportAvatarsListDialog" title="Export Own Avatars" width="650px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="exportAvatarsListDialog" :title="$t('dialog.export_own_avatars.header')" width="650px")
el-input(type="textarea" v-if="exportAvatarsListDialog" v-model="exportAvatarsListContent" size="mini" rows="15" resize="none" readonly style="margin-top:15px" @click.native="$event.target.tagName === 'TEXTAREA' && $event.target.select()")
//- dialog: Discord username list
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="discordNamesDialogVisible" title="Discord Names" width="650px")
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" :visible.sync="discordNamesDialogVisible" :title="$t('dialog.discord_names.header')" width="650px")
div(style='font-size:12px;')
| Click load missing entries in the Friends List tab to search entire friends list
| {{ $t('dialog.discord_names.description') }}
el-input(type="textarea" v-if="discordNamesDialogVisible" v-model="discordNamesContent" size="mini" rows="15" resize="none" readonly style="margin-top:15px")
//- dialog: Notification position

View File

@@ -710,6 +710,11 @@
"header": "JSON"
}
},
"favorite": {
"header": "Choose Group",
"vrchat_favorites": "VRChat Favorites",
"local_favorites": "Local Favorites"
},
"social_status": {
"header": "Social Status",
"history": "History",
@@ -728,6 +733,78 @@
"bio_placeholder": "Please input a bio",
"add_link": "Add Link",
"update": "Update"
},
"new_instance": {
"header": "New Instance",
"access_type": "Access Type",
"access_type_public": "Public",
"access_type_group": "Group",
"access_type_friend_plus": "Friends+",
"access_type_friend": "Friends",
"access_type_invite_plus": "Invite+",
"access_type_invite": "Invite",
"region": "Region",
"region_usw": "US West",
"region_use": "US East",
"region_eu": "Europe",
"region_jp": "Japan",
"world_id": "World ID",
"instance_id": "Instance ID",
"instance_id_placeholder": "Random",
"instance_creator": "Instance Creator",
"instance_creator_placeholder": "Choose User",
"group_id": "Group ID",
"location": "Location",
"url": "URL",
"copy_url": "Copy URL",
"self_invite": "Self invite",
"invite": "Invite",
"launch": "Launch"
},
"launch_options": {
"header": "Launch Options",
"description": "These options are for advanced users only.",
"example": "to change max fps: --fps=<N> e.g.)",
"path_override": "VRChat Path Override",
"vrchat_docs": "VRChat Docs",
"unity_manual": "Unity Manual",
"save": "Save"
},
"youtube_api": {
"header": "YouTube API",
"description": "Enter your YouTube API Key (optional)",
"placeholder": "YouTube API Key",
"guide": "Guide",
"save": "Save"
},
"vrcx_updater": {
"header": "VRCX Updater",
"latest_version": "VRCX is up to date.",
"ready_for_update": "Ready for install, restart VRCX to apply.",
"download": "Download",
"install": "Install"
},
"launch": {
"header": "Launch",
"url": "URL",
"short_url": "Short URL",
"short_url_notice": "Short URL's expire after a set period of time",
"location": "Location",
"copy_tooltip": "Copy to clipboard",
"start_as_desktop": "Start as Desktop (No VR)",
"info": "Info",
"invite": "Invite",
"launch": "Launch"
},
"export_friends_list": {
"header": "Export Friends List"
},
"export_own_avatars": {
"header": "Export Own Avatars"
},
"discord_names": {
"header": "Discord Names",
"description": "Click load missing entries in the Friends List tab to search entire friends list"
}
},
"table": {

View File

@@ -6,7 +6,7 @@
"game_log": "遊戲紀錄",
"player_list": "玩家列表",
"search": "搜尋",
"favorites": "最愛",
"favorites": "收藏",
"friend_log": "好友紀錄",
"moderation": "玩家處置",
"notification": "通知",
@@ -30,7 +30,7 @@
}
},
"feed": {
"favorites_only_tooltip": "僅篩選最愛",
"favorites_only_tooltip": "僅篩選收藏",
"filter_placeholder": "篩選動態",
"search_placeholder": "搜尋動態"
},
@@ -72,18 +72,18 @@
},
"worlds": {
"header": "世界",
"vrchat_favorites": "VRChat 最愛",
"local_favorites": "本地最愛",
"vrchat_favorites": "VRChat 收藏",
"local_favorites": "本地收藏",
"new_group": "新群組"
},
"avatars": {
"header": "角色"
},
"refresh_tooltip": "重新整理所有最愛",
"refresh_tooltip": "重新整理所有收藏",
"export": "匯出",
"import": "匯入",
"move_tooltip": "移動",
"unfavorite_tooltip": "解除最愛",
"unfavorite_tooltip": "解除收藏",
"visibility_tooltip": "變更可見度",
"rename_tooltip": "重新命名",
"clear_tooltip": "清除",
@@ -111,7 +111,7 @@
"load_notice": "這會向 API 傳送大量請求,所以請謹慎使用",
"load_tooltip": "讀取",
"cancel_tooltip": "取消",
"favorites_only_tooltip": "僅篩選最愛",
"favorites_only_tooltip": "僅篩選收藏",
"search_placeholder": "搜尋好友",
"filter_placeholder": "篩選好友",
"refresh_tooltip": "重新整理",
@@ -207,7 +207,7 @@
"theme_mode_dark": "深色",
"vrcplus_profile_icons": "VRChat+ 個人檔案圖示",
"disable_tooltips": "關閉提示",
"sort_favorite_by": "最愛排序依據",
"sort_favorite_by": "收藏排序依據",
"sort_favorite_by_name": "名稱",
"sort_favorite_by_date": "時間",
"sort_instance_users_by": "坊間玩家排序依據",
@@ -231,7 +231,7 @@
"sort_by_status": "依狀態排序",
"sort_gps_to_top": "將 GPS 排序到頂部",
"sort_gps_to_top_notice": "(僅限上線玩家)",
"sort_favorite_by": "最愛玩家 排序依據",
"sort_favorite_by": "收藏玩家 排序依據",
"sort_favorite_by_alphabet": "字母順序",
"sort_favorite_by_online_time": "上線時長",
"sort_online_by": "網頁玩家 排序依據",
@@ -406,7 +406,7 @@
"enable": "啟用",
"enable_tooltip": "需要啟用 SteamVR 疊層選項",
"filter": "篩選器",
"filter_favorites": "最愛",
"filter_favorites": "收藏",
"filter_friends": "好友",
"filter_everyone": "所有人",
"message_timeout": "訊息時長"
@@ -416,7 +416,7 @@
"enable": "啟用",
"enable_tooltip": "需要啟用 SteamVR 疊層選項",
"filter": "篩選器",
"filter_favorites": "最愛",
"filter_favorites": "收藏",
"filter_friends": "好友",
"filter_everyone": "所有人",
"timeout_threshold": "愈時閾值"
@@ -434,7 +434,7 @@
"refresh_tooltip": "重新整理好友",
"friends": "好友",
"me": "我",
"favorite": "最愛",
"favorite": "收藏",
"online": "上線",
"active": "活躍",
"offline": "離線",
@@ -456,8 +456,8 @@
"vrchat_team": "VRChat 團隊"
},
"actions": {
"favorite_tooltip": "添加到我的最愛",
"unfavorite_tooltip": "從我的最愛中移除",
"favorite_tooltip": "添加到我的收藏",
"unfavorite_tooltip": "從我的收藏中移除",
"refresh": "重新整理",
"copy_url": "複製玩家連結",
"invite": "邀請",
@@ -532,7 +532,7 @@
"sort_by_update": "依更新排序"
},
"favorite_worlds": {
"header": "最愛世界"
"header": "收藏世界"
},
"avatars": {
"header": "角色",
@@ -556,8 +556,8 @@
},
"actions": {
"delete_cache_tooltip": "從快取中刪除世界",
"favorite_tooltip": "添加到我的最愛",
"unfavorite_tooltip": "從我的最愛中移除",
"favorite_tooltip": "添加到我的收藏",
"unfavorite_tooltip": "從我的收藏中移除",
"refresh": "重新整理",
"new_instance": "新房間",
"make_home": "設為家點",
@@ -592,7 +592,7 @@
"copy_url": "複製連結",
"youtube_preview": "YouTube 預覽",
"players": "玩家人數",
"favorites": "最愛次數",
"favorites": "收藏次數",
"visits": "總綁訪次數",
"capacity": "最大玩家上限",
"heat": "熱度",
@@ -620,8 +620,8 @@
},
"actions": {
"delete_cache_tooltip": "從快取中刪除角色",
"favorite_tooltip": "添加到我的最愛",
"unfavorite_tooltip": "從我的最愛中移除",
"favorite_tooltip": "添加到我的收藏",
"unfavorite_tooltip": "從我的收藏中移除",
"refresh": "重新整理",
"select": "選擇角色",
"select_fallback": "選擇為備用角色",
@@ -712,6 +712,11 @@
"header": "原始資料"
}
},
"favorite": {
"header": "選擇群組",
"vrchat_favorites": "VRChat 收藏",
"local_favorites": "本地收藏"
},
"social_status": {
"header": "社交狀態",
"history": "過去的社交狀態",
@@ -730,6 +735,78 @@
"bio_placeholder": "在這裡介紹一下自己吧!",
"add_link": "新增社交連結",
"update": "更新"
},
"new_instance": {
"header": "新房間",
"access_type": "房間種類",
"access_type_public": "公開",
"access_type_group": "群組",
"access_type_friend_plus": "好友+",
"access_type_friend": "好友",
"access_type_invite_plus": "邀請+",
"access_type_invite": "邀請",
"region": "地區",
"region_usw": "美國西部",
"region_use": "美國東部",
"region_eu": "歐洲",
"region_jp": "日本",
"world_id": "世界 ID",
"instance_id": "房間 ID",
"instance_id_placeholder": "亂數",
"instance_creator": "房間建立者",
"instance_creator_placeholder": "選擇玩家",
"group_id": "群組 ID",
"location": "地點",
"url": "連結",
"copy_url": "複製連結",
"self_invite": "自我邀請",
"invite": "邀請",
"launch": "啟動"
},
"launch_options": {
"header": "啟動選項",
"description": "這些選項僅適用於高級玩家。",
"example": "變更 FPS 限制:--fps=<N> 例:",
"path_override": "VRChat 位置覆蓋",
"vrchat_docs": "VRChat 文檔",
"unity_manual": "Unity 手冊",
"save": "儲存"
},
"youtube_api": {
"header": "YouTube API",
"description": "輸入你的 YouTube API 金鑰(選擇性)",
"placeholder": "YouTube API 金鑰",
"guide": "教學",
"save": "儲存"
},
"vrcx_updater": {
"header": "VRCX 更新器",
"latest_version": "VRCX 已是最新版本。",
"ready_for_update": "已準備好安裝更新,重新啟動 VRCX 來套用更新。",
"download": "下載",
"install": "安裝"
},
"launch": {
"header": "啟動",
"url": "連結",
"short_url": "短連結",
"short_url_notice": "短網址會在一段時間後過期",
"location": "地點",
"copy_tooltip": "複製到剪貼簿",
"start_as_desktop": "以桌面模式啟動(無 VR",
"info": "資訊",
"invite": "邀請",
"launch": "啟動"
},
"export_friends_list": {
"header": "匯出好友列表"
},
"export_own_avatars": {
"header": "匯出私有角色"
},
"discord_names": {
"header": "Discord 名稱",
"description": "點擊好友列表中的「讀取缺失的項目」來搜尋整個好友列表"
}
},
"table": {