chore: generate

This commit is contained in:
opencode-agent[bot] 2026-06-25 14:56:25 +00:00
parent 4f88cab20d
commit ddbc8d3b75
20 changed files with 169 additions and 97 deletions

View file

@ -182,7 +182,8 @@ const en = {
"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.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.",

View file

@ -163,7 +163,8 @@ export const dict = {
"model.noDataDescription": "جرّب فتح نموذج من لوحة الترتيب.",
"model.noMatched": "لم تطابق أي حقائق نموذج أو صفوف استخدام {{id}}.",
"model.fallback": "نموذج",
"model.catalogFallback": "حقائق النموذج من فهرس النماذج المشترك. يظهر استخدام OpenCode Go عندما يصبح لهذا النموذج نشاط.",
"model.catalogFallback":
"حقائق النموذج من فهرس النماذج المشترك. يظهر استخدام OpenCode Go عندما يصبح لهذا النموذج نشاط.",
"model.unranked": "غير مصنف ضمن استخدام OpenCode Go للأسبوع الماضي",
"model.ranked": "مصنف رقم {{rank}} ضمن استخدام OpenCode Go للأسبوع الماضي",
"model.observedVolume": "مع {{share}} من حجم 2M المرصود.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Atualizado",
"home.noRows": "Ainda não há linhas",
"home.justNow": "agora mesmo",
"home.heroCopy": "Veja quais modelos estão vencendo em uso real, como a combinação está mudando e o que isso significa para o custo.",
"home.heroCopy":
"Veja quais modelos estão vencendo em uso real, como a combinação está mudando e o que isso significa para o custo.",
"home.loadingTitle": "Carregando dados",
"home.loadingDescription": "Lendo agregados de modelos.",
"home.usageTitle": "Uso",
@ -135,7 +136,8 @@ export const dict = {
"lab.notFound": "Nenhum modelo correspondeu a este laboratório.",
"lab.heroPrefix": "Explore {{count}} modelos da {{lab}} usados no OpenCode",
"lab.heroIncluding": "incluindo {{models}}",
"lab.heroSuffix": "Compare uso recente de tokens, janelas de contexto, datas de lançamento e dados específicos de cada modelo.",
"lab.heroSuffix":
"Compare uso recente de tokens, janelas de contexto, datas de lançamento e dados específicos de cada modelo.",
"lab.tokensProcessed": "Tokens processados",
"lab.pending": "Pendente",
"lab.usageAfterActivity": "O uso aparece depois que a atividade do modelo chega",
@ -163,7 +165,8 @@ export const dict = {
"model.noDataDescription": "Tente abrir um modelo pela classificação.",
"model.noMatched": "Nenhum fato do modelo ou linha de uso correspondeu a {{id}}.",
"model.fallback": "Modelo",
"model.catalogFallback": "Fatos do modelo do índice compartilhado de modelos. O uso no OpenCode Go aparece quando este modelo tiver atividade.",
"model.catalogFallback":
"Fatos do modelo do índice compartilhado de modelos. O uso no OpenCode Go aparece quando este modelo tiver atividade.",
"model.unranked": "Sem classificação no uso do OpenCode Go da última semana",
"model.ranked": "Classificado em #{{rank}} no uso do OpenCode Go da última semana",
"model.observedVolume": "com {{share}} do volume observado de 2M.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Opdateret",
"home.noRows": "Ingen rækker endnu",
"home.justNow": "lige nu",
"home.heroCopy": "Se hvilke modeller der vinder reel brug, hvordan mixet skifter, og hvad det betyder for omkostningerne.",
"home.heroCopy":
"Se hvilke modeller der vinder reel brug, hvordan mixet skifter, og hvad det betyder for omkostningerne.",
"home.loadingTitle": "Indlæser data",
"home.loadingDescription": "Læser modelaggregater.",
"home.usageTitle": "Brug",
@ -163,7 +164,8 @@ export const dict = {
"model.noDataDescription": "Prøv at åbne en model fra ranglisten.",
"model.noMatched": "Ingen modelfakta eller brugsrækker matchede {{id}}.",
"model.fallback": "Model",
"model.catalogFallback": "Modelfakta fra det fælles modelindeks. OpenCode Go-brug vises, når denne model har aktivitet.",
"model.catalogFallback":
"Modelfakta fra det fælles modelindeks. OpenCode Go-brug vises, når denne model har aktivitet.",
"model.unranked": "Ikke rangeret i sidste uges OpenCode Go-brug",
"model.ranked": "Rangeret #{{rank}} i sidste uges OpenCode Go-brug",
"model.observedVolume": "med {{share}} af observeret 2M-volumen.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Aktualisiert",
"home.noRows": "Noch keine Zeilen",
"home.justNow": "gerade eben",
"home.heroCopy": "Sieh, welche Modelle echte Nutzung gewinnen, wie sich der Mix verschiebt und was das für die Kosten bedeutet.",
"home.heroCopy":
"Sieh, welche Modelle echte Nutzung gewinnen, wie sich der Mix verschiebt und was das für die Kosten bedeutet.",
"home.loadingTitle": "Daten werden geladen",
"home.loadingDescription": "Modellaggregate werden gelesen.",
"home.usageTitle": "Nutzung",
@ -135,7 +136,8 @@ export const dict = {
"lab.notFound": "Keine Modelle passten zu diesem Lab.",
"lab.heroPrefix": "Erkunde {{count}} {{lab}}-Modelle, die in OpenCode verwendet werden",
"lab.heroIncluding": "einschließlich {{models}}",
"lab.heroSuffix": "Vergleiche aktuelle Tokennutzung, Kontextfenster, Veröffentlichungsdaten und modellspezifische Daten.",
"lab.heroSuffix":
"Vergleiche aktuelle Tokennutzung, Kontextfenster, Veröffentlichungsdaten und modellspezifische Daten.",
"lab.tokensProcessed": "Verarbeitete Tokens",
"lab.pending": "Ausstehend",
"lab.usageAfterActivity": "Nutzung erscheint, sobald Modellaktivität vorliegt",
@ -163,7 +165,8 @@ export const dict = {
"model.noDataDescription": "Öffne ein Modell aus der Bestenliste.",
"model.noMatched": "Keine Modellfakten oder Nutzungszeilen passten zu {{id}}.",
"model.fallback": "Modell",
"model.catalogFallback": "Modellfakten aus dem gemeinsamen Modellindex. OpenCode Go-Nutzung erscheint, sobald dieses Modell Aktivität hat.",
"model.catalogFallback":
"Modellfakten aus dem gemeinsamen Modellindex. OpenCode Go-Nutzung erscheint, sobald dieses Modell Aktivität hat.",
"model.unranked": "In der OpenCode Go-Nutzung der letzten Woche nicht platziert",
"model.ranked": "Rang #{{rank}} in der OpenCode Go-Nutzung der letzten Woche",
"model.observedVolume": "mit {{share}} des beobachteten 2M-Volumens.",

View file

@ -135,7 +135,8 @@ export const dict = {
"lab.notFound": "Ningún modelo coincidió con este laboratorio.",
"lab.heroPrefix": "Explora {{count}} modelos de {{lab}} usados en OpenCode",
"lab.heroIncluding": "incluidos {{models}}",
"lab.heroSuffix": "Compara uso reciente de tokens, ventanas de contexto, fechas de lanzamiento y datos específicos del modelo.",
"lab.heroSuffix":
"Compara uso reciente de tokens, ventanas de contexto, fechas de lanzamiento y datos específicos del modelo.",
"lab.tokensProcessed": "Tokens procesados",
"lab.pending": "Pendiente",
"lab.usageAfterActivity": "El uso aparece después de que llegue actividad del modelo",
@ -163,7 +164,8 @@ export const dict = {
"model.noDataDescription": "Prueba a abrir un modelo desde la clasificación.",
"model.noMatched": "Ningún dato del modelo ni fila de uso coincidió con {{id}}.",
"model.fallback": "Modelo",
"model.catalogFallback": "Datos del modelo desde el índice compartido de modelos. El uso de OpenCode Go aparecerá cuando este modelo tenga actividad.",
"model.catalogFallback":
"Datos del modelo desde el índice compartido de modelos. El uso de OpenCode Go aparecerá cuando este modelo tenga actividad.",
"model.unranked": "Sin clasificación en el uso de OpenCode Go de la semana pasada",
"model.ranked": "Clasificado #{{rank}} en el uso de OpenCode Go de la semana pasada",
"model.observedVolume": "con {{share}} del volumen 2M observado.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Mis à jour",
"home.noRows": "Aucune ligne pour l'instant",
"home.justNow": "à l'instant",
"home.heroCopy": "Voyez quels modèles gagnent en usage réel, comment la répartition évolue et ce que cela signifie pour les coûts.",
"home.heroCopy":
"Voyez quels modèles gagnent en usage réel, comment la répartition évolue et ce que cela signifie pour les coûts.",
"home.loadingTitle": "Chargement des données",
"home.loadingDescription": "Lecture des agrégats de modèles.",
"home.usageTitle": "Utilisation",
@ -135,7 +136,8 @@ export const dict = {
"lab.notFound": "Aucun modèle ne correspondait à ce laboratoire.",
"lab.heroPrefix": "Explorez {{count}} modèles {{lab}} utilisés dans OpenCode",
"lab.heroIncluding": "dont {{models}}",
"lab.heroSuffix": "Comparez l'utilisation récente des tokens, les fenêtres de contexte, les dates de sortie et les données propres aux modèles.",
"lab.heroSuffix":
"Comparez l'utilisation récente des tokens, les fenêtres de contexte, les dates de sortie et les données propres aux modèles.",
"lab.tokensProcessed": "Tokens traités",
"lab.pending": "En attente",
"lab.usageAfterActivity": "L'utilisation apparaît après l'arrivée de l'activité du modèle",
@ -144,7 +146,8 @@ export const dict = {
"lab.usageTitle": "Utilisation des tokens {{lab}}",
"lab.usageDescription": "Volume quotidien de tokens OpenCode sur les deux derniers mois.",
"lab.noUsageTitle": "Aucune utilisation pour l'instant",
"lab.noUsageDescription": "L'utilisation récente des tokens apparaîtra ici dès que ce laboratoire aura de l'activité.",
"lab.noUsageDescription":
"L'utilisation récente des tokens apparaîtra ici dès que ce laboratoire aura de l'activité.",
"lab.dailyTokenChart": "Graphique quotidien d'utilisation des tokens {{lab}}",
"lab.dailyTokens": "Tokens quotidiens",
"lab.tokens": "tokens",
@ -163,7 +166,8 @@ export const dict = {
"model.noDataDescription": "Essayez d'ouvrir un modèle depuis le classement.",
"model.noMatched": "Aucun fait de modèle ni aucune ligne d'utilisation ne correspondait à {{id}}.",
"model.fallback": "Modèle",
"model.catalogFallback": "Faits du modèle issus de l'index partagé des modèles. L'utilisation OpenCode Go apparaîtra dès que ce modèle aura de l'activité.",
"model.catalogFallback":
"Faits du modèle issus de l'index partagé des modèles. L'utilisation OpenCode Go apparaîtra dès que ce modèle aura de l'activité.",
"model.unranked": "Non classé dans l'utilisation OpenCode Go de la semaine dernière",
"model.ranked": "Classé #{{rank}} dans l'utilisation OpenCode Go de la semaine dernière",
"model.observedVolume": "avec {{share}} du volume 2M observé.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Aggiornato",
"home.noRows": "Ancora nessuna riga",
"home.justNow": "proprio ora",
"home.heroCopy": "Scopri quali modelli stanno vincendo nell'uso reale, come cambia il mix e cosa significa per i costi.",
"home.heroCopy":
"Scopri quali modelli stanno vincendo nell'uso reale, come cambia il mix e cosa significa per i costi.",
"home.loadingTitle": "Caricamento dati",
"home.loadingDescription": "Lettura degli aggregati dei modelli.",
"home.usageTitle": "Utilizzo",
@ -135,7 +136,8 @@ export const dict = {
"lab.notFound": "Nessun modello corrispondeva a questo laboratorio.",
"lab.heroPrefix": "Esplora {{count}} modelli {{lab}} usati in OpenCode",
"lab.heroIncluding": "inclusi {{models}}",
"lab.heroSuffix": "Confronta l'utilizzo recente dei token, le finestre di contesto, le date di rilascio e i dati specifici del modello.",
"lab.heroSuffix":
"Confronta l'utilizzo recente dei token, le finestre di contesto, le date di rilascio e i dati specifici del modello.",
"lab.tokensProcessed": "Token elaborati",
"lab.pending": "In sospeso",
"lab.usageAfterActivity": "L'utilizzo appare dopo l'arrivo dell'attività del modello",
@ -163,7 +165,8 @@ export const dict = {
"model.noDataDescription": "Prova ad aprire un modello dalla classifica.",
"model.noMatched": "Nessun fatto modello o riga di utilizzo corrispondeva a {{id}}.",
"model.fallback": "Modello",
"model.catalogFallback": "Fatti del modello dall'indice condiviso dei modelli. L'utilizzo di OpenCode Go appare quando questo modello ha attività.",
"model.catalogFallback":
"Fatti del modello dall'indice condiviso dei modelli. L'utilizzo di OpenCode Go appare quando questo modello ha attività.",
"model.unranked": "Non classificato nell'utilizzo OpenCode Go della scorsa settimana",
"model.ranked": "Posizione #{{rank}} nell'utilizzo OpenCode Go della scorsa settimana",
"model.observedVolume": "con {{share}} del volume 2M osservato.",

View file

@ -83,7 +83,8 @@ export const dict = {
"home.updated": "更新済み",
"home.noRows": "まだ行がありません",
"home.justNow": "たった今",
"home.heroCopy": "実際の利用でどのモデルが伸びているか、利用構成がどう変化しているか、それがコストに何を意味するかを確認できます。",
"home.heroCopy":
"実際の利用でどのモデルが伸びているか、利用構成がどう変化しているか、それがコストに何を意味するかを確認できます。",
"home.loadingTitle": "データを読み込み中",
"home.loadingDescription": "モデル集計を読み込んでいます。",
"home.usageTitle": "使用量",
@ -165,7 +166,8 @@ export const dict = {
"model.noDataDescription": "ランキングからモデルを開いてみてください。",
"model.noMatched": "{{id}}に一致するモデル情報または使用行はありません。",
"model.fallback": "モデル",
"model.catalogFallback": "共有モデルインデックスのモデル情報です。このモデルにアクティビティが発生するとOpenCode Go使用量が表示されます。",
"model.catalogFallback":
"共有モデルインデックスのモデル情報です。このモデルにアクティビティが発生するとOpenCode Go使用量が表示されます。",
"model.unranked": "先週のOpenCode Go使用量では未ランク",
"model.ranked": "先週のOpenCode Go使用量で#{{rank}}位",
"model.observedVolume": "観測された2M量の{{share}}。",

View file

@ -83,7 +83,8 @@ export const dict = {
"home.updated": "업데이트됨",
"home.noRows": "아직 행이 없습니다",
"home.justNow": "방금 전",
"home.heroCopy": "실제 사용량에서 어떤 모델이 앞서고 있는지, 사용 구성이 어떻게 바뀌는지, 그것이 비용에 어떤 의미인지 확인하세요.",
"home.heroCopy":
"실제 사용량에서 어떤 모델이 앞서고 있는지, 사용 구성이 어떻게 바뀌는지, 그것이 비용에 어떤 의미인지 확인하세요.",
"home.loadingTitle": "데이터 로딩 중",
"home.loadingDescription": "모델 집계를 읽는 중입니다.",
"home.usageTitle": "사용량",
@ -165,7 +166,8 @@ export const dict = {
"model.noDataDescription": "리더보드에서 모델을 열어보세요.",
"model.noMatched": "{{id}}와 일치하는 모델 정보나 사용 행이 없습니다.",
"model.fallback": "모델",
"model.catalogFallback": "공유 모델 인덱스의 모델 정보입니다. 이 모델에 활동이 생기면 OpenCode Go 사용량이 표시됩니다.",
"model.catalogFallback":
"공유 모델 인덱스의 모델 정보입니다. 이 모델에 활동이 생기면 OpenCode Go 사용량이 표시됩니다.",
"model.unranked": "지난주 OpenCode Go 사용량에서 순위 없음",
"model.ranked": "지난주 OpenCode Go 사용량에서 #{{rank}}위",
"model.observedVolume": "관측된 2M 볼륨의 {{share}}.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Oppdatert",
"home.noRows": "Ingen rader ennå",
"home.justNow": "akkurat nå",
"home.heroCopy": "Se hvilke modeller som vinner reell bruk, hvordan miksen endrer seg, og hva det betyr for kostnadene.",
"home.heroCopy":
"Se hvilke modeller som vinner reell bruk, hvordan miksen endrer seg, og hva det betyr for kostnadene.",
"home.loadingTitle": "Laster data",
"home.loadingDescription": "Leser modellaggregater.",
"home.usageTitle": "Bruk",
@ -163,7 +164,8 @@ export const dict = {
"model.noDataDescription": "Prøv å åpne en modell fra rangeringen.",
"model.noMatched": "Ingen modellfakta eller bruksrader matchet {{id}}.",
"model.fallback": "Modell",
"model.catalogFallback": "Modellfakta fra den delte modellindeksen. OpenCode Go-bruk vises når denne modellen har aktivitet.",
"model.catalogFallback":
"Modellfakta fra den delte modellindeksen. OpenCode Go-bruk vises når denne modellen har aktivitet.",
"model.unranked": "Ikke rangert i forrige ukes OpenCode Go-bruk",
"model.ranked": "Rangert #{{rank}} i forrige ukes OpenCode Go-bruk",
"model.observedVolume": "med {{share}} av observert 2M-volum.",

View file

@ -163,7 +163,8 @@ export const dict = {
"model.noDataDescription": "Spróbuj otworzyć model z rankingu.",
"model.noMatched": "Żadne fakty modelu ani wiersze użycia nie pasowały do {{id}}.",
"model.fallback": "Model",
"model.catalogFallback": "Fakty modelu ze wspólnego indeksu modeli. Użycie OpenCode Go pojawi się, gdy ten model będzie mieć aktywność.",
"model.catalogFallback":
"Fakty modelu ze wspólnego indeksu modeli. Użycie OpenCode Go pojawi się, gdy ten model będzie mieć aktywność.",
"model.unranked": "Bez pozycji w użyciu OpenCode Go z zeszłego tygodnia",
"model.ranked": "Pozycja #{{rank}} w użyciu OpenCode Go z zeszłego tygodnia",
"model.observedVolume": "z {{share}} obserwowanego wolumenu 2M.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Обновлено",
"home.noRows": "Строк пока нет",
"home.justNow": "только что",
"home.heroCopy": "Посмотрите, какие модели выигрывают в реальном использовании, как меняется состав и что это значит для стоимости.",
"home.heroCopy":
"Посмотрите, какие модели выигрывают в реальном использовании, как меняется состав и что это значит для стоимости.",
"home.loadingTitle": "Загрузка данных",
"home.loadingDescription": "Читаем агрегаты моделей.",
"home.usageTitle": "Использование",
@ -135,7 +136,8 @@ export const dict = {
"lab.notFound": "Нет моделей, соответствующих этой лаборатории.",
"lab.heroPrefix": "Изучайте {{count}} моделей {{lab}}, используемых в OpenCode",
"lab.heroIncluding": "включая {{models}}",
"lab.heroSuffix": "Сравните недавнее использование токенов, контекстные окна, даты релизов и данные конкретных моделей.",
"lab.heroSuffix":
"Сравните недавнее использование токенов, контекстные окна, даты релизов и данные конкретных моделей.",
"lab.tokensProcessed": "Обработанные токены",
"lab.pending": "Ожидает",
"lab.usageAfterActivity": "Использование появится после активности модели",
@ -163,7 +165,8 @@ export const dict = {
"model.noDataDescription": "Попробуйте открыть модель из рейтинга.",
"model.noMatched": "Нет фактов модели или строк использования для {{id}}.",
"model.fallback": "Модель",
"model.catalogFallback": "Факты модели из общего индекса моделей. Использование OpenCode Go появится, когда у этой модели будет активность.",
"model.catalogFallback":
"Факты модели из общего индекса моделей. Использование OpenCode Go появится, когда у этой модели будет активность.",
"model.unranked": "Нет рейтинга по использованию OpenCode Go за прошлую неделю",
"model.ranked": "Ранг #{{rank}} по использованию OpenCode Go за прошлую неделю",
"model.observedVolume": "с {{share}} наблюдаемого объема 2M.",

View file

@ -165,7 +165,8 @@ export const dict = {
"model.noDataDescription": "ลองเปิดโมเดลจากลีดเดอร์บอร์ด",
"model.noMatched": "ไม่มีข้อเท็จจริงของโมเดลหรือแถวการใช้งานที่ตรงกับ {{id}}",
"model.fallback": "โมเดล",
"model.catalogFallback": "ข้อเท็จจริงของโมเดลจากดัชนีโมเดลที่ใช้ร่วมกัน การใช้งาน OpenCode Go จะแสดงเมื่อโมเดลนี้มีกิจกรรม",
"model.catalogFallback":
"ข้อเท็จจริงของโมเดลจากดัชนีโมเดลที่ใช้ร่วมกัน การใช้งาน OpenCode Go จะแสดงเมื่อโมเดลนี้มีกิจกรรม",
"model.unranked": "ไม่มีอันดับในการใช้งาน OpenCode Go ของสัปดาห์ที่แล้ว",
"model.ranked": "อันดับ #{{rank}} ในการใช้งาน OpenCode Go ของสัปดาห์ที่แล้ว",
"model.observedVolume": "พร้อม {{share}} ของปริมาณ 2M ที่สังเกตได้",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Güncellendi",
"home.noRows": "Henüz satır yok",
"home.justNow": "az önce",
"home.heroCopy": "Gerçek kullanımda hangi modellerin öne geçtiğini, karışımın nasıl değiştiğini ve bunun maliyet için ne anlama geldiğini görün.",
"home.heroCopy":
"Gerçek kullanımda hangi modellerin öne geçtiğini, karışımın nasıl değiştiğini ve bunun maliyet için ne anlama geldiğini görün.",
"home.loadingTitle": "Veriler yükleniyor",
"home.loadingDescription": "Model toplamları okunuyor.",
"home.usageTitle": "Kullanım",
@ -135,7 +136,8 @@ export const dict = {
"lab.notFound": "Bu laboratuvarla eşleşen model yok.",
"lab.heroPrefix": "OpenCode'da kullanılan {{count}} {{lab}} modelini keşfedin",
"lab.heroIncluding": "{{models}} dahil",
"lab.heroSuffix": "Son token kullanımını, bağlam pencerelerini, yayın tarihlerini ve modele özel verileri karşılaştırın.",
"lab.heroSuffix":
"Son token kullanımını, bağlam pencerelerini, yayın tarihlerini ve modele özel verileri karşılaştırın.",
"lab.tokensProcessed": "İşlenen Tokenlar",
"lab.pending": "Beklemede",
"lab.usageAfterActivity": "Kullanım, model etkinliği ulaştıktan sonra görünür",
@ -163,7 +165,8 @@ export const dict = {
"model.noDataDescription": "Sıralamadan bir model açmayı deneyin.",
"model.noMatched": "{{id}} ile eşleşen model bilgisi veya kullanım satırı yok.",
"model.fallback": "Model",
"model.catalogFallback": "Paylaşılan model dizininden model bilgileri. Bu modelde etkinlik olduğunda OpenCode Go kullanımı görünür.",
"model.catalogFallback":
"Paylaşılan model dizininden model bilgileri. Bu modelde etkinlik olduğunda OpenCode Go kullanımı görünür.",
"model.unranked": "Geçen haftaki OpenCode Go kullanımında sıralanmamış",
"model.ranked": "Geçen haftaki OpenCode Go kullanımında #{{rank}} sırada",
"model.observedVolume": "gözlemlenen 2M hacmin {{share}} payıyla.",

View file

@ -81,7 +81,8 @@ export const dict = {
"home.updated": "Оновлено",
"home.noRows": "Рядків поки немає",
"home.justNow": "щойно",
"home.heroCopy": "Подивіться, які моделі перемагають у реальному використанні, як змінюється мікс і що це означає для вартості.",
"home.heroCopy":
"Подивіться, які моделі перемагають у реальному використанні, як змінюється мікс і що це означає для вартості.",
"home.loadingTitle": "Завантаження даних",
"home.loadingDescription": "Читаємо агрегати моделей.",
"home.usageTitle": "Використання",
@ -135,7 +136,8 @@ export const dict = {
"lab.notFound": "Жодна модель не відповідала цій лабораторії.",
"lab.heroPrefix": "Досліджуйте {{count}} моделей {{lab}}, що використовуються в OpenCode",
"lab.heroIncluding": "зокрема {{models}}",
"lab.heroSuffix": "Порівняйте нещодавнє використання токенів, контекстні вікна, дати релізів і дані конкретних моделей.",
"lab.heroSuffix":
"Порівняйте нещодавнє використання токенів, контекстні вікна, дати релізів і дані конкретних моделей.",
"lab.tokensProcessed": "Оброблені токени",
"lab.pending": "Очікується",
"lab.usageAfterActivity": "Використання з'явиться після активності моделі",
@ -163,7 +165,8 @@ export const dict = {
"model.noDataDescription": "Спробуйте відкрити модель із рейтингу.",
"model.noMatched": "Жодні факти моделі або рядки використання не відповідали {{id}}.",
"model.fallback": "Модель",
"model.catalogFallback": "Факти моделі зі спільного індексу моделей. Використання OpenCode Go з'явиться, коли ця модель матиме активність.",
"model.catalogFallback":
"Факти моделі зі спільного індексу моделей. Використання OpenCode Go з'явиться, коли ця модель матиме активність.",
"model.unranked": "Без рейтингу у використанні OpenCode Go за минулий тиждень",
"model.ranked": "Ранг #{{rank}} у використанні OpenCode Go за минулий тиждень",
"model.observedVolume": "з {{share}} спостережуваного обсягу 2M.",

View file

@ -107,11 +107,10 @@ export default function StatsModel() {
const modelName = createMemo(() => catalogEntry()?.name ?? stats()?.model ?? modelParam() ?? i18n.t("model.fallback"))
const labName = createMemo(() => formatCatalogLabName(catalogEntry()?.lab ?? stats()?.provider ?? labParam()))
const modelTitle = createMemo(() => i18n.t("model.title", { model: modelName() }))
const modelDescription = createMemo(
() => i18n.t("model.description", { model: modelName() }),
)
const modelDescription = createMemo(() => i18n.t("model.description", { model: modelName() }))
const modelPath = createMemo(
() => `/data/${catalogEntry()?.id ?? [labParam(), stats()?.slug ?? modelParam()].filter((part) => part.length > 0).join("/")}`,
() =>
`/data/${catalogEntry()?.id ?? [labParam(), stats()?.slug ?? modelParam()].filter((part) => part.length > 0).join("/")}`,
)
const modelUrl = createMemo(() => localizedUrl(language.locale(), modelPath()))
const statsUnfurlUrl = new URL(statsUnfurlPath, localizedUrl("en", "/data/")).toString()
@ -261,17 +260,10 @@ function ModelHero(props: { data: StatsModelData | null; catalog: ModelCatalogEn
<span data-slot="model-id-tag">{modelId()}</span>
</div>
<h1>{props.catalog?.name ?? props.data?.model ?? i18n.t("model.fallback")}</h1>
<Show
when={props.data}
fallback={
<p>{i18n.t("model.catalogFallback")}</p>
}
>
<Show when={props.data} fallback={<p>{i18n.t("model.catalogFallback")}</p>}>
{(data) => (
<p>
{data().rank === null
? i18n.t("model.unranked")
: i18n.t("model.ranked", { rank: data().rank ?? "" })}{" "}
{data().rank === null ? i18n.t("model.unranked") : i18n.t("model.ranked", { rank: data().rank ?? "" })}{" "}
{i18n.t("model.observedVolume", { share: formatPercent(data().tokenShare) })}
</p>
)}
@ -322,8 +314,14 @@ function ModelCatalogPanel(props: { data: ModelCatalogEntry }) {
return (
<aside data-component="model-catalog" aria-label={i18n.t("model.facts")}>
<div data-slot="model-catalog-grid">
<CatalogDatum label={i18n.t("model.context")} value={formatCatalogLimit(props.data.limit?.context, i18n.t("home.unknown"))} />
<CatalogDatum label={i18n.t("model.output")} value={formatCatalogLimit(props.data.limit?.output, i18n.t("home.unknown"))} />
<CatalogDatum
label={i18n.t("model.context")}
value={formatCatalogLimit(props.data.limit?.context, i18n.t("home.unknown"))}
/>
<CatalogDatum
label={i18n.t("model.output")}
value={formatCatalogLimit(props.data.limit?.output, i18n.t("home.unknown"))}
/>
<CatalogDatum
label={i18n.t("model.knowledge")}
value={formatCatalogDate(props.data.knowledge, language.tag(language.locale()), i18n.t("home.unknown"))}
@ -332,7 +330,10 @@ function ModelCatalogPanel(props: { data: ModelCatalogEntry }) {
label={i18n.t("model.release")}
value={formatCatalogDate(props.data.releaseDate, language.tag(language.locale()), i18n.t("home.unknown"))}
/>
<CatalogDatum label={i18n.t("model.inputs")} value={formatCatalogModalities(props.data.modalities.input, i18n)} />
<CatalogDatum
label={i18n.t("model.inputs")}
value={formatCatalogModalities(props.data.modalities.input, i18n)}
/>
</div>
</aside>
)
@ -360,9 +361,21 @@ function ModelOverview(props: { data: StatsModelData | null }) {
>
{(data) => (
<div data-component="model-metric-grid">
<MetricCard label={i18n.t("model.tokens")} value={formatTokens(data().totals.tokens)} detail={i18n.t("model.lastTwoMonths")} />
<MetricCard label={i18n.t("model.uniqueUsers")} value={formatUsers(data().totals.uniqueUsers)} detail={i18n.t("model.lastTwoMonths")} />
<MetricCard label={i18n.t("model.sessions")} value={formatInteger(data().totals.sessions)} detail={i18n.t("model.completedSessions")} />
<MetricCard
label={i18n.t("model.tokens")}
value={formatTokens(data().totals.tokens)}
detail={i18n.t("model.lastTwoMonths")}
/>
<MetricCard
label={i18n.t("model.uniqueUsers")}
value={formatUsers(data().totals.uniqueUsers)}
detail={i18n.t("model.lastTwoMonths")}
/>
<MetricCard
label={i18n.t("model.sessions")}
value={formatInteger(data().totals.sessions)}
detail={i18n.t("model.completedSessions")}
/>
<MetricCard
label={i18n.t("model.tokenShare")}
value={formatPercent(data().tokenShare)}
@ -388,7 +401,9 @@ function ModelUsageSection(props: { data: ModelUsagePoint[] }) {
<SectionTitle title={i18n.t("nav.usage")} description={i18n.t("model.usageDescription")} />
<Show
when={props.data.some((item) => item.tokens > 0)}
fallback={<ModelEmptyState title={i18n.t("model.noUsageTitle")} description={i18n.t("model.noUsageDescription")} />}
fallback={
<ModelEmptyState title={i18n.t("model.noUsageTitle")} description={i18n.t("model.noUsageDescription")} />
}
>
<ModelColumnChart data={props.data} metric="tokens" ariaLabel={i18n.t("model.dailyTokenChart")} />
</Show>
@ -400,10 +415,7 @@ function ModelUsersSection(props: { data: ModelUsagePoint[] }) {
const i18n = useI18n()
return (
<section id="users" data-section="model-panel">
<SectionTitle
title={i18n.t("model.uniqueUsers")}
description={i18n.t("model.usersDescription")}
/>
<SectionTitle title={i18n.t("model.uniqueUsers")} description={i18n.t("model.usersDescription")} />
<Show
when={props.data.some((item) => item.users > 0)}
fallback={
@ -541,12 +553,19 @@ function ModelEfficiencySection(props: { data: StatsModelData | null; catalog: M
<Show
when={props.data}
fallback={
<ModelEmptyState title={i18n.t("model.noEfficiencyTitle")} description={i18n.t("model.noEfficiencyDescription")} />
<ModelEmptyState
title={i18n.t("model.noEfficiencyTitle")}
description={i18n.t("model.noEfficiencyDescription")}
/>
}
>
{(data) => (
<div data-component="model-metric-grid" data-variant="dense">
<MetricCard label={i18n.t("model.cost")} value={formatMoney(data().totals.cost)} detail={i18n.t("model.totalSpend")} />
<MetricCard
label={i18n.t("model.cost")}
value={formatMoney(data().totals.cost)}
detail={i18n.t("model.totalSpend")}
/>
<MetricCard
label={i18n.t("model.costPerMillion")}
value={
@ -564,7 +583,11 @@ function ModelEfficiencySection(props: { data: StatsModelData | null; catalog: M
value={formatTokens(data().totals.tokensPerSession)}
detail={i18n.t("model.average")}
/>
<MetricCard label={i18n.t("model.cacheRatio")} value={formatPercent(data().totals.cacheRatio)} detail={i18n.t("model.inputTokens")} />
<MetricCard
label={i18n.t("model.cacheRatio")}
value={formatPercent(data().totals.cacheRatio)}
detail={i18n.t("model.inputTokens")}
/>
</div>
)}
</Show>
@ -602,9 +625,7 @@ function ModelGeoBreakdownSection(props: { data: Record<UsageRange, CountryEntry
<SectionTitle title={i18n.t("nav.geoBreakdown")} description={i18n.t("model.geoDescription")} />
<Show
when={data().length > 0}
fallback={
<ModelEmptyState title={i18n.t("model.noGeoTitle")} description={i18n.t("model.noGeoDescription")} />
}
fallback={<ModelEmptyState title={i18n.t("model.noGeoTitle")} description={i18n.t("model.noGeoDescription")} />}
>
<div data-component="geo-breakdown">
<div data-slot="geo-map-panel">
@ -769,7 +790,9 @@ function ModelPeersSection(props: { data: StatsModelData | null }) {
<SectionTitle title={i18n.t("nav.peers")} description={i18n.t("model.peersDescription")} />
<Show
when={props.data?.peers.length}
fallback={<ModelEmptyState title={i18n.t("model.noPeersTitle")} description={i18n.t("model.noPeersDescription")} />}
fallback={
<ModelEmptyState title={i18n.t("model.noPeersTitle")} description={i18n.t("model.noPeersDescription")} />
}
>
<ol data-component="model-peer-list">
<For each={props.data?.peers ?? []}>

View file

@ -62,9 +62,7 @@ export default function StatsLab() {
const [themePreference, setThemePreference] = createSignal<ThemePreference>("system")
const labName = createMemo(() => lab()?.name ?? formatCatalogLabName(labParam()))
const labTitle = createMemo(() => i18n.t("lab.title", { lab: labName() }))
const labDescription = createMemo(
() => i18n.t("lab.description", { lab: labName() }),
)
const labDescription = createMemo(() => i18n.t("lab.description", { lab: labName() }))
const labPath = createMemo(() => `/data/${lab()?.id ?? labParam()}`)
const labUrl = createMemo(() => localizedUrl(language.locale(), labPath()))
const statsUnfurlUrl = new URL(statsUnfurlPath, localizedUrl("en", "/data/")).toString()
@ -212,7 +210,9 @@ function LabHero(props: { lab: ModelCatalogLab; stats: StatsLabData | null }) {
{props.stats
? i18n.t("lab.shareOfUsage", { share: formatPercent(props.stats.tokenShare) })
: latest()
? i18n.t("lab.latestRelease", { date: formatCatalogDate(latest(), language.tag(language.locale()), i18n.t("home.unknown")) })
? i18n.t("lab.latestRelease", {
date: formatCatalogDate(latest(), language.tag(language.locale()), i18n.t("home.unknown")),
})
: i18n.t("lab.usageAfterActivity")}
</p>
</div>
@ -240,12 +240,7 @@ function LabUsageSection(props: { lab: ModelCatalogLab; data: StatsLabData | nul
</p>
<Show
when={usage().some((item) => item.tokens > 0)}
fallback={
<LabEmptyState
title={i18n.t("lab.noUsageTitle")}
description={i18n.t("lab.noUsageDescription")}
/>
}
fallback={<LabEmptyState title={i18n.t("lab.noUsageTitle")} description={i18n.t("lab.noUsageDescription")} />}
>
<div
data-component="model-usage-chart"

View file

@ -216,8 +216,7 @@ function Hero(props: { updatedAt: string | null }) {
if (
formatUpdatedAtLabel(
formatUpdatedAtParts(props.updatedAt, nextTimeZone, language.tag(language.locale()), i18n.t("home.justNow")),
) ===
formatUpdatedAtLabel(updatedAtParts("UTC"))
) === formatUpdatedAtLabel(updatedAtParts("UTC"))
)
return
const timeouts: number[] = []
@ -993,7 +992,9 @@ function LeaderboardCard(props: {
data-component="leader-card"
data-size={props.size}
data-active={props.active ? "true" : undefined}
href={language.route(`${import.meta.env.BASE_URL}${modelSlug(props.entry.provider)}/${modelSlug(props.entry.model)}`)}
href={language.route(
`${import.meta.env.BASE_URL}${modelSlug(props.entry.provider)}/${modelSlug(props.entry.model)}`,
)}
role="listitem"
tabIndex={0}
aria-label={`${String(props.entry.rank).padStart(2, "0")} ${props.entry.model} ${i18n.t("chart.byAuthor", { author: props.entry.author })}`}
@ -1110,7 +1111,9 @@ function MarketShareSection(props: { data: StatsHomeData["market"] }) {
<p>
<span>[*]</span>
<strong>
{inspecting() ? formatMarketDate(activeDay(), i18n.t("home.noData")) : formatMarketRange(data(), i18n.t("home.noData"))}
{inspecting()
? formatMarketDate(activeDay(), i18n.t("home.noData"))
: formatMarketRange(data(), i18n.t("home.noData"))}
</strong>
</p>
<div hidden>
@ -1311,7 +1314,9 @@ function GeoBreakdownSection(props: { data: StatsHomeData["country"] }) {
{(country) => (
<div data-slot="geo-active-country">
<span>#{String(country().rank).padStart(2, "0")}</span>
<strong>{formatCountryName(country().country, language.tag(language.locale()), i18n.t("home.unknown"))}</strong>
<strong>
{formatCountryName(country().country, language.tag(language.locale()), i18n.t("home.unknown"))}
</strong>
<p>
<b>{formatGeoTokens(country().tokens)}</b>
<em>{formatGeoShare(country().share)}</em>
@ -1444,7 +1449,9 @@ function GeoCountryList(props: {
>
<span>{String(country.rank).padStart(2, "0")}</span>
<i />
<strong>{formatCountryName(country.country, language.tag(language.locale()), i18n.t("home.unknown"))}</strong>
<strong>
{formatCountryName(country.country, language.tag(language.locale()), i18n.t("home.unknown"))}
</strong>
<em>{formatGeoTokens(country.tokens)}</em>
<b>{formatGeoShare(country.share)}</b>
</button>
@ -1661,9 +1668,7 @@ function CacheRatioSection(props: { data: StatsHomeData["cacheRatio"] }) {
<SectionTitle title={i18n.t("home.cacheRatioTitle")} description={i18n.t("home.cacheRatioDescription")} />
<Show
when={visible().length > 0}
fallback={
<EmptyState title={i18n.t("home.noCacheTitle")} description={i18n.t("home.noCacheDescription")} />
}
fallback={<EmptyState title={i18n.t("home.noCacheTitle")} description={i18n.t("home.noCacheDescription")} />}
>
<CacheRatioChart data={visible()} activeIndex={selectedIndex()} onActiveIndexChange={setActiveIndex} />
</Show>
@ -1790,10 +1795,7 @@ function SessionCostSection(props: { data: StatsHomeData["sessionCost"] }) {
<Show
when={visible().length > 0}
fallback={
<EmptyState
title={i18n.t("home.noSessionCostTitle")}
description={i18n.t("home.noSessionCostDescription")}
/>
<EmptyState title={i18n.t("home.noSessionCostTitle")} description={i18n.t("home.noSessionCostDescription")} />
}
>
<SessionCostChart data={visible()} activeIndex={selectedIndex()} onActiveIndexChange={setActiveIndex} />

View file

@ -102,7 +102,11 @@ export function Header(props: { githubStars: string; links?: readonly HeaderLink
return (
<header data-component="top" data-menu-open={menuOpen() ? "true" : undefined}>
<div data-slot="header-bar">
<a data-slot="brand" href={localHref(props.brandHref ?? import.meta.env.BASE_URL)} aria-label={i18n.t("header.brandLabel")}>
<a
data-slot="brand"
href={localHref(props.brandHref ?? import.meta.env.BASE_URL)}
aria-label={i18n.t("header.brandLabel")}
>
<DataWordmark />
</a>
<nav data-component="section-nav" aria-label={i18n.t("header.sectionNavLabel")}>
@ -147,7 +151,12 @@ export function Header(props: { githubStars: string; links?: readonly HeaderLink
</button>
</div>
</div>
<nav id="stats-mobile-nav" data-slot="mobile-menu" aria-label={i18n.t("header.sectionNavLabel")} hidden={!menuOpen()}>
<nav
id="stats-mobile-nav"
data-slot="mobile-menu"
aria-label={i18n.t("header.sectionNavLabel")}
hidden={!menuOpen()}
>
<a
data-slot="mobile-menu-item"
data-variant="github"
@ -303,9 +312,7 @@ function FooterLanguageSwitcher() {
if (href !== current) window.location.assign(href)
}}
>
<For each={language.locales}>
{(locale) => <option value={locale}>{language.label(locale)}</option>}
</For>
<For each={language.locales}>{(locale) => <option value={locale}>{language.label(locale)}</option>}</For>
</select>
</label>
)
@ -422,7 +429,12 @@ function SubscribeModal(props: { onClose: () => void }) {
<div data-slot="modal-panel">
<div data-slot="modal-brand">
<img data-slot="modal-logo" src={opencodeWordmarkDark} alt="OpenCode" />
<button data-slot="modal-close" type="button" aria-label={i18n.t("modal.closeNewsletter")} onClick={props.onClose}>
<button
data-slot="modal-close"
type="button"
aria-label={i18n.t("modal.closeNewsletter")}
onClick={props.onClose}
>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
<path d="M4.44 4.44L11.56 11.56M11.56 4.44L4.44 11.56" stroke="currentColor" />
</svg>
@ -499,7 +511,11 @@ function FooterColumn(props: {
<nav aria-label={props.title}>
<For each={props.links}>
{(link) => (
<a href={props.localHref(link.href)} target={link.href.startsWith("http") ? "_blank" : undefined} rel="noreferrer">
<a
href={props.localHref(link.href)}
target={link.href.startsWith("http") ? "_blank" : undefined}
rel="noreferrer"
>
{link.label}
</a>
)}