Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM --platform=$BUILDPLATFORM node:16 AS builder
FROM node:16 AS builder

WORKDIR /web
COPY ./VERSION .
Expand All @@ -24,7 +24,8 @@ RUN apk add --no-cache \

ENV GO111MODULE=on \
CGO_ENABLED=1 \
GOOS=linux
GOOS=linux \
GOARCH=arm64

WORKDIR /build

Expand All @@ -44,4 +45,4 @@ COPY --from=builder2 /build/one-api /

EXPOSE 3000
WORKDIR /data
ENTRYPOINT ["/one-api"]
ENTRYPOINT ["/one-api"]
19 changes: 19 additions & 0 deletions docs/I18N_AUDIT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# i18n Audit Report

- Languages: zh, en, de, sr
- Base locale: en (581 keys)

## Key Coverage
- zh: keys=581, missing=0, extra=0
- en: keys=581, missing=0, extra=0
- de: keys=581, missing=0, extra=0
- sr: keys=581, missing=0, extra=0

## Placeholder Consistency (vs en)
- zh: mismatches=0
- de: mismatches=0
- sr: mismatches=0

## Translation Progress Heuristic (identical to en)
- de: identical_to_en=449/581 (77.3%)
- sr: identical_to_en=442/581 (76.1%)
46 changes: 46 additions & 0 deletions docs/I18N_STATUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# OneAPI Frontend i18n Status (DereineRing)

## Ist bereits mehrsprachig?

Ja, **teilweise**:

- `web/default` hat i18n mit `react-i18next`
- bereits vorhanden: `zh`, `en`
- jetzt erweitert: `de`, `sr` (initial als EN-basierte Fallback-Strings)

## Aktueller Stand in dieser Branch

Erweiterte Dateien:

- `web/default/src/i18n.js`
- `web/default/src/components/Header.js`
- `web/default/src/locales/de/translation.json`
- `web/default/src/locales/sr/translation.json`
- `web/default/src/locales/zh/translation.json`
- `scripts/i18n_audit.py`
- `docs/I18N_AUDIT.md`

Sprachen im Header-Dropdown:

- 中文 (`zh`)
- English (`en`)
- Deutsch (`de`)
- Srpski (`sr`)

## Was noch offen ist

- vollständige manuelle Übersetzung `de` und `sr` (ein großer Teil ist noch EN-Fallback)
- sprachliche Feinkorrektur der neu übersetzten Info-/Hinweistexte im Review
- optional: `web/berry` und `web/air` ebenfalls auf i18n umstellen

## Qualitätsprüfung

- Ein Audit-Skript prüft:
- Key-Vollständigkeit je Sprache
- Placeholder-Konsistenz (`{{name}}`, etc.)
- Fortschrittsheuristik (`de/sr` identisch zu `en`)
- Aktueller Audit-Report: `docs/I18N_AUDIT.md`

## Warum dieser Ansatz?

So ist die Public-Branch sofort nutzbar und stabil (kein Build-Bruch), ohne private Daten preiszugeben.
28 changes: 28 additions & 0 deletions docs/PUBLIC_WORKSPACE_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Public Workspace Policy (DereineRing)

Dieses Repo ist für späteren Public Upload vorbereitet.

## Erlaubt (public)

- Quellcode für OneAPI i18n
- allgemeine Build- und Deploy-Dokumentation
- Platzhalter-Konfigurationen (`.env.example`, Templates)

## Verboten (nicht public)

- echte API Keys / Tokens
- Matrix Access Tokens
- lokale Benutzer-/Serverdaten
- private Infrastrukturpfade und persönliche Zugangsdaten

## Release-Checkliste vor Push/Fork

1. `git status` prüfen
2. `git diff` auf Secrets prüfen
3. Keine `.env` / `data/` / Logs commiten
4. Nur Template-Dateien veröffentlichen

## Trennung Public vs. Private

- **Public Entwicklung:** `/Volumes/M4Data/Coding/DereineRing/one-api`
- **Private Runtime/Secrets:** `/Volumes/M4Data/Coding/CommandStack-Private`
41 changes: 41 additions & 0 deletions docs/i18n-roadmap.de-sr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# i18n Roadmap (DE/EN/SR/ZH)

