@danhachuel/thunderbolt 0.3.0 → 0.3.1
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.
- package/app/main.py +104 -62
- package/hermes_ui/languages.py +39 -0
- package/package.json +1 -1
package/app/main.py
CHANGED
|
@@ -826,9 +826,19 @@ def render_dashboard():
|
|
|
826
826
|
with col:
|
|
827
827
|
card(ui_text(label, ui_language), value, note)
|
|
828
828
|
st.divider()
|
|
829
|
-
st.subheader(ui_text("Pipeline", ui_language))
|
|
829
|
+
st.subheader(ui_text("Pipeline Vídeos", ui_language))
|
|
830
830
|
st.caption(ui_text("Filas locais e dependências da cascata", ui_language))
|
|
831
831
|
queues = read_json("queues.json", {})
|
|
832
|
+
area_cards = [
|
|
833
|
+
("Pipeline Vídeos", summary["total_tasks"], ui_text("total registado", ui_language)),
|
|
834
|
+
("Pipeline Músicas", len(list_music_files()), ui_text("na biblioteca", ui_language)),
|
|
835
|
+
("AI Influencers", "—", ui_text("módulos disponíveis", ui_language)),
|
|
836
|
+
]
|
|
837
|
+
area_cols = st.columns(3)
|
|
838
|
+
for col, (label, value, note) in zip(area_cols, area_cards):
|
|
839
|
+
with col:
|
|
840
|
+
card(ui_text(label, ui_language), value, note)
|
|
841
|
+
st.divider()
|
|
832
842
|
blueprint_count = len(list_blueprint_files())
|
|
833
843
|
for row_start in range(0, len(STAGES), 3):
|
|
834
844
|
queue_cols = st.columns(3)
|
|
@@ -1524,7 +1534,7 @@ def render_channels():
|
|
|
1524
1534
|
|
|
1525
1535
|
def render_new_video(page_title: str = "Criação de Vídeos"):
|
|
1526
1536
|
st.title(page_title)
|
|
1527
|
-
create_tab
|
|
1537
|
+
create_tab = render_localized_tabs(["Criar vídeo"])[0]
|
|
1528
1538
|
with create_tab:
|
|
1529
1539
|
all_channels = [c for c in read_json("channels.json", []) if isinstance(c, dict)]
|
|
1530
1540
|
active_channels = [c for c in all_channels if c.get("active", True)]
|
|
@@ -1881,8 +1891,6 @@ def render_new_video(page_title: str = "Criação de Vídeos"):
|
|
|
1881
1891
|
batch = create_batch(mode, selected, topic_value, quantity_value, {"language": language, "format": fmt, "style_wide": style, "style_ia": style_ia, "music_mode": style == "music", "background_mode": "none" if style == "music" else ("ai" if style == "full_ia" else "stock"), "music_path": music_path, "music_source": music_source, "generation_settings": generation_settings, "topic_source": payload.get("topic_source", "manual"), "channel_payloads": {selected[0]: payload}})
|
|
1882
1892
|
tasks = create_tasks_for_batch(batch)
|
|
1883
1893
|
st.success(f"Lote {batch['id']} criado com {len(tasks)} tarefa(s). Abra a subaba Vídeos para acompanhar.")
|
|
1884
|
-
with videos_tab:
|
|
1885
|
-
render_videos()
|
|
1886
1894
|
|
|
1887
1895
|
|
|
1888
1896
|
def render_music_creation():
|
|
@@ -4173,7 +4181,7 @@ def render_metadata_cleaner():
|
|
|
4173
4181
|
|
|
4174
4182
|
|
|
4175
4183
|
def render_pipeline():
|
|
4176
|
-
st.title("Pipeline")
|
|
4184
|
+
st.title("Pipeline Vídeos")
|
|
4177
4185
|
st.caption("Estado das filas locais e dependências da cascata")
|
|
4178
4186
|
queues = read_json("queues.json", {})
|
|
4179
4187
|
blueprint_count = len(list_blueprint_files())
|
|
@@ -4187,68 +4195,110 @@ def render_pipeline():
|
|
|
4187
4195
|
|
|
4188
4196
|
|
|
4189
4197
|
def main():
|
|
4190
|
-
|
|
4198
|
+
pipeline_video_items = [
|
|
4191
4199
|
("Criação de Vídeos", ":material/add_circle:", "Criação de Vídeos"),
|
|
4192
|
-
("
|
|
4200
|
+
("Backlog Vídeos", ":material/video_library:", "Backlog Vídeos"),
|
|
4193
4201
|
("Roteiros", ":material/article:", "Roteiros"),
|
|
4194
4202
|
("Upload", ":material/cloud_upload:", "Upload"),
|
|
4195
4203
|
]
|
|
4196
|
-
|
|
4197
|
-
("
|
|
4204
|
+
base_files_items = [
|
|
4205
|
+
("Blueprints Youtube", ":material/library_books:", "Blueprints Youtube"),
|
|
4206
|
+
("Prompt Masters", ":material/auto_awesome:", "Prompt Masters"),
|
|
4207
|
+
]
|
|
4208
|
+
channel_profile_items = [
|
|
4209
|
+
("Canais YouTube", ":material/ondemand_video:", "Canais YouTube"),
|
|
4198
4210
|
("Contas TikTok", ":material/account_circle:", "Contas TikTok"),
|
|
4211
|
+
("Facebook Pages", ":material/facebook:", "Facebook Pages"),
|
|
4199
4212
|
]
|
|
4200
|
-
|
|
4201
|
-
("
|
|
4202
|
-
("
|
|
4203
|
-
("Editor Python", ":material/code:", "Editor Python"),
|
|
4204
|
-
("Download Mídia", ":material/download:", "Download Mídia"),
|
|
4213
|
+
music_items = [
|
|
4214
|
+
("Criação de Músicas", ":material/music_note:", "Criação de Músicas"),
|
|
4215
|
+
("Upload Música", ":material/library_music:", "Upload Música"),
|
|
4205
4216
|
]
|
|
4206
4217
|
models_ai_items = [
|
|
4207
4218
|
("Personagens", ":material/person:", "Personagens"),
|
|
4219
|
+
("Geração de Conteúdo IA", ":material/auto_awesome:", "Geração de Conteúdo IA"),
|
|
4220
|
+
("Motion Control", ":material/motion_mode:", "Motion Control"),
|
|
4221
|
+
("UGC Products", ":material/shopping_bag:", "UGC Products"),
|
|
4208
4222
|
("Redes Sociais", ":material/share:", "Redes Sociais"),
|
|
4223
|
+
]
|
|
4224
|
+
growth_items = [
|
|
4225
|
+
("Analista Growth Youtube", ":material/analytics:", "Analista Growth Youtube"),
|
|
4226
|
+
("Analista Growth Tiktok", ":material/analytics:", "Analista Growth Tiktok"),
|
|
4227
|
+
("Analista Growth Instagram", ":material/analytics:", "Analista Growth Instagram"),
|
|
4228
|
+
]
|
|
4229
|
+
documentation_items = [
|
|
4209
4230
|
("Tutorial Meta", ":material/menu_book:", "Tutorial Meta"),
|
|
4210
4231
|
("Tutorial Supabase", ":material/storage:", "Tutorial Supabase"),
|
|
4232
|
+
("Tutorial Kaggle", ":material/menu_book:", "Tutorial Kaggle"),
|
|
4233
|
+
("Tutorial Apify", ":material/menu_book:", "Tutorial Apify"),
|
|
4211
4234
|
]
|
|
4212
4235
|
settings_items = [
|
|
4213
|
-
("Canais Youtube", ":material/ondemand_video:", "Canais Youtube"),
|
|
4214
|
-
("Blueprints Youtube", ":material/library_books:", "Blueprints Youtube"),
|
|
4215
4236
|
("MCP", ":material/hub:", "MCP"),
|
|
4216
4237
|
("Contas Google", ":material/account_circle:", "Contas Google"),
|
|
4217
|
-
("Configuração API", ":material/settings:", "Configuração API"),
|
|
4218
4238
|
("Notificações", ":material/notifications:", "Notificações"),
|
|
4239
|
+
("Configuração API", ":material/settings:", "Configuração API"),
|
|
4219
4240
|
]
|
|
4220
4241
|
niche_finder_items = [
|
|
4221
4242
|
("Niche Finder Kaggle", ":material/search:", "Niche Finder Kaggle"),
|
|
4243
|
+
("Tutorial Kaggle", ":material/menu_book:", "Tutorial Kaggle"),
|
|
4222
4244
|
("Niche Finder Apify", ":material/api:", "Niche Finder Apify"),
|
|
4245
|
+
("Tutorial Apify", ":material/menu_book:", "Tutorial Apify"),
|
|
4223
4246
|
]
|
|
4224
4247
|
automation_items = [
|
|
4225
4248
|
("Automação Youtube", ":material/schedule:", "Automação Youtube"),
|
|
4226
4249
|
]
|
|
4250
|
+
edition_items = [
|
|
4251
|
+
("Limpador de Metadados", ":material/edit_note:", "Limpador de Metadados"),
|
|
4252
|
+
("Cortes", ":material/content_cut:", "Cortes"),
|
|
4253
|
+
("Editor Python", ":material/code:", "Editor Python"),
|
|
4254
|
+
("Download Mídia", ":material/download:", "Download Mídia"),
|
|
4255
|
+
]
|
|
4227
4256
|
top_pages = [
|
|
4228
4257
|
("Início", ":material/home:", "Início"),
|
|
4229
|
-
("Niche Finder", ":material/search:", "Niche Finder"),
|
|
4230
|
-
("Pipeline", ":material/account_tree:", "Pipeline"),
|
|
4231
|
-
("Pipeline TikTok", ":material/video_library:", "Pipeline TikTok"),
|
|
4232
4258
|
("Automação", ":material/schedule:", "Automação"),
|
|
4233
|
-
("
|
|
4259
|
+
("Niche Finder", ":material/search:", "Niche Finder"),
|
|
4260
|
+
("Pipeline Vídeos", ":material/account_tree:", "Pipeline Vídeos"),
|
|
4234
4261
|
("AI Influencers", ":material/smart_toy:", "AI Influencers"),
|
|
4262
|
+
("Arquivos Base", ":material/folder:", "Arquivos Base"),
|
|
4263
|
+
("Canais e Perfis de Vídeos", ":material/video_library:", "Canais e Perfis de Vídeos"),
|
|
4264
|
+
("Música", ":material/music_note:", "Música"),
|
|
4265
|
+
("Edição", ":material/edit:", "Edição"),
|
|
4266
|
+
("Growth", ":material/analytics:", "Growth"),
|
|
4267
|
+
("Documentação", ":material/menu_book:", "Documentação"),
|
|
4235
4268
|
("Configurações", ":material/settings:", "Configurações"),
|
|
4236
4269
|
]
|
|
4270
|
+
groups = {
|
|
4271
|
+
"Automação": automation_items,
|
|
4272
|
+
"Niche Finder": niche_finder_items,
|
|
4273
|
+
"Pipeline Vídeos": pipeline_video_items,
|
|
4274
|
+
"AI Influencers": models_ai_items,
|
|
4275
|
+
"Arquivos Base": base_files_items,
|
|
4276
|
+
"Canais e Perfis de Vídeos": channel_profile_items,
|
|
4277
|
+
"Música": music_items,
|
|
4278
|
+
"Edição": edition_items,
|
|
4279
|
+
"Growth": growth_items,
|
|
4280
|
+
"Documentação": documentation_items,
|
|
4281
|
+
"Configurações": settings_items,
|
|
4282
|
+
}
|
|
4237
4283
|
aliases = {
|
|
4238
4284
|
"Dashboard": "Início",
|
|
4239
4285
|
"Novo vídeo": "Criação de Vídeos",
|
|
4240
|
-
"Vídeos": "
|
|
4286
|
+
"Vídeos": "Backlog Vídeos",
|
|
4241
4287
|
"Limpador de metadado": "Limpador de Metadados",
|
|
4242
|
-
"
|
|
4243
|
-
"
|
|
4244
|
-
"
|
|
4288
|
+
"Pipeline": "Pipeline Vídeos",
|
|
4289
|
+
"Pipeline TikTok": "Canais e Perfis de Vídeos",
|
|
4290
|
+
"Prompts Master": "Prompt Masters",
|
|
4291
|
+
"Canais": "Canais YouTube",
|
|
4292
|
+
"Canais Youtube": "Canais YouTube",
|
|
4245
4293
|
"Blueprints": "Blueprints Youtube",
|
|
4246
4294
|
"Configurações Técnicas": "Configuração API",
|
|
4247
4295
|
"Models AI": "AI Influencers",
|
|
4248
4296
|
"Contas Google/YouTube — canais em lote": "Contas Google",
|
|
4249
4297
|
}
|
|
4298
|
+
all_children = [item for items in groups.values() for item in items]
|
|
4299
|
+
valid_targets = {item[0] for item in top_pages + all_children}
|
|
4250
4300
|
current_page = aliases.get(st.session_state.get("page", "Início"), st.session_state.get("page", "Início"))
|
|
4251
|
-
if current_page not in
|
|
4301
|
+
if current_page not in valid_targets:
|
|
4252
4302
|
current_page = "Início"
|
|
4253
4303
|
st.session_state["page"] = current_page
|
|
4254
4304
|
ui_language = current_ui_language()
|
|
@@ -4258,7 +4308,7 @@ def main():
|
|
|
4258
4308
|
st.session_state["page"] = target
|
|
4259
4309
|
st.rerun()
|
|
4260
4310
|
|
|
4261
|
-
def render_nav_button(target: str, icon: str, label: str
|
|
4311
|
+
def render_nav_button(target: str, icon: str, label: str):
|
|
4262
4312
|
display_label = ui_text(label, ui_language)
|
|
4263
4313
|
if st.button(display_label, key=f"nav_{target}", icon=icon, use_container_width=True, type="primary" if current_page == target else "secondary"):
|
|
4264
4314
|
navigate(target)
|
|
@@ -4267,60 +4317,52 @@ def main():
|
|
|
4267
4317
|
version_markup = f'<span class="tb-brand-version">{APP_VERSION}</span>' if APP_VERSION else ""
|
|
4268
4318
|
st.markdown(f'<div class="tb-brand"><span class="tb-brand-name">Thunderbolt</span>{version_markup}</div>', unsafe_allow_html=True)
|
|
4269
4319
|
for target, icon, label in top_pages:
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
for child_target, child_icon, child_label in pipeline_items:
|
|
4273
|
-
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
4274
|
-
elif target == "Pipeline TikTok":
|
|
4275
|
-
with st.expander(ui_text("Pipeline TikTok", ui_language), expanded=current_page in {item[0] for item in pipeline_tiktok_items}, icon=":material/video_library:"):
|
|
4276
|
-
for child_target, child_icon, child_label in pipeline_tiktok_items:
|
|
4277
|
-
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
4278
|
-
elif target == "Automação":
|
|
4279
|
-
with st.expander(ui_text("Automação", ui_language), expanded=current_page in {item[0] for item in automation_items}, icon=":material/schedule:"):
|
|
4280
|
-
for child_target, child_icon, child_label in automation_items:
|
|
4281
|
-
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
4282
|
-
elif target == "Edição":
|
|
4283
|
-
with st.expander(ui_text("Edição", ui_language), expanded=current_page in {item[0] for item in edition_items}, icon=":material/edit:"):
|
|
4284
|
-
for child_target, child_icon, child_label in edition_items:
|
|
4285
|
-
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
4286
|
-
elif target == "AI Influencers":
|
|
4287
|
-
with st.expander(ui_text("AI Influencers", ui_language), expanded=current_page in {item[0] for item in models_ai_items}, icon=":material/smart_toy:"):
|
|
4288
|
-
for child_target, child_icon, child_label in models_ai_items:
|
|
4289
|
-
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
4290
|
-
elif target == "Niche Finder":
|
|
4291
|
-
with st.expander(ui_text("Niche Finder", ui_language), expanded=current_page in {item[0] for item in niche_finder_items}, icon=":material/search:"):
|
|
4292
|
-
for child_target, child_icon, child_label in niche_finder_items:
|
|
4293
|
-
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
4294
|
-
elif target == "Configurações":
|
|
4295
|
-
with st.expander(ui_text("Configurações", ui_language), expanded=current_page in {item[0] for item in settings_items}, icon=":material/settings:"):
|
|
4296
|
-
for child_target, child_icon, child_label in settings_items:
|
|
4297
|
-
render_nav_button(child_target, child_icon, child_label, child=True)
|
|
4298
|
-
else:
|
|
4320
|
+
children = groups.get(target)
|
|
4321
|
+
if children is None:
|
|
4299
4322
|
render_nav_button(target, icon, label)
|
|
4323
|
+
continue
|
|
4324
|
+
child_targets = {item[0] for item in children}
|
|
4325
|
+
with st.expander(ui_text(label, ui_language), expanded=current_page in child_targets, icon=icon):
|
|
4326
|
+
for child_target, child_icon, child_label in children:
|
|
4327
|
+
render_nav_button(child_target, child_icon, child_label)
|
|
4300
4328
|
|
|
4301
4329
|
renderers = {
|
|
4302
4330
|
"Início": render_dashboard,
|
|
4331
|
+
"Pipeline Vídeos": render_pipeline,
|
|
4303
4332
|
"Criação de Vídeos": render_new_video,
|
|
4333
|
+
"Backlog Vídeos": render_videos,
|
|
4304
4334
|
"Criação de Músicas": render_music_creation,
|
|
4335
|
+
"Upload Música": lambda: render_edit_placeholder("Upload Música", ""),
|
|
4305
4336
|
"Roteiros": render_scripts,
|
|
4306
|
-
"
|
|
4337
|
+
"Upload": render_upload,
|
|
4338
|
+
"Blueprints Youtube": render_blueprints,
|
|
4339
|
+
"Prompt Masters": render_tiktok_prompt_masters,
|
|
4340
|
+
"Canais YouTube": render_channels,
|
|
4307
4341
|
"Contas TikTok": render_tiktok_accounts,
|
|
4342
|
+
"Facebook Pages": lambda: render_edit_placeholder("Facebook Pages", ""),
|
|
4308
4343
|
"Automação Youtube": render_automation,
|
|
4309
4344
|
"Niche Finder Kaggle": render_niche_finder,
|
|
4345
|
+
"Tutorial Kaggle": lambda: render_edit_placeholder("Tutorial Kaggle", ""),
|
|
4310
4346
|
"Niche Finder Apify": render_niche_finder_apify,
|
|
4347
|
+
"Tutorial Apify": lambda: render_edit_placeholder("Tutorial Apify", ""),
|
|
4311
4348
|
"Edição": lambda: render_edit_placeholder("Edição", "Seleccione uma das abas de edição no menu expansível."),
|
|
4312
4349
|
"Limpador de Metadados": render_metadata_cleaner,
|
|
4313
4350
|
"Cortes": render_cuts,
|
|
4314
4351
|
"Editor Python": render_python_editor,
|
|
4315
4352
|
"Download Mídia": render_media_download,
|
|
4316
4353
|
"AI Influencers": lambda: render_edit_placeholder("AI Influencers", "Seleccione uma das abas AI Influencers no menu expansível."),
|
|
4317
|
-
"Tutorial Meta": render_models_ai_tutorial,
|
|
4318
|
-
"Tutorial Supabase": render_supabase_tutorial,
|
|
4319
4354
|
"Personagens": lambda: render_edit_placeholder("Personagens", "Área reservada para a futura funcionalidade de personagens."),
|
|
4355
|
+
"Geração de Conteúdo IA": lambda: render_edit_placeholder("Geração de Conteúdo IA", ""),
|
|
4356
|
+
"Motion Control": lambda: render_edit_placeholder("Motion Control", ""),
|
|
4357
|
+
"UGC Products": lambda: render_edit_placeholder("UGC Products", ""),
|
|
4320
4358
|
"Redes Sociais": lambda: render_edit_placeholder("Redes Sociais", "Área reservada para a futura funcionalidade de redes sociais."),
|
|
4321
|
-
"
|
|
4322
|
-
"
|
|
4323
|
-
"
|
|
4359
|
+
"Analista Growth Youtube": lambda: render_edit_placeholder("Analista Growth Youtube", ""),
|
|
4360
|
+
"Analista Growth Tiktok": lambda: render_edit_placeholder("Analista Growth Tiktok", ""),
|
|
4361
|
+
"Analista Growth Instagram": lambda: render_edit_placeholder("Analista Growth Instagram", ""),
|
|
4362
|
+
"Documentação": lambda: render_edit_placeholder("Documentação", "Seleccione um tutorial no menu expansível."),
|
|
4363
|
+
"Tutorial Meta": render_models_ai_tutorial,
|
|
4364
|
+
"Tutorial Supabase": render_supabase_tutorial,
|
|
4365
|
+
"Configurações": lambda: render_edit_placeholder("Configurações", "Seleccione uma opção no menu expansível."),
|
|
4324
4366
|
"MCP": render_mcp,
|
|
4325
4367
|
"Contas Google": render_google_accounts,
|
|
4326
4368
|
"Configuração API": render_settings,
|
package/hermes_ui/languages.py
CHANGED
|
@@ -141,6 +141,45 @@ UI_TRANSLATIONS: dict[str, dict[str, str]] = {
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
|
|
144
|
+
# Labels introduced by the reorganised sidebar. They are merged into the
|
|
145
|
+
# existing UI translation index so every navigation control uses the same
|
|
146
|
+
# translation path as the legacy pages.
|
|
147
|
+
UI_NAV_TRANSLATIONS: dict[str, dict[str, str]] = {
|
|
148
|
+
"pt": {
|
|
149
|
+
"Arquivos Base": "Arquivos Base", "Pipeline Vídeos": "Pipeline Vídeos", "Canais e Perfis de Vídeos": "Canais e Perfis de Vídeos", "Canais YouTube": "Canais YouTube", "Facebook Pages": "Facebook Pages", "Prompt Masters": "Prompt Masters", "Backlog Vídeos": "Backlog Vídeos", "Música": "Música", "Upload Música": "Upload Música", "Geração de Conteúdo IA": "Geração de Conteúdo IA", "Motion Control": "Motion Control", "UGC Products": "UGC Products", "Growth": "Growth", "Analista Growth Youtube": "Analista Growth Youtube", "Analista Growth Tiktok": "Analista Growth Tiktok", "Analista Growth Instagram": "Analista Growth Instagram", "Documentação": "Documentação", "Tutorial Kaggle": "Tutorial Kaggle", "Tutorial Apify": "Tutorial Apify", "Pipeline Músicas": "Pipeline Músicas", "módulos disponíveis": "módulos disponíveis",
|
|
150
|
+
},
|
|
151
|
+
"en": {
|
|
152
|
+
"Arquivos Base": "Base Files", "Pipeline Vídeos": "Video Pipeline", "Canais e Perfis de Vídeos": "Video Channels & Profiles", "Canais YouTube": "YouTube Channels", "Facebook Pages": "Facebook Pages", "Prompt Masters": "Prompt Masters", "Backlog Vídeos": "Video Backlog", "Música": "Music", "Upload Música": "Music Upload", "Geração de Conteúdo IA": "AI Content Generation", "Motion Control": "Motion Control", "UGC Products": "UGC Products", "Growth": "Growth", "Analista Growth Youtube": "YouTube Growth Analyst", "Analista Growth Tiktok": "TikTok Growth Analyst", "Analista Growth Instagram": "Instagram Growth Analyst", "Documentação": "Documentation", "Tutorial Kaggle": "Kaggle Tutorial", "Tutorial Apify": "Apify Tutorial", "Pipeline Músicas": "Music Pipeline", "módulos disponíveis": "available modules",
|
|
153
|
+
},
|
|
154
|
+
"zh": {
|
|
155
|
+
"Arquivos Base": "基础文件", "Pipeline Vídeos": "视频流程", "Canais e Perfis de Vídeos": "视频频道与资料", "Canais YouTube": "YouTube 频道", "Facebook Pages": "Facebook 页面", "Prompt Masters": "主提示词", "Backlog Vídeos": "视频待办", "Música": "音乐", "Upload Música": "音乐上传", "Geração de Conteúdo IA": "AI 内容生成", "Motion Control": "动作控制", "UGC Products": "UGC 产品", "Growth": "增长", "Analista Growth Youtube": "YouTube 增长分析师", "Analista Growth Tiktok": "TikTok 增长分析师", "Analista Growth Instagram": "Instagram 增长分析师", "Documentação": "文档", "Tutorial Kaggle": "Kaggle 教程", "Tutorial Apify": "Apify 教程", "Pipeline Músicas": "音乐流程", "módulos disponíveis": "可用模块",
|
|
156
|
+
},
|
|
157
|
+
"de": {
|
|
158
|
+
"Arquivos Base": "Basisdateien", "Pipeline Vídeos": "Video-Pipeline", "Canais e Perfis de Vídeos": "Videokanäle und Profile", "Canais YouTube": "YouTube-Kanäle", "Facebook Pages": "Facebook-Seiten", "Prompt Masters": "Prompt Masters", "Backlog Vídeos": "Video-Backlog", "Música": "Musik", "Upload Música": "Musik-Upload", "Geração de Conteúdo IA": "KI-Inhaltserstellung", "Motion Control": "Motion Control", "UGC Products": "UGC-Produkte", "Growth": "Wachstum", "Analista Growth Youtube": "YouTube-Wachstumsanalyst", "Analista Growth Tiktok": "TikTok-Wachstumsanalyst", "Analista Growth Instagram": "Instagram-Wachstumsanalyst", "Documentação": "Dokumentation", "Tutorial Kaggle": "Kaggle-Tutorial", "Tutorial Apify": "Apify-Tutorial", "Pipeline Músicas": "Musik-Pipeline", "módulos disponíveis": "verfügbare Module",
|
|
159
|
+
},
|
|
160
|
+
"vi": {
|
|
161
|
+
"Arquivos Base": "Tệp cơ sở", "Pipeline Vídeos": "Quy trình video", "Canais e Perfis de Vídeos": "Kênh và hồ sơ video", "Canais YouTube": "Kênh YouTube", "Facebook Pages": "Trang Facebook", "Prompt Masters": "Prompt Master", "Backlog Vídeos": "Danh sách video", "Música": "Âm nhạc", "Upload Música": "Tải nhạc lên", "Geração de Conteúdo IA": "Tạo nội dung AI", "Motion Control": "Điều khiển chuyển động", "UGC Products": "Sản phẩm UGC", "Growth": "Tăng trưởng", "Analista Growth Youtube": "Chuyên viên phân tích tăng trưởng YouTube", "Analista Growth Tiktok": "Chuyên viên phân tích tăng trưởng TikTok", "Analista Growth Instagram": "Chuyên viên phân tích tăng trưởng Instagram", "Documentação": "Tài liệu", "Tutorial Kaggle": "Hướng dẫn Kaggle", "Tutorial Apify": "Hướng dẫn Apify", "Pipeline Músicas": "Quy trình âm nhạc", "módulos disponíveis": "mô-đun khả dụng",
|
|
162
|
+
},
|
|
163
|
+
"tr": {
|
|
164
|
+
"Arquivos Base": "Temel Dosyalar", "Pipeline Vídeos": "Video Akışı", "Canais e Perfis de Vídeos": "Video Kanalları ve Profilleri", "Canais YouTube": "YouTube Kanalları", "Facebook Pages": "Facebook Sayfaları", "Prompt Masters": "Prompt Master'lar", "Backlog Vídeos": "Video Bekleme Listesi", "Música": "Müzik", "Upload Música": "Müzik Yükleme", "Geração de Conteúdo IA": "Yapay Zekâ İçeriği Oluşturma", "Motion Control": "Hareket Kontrolü", "UGC Products": "UGC Ürünleri", "Growth": "Büyüme", "Analista Growth Youtube": "YouTube Büyüme Analisti", "Analista Growth Tiktok": "TikTok Büyüme Analisti", "Analista Growth Instagram": "Instagram Büyüme Analisti", "Documentação": "Dokümantasyon", "Tutorial Kaggle": "Kaggle Eğitimi", "Tutorial Apify": "Apify Eğitimi", "Pipeline Músicas": "Müzik Akışı", "módulos disponíveis": "kullanılabilir modüller",
|
|
165
|
+
},
|
|
166
|
+
"ru": {
|
|
167
|
+
"Arquivos Base": "Базовые файлы", "Pipeline Vídeos": "Конвейер видео", "Canais e Perfis de Vídeos": "Каналы и профили видео", "Canais YouTube": "Каналы YouTube", "Facebook Pages": "Страницы Facebook", "Prompt Masters": "Мастер-промпты", "Backlog Vídeos": "Очередь видео", "Música": "Музыка", "Upload Música": "Загрузка музыки", "Geração de Conteúdo IA": "Генерация контента ИИ", "Motion Control": "Управление движением", "UGC Products": "UGC-продукты", "Growth": "Рост", "Analista Growth Youtube": "Аналитик роста YouTube", "Analista Growth Tiktok": "Аналитик роста TikTok", "Analista Growth Instagram": "Аналитик роста Instagram", "Documentação": "Документация", "Tutorial Kaggle": "Руководство Kaggle", "Tutorial Apify": "Руководство Apify", "Pipeline Músicas": "Конвейер музыки", "módulos disponíveis": "доступные модули",
|
|
168
|
+
},
|
|
169
|
+
"es": {
|
|
170
|
+
"Arquivos Base": "Archivos base", "Pipeline Vídeos": "Flujo de vídeos", "Canais e Perfis de Vídeos": "Canales y perfiles de vídeo", "Canais YouTube": "Canales de YouTube", "Facebook Pages": "Páginas de Facebook", "Prompt Masters": "Prompts maestros", "Backlog Vídeos": "Cola de vídeos", "Música": "Música", "Upload Música": "Subir música", "Geração de Conteúdo IA": "Generación de contenido con IA", "Motion Control": "Control de movimiento", "UGC Products": "Productos UGC", "Growth": "Crecimiento", "Analista Growth Youtube": "Analista de crecimiento de YouTube", "Analista Growth Tiktok": "Analista de crecimiento de TikTok", "Analista Growth Instagram": "Analista de crecimiento de Instagram", "Documentação": "Documentación", "Tutorial Kaggle": "Tutorial de Kaggle", "Tutorial Apify": "Tutorial de Apify", "Pipeline Músicas": "Flujo de música", "módulos disponíveis": "módulos disponibles",
|
|
171
|
+
},
|
|
172
|
+
"id": {
|
|
173
|
+
"Arquivos Base": "File Dasar", "Pipeline Vídeos": "Alur Video", "Canais e Perfis de Vídeos": "Kanal dan Profil Video", "Canais YouTube": "Kanal YouTube", "Facebook Pages": "Halaman Facebook", "Prompt Masters": "Prompt Master", "Backlog Vídeos": "Antrean Video", "Música": "Musik", "Upload Música": "Unggah Musik", "Geração de Conteúdo IA": "Pembuatan Konten AI", "Motion Control": "Kontrol Gerakan", "UGC Products": "Produk UGC", "Growth": "Pertumbuhan", "Analista Growth Youtube": "Analis Pertumbuhan YouTube", "Analista Growth Tiktok": "Analis Pertumbuhan TikTok", "Analista Growth Instagram": "Analis Pertumbuhan Instagram", "Documentação": "Dokumentasi", "Tutorial Kaggle": "Tutorial Kaggle", "Tutorial Apify": "Tutorial Apify", "Pipeline Músicas": "Alur Musik", "módulos disponíveis": "modul tersedia",
|
|
174
|
+
},
|
|
175
|
+
"it": {
|
|
176
|
+
"Arquivos Base": "File di base", "Pipeline Vídeos": "Pipeline video", "Canais e Perfis de Vídeos": "Canali e profili video", "Canais YouTube": "Canali YouTube", "Facebook Pages": "Pagine Facebook", "Prompt Masters": "Prompt Master", "Backlog Vídeos": "Coda video", "Música": "Musica", "Upload Música": "Caricamento musica", "Geração de Conteúdo IA": "Generazione di contenuti IA", "Motion Control": "Controllo del movimento", "UGC Products": "Prodotti UGC", "Growth": "Crescita", "Analista Growth Youtube": "Analista della crescita YouTube", "Analista Growth Tiktok": "Analista della crescita TikTok", "Analista Growth Instagram": "Analista della crescita Instagram", "Documentação": "Documentazione", "Tutorial Kaggle": "Tutorial Kaggle", "Tutorial Apify": "Tutorial Apify", "Pipeline Músicas": "Pipeline musicale", "módulos disponíveis": "moduli disponibili",
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
for _language_code, _navigation_values in UI_NAV_TRANSLATIONS.items():
|
|
180
|
+
UI_TRANSLATIONS[_language_code].update(_navigation_values)
|
|
181
|
+
|
|
182
|
+
|
|
144
183
|
_TAB_LABELS = (
|
|
145
184
|
"Blueprints", "Brandings", "Pesquisa pública", "Cadastro manual", "Contas cadastradas", "Biblioteca",
|
|
146
185
|
"Importar do YouTube", "Canais em lote gmail", "Criar vídeo", "Vídeos", "Novo roteiro/letra", "Histórico guardado",
|
package/package.json
CHANGED