en.ts 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. export default {
  2. nav: {
  3. feed: 'Feed',
  4. compose: 'New Post',
  5. media: 'Media',
  6. scheduler: 'Scheduler',
  7. analytics: 'Analytics',
  8. calendarPlan: 'Content Plan',
  9. competitors: 'Competitors',
  10. settings: 'Settings',
  11. },
  12. analytics: {
  13. title: 'Analytics',
  14. subtitle: 'Publishing activity across all connected platforms',
  15. refresh: 'Refresh',
  16. loading: 'Loading analytics…',
  17. empty: 'No posts yet.',
  18. emptyHint: 'Start publishing to see analytics here.',
  19. totalPosts: 'Total Posts',
  20. last7Days: 'Last 7 Days',
  21. platformsReached: 'Platforms Reached',
  22. successRate: 'Success Rate',
  23. postsPerDay: 'Posts per Day',
  24. postsPerDaySubtitle: 'Last 30 days',
  25. noActivity: 'No activity in the last 30 days.',
  26. platformBreakdown: 'Platform Breakdown',
  27. successfulPosts: 'successful posts',
  28. statusBreakdown: 'Status Breakdown',
  29. published: 'Published',
  30. partial: 'Partial',
  31. failed: 'Failed',
  32. recentPosts: 'Recent Posts',
  33. colContent: 'Content',
  34. colPlatforms: 'Platforms',
  35. colDate: 'Date',
  36. colStatus: 'Status',
  37. statusPublished: 'Published',
  38. statusPartial: 'Partial',
  39. statusFailed: 'Failed',
  40. typeScheduled: 'Scheduled',
  41. typeImmediate: 'Immediate',
  42. noRecentPosts: 'No posts to show.',
  43. loadMore: 'Load more',
  44. noContent: 'Content not available for older posts',
  45. filterBy: 'Filter:',
  46. filterAll: 'All',
  47. crawlMetrics: 'Crawl Metrics',
  48. crawling: 'Crawling…',
  49. crawlDone: 'Crawled {count} posts',
  50. runAudit: 'Run Brand Audit',
  51. runningAudit: 'Auditing…',
  52. auditTitle: 'Brand Health Audit',
  53. auditScore: 'Health Score',
  54. auditGeneratedAt: 'Generated',
  55. auditDismiss: 'Dismiss',
  56. auditFrequency: 'Posting Frequency',
  57. auditEngagement: 'Engagement',
  58. auditMix: 'Content Mix',
  59. auditRecommendations: 'Recommendations',
  60. auditStats: '{count} posts · {freq}x/week · {rate}% success rate',
  61. auditError: 'Audit failed — publish at least 3 posts first, then try again.',
  62. insightsTitle: 'Advanced Insights',
  63. insightsSubtitle: 'Engagement metrics from connected platforms',
  64. insightsEmpty: 'No engagement data yet.',
  65. insightsEmptyHint: 'Click "Crawl Metrics" to fetch engagement data from your connected platforms.',
  66. bestTimeTitle: 'Best Posting Times',
  67. bestTimeSubtitle: 'Average engagement score by time (UTC)',
  68. byHourTitle: 'By Hour of Day',
  69. byDayTitle: 'By Day of Week',
  70. heatmapTitle: 'Engagement Heatmap',
  71. heatmapSubtitle: 'Day × hour (UTC) — darker = higher avg engagement',
  72. topPostsTitle: 'Top Performing Posts',
  73. noTopPosts: 'No top posts yet.',
  74. platformCompTitle: 'Platform Comparison',
  75. colAvgEngagement: 'Avg Engagement',
  76. colAvgLikes: 'Avg Likes',
  77. colAvgComments: 'Avg Comments',
  78. colAvgShares: 'Avg Shares',
  79. colTracked: 'Posts Tracked',
  80. dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
  81. },
  82. calendarPlan: {
  83. title: 'Content Plan',
  84. subtitle: 'AI-generated monthly content calendar with narrative brief and platform-native posts.',
  85. month: 'Month',
  86. account: 'Account context',
  87. allAccounts: 'All accounts',
  88. platforms: 'Platforms',
  89. generate: 'Generate Plan',
  90. generating: 'Generating…',
  91. briefTitle: 'Narrative Brief',
  92. theme: 'Monthly theme',
  93. pillars: 'Content pillars',
  94. toneGuidance: 'Tone guidance',
  95. saveAllDrafts: 'Save {count} posts as Drafts',
  96. savingAll: 'Saving drafts…',
  97. draft: 'Draft',
  98. week: 'Week {n}',
  99. },
  100. media: {
  101. title: 'Media Library',
  102. fileCount: '{count} files',
  103. upload: 'Upload',
  104. uploading: 'Uploading…',
  105. dropZoneTitle: 'Drop files here or click Upload',
  106. dropZoneHint: 'Supports JPEG, PNG, GIF, WebP, MP4, MOV — up to 100 MB each',
  107. useInPost: 'Use in Post',
  108. copyUrl: 'Copy URL',
  109. copied: 'Copied!',
  110. deleteConfirmTitle: 'Delete this file?',
  111. deleteConfirmHint: 'This cannot be undone. Any posts using this file will lose the media.',
  112. cancel: 'Cancel',
  113. delete: 'Delete',
  114. deleting: 'Deleting…',
  115. allFiles: 'All Files',
  116. unorganized: 'Unorganized',
  117. accounts: 'Accounts',
  118. folders: 'Folders',
  119. newFolder: 'New Folder',
  120. folderNamePlaceholder: 'Folder name…',
  121. moveToFolder: 'Move to folder',
  122. removeFolderAssign: 'Remove from folder',
  123. },
  124. dashboard: {
  125. platforms: 'Platforms',
  126. tags: 'Tags',
  127. allTags: 'All',
  128. searchPlaceholder: 'Search content or user...',
  129. refresh: 'Refresh',
  130. refreshing: 'Refreshing...',
  131. newPost: '+ New Post',
  132. loading: 'Loading feed...',
  133. empty: 'No content to show.',
  134. emptyHint: 'Check platform connections or refresh the feed.',
  135. },
  136. compose: {
  137. title: 'New Post',
  138. destinationsLabel: 'Post to',
  139. placeholder: "What's on your mind?",
  140. cancel: 'Cancel',
  141. schedule: 'Schedule',
  142. send: 'Post Now →',
  143. sending: 'Posting...',
  144. successMessage: 'Post sent successfully.',
  145. scheduleTitle: 'Schedule post (leave empty to post now)',
  146. timezoneLabel: 'Timezone',
  147. timezoneAutoFrom: 'Auto from account',
  148. preview: 'Preview',
  149. addMedia: 'Photo / Video',
  150. uploadFile: 'Upload a photo or video from your device',
  151. uploading: 'Uploading…',
  152. uploadFailed: 'Upload failed. Please try again.',
  153. pasteUrl: 'or paste a URL',
  154. cancelUrl: 'cancel',
  155. mediaUrlPlaceholder: 'Paste image or video URL, then press Enter…',
  156. mediaLoadError: 'Could not load this URL — check it is publicly accessible.',
  157. igImageRequired: 'Instagram requires an image or video.',
  158. noDestinations: 'No platforms configured.',
  159. goToSettings: 'Go to Settings →',
  160. saveDraft: 'Save Draft',
  161. updateDraft: 'Update Draft',
  162. savingDraft: 'Saving…',
  163. draftSaved: 'Draft saved.',
  164. suggestedTimes: 'Suggested times',
  165. suggestionsFromHistory: 'based on your history',
  166. suggestionsFromDefaults: 'industry best practices',
  167. suggestionsLoading: 'Loading suggestions…',
  168. hashtagSuggestions: 'Suggested hashtags',
  169. hashtagsLoading: 'Suggesting…',
  170. hashtagsRefresh: 'Refresh',
  171. hashtagGroups: 'Hashtag groups',
  172. aiButton: 'AI',
  173. aiPanelTitle: 'Generate with AI',
  174. aiTopic: 'Topic',
  175. aiTopicPlaceholder: 'What should this post be about?',
  176. aiGoal: 'Goal',
  177. aiGoals: {
  178. promote: 'Promote',
  179. engage: 'Engage',
  180. inform: 'Inform',
  181. entertain: 'Entertain',
  182. announce: 'Announce',
  183. },
  184. aiTone: 'Tone',
  185. aiToneDefault: 'From profile',
  186. aiGenerate: 'Generate',
  187. aiGenerating: 'Generating…',
  188. aiStop: 'Stop',
  189. aiContextFrom: 'Context: {account}',
  190. aiNoContext: 'No profile — set one in Settings',
  191. aiNotConfigured: 'AI not configured — check Settings → AI Integration',
  192. aiError: 'Generation failed',
  193. aiUseCompetitors: 'Use competitor context',
  194. aiUseCompetitorsHint: 'differentiate from {names}',
  195. captionGenerate: '✨ Generate caption',
  196. captionGenerating: 'Generating caption…',
  197. captionError: 'Caption generation failed',
  198. firstCommentToggle: 'First Comment',
  199. firstCommentPlaceholder: 'Add a first comment (hashtags, links, extra context)…',
  200. firstCommentHint: 'Supported on Instagram, Facebook, Mastodon, and Bluesky.',
  201. },
  202. scheduler: {
  203. title: 'Scheduler',
  204. newSchedule: '+ New Post',
  205. noJobs: 'No scheduled posts.',
  206. statuses: {
  207. pending: 'Pending',
  208. completed: 'Completed',
  209. failed: 'Failed',
  210. cancelled: 'Cancelled',
  211. },
  212. cancel: 'Cancel',
  213. scheduledTab: 'Scheduled',
  214. calendarTab: 'Calendar',
  215. draftsTab: 'Drafts',
  216. noDrafts: 'No saved drafts.',
  217. editDraft: 'Edit',
  218. deleteDraft: 'Delete',
  219. goToToday: 'Today',
  220. noJobsDay: 'No posts scheduled for this day.',
  221. weekDaysShort: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
  222. months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
  223. bulkDraft: {
  224. openButton: 'Bulk Generate',
  225. title: 'Bulk AI Draft Generation',
  226. subtitle: 'Generate draft posts for multiple topics at once.',
  227. topicsLabel: 'Topics (one per line)',
  228. topicsPlaceholder: 'New product launch\nWeekly tips roundup\nBehind the scenes...',
  229. topicsHint: 'Each line becomes one AI-generated draft saved to your Drafts tab.',
  230. toneLabel: 'Tone',
  231. destinationsLabel: 'Destinations',
  232. noDestinations: 'No platforms connected. Connect platforms in Settings first.',
  233. progress: 'Generation progress',
  234. generate: 'Generate Drafts',
  235. generating: 'Starting…',
  236. generateMore: 'Generate More',
  237. viewDrafts: 'View Drafts',
  238. runInBackground: 'Run in background',
  239. statusDone: '{completed} draft created | {completed} drafts created ({failed} failed)',
  240. statusFailed: 'Batch failed unexpectedly. Please try again.',
  241. statusGenerating: 'Generating — {count} remaining…',
  242. tones: {
  243. professional: 'Professional',
  244. casual: 'Casual',
  245. engaging: 'Engaging',
  246. informative: 'Informative',
  247. humorous: 'Humorous',
  248. inspirational: 'Inspirational',
  249. },
  250. },
  251. },
  252. settings: {
  253. title: 'Platform Connections',
  254. subtitle: 'Edit the {env} file to connect platforms, then restart the relevant service.',
  255. connected: 'Connected',
  256. notConnected: 'Not connected',
  257. refreshStatus: '↻ Refresh Status',
  258. envHint: 'Configuration required',
  259. profiles: {
  260. sectionTitle: 'Account Profiles',
  261. sectionSubtitle: 'Business context used to personalise AI-generated content.',
  262. edit: 'Edit',
  263. close: 'Close',
  264. save: 'Save Profile',
  265. saving: 'Saving…',
  266. saved: 'Saved!',
  267. noAccounts: 'No connected accounts. Connect platforms above first.',
  268. businessName: 'Business Name',
  269. businessNameHint: 'e.g. Acme Coffee Roasters',
  270. description: 'Description',
  271. descriptionHint: 'What does this account represent? What do you do?',
  272. websiteUrl: 'Website URL',
  273. industry: 'Industry',
  274. industryHint: 'e.g. Food & Beverage, SaaS, Retail',
  275. targetAudience: 'Target Audience',
  276. targetAudienceHint: 'e.g. Coffee enthusiasts aged 25–45',
  277. toneOfVoice: 'Tone of Voice',
  278. toneSelect: 'Select a tone…',
  279. keywords: 'Keywords',
  280. keywordsHint: 'Comma-separated, e.g. organic, specialty, single-origin',
  281. hashtags: 'Preferred Hashtags',
  282. hashtagsHint: 'e.g. #specialtycoffee #coffeelovers',
  283. postingGuidelines: 'Posting Guidelines',
  284. postingGuidelinesHint: 'Any specific rules, e.g. always mention opening hours on Fridays',
  285. timezone: 'Timezone',
  286. timezoneHint: 'Used to schedule posts at the correct local time for this account.',
  287. timezoneAuto: 'Use browser timezone',
  288. },
  289. hashtags: {
  290. sectionTitle: 'Hashtag Groups',
  291. sectionSubtitle: 'Save hashtag presets and analyse per-account performance from your published posts.',
  292. addGroup: 'Add Group',
  293. createGroup: 'Create Group',
  294. noGroups: 'No hashtag groups yet.',
  295. edit: 'Edit',
  296. delete: 'Delete',
  297. deleteConfirm: 'Delete this hashtag group?',
  298. save: 'Save',
  299. cancel: 'Cancel',
  300. groupNamePlaceholder: 'Group name (e.g. Photography)',
  301. hashtagsPlaceholder: '#photography #nature #travel — space or comma separated',
  302. showStats: 'Show Stats',
  303. hideStats: 'Hide Stats',
  304. statsTitle: 'Hashtag Performance',
  305. sortByUsage: 'By Usage',
  306. sortByEngagement: 'By Engagement',
  307. scanPosts: 'Scan Posts',
  308. scanning: 'Scanning…',
  309. loadingStats: 'Loading stats…',
  310. noStats: 'No hashtag stats yet — scan your posts to analyse performance.',
  311. allAccounts: 'All accounts',
  312. aiSuggestForAccount: 'AI suggestions for selected account:',
  313. aiSuggestAllAccounts: 'AI suggestions across all accounts:',
  314. aiSuggest: 'AI Suggest',
  315. suggesting: 'Generating…',
  316. selectToGroup: 'Click tags to select, then save as a group:',
  317. colHashtag: 'Hashtag',
  318. colUses: 'Uses',
  319. colEngagement: 'Avg Engagement',
  320. colGrade: 'Grade',
  321. colPlatforms: 'Platforms',
  322. },
  323. tiktok: {
  324. sectionTitle: 'TikTok',
  325. sectionSubtitle: 'Connect your TikTok account to publish videos.',
  326. clientKeyLabel: 'Client Key',
  327. clientSecretLabel: 'Client Secret',
  328. clientKeyPlaceholder: 'Your TikTok App Client Key',
  329. clientSecretPlaceholder: 'Your TikTok App Client Secret',
  330. saveApp: 'Save App Credentials',
  331. saving: 'Saving...',
  332. appConfigured: 'App credentials saved',
  333. connectButton: 'Connect with TikTok',
  334. connecting: 'Redirecting to TikTok...',
  335. reconnect: 'Reconnect',
  336. disconnect: 'Disconnect',
  337. disconnectConfirm: 'This will disconnect your TikTok account. Continue?',
  338. connectedAs: 'Connected as',
  339. videoOnly: 'TikTok only supports video posts. Select a video in Compose to publish.',
  340. errorTitle: 'TikTok OAuth Error',
  341. getAppHelp: 'Get your credentials from',
  342. devPortal: 'developers.tiktok.com',
  343. },
  344. pinterest: {
  345. sectionTitle: 'Pinterest',
  346. sectionSubtitle: 'Connect your Pinterest account to create pins on your boards.',
  347. clientIdLabel: 'Client ID',
  348. clientSecretLabel: 'Client Secret',
  349. clientIdPlaceholder: 'Your Pinterest App Client ID',
  350. clientSecretPlaceholder: 'Your Pinterest App Client Secret',
  351. saveApp: 'Save App Credentials',
  352. saving: 'Saving...',
  353. appConfigured: 'App credentials saved',
  354. connectButton: 'Connect with Pinterest',
  355. connecting: 'Redirecting to Pinterest...',
  356. reconnect: 'Reconnect',
  357. disconnect: 'Disconnect',
  358. disconnectConfirm: 'This will disconnect your Pinterest account and all boards. Continue?',
  359. boardsTitle: 'Your Boards',
  360. noBoards: 'No boards found.',
  361. saveBoards: 'Save Board Selection',
  362. savingBoards: 'Saving...',
  363. boardsSaved: 'Saved!',
  364. getAppHelp: 'Get your credentials from',
  365. devPortal: 'developers.pinterest.com',
  366. errorTitle: 'Pinterest OAuth Error',
  367. },
  368. meta: {
  369. sectionTitle: 'Facebook & Instagram',
  370. sectionSubtitle: 'Both platforms share a single Facebook Developer App. Connect once to manage all your Pages and Instagram accounts.',
  371. appIdLabel: 'App ID',
  372. appSecretLabel: 'App Secret',
  373. appIdPlaceholder: 'Your Facebook App ID',
  374. appSecretPlaceholder: 'Your Facebook App Secret',
  375. saveApp: 'Save App Credentials',
  376. saving: 'Saving...',
  377. appConfigured: 'App credentials saved',
  378. connectButton: 'Connect with Facebook & Instagram',
  379. connecting: 'Redirecting to Facebook...',
  380. reconnect: 'Reconnect',
  381. disconnect: 'Disconnect all',
  382. disconnectConfirm: 'This will disconnect all Facebook Pages and Instagram accounts. Continue?',
  383. discoveryTitle: 'Choose Pages & Accounts to Connect',
  384. discoverySubtitle: 'Select any combination of Facebook Pages and Instagram accounts below.',
  385. pagesHeading: 'Facebook Pages',
  386. igHeading: 'Instagram Accounts',
  387. noPages: 'No Facebook Pages found for this account.',
  388. noIgAccounts: 'No Instagram Business accounts found.',
  389. igLinkedTo: 'Linked to',
  390. confirmSelection: 'Connect Selected',
  391. confirmingSelection: 'Connecting...',
  392. nothingSelected: 'Select at least one Page or Instagram account.',
  393. connectedPages: 'Connected Pages',
  394. connectedAccounts: 'Connected Accounts',
  395. errorTitle: 'OAuth Error',
  396. getAppHelp: 'Get your App ID and Secret from',
  397. devPortal: 'developers.facebook.com',
  398. expiryWarningTitle: 'Instagram token expiring soon',
  399. expiryWarningBody: '{username} expires in {days} day | {username} expires in {days} days',
  400. expiryRefreshToken: 'Refresh Token',
  401. expiryRefreshing: 'Refreshing…',
  402. expiryRefreshDone: 'Token refreshed',
  403. expiryAutoNote: 'Tokens are refreshed automatically when ≤ 7 days remain.',
  404. expiryReconnect: 'Reconnect',
  405. expiryDismiss: 'Dismiss',
  406. },
  407. },
  408. ai: {
  409. sectionTitle: 'AI Integration',
  410. sectionSubtitle: 'Connect a local Ollama instance to generate post content with AI.',
  411. endpointLabel: 'Ollama Endpoint',
  412. endpointPlaceholder: 'http://localhost:11434',
  413. endpointHint: 'Inside Docker the default is http://ollama:11434',
  414. modelLabel: 'Model',
  415. modelPlaceholder: 'Select a model…',
  416. testConnection: 'Test Connection',
  417. testing: 'Testing…',
  418. saveConfig: 'Save',
  419. saving: 'Saving…',
  420. saved: 'Saved!',
  421. noModels: 'No models found — is Ollama running?',
  422. connected: 'Connected',
  423. connectionFailed: 'Connection failed',
  424. modelsAvailable: '{count} model available | {count} models available',
  425. visionModelLabel: 'Vision Model',
  426. visionModelPlaceholder: 'e.g. llava, llama3.2-vision',
  427. visionModelHint: 'Used for image captioning. Pull with: ollama pull llava',
  428. activeProvider: 'Active Provider',
  429. setActive: 'Set as Active',
  430. active: 'Active',
  431. disconnect: 'Disconnect',
  432. disconnectConfirm: 'Remove this provider and its API key?',
  433. apiKeyLabel: 'API Key',
  434. apiKeyPlaceholder: 'Paste your API key…',
  435. apiKeyConfigured: 'API key saved',
  436. connectAndActivate: 'Connect & Set Active',
  437. saveProvider: 'Save',
  438. providerSaved: 'Saved!',
  439. openai: {
  440. sectionTitle: 'OpenAI',
  441. sectionSubtitle: 'GPT-4o and GPT-4o-mini via the OpenAI API.',
  442. getKeyHint: 'Get an API key at platform.openai.com',
  443. },
  444. groq: {
  445. sectionTitle: 'Groq',
  446. sectionSubtitle: 'Ultra-fast inference with Llama and Mixtral models.',
  447. getKeyHint: 'Get an API key at console.groq.com',
  448. },
  449. gemini: {
  450. sectionTitle: 'Google Gemini',
  451. sectionSubtitle: 'Gemini 2.0 Flash and 1.5 Pro with native vision support.',
  452. getKeyHint: 'Get an API key at aistudio.google.com',
  453. },
  454. },
  455. feed: {
  456. openOriginal: '↗ Open',
  457. },
  458. competitors: {
  459. sectionTitle: 'Competitor Intelligence',
  460. sectionSubtitle: 'Track up to 5 competitors and use their content to improve your AI-generated posts.',
  461. addCompetitor: 'Add Competitor',
  462. addButton: 'Add',
  463. namePlaceholder: 'Competitor name',
  464. websitePlaceholder: 'https://competitor.com',
  465. socialUrls: 'Social profile URLs',
  466. scrapeNow: 'Scrape Now',
  467. scraping: 'Scraping…',
  468. summarizeAi: 'Summarise with AI',
  469. summarizing: 'Summarising…',
  470. extractKeywords: 'Extract Keywords',
  471. extractingKeywords: 'Extracting…',
  472. aiSummaryLabel: 'AI Summary',
  473. aiAnalysisLabel: 'AI Analysis',
  474. analysisTone: 'Tone',
  475. analysisPositioning: 'Positioning',
  476. analysisThemes: 'Content themes',
  477. analysisGaps: 'Gaps & opportunities',
  478. analysisMoves: 'Differentiation moves',
  479. keywordsLabel: 'Competitor Keywords',
  480. intent_informational: 'Informational',
  481. intent_commercial: 'Commercial',
  482. intent_transactional: 'Transactional',
  483. intent_navigational: 'Navigational',
  484. sideBySideMode: 'Comparing competitors side by side',
  485. predictionLabel: 'Response Prediction',
  486. predictionSatisfied: 'Holding position',
  487. predictionPushing: 'Actively pushing',
  488. predictionNextMoves: 'Likely next moves',
  489. predictionVulnerabilities: 'Exploitable vulnerabilities',
  490. predictionRetaliationTriggers: 'Retaliation triggers',
  491. detectSignals: 'Detect Signals',
  492. detectingSignals: 'Detecting…',
  493. signalsLabel: 'Market Signals',
  494. signalType_topic_expansion: 'New topics',
  495. signalType_tone_shift: 'Tone shift',
  496. signalType_campaign_launch: 'Campaign launch',
  497. signalType_pricing_change: 'Pricing change',
  498. signalType_market_entry: 'Market entry',
  499. signalType_competitive_aggression: 'Competitive move',
  500. signalType_frequency_change: 'Frequency change',
  501. profilePricing: 'Pricing',
  502. profileTarget: 'Target customer',
  503. profileFeatures: 'Key features',
  504. profileChannels: 'Channels',
  505. discoverButton: 'Find Competitors Automatically',
  506. discovering: 'Discovering…',
  507. discoverySuggestionsLabel: 'AI-suggested competitors — click Add to track them:',
  508. discoverAccept: 'Add',
  509. sharedGapsNote: 'Red keywords are also targeted by {name} — highest priority gaps',
  510. sharedGapTitle: 'Also targeted by {name}',
  511. analyzeGaps: 'Gap Analysis',
  512. analyzingGaps: 'Analysing…',
  513. gapAnalysisLabel: 'Content Gaps',
  514. gapCount: 'gaps',
  515. coveredCount: 'covered',
  516. gapMissing: 'Keywords you\'re missing',
  517. gapNoneFound: 'No gaps — your content already covers all competitor keywords.',
  518. gapCoveredToggle: '{count} covered keywords',
  519. gapNoHashtagStats: 'No hashtag data yet — run "Scan Posts" in Settings → Hashtag Groups for accurate results.',
  520. generateRoadmap: 'Content Roadmap',
  521. generatingRoadmap: 'Generating…',
  522. roadmapLabel: 'Content Roadmap',
  523. roadmapDraft: 'Draft this post',
  524. lastScraped: 'Last scraped',
  525. scrapeSuccess: 'Scraped {count} source(s) successfully',
  526. scrapeNoContent: 'No content found — check the URL and try again',
  527. emptyState: 'No competitors added yet. Add up to 5 to track their content.',
  528. maxReached: 'Maximum 5 competitors reached.',
  529. freshnessNever: 'Never scraped',
  530. freshnessFresh: 'Fresh',
  531. freshnessStale: 'Stale',
  532. freshnessOutdated: 'Outdated',
  533. newActivity: 'New activity detected',
  534. edit: 'Edit',
  535. save: 'Save',
  536. cancel: 'Cancel',
  537. delete: 'Remove',
  538. confirmDelete: 'Remove this competitor?',
  539. },
  540. platforms: {
  541. twitter: 'Twitter/X',
  542. linkedin: 'LinkedIn',
  543. mastodon: 'Mastodon',
  544. bluesky: 'Bluesky',
  545. instagram: 'Instagram',
  546. facebook: 'Facebook',
  547. reddit: 'Reddit',
  548. youtube: 'YouTube',
  549. pinterest: 'Pinterest',
  550. tiktok: 'TikTok',
  551. },
  552. }