lesli_babel 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ body.lesli-babel :root,body.lesli-babel-dashboard :root{--lesli-color-primary: var(--lesli-theme-color-primary, #193d8d);--lesli-color-background: var(--lesli-theme-color-background, #f6f8fb);--lesli-header-color: var(--lesli-theme-header-color, white);--lesli-header-height: var(--lesli-theme-header-height, 70px);--lesli-navbar-color: var(--lesli-theme-header-color, white);--lesli-footer-color: var(--lesli-theme-footer-color, white);--lesli-footer-height: var(--lesli-theme-footer-height, 84px);--lesli-sidebar-color: var(--lesli-theme-sidebar-color, white);--lesli-sidebar-width: var(--lesli-theme-sidebar-width, 50px);--lesli-logo-color: var(--lesli-theme-logo-color, white);--lesli-font-size: var(--lesli-theme-font-size, 16px);--lesli-font-color: var(--lesli-theme-font-color, #333333)}@media only screen and (max-width: 768px){body.lesli-babel :root,body.lesli-babel-dashboard :root{--lesli-sidebar-width: 50px}}@media only screen and (min-width: 769px){body.lesli-babel :root,body.lesli-babel-dashboard :root{--lesli-sidebar-width: 100px}}@media only screen and (min-width: 1024px){body.lesli-babel :root,body.lesli-babel-dashboard :root{--lesli-sidebar-width: 200px}}@media only screen and (min-width: 1216px){body.lesli-babel :root,body.lesli-babel-dashboard :root{--lesli-sidebar-width: 225px}}@media only screen and (min-width: 1408px){body.lesli-babel :root,body.lesli-babel-dashboard :root{--lesli-sidebar-width: 328px}}body.lesli-babel body.layout-expanded :root,body.lesli-babel-dashboard body.layout-expanded :root{--lesli-sidebar-width: 100px}body.lesli-babel aside.lesli-application-sidebar,body.lesli-babel-dashboard aside.lesli-application-sidebar{display:none !important}body.lesli-babel .locales,body.lesli-babel-dashboard .locales{display:flex;flex-wrap:wrap;justify-content:space-around;justify-content:center}body.lesli-babel .locales>*,body.lesli-babel-dashboard .locales>*{flex-basis:200px;max-width:200px}body.lesli-babel .locales .card,body.lesli-babel-dashboard .locales .card{padding:1.8rem 1rem;text-align:center;box-shadow:rgba(9,30,66,.25) 0px 4px 8px -2px,rgba(9,30,66,.08) 0px 0px 0px 1px;background-color:#fff;border-radius:4px}body.lesli-babel .locales .card .flag-icon,body.lesli-babel-dashboard .locales .card .flag-icon{border-radius:4px;box-shadow:rgba(9,30,66,.25) 0px 4px 8px -2px,rgba(9,30,66,.08) 0px 0px 0px 1px}body.cloud_babel-modules :root,body.cloud_babel-relevants :root,body.cloud_babel-translations :root{--lesli-color-primary: var(--lesli-theme-color-primary, #193d8d);--lesli-color-background: var(--lesli-theme-color-background, #f6f8fb);--lesli-header-color: var(--lesli-theme-header-color, white);--lesli-header-height: var(--lesli-theme-header-height, 70px);--lesli-navbar-color: var(--lesli-theme-header-color, white);--lesli-footer-color: var(--lesli-theme-footer-color, white);--lesli-footer-height: var(--lesli-theme-footer-height, 84px);--lesli-sidebar-color: var(--lesli-theme-sidebar-color, white);--lesli-sidebar-width: var(--lesli-theme-sidebar-width, 50px);--lesli-logo-color: var(--lesli-theme-logo-color, white);--lesli-font-size: var(--lesli-theme-font-size, 16px);--lesli-font-color: var(--lesli-theme-font-color, #333333)}@media only screen and (max-width: 768px){body.cloud_babel-modules :root,body.cloud_babel-relevants :root,body.cloud_babel-translations :root{--lesli-sidebar-width: 50px}}@media only screen and (min-width: 769px){body.cloud_babel-modules :root,body.cloud_babel-relevants :root,body.cloud_babel-translations :root{--lesli-sidebar-width: 100px}}@media only screen and (min-width: 1024px){body.cloud_babel-modules :root,body.cloud_babel-relevants :root,body.cloud_babel-translations :root{--lesli-sidebar-width: 200px}}@media only screen and (min-width: 1216px){body.cloud_babel-modules :root,body.cloud_babel-relevants :root,body.cloud_babel-translations :root{--lesli-sidebar-width: 225px}}@media only screen and (min-width: 1408px){body.cloud_babel-modules :root,body.cloud_babel-relevants :root,body.cloud_babel-translations :root{--lesli-sidebar-width: 328px}}body.cloud_babel-modules body.layout-expanded :root,body.cloud_babel-relevants body.layout-expanded :root,body.cloud_babel-translations body.layout-expanded :root{--lesli-sidebar-width: 100px}body.cloud_babel-modules #babel-translations tbody td,body.cloud_babel-relevants #babel-translations tbody td,body.cloud_babel-translations #babel-translations tbody td{padding:0rem 1rem;height:60px}body.cloud_babel-modules #babel-translations tbody td input.input,body.cloud_babel-relevants #babel-translations tbody td input.input,body.cloud_babel-translations #babel-translations tbody td input.input{height:60px;border:none;box-shadow:none;border-radius:3px;background-color:rgba(0,0,0,0)}body.cloud_babel-modules #babel-translations tbody td input.input::placeholder,body.cloud_babel-relevants #babel-translations tbody td input.input::placeholder,body.cloud_babel-translations #babel-translations tbody td input.input::placeholder{color:#555761}body.cloud_babel-modules #babel-translations tbody td.detail-row,body.cloud_babel-relevants #babel-translations tbody td.detail-row,body.cloud_babel-translations #babel-translations tbody td.detail-row{padding-left:1rem !important}body.cloud_babel-modules #babel-translations .copied:after,body.cloud_babel-relevants #babel-translations .copied:after,body.cloud_babel-translations #babel-translations .copied:after{display:inline;position:absolute;content:"Label copied to clipboard!";animation:1s ease-in-out 0s 1 normal forwards running copyit;font-size:.8em}@keyframes copyit{0%{bottom:2em;opacity:1}100%{bottom:4em;opacity:0}}
@@ -29,6 +29,7 @@ module LesliBabel
29
29
 
30
30
  def format_module_name
31
31
 
32
+ return if self.code == "main_app"
32
33
  return if self.platform == "lesli_core"
33
34
  return if self.platform == "lesli_engine"
34
35
 
@@ -36,9 +37,7 @@ module LesliBabel
36
37
  .gsub(/[^0-9A-Za-z\s\-\_]/, '') # remove special characters from string
37
38
  .gsub(/-/, '') # replace dashes with underscore
38
39
  .gsub(/_/, '') # replace underscore with underscore
39
- .titlecase # Capitalizes all the words
40
40
  .gsub(/\s+/, '') # remove blank spaces
41
41
  end
42
-
43
42
  end
44
43
  end
@@ -5,17 +5,31 @@ module LesliBabel
5
5
 
6
6
  Lesli::System.engines.each do |engine, engine_info|
7
7
 
8
- L2.br(30)
9
- L2.info
10
-
11
8
  # get all rails engines to buil
12
9
  engine_id = Module
13
10
  .where("platform in ('lesli_core', 'lesli_engine')")
14
11
  .where(:code => engine_info[:code])
15
12
  .pluck(:id)
16
13
 
14
+ engine_id_lesli = Module
15
+ .where("platform in ('lesli_core', 'lesli_engine')")
16
+ .where(:code => "lesli")
17
+ .pluck(:id)
18
+
19
+ bucket_id_shared = Bucket
20
+ .where(:code => "shared")
21
+ .where(:module_id => engine_id_lesli)
22
+ .pluck(:id)
23
+
24
+ bucket_id_application = Bucket
25
+ .where(:code => "application")
26
+ .where(:module_id => engine_id_lesli)
27
+ .pluck(:id)
28
+
17
29
  # get strings filtered by module (only rails translations)
18
- strings = StringService.new(current_user, query).list #(engine_id)
30
+ strings = StringService.new(current_user, query).list(engine_id)
31
+ strings_shared = StringService.new(current_user, query).list(engine_id_lesli, bucket_id_shared)
32
+ strings_application = StringService.new(current_user, query).list(engine_id_lesli, bucket_id_application)
19
33
 
20
34
  strings = strings.select(
21
35
  :id,
@@ -52,6 +66,7 @@ module LesliBabel
52
66
  "config", "locales", "translations.#{lang}.yml"
53
67
  ).to_s
54
68
 
69
+ # Create a collection of strings for the current module
55
70
  strings.each do |string|
56
71
 
57
72
  bucket_code = string[:bucket_code]
@@ -71,6 +86,40 @@ module LesliBabel
71
86
 
72
87
  end
73
88
 
89
+ # Create a collection of strings for the shared labels of Lesli
90
+ strings_shared.each do |string|
91
+
92
+ unless translations[lang][:labels].has_key? "lesli"
93
+ translations[lang][:labels]["lesli"] = { }
94
+ end
95
+
96
+ unless translations[lang][:labels]["lesli"].has_key? "shared"
97
+ translations[lang][:labels]["lesli"]["shared"] = { }
98
+ end
99
+
100
+ # # send debug message for missing translations
101
+ string[lang] = ":" + string.path + ":" if string[lang].blank?
102
+
103
+ translations[lang][:labels]["lesli"]["shared"][string.label] = string[lang]
104
+ end
105
+
106
+ # Create a collection of strings for the application labels of Lesli
107
+ strings_application.each do |string|
108
+
109
+ unless translations[lang][:labels].has_key? "lesli"
110
+ translations[lang][:labels]["lesli"] = { }
111
+ end
112
+
113
+ unless translations[lang][:labels]["lesli"].has_key? "application"
114
+ translations[lang][:labels]["lesli"]["application"] = { }
115
+ end
116
+
117
+ # # send debug message for missing translations
118
+ string[lang] = ":" + string.path + ":" if string[lang].blank?
119
+
120
+ translations[lang][:labels]["lesli"]["application"][string.label] = string[lang]
121
+ end
122
+
74
123
  end
75
124
 
76
125
  translations.each do |lang, translations|
@@ -85,7 +134,7 @@ module LesliBabel
85
134
 
86
135
  translation_file.close
87
136
 
88
- L2.msg "file added: #{ translations[:file] }"
137
+ #L2.msg "file added: #{ translations[:file] }"
89
138
  end
90
139
  end
91
140
  end
@@ -18,7 +18,7 @@ GNU General Public License for more details.
18
18
  You should have received a copy of the GNU General Public License
19
19
  along with this program. If not, see http://www.gnu.org/licenses/.
20
20
 
21
- Lesli · Ruby on Rails SaaS development platform.
21
+ Lesli · Ruby on Rails SaaS Development Framework.
22
22
 
23
23
  Made with ♥ by https://www.lesli.tech
24
24
  Building a better future, one line of code at a time.
@@ -34,4 +34,4 @@ Building a better future, one line of code at a time.
34
34
 
35
35
  <%= navigation_item(lesli_babel.dashboard_path, "Dashboard", "ri-dashboard-3-line"); %>
36
36
  <%= navigation_item(lesli_babel.translations_path, "Translations", "ri-earth-line") %>
37
- <%= navigation_item(lesli_babel.dashboard_path, "Relevant", "ri-send-plane-line") %>
37
+ <%#= navigation_item(lesli_babel.dashboard_path, "Relevant", "ri-send-plane-line") %>
@@ -34,10 +34,10 @@ Building a better future, one line of code at a time.
34
34
 
35
35
 
36
36
  <p class="menu-label">Modules</p>
37
- <% LesliBabel::Module.all.order(:platform, :code).each do |engine| %>
37
+ <% LesliBabel::Module.all.order(:code).each do |engine| %>
38
38
  <%= navigation_item(
39
39
  lesli_babel.modules_path + "/" + engine.id.to_s,
40
40
  engine.code.titleize,
41
- "ri-folder-settings-line"
41
+ "ri-folder-line"
42
42
  ); %>
43
43
  <% end %>
@@ -1,5 +1,20 @@
1
1
  ---
2
2
  :en:
3
- lesli_babel:
3
+ lesli:
4
4
  shared:
5
+ view_discussions: Discussions
6
+ button_add_new: Add new
7
+ button_reload: Reload
8
+ view_files: Files
9
+ view_quick_actions: Quick actions
10
+ button_list: List
5
11
  button_save: Save
12
+ button_delete: Delete
13
+ button_edit: Edit
14
+ view_status_active: Active
15
+ view_status_inactive: Inactive
16
+ button_settings: Settings
17
+ button_show: Show
18
+ application:
19
+ navigation_logout: Logout
20
+ navigation_my_profile: My profile
@@ -1,5 +1,20 @@
1
1
  ---
2
2
  :es:
3
- lesli_babel:
3
+ lesli:
4
4
  shared:
5
+ view_discussions: Discusiones
6
+ button_add_new: Agregar nuevo
7
+ button_reload: Recargar
8
+ view_files: Archivos
9
+ view_quick_actions: Acciones rapidas
10
+ button_list: Lista
5
11
  button_save: Guardar
12
+ button_delete: Eliminar
13
+ button_edit: Editar
14
+ view_status_active: Activo
15
+ view_status_inactive: Inactivo
16
+ button_settings: Configuración
17
+ button_show: Ver
18
+ application:
19
+ navigation_logout: Cerrar sesión
20
+ navigation_my_profile: Mi perfil
@@ -43,6 +43,8 @@ module LesliBabel
43
43
  config.i18n.default_locale = Lesli.config.locales.keys.first || :en
44
44
  config.i18n.available_locales = Lesli.config.locales.keys || [:en]
45
45
 
46
+ config.i18n.load_path += Dir["#{Lesli::Engine.root.to_s}/config/locales/*.yml"]
47
+
46
48
  # register engine migrations path
47
49
  unless app.root.to_s.match root.to_s
48
50
  config.paths["db/migrate"].expanded.each do |expanded_path|
@@ -1,4 +1,4 @@
1
1
  module LesliBabel
2
- VERSION = "0.3.0"
3
- BUILD = "1697000148"
2
+ VERSION = "0.5.0"
3
+ BUILD = "1709501990"
4
4
  end
@@ -31,12 +31,17 @@ Building a better future, one line of code at a time.
31
31
  */
32
32
 
33
33
 
34
+
34
35
  // ·
35
36
  body.lesli-babel,
36
- body.lesli-babel-dashboard { @import "./dashboards"; }
37
+ body.lesli-babel-dashboard {
38
+ @import "./dashboards";
39
+ }
37
40
 
38
41
 
39
- // // ·
40
- // body.cloud_babel-modules,
41
- // body.cloud_babel-relevants,
42
- // body.cloud_babel-translations { @import "./translations"; }
42
+ // ·
43
+ body.cloud_babel-modules,
44
+ body.cloud_babel-relevants,
45
+ body.cloud_babel-translations {
46
+ @import "./translations";
47
+ }
@@ -32,7 +32,7 @@ Building a better future, one line of code at a time.
32
32
 
33
33
 
34
34
  // ·
35
- @import "lesli/templates/dashboards";
35
+ @import "Lesli/scss/templates/dashboards";
36
36
  //@import "flag-icons";
37
37
 
38
38
 
@@ -48,7 +48,7 @@ Building a better future, one line of code at a time.
48
48
  background-color: white;
49
49
  border-radius: 4px;
50
50
 
51
- span.flag-icon {
51
+ .flag-icon {
52
52
  border-radius: 4px;
53
53
  box-shadow: $lesli-box-shadow;
54
54
  }
@@ -17,7 +17,7 @@ For more information read the license file including with this software.
17
17
 
18
18
  */
19
19
 
20
-
20
+ /*
21
21
  // ·
22
22
  @import "templates/component";
23
23
 
@@ -31,3 +31,4 @@ For more information read the license file including with this software.
31
31
  .pagination-link {
32
32
  justify-content: center;
33
33
  }
34
+ */
@@ -17,8 +17,9 @@ For more information read the license file including with this software.
17
17
  */
18
18
 
19
19
 
20
+
20
21
  // ·
21
- @import "templates/component";
22
+ @import "Lesli/scss/templates/component";
22
23
 
23
24
 
24
25
  // ·
@@ -47,20 +47,35 @@ namespace :lesli_babel do
47
47
  desc "Create standard structure for translations according to the objects in the app"
48
48
  task build: [:environment] do
49
49
 
50
- engines = Lesli::SystemController.index(matrix: false)
50
+ engines = Lesli::SystemController.index(matrix: true)
51
51
 
52
- engines.each do |t|
52
+ engines.each do |engine, routes|
53
53
 
54
54
  platform = "lesli_engine"
55
- platform = "lesli_core" if t[:engine] == "lesli"
56
- platform = "rails_app" if t[:engine] == "app"
55
+ platform = "lesli_core" if engine == "lesli"
56
+ platform = "rails_app" if engine == "main_app"
57
57
 
58
- # add object to the translation workflow
59
- translation_module = LesliBabel::Module.find_or_create_by(code: t[:engine], platform: platform)
60
- translation_bucket = LesliBabel::Bucket.find_or_create_by(code: t[:route].sub(t[:engine]+"/", ""), module: translation_module, reference_module: translation_module.code)
61
- translation_bucket = LesliBabel::Bucket.find_or_create_by(code: "shared", module: translation_module, reference_module: translation_module.code)
62
58
 
63
- end
59
+ translation_module = LesliBabel::Module
60
+ .create_with(:platform => platform)
61
+ .find_or_create_by!(:code => engine)
62
+
63
+
64
+ routes.each do |controller, route|
65
+
66
+ LesliBabel::Bucket.find_or_create_by(
67
+ code: route[:route].sub("#{ engine }/", ""),
68
+ module: translation_module,
69
+ reference_module: translation_module.code
70
+ )
71
+
72
+ LesliBabel::Bucket.find_or_create_by(
73
+ code: "shared",
74
+ module: translation_module,
75
+ reference_module: translation_module.code
76
+ )
77
+ end
78
+ end
64
79
 
65
80
  L2.msg "CloudBabel: Module/Controllers scanned and registered"
66
81
 
@@ -77,8 +92,6 @@ namespace :lesli_babel do
77
92
  {
78
93
  "file"=>"engines/#{engine}/lib/vue/stores/translations.json",
79
94
  "patterns"=>[
80
- "*.#{engine_info[:code]}",
81
- "*.lesli.*",
82
95
  "!*.date",
83
96
  "!*.devise",
84
97
  "!*.faker",
@@ -91,7 +104,11 @@ namespace :lesli_babel do
91
104
  "!*.i18n",
92
105
  "!*.activerecord",
93
106
  "!*.errors",
94
- "!*.number.nth"
107
+ "!*.number.nth",
108
+ "*.lesli.shared.*",
109
+ "*.lesli.application.*",
110
+ "*.#{engine_info[:code]}.*",
111
+
95
112
  ]
96
113
  }
97
114
  ]
@@ -100,4 +117,63 @@ namespace :lesli_babel do
100
117
  pp I18nJS.call(config: config)
101
118
  end
102
119
  end
120
+
121
+
122
+ desc "Load local translations into LesliBabel"
123
+ task :load => :environment do |task, args|
124
+
125
+ # Get all the locally installed engines
126
+ engines = Lesli::System.engines
127
+
128
+
129
+ engines.each do |engine, engine_info|
130
+
131
+ # cache the engine code
132
+ engine_code = engine_info[:code]
133
+
134
+ # platform name
135
+ platform = "lesli_engine"
136
+ platform = "lesli_core" if engine_code == "lesli"
137
+
138
+
139
+ # create the babel module if it does not exists
140
+ translation_module = LesliBabel::Module
141
+ .create_with(:platform => platform)
142
+ .find_or_create_by!(:code => engine_code)
143
+
144
+
145
+ # Iterate over the available locales
146
+ I18n.available_locales.each do |locale|
147
+
148
+ # get the translations for an specific engine for an specific locale
149
+ translations = I18n.t(engine_code, locale: locale)
150
+
151
+ # check if the translations is an object
152
+ next unless translations.class == Hash
153
+ translations.each do |bucket, labels|
154
+
155
+ # create the bucket if it does not exist
156
+ translation_bucket = LesliBabel::Bucket.find_or_create_by(
157
+ code: bucket,
158
+ module: translation_module,
159
+ reference_module: translation_module.code
160
+ )
161
+
162
+ labels.each do |label, translation|
163
+
164
+ # create or get the label
165
+ label = LesliBabel::String.create_with(
166
+ reference_bucket: "#{translation_module.code}-#{translation_bucket.code}"
167
+ ).find_or_create_by(
168
+ label: label,
169
+ bucket_id: translation_bucket.id
170
+ )
171
+
172
+ # add the correct translation to the label
173
+ label.update(locale => translation)
174
+ end
175
+ end
176
+ end
177
+ end
178
+ end
103
179
  end
@@ -30,15 +30,24 @@ Building a better future, one line of code at a time.
30
30
  */
31
31
 
32
32
 
33
- // ·
34
- import application from "Lesli/application"
33
+ // · Import Lesli builders
34
+ import application from "Lesli/vue/application"
35
+ import translation from "Lesli/vue/translation"
36
+
37
+
38
+ // · Import engine translations
39
+ import translations from "LesliBabel/vue/stores/translations.json"
35
40
 
36
41
 
37
42
  // ·
38
- import appDashboardShow from "LesliBabel/apps/dashboards/show.vue"
39
- import appRelevantsIndex from "LesliBabel/apps/relevants/index.vue"
40
- import appTranslationsIndex from "LesliBabel/apps/translations/index.vue"
41
- import appModulesShow from "LesliBabel/apps/modules/show.vue"
43
+ import appDashboardShow from "LesliBabel/vue/apps/dashboards/show.vue"
44
+ import appRelevantsIndex from "LesliBabel/vue/apps/relevants/index.vue"
45
+ import appTranslationsIndex from "LesliBabel/vue/apps/translations/index.vue"
46
+ import appModulesShow from "LesliBabel/vue/apps/modules/show.vue"
47
+
48
+
49
+ // · Buil Lesli translations
50
+ translation(translations)
42
51
 
43
52
 
44
53
  // ·
@@ -23,7 +23,7 @@ import { useRouter, useRoute } from 'vue-router'
23
23
 
24
24
 
25
25
  // · Import components
26
- import componentActions from "LesliBabel/components/actions.vue"
26
+ import componentActions from "LesliBabel/vue/components/actions.vue"
27
27
 
28
28
 
29
29
  // · initialize/inject plugins
@@ -33,8 +33,8 @@ const url = inject("url")
33
33
 
34
34
 
35
35
  // · import lesli stores
36
- import { useStatistics } from "LesliBabel/stores/statistics"
37
- import { useStrings } from "LesliBabel/stores/strings"
36
+ import { useStatistics } from "LesliBabel/vue/stores/statistics"
37
+ import { useStrings } from "LesliBabel/vue/stores/strings"
38
38
 
39
39
 
40
40
  // · implement stores
@@ -67,18 +67,16 @@ function search(string) {
67
67
  <component-actions></component-actions>
68
68
  </lesli-header>
69
69
  <lesli-toolbar @search="search"></lesli-toolbar>
70
- <div class="locales mt-2">
70
+ <div class="locales mt-5">
71
71
  <router-link class="card mr-5 mb-5"
72
72
  v-for="locale in storeStatistics.languages"
73
73
  :key="locale.code"
74
- :to="url.babel('translations', { locale: locale.code }).s" >
75
- <span :class="['mb-2', 'is-size-2','flag-icon', flag(locale.code)]"></span>
76
- <p class="is-size-5">
77
- {{ locale.name }}: {{ locale.total }}
78
- </p>
79
- <small>
80
- missing: {{ storeStatistics.totalStrings - locale.total }} translations
81
- </small>
74
+ :to="url.babel('translations', { locale: locale.code }).toString()" >
75
+ <svg class="flag-icon mb-2" width="64px" height="48px">
76
+ <use v-bind:xlink:href="'#locale-'+locale.code"></use>
77
+ </svg>
78
+ <p class="is-size-5">{{ locale.name }}: {{ locale.total }}</p>
79
+ <small>missing: {{ storeStatistics.totalStrings - locale.total }} translations</small>
82
80
  </router-link>
83
81
  </div>
84
82
  </lesli-application-container>
@@ -37,14 +37,14 @@ import { useRouter, useRoute } from 'vue-router'
37
37
 
38
38
 
39
39
  // · import components
40
- import formStringNew from "LesliBabel/components/form-string-new.vue"
41
- import formLabelEditor from "LesliBabel/components/form-label-editor.vue"
42
- import componentActions from "LesliBabel/components/actions.vue"
40
+ import formStringNew from "LesliBabel/vue/components/form-string-new.vue"
41
+ import formLabelEditor from "LesliBabel/vue/components/form-label-editor.vue"
42
+ import componentActions from "LesliBabel/vue/components/actions.vue"
43
43
 
44
44
 
45
45
  // · import lesli stores
46
- import { useModule } from "LesliBabel/stores/module"
47
- import { useStrings } from "LesliBabel/stores/strings"
46
+ import { useModule } from "LesliBabel/vue/stores/module"
47
+ import { useStrings } from "LesliBabel/vue/stores/strings"
48
48
 
49
49
 
50
50
  // · implement stores
@@ -82,7 +82,7 @@ watch(() => route.params.id, () => {
82
82
  <lesli-application-container>
83
83
  <lesli-header :title="storeModule.code">
84
84
  <component-actions></component-actions>
85
- <lesli-button solid icon="add" @click="storeStrings.showPanel = true">
85
+ <lesli-button main icon="add" @click="storeStrings.showPanel = true">
86
86
  add new string
87
87
  </lesli-button>
88
88
  </lesli-header>
@@ -30,8 +30,8 @@ const url = inject("url")
30
30
 
31
31
 
32
32
  // · import components
33
- import componentLabelEditor from "LesliBabel/components/form-label-editor.vue"
34
- import componentActions from "LesliBabel/components/actions.vue"
33
+ import componentLabelEditor from "LesliBabel/vue/components/form-label-editor.vue"
34
+ import componentActions from "LesliBabel/vue/components/actions.vue"
35
35
 
36
36
 
37
37
  </script>
@@ -30,13 +30,13 @@ const url = inject("url")
30
30
 
31
31
 
32
32
  // · import components
33
- import componentLabelEditor from "LesliBabel/components/form-label-editor.vue"
34
- import componentActions from "LesliBabel/components/actions.vue"
33
+ import componentLabelEditor from "LesliBabel/vue/components/form-label-editor.vue"
34
+ import componentActions from "LesliBabel/vue/components/actions.vue"
35
35
 
36
36
 
37
37
  // · import lesli stores
38
- import { useStrings } from "LesliBabel/stores/strings"
39
- import { useTranslations } from "LesliBabel/stores/translations"
38
+ import { useStrings } from "LesliBabel/vue/stores/strings"
39
+ import { useTranslations } from "LesliBabel/vue/stores/translations"
40
40
 
41
41
 
42
42
  // · implement stores
@@ -1,7 +1,7 @@
1
1
  <script setup>
2
2
 
3
3
  // · import lesli stores
4
- import { useTranslations } from "LesliBabel/stores/translations"
4
+ import { useTranslations } from "LesliBabel/vue/stores/translations"
5
5
 
6
6
 
7
7
  // · implement stores
@@ -9,16 +9,16 @@ const storeTranslations = useTranslations()
9
9
 
10
10
  </script>
11
11
  <template>
12
- <lesli-button icon="download" @click="storeTranslations.postRenovate()">
13
- update
14
- </lesli-button>
15
12
  <lesli-button icon="rocket_launch" @click="storeTranslations.postDeploy()">
16
13
  deploy
17
14
  </lesli-button>
15
+ <!--
16
+ <lesli-button icon="download">
17
+ update
18
+ </lesli-button>
18
19
  <lesli-button icon="sync" @click="storeTranslations.postSync()">
19
20
  sync
20
21
  </lesli-button>
21
- <!--
22
22
  <lesli-button icon="code">
23
23
  javascript
24
24
  </lesli-button>
@@ -24,9 +24,9 @@ import { useRouter, useRoute } from 'vue-router'
24
24
 
25
25
  // · import lesli stores
26
26
  const route = useRoute()
27
- import { useStrings } from "LesliBabel/stores/strings"
28
- import { useTranslations } from "LesliBabel/stores/translations"
29
- import { useServiceTranslator } from "Lesli/stores/services/translator"
27
+ import { useStrings } from "LesliBabel/vue/stores/strings"
28
+ import { useTranslations } from "LesliBabel/vue/stores/translations"
29
+ import { useServiceTranslator } from "Lesli/vue/shared/services/translator"
30
30
 
31
31
 
32
32
  // · implement stores