update: chinese translation
This commit is contained in:
@@ -24,14 +24,14 @@ function submit() {
|
|||||||
<template>
|
<template>
|
||||||
<form @submit.prevent="submit">
|
<form @submit.prevent="submit">
|
||||||
<fieldset class="ts-fieldset">
|
<fieldset class="ts-fieldset">
|
||||||
<legend class="ts-legend">New Message</legend>
|
<legend class="ts-legend">新留言</legend>
|
||||||
<div class="ts-wrap is-vertical">
|
<div class="ts-wrap is-vertical">
|
||||||
<div class="ts-control">
|
<div class="ts-control is-wide">
|
||||||
<div class="label">Message</div>
|
<div class="label">留言</div>
|
||||||
<div class="content is-fluid">
|
<div class="content is-fluid">
|
||||||
<div class="ts-input">
|
<div class="ts-input">
|
||||||
<textarea v-if="!locked" name="message" placeholder="Message" v-model="text" :maxlength="maxLength" rows="5"></textarea>
|
<textarea v-if="!locked" name="message" placeholder="輸入留言..." v-model="text" :maxlength="maxLength" rows="5"></textarea>
|
||||||
<textarea v-else placeholder="Please log in to leave message" :maxlength="maxLength" rows="5" disabled></textarea>
|
<textarea v-else placeholder="請先登入才能留言!" :maxlength="maxLength" rows="5" disabled></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-text is-small is-secondary is-end-aligned">
|
<div class="ts-text is-small is-secondary is-end-aligned">
|
||||||
{{ remainingCharacters }} / {{ maxLength }}
|
{{ remainingCharacters }} / {{ maxLength }}
|
||||||
@@ -40,7 +40,7 @@ function submit() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-wrap has-top-spaced is-end-aligned">
|
<div class="ts-wrap has-top-spaced is-end-aligned">
|
||||||
<button class="ts-button" type="submit" :class="{'is-disabled': text === '' || props.locked }">Submit</button>
|
<button class="ts-button" type="submit" :class="{'is-disabled': text === '' || props.locked }">送出</button>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ const authStore = useAuthStore();
|
|||||||
|
|
||||||
function validateUsername() {
|
function validateUsername() {
|
||||||
if (!username.value) {
|
if (!username.value) {
|
||||||
usernameError.value = 'Username is required.';
|
usernameError.value = '使用者名稱為必填。';
|
||||||
} else if (username.value.length < 3) {
|
} else if (username.value.length < 3) {
|
||||||
usernameError.value = 'Username must be at least 3 characters.';
|
usernameError.value = '使用者名稱長度必須至少三個字元。';
|
||||||
} else {
|
} else {
|
||||||
usernameError.value = '';
|
usernameError.value = '';
|
||||||
}
|
}
|
||||||
@@ -25,9 +25,9 @@ function validateUsername() {
|
|||||||
|
|
||||||
function validatePassword() {
|
function validatePassword() {
|
||||||
if (!password.value) {
|
if (!password.value) {
|
||||||
passwordError.value = 'Password is required.';
|
passwordError.value = '密碼為必填。';
|
||||||
} else if (password.value.length < 8) {
|
} else if (password.value.length < 8) {
|
||||||
passwordError.value = 'Password must be at least 8 characters.';
|
passwordError.value = '使用者名稱長度必須至少八個字元。';
|
||||||
} else {
|
} else {
|
||||||
passwordError.value = '';
|
passwordError.value = '';
|
||||||
}
|
}
|
||||||
@@ -70,32 +70,31 @@ const onSubmit = async () => {
|
|||||||
<template>
|
<template>
|
||||||
<form @submit.prevent="onSubmit">
|
<form @submit.prevent="onSubmit">
|
||||||
<fieldset class="ts-fieldset">
|
<fieldset class="ts-fieldset">
|
||||||
<legend class="ts-legend">Login</legend>
|
<legend class="ts-legend">登入</legend>
|
||||||
<div class="ts-wrap is-vertical">
|
<div class="ts-wrap is-vertical">
|
||||||
<div class="ts-control">
|
<div class="ts-control is-wide">
|
||||||
<div class="label">Username</div>
|
<div class="label">使用者名稱</div>
|
||||||
<div class="content is-fluid">
|
<div class="content is-fluid">
|
||||||
<div class="ts-input" :class="{'is-negative': usernameError}">
|
<div class="ts-input" :class="{'is-negative': usernameError}">
|
||||||
<input name="username" type="text" placeholder="Username" v-model="username" />
|
<input name="username" type="text" placeholder="使用者名稱" v-model="username" />
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-text is-small is-negative" v-if="usernameError">{{ usernameError }}</div>
|
<div class="ts-text is-small is-negative" v-if="usernameError">{{ usernameError }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-control">
|
<div class="ts-control is-wide">
|
||||||
<div class="label">Password</div>
|
<div class="label">密碼</div>
|
||||||
<div class="content is-fluid">
|
<div class="content is-fluid">
|
||||||
<div class="ts-input" :class="{'is-negative': passwordError}">
|
<div class="ts-input" :class="{'is-negative': passwordError}">
|
||||||
<input name="password" type="password" placeholder="Password" v-model="password" />
|
<input name="password" type="password" placeholder="密碼" v-model="password" />
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-text is-small is-negative" v-if="passwordError">{{ passwordError }}</div>
|
<div class="ts-text is-small is-negative" v-if="passwordError">{{ passwordError }}</div>
|
||||||
<div class="ts-text is-small is-negative">Warning: This is for demonstration purposes only. Passwords are stored in plaintext!</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-wrap has-top-spaced is-end-aligned">
|
<div class="ts-wrap has-top-spaced is-end-aligned">
|
||||||
<button class="ts-button" type="submit" :class="{
|
<button class="ts-button" type="submit" :class="{
|
||||||
'is-disabled': username === '' || password === '' || usernameError !== '' || passwordError !== ''
|
'is-disabled': username === '' || password === '' || usernameError !== '' || passwordError !== ''
|
||||||
}">Submit</button>
|
}">送出</button>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -61,17 +61,17 @@ const avatarUrl = computed(() => {
|
|||||||
<template>
|
<template>
|
||||||
<form @submit.prevent="onSubmit">
|
<form @submit.prevent="onSubmit">
|
||||||
<fieldset class="ts-fieldset">
|
<fieldset class="ts-fieldset">
|
||||||
<legend class="ts-legend">Update Profile</legend>
|
<legend class="ts-legend">更新個人檔案</legend>
|
||||||
<div class="ts-wrap is-vertical">
|
<div class="ts-wrap is-vertical">
|
||||||
<div class="ts-control">
|
<div class="ts-control is-wide">
|
||||||
<div class="label">Username</div>
|
<div class="label">使用者名稱</div>
|
||||||
<div class="content is-fluid">
|
<div class="content is-fluid">
|
||||||
<div class="ts-input">
|
<div class="ts-input">
|
||||||
<input type="text" name="username" placeholder="Username" :value="props.profile?.username" readonly disabled />
|
<input type="text" name="username" placeholder="Username" :value="props.profile?.username" readonly disabled />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-control">
|
<div class="ts-control is-wide">
|
||||||
<div class="label">Avatar</div>
|
<div class="label">Avatar</div>
|
||||||
<div class="content is-fluid">
|
<div class="content is-fluid">
|
||||||
<div v-if="avatarUrl">
|
<div v-if="avatarUrl">
|
||||||
@@ -81,12 +81,12 @@ const avatarUrl = computed(() => {
|
|||||||
<input type="file" accept="image/jpeg, image/png" @change="onFileChange" />
|
<input type="file" accept="image/jpeg, image/png" @change="onFileChange" />
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-text is-small is-negative" v-if="avatarError">{{ avatarError }}</div>
|
<div class="ts-text is-small is-negative" v-if="avatarError">{{ avatarError }}</div>
|
||||||
<div class="ts-text is-small">Avatar must be a JPG or PNG image less than 2MB.</div>
|
<div class="ts-text is-small">Avatar 必須是 JPG 或 PNG 格式。檔案需小於 2MB。</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-wrap has-top-spaced is-end-aligned">
|
<div class="ts-wrap has-top-spaced is-end-aligned">
|
||||||
<button class="ts-button" type="submit">Update</button>
|
<button class="ts-button" type="submit">更新</button>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ const passwordError = ref('');
|
|||||||
|
|
||||||
function validateUsername() {
|
function validateUsername() {
|
||||||
if (!username.value) {
|
if (!username.value) {
|
||||||
usernameError.value = 'Username is required.';
|
usernameError.value = '使用者名稱為必填。';
|
||||||
} else if (username.value.length < 3) {
|
} else if (username.value.length < 3) {
|
||||||
usernameError.value = 'Username must be at least 3 characters.';
|
usernameError.value = '使用者名稱長度必須至少三個字元。';
|
||||||
} else {
|
} else {
|
||||||
usernameError.value = '';
|
usernameError.value = '';
|
||||||
}
|
}
|
||||||
@@ -21,9 +21,9 @@ function validateUsername() {
|
|||||||
|
|
||||||
function validatePassword() {
|
function validatePassword() {
|
||||||
if (!password.value) {
|
if (!password.value) {
|
||||||
passwordError.value = 'Password is required.';
|
passwordError.value = '密碼為必填。';
|
||||||
} else if (password.value.length < 8) {
|
} else if (password.value.length < 8) {
|
||||||
passwordError.value = 'Password must be at least 8 characters.';
|
passwordError.value = '使用者名稱長度必須至少八個字元。';
|
||||||
} else {
|
} else {
|
||||||
passwordError.value = '';
|
passwordError.value = '';
|
||||||
}
|
}
|
||||||
@@ -58,32 +58,31 @@ const submit = () => {
|
|||||||
<template>
|
<template>
|
||||||
<form @submit.prevent="submit">
|
<form @submit.prevent="submit">
|
||||||
<fieldset class="ts-fieldset">
|
<fieldset class="ts-fieldset">
|
||||||
<legend class="ts-legend">New User</legend>
|
<legend class="ts-legend">註冊</legend>
|
||||||
<div class="ts-wrap is-vertical">
|
<div class="ts-wrap is-vertical">
|
||||||
<div class="ts-control">
|
<div class="ts-control is-wide">
|
||||||
<div class="label">Username</div>
|
<div class="label ts-text is-required">使用者名稱</div>
|
||||||
<div class="content is-fluid">
|
<div class="content is-fluid">
|
||||||
<div class="ts-input" :class="{'is-negative': usernameError}">
|
<div class="ts-input" :class="{'is-negative': usernameError}">
|
||||||
<input name="username" type="text" placeholder="Username" v-model="username" @input="validateUsername" />
|
<input name="username" type="text" placeholder="使用者名稱" v-model="username" @input="validateUsername" />
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-text is-small is-negative" v-if="usernameError">{{ usernameError }}</div>
|
<div class="ts-text is-small is-negative" v-if="usernameError">{{ usernameError }}</div>
|
||||||
<div class="ts-text is-small">Username must be alphanumeric and at least 3 characters.</div>
|
<div class="ts-text is-small">使用者名稱只能有字母、數字,長度必須至少三個字元。</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-control">
|
<div class="ts-control is-wide">
|
||||||
<div class="label">Password</div>
|
<div class="label ts-text is-required">密碼</div>
|
||||||
<div class="content is-fluid">
|
<div class="content is-fluid">
|
||||||
<div class="ts-input" :class="{'is-negative': passwordError}">
|
<div class="ts-input" :class="{'is-negative': passwordError}">
|
||||||
<input name="password" type="password" placeholder="Password" v-model="password" @input="validatePassword" />
|
<input name="password" type="password" placeholder="密碼" v-model="password" @input="validatePassword" />
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-text is-small is-negative" v-if="passwordError">{{ passwordError }}</div>
|
<div class="ts-text is-small is-negative" v-if="passwordError">{{ passwordError }}</div>
|
||||||
<div class="ts-text is-small">Password must be at least 8 characters.</div>
|
<div class="ts-text is-small">密碼長度必須至少八個字元。</div>
|
||||||
<div class="ts-text is-small is-negative">Warning: This is for demonstration purposes only. Passwords are stored in plaintext!</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ts-wrap has-top-spaced is-end-aligned">
|
<div class="ts-wrap has-top-spaced is-end-aligned">
|
||||||
<button class="ts-button" type="submit" :class="{'is-disabled': username === '' || password === '' }">Submit</button>
|
<button class="ts-button" type="submit" :class="{'is-disabled': username === '' || password === '' }">送出</button>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
Reference in New Issue
Block a user