File size: 11,623 Bytes
4bbfe8b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
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 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.",
  "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 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": "Geographic Breakdown",
  "home.noGeoTitle": "No geo data",
  "home.noGeoDescription": "No geo rows matched this range.",
  "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, 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 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 usage appears once this model has activity.",
  "model.unranked": "Unranked across last week's OpenCode usage",
  "model.ranked": "Ranked #{{rank}} across last week's OpenCode 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 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 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.noGeoTitle": "No geo data",
  "model.noGeoDescription": "No OpenCode geo rows matched this model.",
  "model.peersDescription": "Nearby models by recent OpenCode 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]
}