Skip to content

Commit acdbcfc

Browse files
committed
#36 Now app has two langs : rus and eng
TODO: * - style lang chooser * - check tutorial grammar
1 parent 8c0af08 commit acdbcfc

File tree

16 files changed

+394
-111
lines changed

16 files changed

+394
-111
lines changed

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"uuid": "^7.0.2",
2020
"vue": "^2.6.11",
2121
"vue-class-component": "^7.2.3",
22+
"vue-i18n": "^8.15.5",
2223
"vue-nestable": "^2.5.2",
2324
"vue-property-decorator": "^8.4.1",
2425
"vue-router": "^3.1.6",

src/App.vue

Lines changed: 30 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ import { ExcelContextBuilder } from './LogicCore/APIExcel/ExcelContextBuilder'
2929
import ModalBrokenNavigation from '@/GraphicCore/StatefullWidget/ModalBrokenNavigation.vue'
3030
import Alert from '@/GraphicCore/StatelessWidget/Alert.vue'
3131
import { AlertTypes, AlertArgs } from '@/types/SheetManager'
32-
32+
import { introTour } from '@/LogicCore/Tours/IntroTour'
33+
import { Languages } from './LogicCore/Languages/Languages'
3334
@Component({
3435
components: {
3536
ModalBrokenNavigation,
@@ -53,7 +54,8 @@ export default class App extends Vue {
5354
module.dimmer(false)
5455
await this.switchIntroIsRunning()
5556
let alertTitle: string
56-
alertTitle = 'Обучение пройдено!'
57+
alertTitle = <string>this.$t('alerts.introTutorialCompleted')
58+
5759
module.openAlert({ title: alertTitle, type: AlertTypes.success })
5860
// if (!this.isMounted) {
5961
setTimeout(() => {
@@ -99,74 +101,9 @@ export default class App extends Vue {
99101
}
100102
module.setIntroStep(this.tourCurrentStep)
101103
}
102-
steps: any[] = [
103-
{
104-
target: '[data-v-step="header-help"]',
105-
header: {
106-
title: 'Добро пожаловать в Sheet Manager!',
107-
},
108-
content: `Это обучение поможет вам освоиться в программе - и всегда будет доступно по выделенному сейчас значку вопроса. Мы временно переключились на тестовые данные, чтобы показать, как всё работает. По оконачнии обучения будут загружены листы Excel`,
109-
},
110-
{
111-
target: '[data-v-step="header-sync"]',
112-
header: {
113-
title: 'Кнопка синхронизации',
114-
},
115-
content: `Обратите внимание! Любые изменения, которые вы сделаете в addin - автоматически синхронизируются с Excel. Однако, если вы изменили что-то в Excel и не видите этого в addin - просто нажмите эту кнопку синхронизцаии`,
116-
},
117-
{
118-
target: '[data-v-step="header-info"]',
119-
header: {
120-
title: 'Дополнительная информация',
121-
},
122-
content: `чтобы написать, если что-то не работает или есть идея`,
123-
},
124-
{
125-
target: '[data-v-step="header-search"]',
126-
header: {
127-
title: 'Строка поиска',
128-
},
129-
content: `ищет по названиям листов`,
130-
},
131-
{
132-
target: '[data-v-step="header-settings"]',
133-
header: {
134-
title: 'Настройки',
135-
},
136-
content: `для добавления нумерации, переключения темы и т.д. больше - по значку вопроса в настройках`,
137-
},
138-
{
139-
target: '[data-v-step="item-whole"]',
140-
header: {
141-
title: 'Это лист',
142-
},
143-
content: `его позицию можно поменять, просто его перетянув (drag & drop)`,
144-
},
145-
{
146-
target: '[data-v-step="item-color"]',
147-
header: {
148-
title: 'Цвет листа',
149-
},
150-
content: `можно менять по нажатию`,
151-
params: {
152-
placement: 'right',
153-
},
154-
},
155-
{
156-
target: '[data-v-step="item-name"]',
157-
header: {
158-
title: 'Название листа',
159-
},
160-
content: `можно изменить дважды кликнув`,
161-
},
162-
{
163-
target: '[data-v-step="item-numeration"]',
164-
header: {
165-
title: 'Нумерация',
166-
},
167-
content: `номер листа по порядку - можно отключить в настройках`,
168-
},
169-
]
104+
get steps() {
105+
return introTour()
106+
}
170107
hostInfo: any = undefined
171108
sourceApp: MatrixElementInterface.outsideApp = 'excelDesktop'
172109
hasBrokenNumeration: boolean = false
@@ -192,7 +129,7 @@ export default class App extends Vue {
192129
appSettingsChange() {
193130
if (this.isLocalStorageExists) {
194131
localStorage.setItem(
195-
this.StoreAppSettings,
132+
this.title.storeAppSettings,
196133
JSON.stringify(this.appSettings)
197134
)
198135
}
@@ -205,11 +142,12 @@ export default class App extends Vue {
205142
this.iniStore = !this.iniStore
206143
207144
this.hasBrokenNumeration = false
145+
208146
let alertTitle: string
209147
if (restoreNumeration) {
210-
alertTitle = 'Нумерация успешно восстановлена!'
148+
alertTitle = <string>this.$t('alerts.successfulSheetsRecover')
211149
} else {
212-
alertTitle = 'Листы успешно загружены!'
150+
alertTitle = <string>this.$t('alerts.successfulSheetsLoad')
213151
}
214152
module.openAlert({ title: alertTitle, type: AlertTypes.success })
215153
}
@@ -275,8 +213,10 @@ export default class App extends Vue {
275213
}
276214
//
277215
}
278-
279-
StoreAppSettings: string = 'appSettings'
216+
title = {
217+
lang: 'lang',
218+
storeAppSettings: 'appSettings',
219+
}
280220
get isLocalStorageExists() {
281221
return typeof localStorage != 'undefined'
282222
}
@@ -288,6 +228,16 @@ export default class App extends Vue {
288228
const module = getModule(AppSettings, this.$store)
289229
return module.getAllSettings
290230
}
231+
get currentLang() {
232+
return <Languages>this.$i18n.locale
233+
}
234+
set currentLang(value: Languages) {
235+
this.$i18n.locale = value
236+
}
237+
@Watch('currentLang')
238+
currentLangChange(value: Languages) {
239+
localStorage.setItem(this.title.lang, value)
240+
}
291241
292242
isMounted: boolean = false
293243
async mounted() {
@@ -296,8 +246,10 @@ export default class App extends Vue {
296246
297247
if (this.isLocalStorageExists) {
298248
// getting data from local storage
299-
const item = localStorage.getItem(this.StoreAppSettings)
249+
const item = localStorage.getItem(this.title.storeAppSettings)
300250
if (item) this.appSettings = JSON.parse(item)
251+
const lang = localStorage.getItem(this.title.lang)
252+
if (lang) this.currentLang = <Languages>lang
301253
}
302254
303255
/** run intro if it is needed */
@@ -341,7 +293,8 @@ export default class App extends Vue {
341293
342294
this.hasBrokenNumeration = false
343295
344-
let alertTitle: string = 'Листы успешно загружены!'
296+
let alertTitle: string = <string>this.$t('alerts.successfulSheetsLoad')
297+
345298
module.openAlert({ title: alertTitle, type: AlertTypes.success })
346299
this.isMounted = true
347300
}

src/GraphicCore/StatefullWidget/ModalBrokenNavigation.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
<template>
22
<NModal
3-
:title="'Восстановление нумерации'"
3+
:title="$t('brokenNumeration.header')"
44
:isActive="isActive"
55
:show-save="false"
66
@close="close"
77
>
88
<template v-slot:modalBody>
99
<p>
10-
Мы обнаружили, что у части листов есть нумерация.
10+
{{$t('brokenNumeration.whatWeFound')}}
1111
</p>
1212
<p>
13-
Попробовать восстановить нумерацию?
13+
{{$t('brokenNumeration.tryToRecover')}}
1414
</p>
1515
<p class="buttons">
1616
<button
1717
class="button__box --has-border"
1818
:class="{ '--is-dark': isDarkTheme }"
1919
@click="repaire(true)"
2020
>
21-
Да
21+
{{$t('buttons.yes')}}
2222
</button>
2323
<button
2424
class="button__box --has-border"
2525
:class="{ '--is-dark': isDarkTheme }"
2626
@click="repaire(false)"
2727
>
28-
Нет
28+
{{$t('buttons.no')}}
2929
</button>
3030
</p>
3131

src/GraphicCore/StatefullWidget/NInput.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
v-model="name"
2424
/>
2525
<div v-if="isWarningShown" class="item-input-warning">
26-
Название не может быть пустым!
26+
{{$t('item.nameCannotBeEmpty')}}
2727
</div>
2828
</div>
2929
</template>

src/GraphicCore/StatefullWidget/NavigationTabs.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export default class NavigationTabs extends Vue {
142142
settings.loading(true)
143143
const module = getModule(Sheets, this.$store)
144144
await module.initializeStore()
145-
const title = 'Успешно синхронизировано'
145+
const title = <string>this.$t('alerts.successfulSync')
146146
settings.openAlert({ title, type: AlertTypes.success })
147147
}
148148
}

0 commit comments

Comments
 (0)