@afeefa/vue-app 0.0.60 → 0.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- 0.0.60
1
+ 0.0.61
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afeefa/vue-app",
3
- "version": "0.0.60",
3
+ "version": "0.0.61",
4
4
  "description": "",
5
5
  "author": "Afeefa Kollektiv <kollektiv@afeefa.de>",
6
6
  "license": "MIT",
@@ -1,6 +1,7 @@
1
1
  import './config/event-bus'
2
2
  import './config/components'
3
3
 
4
+ import { translationPlugin } from '@a-admin/plugins/translation/TranslationPlugin'
4
5
  import { apiResourcesPlugin } from '@a-vue/plugins/api-resources/ApiResourcesPlugin'
5
6
  import { hasOptionsPlugin } from '@a-vue/plugins/has-options/HasOptionsPlugin'
6
7
  import { timeout } from '@a-vue/utils/timeout'
@@ -12,10 +13,11 @@ import vuetify from './config/vuetify'
12
13
 
13
14
  Vue.use(apiResourcesPlugin)
14
15
  Vue.use(hasOptionsPlugin)
16
+ Vue.use(translationPlugin)
15
17
 
16
18
  Vue.config.productionTip = false
17
19
 
18
- export async function bootstrap ({ apis, models, routing, authService, app, components }) {
20
+ export async function bootstrap ({ apis, models, routing, authService, getTranslations, app, components }) {
19
21
  apiResourcesPlugin.register(models, apis)
20
22
 
21
23
  appConfig.authService = authService
@@ -35,6 +37,11 @@ export async function bootstrap ({ apis, models, routing, authService, app, comp
35
37
  const router = await routeConfigPlugin.getRouter()
36
38
  await apiResourcesPlugin.schemasLoaded()
37
39
 
40
+ if (getTranslations) {
41
+ const translations = await getTranslations(apiResourcesPlugin.apiResources)
42
+ translationPlugin.setTranslations(translations.models)
43
+ }
44
+
38
45
  if (authService) {
39
46
  authService.initApp(router)
40
47
  }
@@ -85,8 +85,7 @@ export default class CreatePage extends Mixins(EditPageMixin) {
85
85
  return this.title
86
86
  }
87
87
 
88
- const type = this.$apiResources.getType(this.ModelClass.type)
89
- return type.t('TITLE_NEW')
88
+ return this.$t('Admin.Types', this.ModelClass.type, null, 'TITLE_NEW', 'de')
90
89
  }
91
90
 
92
91
  get _listLink () {
@@ -118,8 +118,7 @@ export default class EditPage extends Mixins(EditPageMixin) {
118
118
  return this.title
119
119
  }
120
120
 
121
- const type = this.$apiResources.getType(this.ModelClass.type)
122
- return type.t('TITLE_EMPTY')
121
+ return this.$t('Admin.Types', this.ModelClass.type, null, 'TITLE_EMPTY', 'de')
123
122
  }
124
123
 
125
124
  get _listLink () {
@@ -37,8 +37,7 @@ export default class ListPage extends Vue {
37
37
  return this.title
38
38
  }
39
39
 
40
- const type = this.$apiResources.getType(this.Model.type)
41
- return type.t('TITLE_PLURAL')
40
+ return this.$t('Admin.Types', this.Model.type, null, 'TITLE_PLURAL', 'de')
42
41
  }
43
42
 
44
43
  get _newTitle () {
@@ -46,8 +45,7 @@ export default class ListPage extends Vue {
46
45
  return this.newTitle
47
46
  }
48
47
 
49
- const type = this.$apiResources.getType(this.Model.type)
50
- return type.t('TITLE_SINGULAR')
48
+ return this.$t('Admin.Types', this.Model.type, null, 'TITLE_SINGULAR', 'de')
51
49
  }
52
50
 
53
51
  get _newLink () {
@@ -1,3 +1,4 @@
1
+ import { translationService } from '@a-admin/services/TranslationService'
1
2
  import { Model as ApiResourcesModel, apiResources } from '@afeefa/api-resources-client'
2
3
  import { mdiAlphaMCircle } from '@mdi/js'
3
4
 
@@ -39,6 +40,10 @@ export class Model extends ApiResourcesModel {
39
40
  color: 'blue lighten-2'
40
41
  }
41
42
 
43
+ static translate (realm, objectType, objectId, key, lang) {
44
+ return translationService.translate(realm, objectType, objectId, key, lang)
45
+ }
46
+
42
47
  getLink (action = 'detail') {
43
48
  return {
44
49
  name: `${this.constructor.routeName}.${action}`,
@@ -0,0 +1,20 @@
1
+ import { translationService } from '../../services/TranslationService'
2
+
3
+ class TranslationPlugin {
4
+ setTranslations (translations) {
5
+ translationService
6
+ .setTranslations(translations)
7
+ }
8
+
9
+ install (Vue) {
10
+ Vue.mixin({
11
+ created () {
12
+ this.$t = (realm, objectId, objectType, key, lang) => {
13
+ return translationService.translate(realm, objectId, objectType, key, lang)
14
+ }
15
+ }
16
+ })
17
+ }
18
+ }
19
+
20
+ export const translationPlugin = new TranslationPlugin()
@@ -0,0 +1,35 @@
1
+ class TranslationService {
2
+ translations = {}
3
+
4
+ setTranslations (translations) {
5
+ translations.forEach(t => {
6
+ const key = JSON.stringify([
7
+ t.realm,
8
+ t.object_type,
9
+ t.object_id,
10
+ t.key,
11
+ t.lang
12
+ ])
13
+ this.translations[key] = t.value
14
+ })
15
+ }
16
+
17
+ translate (realm, objectType, objectId, key, lang) {
18
+ const tKey = JSON.stringify([
19
+ realm,
20
+ objectType,
21
+ objectId,
22
+ key,
23
+ lang
24
+ ])
25
+
26
+ if (!this.translations[tKey]) {
27
+ console.warn(`No translation found for ${tKey}`)
28
+ return `${key}:${lang}`
29
+ }
30
+
31
+ return this.translations[tKey]
32
+ }
33
+ }
34
+
35
+ export const translationService = new TranslationService()