Skip to content

Commit 794629c

Browse files
matrunchykolesyakogivchaknazar1uamaxdzinOlesyaKlochko
authored
feat: Ukrainian language (#48)
* feat: Ukrainian language * feat: Migration build * feat: Recommendations * feat: Links, breaking changes page * feat: global api * fix: #9 * fix: #10 v-model * #21 translate attr imcludes class and style * #20 Translate: listeners are removed * Update src/uk/breaking-changes/listeners-removed.md * Update src/uk/breaking-changes/listeners-removed.md * Update src/uk/breaking-changes/listeners-removed.md * Update src/uk/breaking-changes/listeners-removed.md * #19 Translate: Slots unification * #18 Translate: render function API * #28 Translate: PropsData * #27 Translate: * #27 Translate: * #26 Translate: inline-template attribute * #25 Translate: filters * Update src/uk/breaking-changes/filters.md * #24 Translate: events API * #23 Translate: keycode modifiers * Update src/uk/breaking-changes/keycode-modifiers.md * Translate: custom elements interop * Translate: custom directives #30 * Update src/uk/breaking-changes/custom-directives.md Co-authored-by: Nazar Niphone <[email protected]> * Update src/uk/breaking-changes/custom-directives.md Co-authored-by: Nazar Niphone <[email protected]> * Update src/uk/breaking-changes/custom-directives.md Co-authored-by: Nazar Niphone <[email protected]> * Update src/uk/breaking-changes/custom-directives.md Co-authored-by: Nazar Niphone <[email protected]> * translation improvements * translate: key Attribute #11 * translate: v-bind merge behavior #13 * translate: v-if vs. v-for precedence #12 * translate: v-on.native modifier removed #14 * translate: title fix #14 * translate: functional components #15 * translate: async components #16 * translate: emits option #17 * translate: attribute coercion behavior #29 * translate: mount changes #32 * translate: props default this access #33 * translate: transition class change #34 * translate: transition as root #35 * translate: transition group root element #36 * translate: vnode lifecycle events #37 * translate: watch on arrays #38 * Update src/uk/breaking-changes/v-if-v-for.md Co-authored-by: Olesya Kogivchak <[email protected]> * Update src/uk/breaking-changes/v-if-v-for.md Co-authored-by: Olesya Kogivchak <[email protected]> * Update src/uk/breaking-changes/key-attribute.md Co-authored-by: Olesya Kogivchak <[email protected]> * Translate: data option --------- Co-authored-by: olesyakogivchak <[email protected]> Co-authored-by: Nazar Niphone <[email protected]> Co-authored-by: Max Druzhinin <[email protected]> Co-authored-by: Olesya Kogivchak <[email protected]>
1 parent d283ef0 commit 794629c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+3758
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ node_modules
22
.DS_Store
33
.pnpm-debug.log
44
.vitepress/dist
5+
.idea

.vitepress/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export default {
1414
{text: 'English', link: '/'},
1515
{text: '中文简体', link: '/zh/'},
1616
{text: '日本語(翻訳中)', link: '/ja/'},
17+
{text: 'Українська', link: '/uk/'},
1718
]
1819
},
1920
locales: locales.themeConfig

.vitepress/locales/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import en from './en'
22
import zh from './zh'
33
import ja from './ja'
4+
import uk from './uk'
45

56
export default {
67
vitepressConfig: {
78
'/': en.vitepressConfig,
89
'/zh/': zh.vitepressConfig,
910
'/ja/': ja.vitepressConfig,
11+
'/uk/': uk.vitepressConfig,
1012
},
1113
themeConfig: {
1214
'/': en.themeConfig,
1315
'/zh/': zh.themeConfig,
1416
'/ja/': ja.themeConfig,
17+
'/uk/': uk.themeConfig,
1518
}
1619
}