## Ist-Stand
- OneAPI Frontend hat in `web/default/src/locales` aktuell nur:
- `en/translation.json`
- `zh/translation.json`
- Sprachumschalter ist in `web/default/src/components/Header.js` auf `zh` und `en` begrenzt.
- Andere Themes (`web/air`, `web/berry`) nutzen derzeit kein vollständiges i18n-Setup.

## Ziel
- Saubere Mehrsprachigkeit für:
- Deutsch (`de`)
- Englisch (`en`)
- Serbisch (`sr`)
- Chinesisch (`zh`)
- Konsistente Schlüsselstruktur, keine gemischten Hardcoded-Texte.

## Umsetzungsschritte
1. [x] Neue Locale-Dateien hinzufügen (`de`, `sr`) auf Basis des finalen Key-Sets.
2. [x] `web/default/src/i18n.js` um `de` und `sr` erweitern, Fallback auf `en` setzen.
3. [x] Sprachauswahl in `Header.js` um `Deutsch` und `Srpski` erweitern.
4. Diff-Check aller Keys zwischen `zh`, `en`, `de`, `sr` automatisieren.
5. UI-Screening pro Hauptseite (Login, Dashboard, Channel, Settings, Token, Logs).
6. Terminologie-Review (Agent, Channel, Token, Fallback, Quota, Billing).

## Status-Update (2026-04-20)
- Technische Mehrsprachigkeit ist aktiviert (ZH/EN/DE/SR auswählbar).
- `de` und `sr` sind aktuell noch auf EN-Basis und müssen fachlich sauber nachgezogen werden.

## Qualitätssicherung
- Key-Completeness-Check pro Sprache (100% Abdeckung).
- Visuelle Checks für lange Texte (DE/SR) auf Mobile/Desktop.
- Einheitliche Terminologie-Liste als Referenz.

## Aufwand (realistisch)
- Technische Integration: ~0.5 Tag
- Vollständige fachlich saubere Übersetzung + QA: ~1.5 bis 3 Tage
- Gesamt: ~2 bis 3.5 Tage für ein releasefähiges Ergebnis.

## Lizenz
- Repository ist MIT-lizenziert (Fork/Branch/public Beitrag ist zulässig).
71 changes: 71 additions & 0 deletions docs/public/README.de.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# DerEineRing (DE)

## Was dieses Projekt ist
DerEineRing ist eine öffentliche OneAPI-Anpassung mit mehrsprachigem, überarbeitetem Frontend.

Der Fokus liegt auf:
- UI-Lokalisierung: Chinesisch, Englisch, Deutsch, Serbisch
- klarer öffentlicher Doku und Übersetzungs-Workflow
- visueller und funktionaler Frontend-Politur

## Für wen es gedacht ist
- Teams, die OneAPI lokal als Gateway betreiben
- Nutzer, die eine mehrsprachige Admin-Oberfläche wollen
- Contributor für i18n- und Frontend-Qualität

## Enthaltene Sprachen
- `zh`
- `en`
- `de`
- `sr`

Locale-Dateien:
- `web/default/src/locales/zh/translation.json`
- `web/default/src/locales/en/translation.json`
- `web/default/src/locales/de/translation.json`
- `web/default/src/locales/sr/translation.json`

## Schnellstart (Docker)
```bash
git clone https://github.com/olivilo/one-api.git
cd one-api
docker compose up -d --build
```

Aufruf:
- `http://localhost:3000`

## Erster Login
Bei einer frischen Datenbank legt OneAPI in der Regel an:
- Benutzername: `root`
- Passwort: `123456`

Passwort direkt nach dem ersten Login ändern.

## Nutzung
1. Im Web-UI anmelden.
2. Provider/Kanäle unter **Channels** anlegen.
3. Zugriffstoken unter **Tokens** erstellen.
4. OneAPI als OpenAI-kompatiblen Endpoint nutzen:
- Base URL: `http://localhost:3000/v1`
- API-Key: dein Token aus dem UI

Beispiel:
```bash
curl http://localhost:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ONEAPI_TOKEN" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role":"user","content":"Hallo von DerEineRing"}]
}'
```

## Sprache und Theme im UI
- Über den Sprachumschalter im Header zwischen `zh/en/de/sr` wechseln.
- Über den Theme-Umschalter im Header zwischen den verfügbaren Designs wechseln.

