-
Notifications
You must be signed in to change notification settings - Fork 9
/
app.vue
94 lines (92 loc) · 5.23 KB
/
app.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<i18n lang="yaml">
en:
defaultSiteName: 'ScalaMatsuri {year}'
defaultSiteSubTitle: 'The largest international Scala conference in Asia'
defaultDescription: 'The largest international Scala conference in Asia.'
defaultUrl: 'https://scalamatsuri.org/'
opengraphUri: 'https://2024.scalamatsuri.org/img/favicons/ogp.png'
twitterAccountId: "'scala_jp'"
ja:
defaultSiteName: 'ScalaMatsuri {year}'
defaultSiteSubTitle: 'アジア最大級の Scala のカンファレンス'
defaultDescription: 'Scala をテーマにアジア最大級のカンファレンスが開催されます。'
defaultUrl: 'https://scalamatsuri.org/'
opengraphUri: 'https://2024.scalamatsuri.org/img/favicons/ogp.png'
twitterAccountId: "'scala_jp'"
</i18n>
<template>
<div>
<TheHeader />
<NuxtPage />
<LazySnsFooter />
<LazySnsFlow />
<TheFooter />
</div>
</template>
<script setup lang="ts">
const { t } = useI18n()
const { year } = useAppConfig()
const title = `ScalaMatsuri ${year}`
useHead({
title: t('defaultSiteName', { year: year }),
titleTemplate: `%s | ${t('defaultSiteSubTitle')}`,
meta: [
{ charset: 'UTF-8' },
{ 'http-equiv': 'x-ua-compatible', content: 'ie=edge' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'description', content: `${t('defaultSiteName', { year: year })} | ${t('defaultSiteSubTitle')}` },
{ name: 'keywords', content: `Scala,スカラ,カンファレンス,ScalaMatsuri,${year}` },
{ property: 'og:type', content: 'website' },
{ property: 'og:locale', content: 'ja_JP' },
{ property: 'og:url', content: t('defaultUrl') },
{ property: 'og:title', content: `${t('defaultSiteName', { year: year })} | ${t('defaultSiteSubTitle')}` },
{ property: 'og:site_name', content: t('defaultSiteName', { year: year }) },
{ property: 'og:description', content: `${t('defaultDescription')}` },
{ property: 'og:image', content: t('opengraphUri') },
{ property: 'og:image:width', content: '1200' },
{ property: 'og:image:height', content: '630' },
{ name: 'twitter:card', content: 'summary_large_image' },
{ name: 'twitter:site', content: t('twitterAccountId') },
{ name: 'twitter:creator', content: t('twitterAccountId') },
{ name: 'twitter:url', content: 'https://twitter.com/scala_jp' },
{ name: 'twitter:title', content: `${t('defaultSiteName', { year: year })} | ${t('defaultSiteSubTitle')}` },
{ name: 'twitter:description', content: t('defaultDescription') },
{ name: 'twitter:image', content: t('opengraphUri') },
{ name: 'og:image:secure_url', content: t('opengraphUri'), hid: 'og:image:secure_url' },
{ name: 'application-name', content: title },
{ name: 'apple-mobile-web-app-title', content: title },
{ name: 'theme-color', content: '#2d88ef' },
{ name: 'msapplication-TileColor', content: '#2d88ef' },
{ name: 'msapplication-TileImage', content: '/img/favicons/mstile-144x144.png' },
{ name: 'google-site-verification', content: 'HliqkO_EksFAabDeL9H8LT1_F3sqTf3x7-aL9JIHaK4' },
{ 'http-equiv': 'x-dns-prefetch-control', content: 'on' },
],
link: [
{ rel: 'dns-prefetch', href: '//maps.googleapis.com' },
{ rel: 'dns-prefetch', href: '//maps.gstatic.com' },
{ rel: 'dns-prefetch', href: '//fonts.googleapis.com' },
{ rel: 'dns-prefetch', href: '//connect.facebook.net' },
{ rel: 'dns-prefetch', href: '//platform.twitter.com' },
{ rel: 'dns-prefetch', href: '//b.st-hatena.com' },
{ rel: 'dns-prefetch', href: '//blog.scalamatsuri.org' },
{ rel: 'icon', type: 'image/x-icon', href: '/img/favicons/favicon.ico' },
{ rel: 'shortcut icon', type: 'image/vnd.microsoft.icon', href: '/img/favicons/favicon.ico' },
{ rel: 'icon', type: 'image/vnd.microsoft.icon', href: '/img/favicons/favicon.ico' },
{ rel: 'icon', type: 'image/png', href: '/img/favicons/android-chrome-192x192.png', sizes: '192x192' },
{ rel: 'icon', type: 'image/png', href: '/img/favicons/favicon-16x16.png', sizes: '16x16' },
{ rel: 'icon', type: 'image/png', href: '/img/favicons/favicon-32x32.png', sizes: '32x32' },
{ rel: 'icon', type: 'image/png', href: '/img/favicons/favicon-48x48.png', sizes: '48x48' },
{ rel: 'icon', type: 'image/png', href: '/img/favicons/favicon-96x96.png', sizes: '96x96' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-57x57.png', sizes: '57x57' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-60x60.png', sizes: '60x60' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-72x72.png', sizes: '72x72' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-76x76.png', sizes: '76x76' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-114x114.png', sizes: '114x114' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-120x120.png', sizes: '120x120' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-144x144.png', sizes: '144x144' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-152x152.png', sizes: '152x152' },
{ rel: 'apple-touch-icon', href: '/img/favicons/apple-touch-icon-180x180.png', sizes: '180x180' },
{ rel: 'manifest', href: 'https://2024.scalamatsuri.org/img/favicons/manifest.json' },
],
})
</script>