.vitepress/locales/uk.js

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
export default {
2+
vitepressConfig: {
3+
title: 'Міграція з Vue 3',
4+
description: 'Гід з міграції з Vue 2 на Vue 3',
5+
lang: 'ua-UK'
6+
},
7+
themeConfig: {
8+
docFooter: {
9+
prev: 'Попередня сторінка',
10+
next: 'Наступна сторінка',
11+
},
12+
outlineTitle: 'На цій сторінці',
13+
nav: [
14+
{ text: 'Документація по Vue 3', link: 'https://ua.vuejs.org' },
15+
],
16+
17+
sidebar: [
18+
{
19+
text: 'Гід',
20+
items: [
21+
{ text: 'Огляд', link: '/uk/' },
22+
{ text: 'Нові рекомендації', link: '/uk/recommendations' },
23+
{ text: 'Міграційна збірка', link: '/uk/migration-build' },
24+
{
25+
text: 'Несумісні зміни',
26+
link: '/uk/breaking-changes/'
27+
}
28+
]
29+
},
30+
{
31+
text: 'Глобальний API',
32+
items: [
33+
{
34+
text: 'Екземпляр програми глобального API',
35+
link: '/uk/breaking-changes/global-api'
36+
},
37+
{
38+
text: 'Глобальний API струшування дерева',
39+
link: '/uk/breaking-changes/global-api-treeshaking'
40+
}
41+
]
42+
},
43+
{
44+
text: 'Шаблон директив',
45+
items: [
46+
{ text: 'v-model', link: '/uk/breaking-changes/v-model' },
47+
{
48+
text: 'Зміни використання key',
49+
link: '/uk/breaking-changes/key-attribute'
50+
},
51+
{
52+
text: 'Пріоритет v-if проти v-for',
53+
link: '/uk/breaking-changes/v-if-v-for'
54+
},
55+
{ text: 'Поведінка злиття v-bind', link: '/uk/breaking-changes/v-bind' },
56+
{
57+
text: 'Модифікатор v-on.native видалено',
58+
link: '/uk/breaking-changes/v-on-native-modifier-removed'
59+
}
60+
]
61+
},
62+
{
63+
text: 'Компоненти',
64+
items: [
65+
{
66+
text: 'Функціональні компоненти',
67+
link: '/uk/breaking-changes/functional-components'
68+
},
69+
{
70+
text: 'Асинхронні компоненти',
71+
link: '/uk/breaking-changes/async-components'
72+
},
73+
{ text: 'Опція emits', link: '/uk/breaking-changes/emits-option' }
74+
]
75+
},
76+
{
77+
text: 'Функції рендерингу',
78+
items: [
79+
{
80+
text: 'API функцій рендерингу',
81+
link: '/uk/breaking-changes/render-function-api'
82+
},
83+
{
84+
text: 'Уніфікація слотів',
85+
link: '/uk/breaking-changes/slots-unification'
86+
},
87+
{
88+
text: '$listeners об\'єднано з $attrs',
89+
link: '/uk/breaking-changes/listeners-removed'
90+
},
91+
{
92+
text: '$attrs включає class & style',
93+
link: '/uk/breaking-changes/attrs-includes-class-style'
94+
}
95+
]
96+
},
97+
{
98+
text: 'Спеціальні елементи',
99+
items: [
100+
{
101+
text: 'Зміни взаємодії',
102+
link: '/uk/breaking-changes/custom-elements-interop'
103+
}
104+
]
105+
},
106+
{
107+
text: 'Видалені API',
108+
items: [
109+
{
110+
text: 'Модифікатор v-on keyCode',
111+
link: '/uk/breaking-changes/keycode-modifiers'
112+
},
113+
{ text: 'API подій', link: '/uk/breaking-changes/events-api' },
114+
{ text: 'Фільтри', link: '/uk/breaking-changes/filters' },
115+
{
116+
text: 'inline-template',
117+
link: '/uk/breaking-changes/inline-template-attribute'
118+
},
119+
{ text: '$children', link: '/uk/breaking-changes/children' },
120+
{ text: 'Опція propsData', link: '/uk/breaking-changes/props-data' }
121+
]
122+
},
123+
{
124+
text: 'Інші незначні зміни',
125+
items: [
126+
{
127+
text: 'Поведінка приведення атрибутів',
128+
link: '/uk/breaking-changes/attribute-coercion'
129+
},
130+
{
131+
text: 'Користувацькі директиви',
132+
link: '/uk/breaking-changes/custom-directives'
133+
},
134+
{ text: 'Опція Data', link: '/uk/breaking-changes/data-option' },
135+
{
136+
text: 'Зміни в API монтування',
137+
link: '/uk/breaking-changes/mount-changes'
138+
},
139+
{
140+
text: 'Доступ до this в функції реквізитів',
141+
link: '/uk/breaking-changes/props-default-this'
142+
},
143+
{
144+
text: 'Зміни класів переходів',
145+
link: '/uk/breaking-changes/transition'
146+
},
147+
{
148+
text: 'Transition як кореневий елемент',
149+
link: '/uk/breaking-changes/transition-as-root'
150+
},
151+
{
152+
text: 'Transition Group як кореневий елемент',
153+
link: '/uk/breaking-changes/transition-group'
154+
},
155+
{
156+
text: 'Події життєвого циклу VNode',
157+
link: '/uk/breaking-changes/vnode-lifecycle-events'
158+
},
159+
{ text: 'Спостерігачі за масивами', link: '/uk/breaking-changes/watch' }
160+
]
161+
}
162+
]
163+
}
164+
}

