281 lines
12 KiB
TypeScript
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]
|
|
}
|