opencode/packages/stats/app/src/i18n.ts
2026-07-07 06:53:36 -05:00

281 lines
12 KiB
TypeScript

import { type Locale } from "./lib/language"
import { dict as ar } from "./i18n/ar"
import { dict as br } from "./i18n/br"
import { dict as da } from "./i18n/da"
import { dict as de } from "./i18n/de"
import { dict as es } from "./i18n/es"
import { dict as fr } from "./i18n/fr"
import { dict as it } from "./i18n/it"
import { dict as ja } from "./i18n/ja"
import { dict as ko } from "./i18n/ko"
import { dict as no } from "./i18n/no"
import { dict as pl } from "./i18n/pl"
import { dict as ru } from "./i18n/ru"
import { dict as th } from "./i18n/th"
import { dict as tr } from "./i18n/tr"
import { dict as uk } from "./i18n/uk"
import { dict as zh } from "./i18n/zh"
import { dict as zht } from "./i18n/zht"
const en = {
"app.title": "AI Model Usage Rankings | OpenCode Data",
"app.description":
"Explore OpenCode Go usage across AI models, including token volume, rankings, market share, token pricing, session cost, cache ratio, and geo breakdowns.",
"app.unfurlAlt": "OpenCode Data wordmark on a dark patterned background",
"nav.dataHome": "Data Home",
"nav.topModels": "Top Models",
"nav.leaderboard": "Leaderboard",
"nav.uniqueUsers": "Unique Users",
"nav.sessionCost": "Session Cost",
"nav.tokenCost": "Token Cost",
"nav.cacheRatio": "Cache Ratio",
"nav.marketShare": "Market Share",
"nav.geoBreakdown": "Geo Breakdown",
"nav.overview": "Overview",
"nav.usage": "Usage",
"nav.users": "Users",
"nav.efficiency": "Efficiency",
"nav.peers": "Peers",
"nav.models": "Models",
"header.brandLabel": "Data home",
"header.sectionNavLabel": "Data sections",
"header.githubAria": "Star OpenCode on GitHub",
"header.github": "GitHub",
"header.tryOpenCode": "Try OpenCode",
"header.openNav": "Open navigation",
"header.closeNav": "Close navigation",
"theme.groupLabel": "Theme",
"theme.dark": "Dark",
"theme.light": "Light",
"theme.system": "System",
"footer.modelData": "Model Data",
"footer.legal": "Legal",
"footer.connect": "Connect",
"footer.newsletter": "Newsletter",
"footer.newsletterBody": "Be the first to know about new releases.",
"footer.language": "Language",
"footer.subscribe": "Subscribe",
"footer.terms": "Terms of service",
"footer.privacy": "Privacy policy",
"footer.contact": "Contact us",
"footer.community": "Community",
"footer.youtube": "YouTube",
"footer.homeAria": "OpenCode home",
"footer.status": "All systems Operational",
"footer.copyright": "© 2026 Anomaly Innovations Inc.",
"bridge.learnMore": "LEARN MORE",
"modal.closeNewsletter": "Close newsletter signup",
"modal.title": "OpenCode Newsletter",
"modal.body": "Be the first to know\nabout new releases.",
"modal.email": "Email address",
"modal.subscribe": "Subscribe",
"modal.subscribing": "Subscribing...",
"modal.success": "You're subscribed.",
"modal.error": "Failed to subscribe",
"product.allUsers": "All Users",
"product.zen": "Zen",
"product.go": "Go",
"range.1D": "1 Day",
"range.1W": "1 Week",
"range.2W": "2 Weeks",
"range.1M": "1 Month",
"range.2M": "2 Months",
"chart.daily": "Daily",
"chart.input": "Input",
"chart.output": "Output",
"chart.cached": "Cached",
"chart.uncached": "Uncached",
"chart.ratio": "Ratio",
"chart.model": "Model",
"chart.cacheRatio": "Cache Ratio",
"chart.costSession": "Cost/Session",
"chart.tokensSession": "Tokens/Session",
"chart.costPerSession": "COST / SESSION",
"chart.tokensPerSession": "TOKENS / SESSION",
"chart.live": "Live",
"chart.percent": "percent",
"chart.leaderboardAria": "Model token leaderboard",
"chart.scrollableLeaderboardAria": "Scrollable model token leaderboard",
"chart.byAuthor": "by {{author}}",
"home.updated": "Updated",
"home.noRows": "No rows yet",
"home.justNow": "just now",
"home.heroCopy": "See which models are winning real usage, how the mix is shifting, and what that means for cost.",
"home.loadingTitle": "Loading data",
"home.loadingDescription": "Reading model aggregates.",
"home.usageTitle": "Usage",
"home.topModelsDescription": "Usage of models across OpenCode Go.",
"home.noUsageTitle": "No usage data",
"home.noUsageDescription": "No model rows matched this product and range.",
"home.noLeaderboardTitle": "No leaderboard data",
"home.noLeaderboardDescription": "No model rows matched this product and range.",
"home.productFilter": "Product filter",
"home.dateRange": "Date range",
"home.stackedUsageChart": "Stacked top model usage chart",
"home.total": "total",
"home.modelUsers": "model users",
"home.new": "New",
"home.uniqueUsersTitle": "Unique Users",
"home.uniqueUsersDescription": "Daily unique OpenCode Go users by model.",
"home.noUserDataTitle": "No user data",
"home.noUserDataDescription": "No user-bearing model rows matched this window.",
"home.uniqueUsersChart": "Stacked unique user chart by model",
"home.marketShareTitle": "Market Share",
"home.marketShareDescription": "Compare token share by model author.",
"home.noMarketTitle": "No market data",
"home.noMarketDescription": "No model rows matched this range.",
"home.marketChart": "Market share by model author",
"home.noData": "No data",
"home.geoTitle": "Geo Breakdown",
"home.geoDescription": "Tokens used by country.",
"home.noGeoTitle": "No geo data",
"home.noGeoDescription": "No geo rows matched this range.",
"home.worldMap": "World map of token usage by country",
"home.geoMapTitle": "Geo Breakdown map",
"home.unknown": "Unknown",
"home.tokenCostTitle": "Token Cost",
"home.tokenCostDescription": "Price per 1M tokens.",
"home.noTokenCostTitle": "No token cost data",
"home.noTokenCostDescription": "No cost-bearing model rows matched this product.",
"home.cacheRatioTitle": "Cache Ratio",
"home.cacheRatioDescription": "Share of input tokens served from cache.",
"home.noCacheTitle": "No cache ratio data",
"home.noCacheDescription": "No input-token model rows matched this product.",
"home.sessionCostTitle": "Session Cost",
"home.sessionCostDescription": "Average cost per session.",
"home.noSessionCostTitle": "No session cost data",
"home.noSessionCostDescription": "No session-bearing model rows matched this product.",
"home.costSession": "Cost/Session",
"lab.title": "{{lab}} AI Model Usage & Rankings | OpenCode Data",
"lab.description":
"Compare {{lab}} models used in OpenCode Go, including token usage, model rankings, context windows, release dates, costs, and model-specific data.",
"lab.loadingTitle": "Model Lab",
"lab.loadingDescription": "Reading model availability and recent OpenCode usage.",
"lab.notFound": "No models matched this lab.",
"lab.heroPrefix": "Explore {{count}} {{lab}} models used in OpenCode",
"lab.heroIncluding": "including {{models}}",
"lab.heroSuffix": "Compare recent token usage, context windows, release dates, and model data.",
"lab.tokensProcessed": "Tokens Processed",
"lab.pending": "Pending",
"lab.usageAfterActivity": "Usage appears after model activity lands",
"lab.latestRelease": "Latest release {{date}}",
"lab.shareOfUsage": "{{share}} of recent OpenCode usage",
"lab.usageTitle": "{{lab}} token usage",
"lab.usageDescription": "Daily token volume.",
"lab.noUsageTitle": "No usage yet",
"lab.noUsageDescription": "Recent token usage appears here once this lab has activity.",
"lab.dailyTokenChart": "{{lab}} daily token usage chart",
"lab.dailyTokens": "Daily tokens",
"lab.tokens": "tokens",
"lab.modelsTitle": "{{lab}} models",
"lab.modelsDescription": "Catalog details plus recent usage.",
"lab.recentUsageAndLimits": "Recent usage and limits.",
"lab.usage": "Usage",
"lab.share": "Share",
"model.title": "{{model}} Usage, Cost & Rank | OpenCode Data",
"model.description":
"View {{model}} OpenCode Go usage data, including token volume, weekly rank, token mix, costs, cache ratio, sessions, geo breakdowns, and peer models.",
"model.loadingTitle": "Model Data",
"model.loadingDescription": "Reading model aggregates.",
"model.loadingProfile": "Reading the model profile.",
"model.noDataTitle": "No model data",
"model.noDataDescription": "Try opening a model from the leaderboard.",
"model.noMatched": "No model facts or usage rows matched {{id}}.",
"model.fallback": "Model",
"model.catalogFallback":
"Model facts from the shared model index. OpenCode Go usage appears once this model has activity.",
"model.unranked": "Unranked across last week's OpenCode Go usage",
"model.ranked": "Ranked #{{rank}} across last week's OpenCode Go usage",
"model.observedVolume": "with {{share}} of observed 2M volume.",
"model.weights": "Model weights: {{label}}",
"model.rank": "7D Rank",
"model.profile": "Model Profile",
"model.listed": "Listed",
"model.noCurrentUsage": "No OpenCode Go usage in the current data window.",
"model.facts": "Model facts",
"model.context": "Context",
"model.output": "Output",
"model.knowledge": "Knowledge",
"model.release": "Release",
"model.inputs": "Inputs",
"model.overviewDescription": "Recent tokens, unique users, and market position.",
"model.noSummaryTitle": "No usage summary",
"model.noSummaryDescription": "This model has no OpenCode Go usage rows yet.",
"model.tokens": "Tokens",
"model.uniqueUsers": "Unique Users",
"model.lastTwoMonths": "last two months",
"model.sessions": "Sessions",
"model.completedSessions": "completed sessions",
"model.tokenShare": "Token Share",
"model.totalModels": "{{count}} models",
"model.momentum": "Momentum",
"model.vsPreviousWindow": "vs previous window",
"model.usageDescription": "Daily token volume.",
"model.noUsageTitle": "No usage",
"model.noUsageDescription": "No usage landed in the current window.",
"model.dailyTokenChart": "Daily token usage chart",
"model.usersDescription": "Daily unique users.",
"model.noUsersTitle": "No user data",
"model.noUsersDescription": "No user-bearing rows landed in the current window.",
"model.dailyUserChart": "Daily unique user chart",
"model.efficiencyDescription": "Cost, cache behavior, and average session shape.",
"model.noEfficiencyTitle": "No efficiency data",
"model.noEfficiencyDescription": "Efficiency data appears after usage lands.",
"model.totalSpendLabel": "Total spend",
"model.cost": "Cost",
"model.totalSpend": "total spend",
"model.costPerMillion": "Cost / 1M",
"model.costInput": "Cost input",
"model.costOutput": "Cost output",
"model.inputOutput": "input / output",
"model.observedTokens": "observed all tokens",
"model.costSession": "Cost / Session",
"model.averageCostSession": "Average cost / Session",
"model.average": "average",
"model.tokensSession": "Tokens / Session",
"model.averageTokensSession": "Average tokens / session",
"model.cacheRatio": "Cache Ratio",
"model.inputTokens": "input tokens",
"model.geoDescription": "OpenCode Go model tokens used by country.",
"model.noGeoTitle": "No geo data",
"model.noGeoDescription": "No OpenCode Go geo rows matched this model.",
"model.worldMap": "World map of model token usage by country",
"model.peersDescription": "Nearby models by recent OpenCode Go token volume.",
"model.noPeersTitle": "No peers",
"model.noPeersDescription": "Peer rankings appear after usage lands.",
"model.noUsageLastWeek": "No usage last week",
"model.newThisWeek": "New this week",
"model.sameAsPreviousWeek": "Same as previous week",
"model.vsPreviousWeek": "{{change}} vs previous week",
"model.pdf": "PDF",
"format.users": "users",
"format.tokens": "tokens",
} as const
export type Key = keyof typeof en
export type Dict = Record<Key, string>
const dictionaries = {
ar,
br,
da,
de,
en,
es,
fr,
it,
ja,
ko,
no,
pl,
ru,
th,
tr,
uk,
zh,
zht,
} satisfies Record<Locale, Dict>
export function dict(locale: Locale) {
return dictionaries[locale]
}