.vitepress/theme/MigrationBadges.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ const localeBadges = {
1919
breaking: '破壊的変更',
2020
removed: '削除',
2121
updated: '更新'
22+
},
23+
'ua-UK': {
24+
new: 'нове',
25+
breaking: 'несумісно',
26+
removed: 'видалено',
27+
updated: 'змінено'
2228
}
2329
}
2430

src/uk/VueMastery.vue

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<template>
2+
<div class="vue-mastery-link">
3+
<a
4+
href="https://www.vuemastery.com/migration-guide-cheat-sheet/"
5+
target="_blank"
6+
>
7+
<div class="banner-wrapper">
8+
<img
9+
class="banner"
10+
alt="Vue Mastery banner"
11+
width="96px"
12+
height="56px"
13+
src="https://storage.googleapis.com/vue-mastery.appspot.com/flamelink/media/vuemastery-graphical-link-96x56.png"
14+
/>
15+
</div>
16+
<p class="description">
17+
Отримайте безкоштовну шпаргалку з посібника з міграції на <span>VueMastery.com</span>
18+
</p>
19+
<div class="logo-wrapper">
20+
<img
21+
alt="Vue Mastery Logo"
22+
width="25px"
23+
src="https://storage.googleapis.com/vue-mastery.appspot.com/flamelink/media/vue-mastery-logo.png"
24+
/>
25+
</div>
26+
</a>
27+
</div>
28+
</template>
29+
30+
<style>
31+
.vue-mastery-link {
32+
background-color: #f9f9f9;
33+
border-radius: 8px;
34+
padding: 8px 16px 8px 8px;
35+
}
36+
37+
.vue-mastery-link a {
38+
display: flex;
39+
align-items: center;
40+
text-decoration: none;
41+
}
42+
43+
.vue-mastery-link .banner {
44+
background-color: #f9f9f9;
45+
border-radius: 4px;
46+
width: 96px;
47+
height: 56px;
48+
object-fit: cover;
49+
}
50+
51+
.vue-mastery-link .description {
52+
flex: 1;
53+
font-weight: 500;
54+
font-size: 14px;
55+
line-height: 20px;
56+
color: #213547;
57+
margin: 0 0 0 16px;
58+
}
59+
60+
.vue-mastery-link .description span {
61+
color: #42b883;
62+
}
63+
64+
.vue-mastery-link .logo-wrapper {
65+
position: relative;
66+
width: 48px;
67+
height: 48px;
68+
border-radius: 50%;
69+
background-color: #ffffff;
70+
display: flex;
71+
justify-content: center;
72+
align-items: center;
73+
}
74+
75+
.vue-mastery-link .logo-wrapper img {
76+
width: 25px;
77+
object-fit: contain;
78+
}
79+
80+
@media (max-width: 576px) {
81+
.vue-mastery-link .banner {
82+
width: 56px;
83+
}
84+
85+
.vue-mastery-link .description {
86+
font-size: 12px;
87+
line-height: 18px;
88+
}
89+
.vue-mastery-link .logo-wrapper {
90+
position: relative;
91+
width: 32px;
92+
height: 32px;
93+
}
94+
}
95+
</style>

0 commit comments

Comments
 (0)