Skip to content

Commit 9f36158

Browse files
christian-byrnegithub-actions
andauthored
translate all analytics to English for template metadata (#6292)
## Summary Track template metadata in English for analytics regardless of user's locale to enable consistent statistical analysis. ## Changes - **What**: Load English [template index](https://github.com/Comfy-Org/ComfyUI_frontend/tree/main/public/templates) alongside localized version (cloud builds only) - **What**: Added `getEnglishMetadata()` method to `workflowTemplatesStore` that returns English versions of template tags, category, useCase, models, and license - **What**: Updated `MixpanelTelemetryProvider` to prefer English metadata for analytics events, falling back to localized values ## Review Focus English template fetch only triggers in cloud builds via `isCloud` flag. Non-cloud builds see no bundle size impact. Method returns null when English templates unavailable, with fallback to localized data ensuring analytics continue working in edge cases. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6292-translate-all-analytics-to-English-for-template-metadata-2986d73d365081fdbc21f372aa9bb41e) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]>
1 parent 857c131 commit 9f36158

File tree

3 files changed

+51
-7
lines changed

3 files changed

+51
-7
lines changed
-51 Bytes
Loading

src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,15 +205,20 @@ export class MixpanelTelemetryProvider implements TelemetryProvider {
205205
const template = templatesStore.getTemplateByName(
206206
activeWorkflow.filename
207207
)
208+
209+
const englishMetadata = templatesStore.getEnglishMetadata(
210+
activeWorkflow.filename
211+
)
212+
208213
return {
209214
is_template: true,
210215
workflow_name: activeWorkflow.filename,
211216
template_source: template?.sourceModule,
212-
template_category: template?.category,
213-
template_tags: template?.tags,
214-
template_models: template?.models,
215-
template_use_case: template?.useCase,
216-
template_license: template?.license
217+
template_category: englishMetadata?.category ?? template?.category,
218+
template_tags: englishMetadata?.tags ?? template?.tags,
219+
template_models: englishMetadata?.models ?? template?.models,
220+
template_use_case: englishMetadata?.useCase ?? template?.useCase,
221+
template_license: englishMetadata?.license ?? template?.license
217222
}
218223
}
219224

src/platform/workflow/templates/repositories/workflowTemplatesStore.ts

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { defineStore } from 'pinia'
33
import { computed, ref, shallowRef } from 'vue'
44

55
import { i18n, st } from '@/i18n'
6+
import { isCloud } from '@/platform/distribution/types'
67
import { api } from '@/scripts/api'
78
import type { NavGroupData, NavItemData } from '@/types/navTypes'
89
import { getCategoryIcon } from '@/utils/categoryIcons'
@@ -29,6 +30,7 @@ export const useWorkflowTemplatesStore = defineStore(
2930
() => {
3031
const customTemplates = shallowRef<{ [moduleName: string]: string[] }>({})
3132
const coreTemplates = shallowRef<WorkflowTemplates[]>([])
33+
const englishTemplates = shallowRef<WorkflowTemplates[]>([])
3234
const isLoaded = ref(false)
3335
const knownTemplateNames = ref(new Set<string>())
3436

@@ -436,7 +438,16 @@ export const useWorkflowTemplatesStore = defineStore(
436438
if (!isLoaded.value) {
437439
customTemplates.value = await api.getWorkflowTemplates()
438440
const locale = i18n.global.locale.value
439-
coreTemplates.value = await api.getCoreWorkflowTemplates(locale)
441+
442+
const [coreResult, englishResult] = await Promise.all([
443+
api.getCoreWorkflowTemplates(locale),
444+
isCloud && locale !== 'en'
445+
? api.getCoreWorkflowTemplates('en')
446+
: Promise.resolve([])
447+
])
448+
449+
coreTemplates.value = coreResult
450+
englishTemplates.value = englishResult
440451

441452
const coreNames = coreTemplates.value.flatMap((category) =>
442453
category.templates.map((template) => template.name)
@@ -451,6 +462,33 @@ export const useWorkflowTemplatesStore = defineStore(
451462
}
452463
}
453464

465+
function getEnglishMetadata(templateName: string): {
466+
tags?: string[]
467+
category?: string
468+
useCase?: string
469+
models?: string[]
470+
license?: string
471+
} | null {
472+
if (englishTemplates.value.length === 0) {
473+
return null
474+
}
475+
476+
for (const category of englishTemplates.value) {
477+
const template = category.templates.find((t) => t.name === templateName)
478+
if (template) {
479+
return {
480+
tags: template.tags,
481+
category: category.title,
482+
useCase: template.useCase,
483+
models: template.models,
484+
license: template.license
485+
}
486+
}
487+
}
488+
489+
return null
490+
}
491+
454492
return {
455493
groupedTemplates,
456494
navGroupedTemplates,
@@ -460,7 +498,8 @@ export const useWorkflowTemplatesStore = defineStore(
460498
isLoaded,
461499
loadWorkflowTemplates,
462500
knownTemplateNames,
463-
getTemplateByName
501+
getTemplateByName,
502+
getEnglishMetadata
464503
}
465504
}
466505
)

0 commit comments

Comments
 (0)