## Mitwirken
- Textänderungen in den jeweiligen Locale-JSON-Dateien pflegen.
- Terminologie in allen vier Sprachen konsistent halten.
- Übersetzungs- und UX-Änderungen per Pull Request einreichen.
71 changes: 71 additions & 0 deletions docs/public/README.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# DerEineRing (EN)

## What this project is
DerEineRing is a public customization of OneAPI with a polished multilingual frontend.

It focuses on:
- UI localization: Chinese, English, German, Serbian
- cleaner public docs and translation workflow
- theme and UX polish in the web interface

## Who this is for
- teams running OneAPI as a local gateway
- users who want a multilingual admin UI
- contributors working on i18n and frontend quality

## Included languages
- `zh`
- `en`
- `de`
- `sr`

Locale files:
- `web/default/src/locales/zh/translation.json`
- `web/default/src/locales/en/translation.json`
- `web/default/src/locales/de/translation.json`
- `web/default/src/locales/sr/translation.json`

## Quick install (Docker)
```bash
git clone https://github.com/olivilo/one-api.git
cd one-api
docker compose up -d --build
```

Open:
- `http://localhost:3000`

## First login
On a fresh database, OneAPI usually creates:
- username: `root`
- password: `123456`

Change the password immediately after first login.

## How to use
1. Login to the web UI.
2. Add providers/channels in **Channels**.
3. Create an access token in **Tokens**.
4. Use OneAPI as an OpenAI-compatible endpoint:
- Base URL: `http://localhost:3000/v1`
- API key: your token from the UI

Example:
```bash
curl http://localhost:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ONEAPI_TOKEN" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role":"user","content":"Hello from DerEineRing"}]
}'
```

## UI language and theme
- Use the language selector in the header to switch `zh/en/de/sr`.
- Use the theme selector in the header to switch available UI themes.

## Contributing
- Keep text changes in the locale JSON files.
- Keep terminology consistent across all four languages.
- Submit translation and UX changes via pull request.
6 changes: 6 additions & 0 deletions docs/public/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Public Readmes

- English: `docs/public/README.en.md`
- Deutsch: `docs/public/README.de.md`
- Srpski: `docs/public/README.sr.md`
- 中文: `docs/public/README.zh.md`
71 changes: 71 additions & 0 deletions docs/public/README.sr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# DerEineRing (SR)

## Šta je ovaj projekat
DerEineRing je javna prilagođena verzija OneAPI-ja sa doteranim višejezičnim frontendom.

Fokus:
- lokalizovan UI: kineski, engleski, nemački, srpski
- jasna javna dokumentacija i prevodilački workflow
- unapređen izgled i UX interfejsa

## Kome je namenjen
- timovima koji lokalno koriste OneAPI kao gateway
- korisnicima kojima treba višejezični admin UI
- contributorima za i18n i frontend kvalitet

## Podržani jezici
- `zh`
- `en`
- `de`
- `sr`

Locale fajlovi:
- `web/default/src/locales/zh/translation.json`
- `web/default/src/locales/en/translation.json`
- `web/default/src/locales/de/translation.json`
- `web/default/src/locales/sr/translation.json`

## Brza instalacija (Docker)
```bash
git clone https://github.com/olivilo/one-api.git
cd one-api
docker compose up -d --build
```

Otvori:
- `http://localhost:3000`

## Prvo prijavljivanje
Na čistoj bazi OneAPI obično kreira:
- korisnik: `root`
- lozinka: `123456`

Promeni lozinku odmah nakon prvog logovanja.

## Kako se koristi
1. Uloguj se u web UI.
2. Dodaj provajdere/kanale u **Channels**.
3. Kreiraj pristupni token u **Tokens**.
4. Koristi OneAPI kao OpenAI-kompatibilni endpoint:
- Base URL: `http://localhost:3000/v1`
- API ključ: token iz UI-ja

Primer:
```bash
curl http://localhost:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ONEAPI_TOKEN" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role":"user","content":"Pozdrav iz DerEineRing-a"}]
}'
```

## Jezik i tema u UI-ju
- U headeru promeni jezik na `zh/en/de/sr`.
- U headeru promeni temu preko theme selektora.

## Doprinos projektu
- Tekstualne izmene radi kroz locale JSON fajlove.
- Održavaj doslednu terminologiju u sva četiri jezika.
- Šalji prevodilačke i UX izmene kroz pull request.
Loading