i18n
This commit is contained in:
		
							parent
							
								
									75c44cd349
								
							
						
					
					
						commit
						d733a1b445
					
				
					 12 changed files with 43 additions and 51 deletions
				
			
		| 
						 | 
				
			
			@ -1,13 +0,0 @@
 | 
			
		|||
export default date => {
 | 
			
		||||
	if (typeof date == 'string') date = new Date(date);
 | 
			
		||||
	return (
 | 
			
		||||
		date.getFullYear()    + '%i18n:common.date.full-year%' +
 | 
			
		||||
		(date.getMonth() + 1) + '%i18n:common.date.month%' +
 | 
			
		||||
		date.getDate()        + '%i18n:common.date.day%' +
 | 
			
		||||
		' ' +
 | 
			
		||||
		date.getHours()       + '%i18n:common.date.hours%' +
 | 
			
		||||
		date.getMinutes()     + '%i18n:common.date.minutes%' +
 | 
			
		||||
		' ' +
 | 
			
		||||
		`(${['日', '月', '火', '水', '木', '金', '土'][date.getDay()]})`
 | 
			
		||||
	);
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +12,7 @@
 | 
			
		|||
	</ui-input>
 | 
			
		||||
	<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
 | 
			
		||||
	<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
 | 
			
		||||
	<p style="margin: 8px 0;">または<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a></p>
 | 
			
		||||
	<p style="margin: 8px 0;">%i18n:@or%<a :href="`${apiUrl}/signin/twitter`">%i18n:@signin-with-twitter%</a></p>
 | 
			
		||||
</form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ export default (os: OS) => (cb, file = null) => {
 | 
			
		|||
 | 
			
		||||
		const w = os.new(CropWindow, {
 | 
			
		||||
			image: file,
 | 
			
		||||
			title: 'アバターとして表示する部分を選択',
 | 
			
		||||
			title: '%i18n:desktop.avatar-crop-title%',
 | 
			
		||||
			aspectRatio: 1 / 1
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,11 +18,11 @@ export default (os: OS) => (cb, file = null) => {
 | 
			
		|||
			data.append('file', blob, file.name + '.cropped.png');
 | 
			
		||||
 | 
			
		||||
			os.api('drive/folders/find', {
 | 
			
		||||
				name: 'アイコン'
 | 
			
		||||
				name: '%i18n:desktop.avatar%'
 | 
			
		||||
			}).then(iconFolder => {
 | 
			
		||||
				if (iconFolder.length === 0) {
 | 
			
		||||
					os.api('drive/folders/create', {
 | 
			
		||||
						name: 'アイコン'
 | 
			
		||||
						name: '%i18n:desktop.avatar%'
 | 
			
		||||
					}).then(iconFolder => {
 | 
			
		||||
						upload(data, iconFolder);
 | 
			
		||||
					});
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ export default (os: OS) => (cb, file = null) => {
 | 
			
		|||
 | 
			
		||||
	const upload = (data, folder) => {
 | 
			
		||||
		const dialog = os.new(ProgressDialog, {
 | 
			
		||||
			title: '新しいアバターをアップロードしています'
 | 
			
		||||
			title: '%i18n:desktop.uploading-avatar%'
 | 
			
		||||
		});
 | 
			
		||||
		document.body.appendChild(dialog.$el);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -76,10 +76,10 @@ export default (os: OS) => (cb, file = null) => {
 | 
			
		|||
			});
 | 
			
		||||
 | 
			
		||||
			os.apis.dialog({
 | 
			
		||||
				title: '%fa:info-circle%アバターを更新しました',
 | 
			
		||||
				text: '新しいアバターが反映されるまで時間がかかる場合があります。',
 | 
			
		||||
				title: '%fa:info-circle% %i18n:desktop.avatar-updated%',
 | 
			
		||||
				text: null,
 | 
			
		||||
				actions: [{
 | 
			
		||||
					text: 'わかった'
 | 
			
		||||
					text: '%i18n:common.got-it%'
 | 
			
		||||
				}]
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ export default (os: OS) => (cb, file = null) => {
 | 
			
		|||
	} else {
 | 
			
		||||
		os.apis.chooseDriveFile({
 | 
			
		||||
			multiple: false,
 | 
			
		||||
			title: '%fa:image%アバターにする画像を選択'
 | 
			
		||||
			title: '%fa:image% %i18n:desktop.choose-avatar%'
 | 
			
		||||
		}).then(file => {
 | 
			
		||||
			fileSelected(file);
 | 
			
		||||
		});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ export default (os: OS) => {
 | 
			
		|||
	const cropImage = file => new Promise((resolve, reject) => {
 | 
			
		||||
		const w = os.new(CropWindow, {
 | 
			
		||||
			image: file,
 | 
			
		||||
			title: 'バナーとして表示する部分を選択',
 | 
			
		||||
			title: '%i18n:desktop.banner-crop-title%',
 | 
			
		||||
			aspectRatio: 16 / 9
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,11 +18,11 @@ export default (os: OS) => {
 | 
			
		|||
			data.append('file', blob, file.name + '.cropped.png');
 | 
			
		||||
 | 
			
		||||
			os.api('drive/folders/find', {
 | 
			
		||||
				name: 'バナー'
 | 
			
		||||
				name: '%i18n:desktop.banner%'
 | 
			
		||||
			}).then(bannerFolder => {
 | 
			
		||||
				if (bannerFolder.length === 0) {
 | 
			
		||||
					os.api('drive/folders/create', {
 | 
			
		||||
						name: 'バナー'
 | 
			
		||||
						name: '%i18n:desktop.banner%'
 | 
			
		||||
					}).then(iconFolder => {
 | 
			
		||||
						resolve(upload(data, iconFolder));
 | 
			
		||||
					});
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ export default (os: OS) => {
 | 
			
		|||
 | 
			
		||||
	const upload = (data, folder) => new Promise((resolve, reject) => {
 | 
			
		||||
		const dialog = os.new(ProgressDialog, {
 | 
			
		||||
			title: '新しいバナーをアップロードしています'
 | 
			
		||||
			title: '%i18n:desktop.uploading-banner%'
 | 
			
		||||
		});
 | 
			
		||||
		document.body.appendChild(dialog.$el);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -79,10 +79,10 @@ export default (os: OS) => {
 | 
			
		|||
			});
 | 
			
		||||
 | 
			
		||||
			os.apis.dialog({
 | 
			
		||||
				title: '%fa:info-circle%バナーを更新しました',
 | 
			
		||||
				text: '新しいバナーが反映されるまで時間がかかる場合があります。',
 | 
			
		||||
				title: '%fa:info-circle% %i18n:desktop.banner-updated%',
 | 
			
		||||
				text: null,
 | 
			
		||||
				actions: [{
 | 
			
		||||
					text: 'わかった'
 | 
			
		||||
					text: '%i18n:common.got-it%'
 | 
			
		||||
				}]
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -95,7 +95,7 @@ export default (os: OS) => {
 | 
			
		|||
			? Promise.resolve(file)
 | 
			
		||||
			: os.apis.chooseDriveFile({
 | 
			
		||||
				multiple: false,
 | 
			
		||||
				title: '%fa:image%バナーにする画像を選択'
 | 
			
		||||
				title: '%fa:image% %i18n:desktop.choose-banner%'
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
		return selectedFile
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,7 +79,6 @@
 | 
			
		|||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import dateStringify from '../../../common/scripts/date-stringify';
 | 
			
		||||
import parse from '../../../../../mfm/parse';
 | 
			
		||||
 | 
			
		||||
import MkPostFormWindow from './post-form-window.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +128,7 @@ export default Vue.extend({
 | 
			
		|||
				: 0;
 | 
			
		||||
		},
 | 
			
		||||
		title(): string {
 | 
			
		||||
			return dateStringify(this.p.createdAt);
 | 
			
		||||
			return new Date(this.p.createdAt).toLocaleString();
 | 
			
		||||
		},
 | 
			
		||||
		urls(): string[] {
 | 
			
		||||
			if (this.p.text) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,6 @@
 | 
			
		|||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import dateStringify from '../../../common/scripts/date-stringify';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	props: {
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +27,7 @@ export default Vue.extend({
 | 
			
		|||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
		title(): string {
 | 
			
		||||
			return dateStringify(this.note.createdAt);
 | 
			
		||||
			return new Date(this.note.createdAt).toLocaleString();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,13 +12,12 @@
 | 
			
		|||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import dateStringify from '../../../common/scripts/date-stringify';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	props: ['note'],
 | 
			
		||||
	computed: {
 | 
			
		||||
		title(): string {
 | 
			
		||||
			return dateStringify(this.note.createdAt);
 | 
			
		||||
			return new Date(this.note.createdAt).toLocaleString();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,7 +71,6 @@
 | 
			
		|||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import dateStringify from '../../../common/scripts/date-stringify';
 | 
			
		||||
import parse from '../../../../../mfm/parse';
 | 
			
		||||
 | 
			
		||||
import MkPostFormWindow from './post-form-window.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +127,7 @@ export default Vue.extend({
 | 
			
		|||
		},
 | 
			
		||||
 | 
			
		||||
		title(): string {
 | 
			
		||||
			return dateStringify(this.p.createdAt);
 | 
			
		||||
			return new Date(this.p.createdAt).toLocaleString();
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		urls(): string[] {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ export default Vue.extend({
 | 
			
		|||
	methods: {
 | 
			
		||||
		add() {
 | 
			
		||||
			(this as any).apis.input({
 | 
			
		||||
				title: 'リスト名',
 | 
			
		||||
				title: '%i18n:@list-name%',
 | 
			
		||||
			}).then(async title => {
 | 
			
		||||
				const list = await (this as any).api('users/lists/create', {
 | 
			
		||||
					title
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@
 | 
			
		|||
			<span v-if="user.isMuted">%fa:eye% %i18n:@unmute%</span>
 | 
			
		||||
			<span v-if="!user.isMuted">%fa:eye-slash% %i18n:@mute%</span>
 | 
			
		||||
		</button>
 | 
			
		||||
		<button class="mute ui" @click="list">%fa:list% リストに追加</button>
 | 
			
		||||
		<button class="mute ui" @click="list">%fa:list% %i18n:@push-to-a-list%</button>
 | 
			
		||||
	</div>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ export default Vue.extend({
 | 
			
		|||
				});
 | 
			
		||||
				(this as any).apis.dialog({
 | 
			
		||||
					title: 'Done!',
 | 
			
		||||
					text: `${this.user.name}を${list.title}に追加しました。`
 | 
			
		||||
					text: '%i18n:@list-pushed%'.replace('{user}', this.user.name).replace('{list}', list.title)
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,7 +55,7 @@ export default define({
 | 
			
		|||
			}).then(data => {
 | 
			
		||||
				this.clear();
 | 
			
		||||
			}).catch(err => {
 | 
			
		||||
				alert('失敗した');
 | 
			
		||||
				alert('Something happened');
 | 
			
		||||
			}).then(() => {
 | 
			
		||||
				this.posting = false;
 | 
			
		||||
			});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue